diff --git a/README.md b/README.md index 7827616..92cb013 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,35 @@ Jede Serie trägt ein `path`-Tag, damit man in Grafana nach Datei filtert. Über **Zusätzlich** wird die `CustomLog`-Direktive aus `/etc/apache2` bzw. `/etc/httpd` ausgewertet — die verlässlichste Quelle, `${APACHE_LOG_DIR}` wird aufgelöst. +### Leserechte: der stille Killer + +Auf x22 waren **64 von 84 Logpfaden für `telegraf` unlesbar** — `inputs.tail` meldet das **nicht**, es liefert einfach nichts, und der Node sieht „aktiv" aus. Zwei verschiedene Rechte-Welten: + +| Ort | Rechte | Was hilft | +|---|---|---| +| `/var/log/apache2/…` | `root:adm 0640` | `usermod -aG adm telegraf` | +| `/home/users//logs/…` | `: 0640` | **`adm` hilft nicht** — ACL nötig | + +Der Installer setzt dafür **ACLs** (`setfacl -R -m u:telegraf:rX` plus eine Default-ACL, damit neue Domain-Ordner das Recht erben). Das `acl`-Paket wird bei Bedarf nachinstalliert. Der Dienst bleibt im eingeschränkten Konto — kein `root` nötig. + +Danach folgt ein **Gegentest**: Der Installer liest eine echte Logdatei als Dienst-Benutzer. Meldet er + +``` +[netbird-telegraf] Gegentest: 'telegraf' kann Apache-Logs lesen (…) +``` + +ist die Kette nachweislich in Ordnung. + +### Glob-Muster statt Einzelpfade + +Die Conf enthält **Muster**, nicht die expandierten Dateinamen: + +```toml +files = ["/var/log/apache2/*/access.log", "/home/users/*/logs/*/access.log"] +``` + +Damit wird eine **neu angelegte Domain sofort erfasst**, ohne dass der Installer erneut laufen muss. (Der Installer schaltet beim Rendern `set -f` ein — sonst würde die Shell die Muster selbst auflösen und feste Pfade in die Conf schreiben.) + ### `/etc/default/telegraf` wird gesourct — Werte müssen gequotet sein Diese Datei wird mit `. /etc/default/telegraf` eingelesen (vom Installer und von der Telegraf-Unit). Ein **ungequoteter** Wert mit Leerzeichen bricht das Sourcing ab — bei mehreren Logpfaden versucht die Shell, den zweiten Pfad als Befehl auszuführen: