From 49b5811d948e57dd13143770936f59382022bae3 Mon Sep 17 00:00:00 2001 From: mm Date: Sun, 13 Sep 2026 22:18:55 +0200 Subject: [PATCH] =?UTF-8?q?fix(logs):=20inputs.journal=20existiert=20in=20?= =?UTF-8?q?offiziellen=20Builds=20nicht=20=E2=80=94=20tail=20auf=20/var/lo?= =?UTF-8?q?g/syslog,=20value->message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- telegraf/journal.conf | 50 ++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/telegraf/journal.conf b/telegraf/journal.conf index 96de436..63ead1c 100644 --- a/telegraf/journal.conf +++ b/telegraf/journal.conf @@ -1,31 +1,33 @@ -# System-Logs (journald) → Loki +# System-Logs (Syslog) → Loki # # Warum: inputs.docker_log deckt nur Container ab. PVE-Knoten und alle # Nicht-Docker-Hosts lieferten damit gar keine Logs — genau dort stehen aber # die relevanten Meldungen (pvedaemon, pveproxy, qemu, Kernel, Storage). # -# Wichtig: -# - Läuft nur auf systemd-Systemen (kein Alpine/OpenRC). -# - Journal-Zugriff: Dienst läuft als root (Proxmox-Drop-in) bzw. braucht -# Mitgliedschaft in "systemd-journal". Der Installer setzt das per -# SupplementaryGroups, wenn als Benutzer "telegraf" gelaufen wird. -# - PVE/Cluster-Meldungen sind im Journal unter diesen Units zu finden: -# pvedaemon, pveproxy, pvestatd, pve-firewall, qmeventd, corosync, pmxcfs +# Umsetzung: inputs.tail auf die Syslog-Dateien. +# HINWEIS: inputs.journal existiert in den offiziellen Telegraf-Builds NICHT +# (Docker-Image und InfluxData-Debian-Paket 1.40 wurden beide geprüft) — das +# Plugin braucht einen Build mit systemd-Headern. Deshalb der Datei-Weg. +# +# Voraussetzung: rsyslog schreibt eine Datei. Auf PVE ist das /var/log/syslog +# (pve-manager hängt an rsyslog). Prüfen mit: ls -la /var/log/syslog -[[inputs.journal]] - # Nur Warnungen und schlimmer — sonst flutet das Journal Loki. - # Für Debugging temporär auf "info" oder "debug" setzen. - units = [ - "pvedaemon", "pveproxy", "pvestatd", "pve-firewall", - "qmeventd", "corosync", "pmxcfs", "pve-cluster", - "sshd", "systemd", "kernel", "smartd", "zfs-zed", "zfs", - "netbird", "telegraf", "docker", "containerd", "cron", - ] - # Einheiten ohne Einträge liefern einfach nichts — kein Fehler. - priority = "warning" # warning, err, crit … - # Kein Nachholen alter Einträge beim Start - since = "-1h" - # Felder, die als Log-Zeile nutzbar sind (sonst nur Structured-Log) - fieldpass = ["MESSAGE", "PRIORITY", "SYSLOG_IDENTIFIER", "UNIT", "_HOSTNAME"] - # Kein doppeltes Logging: docker_log deckt Container ab +[[inputs.tail]] + # Fehlende Dateien sind unkritisch (Debian hat kein /var/log/messages). + files = ["/var/log/syslog", "/var/log/messages", "/var/log/kern.log", "/var/log/daemon.log"] + name_override = "journal" + # Default "saved-or-end": beim ersten Start nichts nachholen, danach merken. + initial_read_offset = "saved-or-end" + # Zeilen als Text durchreichen (kein Parsing nötig) + data_format = "value" + data_type = "string" + # Pfad als Tag, damit man in Loki nach Datei filtern kann + path_tag = "logfile" + +# Feldname vereinheitlichen: tail/value liefert "value", das Logs-Panel +# erwartet (wie docker_log) "message". Umbenennen statt Panel-Sonderfall. +[[processors.rename]] namepass = ["journal"] + [[processors.rename.replace]] + field = "value" + dest = "message"