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:
1 parent
6d0d0bd900
commit
3236d9cede
4 files changed
+68
-11
No files matched your search
+29
-2
@@ -35,15 +35,42 @@
|
||||
[inputs.tail.tags]
|
||||
source = "apache"
|
||||
|
||||
# Vereinheitlicht den Feldnamen auf `message` — fuer JEDEN Log-Input.
|
||||
# `apache_error` muss mit drin sein: sonst heisst das Feld dort `value` und
|
||||
# jede Panel-/Alert-Query mit `| logfmt | line_format "{{.message}}"` findet
|
||||
# die Error-Logs nicht. Das faellt nicht auf, solange niemand danach sucht.
|
||||
[[processors.rename]]
|
||||
namepass = ["journal"]
|
||||
namepass = ["journal", "apache_error"]
|
||||
order = 1
|
||||
[[processors.rename.replace]]
|
||||
field = "value"
|
||||
dest = "message"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# 2) Request-Metriken (Common/Combined Log Format) → Prometheus
|
||||
# 2) Error-Logs → Loki (NUR roh, KEINE Metriken)
|
||||
# --------------------------------------------------------------------------
|
||||
# Error-Logs haben ein anderes Format als Access-Logs:
|
||||
# [Mon Sep 14 00:10:01.123456 2026] [core:error] [pid 9] AH00124: ...
|
||||
# Der Access-Grok weiter unten kann das nicht lesen. Liefen sie durch ihn,
|
||||
# gaebe es keine Metriken — aber der Aggregator wuerde sie in leere Gruppen
|
||||
# einordnen. Deshalb ein EIGENER Input, der sie unveraendert nach Loki schickt.
|
||||
#
|
||||
# Eigener Messungsname `apache_error` statt `journal`: so sind sie in Loki
|
||||
# eindeutig filterbar, und das Logs-Panel kann sie getrennt zeigen.
|
||||
[[inputs.tail]]
|
||||
files = ${APACHE_ERROR_FILES}
|
||||
name_override = "apache_error"
|
||||
initial_read_offset = "saved-or-end"
|
||||
data_format = "value"
|
||||
data_type = "string"
|
||||
path_tag = "logfile"
|
||||
# Der Remote-Write-Output laesst Logs per namedrop draussen; Loki nimmt sie.
|
||||
[inputs.tail.tags]
|
||||
source = "apache"
|
||||
logtype = "error"
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# 3) Request-Metriken (Common/Combined Log Format) → Prometheus
|
||||
# --------------------------------------------------------------------------
|
||||
# Common Log Format:
|
||||
# 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
|
||||
|
||||
Reference in new issue
Block a user