首页 > 解决方案 > 基于 DNS 查找的警报

问题描述

我目前有一些基于“tcp_connect”和“http_2xx”探测器的警报规则,它们指示了非常高级别的 TCP 和 HTTP 问题,尚未针对特定警报。

每当探测器由于 DNS 查找问题而无法成功与其目标通信时,我要么收到来自“tcp_connect”的 TCP 连接警报,要么收到来自“http_2xx”的基于 HTTP 状态代码 (0) 的警报,但是这两个警报都不是真正正确的。

我想,probe_dns_lookup_time_seconds每当 DNS 查找失败时,可能是 0,但事实并非如此,这也是合乎逻辑的。

所以我probe_http_duration_seconds{phase="resolve"}试了一下,当 DNS 查找出现问题时,这似乎是 0,但我并不真正相信这是正确的做法。

我检查了负责 DNS 查找的代码,似乎如果出现错误或无法解析 IP,它会返回“0.0”的查找时间。

https://github.com/prometheus/blackbox_exporter/blob/9935abb9a5ad75bf18e96a5b2b35b4e079948969/prober/utils.go#L94

我希望我能够得到一些保证,这是这样做的正确方法,或者得到一些反馈以找到更合适的解决方案。

注意
我不是在谈论DNS服务器的DNS探测,或者我可能对DNS探测应该用于什么有误解,显然这也是一种可能性!

标签: prometheusprometheus-alertmanagerprometheus-blackbox-exporter

解决方案


我希望我能够得到一些保证,这是这样做的正确方法,或者得到一些反馈以找到更合适的解决方案。

您想要的指标是probe_success,因为您并不真正关心导致端点关闭的原因,因为您将以一种或另一种方式对其发出警报。找出确切的问题可以在您被寻呼后完成,并且避免必须维护许多脆弱的特定原因警报。

我不是在谈论DNS服务器的DNS探测,或者我可能对DNS探测应该用于什么有误解,显然这也是一种可能性!

你的理解是正确的。


推荐阅读