Blackbox结合Prometheus做网络健康状况监控


Blackbox:支持http、https、tcp、icmp、dns的探测。但其只是用于定义以上协议的探测module和module对应的策略,并不会主动执行探测。Blackbox通过向Prometheus提供接口,通过Prometheus调用该接口,完成探测,生成相应的探测结果指标。你甚至可以直接在浏览器或者终端中执行该接口来查看探测的结果。有关Blackbox的搭建部署,网上有不少文章,这里暂不多说。这里主要说一些网上查找不到的内容。

Blackbox的官网:https://github.com/prometheus/blackbox_exporter/tree/master 这里有配置参数介绍https://github.com/prometheus/blackbox_exporter/blob/master/CONFIGURATION.md,配置样例:https://github.com/prometheus/blackbox_exporter/blob/master/example.yml 

例如接口:http://IP1:PORT/probe?target=IP2&module=icmp&debug=true   其中IP1是blackbox的IP地址。PORT是blackbox的端口,默认是9115。IP2是要探测的目标地址。module是icmp。

接口中的target根据module使用的协议会不同,如果是HTTP的就是URL;如果是TCP的,就是IP和端口;如果是DNS,则就是DNS服务器IP地址,此时blackbox在完成探测时,会主动加上53端口进行探测,至于使用TCP还是UDP,在配置文件中可配置;ICMP则是IP地址。

接口中的module是需要在blackbox的配置文件中通过modules模块事先定义好的,否则接口将报错,module不存在。单个module的名称可以随意定义,其下的prober字段决定了使用什么协议,可选择就是http、https、tcp、icmp、dns这几种。module的字段定义都在GitHub的blackbox开源工程中有介绍,可查阅。

- --log.level=debug 开启blackbox的debug

curl -X POST http://blackbox的IP:9090/-/reload  重新加载blackbox的配置

 

prometheus:它的配置文件中定义job,job的 params: module:字段引用在blackbox中预先定义好的module,如果module没有预先定义,则blackbox加载配置会失败。更多的prometheus配置可以在https://prometheus.io/docs/prometheus/latest/configuration/configuration/ 中查看

prometheus的relabel_configs不是特别好理解,网上不少都是把官网的英文用Google翻译一下拿出来用。建议多看几遍原英文描述,才能更好的理解每个字段的含义和用法。source_labels、target_label、action可能都比较好理解,有时会看见__param_target这个参数,这个参数,其实指的是param字段中的target字段,也就是该job要探测的目标target。

prometheus提供了自动发现K8s集群资源的字段kubernetes_sd_configs,该字段可以选择不通得role,不同的role会获取不同的k8s资源。但需要注意的是,需要被监控的资源需要打上对应的标签,才能被prometheus发现,并自动监控。例如:

- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_icmp_probe]
   action: keep
   regex: true

则是监控K8s集群中所有Pod中annotation做了prometheus_io_icmp_probe标记,值为true的Pod,没有打该标记的Pod不会被prometheus自动发现并监控。

最后,在prometheus的界面,通过prober_success指标可以看到所有执行prober探测的结果。

- --log-level=debug 开启prometheus的debug

 

kubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml --dry-run=client -oyaml > additional-scrape-configs.yaml   生成prometheus的配置文件,这个不同的部署方式会不同
kubectl apply -f additional-scrape-configs.yaml -n monitoring   新配置生效
curl -X POST http://prometheus的IP:9090/-/reload  重新加载prometheus的配置


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM