Files
rpa_vision_v3/docs/fiches/FICHE_24_OBSERVABILITY.md
Dom a27b74cf22 v1.0 - Version stable: multi-PC, détection UI-DETR-1, 3 modes exécution
- Frontend v4 accessible sur réseau local (192.168.1.40)
- Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard)
- Ollama GPU fonctionnel
- Self-healing interactif
- Dashboard confiance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:23:51 +01:00

59 lines
2.0 KiB
Markdown

# FICHE 24 — Observabilité (metrics + request id)
## Ce que ça ajoute
1) **/metrics** sur l'API FastAPI (`server/api_upload.py`) — en plus du dashboard qui l'avait déjà.
2) **Métriques HTTP** (req/s, statuts, latence, in-flight) **y compris** pour les requêtes bloquées par la sécu.
3) **Métriques "sécurité"** : compteur des blocages (`auth_fail`, `rate_limit`, `demo_safe`, `killswitch`, `ip_block`).
4) **Header `X-Request-Id`** sur toutes les réponses (pratique pour corréler logs ↔ requêtes ↔ incidents).
## Endpoints utiles
- Dashboard (Flask):
- `GET /metrics` (déjà présent)
- `GET /health` / `GET /api/status` (selon ta config)
- API Upload (FastAPI):
- `GET /healthz`
- `GET /metrics` ✅ (nouveau)
- `GET /api/traces/status`
## Nouvelles métriques
- `http_requests_total{service,method,path,status}`
- `http_request_duration_seconds{service,method,path}`
- `http_requests_in_flight{service}`
- `rpa_security_blocks_total{service,reason}`
### Labels
- `service` vient de `RPA_SERVICE_NAME` (en prod: posé par les unités systemd).
- `path` utilise le **template** de route quand disponible (évite la cardinalité).
## Test rapide (sans Prometheus)
### 1) Vérifier l'API
```bash
curl -s http://127.0.0.1:8000/metrics | head
curl -i http://127.0.0.1:8000/api/traces/status | head
```
Tu dois voir `X-Request-Id:` dans la réponse.
### 2) Provoquer un blocage et voir le compteur monter
```bash
# Sans token -> 401 (si RPA_AUTH_REQUIRED)
curl -i http://127.0.0.1:8000/api/traces/sessions | head
# Re-scrape metrics
curl -s http://127.0.0.1:8000/metrics | grep -E "rpa_security_blocks_total|http_requests_total" | head
```
## Prometheus (optionnel)
Un exemple de config (si tu veux monter un Prometheus plus tard) :
- `deploy/prometheus/prometheus.yml` (si tu l'ajoutes) qui scrape :
- `127.0.0.1:8000/metrics` (API)
- `127.0.0.1:5001/metrics` (Dashboard)
## Bonus
Ce patch corrige aussi **un bug de syntaxe Python** dans `core/healing/strategies/format_transformation.py` (f-string + regex) qui empêchait un `py_compile` complet.