3. Grafana 数据源配置:数据源概念、支持的数据源类型与添加配置
数据源是 Grafana 的“数据引擎”。没有数据源,仪表盘只是一张空白的画布。本章将系统讲解数据源的核心概念、Grafana 支持的主流数据源类型,并手把手完成第一个数据源的添加与配置。
3.1 数据源概念
在 Grafana 中,数据源(Data Source) 是一个抽象层,它定义了 Grafana 如何连接到外部存储系统、如何查询数据以及如何解析返回的结果。每个仪表盘上的面板(Panel)都必须绑定一个数据源,才能渲染出图表或表格。
核心要点:数据源本身不存储数据,它只负责“桥接”Grafana 与后端数据库或监控系统。Grafana 通过数据源插件(Plugin)与不同类型的后端通信。
数据源配置的核心属性包括:
- 名称(Name): 在 Grafana 中唯一标识该数据源,仪表盘面板通过名称引用。
- 类型(Type): 指定后端系统类型,如 Prometheus、MySQL 等。
- 连接地址(URL): 后端服务的 HTTP/HTTPS 或 TCP 端点。
- 认证信息(Auth): 包括 Basic Auth、、TLS 证书等。
- 数据库/存储路径(Database/Path): 部分数据源需要指定具体数据库名或路径。
3.2 支持的数据源类型
Grafana 支持数十种数据源,按使用场景可分为以下几大类。以下表格列出了最常用的数据源及其典型用途:
| 数据源类型 | 协议/查询语言 | 典型场景 | 推荐用途 |
|---|---|---|---|
| Prometheus | PromQL (HTTP API) | 云原生监控、Kubernetes、微服务指标 | 实时指标监控、告警 |
| InfluxDB | InfluxQL / Flux (HTTP API) | IoT 时序数据、DevOps 指标 | 高写入吞吐的时序数据 |
| MySQL | SQL (TCP) | 业务数据库、用户行为分析 | 结构化业务数据报表 |
| PostgreSQL | SQL (TCP) | 地理空间数据、复杂分析查询 | 需要 JOIN 或窗口函数的报表 |
| Elasticsearch | Elasticsearch DSL (HTTP API) | 日志分析、全文搜索 | 日志聚合与可视化 |
| CloudWatch | AWS API | AWS 云资源监控 | EC2、RDS、Lambda 等指标 |
| Loki | LogQL (HTTP API) | 日志聚合(轻量级) | 与 Prometheus 配合的日志分析 |
选型建议:时序监控首选 Prometheus 或 InfluxDB;业务报表优先考虑 MySQL/PostgreSQL;日志场景推荐 Elasticsearch 或 Loki。Grafana 支持同时配置多个不同类型的数据源,一个仪表盘可以混合使用。
3.3 添加与配置第一个数据源
下面以 Prometheus 为例,演示添加数据源的完整步骤。Prometheus 是 Grafana 最常用的数据源之一,也是本课程后续实践的核心数据源。
步骤 1:进入数据源管理页面
- 登录 Grafana Web UI(默认地址
http://localhost:3000)。 - 点击左侧导航栏的 齿轮图标(Configuration) → Data Sources。
- 点击页面右上角的 Add data source 蓝色按钮。
步骤 2:选择数据源类型
在数据源类型列表中,找到并点击 Prometheus。Grafana 会自动跳转到 Prometheus 的配置页面。
步骤 3:填写核心配置项
配置页面包含多个选项卡,核心配置集中在 Settings 标签下:
| 配置项 | 说明 | 示例值 |
|---|---|---|
| Name | 数据源名称,仪表盘引用时使用 | Prometheus-Prod |
| URL | Prometheus 服务 HTTP 地址 | http://localhost:9090 |
| Access | 访问模式:Server(推荐)或 Browser | Server |
| Scrape interval | 数据抓取间隔,影响时间范围精度 | 15s |
| HTTP Method | 查询请求方法,默认 GET | GET |
步骤 4:保存并测试
- 填写完配置后,点击页面底部的 Save & Test 按钮。
- Grafana 会尝试连接 Prometheus 并执行一个简单的测试查询。
- 如果连接成功,页面顶部会显示绿色提示 "Data source is working"。
常见错误:如果测试失败,请检查:① Prometheus 服务是否已启动;② URL 地址是否正确(注意端口号);③ 网络防火墙是否阻止了 Grafana 到 Prometheus 的访问;④ 如果使用 Browser 访问模式,浏览器跨域策略可能阻止请求。
3.4 配置验证与常见问题
成功添加数据源后,建议执行以下验证操作:
- 查看数据源列表: 在 Data Sources 页面确认新数据源显示为 绿色对勾 状态。
- 使用 Explore 功能: 点击左侧导航栏的 Explore(指南针图标),选择刚添加的数据源,输入一个简单查询(如
up{})验证数据返回。 - 检查日志: 如果数据源状态异常,查看 Grafana 服务日志(
/var/log/grafana/grafana.log)获取详细错误信息。
最佳实践:建议为每个数据源设置清晰的命名规范,例如
Prometheus-Prod、MySQL-Business,避免在仪表盘面板中混淆。生产环境中,建议使用 Server 访问模式,避免浏览器跨域问题。
3.5 多数据源配置示例
以下是一个典型的混合数据源配置场景,展示如何在同一个 Grafana 实例中同时配置 Prometheus 和 MySQL:
# 数据源配置清单(示例)
# 1. Prometheus 数据源
# Name: Prometheus-Prod
# URL: http://10.0.1.100:9090
# Access: Server
# Scrape interval: 15s
# 2. MySQL 数据源
# Name: MySQL-Business
# URL: mysql://10.0.1.200:3306
# Database: sales_db
# User: grafana_reader
# Password: ******
# Max open: 10
# Max idle: 5
# Allow cleartext passwords: false
配置完成后,在仪表盘编辑面板时,可以在 Query 选项卡的 Data source 下拉菜单中选择不同的数据源,实现同一仪表盘内混合展示时序指标和业务数据。
3.6 数据源配置的进阶技巧
- 使用环境变量: 在 Grafana 配置文件
grafana.ini中,可以通过GF_DATASOURCE_*环境变量预设数据源,适合容器化部署。 - 数据源代理: 如果 Grafana 无法直接访问数据源,可以配置反向代理或使用 Grafana 的 Data source proxy 功能。
- 权限控制: 在 Grafana 的 Organization 和 Team 设置中,可以限制特定用户或团队只能使用特定的数据源。
- 备份与迁移: 数据源配置存储在 Grafana 的 SQLite 或 MySQL 数据库中,可以通过导出
grafana.db或使用 API 进行备份。
小技巧:在配置多个同类型数据源时(如多个 Prometheus 实例),可以在名称中加入环境标识(如
Prometheus-Prod、Prometheus-Staging),并在仪表盘面板中使用变量(Variable)动态切换数据源,实现多环境复用。