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
根據這個規則可以發揮想象力,監控N多/。
閱讀更多 上海IT故事 的文章