feat(alerting): livraison Telegram des alertes via Alertmanager #9

Merged
arcodange merged 1 commits from arcodange/am-telegram into main 2026-07-08 23:20:33 +02:00
Owner

Contexte

Les règles d'alerte du groupe prospection (tools/prometheus/values.yamlserverFiles.alerting_rules.yml) s'évaluaient déjà dans Prometheus, mais ne notifiaient nulle part : server.alertmanagers était vide et l'Alertmanager n'avait aucun config (donc aucun receiver).

Cette PR câble la livraison end-to-end vers le bot Telegram de prospection, en réutilisant telegram_configs natif d'Alertmanager.

Changements

1. Vault IaC (hashicorp-vault/iac/main.tf)

  • Policy read-only alertmanager-telegram sur kvv2/data/prospection/telegram.
  • Rôle k8s alertmanager (SA prometheus-alertmanager, ns tools, audience vault), rattaché à vault_auth_backend.kubernetes.
  • Appliqué par le workflow vault.yaml (OIDC → Vault), pas par ArgoCD.

2. VSO (prometheus/templates/vault-telegram.yaml, nouveau)

  • Le Secret prospection-telegram est namespace-scoped (prospection) et non réutilisable dans tools. On resynchronise donc le même chemin kvv2 vers un Secret alertmanager-telegram dans tools.
  • VaultAuth (rôle alertmanager) + VaultStaticSecret (mount kvv2, path prospection/telegram, kv-v2, refreshAfter: 1h).
  • rolloutRestartTargets sur le StatefulSet prometheus-alertmanager (ceinture + bretelles ; Alertmanager relit bot_token_file à chaque envoi de toute façon).

3. Prometheus values (prometheus/values.yaml)

  • server.alertmanagersprometheus-alertmanager:9093.
  • alertmanager.config : route (group_by alertname/app) + receiver telegram (bot_token_file sur le fichier monté, chat_id inline non sensible, parse_mode: HTML, send_resolved: true).
  • alertmanager.extraSecretMounts : montage du Secret alertmanager-telegram sur /etc/alertmanager/telegram.

Vérifications

  • helm template du chart : le ConfigMap prometheus-alertmanager contient bien le receiver telegram, la config Prometheus liste l'Alertmanager, et le StatefulSet monte le Secret sur /etc/alertmanager/telegram (readOnly).
  • YAML validés (yaml.safe_load_all), tofu fmt clean.
  • Additif : ni grafana (fix startupProbe récent) ni les règles d'alerte existantes ne sont modifiés.

Suite (hors PR)

  • vault.yaml doit être dispatché (handoff OIDC) pour créer le rôle Vault avant que VSO puisse synchroniser le Secret.

🤖 Generated with Claude Code

## Contexte Les règles d'alerte du groupe `prospection` (`tools/prometheus/values.yaml` → `serverFiles.alerting_rules.yml`) s'évaluaient déjà dans Prometheus, mais **ne notifiaient nulle part** : `server.alertmanagers` était vide et l'Alertmanager n'avait aucun `config` (donc aucun receiver). Cette PR câble la **livraison end-to-end** vers le bot Telegram de prospection, en réutilisant `telegram_configs` natif d'Alertmanager. ## Changements **1. Vault IaC (`hashicorp-vault/iac/main.tf`)** - Policy read-only `alertmanager-telegram` sur `kvv2/data/prospection/telegram`. - Rôle k8s `alertmanager` (SA `prometheus-alertmanager`, ns `tools`, audience `vault`), rattaché à `vault_auth_backend.kubernetes`. - Appliqué par le workflow `vault.yaml` (OIDC → Vault), pas par ArgoCD. **2. VSO (`prometheus/templates/vault-telegram.yaml`, nouveau)** - Le Secret `prospection-telegram` est namespace-scoped (`prospection`) et non réutilisable dans `tools`. On resynchronise donc le **même chemin kvv2** vers un Secret `alertmanager-telegram` dans `tools`. - `VaultAuth` (rôle `alertmanager`) + `VaultStaticSecret` (mount `kvv2`, path `prospection/telegram`, kv-v2, `refreshAfter: 1h`). - `rolloutRestartTargets` sur le StatefulSet `prometheus-alertmanager` (ceinture + bretelles ; Alertmanager relit `bot_token_file` à chaque envoi de toute façon). **3. Prometheus values (`prometheus/values.yaml`)** - `server.alertmanagers` → `prometheus-alertmanager:9093`. - `alertmanager.config` : `route` (group_by alertname/app) + receiver `telegram` (`bot_token_file` sur le fichier monté, `chat_id` inline non sensible, `parse_mode: HTML`, `send_resolved: true`). - `alertmanager.extraSecretMounts` : montage du Secret `alertmanager-telegram` sur `/etc/alertmanager/telegram`. ## Vérifications - `helm template` du chart : le ConfigMap `prometheus-alertmanager` contient bien le receiver `telegram`, la config Prometheus liste l'Alertmanager, et le StatefulSet monte le Secret sur `/etc/alertmanager/telegram` (readOnly). - YAML validés (`yaml.safe_load_all`), `tofu fmt` clean. - **Additif** : ni grafana (fix startupProbe récent) ni les règles d'alerte existantes ne sont modifiés. ## Suite (hors PR) - `vault.yaml` doit être dispatché (handoff OIDC) pour créer le rôle Vault avant que VSO puisse synchroniser le Secret. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
arcodange added 1 commit 2026-07-08 23:20:24 +02:00
feat(alerting): livraison Telegram des alertes via Alertmanager
Helm Charts / Detect changed charts (push) Successful in 14s
Helm Charts / Library charts tool (push) Has been skipped
Helm Charts / Detect changed charts (pull_request) Successful in 14s
Helm Charts / Library charts tool (pull_request) Has been skipped
Helm Charts / Application charts pgcat (push) Has been skipped
Helm Charts / Application charts pgcat (pull_request) Has been skipped
714e2bc2ab
Les règles d'alerte `prospection` s'évaluaient déjà dans Prometheus mais ne
notifiaient nulle part. On câble Alertmanager pour livrer les alertes sur le bot
Telegram de prospection, via `telegram_configs` natif d'Alertmanager.

- iac Vault : policy read-only `alertmanager-telegram` sur
  kvv2/data/prospection/telegram + rôle k8s `alertmanager` (SA
  prometheus-alertmanager, ns tools).
- VSO : VaultAuth + VaultStaticSecret resynchronisent kvv2/prospection/telegram
  vers un Secret `alertmanager-telegram` dans le ns tools (le Secret prospection
  est namespace-scoped, non réutilisable). rolloutRestartTargets sur le
  StatefulSet Alertmanager.
- prometheus values : lien server -> Alertmanager (prometheus-alertmanager:9093),
  route + receiver `telegram` (bot_token_file monté, chat_id inline, parse_mode
  HTML, send_resolved), et montage du Secret via extraSecretMounts.

Additif : ni grafana ni les règles d'alerte existantes ne sont touchés.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
arcodange merged commit 7a8c8537a5 into main 2026-07-08 23:20:33 +02:00
arcodange deleted branch arcodange/am-telegram 2026-07-08 23:20:34 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: arcodange-org/tools#9