109 lines
3 KiB
Markdown
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'
|
|
```
|