通过kube-prometheus-stack Helm chart覆盖prometheus.yaml配置不生效如何解决
通过kube-prometheus-stack更新Prometheus采集配置的正确方法
你在values.yaml的serviceMonitor项下直接添加configMaps和metricRelabels不符合该Chart的配置规范,不会被渲染到最终的Prometheus配置中,需要根据你的需求选择对应配置方式:
场景1:给指定业务服务添加自定义采集规则、metric重标签
- 直接修改对应业务的ServiceMonitor资源配置,在
spec.endpoints[*].metricRelabelings项下添加你需要的重标签规则,示例配置如下:
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: business-service-sm namespace: monitoring labels: release: kps # 替换为你的kube-prometheus-stack的Helm Release名称,确保Prometheus能匹配到该ServiceMonitor spec: endpoints: - port: metrics path: /metrics metricRelabelings: # 在这里添加你的metricRelabel配置 - sourceLabels: ["__name__"] regex: "unwanted_.*" action: drop selector: matchLabels: app: your-business-app # 替换为你的业务服务的label
- 修改后应用该ServiceMonitor配置,Prometheus Operator会自动同步规则到Prometheus采集配置中。
场景2:全局覆盖Prometheus的scrape_config配置、自定义全局采集规则
- 如果你需要完全自定义全局采集规则,不需要Prometheus Operator自动生成的ServiceMonitor相关采集配置,需要在kube-prometheus-stack的values.yaml中修改
prometheus.prometheusSpec下的对应配置:- 要添加全局额外采集规则,配置
additionalScrapeConfigs项:
prometheus: prometheusSpec: additionalScrapeConfigs: - job_name: "custom_global_job" static_configs: - targets: ["10.0.0.1:9100", "10.0.0.2:9100"] metric_relabel_configs: # 这里添加你的全局重标签规则- 要直接挂载自定义ConfigMap作为Prometheus主配置,提前在monitoring命名空间创建包含
prometheus.yaml字段的ConfigMap后,配置configMaps项:
prometheus: prometheusSpec: configMaps: - your-custom-prometheus-config # 替换为你创建的ConfigMap名称 - 要添加全局额外采集规则,配置
- 修改完values.yaml后执行升级命令生效:
helm upgrade <你的Helm Release名> prometheus-community/kube-prometheus-stack -n monitoring -f values.yaml
生效验证
- 访问Prometheus Web UI的
/config路径,即可查看当前生效的采集配置,确认你的改动是否已经同步。 - 若配置未同步,检查Prometheus Operator的Pod日志,排查配置格式错误、权限不足等问题。
内容的提问来源于stack exchange,提问作者Louise Lee
相关产品推荐
相关产品推荐

