Aller au contenu

Monitoring Node.js

Rôle

Le monitoring est le hub central de l'observabilité PerfShop. Il remplit trois rôles :

  1. Scrape Docker — interroge le socket Docker toutes les 2s pour obtenir les stats containers
  2. Expose /metrics — format Prometheus, scraped par Prometheus toutes les 15s
  3. 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
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é.

Déploiement

# Modifier server.js
vi /volume4/docker-speed/perfshop/monitoring/src/server.js

# Pas de rebuild nécessaire — restart suffit
cd /volume4/docker-speed/perfshop
docker compose restart perfshop-monitoring