fix(output): non_retryable_statuscodes [400,409,413,422] gegen Endlosschleife
Ein permanenter 400 (vergifteter Batch) blieb am FIFO-Kopf und wurde endlos
wiederholt; die gepufferten Samples alterten dabei bis ueber die Akzeptanz-
grenze des Empfaengers (head_min_time ~2x Blockdauer) und waren danach
unzustellbar — der Knoten verstummte dauerhaft.
GEMESSEN 09.10.2026: 9 von 15 Nodes stumm, Sample-Versatz 185-1071 min
(konstant ueber 72 h), 1680 Ablehnungen/h, danach 'Metric buffer overflow'
= endgueltiger Verlust. Mit der Option wird der Batch verworfen statt
wiederholt ('Received non-retryable status 400. Metrics are lost.') und der
Knoten erholt sich beim naechsten Flush selbst. 5xx/408/429 bleiben retrybar.
Zweiter Fix, gleiche Ursache: der vorhandene processors.override traf nur
'docker_log' und liess docker_container_blkio_container_id (String) durch —
der 400 warf die ganze docker_container_*-Familie weg. Neuer Block
namepass=['docker','docker_container*'] mit fieldexclude der *_id-Felder.
VERSION 1.9.2 -> 1.9.3 (loest den Auto-Updater aus).
This commit is contained in:
1 parent
63bc054371
commit
098f4cf7af
3 files changed
+31
-1
No files matched your search
@@ -31,6 +31,21 @@
|
|||||||
# dauert ein POST 11-19 s. Ein 10-s-Timeout bricht dann JEDEN Batch ab —
|
# 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.
|
# gemessen 702 abgelehnte Requests in 20 min, die Metriken fehlen still.
|
||||||
timeout = "60s"
|
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.
|
# Roh-Logs gehoeren NICHT in Prometheus — sie sind Text, keine Zeitreihen.
|
||||||
# `apache_error` hier ergaenzen, sonst versucht der Remote-Write-Output
|
# `apache_error` hier ergaenzen, sonst versucht der Remote-Write-Output
|
||||||
# Textzeilen als Metriken zu senden.
|
# Textzeilen als Metriken zu senden.
|
||||||
|
|||||||
@@ -19,3 +19,18 @@
|
|||||||
[[processors.override]]
|
[[processors.override]]
|
||||||
namepass = ["docker_log"]
|
namepass = ["docker_log"]
|
||||||
fieldexclude = ["container_id"]
|
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"]
|
||||||
Reference in new issue
Block a user