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