fiche : les panneaux etaient caches derriere l exportateur
Le tableau des panneaux vivait DANS la condition de l exportateur. Le premier role a declarer des panneaux sans exportateur — client_metrique, dont le job node est universel — affichait « aucun exportateur declare » et cachait ses quatre panneaux. Une fiche qui tait ce qu un role declare est pire qu une fiche absente : elle affirme que rien n existe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
This commit is contained in:
parent
311f33d6f6
commit
392da4d3f5
5 changed files with 44 additions and 10 deletions
11
CHANGELOG.md
11
CHANGELOG.md
|
|
@ -85,6 +85,17 @@ Eprouvee dans les deux sens.
|
||||||
`docs/supervision-conception.md` porte desormais la moitie « metriques » a cote de la
|
`docs/supervision-conception.md` porte desormais la moitie « metriques » a cote de la
|
||||||
moitie « sondes ».
|
moitie « sondes ».
|
||||||
|
|
||||||
|
### Et la fiche cachait ce que le role declarait
|
||||||
|
|
||||||
|
`fiche_role.py` imbriquait le tableau des panneaux DANS la condition de l'exportateur. Le
|
||||||
|
premier role a declarer des panneaux sans exportateur affichait donc « aucun exportateur
|
||||||
|
declare » — et cachait ses quatre panneaux.
|
||||||
|
|
||||||
|
Une fiche qui tait ce qu'un role declare est pire qu'une fiche absente : elle affirme que
|
||||||
|
rien n'existe. Les deux moities sont desormais lues separement, et chacune dit ce qu'elle
|
||||||
|
trouve — y compris « series collectees, aucun panneau declare : personne ne les regarde
|
||||||
|
encore », qui est une carte de ce qui reste a faire.
|
||||||
|
|
||||||
### Ce qui reste
|
### Ce qui reste
|
||||||
|
|
||||||
Le tableau de PostgreSQL est assemble, charge, et **vide** : l'exportateur exige
|
Le tableau de PostgreSQL est assemble, charge, et **vide** : l'exportateur exige
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@
|
||||||
| P57 | Comptes en prose : les chiffres du depot sur lui-meme | — | ✅ OK | Les comptes ecrits en prose correspondent a la mesure (77 preuves, 68 roles, 41 groupes). |
|
| P57 | Comptes en prose : les chiffres du depot sur lui-meme | — | ✅ OK | Les comptes ecrits en prose correspondent a la mesure (77 preuves, 68 roles, 41 groupes). |
|
||||||
| P58 | Habilitations : chaque service dit a quel GROUPE, et par quoi | — | ✅ OK | 8 habilitation(s) declarees, toutes nommant un groupe, un mecanisme connu et une raison ; les `role-realm` sont projetees. |
|
| P58 | Habilitations : chaque service dit a quel GROUPE, et par quoi | — | ✅ OK | 8 habilitation(s) declarees, toutes nommant un groupe, un mecanisme connu et une raison ; les `role-realm` sont projetees. |
|
||||||
| P59 | Enumerations annoncees : le nombre correspond a ce qui suit | — | ✅ OK | 2 enumeration(s) annoncee(s) correspondent a ce qu'elles annoncent (formes non ambigues seulement). |
|
| P59 | Enumerations annoncees : le nombre correspond a ce qui suit | — | ✅ OK | 2 enumeration(s) annoncee(s) correspondent a ce qu'elles annoncent (formes non ambigues seulement). |
|
||||||
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `aac74f6` (publie le 2026-09-14). |
|
| P60 | Wiki publie : la forge sert ce que le depot dit | AFF-002 | ✅ OK | Le wiki publie correspond au depot : `wiki/` n'a pas bouge depuis `311f33d` (publie le 2026-09-14). |
|
||||||
| P61 | Schema du plan : il decrit tout ce que les plans contiennent | AFF-033 | ✅ OK | Le schema decrit 47 champ(s) sur 6 registres ; il couvre tout ce que les plans reels contiennent, et la FORME de chaque champ (scalaire / objet / table) corresp |
|
| P61 | Schema du plan : il decrit tout ce que les plans contiennent | AFF-033 | ✅ OK | Le schema decrit 47 champ(s) sur 6 registres ; il couvre tout ce que les plans reels contiennent, et la FORME de chaque champ (scalaire / objet / table) corresp |
|
||||||
| P62 | Schema du plan : il decrit tout ce que le MOTEUR accepte | AFF-033 | ✅ OK | Les 4 validateurs n'acceptent aucun champ que le schema ignore (applications:8, bases_donnees:4, domaines_publics:5, serveurs:3 champ(s) lus par validateur). |
|
| P62 | Schema du plan : il decrit tout ce que le MOTEUR accepte | AFF-033 | ✅ OK | Les 4 validateurs n'acceptent aucun champ que le schema ignore (applications:8, bases_donnees:4, domaines_publics:5, serveurs:3 champ(s) lus par validateur). |
|
||||||
| P63 | cloud-init nait avec la VM et ne lui survit pas | — | ✅ OK | cloud-init est au gabarit (la premiere seconde), absent du socle (pas de va-et-vient), et retire par le durcissement — avec la garde qui verifie que le reseau s |
|
| P63 | cloud-init nait avec la VM et ne lui survit pas | — | ✅ OK | cloud-init est au gabarit (la premiere seconde), absent du socle (pas de va-et-vient), et retire par le durcissement — avec la garde qui verifie que le reseau s |
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
# Ecrit par `make wiki-publier`, lu par la preuve P60. Ne pas editer a la main.
|
# Ecrit par `make wiki-publier`, lu par la preuve P60. Ne pas editer a la main.
|
||||||
remote: ssh://git@eregion.chezlepro.ca:2222/Alliance-Boreale/Set-OPS-Public.wiki.git
|
remote: ssh://git@eregion.chezlepro.ca:2222/Alliance-Boreale/Set-OPS-Public.wiki.git
|
||||||
source: aac74f6
|
source: 311f33d
|
||||||
date: 2026-09-14
|
date: 2026-09-14
|
||||||
|
|
|
||||||
|
|
@ -132,16 +132,32 @@ def fiche(role: str) -> str:
|
||||||
"aucune mérite qu'on se demande pourquoi — voir `docs/supervision-conception.md`.*")
|
"aucune mérite qu'on se demande pourquoi — voir `docs/supervision-conception.md`.*")
|
||||||
L.append("")
|
L.append("")
|
||||||
|
|
||||||
|
# LES DEUX MOITIES DE `metriques.yml` SONT INDEPENDANTES, ET LA FICHE LES LISAIT
|
||||||
|
# IMBRIQUEES (corrige le 2026-09-14). Le tableau des panneaux vivait DANS la condition
|
||||||
|
# de l'exportateur : un role qui declare des panneaux SANS exportateur — comme
|
||||||
|
# `client_metrique`, dont le job `node` est universel et ecrit ailleurs — affichait
|
||||||
|
# « aucun exportateur declare » et cachait ses quatre panneaux.
|
||||||
|
#
|
||||||
|
# Une fiche qui tait ce qu'un role declare est pire qu'une fiche absente : elle
|
||||||
|
# affirme que rien n'existe.
|
||||||
L += ["## Ce qu'il expose en séries", ""]
|
L += ["## Ce qu'il expose en séries", ""]
|
||||||
if (met or {}).get("exportateur"):
|
expo = (met or {}).get("exportateur")
|
||||||
e = met["exportateur"]
|
panneaux = (met or {}).get("panneaux") or []
|
||||||
L += [f"Exportateur `{e.get('paquet')}` — port **{e.get('port')}**, "
|
if expo:
|
||||||
f"job `{e.get('job')}`.", "",
|
L += [f"Exportateur `{expo.get('paquet')}` — port **{expo.get('port')}**, "
|
||||||
"| panneau | unité | pourquoi on le regarde |", "|---|---|---|"]
|
f"job `{expo.get('job')}`.", ""]
|
||||||
for p in met.get("panneaux", []):
|
elif panneaux:
|
||||||
L.append(f"| {p['titre']} | {p.get('unite', '—')} | {p.get('raison', '').strip()} |")
|
L += ["*Aucun exportateur propre : les séries viennent d'un collecteur universel "
|
||||||
|
"(`node_exporter`), déclaré une seule fois.*", ""]
|
||||||
else:
|
else:
|
||||||
L.append("*Aucun exportateur déclaré — voir `docs/metriques-conception.md`.*")
|
L.append("*Aucun exportateur déclaré — voir `docs/metriques-conception.md`.*")
|
||||||
|
if panneaux:
|
||||||
|
L += ["| panneau | unité | pourquoi on le regarde |", "|---|---|---|"]
|
||||||
|
for p in panneaux:
|
||||||
|
L.append(f"| {p['titre']} | {p.get('unite', '—')} | {p.get('raison', '').strip()} |")
|
||||||
|
elif expo:
|
||||||
|
L.append("*Séries collectées, aucun panneau déclaré : personne ne les regarde "
|
||||||
|
"encore.*")
|
||||||
L.append("")
|
L.append("")
|
||||||
|
|
||||||
L += ["## Ce qu'il coûte, et qui entre", ""]
|
L += ["## Ce qu'il coûte, et qui entre", ""]
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,14 @@ graph LR
|
||||||
|
|
||||||
## Ce qu'il expose en séries
|
## Ce qu'il expose en séries
|
||||||
|
|
||||||
*Aucun exportateur déclaré — voir `docs/metriques-conception.md`.*
|
*Aucun exportateur propre : les séries viennent d'un collecteur universel (`node_exporter`), déclaré une seule fois.*
|
||||||
|
|
||||||
|
| panneau | unité | pourquoi on le regarde |
|
||||||
|
|---|---|---|
|
||||||
|
| Mémoire disponible (part du total) | ratio | CELUI-LA COMPTE DEPUIS QUE LE BALLON EST ACTIF. L'hyperviseur reprend de la memoire a une VM qui n'en a pas besoin — silencieusement, 100 Mio par cycle. La VM ne voit pas son plafond bouger : elle voit sa marge fondre. Aucun verdict ne peut se poser la-dessus, parce qu'il n'y a pas de seuil juste : c'est la PENTE qui dit si le plancher a ete pris trop bas. |
|
||||||
|
| Espace libre — le point de montage le plus serré | octets | La sonde `sante` crie quand un seuil est franchi. Ce panneau dit ce qu'elle ne peut pas dire : DANS COMBIEN DE TEMPS. Un disque qui perd 2 Go par semaine n'a rien casse — il annonce la date ou il cassera, et c'est la seule chose qu'on ne peut pas mesurer apres coup. |
|
||||||
|
| Charge par cœur | nombre | NORMALISEE, sinon elle ne se compare pas : une charge de 4 est confortable sur huit coeurs et desastreuse sur deux. Au-dessus de 1, la machine attend plus qu'elle ne travaille. C'est le contexte des trois autres — une memoire qui fond a charge CONSTANTE ne dit pas la meme chose qu'une memoire qui fond parce que le travail a double. |
|
||||||
|
| Trafic réseau entrant | octets_par_seconde | Il n'aura JAMAIS de verdict, et c'est pourquoi il est la. Aucun seuil de trafic n'est juste : ce qui se lit, c'est le changement de FORME — un plateau la ou il y avait des vagues, un creux aux heures ouvrables. Une sauvegarde qui ne part plus et un flux qu'on vient de fermer se ressemblent ici, et ne se voient nulle part ailleurs. |
|
||||||
|
|
||||||
## Ce qu'il coûte, et qui entre
|
## Ce qu'il coûte, et qui entre
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue