Why does per-server monitoring stop working at ten servers?
With two or three servers you can open each one and look. At ten, checking takes the morning; at fifty, nobody checks and you find out from a customer. Three things break: there is no single answer to "which server needs me first", every server alerts on its own so one incident becomes a flood, and a fix has to be repeated by hand on each box.
A fleet needs the opposite: one list ranked by how bad things are, one alert per cause, and one place to act on many servers at once. Everything below is about those three.
How do you add every server without configuring each one?
Pick whichever matches how the servers are created. With Opservo all four register the server into the same workspace, with no config file on the box:
- •By hand: one command per server, generated in the dashboard with a one-time token
- •Ansible: the opservo.opservo_agent role on Ansible Galaxy installs it across an inventory
- •Auto Scaling groups and golden images: a fleet enrollment key in the launch template; clones of an AMI detect they are a new machine and register themselves, and instances that scale in are archived automatically
- •Kubernetes: one kubectl apply with a read-only in-cluster agent per cluster
curl -sSL https://api.getopservo.com/install.sh | sudo env OPSERVO_API_URL=https://api.getopservo.com OPSERVO_TOKEN=<token> bashEach agent discovers its own services, containers, virtual hosts, ports, databases and log sources, so a new server is fully monitored a minute after it boots, with nothing to describe centrally.
What does one view of the whole fleet look like?
The fleet grid shows every server with the same 0–100 health score, its security score, open critical findings and service count, sorted so the worst server is at the top. Because the score is deterministic (named rules with fixed thresholds), a 62 on one server means the same as a 62 on another, which is what makes ranking across servers honest.
Tags turn the grid into an inventory: client:acme, role:db, env:prod. Filter by tag, see the worst server in a client group, or open a fleet-wide Issues view that lists every open finding across every server, worst first, and resolve them one at a time or in bulk. A weekly plain-English fleet report names what regressed and the single most important action.
How do you keep alerts from multiplying?
- •Correlation: when a full disk takes down MySQL and the app starts logging connection errors, you get one alert for the disk with the failed service and the log errors nested under it
- •Throttling: the same finding does not re-page within 24 hours, and a resolved alert sends one green notice instead of silence
- •One channel set for the workspace (Slack, email, Telegram, webhook, PagerDuty or OpsGenie) and an on-call schedule with escalation, so a critical on any server reaches whoever is on
- •External uptime checks that keep working when a server, or its agent, is down
How do you act on many servers at once?
Fleet runs take one command, a saved runbook or a file push and run it on servers chosen by tag or by hand: preview who runs and who is skipped and why, roll out to 1, 25 or 50 percent first, stop at the first failure, and read every server’s output in one table. Runs can be scheduled, and a dry run shows the plan without touching anything. A tabbed terminal keeps several servers open side by side, and a live shell session is available per server for the cases that need vim or top.
All of it uses the same guardrails as a single server: remote actions are off per server until an owner turns them on, every command is signed, confirmed and kept in an audit log, and the agent pulls commands over its outbound connection rather than listening for them.
Which approach fits which fleet?
| Approach | Works until | Weak spot |
|---|---|---|
| SSH and a shell script per server | About 5 servers | No ranking, no alerts, every check is manual |
| Prometheus, node_exporter and Grafana | As long as someone owns it | Weeks of setup; dashboards, not conclusions |
| Ansible or a configuration tool alone | Any size, for changes | Tells you nothing about health between runs |
| Opservo | 2 to a few hundred servers | Linux and Kubernetes only; no Windows |
Monitoring many servers: what each approach gives a small team
Last updated 2026-10-20.