如何在prometheus-operator栈中配置排除指定服务的监控
完全可以实现,你只需要调整Prometheus CR的重标记(relabel)配置,在服务发现阶段过滤掉foo、bar两个服务即可,原有默认全量监控其他服务的逻辑不会受影响。
操作步骤
1. 确认过滤规则匹配维度
Prometheus对K8s服务做服务发现时,会自动注入__meta_kubernetes_service_name元标签,值为对应服务的名称,我们就基于这个标签做过滤。
2. 调整Prometheus CR配置
找到你集群中已部署的Prometheus自定义资源对象,在spec字段下新增如下配置:
apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: <你的Prometheus实例名> namespace: monitoring spec: # 你原有的所有配置(比如serviceAccountName、requests、replicas、serviceMonitorSelector等)全部保留,仅新增以下两段配置 # 过滤ServiceMonitor关联的服务 serviceMonitorRelabelings: - sourceLabels: ["__meta_kubernetes_service_name"] regex: "(foo|bar)" action: drop # 过滤PodMonitor关联的Pod资源 podMonitorRelabelings: - sourceLabels: ["__meta_kubernetes_service_name"] regex: "(foo|bar)" action: drop
配置提交后,Prometheus Operator会自动触发Prometheus配置重载,不需要手动重启实例。
3. 验证过滤生效
打开Prometheus Web UI,进入/service-discovery路径,搜索foo、bar对应的服务目标,确认目标状态显示为Dropped即代表过滤成功。
如果你额外配置了基于
prometheus.io/scrape注解的自动抓取job,需要在对应scrape job的relabel_configs字段下添加和上文完全一致的drop规则,否则注解匹配的服务不会触发上述过滤逻辑。
内容的提问来源于stack exchange,提问作者alexis
相关产品推荐
相关产品推荐

