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