在使用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地址引起的,用这种方法调试能很好的解决遇到的问题。