这是最好的时代,也是最坏的时代,更是一个看脸的时代。
——查尔斯高 · 帅
颜值即真理,颜值即正义,在软件的世界也不例外。
今天给大家介绍一款高颜值的监控数据绘图工具,华丽的外表以及强大的数据展现功能保证让你对它一见钟情,快速爱上它!
---------------我是图很多的分割线------------
注:本文中引用图片均来源于软件的官方网站,更多美图欣赏请移步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一枚,曾就职于阿里巴巴。