diff --git a/VERSION b/VERSION index 8fdcf38..77fee73 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.9.2 +1.9.3 diff --git a/telegraf/base.conf b/telegraf/base.conf index 1ae4007..9f93d9e 100644 --- a/telegraf/base.conf +++ b/telegraf/base.conf @@ -31,6 +31,21 @@ # dauert ein POST 11-19 s. Ein 10-s-Timeout bricht dann JEDEN Batch ab — # gemessen 702 abgelehnte Requests in 20 min, die Metriken fehlen still. timeout = "60s" + # GEGEN DIE ENDLOSSCHLEIFE — die wichtigste Zeile hier. + # Ein 400 ist PERMANENT: dieselbe Nutzlast liefert dieselbe Antwort. Ohne + # diese Liste bleibt der abgelehnte Batch am FIFO-Kopf stehen, wird fuer + # immer wiederholt und blockiert jede dahinter gesammelte Serie. Die + # gepufferten Samples altern dabei weiter, bis sie aelter sind als die + # Akzeptanzgrenze des Empfaengers (Prometheus: head_min_time ~2x + # Blockdauer, gemessen 90-120 min) — danach sind sie UNZUSTELLBAR und der + # Knoten ist dauerhaft stumm (gemessen 09.10.2026: 9 von 15 Nodes, Versatz + # 185-1071 min, 1680 Ablehnungen/h, danach 'Metric buffer overflow' = + # endgueltiger Verlust). Mit dieser Zeile wird der Batch VERWORFEN statt + # wiederholt ("Received non-retryable status 400. Metrics are lost.") und + # der Knoten erholt sich beim naechsten Flush von selbst. + # 5xx/408/429 bleiben absichtlich retrybar: dort ist die Nutzlast in + # Ordnung, nur der Server ist gerade nicht bereit. + non_retryable_statuscodes = [400, 409, 413, 422] # 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. diff --git a/telegraf/docker.conf b/telegraf/docker.conf index e9c2641..5bc6ac4 100644 --- a/telegraf/docker.conf +++ b/telegraf/docker.conf @@ -19,3 +19,18 @@ [[processors.override]] namepass = ["docker_log"] fieldexclude = ["container_id"] + +# Ohne diesen zweiten Block faellt die GANZE docker_container_*-Familie aus +# jedem Remote-Write-Batch. `inputs.docker` liefert die Felder `container_id` +# und `image_id` als 64-stellige Hex-Strings; Telegraf flacht Messung+Feld zu +# einem Metriknamen ab, daraus wird `docker_container_blkio_container_id` — +# ein STRING-Wert, den Prometheus ablehnt: +# `bad sample value "<64 hex>"` +# Der 400 wirft den KOMPLETTEN Flush weg, also auch alle Serien, an denen +# nichts falsch ist. Der Block oben trifft nur `docker_log` (Loki-Output) und +# hilft hier NICHT — das ist die Falle, an der man den ganzen Vormittag sucht. +# Gemessen 09.10.2026 auf imac: 278 "series were dropped"-Zeilen in 60 min, +# bis zu 2804 Serien im selben haengenden Batch. +[[processors.override]] + namepass = ["docker", "docker_container*"] + fieldexclude = ["container_id", "container_image_id", "container_id_short", "device_id", "image_id"]