MySQL Custom Queries

The Datadog MySQL integration can collect metrics from custom queries.

Configuration

Follow the configuration details in the MySQL conf.yaml file. Additional items of consideration are below.

Qualify your database

When adding a custom query to the MySQL conf.yaml, each table referenced must have the database qualified. This is done by prepending the table with its database name in the following format:

SELECT * FROM database_name.table_name WHERE...

If you omit the database name, the Agent fails to run the query with the error: No database selected.

Name your metric

The names applied to your query metrics are taken as provided (there are no prepends). For example, your metric name could be: myapp.custom_query.test.

Collection frequency

By default your metrics are collected by the MySQL check every 15-20 seconds. To query these metrics at a different frequency, reduce the frequency of the entire MySQL check (this affects the frequency of your general mysql.* metrics), or run a custom scheduled CRON script to submit metrics with the API or DogStatsD.

Number of custom queries

Running a large number of custom queries from the MySQL check can delay other Agent checks. If you need to collect metrics from a large number of custom MySQL queries, run a custom scheduled CRON script to submit metrics with the API or DogStatsD.

Example

You have a database named tester with the table test_table that contains the following data:

col_1 | col_2 | col_3
---------------------
1     | a     | a
2     | b     | b
3     | c     | c

Adding the following custom query to your MySQL conf.yaml collects the metric myapp.custom_query.test.b with a value of 2.

    custom_queries:
      - query: SELECT col_1 FROM tester.test_table WHERE col_2 = 'b'
        columns:
        - name: myapp.custom_query.test.b
          type: gauge
        tags:
        - tester:mysql

Further Reading

Additional helpful documentation, links, and articles: