veza/veza-backend-api/ops/prometheus
2025-12-16 11:23:49 -05:00
..
alerts.yml stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
README.md stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00

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:

# 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:

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

sudo systemctl restart prometheus
# ou
docker-compose restart prometheus

4. Vérifier les alertes

# 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:

    expr: veza_db_pool_open_connections / <VOTRE_MAX> > 0.8
    
  2. Taux Erreurs 5xx: Ajuster le seuil (actuellement 5%):

    expr: ... > 0.05  # Modifier 0.05 selon tolérance
    
  3. Latence: Ajuster selon SLA:

    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)
  2. Les labels severity et component permettent de router les alertes
  3. Les annotations runbook pointent vers la documentation

Exemple de configuration Alertmanager:

route:
  routes:
    - match:
        severity: critical
      receiver: 'pagerduty'
    - match:
        severity: warning
      receiver: 'slack'