Migration

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 monitorMonPG rule
postgresql.connections{*} > 80%Built-in: connections / max_connections > 0.8
postgresql.replication_delay > 60sBuilt-in: replication_lag > 60s
postgresql.deadlocks rate > 0Custom SQL on pg_stat_database.deadlocks delta
postgresql.bgwriter.checkpoints_timedBuilt-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.