描述
借助 prometheus,你可以从 CoreDNS 和任何包含指标的插件导出指标。指标的默认位置是 localhost:9153
。指标路径固定为 /metrics
。
除了 Prometheus Go 客户端 导出的默认 Go 指标之外,还会导出以下指标
coredns_build_info{version, revision, goversion}
- CoreDNS 自身的相关信息。coredns_panics_total{}
- 崩溃总数。coredns_dns_requests_total{server, zone, view, proto, family, type}
- 查询总数。coredns_dns_request_duration_seconds{server, zone, view, type}
- 处理每个查询的持续时间。coredns_dns_request_size_bytes{server, zone, view, proto}
- 请求大小(以字节为单位)。coredns_dns_do_requests_total{server, view, zone}
- 设置了 DO 位的查询coredns_dns_response_size_bytes{server, zone, view, proto}
- 响应大小(以字节为单位)。coredns_dns_responses_total{server, zone, view, rcode, plugin}
- 每个区域、rcode 和插件的响应。coredns_dns_https_responses_total{server, status}
- 每个服务器和 http 状态码的响应。coredns_dns_quic_responses_total{server, status}
- 每个服务器和 QUIC 应用程序码的响应。coredns_plugin_enabled{server, zone, view, name}
- 指示是否在每个服务器、区域和视图的基础上启用插件。
几乎每个计数器都有一个标签 zone
,即用于请求/响应的区域名。
使用的额外标签有
server
用于标识负责请求的服务器。这是一个字符串,格式为服务器的监听地址:<scheme>://[<bind>]:<port>
。也就是说,对于“正常”DNS 服务器,这是dns://:53
。如果你正在使用 bind 插件,则包含 IP 地址,例如:dns://127.0.0.53:53
。proto
保存响应的传输(“udp”或“tcp”)- 传输的地址族 (
family
)(1 = IP(IP 版本 4),2 = IP6(IP 版本 6))。 type
保存查询类型。它保存大多数常见类型(A、AAAA、MX、SOA、CNAME、PTR、TXT、NS、SRV、DS、DNSKEY、RRSIG、NSEC、NSEC3、HTTPS、IXFR、AXFR 和 ANY)和“other”,后者将所有其他类型汇总在一起。status
保存 https 状态码。可能的值有- 200 - 处理了请求,
- 404 - 请求已在验证时被拒绝,
- 400 - 从请求到 DNS 消息的转换失败,
- 500 - 处理以无响应结束。
plugin
标签保存将响应写入客户端的插件的名称。如果服务器执行了写入(例如在错误时),则值为 "empty"。
如果启用了监控,则在插件链中未输入的查询将使用假名称“已删除”导出(没有句点结尾 - 这从未是有效的域名)。
启用prometheus插件时,其他插件可能会导出其他状态。这些状态在每个插件的 README 中都有记录。
此插件每个服务器块只能使用一次。
语法
prometheus [ADDRESS]
对于要查看其指标的每个区域。
它可以选择采用将指标导出的绑定地址;默认情况下侦听`localhost:9153`。指标路径固定为`/metrics`。
示例
使用备用侦听地址
. {
prometheus localhost:9253
}
或通过环境变量(Corefile 中全面支持):`export PORT=9253`,然后
. {
prometheus localhost:{$PORT}
}
缺陷
在重新加载时,Prometheus 处理程序在启动新服务器实例之前停止。如果新服务器启动失败,那么初始服务器实例仍然可用,DNS 查询仍然可用,但 Prometheus 处理程序仍然处于关闭状态。在成功重新加载或完全重新启动 CoreDNS 之前,Prometheus 不会回复 HTTP 请求。只有注册为处理程序的插件在`coredns_plugin_enabled{server, zone, name}` 中可见。截至今天,不会报告插件 reload 和 bind。