2. Grafana 基础回顾:架构、数据源与看板概念
在深入故障诊断流程之前,必须牢固掌握 Grafana 的核心基础。本章将回顾 Grafana 的整体架构、关键数据源(Prometheus / Elasticsearch)的配置方法,以及看板与面板的基本概念,为后续的 Runbook 联动打下坚实的知识基础。
2.1 Grafana 整体架构
Grafana 采用前后端分离的模块化架构,核心组件包括前端 UI、后端 API 服务器、数据库以及插件系统。理解这一架构有助于在故障场景下快速定位问题根因(如数据源不可达、面板渲染失败等)。
架构要点: Grafana 本身不存储时序数据,它通过数据源插件统一抽象查询接口,将数据拉取、转换、展示分离,使得切换数据源时无需修改看板配置。
2.2 数据源配置
数据源是 Grafana 的“眼睛”。正确配置数据源是看板数据可视化的前提。本节重点回顾 Prometheus 和 Elasticsearch 两种最常用的数据源配置。
2.2.1 Prometheus 数据源配置
| 配置项 | 必填 | 说明 | 示例值 |
|---|---|---|---|
| Name | 是 | 数据源标识名称,在面板查询时引用 | Prometheus-Prod |
| URL | 是 | Prometheus 服务器 HTTP API 地址 | http://prometheus.example.com:9090 |
| Access | 是 | 代理模式(Server)或浏览器直连(Browser) | Server (default) |
| Scrape Interval | 否 | Grafana 主动拉取数据的间隔,默认 15s | 15s |
| Timeout | 否 | 查询超时时间,默认 60s | 60s |
最佳实践: 生产环境始终使用 Server (代理) 模式,避免浏览器直接暴露 Prometheus 地址,同时可利用 Grafana 服务端缓存和认证能力。
2.2.2 Elasticsearch 数据源配置
| 配置项 | 必填 | 说明 | 示例值 |
|---|---|---|---|
| Name | 是 | 数据源标识名称 | ES-Logs-Prod |
| URL | 是 | Elasticsearch 节点 HTTP 地址 | http://es-cluster.example.com:9200 |
| Index name | 是 | 时间序列索引模式,支持通配符 | [logstash-]YYYY.MM.DD |
| Time field name | 是 | 用于时间过滤的字段 | @timestamp |
| Version | 是 | ES 主版本号,影响查询语法 | 7.x+ |
常见陷阱: Elasticsearch 索引模式中的时间字段必须与 Logstash 或 Beats 写入的字段一致。如果使用
@timestamp 以外的字段,务必在配置中显式指定,否则面板将无法正确按时间过滤。
2.3 看板与面板基础概念
看板(Dashboard)是 Grafana 中组织和展示数据的顶层容器,面板(Panel)是看板内的基本可视化单元。理解两者的关系及核心属性,是高效构建故障诊断看板的前提。
2.3.1 面板核心属性
- 查询(Query): 定义从数据源获取哪些数据。Prometheus 使用 PromQL,Elasticsearch 使用 Lucene 查询或 DSL。
- 可视化类型(Visualization): 图表、表格、统计、日志、仪表盘等。故障诊断常用时间序列图和日志面板。
- 告警(Alert): 面板可绑定告警规则,当指标触发阈值时自动通知。
- 链接(Links): 面板可配置跳转链接,这是实现“看板联动 Runbook”的关键机制。
关键概念: 面板的 链接(Links) 功能允许在面板标题或数据点上下文菜单中添加指向外部 URL 的链接。在故障诊断场景中,可将链接指向 Runbook 文档或自动化脚本入口,实现“看到异常 -> 点击链接 -> 执行诊断流程”的闭环。
2.3.2 看板变量(Variables)
变量是看板动态化的核心。通过定义变量(如 $host、$env),可以在不修改面板查询的情况下切换数据范围。变量类型包括:
| 变量类型 | 数据来源 | 典型用途 |
|---|---|---|
| Query | 从数据源查询结果动态生成 | 自动列出所有主机名、服务名 |
| Custom | 手动定义固定选项列表 | 环境选择(prod/staging/dev) |
| Interval | 时间间隔选项 | 聚合粒度切换(1m/5m/1h) |
| Data source | 切换当前看板使用的数据源 | 快速切换不同 Prometheus 集群 |
联动 Runbook 技巧: 在看板变量中定义
$runbook_url 自定义变量,然后在面板链接中使用 ${runbook_url} 模板变量,即可实现一键跳转到当前环境对应的 Runbook 页面。