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.
57 lines
1.8 KiB
Plaintext
57 lines
1.8 KiB
Plaintext
# NetBird Observability — Basis-Konfiguration (alle Linux-Nodes)
|
|
# Variablen aus /etc/default/telegraf: NODE_NAME, PROM_URL, LOKI_URL
|
|
|
|
[global_tags]
|
|
node = "${NODE_NAME}"
|
|
|
|
[agent]
|
|
interval = "15s"
|
|
flush_interval = "15s"
|
|
metric_batch_size = 1000
|
|
metric_buffer_limit = 20000
|
|
hostname = "${NODE_NAME}"
|
|
omit_hostname = false
|
|
|
|
# ---- Metriken → Prometheus Remote Write (imac) ----
|
|
[[outputs.http]]
|
|
url = "${PROM_URL}"
|
|
data_format = "prometheusremotewrite"
|
|
timeout = "10s"
|
|
# 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"
|
|
X-Prometheus-Remote-Write-Version = "0.1.0"
|
|
Authorization = "Bearer ${TELEGRAF_TOKEN}"
|
|
|
|
# ---- Logs → Loki (imac) ----
|
|
[[outputs.loki]]
|
|
domain = "${LOKI_URL}"
|
|
endpoint = "/loki/api/v1/push"
|
|
timeout = "10s"
|
|
# `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}" }
|
|
|
|
# ---- Host-Metriken ----
|
|
[[inputs.cpu]]
|
|
percpu = false
|
|
totalcpu = true
|
|
[[inputs.mem]]
|
|
[[inputs.swap]]
|
|
[[inputs.system]]
|
|
fieldexclude = ["uptime_format"]
|
|
[[inputs.disk]]
|
|
ignore_fs = ["tmpfs", "devtmpfs", "overlay", "squashfs", "fuse.lxcfs"]
|
|
[[inputs.diskio]]
|
|
[[inputs.net]]
|
|
[[inputs.processes]]
|
|
[[inputs.kernel]]
|