使用 Prometheus 查询日志
从 2.16.0 开始,Prometheus 可以将引擎运行的所有查询记录到一个日志文件中。本指南演示了如何使用该日志文件及其包含的字段,并提供了有关如何操作日志文件的高级技巧。
启用查询日志
可以在运行时切换查询日志。当您要研究 Prometheus 实例变慢或高负载时,可以将其激活。
要启用或禁用查询日志,需要执行两个步骤:
修改配置以添加或删除查询日志配置
重新加载 Prometheus 服务配置.
将所有查询记录到文件
此示例演示如何将所有查询记录到名为 /prometheus/query.log
的文件中。我们假定 /prometheus
是数据目录,且 Prometheus 对此目录具有写权限 This example demonstrates how to log all the queries to a file called /prometheus/query.log
. We will assume that /prometheus
is the data directory and that Prometheus has write access to it.
首先,修改 prometheus.yml
配置文件
然后, 重新加载 Prometheus 配置:
或者,如果 Prometheus 没有使用 --web.enable-lifecycle
标志启动,且您不在 Windows 上运行,则可以通过将 SIGHUP
发送给 Prometheus 进程来触发重新加载。
/prometheus/query.log
文件现在应该存在,所有查询都将记录到该文件中。
要禁用查询日志,从配置中删除 query_log_file
后,重复该操作
验证查询日志是否启用
Prometheus 公开了指示查询日志是否启用并正常工作的数据指标:
如果查询日志已启用,则如上所示的第一个数据指标 prometheus_engine_query_log_enabled
将设置为 1,否则设置为0。第二个数据指标 prometheus_engine_query_log_failures_total
表示无法记录的查询数。
查询日志的格式
查询日志是 JSON 格式的日志。这是查询中字段的概述:
params
: 封装的查询信息,包含查询相关参数: 开始和结束时间,步长和实际的查询语句stats
: 封装的状态信息.此示例中,包含内部引擎计时器ts
: 查询结束的时间戳
此外,根据发送的请求,JSON 行中还可能包含其他字段。
API 查询和控制台
HTTP 请求包含客户端 IP,方法和路径:
path
将包含 Web 前缀(如果已设置),并且可以指向控制台。
clientIP
是网络 IP 地址,并且不考虑诸如 X-Forwarded-For
之类的请求头。如果您想要记录在代理之后的原始请求者,则需要在代理本身中进行记录。
记录规则和告警
记录规则和告警包含 ruleGroup
元素,该元素包含文件的路径和组的名称:
查询日志滚动
Prometheus 不会自己滚动查询日志。您可以使用外部工具来执行此操作。
logrotate 是工具之一。大多数 Linux 发行版都默认可以使用该功能
如下是您可以添加为 /etc/logrotate.d/prometheus
的文件示例:
这将每天滚动一次日志文件,并保留一个星期的历史记录。
最后更新于