Skip to content

Telemetry

Krasnikov Maksim edited this page Oct 22, 2026 · 1 revision

Telemetry: metrics, logs and the workspace timeline

What Coolify and friends lack: understanding how much each project consumes and what changed after a deploy. Maurice gets this almost for free because the boundaries are already drawn through systemd: a workspace is the user's cgroup slice (user-<UID>.slice), a service is the unit's cgroup. The kernel already counts CPU, memory, I/O and network for them; what remains is to collect and show.

13.1 Pipeline

Metrics: cgroups / Podman / host -> exporters -> VictoriaMetrics
         -> PromQL -> charts in the Maurice UI (Grafana optional)
Logs:    stdout -> journald -> Vector/Alloy (+labels) -> VictoriaLogs
         -> label search -> UI, AI triage
Labels:  workspace, service, env, deployment_id, image_digest
Layer Choice Why
Metrics store VictoriaMetrics (single-node) One binary, low memory, Prometheus/PromQL and Grafana compatible
Exporters node_exporter (host); cAdvisor with Podman support or systemd-exporter (unit and slice cgroups); podman stats via API Per-workspace and per-service load without application changes
Disk Home, volume and image sizes via podman system df per user; home quotas "Who filled the disk" per workspace
Logs store VictoriaLogs One binary, label and text search, retention
Log collector Vector or Grafana Alloy, one process per host Reads journald, adds workspace/service/env/deployment labels
Visualisation Charts in the Maurice UI (PromQL/LogsQL queries from the control plane); Grafana as an option for deep dives The user stays in the panel; Grafana for engineering investigations
Alerts vmalert or rules in the control plane → notifier CPU/memory/disk thresholds per workspace, error growth in logs

13.2 The workspace screen as a timeline

One time axis; the prod/dev toggle is a filter on the env label. Shown together:

  • CPU, memory, network and disk per workspace, broken down by service.
  • Vertical deploy markers (version, who triggered) over the charts — a load spike is tied to a specific version.
  • The Plane task stream for the same period: closed, in progress, current cycle (see Task Tracker).
  • Errors from logs: counts by level, link to the VictoriaLogs selection.
  • The service card is the same screen at the level of one unit, plus live podman stats.

13.3 By stage

  • Alpha: podman stats in the service card, logs from journald.
  • MVP: VictoriaMetrics, exporters, per-workspace and per-service charts, deploy markers, basic threshold alerts. Needed for prod, not for looks.
  • Beta: VictoriaLogs with a collector and labels, unified feed with tasks; AI triage works on top of VictoriaLogs, not raw journald.
  • Release: retention and disk limits for the stores, dashboard export to Grafana, threshold tuning.

Clone this wiki locally