Monitoring, alertes & backups
AfriMap inclut un stack de monitoring complet : Prometheus pour les métriques, Grafana pour les dashboards, Alertmanager pour les notifications, et des backups PostgreSQL automatisés.
Métriques Prometheus
Le gateway expose un endpoint /metrics au format Prometheus text exposition. Métriques disponibles :
| Métrique | Type | Description |
|---|---|---|
| afrimap_http_requests_total | counter | Requêtes HTTP par route, méthode, status |
| afrimap_http_request_duration_seconds | histogram | Latence par route (buckets : 5ms → 10s) |
| afrimap_http_requests_in_flight | gauge | Requêtes en cours de traitement |
| afrimap_process_uptime_seconds | gauge | Uptime du processus gateway |
| afrimap_go_goroutines | gauge | Nombre de goroutines actives |
Activer le monitoring
# Le profil monitoring ajoute Prometheus + Grafana + Alertmanager docker compose --profile monitoring up -d # Accès aux interfaces# Grafana : http://localhost:3001 (admin / $GRAFANA_ADMIN_PASSWORD)# Prometheus: http://localhost:9090# Alertmanager: http://localhost:9093Les datasources et dashboards Grafana sont provisionnés automatiquement. Au premier démarrage, le dashboard « AfriMap Gateway » apparaît dans Grafana avec 8 panels pré-configurés.
Dashboard Grafana
Le dashboard « AfriMap Gateway » contient 8 panels :
Requêtes par seconde (par route)
Débit par endpoint. Identifie les endpoints les plus sollicités.
Taux d'erreur (avec SLO 1%)
Ratio erreurs 5xx+429 / total. Ligne rouge SLO à 1%.
Latence p50 / p95 / p99
Percentiles de latence globale. Ligne SLO p99 à 500ms.
Latence p99 par route
Détail par endpoint pour identifier les routes lentes.
Répartition des codes HTTP
Pie chart 200/4xx/5xx. Vue rapide de la santé.
Requêtes in-flight
Nombre de requêtes simultanées. Alerte si > 500.
Goroutines
Nombre de goroutines Go. Détecte les fuites de goroutines.
Uptime
Temps depuis le dernier redémarrage du gateway.
Alertes configurées
| Alerte | Condition | Durée | Sévérité |
|---|---|---|---|
| GatewayHighErrorRate | Erreurs 5xx + 429 > 1% du trafic | 5 min | page |
| GatewayHighLatencyP99 | p99 latence > 500ms | 5 min | page |
| GatewayDown | Gateway non joignable | 2 min | page |
| GatewayInFlightBacklog | Requêtes in-flight > 500 | 3 min | warn |
| GatewayGoroutineLeak | Goroutines > 5000 | 10 min | warn |
Les alertes page sont routées vers PagerDuty, les warn vers Slack #afrimap-ops. Configurez les receivers dans monitoring/alertmanager/alertmanager.yml.
Backups PostgreSQL
Un script de backup automatisé est inclus dans data/scripts/backup_postgres.sh. Il effectue un pg_dump --format=directory, compresse avec zstd, et upload vers S3.
# Exécuter un backup maintenant ./data/scripts/backup_postgres.sh # Via systemd timer (recommandé) sudo systemctl enable --now backup_postgres.timer # Vérifier le prochain backup systemctl list-timers backup_postgres.timerConfiguration backup
Configurez dans /etc/afrimap/backup.env :
PGHOST=localhost PGPORT=5432 PGUSER=afrimap PGDATABASE=afrimap BACKUP_S3_BUCKET=s3://afrimap-backups BACKUP_RETENTION_DAYS=30Page de statut
Une page de statut HTML statique est disponible dans static/status.html. Elle sonde les 7 services en temps réel depuis le navigateur du visiteur.
Déployez-la sur un CDN séparé de l'infra principale (Cloudflare Pages, Vercel, Netlify) pour qu'elle reste accessible même si le serveur principal est down. Accessible sur status.afrimap.ci.