2. Grafana 基础回顾:架构、数据源与看板概念

在深入故障诊断流程之前,必须牢固掌握 Grafana 的核心基础。本章将回顾 Grafana 的整体架构、关键数据源(Prometheus / Elasticsearch)的配置方法,以及看板与面板的基本概念,为后续的 Runbook 联动打下坚实的知识基础。

2.1 Grafana 整体架构

Grafana 采用前后端分离的模块化架构,核心组件包括前端 UI、后端 API 服务器、数据库以及插件系统。理解这一架构有助于在故障场景下快速定位问题根因(如数据源不可达、面板渲染失败等)。

架构要点: Grafana 本身不存储时序数据,它通过数据源插件统一抽象查询接口,将数据拉取、转换、展示分离,使得切换数据源时无需修改看板配置。
Grafana 核心架构组件关系图 Grafana 核心架构组件关系 用户浏览器 (UI) Grafana 前端 (React / Angular) Grafana 后端 API (Go) Prometheus Elasticsearch 其他数据源 后端存储 (SQLite / MySQL / PostgreSQL) 说明:数据源插件通过统一接口与后端通信,看板配置与数据源类型解耦

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)是看板内的基本可视化单元。理解两者的关系及核心属性,是高效构建故障诊断看板的前提。

看板与面板层级关系 看板与面板层级关系 Dashboard (看板) Row (行) - 系统指标 Row (行) - 应用日志 Panel: CPU Panel: 内存 Panel: 网络 Panel: 错误日志 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 页面。