Skip to content

Commit 6c50278

Browse files
committed
feat: add Prometheus alert rules and runbooks
1 parent 866edc6 commit 6c50278

5 files changed

Lines changed: 242 additions & 0 deletions

File tree

docs/runbooks/app-down.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Runbook — AppDown
2+
3+
## Alerte
4+
**Nom :** AppDown
5+
**Sévérité :** Critical
6+
**Condition :** `up{job="fleetops-api"} == 0` pendant 30 secondes
7+
8+
## Symptômes
9+
- L'app FleetOps ne répond plus
10+
- `/health` retourne une erreur de connexion
11+
- Les utilisateurs ne peuvent plus accéder à l'API
12+
13+
## Diagnostic
14+
15+
### 1. Vérifier l'état des conteneurs
16+
```bash
17+
docker compose ps
18+
docker compose logs app --tail=50
19+
```
20+
21+
### 2. Vérifier la connexion à la DB
22+
```bash
23+
curl http://localhost:8000/ready
24+
```
25+
26+
### 3. Vérifier les ressources système
27+
```bash
28+
docker stats
29+
df -h
30+
free -m
31+
```
32+
33+
## Remédiation
34+
35+
### Si le conteneur est arrêté
36+
```bash
37+
docker compose up -d app
38+
```
39+
40+
### Si la DB est inaccessible
41+
```bash
42+
docker compose restart db
43+
docker compose restart app
44+
```
45+
46+
### Si manque de mémoire
47+
```bash
48+
docker compose down
49+
docker system prune -f
50+
docker compose up -d
51+
```
52+
53+
## Escalade
54+
Si le problème persiste après 15 minutes → contacter l'équipe infrastructure.

docs/runbooks/high-error-rate.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Runbook — HighErrorRate
2+
3+
## Alerte
4+
**Nom :** HighErrorRate
5+
**Sévérité :** Critical
6+
**Condition :** plus de 5% des requêtes retournent une erreur 5xx depuis 1 minute
7+
8+
## Symptômes
9+
- Les utilisateurs reçoivent des erreurs lors de leurs requêtes API
10+
- Le dashboard Grafana "Taux d'erreurs 5xx" dépasse 5%
11+
- Les logs de l'app montrent des exceptions ou stack traces
12+
13+
## Diagnostic
14+
15+
### 1. Regarder les logs de l'app
16+
```bash
17+
docker compose logs app --tail=100
18+
```
19+
20+
### 2. Vérifier la connexion à la DB
21+
```bash
22+
curl http://localhost:8000/ready
23+
```
24+
25+
### 3. Vérifier l'état des conteneurs
26+
```bash
27+
docker compose ps
28+
```
29+
30+
## Remédiation
31+
32+
### Si la DB est inaccessible
33+
```bash
34+
docker compose restart db
35+
docker compose restart app
36+
```
37+
38+
### Si bug applicatif
39+
Identifier l'endpoint qui échoue dans les logs, puis rollback :
40+
```bash
41+
docker compose down
42+
docker compose up -d
43+
```
44+
45+
### Si surcharge
46+
```bash
47+
docker compose restart app
48+
```
49+
50+
## Escalade
51+
Si le problème persiste après 15 minutes → contacter l'équipe infrastructure et ouvrir un incident.

docs/runbooks/high-latency.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# Runbook — HighLatency
2+
3+
## Alerte
4+
**Nom :** HighLatency
5+
**Sévérité :** Warning
6+
**Condition :** latence p95 > 300ms depuis 2 minutes
7+
8+
## Symptômes
9+
- Les utilisateurs remarquent des temps de réponse lents
10+
- Le dashboard Grafana "Latence p95" dépasse 300ms
11+
- Les logs montrent des requêtes longues
12+
13+
## Diagnostic
14+
15+
### 1. Vérifier les logs de l'app
16+
```bash
17+
docker compose logs app --tail=100
18+
```
19+
20+
### 2. Vérifier la charge des conteneurs
21+
```bash
22+
docker stats
23+
```
24+
25+
### 3. Vérifier la connexion à la DB
26+
```bash
27+
curl http://localhost:8000/ready
28+
```
29+
30+
## Remédiation
31+
32+
### Si la DB est lente
33+
```bash
34+
docker compose restart db
35+
docker compose restart app
36+
```
37+
38+
### Si surcharge CPU/mémoire
39+
```bash
40+
docker compose restart app
41+
```
42+
43+
## Escalade
44+
Si le problème persiste après 15 minutes → contacter l'équipe infrastructure.

docs/runbooks/high-request-rate.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Runbook — HighRequestRate
2+
3+
## Alerte
4+
**Nom :** HighRequestRate
5+
**Sévérité :** Warning
6+
**Condition :** plus de 10 requêtes/seconde depuis 1 minute
7+
8+
## Symptômes
9+
- Trafic inhabituellement élevé sur l'API
10+
- Dashboard Grafana "Requests per second" dépasse 10 RPS
11+
- Possible ralentissement de l'app
12+
13+
## Diagnostic
14+
15+
### 1. Identifier l'endpoint le plus appelé
16+
```bash
17+
docker compose logs app --tail=200 | grep "GET\|POST\|DELETE"
18+
```
19+
20+
### 2. Vérifier si c'est légitime ou une attaque
21+
```bash
22+
docker compose logs app --tail=200 | grep "IP"
23+
```
24+
25+
### 3. Vérifier la charge système
26+
```bash
27+
docker stats
28+
```
29+
30+
## Remédiation
31+
32+
### Si trafic légitime — surveiller
33+
```bash
34+
docker stats
35+
```
36+
37+
### Si attaque — bloquer au niveau réseau
38+
Contacter l'équipe infrastructure pour bloquer l'IP source.
39+
40+
### Si l'app commence à ralentir
41+
```bash
42+
docker compose restart app
43+
```
44+
45+
## Escalade
46+
Si le trafic continue d'augmenter et l'app ralentit → contacter l'équipe infrastructure immédiatement.

docs/runbooks/no-traffic.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Runbook — NoTraffic
2+
3+
## Alerte
4+
**Nom :** NoTraffic
5+
**Sévérité :** Warning
6+
**Condition :** aucune requête reçue depuis 5 minutes
7+
8+
## Symptômes
9+
- Aucune activité sur le dashboard Grafana
10+
- Prometheus ne collecte plus de métriques HTTP
11+
- Possible indisponibilité silencieuse
12+
13+
## Diagnostic
14+
15+
### 1. Vérifier que l'app tourne
16+
```bash
17+
docker compose ps
18+
curl http://localhost:8000/health
19+
```
20+
21+
### 2. Vérifier que Prometheus scrape bien l'app
22+
```bash
23+
curl http://localhost:9090/targets
24+
```
25+
26+
### 3. Vérifier les logs
27+
```bash
28+
docker compose logs app --tail=50
29+
```
30+
31+
## Remédiation
32+
33+
### Si l'app est down
34+
```bash
35+
docker compose up -d app
36+
```
37+
38+
### Si Prometheus ne scrape plus
39+
```bash
40+
docker compose restart prometheus
41+
```
42+
43+
### Si tout tourne mais pas de trafic
44+
C'est peut-être normal (nuit, weekend). Vérifier avec l'équipe produit.
45+
46+
## Escalade
47+
Si l'app est down et ne redémarre pas → contacter l'équipe infrastructure.

0 commit comments

Comments
 (0)