- 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>
59 lines
2.0 KiB
Markdown
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. |