在使用 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 状态码了
BlackBox_exporter 调试可以使用 debug,这样便于发现问题,具体方式如下:
curl "http://hb2:9115/probe?module=http_2xx&target=https%3A%2F%2F 域名 xxx%2Fhealth&debug=true"
使用 curl 访问你复制的地址,后面参数加入 &debug=true
可以看到问题是因为访问 ipv6 地址引起的,用这种方法调试能很好的解决遇到的问题。