Grafana 使用入门
在现代IT架构中,系统、应用和基础设施会产生海量的时序数据(Time-Series Data)。如何将这些冰冷的数据转化为直观、 actionable 的洞察,是运维、开发和分析师面临的核心挑战。Grafana 正是在这个背景下应运而生的开源王者,它成为了可视化和监控领域的事实标准。
本文将深入浅出地介绍 Grafana 的核心功能、安装方法、基本用法,并通过一个完整的实战示例带你快速上手。
一、Grafana 是什么?为什么选择它?
Grafana 是一个开源的、功能强大的指标分析和可视化平台。它最擅长将来自不同数据源(如 Prometheus, MySQL, Elasticsearch 等)的时序数据,转换为漂亮的图表、仪表盘和告警信息。
核心价值与特点:
- 多数据源支持:这是 Grafana 的王牌功能。它可以无缝连接数十种流行的数据库、监控工具和云服务,让你在一个平台上统一查看所有数据,打破数据孤岛。
- 强大的可视化能力:提供丰富多样的图表类型,从基础的折线图、柱状图到热力图、状态地图(Geomap)、日志面板等,几乎可以满足任何可视化需求。
- 灵活的仪表盘:通过简单的拖放操作,即可创建布局精美、信息丰富的交互式仪表盘。支持变量(Variables)实现动态仪表盘,一次创建,多处过滤查看。
- 告警与通知:可以基于仪表盘中的数据设置告警规则,当指标异常时,通过邮件、Slack、PagerDuty、Webhook 等多种方式及时通知相关人员。
- 开源与活跃社区:拥有庞大而活跃的社区,提供海量由用户共享的仪表盘模板,可以快速导入使用,极大节省了搭建成本。
- 插件化架构:高度可扩展,可以通过插件支持新的数据源、图表类型和应用程序功能。
典型应用场景:
- IT 运维监控:监控服务器 CPU、内存、磁盘、网络状态。
- 应用性能监控 (APM):追踪应用 QPS、响应延迟、错误率。
- 业务数据监控:可视化网站访问量、用户活跃度、订单成交额等业务指标。
- 物联网 (IoT):展示传感器上传的温度、湿度、设备状态等数据。
- 日志分析与可视化:与 Loki 等日志系统结合,分析日志趋势。
二、安装与部署
Grafana 的安装非常简单,支持多种方式。以下以最常见的 Linux 系统为例。
方法一:使用 APT 仓库安装 (Ubuntu/Debian)
bash
# 1. 安装依赖
sudo apt-get install -y software-properties-common wget
# 2. 添加Grafana的APT仓库
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
# 3. 更新软件包列表并安装
sudo apt-get update
sudo apt-get install grafana
# 4. 启动Grafana服务并设置开机自启
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
方法二:使用 Docker 安装 (最快捷)
如果你熟悉 Docker,这是最快的方式。
bash
docker run -d -p 3000:3000 --name=grafana grafana/grafana-enterprise
访问 http://<你的服务器IP>:3000
即可。
方法三:直接下载二进制文件
适用于 macOS 和 Windows,可以从 Grafana 官网下载页面 获取安装包。
安装后访问 :
默认地址是 http://<你的服务器IP>:3000
。
默认用户名和密码都是 admin
。首次登录后会要求修改密码。
三、核心概念与基本用法
1. 数据源 (Data Sources)
在创建图表之前,必须先配置数据源。这是 Grafana 连接外部数据库的地方。
- 路径:左侧导航栏 -> 齿轮图标 (Configuration) -> Data sources -> Add data source。
- 常见数据源:Prometheus, Loki (for logs), Tempo (for traces), InfluxDB, Elasticsearch, MySQL, PostgreSQL, AWS CloudWatch, Google Cloud Monitoring 等。
2. 仪表盘 (Dashboards)
仪表盘是图表的容器,是你工作的最终成果。一个仪表盘由多个面板(Panels) 组成。
3. 面板 (Panels)
面板是仪表盘的基本构建块,每个面板代表一个可视化图表。创建面板时,你需要:
- 选择可视化类型(Visualization):如 Time series, Stat, Gauge, Bar chart 等。
- 编写查询(Query):使用对应数据源的查询语言(如 PromQL for Prometheus, SQL for MySQL)来获取数据。
- 配置属性:设置标题、单位、颜色、阈值、坐标轴等。
4. 变量 (Variables)
变量是 Grafana 的灵魂功能之一。它允许你创建下拉菜单,动态地改变面板中查询的内容。
- 例如 :创建一个
host
变量,包含所有主机名。在查询中引用$host
,就可以通过下拉菜单选择不同的主机,所有图表会自动刷新显示该主机的数据。
四、实战示例:监控 Linux 主机
让我们通过一个完整的例子,使用 Prometheus 监控一台 Linux 主机,并用 Grafana 进行可视化。
第 1 步:部署监控组件
-
安装并运行 Prometheus:
- 下载 Prometheus,修改
prometheus.yml
配置文件,抓取 Node Exporter 的指标。 - 启动 Prometheus。
- 下载 Prometheus,修改
-
在被监控主机上安装并运行 Node Exporter:
- Node Exporter 是一个用于暴露硬件和操作系统指标的工具。
- 下载后直接运行
./node_exporter
,它默认在http://<主机IP>:9100/metrics
提供指标。
第 2 步:在 Grafana 中添加数据源
- 登录 Grafana。
- 进入 Configuration -> Data Sources -> Add data source。
- 选择 Prometheus。
- 在 URL 栏中填写你的 Prometheus 服务器地址(例如:
http://localhost:9090
)。 - 点击 Save & Test,如果出现 "Data source is working" 则表示成功。
第 3 步:创建主机监控仪表盘(两种方法)
方法 A:导入社区模板(最快)
- 访问 Grafana Labs 官方仪表盘库。
- 搜索 "Node Exporter Full",这是一个非常全面的主机监控模板,ID 为
1860
。 - 在 Grafana 中,点击 Create -> Import。
- 输入 ID
1860
,点击 Load。 - 选择 Prometheus 数据源,点击 Import。
瞬间,一个功能齐全、美观的主机监控仪表盘就创建完成了!
方法 B:手动创建面板(用于学习)
我们手动创建一个显示 CPU 使用率的图表。
- 创建新仪表盘 :点击 Create -> Dashboard。
- 添加新面板 :点击 Add new panel。
- 编写查询 :
-
在 Query 编辑器中,选择你的 Prometheus 数据源。
-
输入 PromQL 查询语句:
promql100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100
这个查询用于计算平均 CPU 使用率百分比。
-
- 配置图表 :
- Panel title:改为 "CPU Usage"。
- 在 Standard options 里,将 Unit 设置为
Percent (0-100)
。 - 可以调整颜色、图例等。
- 应用面板 :点击右上角的 Apply 保存面板到仪表盘。
- 重复步骤 2-5 ,添加内存、磁盘 IO、网络流量等面板。
-
内存使用率查询示例 :
promql(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
-
磁盘使用率查询示例 (需要先确认你的挂载点):
promqlnode_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"} * 100
-
最终,你将得到一个类似下图的自定义监控仪表盘:
(此处通常应有一张Grafana仪表盘的截图)
五、高级功能:设置告警
当 CPU 使用率持续过高时,我们希望收到通知。
- 在你的 CPU 面板上,点击标题,选择 Edit。
- 切换到 Alert 标签页。
- 点击 Create alert rule from this panel。
- 配置告警规则 :
- Rule name :
High CPU Usage
- Evaluate every :
5m
(每5分钟检查一次) - Conditions :
WHEN
max()
OF
query(A, 5m, now)
IS ABOVE
90
(意思是:当最近5分钟内,查询A的最大值超过90%)
- Rule name :
- 配置通知渠道 :
- 首先需要在 Alerting -> Notification channels 中配置一个渠道,比如 Slack 或 Email。
- 在告警规则中,选择添加好的通知渠道。
- 保存告警规则。
现在,当你的 CPU 使用率超过 90% 并持续5分钟,Grafana 就会自动发送告警通知。
总结
Grafana 不仅仅是一个绘图工具,它是一个完整的可观测性平台的核心。通过将多种数据源整合到统一的、交互式的可视化界面中,它极大地提升了我们理解系统状态、定位问题、分析趋势的效率。
从简单的折线图到复杂的业务 KPI 看板,从基础设施监控到实时业务分析,Grafana 都能胜任。现在就开始你的 Grafana 之旅,将这些沉睡的数据转化为宝贵的洞察力吧!
官方资源: