You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用helm --set配置additionalScrapeConfigs遇YAML解析错误求助

问题排查:Helm配置Prometheus Operator additionalScrapeConfigs报错

背景

通过Helm部署包含Bitnami Prometheus Operator的应用,尝试通过--set参数配置additionalScrapeConfigs采集自定义指标,Helm部署成功但Prometheus Operator日志报错:

sync "my-application-namespace/my-application-kube-prome-prometheus" failed: creating config failed: generating config failed: generate additional scrape configs: unmarshalling additional scrape configs failed: yaml: did not find expected key

使用的Helm命令如下:

helm upgrade my-application ./.helm \
  --install
  --wait
  --atomic
  --set some_variable=1234
  # Below is the interesting part:
  --set kube-prometheus.prometheus.additionalScrapeConfigs.enabled=true
  --set kube-prometheus.prometheus.additionalScrapeConfigs.type=internal
  --set kube-prometheus.prometheus.additionalScrapeConfigs.internal.jobList="- job_name: 'my-application-metric' \
  static_configs: \
  - targets: ['my-application-metrics-service:5002'] \
    labels: \
      app: my-application" \
  --set another_variable=54321

待解决问题

  1. 排查additionalScrapeConfigs配置中的明显错误(如YAML空格、格式问题)
  2. 运行中的Pod内,Prometheus相关配置YAML的存储位置

问题1:配置错误排查

你的jobList配置存在两个核心问题:

  • YAML缩进不规范:通过--set传递多行YAML时,换行后的缩进逻辑混乱,导致解析时层级识别错误。
  • 字符串格式问题:多行YAML作为--set的字符串值,未使用正确的多行块格式,容易引发转义和解析异常。

修正后的--set参数如下:

--set kube-prometheus.prometheus.additionalScrapeConfigs.internal.jobList="|-
  job_name: 'my-application-metric'
  static_configs:
  - targets: ['my-application-metrics-service:5002']
    labels:
      app: my-application"

说明:

  • |-是YAML多行块标记,保留换行且去掉末尾空行,符合Prometheus配置的格式要求
  • 所有行统一使用2个空格缩进,确保YAML层级结构正确
  • 在GitHub Action执行时,该格式能避免shell自动篡改换行或缩进

问题2:Pod内配置文件位置

Prometheus Operator生成的配置会注入到Prometheus Pod中,核心位置:

  • 主配置文件:/etc/prometheus/prometheus.yml,additionalScrapeConfigs的内容会合并到该文件的scrape_configs段内
  • 额外配置片段:若使用ConfigMap挂载额外配置,通常存储在/etc/prometheus/config_out/目录下,可通过Pod的volumeMounts字段确认具体路径

查看配置的命令示例:

# 进入Prometheus Pod
kubectl exec -it <prometheus-pod-name> -n <namespace> -- /bin/sh

# 查看主配置文件
cat /etc/prometheus/prometheus.yml

# 查看额外配置片段
ls /etc/prometheus/config_out/
cat /etc/prometheus/config_out/*.yaml

内容的提问来源于stack exchange,提问作者David Nordvall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:25:28