数据源 provisioning 是什么
用 YAML 文件声明数据源,Grafana 启动时自动加载,并默认每 10 秒检查文件变更后生效。它把数据源配置变成代码:容器化部署与多环境复制只需同一份文件,避免手工在界面上点选。密码等敏感字段放在 secureJsonData 里,与普通 jsonData 分开管理。
基本信息
| 配置目录 | /etc/grafana/provisioning/datasources |
|---|---|
| 文件格式 | YAML,含 apiVersion: 1 |
| 敏感字段 | secureJsonData |
| 默认 editable | true(界面可改) |
| 生效方式 | 默认每 10 秒检查变更并加载 |
| 配套能力 | provisioning/dashboards 声明看板 |
典型使用场景
- 容器化部署时随镜像外的配置加载数据源,避免每次重建都要点界面
- 多环境(测试/预发/生产)用同一份模板改一处 URL 即完成复制
- 把数据源纳入版本管理,变更走评审流程
- 批量接入多个 Loki 或 Prometheus 实例,统一命名规则
- 给不同团队 provision 各自的数据源与权限范围
- 与看板 provisioning 配合,实现整套监控即代码
datasources 配置
datasources 配置
# 文件:/etc/grafana/provisioning/datasources/prom.yml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
access: proxy
isDefault: true
editable: false
jsonData:
httpMethod: POST
timeInterval: 15s
secureJsonData:
basicAuthPassword: ${PROM_PASSWORD} # 密码走安全字段常用字段
| 字段 | 作用 | 注意 |
|---|---|---|
| name / type | 数据源名称与类型 | name 是查询引用键 |
| url | 访问地址 | 容器内要用服务名 |
| isDefault | 默认数据源 | 看板未指定时使用 |
| editable | 是否允许界面修改 | 设为 false 防止被覆盖 |
| secureJsonData | 敏感字段 | 密码、Token 放这里 |
密码类字段放 secureJsonData,普通 jsonData 的明文内容可以通过 API 读回,放密码等于公开。
editable 留空(默认 true)时界面仍可修改,改完会在下次 provision 时被文件覆盖回去,表现为「改了又变回原样」。
provision 文件里写死密码会进入镜像与仓库,生产环境应引用密钥管理或环境变量注入。
provisioning 与手工创建的数据源并存时容易混淆:建议统一走文件,界面侧把 editable 关掉,避免出现同名两份配置。
多数据源共存时用 isDefault 指定一个默认值,否则新建看板会随机挑一个,做出来的面板在不同环境表现不一致。
数据源改名等于换引用键:引用该数据源的看板与告警会找不到数据源,改名要连同引用一起改。