如何使用 DataDog 中自定义 SQL 查询的附加信息创建自定义指标?

How do I create a custom metric with additional information from a custom SQL query in DataDog?

我目前正在设置监视器以监视云 SQL 数据库中的慢速查询。我构建了一个自定义查询来获取 SQL 服务器上的进程 运行,因为当前慢速查询监控在进程完成之前不会报告。要每 15-20 秒(或在 DD 中配置的任何内容)检查当前 运行 超过 5 分钟的查询,我在我的 DD 代理的配置中有这个。

    custom_queries:
      - query: SELECT COUNT(*) as processes FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TIME > 
        (5 * 60 * 1000);
        columns:
        - name: mysql.processlist.processes
          type: count
        tags:
        - staging:mysql

我在 DD 中的结果是:

如您所见,它显示了 运行 超过 5 分钟的查询计数。我如何才能获得有关每个查询的更多信息。例如,我想查看正在执行的确切查询语句。我知道我可以使用查询: SELECT INFO as QUERY FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Query'; 获取查询语句,但我希望能够单击 DD 中的图表并进一步深入每个流程以查看语句。有没有办法在 Datadog 中添加此信息或其他功能,我可以在其中将正在查询的进程分别添加到每个进程?

我的第一个想法是将自定义查询更改为:

  - query: SELECT COUNT(*) as PROCESSES, ID, INFO as QUERY FROM 
    INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Query';
    columns:
    - name: mysql.processlist.ID
      type: tag
    - name: mysql.processlist.PROCESSES
      type: count
    - name: mysql.proccesslist.QUERY
      type: tag

但这只有returns一行,包含所有进程的计数以及第一个结果的ID和查询。

# PROCESSES, ID, QUERY
'3', '61550', 'SELECT ....'

测试不同的查询后,我发现 运行 此查询按查询语句对结果进行分组,并将 return 每个结果的计数。

SELECT COUNT(*) as Query_Count, DB, INFO as Query FROM 
INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Query' AND TIME > (5 * 60 * 1000) 
GROUP BY QUERY;

在 Datadogs mysql 配置中,我为查询语句和数据库名称添加了标签。现在,由于它们已分组,我可以在 datadog 中查看每个不同语句的信息。

    custom_queries:
      - query: SELECT COUNT(*) as Query_Count, DB, INFO as Query FROM 
        INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND='Query' GROUP BY QUERY;
        columns:
         - name: mysql.processlist.Slow_Query.Query_Count
           type: count
         - name: mysql.processlist.Slow_Query.DB
           type: tag
         - name: mysql.processlist.Slow_Query.Query
           type: tag