fix(logs): inputs.journal existiert in offiziellen Builds nicht — tail auf /var/log/syslog, value->message

This commit is contained in:
mm committed 2026-09-13 22:18:55 +02:00
1 parent e1da311488
commit 49b5811d94
1 file changed
+26 -24
+26 -24
View File
@@ -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"