I was paying $1,800/month to Datadog for 40 hosts. Now I pay $0. Here's the open-source stack that replaced it.
What Datadog was costing me
- 40 hosts × $15/host/month (infrastructure monitoring)
- 50M custom metrics × $0.05 per 100 = $2,500/month
- Log management: 50GB/day × $0.10/GB = $1,500/month
- APM: $31/host/month for 10 hosts = $310/month
- Total: ~$6,000/month
The metric cost was the killer. Once you exceed 100 custom metrics per host, Datadog's pricing punishes you for actually monitoring things.
My current stack
Metrics: Prometheus + Grafana
Prometheus scrapes node_exporter on each host (CPU, memory, disk, network).
Grafana queries Prometheus for dashboards.
Setup: ~3 hours. Single VM, 2 GB RAM handles my 40 hosts comfortably.
Cost: $0 (one VM at Hetzner: $5/month).
Logs: Loki + Promtail
Loki stores logs, Promtail ships them from each host.
Grafana queries both metrics AND logs in the same UI.
Setup: ~4 hours including Promtail config for journald, docker logs, and a few specific app files.
Cost: $0.
APM: SigNoz
SigNoz replaces Datadog APM. OpenTelemetry instrumentation, distributed tracing, flame graphs.
Setup: ~2 hours (the OpenTelemetry SDK changes were the most painful part).
Cost: $0 self-hosted.
Uptime: Uptime Kuma
Simple ping/HTTP monitoring. Sends Telegram alerts.
Setup: 15 minutes.
Cost: $0.
What I kept paying for
- Sentry for errors: $26/month. Worth it. The alternative is rolling your own error tracking and I don't have time for that.
- PagerDuty: $0 (free tier covers my needs).
- Better Stack for status page: $0 (free tier).
Total cost comparison
- Before (Datadog + Sentry): $6,000 + $26 = $6,026/month
- After (self-hosted + Sentry): $5 (VM) + $26 = $31/month
- Savings: $5,995/month, ~$72,000/year
What I gave up
Honestly, very little. Datadog's UX is nicer than Grafana, but Grafana is good enough. The alert noise is similar.
What I did lose:
- Auto-instrumentation for some libraries: Had to manually add OpenTelemetry SDK to a few Python services
- Real-time log streaming: Loki is batch-oriented, ~30 second lag vs Datadog's instant
- Some managed integrations: Datadog has 600+ integrations out of the box, my stack has ~50
What I gained
- No per-metric pricing: I can actually monitor everything without paying per metric
- Predictable cost: $31/month regardless of how much I monitor
- My data stays on my servers
- Custom queries: PromQL is more powerful than Datadog's query language for metrics
Migration timeline
- Week 1: Set up Prometheus + Grafana for infra metrics
- Week 2: Add Loki + Promtail for logs
- Week 3: Migrate alerts from Datadog to Alertmanager
- Week 4: Add SigNoz for APM on the most important services
- Week 5: Decommission Datadog
About 30 hours total over 5 weeks. The hardest part was getting the team used to Grafana.
When Datadog wins
- You have 5+ engineers who need polished UX
- You're a startup that values speed over cost (and your metrics are < 100M)
- You need enterprise compliance (SOC2, HIPAA) certifications Datadog has
- You don't want to spend engineering time on observability infra
For a team of 1-5 engineers watching infrastructure carefully, self-host is a no-brainer.
How I run all of this on one machine
Specs:
- Hetzner CCX13: 4 dedicated vCPU, 16 GB RAM, NVMe SSD
- Runs: Prometheus + Grafana + Loki + Promtail + SigNoz + Alertmanager + Uptime Kuma
- RAM usage at idle: 4 GB
- Disk usage: 200 GB (logs retained 30 days, metrics retained 1 year)
- Backups: 2x weekly snapshots to B2
This box is the single most cost-effective thing I've ever run.
TL;DR
Replaced $6,000/month Datadog with $5/month VM + open-source stack. Same visibility into infra, logs, and APM. Gave up some UX polish, gained predictable costs and unlimited metrics. Best engineering decision I made last year.
If you want a trial to test out the stack before committing, most of these tools run in Docker Compose in under 30 minutes.
Top comments (0)