# Configuration Prometheus - veza-backend-api ## Activation des Alertes ### 1. Ajouter les règles dans Prometheus Copier `alerts.yml` dans le répertoire de configuration Prometheus: ```bash # Exemple: /etc/prometheus/rules/veza-backend-api.yml cp ops/prometheus/alerts.yml /etc/prometheus/rules/veza-backend-api.yml ``` ### 2. Configurer Prometheus Ajouter dans `prometheus.yml`: ```yaml rule_files: - "/etc/prometheus/rules/veza-backend-api.yml" scrape_configs: - job_name: 'veza-backend-api' scrape_interval: 15s metrics_path: '/metrics' static_configs: - targets: ['localhost:8080'] # Adapter selon déploiement ``` ### 3. Redémarrer Prometheus ```bash sudo systemctl restart prometheus # ou docker-compose restart prometheus ``` ### 4. Vérifier les alertes ```bash # Via Prometheus UI http://localhost:9090/alerts # Via API curl http://localhost:9090/api/v1/alerts ``` ## Métriques Requises Les alertes utilisent les métriques suivantes (déjà exposées par veza-backend-api): - `veza_circuit_breaker_state` - État du circuit breaker (0=closed, 1=half-open, 2=open) - `veza_db_pool_open_connections` - Nombre de connexions DB ouvertes - `veza_db_pool_wait_count_total` - Nombre de fois qu'une connexion a dû attendre - `veza_gin_http_requests_total` - Total requêtes HTTP (method, path, status) - `veza_gin_http_request_duration_seconds` - Durée des requêtes HTTP - `veza_health_check_status` - Statut health check (1=ok, 0.5=slow, 0=error) ## Seuils Configurés | Alerte | Seuil | Durée | Sévérité | |--------|-------|-------|----------| | Circuit Breaker Open | state == 2 | 5 min | Critical | | DB Pool > 80% | > 16/20 connexions | 5 min | Warning | | DB Pool Exhausted | wait rate > 0.1/s | 2 min | Critical | | Erreurs 5xx > 5% | > 5% des requêtes | 5 min | Warning | | Erreurs 5xx > 10/s | > 10 erreurs/s | 2 min | Critical | | Latence P95 > 1s | P95 > 1s | 5 min | Warning | | Latence P99 > 5s | P99 > 5s | 3 min | Warning | ## Ajustement des Seuils Pour ajuster les seuils selon votre environnement: 1. **DB Pool Max Connections**: Si différent de 20, modifier l'expression dans `VezaDBPoolHighUsage`: ```yaml expr: veza_db_pool_open_connections / > 0.8 ``` 2. **Taux Erreurs 5xx**: Ajuster le seuil (actuellement 5%): ```yaml expr: ... > 0.05 # Modifier 0.05 selon tolérance ``` 3. **Latence**: Ajuster selon SLA: ```yaml expr: ... > 1.0 # Modifier 1.0 selon SLA (ex: 0.5s pour API rapide) ``` ## Intégration avec Alertmanager Pour envoyer les alertes vers Slack/PagerDuty/etc: 1. Configurer Alertmanager (voir [Alertmanager docs](https://prometheus.io/docs/alerting/latest/alertmanager/)) 2. Les labels `severity` et `component` permettent de router les alertes 3. Les annotations `runbook` pointent vers la documentation Exemple de configuration Alertmanager: ```yaml route: routes: - match: severity: critical receiver: 'pagerduty' - match: severity: warning receiver: 'slack' ```