致这个看脸的世界 — 高颜值监控绘图工具Grafana

Java工具

浏览数:2,455

2019-2-2

这是最好的时代,也是最坏的时代,更是一个看脸的时代。

——查尔斯高 · 帅

颜值即真理,颜值即正义,在软件的世界也不例外。

今天给大家介绍一款高颜值的监控数据绘图工具,华丽的外表以及强大的数据展现功能保证让你对它一见钟情,快速爱上它!

—————我是图很多的分割线————

注:本文中引用图片均来源于软件的官方网站,更多美图欣赏请移步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一枚,曾就职于阿里巴巴。

原文地址:https://www.jianshu.com/p/6bc606348050