Monitoring

調試 Prometheus Blackbox Exporter http_2xx probs

  • February 22, 2022

我們正在使用 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 unavailable在 html 正文中,檢查仍然成功。

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 正文。有誰知道這是否可能並且可能有一些進一步的調試提示?

我沒有找到更多的調試選項,所以我結束了修改原始碼以列印收到的 HTML 正文。我們看到,網站開始發送壓縮數據而不是“純 HTML”。因此,檢查失敗。

現在有一個在調試模式下添加 HTML 正文的合併請求: https ://github.com/prometheus/blackbox_exporter/pull/884

引用自:https://serverfault.com/questions/1093962