4. Grafana 数据源配置:Prometheus、InfluxDB、Elasticsearch、MySQL、Loki 等数据源添加与测试

数据源是 Grafana 的“感知层”,决定了仪表盘能读取哪些监控数据。本章将逐一演示 Prometheus、InfluxDB、Elasticsearch、MySQL 和 Loki 五种主流数据源的添加流程、关键参数与连通性测试方法。

4.1 数据源配置入口与通用流程

所有数据源的添加入口统一,后续配置因协议和认证方式而异。

  1. 导航:左侧菜单 → Connections → Data sources → Add data source。
  2. 搜索:在过滤框中输入数据源类型(如 Prometheus)。
  3. 填写连接信息:URL、端口、认证凭据、数据库名等。
  4. 保存 & 测试:点击 Save & test,Grafana 会返回连通性结果。
最佳实践:生产环境建议为每个数据源创建独立的 Grafana 服务账号,并限制 IP 白名单,避免凭证泄露。

4.2 五种数据源配置详解

数据源类型 默认端口 核心配置项 认证方式 测试命令/指标
Prometheus 9090 HTTP URL Basic Auth / 无 up
InfluxDB 8086 URL、Database、User、Password / Basic Auth SHOW DATABASES
Elasticsearch 9200 URL、Index、Time field Basic Auth / GET /_cluster/health
MySQL 3306 Host、Database、User、Password User/Password SELECT 1
Loki 3100 HTTP URL Basic Auth / 无 label_names

4.2.1 Prometheus 数据源

Prometheus 是 Grafana 最常用的时序数据源,配置最简单。

# 配置示例
URL: http://prometheus.example.com:9090
Access: Server (default)
Skip TLS Verify: false (生产环境建议 true 仅限测试)
测试要点:点击 Save & test 后,Grafana 会查询 up 指标。若返回 up{job="..."} 1 表示连通成功。

4.2.2 InfluxDB 数据源

支持 InfluxQL 和 Flux 两种查询语言,配置时需指定数据库名。

# InfluxDB v1.x 配置
URL: http://influxdb.example.com:8086
Database: telegraf
User: admin
Password: ******

# InfluxDB v2.x 配置(使用 Flux)
URL: http://influxdb.example.com:8086
Organization: my-org
: my-super-secret-
Default Bucket: telegraf
版本注意:InfluxDB v2.x 默认使用 Flux 查询,若需兼容旧版 InfluxQL,需在数据源设置中手动切换查询语言。

4.2.3 Elasticsearch 数据源

适用于日志和全文搜索数据的可视化,必须指定索引名和时间字段。

# 配置示例
URL: http://elasticsearch.example.com:9200
Index: logstash-*
Time field name: @timestamp
Version: 7.x+
索引模式:支持通配符 * 匹配多个索引,如 nginx-access-*。建议使用 Index pattern 而非固定索引名,以自动包含新索引。

4.2.4 MySQL 数据源

通过 SQL 查询直接读取关系型数据库,适合业务指标监控。

# 配置示例
Host: mysql.example.com:3306
Database: myapp
User: grafana_reader
Password: ******
Max open: 10
Max idle: 2
权限最小化:建议创建只读用户:GRANT SELECT ON myapp.* TO 'grafana_reader'@'%';

4.2.5 Loki 数据源

Loki 是 Grafana Labs 的日志聚合系统,与 Prometheus 共享标签体系。

# 配置示例
URL: http://loki.example.com:3100
Maximum lines: 1000
Derived fields: (可选) 从日志中提取指标
联动调试:Loki 数据源常与 Prometheus 配合使用,通过 Derived fields 功能从日志行中提取 traceID 或 metric 标签,实现日志→指标跳转。

4.3 数据源连通性测试流程

以下 SVG 展示了从添加数据源到验证成功的完整链路。

数据源连通性测试流程 添加数据源 填写连接参数 保存 & 测试 验证结果 失败:检查日志 成功:开始建仪表盘 常见失败原因 • 网络不通 / 防火墙 • 认证凭据错误

4.4 多数据源混合调试技巧

在实际监控场景中,一个仪表盘往往需要同时查询多个数据源。Grafana 支持在同一个面板内通过 混合数据源 模式实现。

  • 混合查询:在面板编辑器中,将数据源切换为 -- Mixed --,然后为每个查询单独指定数据源。
  • 变量联动:使用 Query 类型的变量从 Prometheus 获取标签值,再传递给 Loki 或 MySQL 作为过滤条件。
  • 时间对齐:不同数据源的时间戳精度可能不同(如 Prometheus 毫秒级 vs MySQL 秒级),建议在查询时使用 $__timeFilter 宏自动对齐。
实战案例:在同一个仪表盘上,左侧面板使用 Prometheus 展示 CPU 使用率,右侧面板使用 Loki 展示对应时间窗口的应用错误日志,通过 job 标签实现关联。

4.5 数据源配置常见问题排查

错误现象 可能原因 解决步骤
“HTTP Error Bad Gateway” Grafana 无法连接数据源地址 检查网络、防火墙、DNS 解析;确认数据源服务是否运行
“401 Unauthorized” 认证凭据错误或过期 重新生成 或更新密码;检查用户权限
“index not found” (ES) 索引名不匹配或不存在 使用 GET _cat/indices 确认索引名;检查通配符
“database does not exist” (InfluxDB) 指定的数据库名不存在 执行 SHOW DATABASES 确认可用数据库
“connection refused” (MySQL) 端口未开放或 MySQL 未绑定远程 IP 修改 bind-address 为 0.0.0.0;检查安全组
安全提醒:切勿在 Grafana 数据源配置中使用 root 或 admin 级别账号。始终为每个数据源创建专用的只读用户,并定期轮换密码或 。