diff --git a/README.md b/README.md index c357bad..825bda0 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,42 @@ Der Ausgang läuft über den **NetBird-Reverse-Proxy** (`imac-prometheus.x05.idx mit **Bearer-Token** — dadurch funktioniert der Installer auch auf Maschinen, die **kein NetBird-Peer** sind (Büro-LAN, Kundenlaptop, CGNAT, VM ohne Client). +## System-Logs (PVE und Nicht-Docker-Hosts) + +Bis Version dieses Abschnitts lieferten nur **Docker-Container** Logs nach Loki +(`inputs.docker_log`) — PVE-Knoten und alle Hosts ohne Docker also gar nichts. +Jetzt werden zusätzlich **journald-Logs** übertragen. + +**Wie:** `scripts/journal-tail.sh` liest `journalctl -o json` inkrementell und +gibt Influx Line Protocol aus (`inputs.exec`). Der Cursor steckt in jeder +Journal-Zeile (`__CURSOR`) und wird in `/var/lib/telegraf-journal/cursor` +gespeichert — keine Duplikate, kein Verlust bei Neustart oder Rotation. + +**Warum nicht `inputs.journal`:** Das Plugin existiert in den offiziellen +Telegraf-Builds **nicht** (Docker-Image und InfluxData-Debian-Paket 1.40 +geprüft; es braucht einen Build mit systemd-Headern). + +**Warum nicht `/var/log/syslog`:** Auf PVE (Debian ohne rsyslog) existiert die +Datei nicht. `ls /var/log/` zeigt dort `journal/`, `pve/`, `pveproxy/`, +`pve-firewall.log`, `ceph/`, `corosync/` — aber kein `syslog`. + +**Feintuning** in `/etc/default/telegraf`: + +| Variable | Default | Bedeutung | +|---|---|---| +| `JOURNAL_PRIORITY` | `warning` | `warning`, `err`, `info`, `debug` | +| `JOURNAL_MAX_LINES` | `500` | Obergrenze pro Lauf (Flutschutz) | +| `JOURNAL_BUDGET` | `15` | Sekunden, die `journalctl` lesen darf | +| `JOURNAL_SINCE` | — | nur beim **ersten** Lauf, z. B. `-1h` | + +Standardmäßig werden **Warnungen und schlimmer** übertragen. Für Debugging +`JOURNAL_PRIORITY=info` setzen und Telegraf neu starten. + +**Labels in Loki:** `unit` (z. B. `pvedaemon.service`), `ident`, `priority`, +`jhost` (Journal-Hostname), dazu `host`/`node` von Telegraf. Das `jhost`-Label +heißt bewusst nicht `host` — dieser Name gehört Telegrafs global_tag, sonst +filtert das Dashboard nach dem falschen Knoten. + ## Der Token — zuerst lesen Jeder Aufruf braucht `--token `. Ohne Token bricht das Script mit