Monitoring Node.js¶
Rôle¶
Le monitoring est le hub central de l'observabilité PerfShop. Il remplit trois rôles :
- Scrape Docker — interroge le socket Docker toutes les 2s pour obtenir les stats containers
- Expose
/metrics— format Prometheus, scraped par Prometheus toutes les 15s - Reçoit les métriques navigateur — endpoint POST depuis
chaos-agent.js
Endpoints¶
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /metrics |
Métriques Prometheus (containers + navigateur) |
| GET | /api/docker/all |
Stats JSON tous les containers |
| GET | /api/chaos/client-metrics |
Dernières métriques navigateur |
| POST | /api/chaos/client-metrics |
Push métriques depuis chaos-agent.js |
Métriques exposées dans /metrics¶
Containers Docker¶
docker_container_cpu_percent{container="perfshop-app"} 52.3
docker_container_mem_usage_bytes{container="perfshop-app"} 412345678
docker_container_mem_limit_bytes{container="perfshop-app"} 1073741824
docker_container_net_rx_bytes{container="perfshop-frontend"} 123456789
docker_container_net_tx_bytes{container="perfshop-frontend"} 987654321
docker_container_pids{container="perfshop-app"} 42
Navigateur client (si données fraîches < 10s)¶
perfshop_client_fps 39
perfshop_client_heap_used_mb 74.2
perfshop_client_long_tasks_per_sec 10.0
perfshop_client_fetch_req_per_sec 48
perfshop_client_dom_node_count 1190
perfshop_client_cpu_worker_active 1
Données stale
Si aucun navigateur n'a pushé de métriques depuis plus de 10 secondes,
les métriques perfshop_client_* sont absentes de /metrics.
Cela évite que Grafana affiche des valeurs figées quand personne n'est connecté.