tripoli.cloud/monitoring
Adam Belkacemi db306433d5 Phase 5 : observabilité (réutilise le Prometheus/Grafana partagé)
- Pas de stack dédiée : une instance Prometheus/Grafana existe déjà sur
  ce serveur pour les 5 autres projets. En déployer une seconde aurait
  dupliqué de la RAM sur une machine à 3.7 Go partagée, sans bénéfice -
  même raisonnement que pour Caddy en Phase 2.
- Scrape job tripoli_edge (172.17.0.1:9000, même passerelle docker0 que
  Caddy) ajouté à la config Prometheus existante.
- Règles d'alerte : TripoliEdgeDown (up == 0), HostDiskAlmostFull
  (< 10% d'espace libre sur / - au niveau de la machine, pas seulement
  de ce projet, puisqu'il n'y a qu'un disque pour tout le monde).
- Sonde blackbox externe ajoutée pour https://tripoli.cloud/healthz.
- Dashboard Grafana versionné (uid tripoli-cloud-edge), importé via
  l'API (POST /api/dashboards/db) pour rester reproductible, pas
  construit à la main dans l'UI.
- Vérifié : tous les targets Prometheus up (dont tripoli_edge et la
  sonde tripoli.cloud), les deux règles d'alerte chargées et évaluées,
  les requêtes du dashboard retournent de vraies valeurs.
- Limite assumée : les alertes se déclenchent dans Prometheus mais ne
  sont pas encore routées par email (pas d'Alertmanager, pas de policy
  de notification Grafana dédiée) - documenté comme prochain pas, pas
  fait pour éviter de modifier la politique de notification globale de
  l'instance partagée sans plus de tests.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 23:09:32 +02:00
..
grafana-dashboard-tripoli-edge.json Phase 5 : observabilité (réutilise le Prometheus/Grafana partagé) 2026-09-16 23:09:32 +02:00
prometheus-scrape-snippet.yml Phase 5 : observabilité (réutilise le Prometheus/Grafana partagé) 2026-09-16 23:09:32 +02:00
README.md Phase 5 : observabilité (réutilise le Prometheus/Grafana partagé) 2026-09-16 23:09:32 +02:00
tripoli-cloud-alerts.yml Phase 5 : observabilité (réutilise le Prometheus/Grafana partagé) 2026-09-16 23:09:32 +02:00

Observabilité

Pas de Prometheus/Grafana dédiés à Tripoli Cloud : une instance de chacun existe déjà sur ce serveur, partagée avec les 5 autres projets qui y tournent. En déployer une seconde aurait dupliqué de la RAM sur une machine à 3.7 Go déjà partagée, pour un bénéfice nul - même raisonnement que pour Caddy en Phase 2.

Ce qui a été ajouté à l'instance existante

  • Scrape job tripoli_edge (prometheus-scrape-snippet.yml, appliqué à /opt/monitoring/prometheus/prometheus.yml sur le serveur) : 172.17.0.1:9000/metrics - même passerelle docker0 que Caddy utilise pour joindre tripoli-edge.
  • Règles d'alerte (tripoli-cloud-alerts.yml, montée dans le conteneur Prometheus) :
    • TripoliEdgeDown : up{job="tripoli_edge"} == 0 pendant 2 minutes.
    • HostDiskAlmostFull : moins de 10% d'espace libre sur / pendant 10 minutes - une alerte au niveau de la machine, pas seulement de Tripoli Cloud, puisqu'il n'y a qu'un seul disque pour tous les projets hébergés.
  • Sonde blackbox externe : https://tripoli.cloud/healthz ajoutée à la liste existante du job blackbox_http (vérifie que le site répond réellement depuis l'extérieur, pas seulement que Prometheus arrive à le scraper en interne).
  • Dashboard Grafana (grafana-dashboard-tripoli-edge.json, uid: tripoli-cloud-edge) : état up/down, requêtes en cours, latence moyenne, requêtes par classe de statut, et l'espace disque de l'hôte. Importé via l'API Grafana (POST /api/dashboards/db), pas par copier- coller dans l'UI - c'est ce qui permet de le garder versionné ici et de le réimporter à l'identique si besoin.

Ce qui n'a pas été fait

Les règles d'alerte existent et se déclenchent dans Prometheus (vérifiable via /api/v1/rules), mais rien ne les notifie encore par email - pas d'Alertmanager déployé, et pas de policy de notification Grafana configurée pour ces alertes spécifiquement. Grafana a déjà un SMTP fonctionnel (utilisé par d'autres projets sur cette instance) ; y brancher les alertes de Tripoli Cloud est le prochain pas naturel, pas fait dans cette passe pour éviter de modifier la politique de notification globale de l'instance partagée sans plus de tests.

Vérifié

$ curl .../api/v1/targets   -> tripoli_edge: up, blackbox tripoli.cloud/healthz: up
$ curl .../api/v1/rules     -> groupe "tripoli-cloud" : TripoliEdgeDown, HostDiskAlmostFull
$ curl .../api/v1/query?query=up{job="tripoli_edge"}   -> 1

Dashboard accessible sur https://grafana.belkacemi.me/d/tripoli-cloud-edge/.