Aller au contenu

Référence des métriques

Métriques Prometheus — Backend Spring Boot

Ces métriques sont exposées par Spring Boot Actuator sur /actuator/prometheus et scrapées par Prometheus via le monitoring Node.js.

Métrique Type Description
docker_container_cpu_percent{container="perfshop-app"} gauge CPU % container
jvm_memory_used_bytes{area="heap"} gauge Heap JVM utilisée
jvm_memory_max_bytes{area="heap"} gauge Heap JVM maximum
tomcat_threads_busy_threads gauge Threads HTTP occupés
tomcat_threads_current_threads gauge Threads HTTP actifs
tomcat_threads_config_max_threads gauge Threads HTTP max (200)
hikaricp_connections_active gauge Connexions BDD actives
hikaricp_connections_idle gauge Connexions BDD inactives
hikaricp_connections_pending gauge Requêtes en attente de connexion
hikaricp_connections_max gauge Pool max (20)
hikaricp_connections_acquire_seconds_sum counter Temps acquisition connexion
hikaricp_connections_acquire_seconds_count counter Nombre acquisitions
http_server_requests_seconds_bucket histogram Distribution latences HTTP
http_server_requests_seconds_count counter Nombre requêtes par status
jvm_gc_pause_seconds_sum counter Temps total pauses GC
jvm_gc_pause_seconds_count counter Nombre de pauses GC
jvm_threads_live_threads gauge Threads JVM vivants
jvm_threads_states_threads{state} gauge Threads par état (runnable, blocked…)

Métriques Prometheus — Navigateur client

Exposées par le monitoring Node.js dans /metrics uniquement si données fraîches (<10s).

Métrique Type Description
perfshop_client_fps gauge FPS navigateur
perfshop_client_heap_used_mb gauge Heap JS utilisé (Mo)
perfshop_client_long_tasks_per_sec gauge Long Tasks >50ms par seconde
perfshop_client_fetch_req_per_sec gauge Requêtes fetch lancées par seconde
perfshop_client_dom_node_count gauge Nombre de noeuds DOM
perfshop_client_cpu_worker_active gauge 1 si Web Worker CPU actif
perfshop_client_last_received_timestamp gauge Timestamp Unix (ms) de la dernière réception

Métriques Prometheus — Containers Docker

Exposées pour tous les containers surveillés.

Métrique Type Description
docker_container_cpu_percent{container} gauge CPU %
docker_container_mem_usage_bytes{container} gauge RAM utilisée
docker_container_mem_limit_bytes{container} gauge RAM limite
docker_container_mem_percent{container} gauge RAM %
docker_container_net_rx_bytes{container} counter Octets réseau reçus (cumulatif)
docker_container_net_tx_bytes{container} counter Octets réseau envoyés (cumulatif)
docker_container_io_read_bytes{container} counter Octets disque lus (cumulatif)
docker_container_io_write_bytes{container} counter Octets disque écrits (cumulatif)
docker_container_pids{container} gauge Nombre de processus

Métriques Chaos Métier

Les anomalies métier ne produisent pas de métriques Prometheus dédiées — elles sont observables via les endpoints publics du service.

Endpoint statut + compteurs

GET /api/chaos/public/business/status
{
  "level": 2,
  "levelLabel": "Confirmé",
  "anomaliesActive": ["A1", "A2", "A3", "A4", "A5", "A6", "A7"],
  "counters": {
    "A1": 12,
    "A2": 8,
    "A3": 8,
    "A4": 3,
    "A5": 1
  }
}

Endpoint logs (activity log ring buffer 200 entrées)

GET /api/chaos/public/business/logs

Chaque entrée contient : ts, time, type, severity (INFO/WARN/ERROR), user, detail, technical, level.

Logs container

Les anomalies déclenchées écrivent dans les logs du container perfshop-app avec le préfixe [BusinessChaos][AN] :

WARN [BusinessChaos][A1] TVA incorrecte appliquee: 19.6% au lieu de 20% — user=user1@perfshop.com
WARN [BusinessChaos][A2] Arrondi floor applique: 99.99 → 99.00 — user=user1@perfshop.com
WARN [BusinessChaos][A3] Stock non decremente — productId=42 — user=user1@perfshop.com
docker logs perfshop-app | grep '\[BusinessChaos\]'

Requêtes PromQL utiles

Débit réseau en octets/s

rate(docker_container_net_tx_bytes{container="perfshop-frontend"}[1m])

Latence p99 globale

histogram_quantile(0.99,
  sum(rate(http_server_requests_seconds_bucket[1m])) by (le)
)

Temps moyen d'acquisition connexion BDD (ms)

rate(hikaricp_connections_acquire_seconds_sum{pool="PerfShopHikariPool"}[1m])
/ rate(hikaricp_connections_acquire_seconds_count{pool="PerfShopHikariPool"}[1m])
* 1000

Taux d'erreurs 5xx par seconde

rate(http_server_requests_seconds_count{status=~"5.."}[1m])