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
77 lines
3.5 KiB
YAML
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.
|