1. Grafana 与可观测性概述
Grafana 是目前业界最流行的开源可观测性数据可视化平台。本章从发展历程、核心功能、在可观测性栈中的定位以及与主流数据源的关系四个维度,帮助学员建立对 Grafana 的全局认知。
1.1 Grafana 发展史
| 年份 | 版本 / 事件 | 里程碑意义 |
|---|---|---|
| 2014 | Grafana v1.0 发布 | 基于 Kibana 的 Graphite 面板,专注时间序列可视化 |
| 2015 | v2.0 重构 | 引入独立后端、插件系统、Prometheus 数据源支持 |
| 2016 | v3.0 仪表盘 | 模板变量、告警引擎、团队协作功能上线 |
| 2018 | v5.0 企业版 | Grafana Labs 成立,推出商业授权与认证数据源 |
| 2020 | v7.0 统一告警 | 内置 Alertmanager、统一告警规则管理、Loki 原生支持 |
| 2022 | v9.0 可观测性统一 | Explore 统一查询、面板插件市场、Grafana Cloud 大规模商用 |
| 2024 | v11.x 持续演进 | AI 辅助告警降噪、自适应面板、全链路可观测性 |
关键认知: Grafana 从“Graphite 的面板工具”进化为“可观测性统一控制面”,其核心价值在于数据源无关性与面板生态。
1.2 核心功能矩阵
- 多数据源统一查询:支持 Prometheus、InfluxDB、Elasticsearch、Loki、CloudWatch、Azure Monitor 等 50+ 数据源,同一面板可混合查询。
- 可视化面板引擎:提供时间序列图、柱状图、热力图、统计表、仪表盘、日志面板、地理地图等 30+ 原生面板类型。
- 告警与通知:内置告警规则引擎,支持基于阈值、异常检测、PromQL 表达式的告警,通过 Slack、PagerDuty、Webhook 等渠道推送。
- 模板变量与动态仪表盘:通过变量实现环境、服务、实例的动态切换,一套面板适配多维度数据。
- 团队协作与权限:组织、团队、文件夹、仪表盘级别的 RBAC 权限控制,支持注释、分享、快照。
- Explore 探索模式:临时查询与日志分析,无需预先创建仪表盘,适合故障排查。
1.3 在可观测性栈中的定位
现代可观测性栈遵循 MELT 模型(Metrics、Events、Logs、Traces)。Grafana 位于可视化与分析层,统一消费底层存储的数据,提供跨信号类型的关联分析能力。
实践建议: 在 SRE 团队中,Grafana 通常作为“单玻璃窗(Single Pane of Glass)”使用,将指标、日志、链路追踪汇聚到同一仪表盘,避免在多个工具间切换。
1.4 与 Prometheus / InfluxDB / Elasticsearch 的关系
Grafana 本身不存储数据,而是通过数据源插件连接后端存储。三种主流数据源在可观测性场景中的定位与差异如下:
| 维度 | Prometheus | InfluxDB | Elasticsearch |
|---|---|---|---|
| 数据类型 | 时间序列指标(Metrics) | 时间序列指标 + 事件 | 日志(Logs)+ 全文搜索 |
| 查询语言 | PromQL | Flux / InfluxQL | Elasticsearch DSL / Lucene |
| 数据模型 | Label 维度 + 时间戳 + 值 | Measurement + Tag + Field + 时间戳 | Index + Document + Field + 时间戳 |
| 典型场景 | 基础设施监控、Kubernetes 监控、应用性能 | IoT 传感器、实时分析、事件流 | 日志聚合、安全分析、全文检索 |
| Grafana 集成方式 | 原生 Prometheus 数据源,支持 PromQL 即时查询与范围查询 | 原生 InfluxDB 数据源,支持 Flux 脚本与 InfluxQL | 原生 Elasticsearch 数据源,支持 Lucene 查询与聚合 |
| 告警支持 | PromQL 表达式直接作为告警条件 | Flux 查询结果作为告警输入 | ES 聚合结果作为告警条件 |
常见误区: Grafana 不是数据存储,也不是告警引擎的替代品。它依赖 Prometheus Alertmanager 或内置 Alerting 完成告警路由与通知。不要将 Grafana 当作“全栈可观测性平台”,它始终是可视化与分析层。
1.5 数据源连接示例
以下展示 Grafana 中配置 Prometheus 数据源的典型 YAML 配置(provisioning 方式):
# /etc/grafana/provisioning/datasources/prometheus.yaml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://prometheus-server:9090
isDefault: true
editable: false
jsonData:
timeInterval: "15s"
queryTimeout: "30s"
httpMethod: "POST"
关键要点: 使用 provisioning 方式管理数据源配置,可以确保环境一致性,避免手动配置遗漏。生产环境中建议将数据源配置纳入 GitOps 流程。
1.6 本章小结
- Grafana 从 Graphite 面板工具演进为可观测性统一可视化平台,核心优势在于数据源无关性与面板生态。
- 在 MELT 模型中,Grafana 位于可视化与分析层,向下消费指标、日志、链路数据,向上提供告警与协作能力。
- Prometheus 适合指标监控,InfluxDB 适合时序事件,Elasticsearch 适合日志搜索,三者通过 Grafana 实现统一视图。
- Grafana 不存储数据,不替代告警引擎,而是作为“单玻璃窗”提升 SRE 故障定位效率。