veza/veza-backend-api/ops/prometheus/README.md
2025-12-16 11:23:49 -05:00

109 lines
3 KiB
Markdown

# 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 / <VOTRE_MAX> > 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'
```