跳转至

prometheus静态配置的方式进行黑盒监控

我的 k8s 集群是用kubeadmin 搭建的, https://github.com/prometheus-operator/kube-prometheus 已安装好

kubectl get po -n monitoring -l app.kubernetes.io/name=blackbox-exporter
kubectl get svc -n monitoring -l app.kubernetes.io/name=blackbox-exporter

验证黑盒探测是否可用

#启动一个测试pod
kubectl run netshoot --rm -it --image=registry.cn-hangzhou.aliyuncs.com/xxx/netshoot:latest -- bash
curl -v "http://blackbox-exporter.monitoring.svc.cluster.local:19115/probe?target=www.baidu.com&module=http_2xx"

编写自定义 scrape 配置文件

创建一个文件 blackbox-additional-scrape.yaml

# ======= HTTP 探测 =======
- job_name: 'blackbox-http'
  metrics_path: /probe
  params:
    module: [http_2xx]  # 使用 HTTP 模块
  static_configs:
    - targets:
      - https://www.baidu.com
  relabel_configs:
    # 把目标地址放入 __param_target 参数
    - source_labels: [__address__]
      target_label: __param_target
    # 把 target 值同时复制给 instance
    - source_labels: [__param_target]
      target_label: instance
    # 指定 blackbox-exporter 的访问地址
    - target_label: __address__
      replacement: blackbox-exporter.monitoring.svc.cluster.local:19115


# ======= TCP 探测 =======
- job_name: 'blackbox-tcp'
  metrics_path: /probe
  params:
    module: [tcp_connect]   # 使用 TCP 模块
  static_configs:
    - targets:
      - 192.168.124.1:80   # ✅ 在此写你要探测的 IP 和端口
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: blackbox-exporter.monitoring.svc.cluster.local:19115

创建 Secret 注入 Prometheus

kubectl create secret generic additional-scrape-configs \
  -n monitoring \
  --from-file=blackbox-additional-scrape.yaml

kubectl get secret -n monitoring additional-scrape-configs

#如果blackbox-additional-scrape.yaml有更新
kubectl create secret generic additional-scrape-configs \
  -n monitoring \
  --from-file=blackbox-additional-scrape.yaml \
  --dry-run=client -o yaml | kubectl apply -f -

修改 Prometheus CR 关联该 Secret

kubectl edit prometheus -n monitoring k8s

#找到 spec:下添加(或修改):
spec:
  additionalScrapeConfigs:
    name: additional-scrape-configs
    key: blackbox-additional-scrape.yaml

# 完整示例(简化片段)
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: k8s
  namespace: monitoring
spec:
  replicas: 2
  serviceAccountName: prometheus-k8s
  serviceMonitorSelector: {}
  additionalScrapeConfigs:
    name: additional-scrape-configs
    key: blackbox-additional-scrape.yaml

进入 Prometheus UI 验证状态

grafana导入模板

https://grafana.com/grafana/dashboards/13659-blackbox-exporter-probe-status/