45 lines
1.1 KiB
Nix
45 lines
1.1 KiB
Nix
{
|
|
tools,
|
|
container,
|
|
service,
|
|
additional_stages,
|
|
...
|
|
}:
|
|
let
|
|
hostname = tools.build_hostname container;
|
|
ip = tools.build_ip container;
|
|
prefix = "${container}_${builtins.replaceStrings [ "-" ] [ "_" ] service}";
|
|
in
|
|
{
|
|
out = ''
|
|
loki.relabel "${prefix}_journal" {
|
|
forward_to = []
|
|
rule {
|
|
source_labels = ["__journal__priority_keyword"]
|
|
target_label = "level"
|
|
}
|
|
rule {
|
|
source_labels = ["__journal__SYSLOG_IDENTIFIER"]
|
|
target_label = "app"
|
|
}
|
|
}
|
|
loki.source.journal "${prefix}_journal_scrape" {
|
|
forward_to = [loki.process.${prefix}_router.receiver]
|
|
matches = "_SYSTEMD_UNIT=${service}.service"
|
|
relabel_rules = loki.relabel.${prefix}_journal.rules
|
|
labels = {
|
|
service = "${service}",
|
|
host = "${hostname}",
|
|
host_ip = "${ip}",
|
|
}
|
|
}
|
|
|
|
loki.process "${prefix}_router" {
|
|
|
|
${additional_stages}
|
|
|
|
forward_to = [loki.write.grafana_loki.receiver]
|
|
}
|
|
'';
|
|
}
|