Container & Kubernetes

Docker, watched the way a human would.

Every container's status, health check, CPU, and memory — tracked over time, alertable, correlated with its own logs, and predicted against its own history. No sidecar, no separate agent, no extra install.

4lifecycle/health alert types
2predictive layers: ETA & anomaly
0extra agents per container
What's Tracked

Live status, right next to your hosts.

ContainerStatusHealthCPUMem
api-gatewayrunninghealthy12%340 MB
worker-queuerunningunhealthy96%1.8 GB
postgres-1runninghealthy34%512 MB
gochat-postgres-1restartingunhealthy8%210 MB
Alerting

Every alert type, with its own incident trail.

Alert typeFires whenNotes
oom_killedContainer killed by the kernel for exceeding its memory limitDistinguished from a normal exit or crash
crash_loopedRepeated restart cycling detectedFixed-threshold safety net — always fires regardless of baseline
image_changedThe running image digest changed unexpectedlyUseful for catching unplanned deploys or drift
unhealthyDocker's own healthcheck reports unhealthyReads the healthcheck you already defined — nothing extra to configure
cpu_threshold / mem_thresholdCPU or memory crosses a configured limitComplemented by the ETA prediction below — a warning before the threshold, not just at it
restart_rate_anomalyRestart rate exceeds this specific container's own baselineSee "Restart-rate anomaly detection" below — the more interesting alert of the two restart-related types

A queue worker restarting hourly is normal. A database restarting hourly isn't.

A single fixed threshold ("alert after 3 restarts") can't express that — different containers have wildly different normal cadences by design. So instead of a global number, Klyroo computes an exponential-moving-average baseline of restart rate per container, learned from that container's own history, and flags a deviation from its own normal — not from an arbitrary constant.

The baseline starts from a short bootstrap period before going live, so a freshly deployed container isn't falsely flagged on day one just for having no history yet.

Restart baseline — gochat-postgres-1
ALERT · restart_rate_anomalygochat-postgres-1
Restart rate is well above this container's own baseline — 5 restarts in 15 min vs. a typical 0.1.
Fix: check the container's own logs for the crash reason — this is a real deviation from its normal cadence, not noise.
Predictive Layer

CPU and memory ETA prediction, per container.

Every container gets the same trend-based "about to tip over" forecasting described in full on the Predictive Alerts page — applied here per container rather than per host.

CPU ETA — worker-queue
PREDICTED · cpu_eta_risk~4 min out
CPU trending toward 90% — projected to cross in about 4 minutes.
Memory ETA — postgres-1
PREDICTED · mem_eta_risk~7 min out
Memory trending toward its 1 GB limit — projected to cross in about 7 minutes.
Memory ETA prediction only runs where a memory limit is actually configured — Klyroo reads the real limit from Docker (HostConfig.Memory), not the host's total RAM, so an unlimited container correctly shows no ETA rather than a misleading one.
Where We Stand

Scope, honestly.

What's covered

  • Lifecycle, health, CPU, and memory — tracked and alertable
  • Per-container history graphs with a date-range filter, same as hosts
  • Restart-rate anomaly detection baselined per container
  • CPU and memory ETA-to-threshold prediction
  • Each container's log stream matched against the signature library

On the roadmap

  • Per-container disk and network metrics (not collected today, so no ETA/anomaly on those yet)
  • LLM-based RCA enrichment layer on top of the deterministic signatures
Pairs Well With

Related capabilities

Watch your own containers, explained.

Point one agent at a Docker host and see the first alert land.

Book a 20-minute demo