Prometheus : up vide n'est pas un défaut de scrutation. La configuration, le RBAC et la découverte sont sains ; c'est le stockage (récidive de #36)
#59
Reference in New Issue
Block a user
Le constat de départ
La requête
upne rend rien. L'hypothèse de départ était « Prometheus ne scrute rien » : configuration de scrutation vide, RBAC, surcharge des values, ou découverte cassée. Les quatre sont écartées. Relevé en lecture seule le 2026-09-25 entre 18 h 25 et 18 h 45 UTC. Rien n'a été modifié, et aucune PR n'est ouverte : il n'y a rien à corriger dans la configuration de scrutation.Ce qui est sain
tools/prometheus-server, rendue depuisprometheus/values.yaml, app ArgoCDprometheusenSynced) : 11 jobs, aucunmetric_relabel_configsqui jetterait des séries.kubernetes-nodes: kubelet, en:10250direct avec le jeton du compte de service ;kubernetes-nodes-cadvisor:/metrics/cadvisor;kubernetes-podsetkubernetes-pods-slow: annotationsprometheus.io/scrape;kubernetes-service-endpointset sa variante-slow: node-exporter et kube-state-metrics ;kubernetes-api-servers,kubernetes-services,prometheus-pushgateway,kadans-worker-mac;prometheus: statique,localhost:9090.kubectl auth can-i --as=system:serviceaccount:tools:prometheus-server) :list/watchsur nodes, pods, endpoints, services et endpointslices,getsurnodes/metricsetnodes/proxy→ yes partout.tools,wgetsur les trois node-exporter (192.168.1.20{1,2,3}:9100), kube-state-metrics et le Pushgateway : les cinq rendent leurs métriques.Le point qui tranche : le job
prometheusest statique. Il n'a besoin ni de découverte ni de RBAC. Dès que le TSDB accepte des échantillons,up{job="prometheus"}existe. Unupentièrement vide veut donc dire que Prometheus n'enregistre pas, pas qu'il ne scrute pas. C'est exactement la signature de #36 («count(up): aucune série, en face de 23 cibles annoncées vivantes »,write to WAL: … input/output error).Ce qui ne va pas : le stockage de pi3
prometheus-server-86c78bd477-smm6mreste enContainerCreating(plus de 20 min) :volume pvc-015eabf4… hasn't been attached yet. Le volume Longhorn estattaching, robustesseunknown. Côté longhorn-manager :invalid instance manager … state starting. L'instance-manager de pi3 a été recréé après desoperation timeout: context deadline exceededde Docker.…-kclw6) échouait déjà ses sondes. Readiness en délai dépassé vers 18 h 01, liveness vers 18 h 13 : Prometheus était bloqué, pas arrêté.dmesg, lecture seule) : entre 18 h 18 et 18 h 23 UTC, sept systèmes de fichiers Longhorn voient leur journal ext4 abandonné, puis passent en lecture seule. Sont nommés dans le journal : minio (sdc), vault (sdi), loki (sdg), alertmanager (sdb), redis (sde). Poursdh,sddetsdj, le démontage n'a pas pu nettoyer le journal. Charge de pi3 : 58 à 71 pour 4 cœurs. Loki rend lui aussiinput/output error: les journaux de l'ancien pod Prometheus sont donc illisibles.Schedulable=False: voir factory#64.prometheus/values.yamlpréfère pi3 (poids 100) et exclut pi2 (#51) : Prometheus ne peut aller que sur pi1 ou pi3.Non vérifié, parce que le pod ne démarre pas :
/api/v1/targets, et la ligneScrape commit failed … write to WALdans le journal de Prometheus. C'est ce qui prouverait le mécanisme de #36 pour aujourd'hui.Ce qu'il faut décider (fondateur)
Le défaut est dans le stockage du TSDB, pas dans la scrutation. L'instrument qui doit raconter les incidents de disque vit sur le disque qui tombe en panne. Trois pistes, non exclusives :
dataLocality: strict-localpour Prometheus. Les entrées-sorties restent locales : il n'y a plus de délai moteur → réplica distant, qui est le mécanisme de #49, #52 et de factory#59. Ça rejoint la réponse « No need for replicas for homelab » et l'évaluation en cours pour MinIO. Le prix : l'historique est perdu si le nœud meurt, et il faut recréer le PVC (la classe d'un PVC est immuable).--storage.tsdb.retention.size(par exemple 6 GB pour le PVC de 8 Gi), en garde-fou contre un TSDB qui remplirait son volume. Ce n'est pas la cause relevée ici.Vérifier quand Prometheus repart
Si
count(up)est vide alors que/api/v1/targetsliste des ciblesup, c'est #36 : le WAL n'écrit plus. La réparation décrite dans #36 (détacher, puis rattacher le volume) s'applique.Liens : #36 (même signature), #51 (déplacement sur pi3), #58 (MinIO sur pi3, même jour), factory#64 (disque de pi3), factory#63 (audit « sans disque »).
🤖 Generated with Claude Code