调试 Prometheus Blackbox Exporter http_2xx 问题

调试 Prometheus Blackbox Exporter http_2xx 问题

我们正在使用 Prometheus Blackbox Exporter(blackbox_exporter,版本 0.19.0)来检查 HTTP 端点。
现在我们需要使用 来实现检查fail_if_body_matches_regexp
当 html 主体中存在某个单词时,检查应该失败。
为此,我们创建了以下 http prob 配置:

Module configuration:
prober: http
timeout: 5s
http:
    valid_http_versions:
        - HTTP/1.1
        - HTTP/2
        - HTTP/2.0
    preferred_ip_protocol: ip4
    ip_protocol_fallback: true
    fail_if_body_matches_regexp:
        - The page is temporarily unavailable
    follow_redirects: true
tcp:
    ip_protocol_fallback: true
icmp:
    ip_protocol_fallback: true
dns:
    ip_protocol_fallback: true

不幸的是,检查没有按预期进行。即使网站包含The page is temporarily unavailablehtml 主体,检查仍然成功。

Logs for the probe:
ts=2022-02-17T09:46:31.403831228Z caller=main.go:320 module=http_2xx target=https://site.local level=info msg="Beginning probe" probe=http timeout_seconds=5
ts=2022-02-17T09:46:31.403959629Z caller=http.go:335 module=http_2xx target=https://site.local level=info msg="Resolving target address" ip_protocol=ip4
ts=2022-02-17T09:46:31.500911613Z caller=http.go:335 module=http_2xx target=https://site.local level=info msg="Resolved target address" ip=XXX.XXX.XXX.XXX
ts=2022-02-17T09:46:31.501017313Z caller=client.go:251 module=http_2xx target=https://site.local level=info msg="Making HTTP request" url=https://XXX.XXX.XXX.XXX host=site.local
ts=2022-02-17T09:46:31.614236162Z caller=main.go:130 module=http_2xx target=https://site.local level=info msg="Received HTTP response" status_code=200

Metrics that would have been returned:
# HELP probe_failed_due_to_regex Indicates if probe failed due to regex
# TYPE probe_failed_due_to_regex gauge
probe_failed_due_to_regex 0

为了检查网站是否在 Prometheus Blackbox Exporter 中正确加载,我想检查测试期间收到的 html 正文。有人知道这是否可行,并且可能有进一步的调试技巧吗?

答案1

我没有找到进一步的调试选项,所以我最终修改了源代码以打印收到的 HTML 正文。我们看到,该网站开始发送压缩数据,而不是“纯 HTML”。因此,检查失败了。

现在有一个合并请求,要求在调试模式中添加 HTML 主体: https://github.com/prometheus/blackbox_exporter/pull/884

相关内容