如何在Prometheus BlackboxProbe中配置多静态规则实现Grafana标签筛选
用单个Prometheus Blackbox Probe管理多环境端点探测并支持标签筛选
问题分析
你之前尝试的多环境配置无效,是因为YAML语法中同一层级的重复键会被最后一个覆盖,导致只有最后一组static和labels生效。要实现单个Probe资源管理多环境目标并支持标签筛选,需要利用relabel规则来为不同URL绑定对应的标签。
正确配置方案
以下是针对单个应用(application11)的多环境探测配置,通过relabel规则为不同环境的URL自动添加stage标签:
apiVersion: monitoring.coreos.com/v1 kind: Probe metadata: name: 2xx-endpoints-application11 spec: interval: 30s # 探测间隔 module: http_2xx # 使用http_2xx探测模块 prober: url: blackbox:9115 # 指向Blackbox Exporter实例 targets: staticConfig: targets: # 列出所有需要探测的URL - some_url # Test环境端点 - some_url_other_stage # Acc环境端点1 - some_url_other_stagel # Acc环境端点2 relabelings: # 为Test环境URL添加stage标签 - sourceLabels: [__address__] regex: 'some_url' action: replace targetLabel: stage replacement: Test # 为Acc环境URL添加stage标签 - sourceLabels: [__address__] regex: 'some_url_other_stage|some_url_other_stagel' action: replace targetLabel: stage replacement: Acc # 统一添加application标签 - targetLabel: application replacement: application11
配置说明
- 目标列表:将所有环境的探测URL统一放在
targets数组中(注意使用targets而非你之前的static,这是Prometheus StaticConfig的标准字段)。 - Relabel规则:
- 第一条规则匹配Test环境的URL,为其添加
stage: Test标签; - 第二条规则匹配Acc环境的所有URL,添加
stage: Acc标签; - 第三条规则为所有目标统一添加
application: application11标签,避免重复配置。
- 第一条规则匹配Test环境的URL,为其添加
- 简化优化:如果你的URL命名带有环境标识(如
test-app11.example.com、acc-app11.example.com),可以用正则提取简化规则:relabelings: - sourceLabels: [__address__] regex: '([a-z]+)-app11\.example\.com' action: replace targetLabel: stage replacement: '$1' - targetLabel: application replacement: application11
Grafana筛选使用
配置生效后,Prometheus采集的Blackbox指标(如probe_success、probe_duration_seconds)会自动带上stage和application标签。在Grafana中,你可以直接通过以下方式筛选数据:
- 筛选Test环境数据:
stage="Test" - 筛选Acc环境数据:
stage="Acc" - 筛选特定应用数据:
application="application11"
内容的提问来源于stack exchange,提问作者user18050770
相关产品推荐
相关产品推荐

