docs: Error-Log-Erfassung dokumentiert (LogQL-Beispiele, drei stille Fallen)
This commit is contained in:
1 parent
3236d9cede
commit
0e94bf4d91
1 file changed
+35
@@ -480,6 +480,41 @@ Wer kein sudo hat, aber in der Gruppe `docker` ist: Container-Variante aus
|
||||
[netbird-observability/stacks/telegraf-node](https://gitea.m-m.bio/mm/netbird-observability) (privates Repo).
|
||||
Dort ist `network_mode: host` gesetzt — ohne das sieht Telegraf nur `lo`+`eth0` statt der echten Interfaces.
|
||||
|
||||
## Error-Logs (seit 1.3.0)
|
||||
|
||||
Apache schreibt **zwei** Logarten mit **verschiedenen** Formaten:
|
||||
|
||||
| Datei | Format | Ziel |
|
||||
|---|---|---|
|
||||
| `access.log` | `IP ident auth [HTTPDATE] "VERB REQ" CODE BYTES` | Loki (roh) **und** Prometheus (Metriken) |
|
||||
| `error.log` | `[Mon Sep 14 00:10:01.123456 2026] [core:error] [pid 9] AH00124: …` | Loki (roh), Tag `logtype=error` |
|
||||
|
||||
Bis 1.2.0 wurden **nur** Access-Logs gesammelt. Nachgemessen: 31 `logfile`-Labels
|
||||
in Loki, **0** davon `error.log` — auf einem Panel-Host mit PHP/CMS fehlten damit
|
||||
genau die Fehler, für die man ins Monitoring schaut.
|
||||
|
||||
Error-Logs laufen über einen **eigenen Input**, nicht durch den Access-Grok: das
|
||||
Format passt nicht, und der Aggregator würde sie sonst in leere Gruppen einordnen.
|
||||
Sie tragen `logtype=error` und `logfile=<pfad>` — in Grafana nach beiden filterbar:
|
||||
|
||||
```logql
|
||||
{node="<host>", logtype="error"}
|
||||
{node="<host>", logtype="error"} | logfmt | line_format "{{.message}}" |~ "PHP Fatal"
|
||||
```
|
||||
|
||||
### Drei stille Fallen, die dabei behoben wurden
|
||||
|
||||
Alle drei hätten dazu geführt, dass die Logs **gesammelt und dann verworfen**
|
||||
werden — ohne Fehlermeldung:
|
||||
|
||||
1. `processors.rename` hatte `namepass = ["journal"]`. Für `apache_error` hieß
|
||||
das Feld deshalb `value` statt `message` — jede Query mit `{{.message}}` hätte
|
||||
es nicht gefunden.
|
||||
2. `outputs.loki` hatte `namepass = ["docker_log", "apache_log", "journal"]` —
|
||||
ohne `apache_error`. Der Input sammelt ein, der Output verwirft.
|
||||
3. `outputs.prometheus` fehlte `apache_error` in `namedrop` — sonst wandern
|
||||
Textzeilen als Zeitreihen in die TSDB.
|
||||
|
||||
## Alte Logs archivieren (Historie nachträglich auswertbar machen)
|
||||
|
||||
`inputs.tail` liest mit `initial_read_offset = "saved-or-end"` nur **Neues** — die
|
||||
|
||||
Reference in new issue
Block a user