reject_old_samples_max_age n'est pas la rétention — un lot refusé bloque la file derrière lui
Helm Charts / Application charts alloy (pull_request) Successful in 22s
Helm Charts / Application charts chart (pull_request) Successful in 40s
Helm Charts / Application charts loki (pull_request) Successful in 51s
Helm Charts / Application charts grafana (pull_request) Successful in 57s
Helm Charts / Detect changed charts (pull_request) Successful in 46s
Helm Charts / Library charts tool (pull_request) Skipped
Helm Charts / Application charts crowdsec (pull_request) Skipped
Helm Charts / Application charts hashicorp-vault (pull_request) Skipped
Helm Charts / Application charts redis (pull_request) Skipped
Helm Charts / Application charts minio (pull_request) Skipped
Helm Charts / Application charts pgbouncer (pull_request) Skipped
Helm Charts / Application charts pgcat (pull_request) Skipped
Helm Charts / Application charts prometheus (pull_request) Skipped

Second blocage complet, découvert juste après celui du schéma et de la même
famille : un réglage lu comme « combien de temps on garde » alors qu'il dit
« quelles horloges on accepte ».

Posé à 720 h pour « coller » à la rétention, il refusait chaque lot contenant
une ligne de plus de 30 jours :

  entry ... has timestamp too old: 2026-04-13T13:47:05Z,
  oldest acceptable timestamp is: 2026-08-08T15:41:50Z

Or l'agent lit les fichiers rotatés encore présents sur le disque, dont
certains remontent à AVRIL. Et comme un lot définitivement refusé est REJOUÉ,
la file ne se vide jamais : mesuré sur l'agent de pi3,
`loki_write_sent_entries_total` valait 0 — il n'avait JAMAIS rien transmis,
pour 74 fichiers activement suivis.

Ce garde-fou existe contre les horloges décalées. On l'ouvre à 8760 h, bien
au-delà de ce que le disque peut porter. Ce qui borne la conservation reste
`retention_period` (720 h) plus le compacteur.

⚠ Conséquence assumée, écrite dans les valeurs : au premier démarrage l'agent
remonte l'historique du disque, et le compacteur supprime ensuite ce qui
dépasse 30 jours. On paie une ingestion inutile UNE fois, contre une file qui
se vide — et on récupère au passage l'histoire déjà écrite.

⚠ Un état bloqué ne se débloque pas tout seul : après avoir corrigé Loki, il a
fallu REDÉMARRER les agents. Le compteur d'un agent resté sur son ancien lot ne
repart pas parce que le serveur, lui, va mieux.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
2026-09-07 17:45:19 +02:00
co-authored by Claude Fable 5.1
parent 857a6d1560
commit 698920ec8d
+25 -3
View File
@@ -102,10 +102,32 @@ loki:
limits_config: limits_config:
# -- 30 jours. Voir `RETENTION` en fin de fichier pour la mesure. # -- 30 jours. Voir `RETENTION` en fin de fichier pour la mesure.
retention_period: 720h retention_period: 720h
# Le défaut amont refuse tout échantillon de plus de 168 h. À la première # ⚠⚠ CE N'EST PAS UN RÉGLAGE DE CONSERVATION, ET LE CONFONDRE BLOQUE TOUT.
# remontée d'un agent resté hors ligne, ces lignes seraient jetées. #
# Posé à 720 h pour « coller » à la rétention, il a produit un second
# blocage complet, juste après celui du schéma : l'agent lit aussi les
# fichiers rotatés présents sur le disque, dont certains remontent à
# AVRIL. Loki refusait alors chaque lot —
#
# entry ... has timestamp too old: 2026-04-13T13:47:05Z,
# oldest acceptable timestamp is: 2026-08-08T15:41:50Z
#
# — et comme l'agent REJOUE un lot refusé, la file ne se vidait jamais :
# `loki_write_sent_entries_total` restait à 0 pour toujours. Un lot
# définitivement refusé bloque la file derrière lui.
#
# Ce garde-fou existe contre les horloges DÉCALÉES, pas pour borner la
# conservation. On l'ouvre donc largement au-delà de ce que le disque
# peut porter ; ce qui borne vraiment, c'est `retention_period` + le
# compacteur, plus bas.
#
# ⚠ Conséquence assumée : au tout premier démarrage, l'agent remonte
# l'historique encore sur le disque, et le compacteur supprimera dans
# l'heure ce qui dépasse 30 jours. On paie une ingestion inutile UNE
# fois, en échange d'une file qui se vide. Le bénéfice de bord est
# qu'on récupère au passage l'histoire déjà écrite.
reject_old_samples: true reject_old_samples: true
reject_old_samples_max_age: 720h reject_old_samples_max_age: 8760h
max_cache_freshness_per_query: 10m max_cache_freshness_per_query: 10m
split_queries_by_interval: 15m split_queries_by_interval: 15m
query_timeout: 300s query_timeout: 300s