feat(apache): Error-Logs erfassen + drei stille Fallen behoben (VERSION 1.3.0)

Bisher wurden NUR access.log gesammelt — real nachgemessen: 31 logfile-Labels,
0 davon error.log. Bei einem KeyHelp-Host mit PHP/CMS fehlten damit genau die
Fehler, fuer die man ins Monitoring schaut.

Error-Logs jetzt in einem EIGENEN Input (name_override=apache_error), roh nach
Loki, mit Tags logtype=error und logfile=<pfad>. Getrennt vom Access-Grok, weil
das Format nicht passt:
  [Mon Sep 14 00:10:01.123456 2026] [core:error] [pid 9] AH00124: ...
Liefen sie durch den Access-Parser, entstuenden keine Metriken, aber der
Aggregator wuerde sie in leere Gruppen einordnen.

DREI STILLE FALLEN dabei gefunden und behoben:
1. processors.rename hatte namepass=["journal"] — apache_error behielt das
   Feld value, jede Panel-Query mit {.message} haette es nicht gefunden.
2. outputs.loki namepass enthielt apache_error nicht — Input sammelt ein,
   Output verwirft, keine Fehlermeldung, Panels leer (wie bei journal damals).
3. outputs.prometheus namedrop ebenso — sonst wandern Textzeilen in die TSDB.

Verifiziert gegen echte KeyHelp-Formate: access=2 Metriken, error=4 Rohzeilen,
Feld heisst message, 0 Error-Zeilen als Metrik.
This commit is contained in:
mm committed 2026-09-14 10:03:13 +02:00
1 parent 6d0d0bd900
commit 3236d9cede
4 files changed
+68 -11

No files matched your search

+8 -2
View File
@@ -17,7 +17,10 @@
url = "${PROM_URL}"
data_format = "prometheusremotewrite"
timeout = "10s"
namedrop = ["docker_log", "apache_log", "journal"]
# Roh-Logs gehoeren NICHT in Prometheus — sie sind Text, keine Zeitreihen.
# `apache_error` hier ergaenzen, sonst versucht der Remote-Write-Output
# Textzeilen als Metriken zu senden.
namedrop = ["docker_log", "apache_log", "journal", "apache_error"]
[outputs.http.headers]
Content-Type = "application/x-protobuf"
Content-Encoding = "snappy"
@@ -29,7 +32,10 @@
domain = "${LOKI_URL}"
endpoint = "/loki/api/v1/push"
timeout = "10s"
namepass = ["docker_log", "apache_log", "journal"]
# `apache_error` MUSS hier stehen: ohne den Namen sammelt der Input die
# Error-Logs ein und dieser Output verwirft sie wieder — kein Fehler, keine
# Meldung, die Panels bleiben leer. Derselbe stille Fehler wie bei `journal`.
namepass = ["docker_log", "apache_log", "journal", "apache_error"]
sanitize_label_names = true
metric_name_label = ""
http_headers = { "Authorization" = "Bearer ${TELEGRAF_TOKEN}" }