Journaliser les erreurs de service-tableau et du collecteur (STUD-1157) #1623
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/stud-1157-rust-logs"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Carte t_22cdd8c8. Aucun changement de champ d'API :
/api/processuset/api/calendrierrendent exactement les mêmes corps ; le front n'a rien à faire.Cause. Les journaux systemd des deux services Rust de
_tableau/rustne portaient que leurs lignes de démarrage. Relevé du 13/10 au soir (ticket STUD-1157) : un collecteur injoignable, un relevé trop vieux et une réponse 5xx ne laissaient rien dansjournalctl -u service-tableaunijournalctl -u collecteur-processus.Remède. Un module
collecteur::erreurs— une ligne par erreur,journalctl -u <unité> | grep ERREUR-— et ses appels sur chaque chemin d'erreur :ERREUR-COLLECTEUR source=collecteur url=…: le 130 injoignable ou sa réponse refusée (5xx, JSON illisible), une ligne par tentative ;ERREUR-COLLECTEUR source=etat-studio url=…: la base des dates du 130 injoignable ou refusée ;ERREUR-RELEVE-VIEUX age_s=… seuil_s=45: une seule ligne par épisode de silence (le seuil du bandeau « Collecteur muet depuis N ») ;age_s=jamaissi rien n'a jamais été reçu ;ERREUR-5XX code=… chemin=… methode=… raison=…: 500 du service (état partagé empoisonné), 503 deGET /conso.json;ERREUR-TACHES machine=…:systemctlillisible (les deux services) ;ERREUR-CONSO raison=…: journaux de Claude Code du conteneur introuvables, une ligne par épisode ;ERREUR-ECOUTE adresse=…: écoute refusée au démarrage (remplace uneprintln!sans heure) ;ERREUR-HISTORIQUE fichier=…: écriture de la tendance de la semaine refusée.Format aligné sur le serveur Python du même ticket :
<ISO 8601 UTC> ERREUR-<TAG> cle=valeur, aplati sur une ligne (un saut de ligne devient|), borné à 400 caractères, sans secret (jamais un corps de requête, jamais un en-tête).Preuves.
cargo test --release --locked: 47 cas, 0 échec, 9 nouveaux — la forme des lignes (collecteur/tests/erreurs.rs) et les vrais binaires lancés avec l'environnement de la panne (service/tests/journal_erreurs.rs,collecteur/tests/journal_erreurs.rs: collecteur injoignable, réponse 500 en face, relevé qui vieillit jusqu'à 45 s,systemctlabsent, écoute refusée, et le silence d'un relevé sain).cargo build --release --locked: propre, aucun avertissement.python3 _tableau/garde_fous.py: « rien à redire » ;python3 _tableau/test_deployer_rust.py: vert.Ce que les bancs ne couvrent pas, dit franchement : la ligne d'une réponse 5xx servie (500 sur mutex empoisonné, 503 de la première passe de consommation) n'est pas rejouée de bout en bout — sa forme est tenue par
collecteur/tests/erreurs.rs, et la fenêtre du 503 ne se force pas depuis un banc. Et l'apparition des lignes dans les journaux systemd du 132 et du 130 ne sera mesurée qu'après déploiement (cargo testne déploie rien ; je ne déploie pas).Doc.
_tableau/LXC-132.md, section « Ce que le journal dit, et comment le lire » (motifs, seuils, comment lire).À savoir pour la fusion.
_tableau/rust/service/src/main.rsest aussi touché par la carte t_b9f385fb (branche localehermes/stud-1157-backend-erreurs, POST/api/erreurs-page), non poussée : la seconde des deux à fusionner portera un conflit, surmain.rsseulement (mon diff y ajoute des appelserreurs::…, aucun déplacement).Hors périmètre, mesuré :
_tableau/lancer-tests.py --sans-couverturesort en 1 sur_tableau/test_deploy_132.py(« 3 échec(s) ») — déjà rouge surorigin/main, à l'identique, sans rapport avec cette branche (rejoué sur un arbre détaché d'origin/main).Fusion réservée à l'opérateur (
relupuisfusion-auto) ; cette PR n'est pas fusionnée par son auteur.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.73ad68199e76deba8dc376deba8dc3b243cc75effusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.b243cc75ef502a11ffe4Fusionnée automatiquement par
fusion-auto(forge) : CI verte, sans conflit.