从小白到精通——Grafana数据可视化实战全攻略
Grafana 是一款强大的开源数据可视化与监控平台,它可以将各种数据源(如 Prometheus、ElasticSearch、MySQL、InfluxDB 等)汇总到统一的可视化界面中。进入任意 Panel → 点击 “Alert → Create Alert Rule”通过仪表盘、折线图、饼图等方式展示系统运行状态,实现数据驱动的监控与决策。例如:选择不同服务、不同环境(dev/prod),图
一、认识 Grafana
Grafana 是一款强大的开源数据可视化与监控平台,它可以将各种数据源(如 Prometheus、ElasticSearch、MySQL、InfluxDB 等)汇总到统一的可视化界面中。
通过仪表盘、折线图、饼图等方式展示系统运行状态,实现数据驱动的监控与决策。
一句话总结:Grafana 是“监控的眼睛”,让数据说话。
核心特性:
-
支持多种数据源
-
丰富的图表类型
-
灵活的告警系统
-
权限管理与团队协作
-
支持动态变量、自动刷新
二、安装 Grafana
Ubuntu / Debian
sudo apt update sudo apt install -y adduser libfontconfig1 wget https://dl.grafana.com/oss/release/grafana_10.3.1_amd64.deb sudo dpkg -i grafana_10.3.1_amd64.deb sudo systemctl enable grafana-server sudo systemctl start grafana-server
CentOS / RHEL
sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.3.1-1.x86_64.rpm sudo systemctl enable grafana-server sudo systemctl start grafana-server
访问控制台:
http://localhost:3000
默认登录:
用户名:admin 密码:admin
三、Grafana 基础概念
| 概念 | 说明 |
|---|---|
| Data Source | 数据源,如 Prometheus、MySQL、ElasticSearch 等 |
| Dashboard | 仪表盘,一个由多个图表组成的可视化界面 |
| Panel | 单个可视化组件,如折线图、饼图 |
| Query | 查询语句,用于提取数据 |
| Variable | 动态参数,可实现下拉选择与自动过滤 |
| Alert | 告警规则设置,可与邮件、Slack、企业微信等集成 |
四、配置数据源
-
登录 Grafana → 左侧菜单点击 “Connections” → “Data Sources”
-
选择数据源类型(如 Prometheus)
-
输入连接地址:
http://localhost:9090 -
点击 “Save & Test”,出现绿色提示即连接成功。
支持的数据源包括:
-
Prometheus
-
MySQL / PostgreSQL
-
ElasticSearch
-
InfluxDB
-
Loki(日志)
-
OpenTelemetry
五、创建仪表盘(Dashboard)
-
左侧点击 “Dashboards → New → New Dashboard”
-
点击 “Add Visualization” 添加图表
-
选择数据源(如 Prometheus)
-
输入查询语句(PromQL 或 SQL)
-
选择可视化类型(折线图、柱状图、Gauge 等)
-
点击 “Apply” 保存。
六、可视化类型示例
| 类型 | 场景 | 说明 |
|---|---|---|
| Time Series | 系统性能、请求速率 | 连续时间序列数据展示 |
| Gauge | CPU、内存占用率 | 仪表盘形式 |
| Bar Chart | 错误统计、访问量 | 直观比较 |
| Pie Chart | 资源占比 | 比例关系 |
| Heatmap | 请求延迟分布 | 多维度热度可视化 |
七、Prometheus + Grafana 集成示例
假设 Prometheus 已运行在 localhost:9090。
在 Grafana 中添加面板:
rate(node_cpu_seconds_total{mode!="idle"}[1m]) * 100
显示实时 CPU 使用率。
可添加多个面板展示内存、磁盘、网络使用情况。
参考案例:www.xvblkv.cn
八、MySQL 数据源可视化
添加 MySQL 数据源:
Host: localhost:3306 Database: testdb User: grafana Password: ****
示例查询:
SELECT time AS "time", users_online AS "Users Online" FROM user_stats WHERE $__timeFilter(time) ORDER BY time
Grafana 自动识别 $__timeFilter() 并与时间控件绑定。
九、ElasticSearch 数据源
配置:
URL: http://localhost:9200 Index name: logs-* Time field name: @timestamp
查询:
{ "find": "avg", "field": "response_time" }
可用于日志延迟分析、HTTP 状态分布展示。
十、变量(Variables)实现动态筛选
创建变量:
Dashboard Settings → Variables → New
类型:Query
名称:server
查询语句(Prometheus):
label_values(node_exporter_build_info, instance)
在面板中使用变量:
node_memory_MemAvailable_bytes{instance=~"$server"}
仪表盘可动态切换不同主机。
十一、图表联动与模板化
在 Dashboard 中:
-
打开 “Settings → Templating”
-
使用
$variable引用 -
各面板共享同一变量,实现全局联动切换。
例如:选择不同服务、不同环境(dev/prod),图表自动更新。
十二、告警配置
-
进入任意 Panel → 点击 “Alert → Create Alert Rule”
-
设定条件:
WHEN avg() OF query (A, 5m, now) IS ABOVE 80 -
添加通知渠道(Notification channel):
-
Email
-
Slack
-
Webhook
-
企业微信
-
-
保存后可在 “Alert Rules” 页面查看触发记录。
十三、设置通知渠道
Email 通知配置:
编辑 /etc/grafana/grafana.ini:
[smtp] enabled = true host = smtp.gmail.com:587 user = grafana@example.com password = yourpassword from_address = grafana@example.com
重启服务:
sudo systemctl restart grafana-server
十四、Loki 日志可视化
安装 Loki 与 Promtail:
docker run -d --name=loki -p 3100:3100 grafana/loki docker run -d --name=promtail -v /var/log:/var/log -p 9080:9080 grafana/promtail
Grafana 数据源:
Type: Loki URL: http://localhost:3100
查询日志:
{job="nginx"} |= "error"
实时展示系统日志趋势。
十五、Grafana 数据共享与导出
-
导出仪表盘:
“Dashboard → Settings → JSON Model → Export JSON” -
导入仪表盘:
“Dashboards → Import → 上传 JSON 文件” -
分享链接:
“Share → Copy Link” 或生成嵌入代码<iframe>
十六、用户与权限管理
创建团队:
Configuration → Teams → New Team
创建用户:
Configuration → Users → Invite
权限级别:
-
Viewer(只读)
-
Editor(可编辑)
-
Admin(管理仪表盘)
支持 LDAP / OAuth2 登录集成。
十七、自动刷新与时间范围控制
在页面右上角设置:
-
自动刷新:5s / 10s / 1m / 5m
-
时间范围:
-
Last 5 minutes
-
Last 24 hours
-
Custom range
-
Grafana 将周期性拉取最新数据,保证仪表盘实时更新。
十八、Grafana API 使用
获取所有 Dashboard:
curl -X GET http://admin:admin@localhost:3000/api/search
导入 Dashboard:
curl -X POST http://admin:admin@localhost:3000/api/dashboards/db -H "Content-Type: application/json" -d @dashboard.json
可与 Jenkins、Ansible 集成实现自动化监控更新。
十九、Grafana 性能与安全优化
| 优化项 | 建议 |
|---|---|
| 缓存层 | 启用 query caching |
| 数据源限流 | 控制请求频率 |
| 仪表盘分组 | 按业务模块拆分 |
| 数据归档 | 超过 30 天数据迁移 |
| HTTPS | 启用 TLS 加密 |
| 备份 | 导出 JSON 定期保存 |
二十、完整实战项目:DevOps 综合监控平台
目标:
构建一个集成 Prometheus + Grafana + Loki 的全栈监控系统。
架构图:
┌────────────┐ ┌────────────┐ │ NodeExporter│──────▶ Prometheus │ │ cAdvisor │──────▶ │ └────────────┘ └────────────┘ │ │ ▼ ▼ ┌────────────┐ ┌────────────┐ │ Loki日志 │──────▶ Grafana面板 │ └────────────┘ └────────────┘
Prometheus 监控:
- job_name: 'server' static_configs: - targets: ['192.168.1.10:9100']
Grafana 仪表盘:
-
CPU、内存实时曲线图
-
磁盘使用率仪表盘
-
HTTP 请求速率
-
容器运行状态
-
告警与日志联动视图
运行效果:
-
所有主机与容器实时监控
-
异常触发邮件通知
-
日志自动关联错误指标
-
管理员可一键切换环境与服务
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)