Opérations

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étriqueTypeDescription
afrimap_http_requests_totalcounterRequêtes HTTP par route, méthode, status
afrimap_http_request_duration_secondshistogramLatence par route (buckets : 5ms → 10s)
afrimap_http_requests_in_flightgaugeRequêtes en cours de traitement
afrimap_process_uptime_secondsgaugeUptime du processus gateway
afrimap_go_goroutinesgaugeNombre de goroutines actives

Activer le monitoring

TerminalDémarrer avec 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:9093

Les 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

AlerteConditionDuréeSévérité
GatewayHighErrorRateErreurs 5xx + 429 > 1% du trafic5 minpage
GatewayHighLatencyP99p99 latence > 500ms5 minpage
GatewayDownGateway non joignable2 minpage
GatewayInFlightBacklogRequêtes in-flight > 5003 minwarn
GatewayGoroutineLeakGoroutines > 500010 minwarn

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.

TerminalBackup manuel
# 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.timer

Configuration backup

Configurez dans /etc/afrimap/backup.env :

Terminalbackup.env
 PGHOST=localhost PGPORT=5432 PGUSER=afrimap PGDATABASE=afrimap BACKUP_S3_BUCKET=s3://afrimap-backups BACKUP_RETENTION_DAYS=30

Page 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.