Aller au contenu

Insights — détection d'anomalies

/insights affiche les métriques qui sortent statistiquement de leur distribution normale. Ce n’est pas du machine learning et nous ne le prétendons nulle part — c’est un z-score sur une baseline 7 jours.

Méthode

Pour chaque (agent, metric) parmi {CPU%, memory%, network total bps} :

baseline = AVG(metric) ± STDDEV_POP(metric) sur [NOW-7d, NOW-1d]
current = AVG(metric) sur [NOW-15min, NOW]
z = (current - baseline_mean) / baseline_stddev

Une métrique est flaggée anomalie si |z| > 2.5. Cela correspond à ~0.6% de faux-positifs si la métrique est normale-distribuée (en pratique le taux est plus élevé parce que les métriques sont rarement vraiment gaussiennes — mais c’est suffisant pour faire remonter les vrais outliers).

Seuls les agents avec ≥60 baseline samples (~1 jour à 15s metrics) sont éligibles. Sinon un agent nouvellement enregistré semblerait toujours “anormal”.

Ce que vous voyez dans l’UI

Quatre KPI cards en haut :

  • Anomalies (live) — count des flags courants
  • Agents covered — agents online dans la dernière heure
  • Metrics (24h) — total datapoints analysés
  • Method — “z-score, threshold |z| > 2.5”

Sous les KPI : tableau des top-50 anomalies, triées par |z|. Colonnes : agent (cliquable → agent detail), metric, current value, baseline mean, stddev, z-score, direction (↑ above / ↓ below).

Ce que ça fait BIEN

  • Spikes soudaines où le système consomme 4× son usage normal
  • Dips soudains (“pourquoi la CPU de ce webserver est tout à coup à 1% ?”)
  • Pattern breaks : ranges que vous n’aviez pas à programmer explicitement

Ce que ça ne fait PAS

  • Saisonnalité — si votre batch nightly tape CPU à 80% chaque nuit à 02:00, ça reste dans la baseline et n’est plus flaggé. Voulu.
  • Corrélations entre métriques — un ML cross-metric le ferait ; pas cette méthode.
  • Prédiction — pas de “ce serveur va tomber dans 3h”. Pour la prédiction de croissance voir Capacity planning.

Comment l’utiliser en opérations

  1. Check /insights une fois par shift dans votre status-check
  2. Cliquez sur une ligne pour voir l’agent et ce qui se passe
  3. Si c’est une métrique attendue (“nightly batch”) → ça marche comme voulu, ignorez
  4. Si c’est une métrique inattendue → investiguer

Pas un remplacement d’alerte

Insights est de l’observation passive, pas un remplacement des alert rules. Une alert rule fire des push-notifications + audit-log + webhooks ; Insights vous demande de regarder proactivement. Pour les pages qui doivent vous réveiller la nuit : utilisez /alerts → Rules avec severity=critical.