Set-OPS-Public/roles/serveur_postgresql/meta/metriques.yml
Daniel Allaire f4d57009ab meta/metriques.yml : le role declare son exportateur, le moteur derive
Aucune metrique de SERVICE n etait collectee — seulement du systeme. Le crochet
serveur_prometheus_cibles_supplementaires existait, documente, et personne ne le
remplissait.

Le pendant de meta/supervision.yml et son contraire : une sonde rend un verdict
avec un TTL, un exportateur expose une serie. Est-ce casse, contre depuis quand
et vers ou.

Le critere des panneaux : une serie a sa place si elle PRECEDE un verdict ou si
elle n en aura JAMAIS. Le taux de succes du cache n en aura jamais — quand les
donnees depassent shared_buffers, rien ne casse et tout devient lent.

Compte en lecture seule (pg_monitor), et flux en clair avec sa dette inscrite.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-14 11:35:14 -04:00

77 lines
3.5 KiB
YAML

---
# 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
# 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.