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

使用Helm部署K8s时,如何让PostgreSQL版Grafana自动连接Prometheus

解决Grafana通过Helm配置无法自动连接Prometheus的问题

看起来你已经完成了Grafana和Prometheus的基础部署,并且切换了Grafana的存储到PostgreSQL,但配置的数据源没有自动生效。咱们一步步排查和解决这个问题:

1. 检查Helm Values.yaml的配置格式是否正确

首先,Grafana Helm Chart对数据源配置的格式有严格要求,你当前的配置可能存在结构错误。正确的配置应该是这样的(注意缩进和多行字符串的写法):

# 假设你的Grafana Helm release在monitoring namespace下
grafana:
  datasources:
    datasources.yaml: |
      apiVersion: 1
      datasources:
        - name: on-premis
          type: prometheus
          # 这里必须填写Prometheus服务的正确集群内地址
          # 如果Prometheus和Grafana在同一个namespace,直接用服务名+端口,比如prometheus-server:9090
          # 不同namespace的话,格式是 <service-name>.<namespace>.svc.cluster.local:9090
          url: http://prometheus-server.monitoring.svc.cluster.local:9090
          access: proxy
          isDefault: true
          editable: false
          # 可选:设置定期同步配置,确保数据库中的配置和文件一致
          updateIntervalSeconds: 30

你之前写的datasources: {}会覆盖后面的配置,导致数据源文件无法生成,必须把空的datasources字段去掉,换成上面的嵌套结构,用|来定义多行的YAML内容。

2. 验证Grafana Pod是否加载了正确的数据源配置

执行以下命令进入Grafana Pod,检查provisioning目录下的数据源文件是否存在且内容正确:

# 替换成你的Grafana Pod名称和namespace
kubectl exec -it grafana-xxxxxx-xxxxx -n monitoring -- cat /etc/grafana/provisioning/datasources/datasources.yaml

如果文件不存在或者内容和你配置的不一致,说明Helm没有正确生成对应的ConfigMap。此时需要重新部署Grafana:

helm upgrade grafana grafana/grafana -n monitoring -f your-values.yaml

3. 查看Grafana日志,排查数据源加载错误

查看Grafana的启动日志,找和数据源配置相关的报错信息:

kubectl logs grafana-xxxxxx-xxxxx -n monitoring

重点搜索provisioning datasources相关的日志,比如是否提示“数据源已存在”、“URL不可达”或者“权限错误”。如果日志显示数据源已存在,可能是因为之前用SQLite时的配置已经同步到了PostgreSQL,此时可以先在Grafana UI中删除同名数据源,然后重启Pod让配置重新加载。

4. 确认Prometheus服务在Grafana Pod内可达

网络问题是常见的连接失败原因,在Grafana Pod内测试Prometheus的连通性:

kubectl exec -it grafana-xxxxxx-xxxxx -n monitoring -- curl http://prometheus-server.monitoring.svc.cluster.local:9090

如果curl失败,说明:

  • Prometheus的服务名称或namespace填写错误
  • 两个服务不在同一个网络策略允许的范围内
  • Prometheus服务本身没有正常运行

5. 处理PostgreSQL存储的配置优先级

当Grafana使用外部数据库(PostgreSQL)时,数据库中的配置会优先于provisioning文件的配置,除非你设置了editable: false。如果之前已经有同名数据源存在于PostgreSQL中,Grafana不会自动覆盖它。你可以:

  • 在Grafana UI中手动删除旧的数据源,然后重启Pod
  • 确保provisioning配置中设置了updateIntervalSeconds,让Grafana定期同步文件中的配置到数据库

按照上面的步骤逐一排查,应该就能解决自动连接的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:50:50