From 5041989735f407e3ad1ed1a67377b367d5656440 Mon Sep 17 00:00:00 2001 From: Arne Teuke Date: Tue, 11 Mar 2025 12:55:28 +0100 Subject: [PATCH] add hostname label --- templates/config.alloy.erb | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/templates/config.alloy.erb b/templates/config.alloy.erb index 2aa9b53..6637418 100644 --- a/templates/config.alloy.erb +++ b/templates/config.alloy.erb @@ -16,23 +16,51 @@ loki.source.file "system_logs" { forward_to = [loki.relabel.add_labels.receiver] } -// Add hostname using system.hostname -loki.process "add_hostname" { +// 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 + } + } + } + // Fallback: Set hostname explicitly if not parsed stage.static_labels { values = { - hostname = system.hostname, // Grabs the local hostname (e.g., fm002) + hostname_fallback = system.hostname, // e.g., fm002 } } } -// Add hostname and job labels +// Refine labels loki.relabel "add_labels" { forward_to = [loki.write.loki.receiver] rule { action = "replace" target_label = "job" - replacement = "syslogs" // Or any name you prefer, e.g., "syslogs" + 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 } }