如何使用 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
我目前正在设置监视器以监视云 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