Risal’s server monitoring is built around one small agent you install on each host. There’s nothing to self-host: the agent reports to the Risal API, and you see your whole fleet in one dashboard.
Install (one line)
From the app: Servers → Add server gives you a one-line install command with a scoped token. The agent is a single Python file — no heavy stack, no database of its own.
What the agent collects (every heartbeat)
On a short interval the agent reports a compact snapshot:
- System — CPU, RAM/swap, load, every mounted disk (not just
/), network throughput, disk I/O, and the top processes by CPU/RAM. - Services — systemd units, Docker containers and PM2 processes (running/stopped counts), plus any watched services you pin.
- Web — automatic nginx and Apache vhost discovery with a live status per host, and SSL certificate expiry for each.
- Databases — Postgres, MySQL/MariaDB, MongoDB and Redis stats: size, connections, cache-hit rate, keys (detected whether the DB runs in Docker or on the host).
- Scheduled jobs — cron and systemd timers, including backup-job freshness (so a backup that silently stops gets noticed).
Alerts — before things break
The agent + backend fire debounced alerts on: service down, disk full (with a disk-fill forecast — “/var fills in ~3 days”), high CPU / RAM / load, SSL cert nearing expiry, and basic security regressions. Each alert can carry an AI root-cause summary delivered straight to Telegram — not just “CPU high”, but the likely cause, the processes involved and suggested next actions.
Actions you can run (from the UI or via AI)
The agent also executes scoped commands you trigger:
- restart a systemd service, read its logs/status
- Docker actions (start/stop/restart/logs, safe
prune) and PM2 actions journal vacuum, one-shot host diagnostics- on-demand DB backups — dump Postgres/MySQL/Mongo/Redis from the UI; non-admins are capped by a per-day team quota, and sensitive (code/config) backups stay admin-only
The same actions are available to AI agents through the Risal MCP server — so Claude can read metrics and restart a service for you.
Server types it supports
The agent adapts to what’s running on the host:
- Generic Linux servers — the baseline metrics + services above.
- Docker hosts / PM2 (Node) apps — per-container and per-process history.
- Database servers — Postgres / MySQL / MariaDB / MongoDB / Redis, with rich DB stats and one-click backups.
- Web servers — nginx / Apache vhost health + TLS expiry.
- Telephony / PBX (Asterisk, Issabel) — beyond the basics, the agent surfaces the telephony pipeline: the call-event spool (pending/failed/age), the audio/recording flow, AMI status (read-only), and call activity. Common voice stacks come as quick-add watched presets — Asterisk, VoIPmonitor, FreeSWITCH, OpenSIPS, Kamailio — so a PBX is monitored like any other server, plus its calls.
Self-update & security
- Self-updating: the agent upgrades itself when the hub advertises a newer version, verified by checksum — no manual redeploys across the fleet.
- Scoped + read-mostly: it authenticates with a per-server token; actions are limited to a known, safe set, and you control what it may do. It never opens inbound ports — it only calls out to the Risal API.