这是最好的时代,也是最坏的时代,更是一个看脸的时代。
——查尔斯高 · 帅
颜值即真理,颜值即正义,在软件的世界也不例外。
今天给大家介绍一款高颜值的监控数据绘图工具,华丽的外表以及强大的数据展现功能保证让你对它一见钟情,快速爱上它!
------------我是图很多的分割线------------
注: 本文中引用图片均来源于软件的官方网站,更多美图欣赏请移步http://grafana.org/
曾经,我们的监控系统可能是长这样的:
(图片来源于软件的官方网站)
或者,长这样:
(图片来源于软件的官方网站)
今天我们要介绍的Grafana长这样:
(图片来源于软件的官方网站)
这样:
(图片来源于软件的官方网站)
这样:
(图片来源于软件的官方网站)
以及这样:
(图片来源于软件的官方网站)
下面就简单给大家介绍一下Grafana的一些强大的feature。
丰富的绘图功能
作为一个数据可视化工具最重要的当然是要有强大的绘图功能
点击、选择区域进行时间轴的zoom in及zoom out 方便快速选择时间区间
多Y轴
支持柱状图、折线图、点图、饼图、表格等多种图表
可以设置阈值、对数刻度
Y轴多种单位(字节、毫秒等等)
全屏查看或者编辑图表
可以混合使用柱、线、点等方式绘图
可以通过界面或者http api导出任何图表为png图片格式
(图片来源于软件的官方网站)
强大的仪表盘(Dashboard)
轻松拖拽图表,改变行和图表的宽度
当图表数量众多的时候可以通过搜索标题(title)或者标签(tag)定位
模板化的仪表盘
脚本化的仪表盘,可以保存为Json文档,快速保存、复制
可以通过 HTTP API 进行创建和更新
多种多样的图表类型
(图片来源于软件的官方网站)
丰富的数据源支持
Graphite
InfluxDB
Elasticsearch
OpenTSDB
CloudWatch
(图片来源于软件的官方网站)
模板变量
试想如果我们有成千上万的主机,每台主机又有成百上千的监控指标,那么我们要配置无数的Dashboard,变量功能极大方便了我们配置监控图表
metric的查询中使用变量
图表标题使用变量
函数参数可以使用变量
可以通过URL来给变量赋值
(图片来源于软件的官方网站)
快速的时间范围选择
通过下拉按钮快速选择时间范围
支持本地时间和UTC时间
设置自动刷新时间间隔
复杂的日期选择,如最近x分钟、小时、天,昨天,上周的今天等等
丰富的插件(plugin)支持
Grafana.net提供了众多特色插件支持
(图片来源于软件的官方网站)
Grafana可以用在任何需要数据可视化的地方,如果有一天老板需要你做一份漂亮的业务数据图表,你无需头疼用什么绘图库去开发,你要做的仅仅是将业务数据稍作加工存入Grafana支持的DataSource,点几下鼠标即可配制出一份完美的数据图表。
看到这里,各位看官有没有一点点心动呀? 光说不做不是笔者风格,下面来一起动动手,给各位看官演示一下使用docker环境快速(预计小于20分钟,取决于您的网速)搭建一个demo,来亲自体验一下grafana的魅力,后端的datasource(时序数据库)使用graphite。、
Grafana实战演示
准备工作: 一台接入网络的笔记本,Mac或者Windows,Linux当然是最好了(笔者的办公电脑是Mac,所以就只演示Mac咯)。
Step 1: 安装基础软件,包括如下几个工具:
Docker Engine, docker核心部分,包括docker 的服务端进程以及客户端工具
Docker Machine ,可以让你在非linux操作系统上(例如Mac、Windows)借助VM工具来安装运行docker服务
Docker Compose,一个用来定义和运行多个容器的管理工具
VirtualBox. , 为Docker Machine提供虚机支持
在OSX上面可以使用homebrew来安装
$ brew install docker
$ brew install docker-machine
$ brew install docker-compose
但是本文推荐使用官方的集成工具包 Docker Toolbox,集成了如上所有的工具。访问Docker官方网站来下载适合你的版本。这些工具的安装使用不在本文讨论范围内,因此请参考Docker官方文档。
笔者打算另外写文章来讨论docker相关问题,请随时关注点融黑帮公众号:)。
Step 2. 使用docker-machine创建一个docker host
Step 3:编写 docker-compose.yml 文件,内容如下:
执行启动命令:
$ docker-compose up -d
docker-compose会根据yml文件自动pull对应的镜像,并用指定参数启动容器。安装操作已做完,简单吧?剩下的事情就是等待了,等待时间取决于你的网速。
Step 4: 等容器都启动以后,查看docker-machine的IP地址,并访问
$ docker-machine ip vm-grafana
192.168.99.100
接收数据的carbon-cache服务监听在 tcp://192.168.99.100:2003
graphite-web服务监听在
http://192.168.99.100:8000/
Grafana 服务监听在
http://192.168.99.100:3000
使用netcat(nc命令))以1秒为间隔发送一些20~30范围内的随机数据(称为metrics)给graphite,跟大多数时间序列数据库(TSDB)类似,其数据格式包含三部分: metric key, metric value,timestamp。 例如:
test.data 10 1467764049
模拟生成一些metrics发送给graphite:
$ while true; do echo "test.data $(($RANDOM%10+20)) $(date +%s)" | nc 192.168.99.100 2003; sleep 1; done
浏览器访问grafana
http://192.168.99.100:3000 初始密码admin/admin
添加数据源:
新建一个Dashboard, 新建一个Panel, 添加一个metric,选择刚刚我们加的test.data, Grafana 便绘制出图表:
这里只用最最简单、最最少的操作,建立起一个Grafana的demo服务,如果你有兴趣可以参考官方文档,深入探索一下她更多更强大的功能。
TO Grafana:你是这个看脸世界的一股清流,还不是因为这个世界你最好看。
本文作者:高帅(点融黑帮),现任点融技术部DevOps一枚,曾就职于阿里巴巴。
本文由@点融黑帮(公众号ID:DianrongMafia) 原创发布于今日头条,未经许可,禁止转载。