![]() |
VOOZH | about |
Use custom_queries to collect metrics from any table the Agent’s database user can read. This extends the data available in Datadog beyond the query performance metrics that Database Monitoring collects natively, such as application state tables, business counters, or queue depths.
The Datadog Agent must be installed and the database integration configured. The Agent’s database user needs SELECT on any tables you query.
Add custom_queries to your integration’s conf.yaml file. Each entry in the list runs one SQL query and maps its output columns to metrics or tags.
| Option | Required | Description |
|---|---|---|
metric_prefix | Yes | All metrics emitted by this query begin with this prefix. |
query | Yes | The SQL to execute. All returned rows are evaluated. Use the pipe character (|) for multi-line queries. |
columns | Yes | A list of columns in the same order as your SELECT. Each column requires a name and a type. Set type to gauge, count, rate, or another metric type to emit a metric, or tag to apply the column value as a tag on every metric from this query. |
tags | No | A list of static tags applied to every metric from this query. |
Notes:
columns entries must equal the number of columns returned by the query.columns entries must match the order of columns returned by the query.columns must be a metric type (not tag).Add custom_queries to your postgres.d/conf.yaml file.
If the query reads from a table the datadog user cannot already access, grant the permission first:
GRANTSELECTON<TABLE_NAME>TOdatadog;Example: The following company table contains employee records:
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
To collect age and salary as metrics with name and address as tags:
custom_queries:- metric_prefix:postgresql.employeequery:SELECT age, salary, name, address FROM companycolumns:- name:employee_agetype:gauge- name:employee_salarytype:gauge- name:nametype:tag- name:addresstype:tagtags:- source:hr_dbAfter you update the file, restart the Agent.
For the full configuration reference, see Postgres Custom Metric Collection.
Add custom_queries to your mysql.d/conf.yaml file.
Important: All table references must include the database name (database_name.table_name). If you omit the database name, the Agent fails with the error: No database selected.
Example: The following company table in the testdb database contains employee records:
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
To collect age and salary as metrics with name and address as tags:
custom_queries:- metric_prefix:mysql.employeequery:SELECT age, salary, name, address FROM testdb.companycolumns:- name:employee_agetype:gauge- name:employee_salarytype:gauge- name:nametype:tag- name:addresstype:tagtags:- source:hr_dbAfter you update the file, restart the Agent.
For the full configuration reference, see MySQL Custom Queries.
SQL Server supports two approaches for collecting custom metrics: custom queries or performance counters.
Add custom_queries to your sqlserver.d/conf.yaml file to collect metrics from any table.
Example: The following company table in testdb contains employee records:
id | name | age | address | salary
---------------------------------------
1 | Paul | 32 | California | 20000
2 | Allen | 25 | Texas | 30000
3 | Teddy | 23 | Norway | 45000
To collect age and salary as metrics with name and address as tags:
custom_queries:- metric_prefix:sqlserver.employeequery:SELECT age, salary, name, address FROM testdb.dbo.companycolumns:- name:employee_agetype:gauge- name:employee_salarytype:gauge- name:nametype:tag- name:addresstype:tagtags:- source:hr_dbUse custom_metrics to collect metrics from sys.dm_os_performance_counters and other system DMVs.
custom_metrics:- name:sqlserver.clr.executioncounter_name:CLR Execution| Option | Required | Description |
|---|---|---|
name | Yes | The metric name in Datadog. |
counter_name | Yes | The counter name from sys.dm_os_performance_counters. |
instance_name | No | A specific counter instance. Use ALL to collect all instances (requires tag_by). |
tag_by | No | Tag name used to differentiate instances when instance_name: ALL. |
After you update the file, restart the Agent.
For the full configuration reference, including performance counter details and the legacy stored procedure method, see Collect SQL Server Custom Metrics.
After the Agent runs, search for your metrics in the Metrics Explorer.
To check for configuration errors, run the Agent’s status subcommand and look for your integration under the Checks section:
postgres
--------
- instance #0 [ERROR]: 'Missing metric_prefix parameter in custom_queries'
- Collected 0 metrics, 0 events & 0 service checks
Additional helpful documentation, links, and articles:
| |