From 1faeda700bdd1871dc1a37a5b5188839f982d9d1 Mon Sep 17 00:00:00 2001 From: Arne Teuke Date: Tue, 11 Mar 2025 13:57:46 +0100 Subject: [PATCH] revert hostname label --- templates/config.alloy.erb | 62 +++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/templates/config.alloy.erb b/templates/config.alloy.erb index 018c136..9132dab 100644 --- a/templates/config.alloy.erb +++ b/templates/config.alloy.erb @@ -10,25 +10,53 @@ local.file_match "system_logs" { sync_period = "5s" } -loki.process "syslog" { - stage.regex { - expression = `(?P[A-Z][a-z]{2}\s{1,2}\d{1,2}\s\d{2}:\d{2}:\d{2})\s(?P[\w\.\@-]+)\s(?P.*)$` - } - stage.labels { - values = { - hostname = "${host}" - } - } - stage.timestamp { - source = "ts" - format = "Jan _2 15:04:05" - } - stage.output { - source = "log" - } - forward_to = [loki.write.loki.receiver] +// Scrape the logs from the matched files +loki.source.file "system_logs" { + targets = local.file_match.system_logs.targets + forward_to = [loki.relabel.add_labels.receiver] } +// Parse hostname from log lines (if structured) +loki.process "parse_hostname" { + forward_to = [loki.relabel.add_labels.receiver] + stage.match { + selector = "{filename=~\"/var/log/.*\"}" + stage.regex { + expression = "^(?P[^ ]+ [^ ]+) (?P[^ ]+) .*" + source = "__content__" + } + stage.labels { + values = { + hostname = "hostname", // Extracted from log line + } + } + } +} + +// Refine labels +loki.relabel "add_labels" { + forward_to = [loki.write.loki.receiver] + rule { + action = "replace" + target_label = "job" + replacement = "syslogs" + } + rule { + source_labels = ["__path__"] + target_label = "filename" + } + // Prefer parsed hostname, fallback to system.hostname + rule { + source_labels = ["hostname"] + target_label = "hostname" + } + //rule { + // source_labels = ["hostname_fallback"] + // target_label = "hostname" + // action = "replace" + // replacement = "${__label:hostname_fallback}" // Only if hostname is unset + } +} loki.write "loki" { endpoint {