站点图标 星露谷值班站长

解决probe_http_status_code状态码是0的问题

在使用 Prometheus 和 blackbox_exporter 监控网站的过程中,发现一个网站的状态码返回值一直是 0。

经过排查发现网站是没有问题的,无论是监控机请求还是别的服务器访问都是正常的,最后经过一番 Google 搜索发现,问题出在 ipv6 上面,blackbox_exporter 探测返回的是一个 ipv6 地址,而那个网站也正好也使用了又拍云的 CDN 服务。

解决方法如下:

修改 blackbox_exporter 的配置文件

modules:
  http_2xx:
    prober: http
    http:
       preferred_ip_protocol: "ipv4"

preferred_ip_protocol 默认值是 ipv6

https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md

重启 black_exporter

systemctl restart blackbox_exporter

最后获取到的就全是 200 状态码了

B

BlackBox_exporter 调试可以使用 debug,这样便于发现问题,具体方式如下:

curl "http://hb2:9115/probe?module=http_2xx&target=https%3A%2F%2F 域名 xxx%2Fhealth&debug=true"

使用 curl 访问你复制的地址,后面参数加入 &debug=true

可以看到问题是因为访问 ipv6 地址引起的,用这种方法调试能很好的解决遇到的问题。

退出移动版