Self-hosted vs SaaS monitoring: when each makes sense
Genuinely balanced comparison of self-hosted vs SaaS monitoring for Docker. Real costs, real tradeoffs, data sovereignty, and at what scale self-hosting wins.
The self-hosted vs SaaS monitoring debate comes up constantly in infrastructure discussions. The self-hosted camp argues data sovereignty, cost at scale, and freedom from vendor lock-in. The SaaS camp argues zero operational overhead, always-available infrastructure, and focus on your actual product. Both sides are right, in context. This post is the balanced take — real costs on both sides, honest about when each wins.
The real costs of self-hosting monitoring
Self-hosting monitoring tools (Grafana + Prometheus, Netdata, VictoriaMetrics, etc.) is not free. Let's actually count the costs.
Infrastructure cost
At minimum, self-hosted monitoring needs a dedicated server or significant resources on an existing server. For a 5-10 host Docker monitoring setup:
Prometheus: 1-2 CPU, 2-4 GB RAM (with 30-day retention)
Grafana: 0.5 CPU, 1 GB RAM
Alertmanager: 0.25 CPU, 512 MB RAM
cAdvisor (per host): 0.1 CPU, 256 MB RAM
Total monitoring overhead per host: ~0.3 CPU, 512 MB RAM
Dedicated monitoring server (if desired): $15-40/month VPS
If you add a dedicated monitoring VPS: $15-40/month. If you run it on existing servers, you're using resources that would otherwise serve your application.
Engineering time cost
This is the cost most comparisons ignore. Engineering time is expensive. Even if the software is free, building and maintaining it isn't.
Initial setup: 4-8 hours for a competent engineer to set up Prometheus + Grafana + Alertmanager with proper configuration, alerts, and dashboards.
Annual maintenance:
- Version updates (4-8x/year): 1-2 hours each
- Broken dashboard after a Grafana update: 1-4 hours
- Prometheus storage full (it happens): 1-3 hours
- Alertmanager config changes (new team member, channel change): 30 min each
- Infrastructure incidents where monitoring also goes down: ???
Conservative estimate: 40-60 hours/year of engineering time on monitoring maintenance. At $100/hour blended engineering cost, that's $4,000-6,000/year in hidden cost.
The reliability paradox
This is the most overlooked problem with self-hosted monitoring: your monitoring system must be more reliable than the things it monitors.
If your application has a bad deployment that brings down 3 containers — including the one running Prometheus — you're now in an incident with no monitoring. You don't know what happened, when it started, or what failed first. The monitoring that was supposed to help you debug the incident is down.
Professional SaaS monitoring runs on infrastructure entirely separate from your application. When your production environment has a major incident, the monitoring keeps running. When you're most stressed and need observability most, it's there.
Managing the reliability of self-hosted monitoring (replication, backups, failover) adds more operational complexity and cost.
The real costs of SaaS monitoring
SaaS monitoring has its own cost structure.
Subscription cost
Varies widely:
- Grafana Cloud Free tier: $0 (with limits)
- Datadog Pro: $23/host/month ($1,380/year for 5 hosts)
- Kernus Pro: $29/month ($348/year for 5 hosts)
- Netdata Cloud: $5-10+/host/month
For a 5-host setup: $348-1,380/year in subscription costs.
Vendor dependency
Once your monitoring data lives in a SaaS platform, switching costs are real. Historical data may not be exportable, dashboards need to be recreated, team workflows are built around the tool. This is a legitimate concern, especially for enterprises.
Data sovereignty
Sending your container metrics (CPU, memory, container names, command arguments) to a third-party cloud is a concern for some organizations. Questions to ask:
- Where is the data stored geographically? (EU vs US data residency)
- Who has access to it within the vendor's organization?
- Is it used to train ML models or products?
- Does your compliance framework (GDPR, HIPAA, SOC 2) restrict this?
For most container monitoring data (CPU percentages, memory usage), the data sensitivity is low. Container names and command arguments occasionally contain environment variables or service details that are more sensitive. Understand what your monitoring agent is sending before choosing a SaaS tool.
At what scale does self-hosting win on cost?
Let's build the crossover model:
SaaS cost (Kernus as example):
- 5 hosts: $29/month = $348/year
- 20 hosts: $99/month = $1,188/year
- 100 hosts: ~$499+/month = $5,988/year
Self-hosted cost (Prometheus + Grafana + dedicated server):
- Infrastructure: $30/month = $360/year
- Engineering time (40h/year × $100/h): $4,000/year
- Total: ~$4,360/year (largely fixed cost, scales with number of stacks, not hosts)
The crossover mathematics:
At low host counts, SaaS wins — the engineering time for self-hosting is much more expensive than the subscription. As host count grows and moves toward enterprise scale, self-hosting's fixed cost structure becomes attractive if the team has the expertise and bandwidth to manage it.
The practical crossover: around 50-100 hosts where the SaaS bill exceeds ~$5,000/year and you have a dedicated platform team. Before that point, SaaS is almost certainly cheaper when you count engineering time.
Data sovereignty: the valid argument for self-hosting
Some organizations genuinely can't send infrastructure data to a third-party SaaS. This includes:
- Defense contractors with data residency requirements
- Healthcare organizations where HIPAA scope is unclear and legal counsel errs on the side of caution
- Financial services with strict data sovereignty requirements
- Companies in the EU with strict interpretations of GDPR and data transfer rules
For these organizations, self-hosting isn't optional — it's a compliance requirement. Tools like VictoriaMetrics (OSS), Grafana OSS, and Thanos are purpose-built for this use case.
For everyone else: container metrics are not sensitive data. CPU percentages and memory usage are not PII. The data sovereignty argument is often overcorrection.
Who should self-host (honest recommendation)
Self-hosted monitoring is the right choice if all of the following are true:
- You have 100+ hosts where SaaS costs exceed $5,000+/year
- You have at least one dedicated platform/infrastructure engineer who maintains it
- Your compliance requirements restrict third-party SaaS for infrastructure data
- You have the institutional knowledge to manage monitoring infrastructure reliably
Or if you're running a homelab and the goal is learning infrastructure skills — self-hosting is great for that.
Who should use SaaS monitoring (honest recommendation)
SaaS monitoring is the right choice if:
- You have fewer than 50 hosts
- Your engineering team's time is better spent on your product
- You don't have strict data sovereignty requirements
- You want your monitoring to stay up even when your infrastructure has an incident
The majority of startups, small teams, and indie projects meet these criteria. Paying $29-99/month for monitoring that works immediately and stays up during incidents is genuinely worth it.
The middle path: hybrid
Some teams run hybrid setups:
- SaaS for alerting and uptime (Kernus, Grafana Cloud free tier) — because alerting must stay up
- Self-hosted for detailed dashboards (Grafana + local Prometheus with short retention) — because you want the flexibility of custom dashboards and have short-term metric history locally
This separates the reliability-critical part (alerting) from the nice-to-have part (custom dashboards). If your self-hosted Grafana goes down, you still get paged when a container dies.
Specific self-hosted tools worth knowing
VictoriaMetrics — drop-in Prometheus replacement with much better compression and query performance. Free OSS, excellent at scale. Our first choice if we were self-hosting.
Beszel — lightweight Docker monitoring, multi-host, genuinely good UI. For teams where zero SaaS cost is the constraint.
Grafana + Thanos — Grafana for dashboards, Thanos for long-term Prometheus metric storage. The enterprise self-hosted stack.
For how much SaaS monitoring actually costs: Datadog is too expensive — alternatives comparison. For the free self-hosted option comparison: Docker monitoring on a budget.
Try Kernus free
Set up Docker monitoring in 2 minutes. Free for 1 host — no credit card required.
Start monitoring