03.01 kubernetesv1.16監控系列——kube-prometheus自定義blackbox

Prometheus 監控分為兩種:

  • 白盒監控
  • 墨盒監控

白盒監控 :是指我們日常監控主機的資源用量、容器的運行狀態、 數據庫 中間件的運行數據。 這些都是支持業務和服務的基礎設施,通過白盒能夠了解其內部的實際運行狀態,通過對監控指標的觀察能夠預判可能出現的問題,從而對潛在的不確定因素進行優化。

墨盒監控 :即以用戶的身份測試服務的外部可見性,常見的黑盒監控包括 HTTP探針 、 TCP探針 、 Dns 、 Icmp 等用於檢測站點、服務的可訪問性、服務的連通性,以及訪問效率等。

兩者比較 :黑盒監控相較於白盒監控最大的不同在於黑盒監控是以故障為導向當故障發生時,黑盒監控能快速發現故障,而白盒監控則側重於主動發現或者預測潛在的問題。一個完善的監控目標是要能夠從白盒的角度發現潛在問題,能夠在黑盒的角度快速發現已經發生的問題。

部署 Prometheus Blackbox 服務

  • 第一步新建configmap作為BlackBox啟動配置
  • 第二部新建BlackBox deployment和service
  • 第三步新建自定義additional規則
  • 第四步修改Prometheus的CRD使用additional作為自定義job

使用configmap新建BlackBox啟動配置

cat blackbox-configmap.yaml

<code>apiVersion: v1kind: ConfigMapmetadata:  labels:    app: blackbox-config  name: blackbox-config  namespace: monitoringdata:  blackbox.yml: |-    modules:      http_2xx:        prober: http        timeout: 10s        http:          valid_http_versions: ["HTTP/1.1", "HTTP/2"]          valid_status_codes: [200]          method: GET            memory: 60Mi            cpu: 200m        volumeMounts:        - name: config          mountPath: /etc/blackbox_exporter        args:        - --config.file=/etc/blackbox_exporter/blackbox.yml        - --log.level=debug        - --web.listen-address=:9115      volumes:      - name: config        configMap:          name: blackbox-config      nodeSelector:        kubernetes.io/role: "master"/<code>

直接執行blackbox-configmap.yaml

<code>blackbox-configmap.yamlkubectl apply -f /<code>

創建BlackBox

cat blackbox.yaml

<code>apiVersion: apps/v1kind: Deploymentmetadata:  name: blackbox-exporter  labels:    app: blackbox-exporter  namespace: monitoringspec:  selector:    matchLabels:      app: blackbox-exporter  template:    metadata:      labels:            memory: 60Mi            cpu: 200m        volumeMounts:        - name: config          mountPath: /etc/blackbox_exporter        args:        - --config.file=/etc/blackbox_exporter/blackbox.yml        - --log.level=debug        - --web.listen-address=:9115      volumes:      - name: config        configMap:          name: blackbox-config      nodeSelector:        kubernetes.io/role: "master"---apiVersion: v1kind: Servicemetadata:  labels:    app: blackbox-exporter  name: blackbox-exporter  namespace: monitoringspec:  clusterIP: None  ports:  - name: blackbox-port    port: 9115    targetPort: blackbox-port  selector:     app: blackbox-exporter/<code>

直接執行blackbox

<code>kubectl apply -f  blackbox.yaml/<code>

創建自定義規則

cat additional.yaml

<code>apiVersion: v1data: {}kind: Secretmetadata:  name: additional-configs  namespace: monitoringstringData:  prometheus-additional.yaml: |-    - job_name: "blackbox-http"      scrape_interval: 30s      scrape_timeout: 10s      metrics_path: /probe      params:        module: [http_2xx]      static_configs:      - targets:        - www.baidu.com      relabel_configs:      - source_labels: [__address__]        target_label: __param_target      - source_labels: [__param_target]        target_label: instance      - target_label: __address__        replacement: 10.6.2.121:9115type: Opaque/<code>

直接執行additional

<code>kubectl apply -f additional.yaml/<code>

根據上面常見的additional名稱和文件對象配置到 prometheus 資源對象中,直接更新 prometheus 資源對象即可:

<code>  additionalScrapeConfigs:    name: additional-configs    key: prometheus-additional.yaml/<code>

直接執行prometheus-prometheus.yaml

<code>kubectl apply -f prometheus-prometheus.yaml/<code>

驗證:

打開http://10.6.2.121:30090/targets

kubernetesv1.16監控系列——kube-prometheus自定義blackbox


kubernetesv1.16監控系列——kube-prometheus自定義blackbox

根據這個規則可以發揮想象力,監控N多/。


分享到:


相關文章: