Migration from Datadog DBM
Replace Datadog Database Monitoring with MonPG. Cost savings + better PG-specific tooling.
Customers who switch from Datadog DBM to MonPG usually do it for one of two reasons. The first is cost: DBM is per-host, MonPG is per-server with database-count caps inside that, and most teams see 60-80% reduction. The second is depth: MonPG has features built specifically around Postgres internals (hypopg-driven Index Advisor, pgstattuple-based VACUUM Advisor, GUC drift detection) that DBM doesn't ship. If you only use Datadog for DB monitoring, you're paying for half a platform.
If Datadog is also your APM and infra observability tool — which is the common case — you don't have to rip it out. MonPG can export OTLP back into Datadog (via our OTLP exporter) so DB metrics show up in your existing dashboards, just produced by a tool that goes deeper.
Agent footprint
Both tools install a process that reads pg_stat_statements + pg_stat_*. The Datadog Agent is a generalist — many integrations beyond Postgres — and runs around 150MB RSS. The MonPG collector is Postgres-only and runs around 30MB. If you're tight on the box, that delta matters.
Run them in parallel
Two read-only roles on the same database is harmless. They query the same views, neither writes. The standard playbook is: install MonPG alongside Datadog DBM, run for two weeks, compare data quality (top queries, plan capture, latency outliers) on real production traffic. Cut over once you trust the new picture.
Mapping monitors to rules
Most Datadog monitors map cleanly to MonPG built-in rules:
| Datadog monitor | MonPG rule |
|---|---|
| postgresql.connections{*} > 80% | Built-in: connections / max_connections > 0.8 |
| postgresql.replication_delay > 60s | Built-in: replication_lag > 60s |
| postgresql.deadlocks rate > 0 | Custom SQL on pg_stat_database.deadlocks delta |
| postgresql.bgwriter.checkpoints_timed | Built-in: checkpoint frequency anomaly |
The deadlock one is a custom SQL because Datadog tracks rate-of-deadlocks while MonPG ships with a delta-based built-in that's usually sensitive enough. If you want exact behavioral parity, the custom SQL above gives it.
The cutover
When you're confident in MonPG: turn off the Datadog Postgres integration in Agent config (remove postgres.d/conf.yaml or set min_collection_interval: 0), drop the Datadog read-only role from your DB if it's not used elsewhere, uninstall the Datadog Agent if it was running only for Postgres, and cancel the DBM SKU on your Datadog subscription. DBM bills separately from APM and Infra, so you can drop just that line.