Feature

Monitor Everything Under Your VMs

Storage, queues, load balancers, services and pools are what actually takes a private cloud down - and they are exactly the layer generic server monitoring skips. One agent covers Ceph, RabbitMQ, HAProxy, systemd, ZFS and the metrics server you run yourself.

Built for teams monitoring production infrastructure

Start free trial

No credit card · 2-minute setup

Ceph + RabbitMQ HAProxy + ZFS Open-source agent

Infrastructure Services

Metrics flowing live
Alerts configured ready
History retained ready
Ceph HEALTH_OK
3/3 mons
Backends UP
  • One Agent, No Exporters

    Every engine is a per-instance toggle on the agent you already installed. Nothing to deploy per service, no scrape config to maintain, no inbound port.

  • Alerts That Know the Domain

    A queue with zero consumers, a backend pool that lost every member, a pool that went DEGRADED, a unit that failed - each one a one-click template, not a threshold you invent.

  • Planned Work Stays Quiet

    A drained HAProxy server freezes its alert instead of resolving it, a cluster under maintenance stops paging, and a dead agent can never hold an incident open on frozen state.

Six Engines, One Agent

Ceph

Cluster health, monitor quorum, OSDs up and in, placement-group states, capacity, client I/O and recovery throughput, per-pool usage and per-OSD latency and fullness.

RabbitMQ

Per-queue depth, unacknowledged messages, consumer count and publish/deliver rates, plus per-node memory and disk alarms and file-descriptor and socket usage.

HAProxy

Per-backend status, live and total servers, sessions, session rate, queue depth, 4xx and 5xx rates and retries - plus the status of every individual server.

systemd

Per-unit state, enablement, restart counts and memory, with the failing unit's journal excerpt and reverse dependencies captured at the moment it broke.

ZFS

Per-pool health straight from zpool, capacity and fragmentation, degraded vdev counts, resilver progress and scrub errors.

Prometheus / VictoriaMetrics

Your own metrics server, checked from outside: reachability, version, series count, storage size, scrape targets down, rule failures and free disk space.

Deep dive

Ceph as a Cluster, Not a Pile of Hosts

A Ceph cluster is an organization-level object here, identified by its fsid and reported by however many of your hosts run the agent. Monitor a five-node cluster from five agents and you still get one cluster, one health verdict and one incident - not five copies of the same story. The agent reads Ceph with a scoped read-only keyring; it never needs the admin key.

Health, quorum and capacity are always derived from the reporters that are currently fresh, so the most complete one is authoritative and another takes over the moment it goes quiet. A cluster only becomes visible once two separate hosts confirm the same fsid, which is what stops a typo or a half-configured host from inventing a phantom cluster; for a genuine single-node or lab cluster you promote it yourself with one click.

Its own page charts capacity, OSD and placement-group states, monitor quorum, client throughput and IOPS as a read/write butterfly, recovery throughput and the misplaced and degraded object backlog. Below that, a per-pool table ranks pools by usage, and an OSD section names the slowest and the fullest OSDs rather than just counting how many are nearfull.

Deep dive

Queues and Load Balancers: the Two Alerts You Actually Want

RabbitMQ is polled over its management API, so it is monitored the same way from a Linux, Windows or macOS host. The alert fires when a queue crosses a depth you set or when it has zero consumers while messages are piling up - the canonical sign your workers died, and the case a depth threshold alone misses on a slow queue. One incident per queue, named for it.

HAProxy is read from the stats socket or the HTTP CSV. By default the alert watches the backend aggregate, so it pages when a whole pool is down; switch it to per-server and it pages the moment any single member fails. Pick the one that matches how you run: whole-pool keeps a rolling deploy quiet, per-server tells you about the member nobody noticed.

Both understand planned work. A backend or server in MAINT or DRAIN freezes its alert rather than resolving it, so draining a node for maintenance never sends the false all-clear that would tell you the outage is over.

Deep dive

Who Watches the Watcher

If you run Prometheus or VictoriaMetrics, it is the thing watching everything else - which means that when it dies, nothing reports the outage. The collector of outages is the collector that went down, so the failure is silent by construction and you find out when someone asks why the graphs stopped.

Fivenines checks that server as software, from outside it: reachability, flavour and version, series count and storage size, plus scrape targets down, rule evaluation failures, dropped notifications and write-ahead-log corruptions on Prometheus, or free disk space, slow inserts and rows ignored on VictoriaMetrics. Bad credentials or a TLS problem are reported as a configuration error rather than an outage, because those are different work.

The targets alert is deliberately conservative: if the targets API stops answering, it freezes instead of reporting that everything recovered. Losing visibility is not the same as being healthy, and a monitoring tool that confuses the two is worse than none.

Services and Storage on the Host Itself

systemd units, with the evidence attached

The agent collects service, timer and socket units with no sudo. When one enters failed, the alert carries the journal excerpt and the reverse dependencies captured at that moment - so the notification tells you what broke, not just that something did. One incident per unit, and you can scope it to a named list.

ZFS pools, honest about what it does not know

The zpool health word is stored exactly as zpool reports it, alongside capacity, fragmentation, degraded vdev counts, resilver progress and scrub errors. Where zpool status could not be read, the value is empty rather than zero - a blank scrub-error count and a clean one are different facts, and only one of them is good news.

Deep dive

Alerting Without Writing Rules

Seven triggers cover this layer, and every one of them ships as a one-click workflow template: Ceph cluster degraded, RabbitMQ queue backlog, HAProxy backend down, systemd service down, ZFS pool degraded, monitoring stack unreachable and Prometheus scrape targets down. Pick one from the gallery and it lands fully wired - trigger, condition and notification - and every node stays editable.

Defaults are chosen to page on the thing that matters and stay quiet otherwise. The ZFS alert watches DEGRADED, FAULTED, UNAVAIL and SUSPENDED, with OFFLINE and REMOVED available if you want them, since those are usually an operator's own doing. The systemd alert watches failed by default, with inactive opt-in. The Ceph alert watches HEALTH_ERR, and you can add HEALTH_WARN to page earlier - many clusters live in WARN, so that is your call rather than ours.

Alerts fan out per entity, so two failed units open two incidents, each named for its unit, and you know what to look at before you open anything. Everything else on the platform still applies: business-hours and maintenance gates, cooldowns, rechecks and escalation.

Alerts go where your team works: email, Slack, Microsoft Teams, Telegram, Discord, Pushover, PagerDuty or webhooks.

Included on every plan, Starter upward

No add-on and no per-integration charge. Enable as many of these as an instance runs - it still counts once against your plan's monitor limit.

How It Compares

How It Compares
Approach Setup Ceph Queues + LB Alert rules
Prometheus + Grafana Hours per stack Exporter required Exporter required Hand-written
Zabbix Per-template Official template Official template Template macros
Netdata Auto-detected Collector Collector Config files
Fivenines Toggle per host Cluster-scoped Supported One-click templates

Frequently Asked Questions

Do I need a separate agent or exporter for each service? +
No. One agent per host covers all of them. Each engine is an opt-in toggle you flip per instance - Ceph, RabbitMQ, HAProxy, systemd, ZFS, and your Prometheus or VictoriaMetrics server - and the agent only collects what you turn on. There is no exporter to deploy, no scrape config to maintain, and nothing listening on an inbound port: the agent talks outbound HTTPS only. Ceph, HAProxy, systemd and ZFS are Linux-only; RabbitMQ and the Prometheus/VictoriaMetrics check are HTTP-based, so they work from any host the agent runs on.
How does Ceph monitoring work - do I install the agent on every node? +
A Ceph cluster is an organization-level object here, identified by its fsid and reported by however many hosts run the agent, so you never get one duplicate record per monitor. A cluster becomes visible once two separate hosts confirm the same fsid, which is what stops a typo or a half-configured host inventing a phantom cluster; for a single-node or lab cluster you promote it yourself with one click. Health, quorum and capacity are always derived from the reporters that are currently fresh, and if the most complete reporter goes quiet another takes over. The agent reads Ceph with a scoped read-only keyring - no admin key.
What do the queue and load balancer alerts actually fire on? +
The RabbitMQ alert fires when a queue crosses a depth you set, or when it has zero consumers while messages are piling up - the canonical sign your workers died, which a depth threshold alone can miss on a slow queue. The HAProxy alert watches the backend aggregate by default, so it pages when a whole pool is down; switch it to per-server if you want to know the moment any single member fails. A backend or server in MAINT or DRAIN freezes its alert instead of resolving it, so planned work never sends a false all-clear. Both open one incident per queue and per backend, named for it.
Why would I monitor my own Prometheus or VictoriaMetrics server? +
Because it is the thing watching everything else. When your metrics server dies, no target reports the outage - the collector of outages is what went down - so the failure is silent by construction. Fivenines checks it as software from outside: reachability, version, series count, storage size, plus scrape targets down, rule evaluation failures and dropped notifications on Prometheus, or free disk space and slow inserts on VictoriaMetrics. Authentication and TLS problems are reported as a configuration error rather than an outage, and if the targets API stops answering the alert freezes rather than reporting a false recovery.
Are these on a paid tier? +
No. Every engine on this page is available on all plans, including Starter - there is no add-on and no per-integration charge, and each instance you monitor counts once against your plan's monitor limit however many of these you enable on it. Where plans differ is the alert channel: email, Telegram and Discord are on Starter, Slack, Microsoft Teams and Pushover on Pro, PagerDuty and webhooks on Business. Ceph, RabbitMQ, HAProxy, systemd and ZFS metrics are also available as custom dashboard panels; the Prometheus and VictoriaMetrics family currently lives on its host page and in alert thresholds, not yet as a dashboard panel.

Monitor the layer under your VMs in 2 minutes

14-day trial. No credit card required.

No credit card · 2-minute setup · Cancel anytime