fix(alerting): alerte fiable sur l'échec de la vidéo quotidienne du brief
Helm Charts / Detect changed charts (push) Successful in 2m50s
Helm Charts / Detect changed charts (pull_request) Successful in 18s
Helm Charts / Library charts tool (push) Has been skipped
Helm Charts / Application charts pgcat (pull_request) Has been skipped
Helm Charts / Library charts tool (pull_request) Has been skipped
Helm Charts / Application charts pgcat (push) Has been skipped

ProspectionBriefNotSent (pushed==0, severity info) ne couvrait que la
livraison et déclenchait à tort quand l'étape brief était volontairement
sautée (metrics.py émet brief_rendered=0 aussi sur skip — seul
step_status{step="brief"} distingue skip(2) d'erreur(0)).

Remplacé par deux règles warning, gardées contre le skip :
- ProspectionBriefFailed : rendered==0 AND step_status{brief}!=2 → la
  PRODUCTION de la vidéo a échoué (TTS/ffmpeg/PIL ou erreur amont) ;
- ProspectionBriefNotSent : pushed==0 AND rendered==1 → vidéo produite
  mais PAS livrée sur Telegram (token/chat_id/API).

Expressions validées en live sur Prometheus (match on(job) prouvé par
requête témoin, les deux exprs vides sur l'état sain du jour). En-tête du
groupe mis à jour : la livraison AM→Telegram est câblée et testée.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
2026-07-23 22:05:45 +02:00
co-authored by Claude Opus 4.8
parent 65ff6fcc34
commit 8e236230d3
+22 -8
View File
@@ -1121,9 +1121,9 @@ prometheus: &prometheus_config
alerting_rules.yml: alerting_rules.yml:
groups: groups:
# Pipeline prospection (métriques poussées au Pushgateway job=prospection en fin de # Pipeline prospection (métriques poussées au Pushgateway job=prospection en fin de
# run). NB : la LIVRAISON des alertes (Alertmanager → Telegram/…) n'est pas encore # run). Livraison : Alertmanager → receiver telegram (chaîne testée live 2026-07-10,
# câblée dans ce cluster — ces règles s'évaluent et sont visibles dans Prometheus # firing + resolved reçus). Visibles aussi dans Prometheus /alerts + le dashboard
# /alerts + le dashboard Grafana « Prospection » (panneau Alertes actives). # Grafana « Prospection » (panneau Alertes actives).
- name: prospection - name: prospection
rules: rules:
- alert: ProspectionRunStale - alert: ProspectionRunStale
@@ -1162,15 +1162,29 @@ prometheus: &prometheus_config
annotations: annotations:
summary: "Prospection — 0 offre (mission) collectée" summary: "Prospection — 0 offre (mission) collectée"
description: "Aucune offre au dernier run : collecte France Travail / Free-Work potentiellement cassée." description: "Aucune offre au dernier run : collecte France Travail / Free-Work potentiellement cassée."
- alert: ProspectionBriefNotSent # Vidéo quotidienne : deux modes d'échec distincts, tous deux gardés contre le
expr: prospection_brief_telegram_pushed == 0 # skip volontaire — metrics.py met brief_rendered=0 aussi quand l'étape est
# SAUTÉE (cadence/kill-switch), seul step_status distingue skip(2) d'erreur(0).
- alert: ProspectionBriefFailed
# PRODUCTION en échec : l'étape brief a tourné mais n'a pas rendu la vidéo.
expr: prospection_brief_rendered == 0 and on(job) prospection_step_status{step="brief"} != 2
for: 15m for: 15m
labels: labels:
severity: info severity: warning
app: prospection app: prospection
annotations: annotations:
summary: "Prospection — brief non poussé sur Telegram" summary: "Prospection — la vidéo du brief quotidien n'a pas été produite"
description: "Le brief vidéo n'a pas été diffusé sur Telegram au dernier run." description: "L'étape brief a échoué au dernier run (rendu vidéo KO : TTS/ffmpeg/PIL ou erreur amont). Voir les logs du CronJob prospection."
- alert: ProspectionBriefNotSent
# LIVRAISON en échec : vidéo produite mais pas poussée sur Telegram.
expr: prospection_brief_telegram_pushed == 0 and prospection_brief_rendered == 1
for: 15m
labels:
severity: warning
app: prospection
annotations:
summary: "Prospection — brief produit mais non poussé sur Telegram"
description: "La vidéo du brief a été rendue mais l'envoi Telegram a échoué (token/chat_id/API). Voir les logs du CronJob prospection."
# groups: # groups:
# - name: Instances # - name: Instances
# rules: # rules: