Cloud monitoring services want your metrics. Datadog charges $15/host/month and sends every CPU reading to their servers. New Relic collects telemetry across your entire stack. Grafana Cloud limits free accounts to 10,000 metric series, then charges $8 per 1,000 more.
If you’re self-hosting apps to keep control of your data, sending all your server metrics to a third-party cloud defeats the purpose.
These six self-hosted monitoring tools run on your own infrastructure. Your metrics stay on your servers. No data leaves your network. No per-host pricing. No vendor lock-in.
1. Beszel – Best Lightweight Server Monitor
Beszel is a server monitoring tool built as a single Go binary. It tracks CPU, memory, disk, network, and Docker container stats with a web dashboard that takes five minutes to deploy.
Why self-hosters pick it:
- Agent uses under 10MB of RAM per server
- Per-container Docker CPU, memory, and network metrics
- Historical data stored locally (days, weeks, months)
- Two components total: hub + agent. No config files
- MIT license – no usage limits, no telemetry
What it monitors: CPU (per-core), memory (used/cached/swap), disk (per mount), network (per interface), temperature sensors, GPU usage, and per-container Docker stats.
Setup: Deploy the hub with Docker, add an agent to each server with a single command. Total setup time for 3 servers: about 10 minutes.
Limitations: No custom metrics, no log viewing, fixed dashboard layout. If you need application-level metrics or PromQL queries, Beszel isn’t the right tool.
Best for: Homelabs, small VPS fleets, Docker-heavy setups. The default starting point for self-hosted monitoring in 2026.
2. Netdata – Best for Deep Metrics
Netdata collects 2,000+ system metrics at one-second resolution. If Beszel is a dashboard, Netdata is a full observatory.
Why self-hosters pick it:
- 2,000+ metrics collected automatically
- One-second granularity (most tools poll every 15-60 seconds)
- AI-powered anomaly detection
- Per-process resource tracking
- Community dashboards for hundreds of applications
The trade-off: Each agent uses 200-500MB of RAM. On a Raspberry Pi or a $5 VPS, that’s a significant chunk of your resources. And 2,000 charts means scrolling past hundreds of metrics you’ll never check to find the three you care about.
Netdata Cloud: The free tier limits you to 5 nodes. Pro costs $5/node/month. If you want the cloud features without the cloud, you can run Netdata agents standalone – but you lose the multi-server dashboard.
Best for: Teams running production infrastructure who need one-second resolution and don’t mind the RAM cost.
3. Uptime Kuma – Best for Availability Monitoring
Uptime Kuma monitors whether your services are reachable. It checks HTTP endpoints, TCP ports, DNS records, ping, Docker containers, and more – then alerts you when something goes down.
Why self-hosters pick it:
- 90+ notification channels (Slack, Discord, Telegram, email, webhooks)
- Built-in status pages with custom branding
- Check intervals down to 20 seconds
- SSL certificate expiry monitoring
- Maintenance windows to suppress alerts during updates
- ~30-50MB RAM
What it doesn’t do: Uptime Kuma checks if services respond. It doesn’t track server resources (CPU, memory, disk). Your server could be at 95% CPU and Uptime Kuma wouldn’t alert you until the service stops responding.
The pairing that works: Beszel for resource metrics + Uptime Kuma for availability monitoring. Together they cost under 60MB of RAM and cover both “is my server healthy?” and “is my website up?”
Best for: Anyone running services that need to stay online. Essential for self-hosted WordPress sites, quiz platforms, or any app where downtime affects users.
If you’re running a Quiz and Survey Master installation on a self-hosted WordPress server, Uptime Kuma catches the moment your quiz page stops loading – before your users notice. Pair it with Beszel to see whether the cause is MySQL eating all available RAM or a PHP process stuck in a loop.
4. Dozzle – Best for Docker Logs
Dozzle is a real-time Docker log viewer with a web UI. It doesn’t monitor metrics – it lets you read container logs without SSH-ing into your server and running docker logs.
Why self-hosters pick it:
- Streams logs from all containers in real-time
- Regex search across container output
- JSON log auto-detection and formatting
- SQL-powered log queries (DuckDB under the hood)
- Multi-host log viewing
- ~10MB RAM
The complement to Beszel: Beszel tells you which container is using too much CPU. Dozzle tells you why – the error messages, the stack traces, the query that’s running for 30 seconds.
Best for: Anyone running Docker containers who wants a clean log viewer without deploying a full ELK or Loki stack.
5. Glances – Best Terminal-Based Monitor
Glances is a cross-platform system monitoring tool that runs in the terminal. Think htop with more data – CPU, memory, disk, network, processes, sensors, and Docker stats in a single view.
Why self-hosters pick it:
- Per-process CPU and memory tracking
- Hardware sensor readings (temperature, fan speed, voltage)
- Runs on Linux, macOS, and Windows
- Export to InfluxDB, Prometheus, or CSV
- No web server required – runs in your terminal
- 50-100MB RAM
The limitation: Terminal-first. The web UI exists (glances -w) but it’s basic. No multi-server dashboard. No built-in historical data without setting up InfluxDB. No alerting integrations.
Best for: SSH-heavy workflows where you want a quick system overview. Pairs well with Beszel for always-on monitoring while Glances handles ad-hoc debugging.
6. Prometheus + Grafana – Best for Custom Dashboards
The enterprise standard. Prometheus scrapes metrics. Grafana visualizes them. Together they power monitoring at companies like Spotify, GitLab, and DigitalOcean.
Why self-hosters pick it:
- Infinite customization (build any dashboard you can imagine)
- PromQL for complex metric queries
- Thousands of community dashboards and exporters
- Alertmanager for routing alerts to Slack, PagerDuty, email
- Long-term metric storage and retention policies
The cost: Four components minimum – Prometheus, node_exporter, cAdvisor (for Docker), and Grafana. Each has its own config. Total RAM: 500MB-1GB+. Setup time: 2-8 hours for a working dashboard. PromQL has a steep learning curve.
Best for: Production infrastructure teams and SREs who need custom metrics, multi-datasource dashboards, and complex alerting rules. Overkill for homelabs.
Comparison Table
| Tool | Monitors | RAM | Setup | Data Stays Local | License |
|---|---|---|---|---|---|
| Beszel | Server + Docker metrics | <10MB/agent | 5 min | Yes | MIT |
| Netdata | 2,000+ system metrics | 200-500MB | 15 min | Yes (agent only) | GPL v3+ |
| Uptime Kuma | Endpoint availability | 30-50MB | 5 min | Yes | MIT |
| Dozzle | Docker logs | ~10MB | 2 min | Yes | MIT |
| Glances | System + processes | 50-100MB | 2 min | Yes | LGPL v3 |
| Prometheus + Grafana | Custom metrics | 500MB-1GB+ | 2-8 hours | Yes | Apache/AGPL |
For a deeper comparison with real-world cost scenarios and resource usage benchmarks, see this detailed monitoring tools comparison with resource usage numbers.
Which Stack Should You Build?
Most self-hosters don’t need one tool – they need a combination. Here are the three most practical stacks:
The Minimal Stack (<20MB RAM): Beszel + Dozzle. Server metrics + Docker logs. Covers 90% of monitoring needs for homelabs. Takes 10 minutes to deploy.
The Complete Stack (<80MB RAM): Beszel + Dozzle + Uptime Kuma. Add availability monitoring and status pages. Know when something breaks, why it broke, and whether your services are responding. 15 minutes to deploy.
The Enterprise Stack (500MB+ RAM): Prometheus + Grafana + Alertmanager. Custom dashboards, PromQL, multi-datasource views, PagerDuty integration. Only worth the complexity if you need custom metrics or run 50+ servers.
The Privacy Argument
Every cloud monitoring service stores your metrics on their infrastructure. That includes:
- Server hostnames and IP addresses
- Resource usage patterns (when your servers are busy)
- Docker container names (revealing what software you run)
- Network traffic patterns
For a homelab or personal server, this data paints a detailed picture of your digital life. For a business, it’s operational intelligence sitting on someone else’s servers.
Self-hosted monitoring keeps all of this on your own hardware. Beszel’s MIT license means no telemetry, no phone-home, no data collection. Your metrics never leave your network.
Getting Started
Start with Beszel. It takes five minutes, uses minimal resources, and covers the metrics most self-hosters check daily. Add Dozzle when you need Docker logs. Add Uptime Kuma when you need availability alerts.
You don’t need a 4-component Prometheus stack to answer “is my server healthy?” Start lightweight. Add complexity when you outgrow it.