前言

Blackbox Exporter - Prometheus Operator
prometheus-operator
blackbox_exporter/example.yml at master · prometheus/blackbox_exporter
Prometheus Operator + Blackbox exporter | 好好学习的郝

prometheus-operator 中配置 blackbox-exporter

prometheus-operator 将 prometheus 配置抽象为 k8s 的自定义资源 CRD。配置监控目标时,可选的 CRD 包括:
(1) servicemonitors:基于 k8s service、select 机制,发现监控目标,最终由 operator 自动生成 scrape 配置。
例如,kube-prometheus-stack(prometheus-community/helm-chart/kube-prometheus-stack) 自带的 node-exporter。
(2) probes:指定应如何监控 ingress 或 静态目标,最终由 operator 自动生成 scrape 配置。
适用于配置 blackbox-exporter。(查看 CRD probes.monitoring.coreos.com 的定义)
image.png
(3) podmonitors。

但通过上网搜以及实践,确认以下三种方式均可实现对 blackbox-exporter 的配置:

1. additionalScrapeConfigs

在 kube-prometheus-stack 的 helm chart 包的 values.yaml 文件中,开启 additionalScrapeConfigsSecret

  1. ## If additional scrape configurations are already deployed in a single secret file you can use this section.
  2. ## Expected values are the secret name and key
  3. ## Cannot be used with additionalScrapeConfigs
  4. additionalScrapeConfigsSecret:
  5. enabled: true #开启
  6. name: additional-configs #secret名称
  7. key: prometheus-additional.yaml #secret key

创建对应的 k8s secret:

  1. $ cat prometheus-additional.yaml
  2. - job_name: blackbox_http_2xx
  3. metrics_path: /probe
  4. params:
  5. module: [http_2xx]
  6. static_configs:
  7. - targets:
  8. - https://www.baidu.com
  9. relabel_configs:
  10. - source_labels: [__address__]
  11. target_label: __param_target
  12. - source_labels: [__param_target]
  13. target_label: instance
  14. - target_label: __address__
  15. replacement: ${blackbox-exporter-svc:port}
  16. # 新建 secret
  17. $ kubectl -n monitoring create secret generic additional-configs \
  18. --from-file=prometheus-additional.yaml
  19. # 更新 secret
  20. kubectl -n monitoring create secret generic additional-configs \
  21. --from-file=prometheus-additional.yaml --dry-run=client -o yaml | kubectl apply -f -

配置生效:
image.png

2. serviceMonitorSpec.endpoints

from: Prometheus Operator + Blackbox exporter | 好好学习的郝

  1. apiVersion: monitoring.coreos.com/v1
  2. kind: ServiceMonitor
  3. metadata:
  4. labels:
  5. name: blackbox-exporter
  6. release: prometheus
  7. name: blackbox-exporter
  8. namespace: monitoring
  9. spec:
  10. namespaceSelector:
  11. matchNames:
  12. - monitoring
  13. selector:
  14. matchLabels:
  15. name: blackbox-exporter
  16. endpoints:
  17. - interval: 15s
  18. port: http-metrics
  19. path: /probe
  20. relabelings:
  21. - action: replace
  22. regex: (.*)
  23. replacement: $1
  24. sourceLabels:
  25. - __meta_kubernetes_service_label_cluster
  26. targetLabel: cluster
  27. - action: replace
  28. regex: (.*)
  29. replacement: $1
  30. sourceLabels:
  31. - __param_module
  32. targetLabel: module
  33. - action: replace
  34. regex: (.*)
  35. replacement: $1
  36. sourceLabels:
  37. - __param_target
  38. targetLabel: target
  39. params:
  40. module:
  41. - http_2xx
  42. target:
  43. - http://prometheus.io

3. probes

创建 probe 资源保存配置:

  1. $ cat probe.yaml
  2. kind: Probe
  3. apiVersion: monitoring.coreos.com/v1
  4. metadata:
  5. name: probe-website
  6. namespace: monitoring
  7. labels:
  8. release: prometheus
  9. spec:
  10. interval: 60s
  11. module: http_2xx
  12. prober:
  13. url: blackbox-exporter.default.svc.cluster.local:9115
  14. targets:
  15. staticConfig:
  16. static:
  17. - https://www.baidu.com
  18. $ kubectl apply -f probe.yaml

配置生效:
image.png