1. Le nom du backend Traefik est dans exported_service, pas service
1. Le nom du backend Traefik est dans exported_service, pas service
service sur la cible. Face à la collision, vmagent renomme celui de Traefik en exported_service. Agréger par service regroupe donc les 300 backends en une seule courbe nommée traefik, sans erreur.Ce qui l’empêche maintenant: make valider refuse toute expression citant traefik_* et agrégeant par service.2. A or vector(0) ajoute une série fantôme
2. A or vector(0) ajoute une série fantôme
or fait l’UNION sur les jeux d’étiquettes: vector(0) n’en porte aucune, donc il s’ajoute dès que A en porte une. Le panneau affiche la vraie valeur ET un zéro parasite.Ce qui l’empêche maintenant: écrire or on() vector(0). Avec un jeu d’étiquettes vide, le zéro n’apparaît que si A est vraiment vide.3. Une règle ne doit pas lire un enregistrement de son propre groupe
3. Une règle ne doit pas lire un enregistrement de son propre groupe
make valider refuse ce motif. Consommer dans un autre groupe, ou écrire la valeur en clair.4. Docker Compose interprète les $ lus dans .env
4. Docker Compose interprète les $ lus dans .env
$apr1$hC/bEyZf$faHem... devient admin:/bEyZf. en silence, et le basic auth casse sans que rien ne le dise.Ce qui l’empêche maintenant: les apostrophes simples sont OBLIGATOIRES dans .env pour toute valeur contenant un $.5. vmagent refuse refresh_interval dans un *_sd_configs
5. vmagent refuse refresh_interval dans un *_sd_configs
-promscrape.fileSDCheckInterval. Un test le vérifie.6. vmauth ajoute le chemin de la requête à url_prefix
6. vmauth ajoute le chemin de la requête à url_prefix
url_prefix contenant déjà /api/v1/write produit /api/v1/write/api/v1/write, un 400, et la perte silencieuse de toutes les métriques d’un cluster.Ce qui l’empêche maintenant: ne jamais mettre de chemin dans url_prefix. Un test le vérifie.7. Alertmanager tourne sous nobody
7. Alertmanager tourne sous nobody
alertmanager.yml en 0600 appartenant à l’administrateur le fait échouer en permission denied et redémarrer en boucle. Zéro alerte pendant une journée entière.Ce qui l’empêche maintenant: les configurations générées sont en 0644. Un test le vérifie.8. promtool query instant NE VALIDE PAS la syntaxe
8. promtool query instant NE VALIDE PAS la syntaxe
promtool check rules, qui analyse réellement.9. cmd | grep -q FAILED && false || true renvoie toujours vrai
9. cmd | grep -q FAILED && false || true renvoie toujours vrai
false s’exécute puis || true le rattrape: sortie 0. Sinon || true renvoie 0 aussi. Le test des 261 règles a affiché OK sur des règles fausses pendant des semaines.Ce qui l’empêche maintenant: lire le code de sortie de l’outil, jamais la présence d’un mot dans sa sortie.10. Du Python en ligne dans le Makefile casse à l'exécution
10. Du Python en ligne dans le Makefile casse à l'exécution
scripts/. make valider refuse le reste.11. tar sur macOS crée des jumeaux ._*
11. tar sur macOS crée des jumeaux ._*
.json d’un dossier et vmalert charge TOUS les .yml: un jumeau au mauvais endroit est lu comme une configuration.Ce qui l’empêche maintenant: préfixer par COPYFILE_DISABLE=1. make ranger nettoie ceux qui sont déjà là.12. Les regex de vmagent sont entièrement ancrées
12. Les regex de vmagent sont entièrement ancrées
coredns.* ne correspond PAS à rke2-coredns-rke2-coredns-abc. Sur RKE2, les noms portent des préfixes de distribution, et cinq panneaux sont restés vides à cause de ça.Ce qui l’empêche maintenant: envelopper les filtres de nom: .*coredns.*.