feat: Observabilité et monitoring complet
Implémentation complète de la stack d'observabilité pour le monitoring de la plateforme multi-tenant Classeo. ## Error Tracking (GlitchTip) - Intégration Sentry SDK avec GlitchTip auto-hébergé - Scrubber PII avant envoi (RGPD: emails, tokens JWT, NIR français) - Contexte enrichi: tenant_id, user_id, correlation_id - Configuration backend (sentry.yaml) et frontend (sentry.ts) ## Metrics (Prometheus) - Endpoint /metrics avec restriction IP en production - Métriques HTTP: requests_total, request_duration_seconds (histogramme) - Métriques sécurité: login_failures_total par tenant - Métriques santé: health_check_status (postgres, redis, rabbitmq) - Storage Redis pour persistance entre requêtes ## Logs (Loki) - Processors Monolog: CorrelationIdLogProcessor, PiiScrubberLogProcessor - Détection PII: emails, téléphones FR, tokens JWT, NIR français - Labels structurés: tenant_id, correlation_id, level ## Dashboards (Grafana) - Dashboard principal: latence P50/P95/P99, error rate, RPS - Dashboard par tenant: métriques isolées par sous-domaine - Dashboard infrastructure: santé postgres/redis/rabbitmq - Datasources avec UIDs fixes pour portabilité ## Alertes (Alertmanager) - HighApiLatencyP95/P99: SLA monitoring (200ms/500ms) - HighErrorRate: error rate > 1% pendant 2 min - ExcessiveLoginFailures: détection brute force - ApplicationUnhealthy: health check failures ## Infrastructure - InfrastructureHealthChecker: service partagé (DRY) - HealthCheckController: endpoint /health pour load balancers - Pre-push hook: make ci && make e2e avant push
This commit is contained in:
44
README.md
44
README.md
@@ -72,6 +72,46 @@ make token-beta role=ROLE_PROF email=prof@test.com
|
||||
| Mailpit | http://localhost:8025 | Emails de test |
|
||||
| Mercure | http://localhost:3000/.well-known/mercure | SSE Hub |
|
||||
|
||||
#### Monitoring (optionnel)
|
||||
|
||||
Lancer avec `make up-full` pour activer le stack de monitoring :
|
||||
|
||||
| Service | URL | Description |
|
||||
|---------|-----|-------------|
|
||||
| Grafana | http://localhost:3001 | Dashboards (admin/admin) |
|
||||
| Prometheus | http://localhost:9090 | Métriques |
|
||||
| GlitchTip | http://localhost:8081 | Error tracking |
|
||||
| Loki | http://localhost:3100 | Logs centralisés |
|
||||
| Alertmanager | http://localhost:9093 | Gestion alertes |
|
||||
|
||||
##### Stack de monitoring expliquée
|
||||
|
||||
**GlitchTip** - Error tracking (compatible Sentry)
|
||||
- Capture automatiquement les exceptions PHP et les envoie avec leur stack trace
|
||||
- Regroupe les erreurs similaires pour éviter le bruit
|
||||
- Configuration : ajouter `SENTRY_DSN` dans `compose.override.yaml`
|
||||
|
||||
**Prometheus** - Métriques & alertes
|
||||
- Collecte les métriques applicatives (latence, requêtes, erreurs) toutes les 15s
|
||||
- Déclenche des alertes si les SLAs sont menacés (P95 > 200ms, error rate > 1%)
|
||||
- Requêtes PromQL : http://localhost:9090/graph
|
||||
|
||||
**Grafana** - Dashboards visuels
|
||||
- Dashboard principal : vue globale des métriques applicatives
|
||||
- Dashboard per-tenant : métriques filtrées par établissement
|
||||
- Credentials : admin/admin
|
||||
|
||||
**Loki + Promtail** - Logs centralisés
|
||||
- Promtail collecte les logs de tous les conteneurs Docker
|
||||
- Loki les stocke et permet les requêtes LogQL
|
||||
- Accès via Grafana → Explore → Loki
|
||||
- Exemple : `{container_name="classeo_php"} |= "error"`
|
||||
|
||||
**Alertmanager** - Notification des alertes
|
||||
- Reçoit les alertes de Prometheus et les route vers les bons canaux
|
||||
- En dev : envoie les emails à Mailpit (http://localhost:8025)
|
||||
- En prod : configurable pour Slack, PagerDuty, email, etc.
|
||||
|
||||
## Stack Technique
|
||||
|
||||
### Backend
|
||||
@@ -138,7 +178,9 @@ Chaque Bounded Context suit la même structure :
|
||||
### Workflow quotidien
|
||||
|
||||
```bash
|
||||
make up # Démarrer les services
|
||||
make up # Démarrer les services (app uniquement)
|
||||
make up-full # Démarrer avec monitoring (Grafana, Prometheus, Loki...)
|
||||
make down # Arrêter tous les services
|
||||
make logs # Suivre les logs
|
||||
make test # Lancer les tests avant commit
|
||||
make check # Vérifier la qualité du code
|
||||
|
||||
Reference in New Issue
Block a user