- 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>
2.0 KiB
2.0 KiB
FICHE 24 — Observabilité (metrics + request id)
Ce que ça ajoute
- /metrics sur l'API FastAPI (
server/api_upload.py) — en plus du dashboard qui l'avait déjà. - Métriques HTTP (req/s, statuts, latence, in-flight) y compris pour les requêtes bloquées par la sécu.
- Métriques "sécurité" : compteur des blocages (
auth_fail,rate_limit,demo_safe,killswitch,ip_block). - Header
X-Request-Idsur 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 /healthzGET /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
servicevient deRPA_SERVICE_NAME(en prod: posé par les unités systemd).pathutilise le template de route quand disponible (évite la cardinalité).
Test rapide (sans Prometheus)
1) Vérifier l'API
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
# 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.