Tech News
← Back to articles

Show HN: Kula – Lightweight, self-contained Linux server monitoring tool

read original related products more articles

K U L A Lightweight, self-contained Linux® server monitoring tool. Zero dependencies. No external databases. Single binary. Just deploy and go.

What It Does

Kula collects system metrics every second by reading directly from /proc and /sys , stores them in a built-in tiered ring-buffer storage engine, and serves them through a real-time Web UI dashboard and a terminal TUI.

Metric What's Collected CPU Total usage (user, system, iowait, irq, softirq, steal) + core count Load 1 / 5 / 15 min averages, running & total tasks Memory Total, free, available, used, buffers, cached, shmem Swap Total, free, used Network Per-interface throughput (Mbps), packets/s, errors, drops; TCP errors/s, resets/s, established connections; socket counts Disks Per-device I/O (read/write bytes/s, reads/s, writes/s IOPS); filesystem usage System Uptime, entropy, clock sync, hostname, logged-in user count Processes Running, sleeping, blocked, zombie counts Self Kula's own CPU%, RSS memory, open file descriptors

How It Works

┌──────────────────────────────────────────────┐ │ Linux Kernel │ │ /proc/stat /proc/meminfo /sys/... │ └──────────────────┬───────────────────────────┘ │ read every 1s ▼ ┌──────────────────┐ │ Collectors │ │ (cpu, mem, net, │ │ disk, system) │ └────────┬─────────┘ │ Sample struct ┌────────────┼────────────┐ ▼ ▼ ▼ ┌────────────┐ ┌────────┐ ┌──────────┐ │ Storage │ │ Web │ │ TUI │ │ Engine │ │ Server │ │ Terminal │ └─────┬──────┘ └───┬────┘ └──────────┘ │ │ ┌──────────┼─────────┐ └───────────┐ HTTP + WebSocket ▼ ▼ ▼ ▼ ┌─────────┬─────────┬─────────┐ ┌───────────────┐ │ Tier 1 │ Tier 2 │ Tier 3 │ │ Dashboard │ │ 1s │ 1m │ 5m │ │ (Browser) │ │ 250 MB │ 150 MB │ 50 MB │ └───────────────┘ └─────────┴─────────┴─────────┘ Ring-buffer binary files with circular overwrites

Storage Engine

Data is persisted in pre-allocated ring-buffer files per tier. Each tier file has a fixed maximum size — when it fills up, new data overwrites the oldest entries. This gives predictable, bounded disk usage with no cleanup needed.

Tier 1 — Raw 1-second samples (default 250 MB)

— Raw 1-second samples (default 250 MB) Tier 2 — 1-minute aggregates: averaged CPU & network, last-value gauges (default 150 MB)

... continue reading