Advanced Configuration for Postgres Database Monitoring
Handling many relations
If your Postgres database has a large number of relations (in the thousands), Datadog recommends adding collect_database_size_metrics: false
to your instance configuration for that database. When this setting is disabled, the Agent will not run the function pg_database_size()
to collect database size statistics, which has worse performance on instances with a large number of tables.
instances:
- dbm: true
...
collect_database_size_metrics: false
Additionally, if you partition your data across tables, such that table definitions are identical except for the name, this can result in a large number or normalized queries:
SELECT * FROM daily_aggregates_001
SELECT * FROM daily_aggregates_002
SELECT * FROM daily_aggregates_003
In these cases, track these queries as a single normalized query using the replace_digits
option, so all metrics for those queries are rolled up into a single query:
SELECT * FROM daily_aggregates_?
Add the replace_digits
option to your database instance configuration in the Datadog Agent:
instances:
- dbm: true
...
obfuscator_options:
replace_digits: true
Raising the sampling rate
If you have queries that are relatively infrequent or execute quickly, raise the sampling rate by lowering the collection_interval
value to collect samples more frequently.
Set the collection_interval
in your database instance configuration of the Datadog Agent. The default value is 1 second and can be seen in the postgres/conf.yaml.example
.
Lower the value to a smaller interval:
instances:
- dbm: true
...
query_samples:
collection_interval: 0.1