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 位于可视化与分析层,统一消费底层存储的数据,提供跨信号类型的关联分析能力。

可观测性栈分层架构(MELT 模型) 数据源层(Metrics / Logs / Traces / Events) Prometheus | InfluxDB | Elasticsearch | Loki | Tempo | CloudWatch | 自定义数据源 可视化与分析层(Grafana) 面板渲染 | 告警规则 | 模板变量 | Explore 探索 | 团队协作 告警与通知层(Grafana Alerting) 统一告警规则 | Alertmanager | 静默/分组 | Slack/PagerDuty/Webhook 消费层(SRE / 开发 / 运维) 故障定位 | 容量规划 | 告警响应 | 业务洞察 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 故障定位效率。