2026-09-14 11:35:14 -04:00
|
|
|
---
|
|
|
|
|
# Metriques derivees du role. Le pendant de `meta/supervision.yml`, et son contraire.
|
|
|
|
|
#
|
|
|
|
|
# POURQUOI UN SECOND FICHIER, ET PAS UNE SECTION DU PREMIER.
|
|
|
|
|
#
|
|
|
|
|
# Les deux repondent a des questions DIFFERENTES, sur des donnees differentes, pour des
|
|
|
|
|
# consommateurs differents :
|
|
|
|
|
#
|
|
|
|
|
# `supervision.yml` -> une SONDE rend un VERDICT avec un TTL. « est-ce casse ? »
|
|
|
|
|
# `metriques.yml` -> un EXPORTATEUR expose une SERIE. « depuis quand,
|
|
|
|
|
# et vers ou ? »
|
|
|
|
|
#
|
|
|
|
|
# `docs/supervision-conception.md` le dit deja dans l'autre sens : « une metrique a seuil
|
|
|
|
|
# appartient a Prometheus et Grafana ; melanger les deux rendrait les deux moins
|
|
|
|
|
# lisibles ». Ce fichier est l'autre moitie de cette phrase.
|
|
|
|
|
#
|
|
|
|
|
# CE QUE LE MOTEUR EN DERIVE : la cible de scrutation de Prometheus
|
|
|
|
|
# (`serveur_prometheus_cibles_supplementaires`, un crochet qui existait et que personne ne
|
|
|
|
|
# remplissait) et les panneaux du tableau de bord.
|
|
|
|
|
#
|
|
|
|
|
# CE QU'IL N'EN DERIVE PAS, ET C'EST VOULU : le FLUX. Le port 9187 doit s'ouvrir depuis
|
|
|
|
|
# l'observatoire, et c'est `meta/flux.yml` qui le declare — la ou vivent deja tous les
|
|
|
|
|
# flux de ce role. Deux fichiers pour un meme fait finiraient par diverger ; on l'a vu
|
|
|
|
|
# assez souvent ici.
|
|
|
|
|
|
|
|
|
|
# L'EXPORTATEUR : ce que le role installe pour qu'il y ait quelque chose a lire.
|
|
|
|
|
exportateur:
|
|
|
|
|
paquet: prometheus-postgres-exporter
|
|
|
|
|
service: prometheus-postgres-exporter
|
|
|
|
|
port: 9187
|
|
|
|
|
job: postgresql
|
chiffrement : metriques et journaux du site en TLS, et la frontiere certifiee par sa propre autorite
Metriques et journaux (CHANGELOG 142). Le site pose les quatre interrupteurs TLS
que chaque locataire pose dans ses group_vars : node_exporter et Loki servaient
en HTTP sur les neuf VM, le certificat etait la, inutilise. test_parite_tls_site.py
compare desormais le site aux locataires. Les hyperviseurs poussent leurs
journaux en HTTPS verifie, avec la racine du site comme simple fichier.
L'exportateur PostgreSQL sert en HTTPS partout, sur l'interrupteur de PostgreSQL
lui-meme, que Prometheus lit pour choisir son schema.
La frontiere (CHANGELOG 143). Une autorite subordonnee signee par la racine du
site, bornee (pathlen 0, noms sous le domaine et adresses du site, contrainte
critique), cle nee sur la boite (scripts/frontiere_pki.py). Syslog vers Loki en
TLS mutuel (seule la frontiere peut ecrire), exportateur en HTTPS, interface web
sur le certificat de services ; les clients d'API verifient la frontiere contre
la racine du site. La lecture du magasin passe par config.xml : l'API de
recherche renvoie les cles privees.
Deploye et mesure au site, chez les deux locataires et sur la frontiere ; 95 preuves.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 14:25:28 -04:00
|
|
|
# LE SCHEMA SUIT UN INTERRUPTEUR DE LA CIBLE (2026-10-12). Prometheus lit cette variable
|
|
|
|
|
# dans les hostvars de chaque hote du groupe : toutes vraies, il collecte en HTTPS et
|
|
|
|
|
# verifie contre l'autorite ; sinon en HTTP. Le role, lui, sert en TLS sur le meme
|
|
|
|
|
# interrupteur — une seule valeur decide des deux bouts.
|
|
|
|
|
tls_si: serveur_postgresql_tls_actif
|
2026-09-14 11:35:14 -04:00
|
|
|
|
|
|
|
|
# LES PANNEAUX : ce qui merite d'etre REGARDE DANS LE TEMPS.
|
|
|
|
|
#
|
|
|
|
|
# Ni un par metrique — l'exportateur en publie plus de deux cents — ni un par role. Un par
|
|
|
|
|
# QUESTION QU'ON SE POSE VRAIMENT quand quelque chose commence a aller moins bien.
|
|
|
|
|
#
|
|
|
|
|
# LE CRITERE : une serie a sa place ici si elle PRECEDE un verdict ou si elle n'en aura
|
|
|
|
|
# jamais. Ce qui bascule d'un coup appartient a Icinga ; ce qui derive lentement n'a que
|
|
|
|
|
# le graphe pour se faire voir.
|
|
|
|
|
panneaux:
|
|
|
|
|
- titre: "Connexions utilisées"
|
|
|
|
|
expr: "sum by (instance) (pg_stat_activity_count)"
|
|
|
|
|
unite: connexions
|
|
|
|
|
raison: >-
|
|
|
|
|
La sonde Icinga crie a 70 % et a 90 %. Ce panneau dit ce qu'elle ne peut pas dire :
|
|
|
|
|
depuis QUAND ca monte. Une base qui passe de 20 a 60 connexions en trois semaines
|
|
|
|
|
n'a rien casse — elle annonce la date ou elle cassera.
|
|
|
|
|
|
|
|
|
|
- titre: "Taux de succès du cache"
|
|
|
|
|
expr: >-
|
|
|
|
|
sum by (instance) (rate(pg_stat_database_blks_hit[5m]))
|
|
|
|
|
/ clamp_min(sum by (instance) (rate(pg_stat_database_blks_hit[5m])
|
|
|
|
|
+ rate(pg_stat_database_blks_read[5m])), 1)
|
|
|
|
|
unite: ratio
|
|
|
|
|
raison: >-
|
|
|
|
|
CELUI-LA N'AURA JAMAIS DE VERDICT, et c'est pourquoi il compte. Quand les donnees
|
|
|
|
|
depassent `shared_buffers`, la base va chercher sur disque de plus en plus souvent.
|
|
|
|
|
Rien ne casse, rien n'alerte : tout devient lent. C'est exactement la panne qu'un
|
|
|
|
|
graphe voit et qu'une sonde ne verra jamais.
|
|
|
|
|
|
|
|
|
|
- titre: "Taille des bases"
|
|
|
|
|
expr: "sum by (datname) (pg_database_size_bytes)"
|
|
|
|
|
unite: octets
|
|
|
|
|
raison: >-
|
|
|
|
|
La croissance est la seule chose qu'on ne peut pas mesurer apres coup. Savoir qu'une
|
|
|
|
|
base a double en deux mois se decide deux mois plus tot — ou jamais.
|
|
|
|
|
|
|
|
|
|
- titre: "Transactions par seconde"
|
|
|
|
|
expr: >-
|
|
|
|
|
sum by (instance) (rate(pg_stat_database_xact_commit[5m])
|
|
|
|
|
+ rate(pg_stat_database_xact_rollback[5m]))
|
|
|
|
|
unite: tps
|
|
|
|
|
raison: >-
|
|
|
|
|
Le contexte des trois autres. Des connexions qui montent a charge CONSTANTE ne
|
|
|
|
|
disent pas la meme chose que des connexions qui montent parce que le travail a
|
|
|
|
|
double — et le geste qui suit n'est pas le meme non plus.
|