Grafana 简介 #
什么是监控可视化? #
在了解 Grafana 之前,我们需要先理解监控可视化的概念。监控可视化是将系统、应用、基础设施的运行数据转换为图形界面的过程,使运维人员和开发者能够直观地了解系统状态。
text
┌─────────────────┐
│ 原始数据 │
│ 指标、日志 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 数据采集 │
│ Prometheus │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 可视化展示 │
│ Grafana │
└─────────────────┘
什么是 Grafana? #
Grafana 是一个开源的数据可视化和监控平台,由 Grafana Labs 开发维护。它可以将来自多种数据源的数据转换为美观、交互式的图表和仪表板,帮助团队更好地理解系统状态、发现问题和做出决策。
核心定位 #
text
┌─────────────────────────────────────────────────────────────┐
│ Grafana │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 数据可视化 │ │ 多数据源 │ │ 告警系统 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 仪表板 │ │ 插件生态 │ │ 团队协作 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
Grafana 的历史 #
发展历程 #
text
2014年 ─── Grafana 诞生
│
│ Torkel Ödegaard 创建
│ 作为 Kibana 的分支
│ 专注于时间序列数据
│
2015年 ─── Grafana 2.0
│
│ 添加告警功能
│ 支持更多数据源
│
2017年 ─── Grafana 4.0
│
│ 告警系统增强
│ 表格面板改进
│
2019年 ─── Grafana 6.0
│
│ 新的架构设计
│ Explore 功能
│ Loki 集成
│
2020年 ─── Grafana 7.0
│
│ 面板框架重构
│ Trace 支持
│ 云服务集成
│
2021年 ─── Grafana 8.0
│
│ 新告警系统
│ 统一告警 UI
│
2022年 ─── Grafana 9.0
│
│ PromQL 构建器
│ 改进的仪表板
│
2023年 ─── Grafana 10.0
│
│ 新的 UI 设计
│ 性能优化
│
至今 ─── 行业标准
│
│ 最流行的监控可视化平台
│ 超过 100 万活跃安装
里程碑版本 #
| 版本 | 时间 | 重要特性 |
|---|---|---|
| 1.0 | 2014 | 初始发布,时间序列可视化 |
| 2.0 | 2015 | 告警功能、多数据源 |
| 4.0 | 2017 | 增强告警系统 |
| 5.0 | 2018 | Provisioning、新布局系统 |
| 6.0 | 2019 | Explore、Loki 集成 |
| 7.0 | 2020 | 新面板框架、Trace 支持 |
| 8.0 | 2021 | 新告警系统 |
| 9.0 | 2022 | PromQL 构建器 |
| 10.0 | 2023 | 新 UI 设计、性能优化 |
为什么选择 Grafana? #
传统监控的痛点 #
在使用 Grafana 之前,监控可视化面临以下问题:
text
┌─────────────────────────────────────────────────────────────┐
│ 传统监控的问题 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 数据孤岛 │
│ - 不同系统使用不同工具 │
│ - 数据分散,难以统一查看 │
│ - 需要在多个界面间切换 │
│ │
│ 2. 可视化能力有限 │
│ - 图表类型单一 │
│ - 定制困难 │
│ - 缺乏交互性 │
│ │
│ 3. 告警管理复杂 │
│ - 告警规则分散 │
│ - 通知渠道有限 │
│ - 缺乏统一管理 │
│ │
│ 4. 协作困难 │
│ - 难以共享仪表板 │
│ - 权限管理复杂 │
│ - 版本控制缺失 │
│ │
└─────────────────────────────────────────────────────────────┘
Grafana 的解决方案 #
text
┌─────────────────────────────────────────────────────────────┐
│ Grafana 的解决方案 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ 统一数据视图 │
│ - 支持 30+ 数据源 │
│ - 单一界面查看所有数据 │
│ - 跨数据源查询 │
│ │
│ ✅ 强大的可视化 │
│ - 丰富的图表类型 │
│ - 高度可定制 │
│ - 交互式仪表板 │
│ │
│ ✅ 统一告警管理 │
│ - 集中管理告警规则 │
│ - 多渠道通知 │
│ - 告警静默和分组 │
│ │
│ ✅ 团队协作 │
│ - 仪表板共享 │
│ - 细粒度权限控制 │
│ - 版本历史管理 │
│ │
└─────────────────────────────────────────────────────────────┘
Grafana 的核心特点 #
1. 多数据源支持 #
Grafana 支持超过 30 种数据源:
text
┌─────────────────────────────────────────────────────────────┐
│ 支持的数据源 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 时序数据库: │
│ ├── Prometheus │
│ ├── InfluxDB │
│ ├── TimescaleDB │
│ └── Graphite │
│ │
│ 关系型数据库: │
│ ├── MySQL │
│ ├── PostgreSQL │
│ ├── Microsoft SQL Server │
│ └── Oracle │
│ │
│ 日志系统: │
│ ├── Elasticsearch │
│ ├── Loki │
│ └── Splunk │
│ │
│ 云服务: │
│ ├── AWS CloudWatch │
│ ├── Azure Monitor │
│ ├── Google Cloud Monitoring │
│ └── Alibaba Cloud │
│ │
│ 其他: │
│ ├── Jaeger (Tracing) │
│ ├── OpenTSDB │
│ └── Zabbix │
│ │
└─────────────────────────────────────────────────────────────┘
2. 丰富的可视化组件 #
text
┌─────────────────────────────────────────────────────────────┐
│ 可视化面板类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 时间序列图表: │
│ ├── Time Series (推荐) │
│ ├── Graph (旧版) │
│ └── State Timeline │
│ │
│ 统计展示: │
│ ├── Stat │
│ ├── Gauge │
│ └── Bar Gauge │
│ │
│ 表格与列表: │
│ ├── Table │
│ ├── Logs │
│ └── Trace │
│ │
│ 地理可视化: │
│ ├── Geomap │
│ └── Worldmap Panel │
│ │
│ 其他: │
│ ├── Pie Chart │
│ ├── Heatmap │
│ ├── Histogram │
│ └── Dashboard List │
│ │
└─────────────────────────────────────────────────────────────┘
3. 强大的告警系统 #
text
┌─────────────────────────────────────────────────────────────┐
│ 告警系统架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ 告警规则 │ 定义触发条件 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 评估引擎 │ 周期性评估规则 │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 告警状态 │ OK → Pending → Firing → Resolved │
│ └──────┬──────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 通知渠道 │ 邮件、Slack、钉钉、Webhook 等 │
│ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
4. 插件生态 #
text
┌─────────────────────────────────────────────────────────────┐
│ 插件类型 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 数据源插件: │
│ ├── 新增数据源支持 │
│ ├── 示例:MongoDB、Redis、Jira │
│ └── 扩展数据获取能力 │
│ │
│ 面板插件: │
│ ├── 新增可视化类型 │
│ ├── 示例:Clock、Announcement、News │
│ └── 扩展展示能力 │
│ │
│ 应用插件: │
│ ├── 完整功能扩展 │
│ ├── 示例:Zabbix、Kubernetes │
│ └── 提供一体化解决方案 │
│ │
└─────────────────────────────────────────────────────────────┘
Grafana 与其他监控工具对比 #
Grafana vs Kibana #
| 特性 | Grafana | Kibana |
|---|---|---|
| 主要用途 | 指标监控可视化 | 日志分析和可视化 |
| 数据源 | 30+ 多种 | Elasticsearch 为主 |
| 告警功能 | 强大 | 基础 |
| 学习曲线 | 平缓 | 中等 |
| 最佳场景 | 基础设施监控 | 日志分析 |
Grafana vs Datadog #
| 特性 | Grafana | Datadog |
|---|---|---|
| 开源免费 | ✅ | ❌ SaaS 服务 |
| 数据源 | 支持外部数据源 | 内置数据采集 |
| 部署方式 | 自托管/云 | 仅 SaaS |
| 成本 | 免费/企业版付费 | 按使用量付费 |
| 最佳场景 | 自建监控平台 | 快速上手 |
Grafana vs Zabbix #
| 特性 | Grafana | Zabbix |
|---|---|---|
| 定位 | 可视化平台 | 完整监控系统 |
| 数据采集 | 需要外部工具 | 内置采集 |
| 可视化 | 极强 | 中等 |
| 告警 | 强 | 强 |
| 最佳场景 | 可视化展示 | 端到端监控 |
Grafana 的应用场景 #
1. 基础设施监控 #
text
┌─────────────────────────────────────────────────────────────┐
│ 基础设施监控 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 监控对象: │
│ ├── 服务器:CPU、内存、磁盘、网络 │
│ ├── 容器:Docker、Kubernetes │
│ ├── 网络:带宽、延迟、丢包率 │
│ └── 存储:IOPS、容量、延迟 │
│ │
│ 数据流: │
│ Node Exporter → Prometheus → Grafana │
│ │
│ 典型仪表板: │
│ ├── Node Exporter Full │
│ ├── Kubernetes Cluster │
│ └── Docker Container │
│ │
└─────────────────────────────────────────────────────────────┘
2. 应用性能监控(APM) #
text
┌─────────────────────────────────────────────────────────────┐
│ APM 监控 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 监控指标: │
│ ├── 请求量/吞吐量 │
│ ├── 响应时间(P50、P95、P99) │
│ ├── 错误率 │
│ └── 资源消耗 │
│ │
│ 技术栈: │
│ ├── OpenTelemetry SDK │
│ ├── Jaeger / Tempo (Tracing) │
│ ├── Prometheus (Metrics) │
│ └── Grafana (Visualization) │
│ │
└─────────────────────────────────────────────────────────────┘
3. 日志分析 #
text
┌─────────────────────────────────────────────────────────────┐
│ 日志分析 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 数据流: │
│ Application → Promtail → Loki → Grafana │
│ │
│ 功能: │
│ ├── 日志搜索和过滤 │
│ ├── 日志可视化 │
│ ├── 日志告警 │
│ └── 日志与指标关联 │
│ │
└─────────────────────────────────────────────────────────────┘
4. 业务指标监控 #
text
┌─────────────────────────────────────────────────────────────┐
│ 业务监控 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 示例指标: │
│ ├── 订单数量 │
│ ├── 销售金额 │
│ ├── 用户活跃度 │
│ ├── 转化率 │
│ └── 库存状态 │
│ │
│ 数据源: │
│ ├── MySQL / PostgreSQL │
│ ├── Elasticsearch │
│ └── REST API │
│ │
└─────────────────────────────────────────────────────────────┘
Grafana 的核心概念 #
仪表板(Dashboard) #
text
┌─────────────────────────────────────────────────────────────┐
│ 仪表板 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Dashboard │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Panel 1 │ │ Panel 2 │ │ Panel 3 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │
│ │ │ Panel 4 │ │ Panel 5 │ │ │
│ │ └─────────────────────┘ └─────────────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 组成元素: │
│ ├── Panel:可视化面板 │
│ ├── Row:行分组 │
│ ├── Variable:变量 │
│ └── Annotation:注释 │
│ │
└─────────────────────────────────────────────────────────────┘
面板(Panel) #
text
┌─────────────────────────────────────────────────────────────┐
│ 面板 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 面板组成: │
│ ├── Title:标题 │
│ ├── Visualization:可视化类型 │
│ ├── Query:数据查询 │
│ ├── Transform:数据转换 │
│ └── Options:显示选项 │
│ │
│ 常用面板类型: │
│ ├── Time Series:时间序列图 │
│ ├── Stat:统计值 │
│ ├── Gauge:仪表盘 │
│ ├── Table:表格 │
│ └── Bar Chart:柱状图 │
│ │
└─────────────────────────────────────────────────────────────┘
数据源(Data Source) #
text
┌─────────────────────────────────────────────────────────────┐
│ 数据源 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 配置项: │
│ ├── Name:名称 │
│ ├── Type:类型 │
│ ├── URL:连接地址 │
│ ├── Access:访问方式(proxy/server) │
│ └── Auth:认证信息 │
│ │
│ 查询流程: │
│ Grafana → Data Source → Query → Data → Visualization │
│ │
└─────────────────────────────────────────────────────────────┘
Grafana 的架构 #
整体架构 #
text
┌─────────────────────────────────────────────────────────────┐
│ Grafana 架构图 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Web UI │ │
│ │ (React + TypeScript) │ │
│ └─────────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────┐ │
│ │ HTTP API │ │
│ └─────────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────┐ │
│ │ Grafana Server │ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │
│ │ │ Dashboard │ │ Alerting │ │ Plugin │ │ │
│ │ │ Service │ │ Service │ │ Manager │ │ │
│ │ └───────────┘ └───────────┘ └───────────┘ │ │
│ └─────────────────────────┬───────────────────────────┘ │
│ │ │
│ ┌─────────────────────────▼───────────────────────────┐ │
│ │ Data Sources │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │Prom │ │InfDB│ │MySQL│ │ES │ │Loki │ ... │ │
│ │ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Storage │ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │
│ │ │ SQLite │ │ MySQL │ │ PostgreSQL│ │ │
│ │ │ (默认) │ │ (可选) │ │ (可选) │ │ │
│ │ └───────────┘ └───────────┘ └───────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
数据流 #
text
┌─────────────────────────────────────────────────────────────┐
│ 数据流向 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 用户操作: │
│ User → Browser → Grafana UI → HTTP API → Backend │
│ │
│ 查询数据: │
│ Backend → Data Source → Query → Response → Processing │
│ │
│ 渲染展示: │
│ Processing → JSON → Frontend → Chart Rendering │
│ │
└─────────────────────────────────────────────────────────────┘
学习建议 #
- 从基础开始:先熟悉界面和基本操作
- 实践驱动:边学边做,创建实际仪表板
- 理解数据源:掌握至少一种数据源(推荐 Prometheus)
- 学习查询语言:PromQL 是必备技能
- 善用社区资源:导入社区仪表板,学习最佳实践
下一步 #
现在你已经了解了 Grafana 的基本概念,接下来学习 安装与配置,开始你的监控可视化之旅!
最后更新:2026-03-29