Ga naar inhoud

Insights — anomaly detection

/insights toont metrieken die statistisch buiten hun normaal-verdeling liggen. Het is geen machine learning en we beweren dat ook nergens — het is z-score over een 7-dagen baseline.

Methode

Voor elke (agent, metric) in {CPU%, memory%, network total bps}:

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

Een metric wordt als anomalie geflagd als |z| > 2.5. Dat correspondeert met ~0.6% false-positive rate als de metric normaal-verdeeld is (in praktijk hogere FP-rate omdat metrieken zelden echt gaussiaans zijn — maar wel goed genoeg om de échte uitbijters bovenaan te krijgen).

Alleen agents met ≥60 baseline samples (~1 dag aan 15s metrics) komen in aanmerking. Anders zou een nieuw geregistreerde agent altijd “abnormaal” lijken.

Wat je in de UI ziet

Vier KPI-kaarten bovenaan:

  • Anomalies (live) — count van huidige flags
  • Agents covered — agents online in laatste uur
  • Metrics (24h) — totaal aantal datapoints geanalyseerd
  • Method — “z-score, threshold |z| > 2.5”

Onder de KPI’s: tabel met top-50 anomalies, sortering op |z|. Kolommen: agent (klikbaar → agent detail), metric, current value, baseline mean, stddev, z-score, direction (↑ above / ↓ below).

Wat dit WEL goed doet

  • Plotse spikes waar het systeem ineens 4× zijn normaal gebruik heeft
  • Plotse dips (“waarom is CPU op deze webserver ineens 1%?”)
  • Pattern-breaks: ranges die je niet expliciet hoefde te programmeren

Wat dit NIET doet

  • Seizoenspatronen — als je nightly batch elke nacht om 02:00 CPU naar 80% trekt, blijft dat in je baseline en wordt het niet meer geflagd. Bewust.
  • Correlaties tussen metrieken — kruis-metric ML zou dat doen; deze methode niet.
  • Voorspellen — geen “deze server gaat over 3 uur omvallen”. Voor predictive groei zie Capacity planning.

Hoe het te gebruiken in operations

  1. Check /insights één keer per shift als deel van je status-check
  2. Klik door op een rij om de agent te zien en wat er aan de hand is
  3. Als een metric daar staat die je verwacht (“nightly batch”) → het werkt zoals bedoeld, ignoreer
  4. Als een metric staat die je niet verwacht → log probleem onderzoeken

Geen alert-replacement

Insights is passieve observatie, geen replacement voor alert-rules. Een alert-rule fire’t push-notificaties + audit-log + webhooks; Insights vraagt je om proactief te kijken. Voor pages die je ‘s nachts moeten wakker bellen: gebruik /alerts → Rules met severity=critical.