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

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

——查尔斯高 · 帅

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

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

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

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 106,674评论 12 127
  • 概述 我想分享两部分内容: 互联网上用到的指标收集展现工具,参考借鉴 互联网监控平台设计时的结构层,范围层,表现层...
    悟静家阅读 4,775评论 2 19
  • 注意: 该 Docker 版本为了支持 Docker 机,于是不再支持 Boot2Docker 命令行。使用 Do...
    提莫队长1234阅读 3,366评论 0 8
  • 本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lso...
    老夫刘某阅读 2,183评论 0 7
  • 小时候家里条件不是很好,偶尔吃着爸爸从市场买回来的大馒头的时候,都会非常满足,心里头觉着一阵温暖,那时候暗暗下定决...
    意思姑娘阅读 98评论 0 0