Skip to content

feat(infra): add monitoring module with alert policies (D105, D106, D109) - #82

Merged
GMartin-Data merged 1 commit into
mainfrom
feat/monitoring-module
May 23, 2026
Merged

GMartin-Data merged 1 commit into
mainfrom
feat/monitoring-module

Conversation

@GMartin-Data

Copy link
Copy Markdown
Owner

Contexte

Implémente le monitoring de production des Cloud Run Jobs datatalent-ingestion
et datatalent-dbt (D105, D106). Couvre l'angle mort critique identifié au
sortir de S9 : pipeline qui plante silencieusement → dashboard Looker Studio
qui affiche des marts stales sans signal visible.

US13 (création concomitante D105/D106). T13.1, T13.3, T13.4, T13.5 closes.
T13.2 (Discord) écartée par D106.

Décisions techniques

Sujet Choix Justification
Niveau de monitoring Niveau 1 strict (métriques natives) D105 — effort <2h vs 5-13h pour Niveau 2/3, suffisant pour la soutenance
Type de channel Email vers mailing list Google Groups D106 — seul channel natif sans infra additionnelle ; mailing list = gestion abonnés hors Terraform
Métrique run.googleapis.com/job/completed_execution_count filtrée result="failed" Native Cloud Run, granularité par job
evaluation_missing_data EVALUATION_MISSING_DATA_INACTIVE Les runs sont hebdomadaires : entre deux runs, la métrique est absente. Sans ce paramètre, l'alerte resterait ouverte en permanence
duration 60s Minimum accepté par l'API GCP en combinaison avec evaluation_missing_data (l'API refuse 0s dans ce cas)

Changements

  • infra/modules/monitoring/{main,variables,outputs}.tf (création) — 1 notification channel + 2 alert policies, 4 variables exposées (project_id, notification_email, ingestion_job_name, dbt_job_name), 1 output (notification_channel_id).
  • infra/main.tf — câblage du module après module.cloud_run_dbt + ajout de monitoring.googleapis.com à la liste des APIs activées.

Incident notable durant l'apply

L'alerte initialement prévue par D105 sur l'échec du Cloud Scheduler
datatalent-ingestion-scheduler n'est pas implémentable en Niveau 1 :
la métrique cloudscheduler.googleapis.com/job/attempt_count supposée
n'existe pas (Cloud Scheduler s'observe via Cloud Logging, pas via métriques
natives). Décision amendée en D109 : abandon de l'alerte côté Niveau 1,
report en Niveau 2 (log-based metric) Bloc 2. Mitigation humaine intermédiaire
(check console hebdo) tracée pour éviter la dérive silencieuse.

Voir notes-projet.md D109 pour le détail doctrinal et la procédure de
bascule future.

Validation

terraform plan zéro diff post-apply (D31)

$ terraform plan
...
No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration
and found no differences, so no changes are needed.

Ressources créées côté GCP

$ gcloud alpha monitoring policies list --project=datatalent-glaq-2
DISPLAY_NAME                    ENABLED  COMBINER
dbt job execution failed        True     OR
Ingestion job execution failed  True     OR

$ gcloud alpha monitoring channels list --project=datatalent-glaq-2
DISPLAY_NAME               TYPE   ENABLED  EMAIL_ADDRESS
DataTalent alerts (email)  email  True     datatalent-alerts@googlegroups.com

Démo d'incident end-to-end (T13.5)

Méthode : override command=/bin/false sur datatalent-dbt via gcloud,
puis gcloud run jobs execute. Revert via terraform apply (le champ
command n'est pas dans lifecycle.ignore_changes, contrairement à image).

$ gcloud run jobs executions list --job=datatalent-dbt
NAME                  START_TIME                   COMPLETION_TIME              STATUS
datatalent-dbt-hwbzj  2026-05-23T07:46:41Z         2026-05-23T07:47:11Z         False

Mail d'alerte reçu sur datatalent-alerts@googlegroups.com ~4 min après
l'échec de l'exécution. Chaîne complète validée : failed execution →
métrique Monarch → condition_threshold → notification channel → Google
Groups → Gmail.

terraform plan post-revert : zéro diff confirmé.

Décisions liées

  • D105 — Monitoring Niveau 1 strict, 3 alertes natives (amendée par D109)
  • D106 — Notification channel email + mailing list Google Groups
  • D109 — Abandon alerte scheduler Niveau 1, report Niveau 2

Refs : T13.1, T13.3, T13.4, T13.5.

3 resources: 1 email notification channel (D106) + 2 alert policies
on failed_executions for datatalent-ingestion and datatalent-dbt (D105).
Alert on Cloud Scheduler abandoned — D109 amends D105.
@GMartin-Data
GMartin-Data merged commit 679e12c into main May 23, 2026
6 checks passed
@GMartin-Data
GMartin-Data deleted the feat/monitoring-module branch May 23, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant