fix(monitoring) : trois défauts trouvés en déroulant le relais de métriques #32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/container-metrics-relay-followups"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
⚠ Ces corrections tournent déjà sur les douze machines. La PR #30 a été fusionnée alors qu'elle ne portait que son premier commit ; celui-ci, écrit pendant le déploiement, est resté dehors.
maindécrivait donc un état que l'infrastructure n'avait plus.Vérifié plutôt qu'affirmé :
--checksurfr-rbx1et ses deux conteneurs rendchanged=0avec cette branche, et rendrait des différences avecmainseul.Quatre défauts, dont trois muets
Aucun ne se voyait au lint, et c'est ce qui les rend intéressants.
1. Le chemin du récepteur
/api/v1/metrics/write— celui d'Alloy — et non/api/v1/write, celui de Prometheus.Le mauvais rend 404, et
remote_writeréessaie sans fin sans rien journaliser en niveau info. Le conteneur avait l'air de pousser, le relais d'écouter, et aucune série n'arrivait. Trouvé en interrogeant l'endpoint à la main ; les journaux ne disaient rien.2.
instancene se pose pas dansexternal_labelsUn
remote_writene les applique qu'aux étiquettes absentes, etprometheus.scrapea déjà poséinstance: le nom d'hôte de la machine.Sur un nœud ça ne se voyait pas — son nom d'hôte est son nom de nœud, la valeur coïncidait. Dans un conteneur, le nom d'hôte est celui du service :
openbao, identique sur les quatre machines. Les quatre coffres se seraient écrasés sous une seule série, distingués par la seule étiquettenode, etinstanceaurait cessé d'identifier quoi que ce soit — en ayant l'air juste.Corrigé par un
discovery.relabel, seul endroit où l'étiquette peut l'être.node,containeretsiterestent dansexternal_labels: celles-là n'existent pas à la collecte.3. Deux écouteurs gRPC sur le wildcard
Les composants d'écoute d'Alloy reposent sur un serveur interne qui ouvre toujours un gRPC à côté de l'HTTP, sur
*et un port éphémère si on ne dit rien.C'est ce que ce dépôt refuse partout ailleurs :
tcp_l3mdev_acceptvaut 1 pour Bird, donc toute socket wildcard est joignable depuis tout l'overlay. La politiquedropde la chaîneinputles couvrait — mais compter sur le pare-feu pour rattraper une écoute qu'on ne voulait pas est l'inverse de l'invariant quelooking_glassetopenbaodéfendent chacun de leur côté.Épinglés sur la boucle locale, à ports fixes : rien ne s'y connecte, et un port qui change à chaque démarrage ne se vérifie pas.
4. Le handler des minuteries
Il bouclait encore sur
monitoring_textfile_collectors, la liste des nœuds : dans un conteneur il tentait de redémarrerdn42-dns-metricsetdn42-service-metrics, jamais installées. Celui-là échouait franchement, à la fin du play, loin de la tâche qui l'avait notifié.La leçon dépasse ce handler : les tâches qui posent et celles qui réagissent doivent lire la même liste.
Mesuré après correction
10.42.0.1:3500et:3501, gRPC sur127.0.0.1:3502et:3503— aucun wildcardinstance=<service>-<nœud>--checkàchanged=0