前言
可视化平台有很多,最重要的是选择符合业务需求的方案,费用低、学习曲线低、易于上手、集成性好这些都是加分项。众望所归,我选择了 Grafana。
特点
让我们康康 Grafana 是怎样的:
免费。Grafana 是一个开源的独立日志分析和监视工具。
开发少可直接用。面向分析师和一般使用者,一般不需要做多少编码工作就能直接拿来分析数据、搭建可视化系统。
界面炫酷。来看看官网的展示 Grafana 官网概述
丰富集成。Grafana 是跨平台工具,它提供了与各种平台和数据库的集成,持 InfluxDB,AWS,MySQL,PostgreSQL 等。
用户交互体验好。展示连续实时监控指标(如 CPU 负载,内存)、对数据提供自定义实时警报、提供基于数据库及其查询语法的命令列界面。
准备工作-采集器
一个可视化平台,重要的是有数据来做支撑,像上面所说的数据库。本文采取具有灵活查询和实时报警构建的时序数据库 promethues 来作为数据管理端。
作为圣火的传人,promethues 有着各种采集器小弟,如服务器资源采集器 node-exporter、进程资源采集器 process-exporter、服务资源采集器 blackbox-exporter, 有了这些采集器就可以直接搭建起监控和警报
服务器监控
https://grafana.com/api/dashboards/8919/images/8260/image
进程监控
https://grafana.com/api/dashboards/249/images/439/image
服务监控
https://grafana.com/api/dashboards/9965/images/6248/image
最后再配有 docker 微服务,你的监控和警报平台就能够一键部署起来了。
准备工作-定制化
有了各种采集器,其实能够满足大部分通用监控的需求,但往往我们的业务是不一样的,那么就需要进行定制。
用到了胶水语言 Python 在 promethues 的模块 promethues_client,就能开始定制了!
制作一个条形图
其实这个标题,我最先想取 “fuck the bar chart”,其他定制化的数据,表格、饼图、折线图都是能够在粗略熟悉 Grafana 后可以自己上手做的。
而这个条形图困扰了我整整一周的时间,各种找插件、换版本、调格式、选展示方式,都没有达到理想效果:
https://grafana.com/static/img/docs/bar-chart-panel/bar-chart-example-v8-0.png
今天来彻底搞定这个问题!!
版本
工具 | 版本 |
---|---|
Docker | 1.13.1 |
Go | 1.16.5 |
Python | 3.6.8 |
Promethues | 2.28.1 |
Grafana | v8.1.0-30031pre(这个太重要了!!!) |
看官网!看官网!看官网
首先需要有表格化的数据,并且这些数据都是 number 类型,而不是 string,你的 Grafana Metrics browser 可以长这样:
copy1# data1
2custom_market{browser_name="Chrome"}
3
4# data2
5custom_market{browser_name="Safari"}
6
7# data3
8custom_market{browser_name="Edge"}
Format 格式都是 Table,Instant 瞬间值都要打开。最终你获得了像这样的表数据(打开 Tabel View 可以看到)
浏览器 | 市场占比 | CPU占用 |
---|---|---|
Chrome | 65.88 | 5% |
Safari | 18.50 | 3% |
Edge | 3.29 | 3.4% |
在 Transform 中转换展示方式。选择 Concatenate fields 再选择 → Copy frame name to field name
在 Transform 中选择需要展示的数据。选择 Filter by name,点选你需要展示的数据
最后,还是在 Transform 中重命名字段。选择 Organize fields,将英文转化为中文吧(如果你需要的话)。
完美收工!就得到了上图的右边部分显示的相同样式。
参考链接
[1] 官网:Bar chart
[2] A Complete Guide to Bar Charts
[3] A Complete Guide to Stacked Bar Charts
[4] 《How to Choose the Right Data Visualization》
其他补充
1. 匿名访问
copy1docker run
2 -itd --name grafana -p 3000:3000
3 -e "GF_AUTH_PROXY_ENABLED=true"
4 -e "GF_AUTH_ANONYMOUS_ENABLED=true"
5 -e "GF_SECURITY_ALLOW_EMBEDDING=true"
6 grafana/grafana
这里解释一下:GF_SECURITY_ALLOW_EMBEDDING,用于网页嵌套的。如果需要在 iframe 中嵌套 Grafana,那么把这个变量设置为true;
2. 全屏化展示
想让 Grafana 分享的面板全屏化,在分享的 URL 后面跟上
copy1&kiosk=true
再加上按钮 F11,食用效果更佳。
3. 支持 Emoji 啦 😄
虽然 Grafana 的显示都是文本不能显示图片 🤔,但是支持 emoji !!!✌
[1] emoji 点击复制版 👈
[2] emoji 大全版 🔮
结语
今天关于 Grafana 的分享就到这里结束啦,如果你感兴趣,欢迎联系我 🤙