fix(apache): from_beginning existiert bei inputs.tail nicht (Dienststart scheiterte) + COMMON/COMBINED_LOG_FORMAT; Logpfad-Autoerkennung

This commit is contained in:
mm committed 2026-09-14 00:14:45 +02:00
1 parent feb77e2fc7
commit da3f221c8d
3 files changed
+129 -6

No files matched your search

+42
View File
@@ -5,6 +5,48 @@ 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).
## Apache-Logs
Mit `--role apache` (oder automatisch, wenn `apache2ctl`/`httpd` gefunden wird) bindet der Installer Apache ein — auf **zwei** Wegen aus derselben Datei:
| Ziel | Was | Wofür |
|---|---|---|
| **Loki** | jede Zeile roh | Fehlersuche im Einzelfall |
| **Prometheus** | `apache_access` mit Tags `resp_code`, `verb` | Request-Rate, Status-Klassen, Error-Rate — Panels und Alerts |
**Logpfad wird automatisch ermittelt:** `/var/log/apache2/access.log` (Debian/Ubuntu/KeyHelp), `/var/log/httpd/access_log` (RHEL/Rocky), sonst aus der `CustomLog`-Direktive der Apache-Config. Überschreiben mit `--apache-log <pfad>`.
### Zwei Fallstricke
**1. `from_beginning` existiert bei `inputs.tail` nicht.** Ein solcher Block lässt den Dienst beim Start hart scheitern — `systemctl start` schlägt fehl und **alle** Metriken fallen aus, nicht nur die Apache-Logs:
```
E! loading config file /etc/telegraf/telegraf.d/apache.conf failed:
plugin inputs.tail: line 2: configuration specified the fields ["from_beginning"],
but they were not used ... does not exist in this version
```
Richtig ist `initial_read_offset = "saved-or-end"` (Default) — damit wird beim ersten Lauf nicht die komplette Historie ausgeschüttet. Für einen Test gegen eine vorgefüllte Datei `"beginning"` setzen.
**2. Die Grok-Muster heißen `COMMON_LOG_FORMAT` und `COMBINED_LOG_FORMAT`** — nicht `HTTPD_COMMON_LOG`/`HTTPD_COMBINED_LOG_FORMAT`. Die `HTTPD_*`-Namen aus anderen Grok-Sammlungen kennt Telegraf nicht:
```
E! [inputs.tail] Creating parser: no pattern found for %{HTTPD_COMBINED_LOG_FORMAT}
```
Die Reihenfolge in `grok_patterns` ist spezifisch → allgemein, damit die VHost-Varianten (`example.com:80 ...`) vor der einfachen Form greifen.
### Response-Time
Common und Combined Log Format enthalten **keine** Antwortzeit. Für `resp_time` in den Metriken muss das LogFormat in Apache erweitert werden:
```apache
LogFormat "%h %l %u %t \"%r\" %>s %b \"%D\" \"%{User-agent}i\"" combined_time
CustomLog ${APACHE_LOG_DIR}/access.log combined_time
```
`%D` = Dauer in Mikrosekunden. Danach im Grok-Muster als Feld ergänzen. Ohne diese Änderung sind alle anderen Werte trotzdem verfügbar — nur die Antwortzeit fehlt.
## Auto-Updater und Force-Updater
Der Installer hält sich auf den Nodes selbst aktuell.