1.概述--美观、强大的可视化监控指标展现工具
grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展示,是网络架构和应用分析中最流行的时序数据展现工具,目前已经支持绝大部分经常使用的时序数据库。最好的参考资料就是官网(http://docs.grafana.org/),虽然是英文,可是看多了就会啦。html
1.1基本概念
Grafana支持许多不一样的数据源。每一个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持如下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。正则表达式
每一个数据源的查询语言和能力都是不一样的。你能够把来自多个数据源的数据组合到一个仪表板,但每个面板被绑定到一个特定的数据源,它就属于一个特定的组织。sql
支持的数据源数据库
DashBoard:仪表盘,就像汽车仪表盘同样能够展现不少信息,包括车速,水箱温度等。Grafana的DashBoard就是以各类图形的方式来展现从Datasource拿到的数据。后端
Row:行,DashBoard的基本组成单元,一个DashBoard能够包含不少个row。一个row能够展现一种信息或者多种信息的组合,好比系统内存使用率,CPU五分钟及十分钟平均负载等。因此在一个DashBoard上能够集中展现不少内容。浏览器
Panel:面板,实际上就是row展现信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式,具体能够去官网上查阅。服务器
Query Editor:查询编辑器,用来指定获取哪一部分数据。相似于sql查询语句,好比你要在某个row里面展现test这张表的数据,那么Query Editor里面就能够写成select *from test。这只是一种比方,实际上每一个DataSource获取数据的方式都不同,因此写法也不同(http://docs.grafana.org/features/datasources/),好比像zabbix,数据是以指定某个监控项的方式来获取的。网络
Organization:组织,org是一个很大的概念,每一个用户能够拥有多个org,grafana有一个默认的main org。用户登陆后能够在不一样的org之间切换,前提是该用户拥有多个org。不一样的org之间彻底不同,包括datasource,dashboard等都不同。建立一个org就至关于开了一个全新的视图,全部的datasource,dashboard等都要再从新开始建立。架构
User:用户,这个概念应该很简单,不用多说。Grafana里面用户有三种角色admin,editor,viewer。admin权限最高,能够执行任何操做,包括建立用户,新增Datasource,建立DashBoard。editor角色不能够建立用户,不能够新增Datasource,能够建立DashBoard。viewer角色仅能够查看DashBoard。在2.1版本及以后新增了一种角色read only editor(只读编辑模式),这种模式容许用户修改DashBoard,可是不容许保存。每一个user能够拥有多个organization。编辑器
dashboard界面最上面一行解释
界面顶部标题标注
上图显示了信息中心的顶部标题。
1侧面菜单切换:切换侧边菜单,容许您专一于仪表盘中显示的数据。侧面菜单提供对与仪表盘无关的功能(如用户,组织和数据源)的访问。
2信息中心下拉菜单:此下拉菜单显示您当前正在查看的信息中心,并容许您轻松切换到新的信息中心。从这里,您还能够建立新的信息中心,导入现有的信息中心和管理信息中心播放列表。
3星型仪表盘:对当前仪表盘执行星号(或取消星标)。加星标的信息中心在默认状况下会显示在您本身的主页信息中心上,而且是标记您感兴趣的信息中心的便捷方式。
4共享仪表盘:经过建立连接或建立其静态快照来共享当前仪表盘。在共享前确保信息中心已保存。
5保存仪表盘:当前仪表盘将与当前仪表盘名称一块儿保存。
6设置:管理仪表盘设置和功能,如模板和注释。
2.全面瓦解
对于grafana的部署,网上一搜一大把,这里不做累赘,可参考(grafana官网安装说明、grafana酷炫图表),继续如下内容。
2.1登陆grafana
要运行Grafana,请打开浏览器并转到http://localhost:3000/,若是你还没有配置不一样的端口,则3000是Grafana监听的默认http端口。默认用户名为admin,默认密码为admin。当你第一次登陆时,系统会要求你更改密码,咱们强烈建议你遵循Grafana的最佳作法并更改默认管理员密码,你能够稍后转到用户首选项并更改你的用户名。
登陆界面,可看到版本号
2.2数据源配置
按照前面的数据源,这里讲解几个咱们常使用的数据源的配置,包括es、opentsdb、influxdb和zabbix,也能够新增其余的数据源。
经常使用数据源示例
opentsdb数据源配置示例
其中关于Access这里具体解释下:Server (default) = 须要从Grafana后端/服务器访问,Browser = 须要从浏览器访问,对应上面的url。
es数据源配置示例
influxdb数据源配置示例
2.3仪表盘配置
在配置好所使用的数据源以后,便可新增配置本身的面板。面板也存在多种:
仪表盘
这里选取graph为例,以下图所示,新增或配置仪表盘。右上角的红框中表示:新建、标星、分享、保存、设置、查询模式、时间段、缩小(针对时间段进行放宽,即小时间段换成了大时间段)、刷新等
新增仪表盘或编辑已有仪表盘
Graph里面的选项有:General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Alert(告警)、Time range(时间范围)
(1)General(常规选择:http://docs.grafana.org/features/panels/graph/)
常规选择
General容许定制面板的外观和菜单选项。
General Options
Title:仪表盘上的面板标题
Description:仪表盘描述信息
Transparent :是否透明,选择以后会把该图的背景去掉,即透明状态
Repeat panel:是否重复panel,填写是重复的变量(参考后文3.2变量配置),即这个标题名中添加对应的变量,引用该变量需添加$,图标题便可随着自选的变量而变化。
钻取/详细信息连接
Drilldown / detail link(为当前panel增长超连接)
Drilldown项容许在面板添加动态连接,能够连接到其余的dashboards或urls。
每一个连接都有一个title,一个type和params。连接能够是dashboard,或是绝对连接。若是是dashboard连接,则dashboard值必须是仪表盘的名称。若是它是一个绝对连接,URL就是连接的URL。
params容许添加额外的URL参数的连接。格式是name=value,多种参数用&分隔。模板变量能够做为使用$ myVar做为值。
当链接到另外一个Dashboard使用的模板变量,你可使用var-myVar =value 填充模板变量所需的值从连接。
(2)Metrics(指标)
metrics页签订义要呈现的系列数据和源。每一个数据源提供不一样的选择(参考官网)。这里以opentsdb数据源为例:
指标
Data Source:数据源,在前面配置好数据源以后,在这里直接选择对应的数据源
查询A、B:能够根据状况进行新增或删除
metric:指标名,输入部分指标名,会自动查询匹配,能够快速进行选择
Aggregator:聚合条件,区分下第一行和第二行的aggregator,第一个是对指标值的聚合,第二个是对采样周期里的聚合
Alias:别名,根据须要进行自定义
Down sample:采样周期,即每隔多少周期采集一次数据并展示出来,详情可见3.1特殊配置之interval
Filters:过滤条件,能够添加多个,group by是否分组进行展现,其中参数type部分经常使用选择项的解释:literal_or, ilteral_or, wildcard,regexp等能够当作是一个具备返回值的函数
literal_or:返回一个或多个值,示例:hostname=literal_or(data-3|data-4|data-160),至关于数据库中的WHERE hostname IN ('data-3','data-4','data-160')
ilteral_or:做用于literal_or相似,区别是literal_or大小写敏感,ilteral_or不区分大小写
not_literal_or:做用于literal_or相反,大小写敏感
not_iliteral_or:做用于not_literal_or相似,不区分大小写
wildcard:能够在一个字符串加一个*前缀、后缀、中缀(字符串中间添加修饰符号)或者多个中缀,*能够表明任意的字符,示例:hostname=wildcard(data*),表示表明任何以data开头的主机名,至关于数据库中的WHERE hostname='data%'
regexp:正则表达式 功能很是强大,能够编写很是灵活的过滤规则,示例:regexp(data\-[0-9]),表示data-1到data-9之间的全部主机,须要注意的是特殊字符须要转义,如-,转义符为\
Tags:标签,对应的就是填写对应的指标和具体的值(注意和filters中的区别,这里只能填写具体的值,而不是写一类值)
(3)Axes(坐标轴)
坐标轴
Left Y和Right Y能够自定义,便可以设置多重坐标轴,方便对比查看
Show:是否显示,能够经过从显示轴中取消适当的框来隐藏轴。
Unit:y轴的显示单元
Scale:Y轴的间隔度。选择“log base 2”以double的速度递增,(0、一、二、四、8...),选择“log base 32”,就是(0、一、32...)
Y-Min:Y轴的最小值(默认atuo)
Y-Max:Y轴的最大值(默认atuo)
Lable:Y轴的文本标签
(4)Legend(图例)
图例
经过选择显示复选框隐藏图例。若是它被显示,它能够经过检查表复选框显示为一个值表。没有值的系列可使用隐藏空复选框,从而在图例中隐藏。
options:
show:是否显示图例
as table:做为表格样式显示
to the right:显示在右边
values:
在图例中,显示每一个series的max\min\avg\total\current,能设置小数点位数。在图上显示,
经过点击列标题(若是保存的话,这个选项将会被持久化)来排序,经过min/max/avg来排序。
点击图例“”,也可单纯显示某个series。
(5)Display(显示样式)
显示样式
一、Draw option
Draw Modes:Bars(柱状图)、lines(折线图)、Points(点)
Mode Options:Fill(充满区域透明度),Line Width(线宽度),Staircase(是否阶梯),Point Radius(点的半径,以此控制点的大小)
Hover tooltip
Mode:All series(鼠标移到点上显示全部图例的值),single(鼠标移到点上显示该series图例的值)
Sort order:None(按图例排列顺序显示),increaseing(值的从小到大递增),Decreasing(值从大到小递减)
Stacking&Null value :stack(多series是否堆叠显示),percent(百分比),Null value:空值怎么显示(connected:null值被忽略,直线直接跳转到下一个值,null:空值被保留为空,这将在图中留下空白区域,null as zero:空值被绘制为零值)
二、series overrieds:多坐标轴重写,便可以在这里设置y轴正负轴或z轴的正负轴,须要选择对应的指标,并且因指标、指标别名的变化需从新设置,设置完成后对比效果更好
alias or regex:series图例名称
Y-axis:显示在Y轴左右哪边,
z-index(多series显示先后位置),
stack:堆叠,可选择,metric中A\B\C\D哪一个。
transform(negative-Y:将值显示为负数)
fill below to:(将二者值充满颜色 ,由上往下从大值到小值,因此不能够写成min fill below tu max写法如图:)
填充
三、Thresholds:能够写多条临界值在界面上显示,大于400,和大于600两个。如设置了alert,就不能设置这个。
临界值
四、Time regions:时间区域容许你突出特定的时间区域图的,更容易看到例如周末营业时间和/或工做时间。
(6)Alert(告警)
告警
Alert Config
Name & Evaluation interval:在这里能够指定警报规则的名称,以及调度器应该多长时间对警报规则进行评估。
Conditions:目前惟一存在的条件类型是一个查询条件,容许您指定查询字母(metric里查询语句的字母,表明哪一个查询语句)、时间范围和聚合函数。
Notifications
在警告选项卡中,还能够指定警报规则通知,以及关于警报规则的详细信息。这个消息能够包含任何信息,关于如何解决这个问题的信息,连接到runbook等。实际的通知被配置并在多个警报之间共享。
State History
警惕状态的变化都被记录在内部注释Grafana的数据库表。状态更改可视为警报规则的图形面板中的注释。
(7)Time range(时间范围:https://www.cnblogs.com/michellexiaoqi/p/7274890.html)
时间范围
您能够覆盖单个面板的相对时间范围,使它们与右上方的仪表盘时间选择器中选择的时间不一样。这容许metrics在不一样的时间段显示或同个时间。在面板编辑器模式的Time Range重写时间设置。
Override relative time:覆盖相对时间,该graph在屏幕上的显示时间段(time range)
Add time shift:添加时移,将如今时间减去时间,如20m,那屏幕的显示最新的时间段结束 为now-20m
Hide time override info:隐藏时间覆盖信息,即右上角的时间,当缩放或更改 Dashboard time到自定义绝对时间范围时,全部面板重写将被禁用。当仪表盘时间相对时,面板相对时间覆盖只处于活动状态。面板时间重写老是活跃的,即便当仪表盘的时间是绝对的。
Hide time override info选项容许您隐藏在覆盖时间范围选项时显示在面板右上方的覆盖信息文本。
注意:您只能在相对时间范围内覆盖仪表盘时间。绝对时间范围不可用。
3.特殊配置
3.1变量之interval
这里的变量类型选择的是interval,能够设置隐藏状态,主要是控制查询时的采样周期,添加自动Auto后,在展现界面会根据选择的时间段自动选择对应的采样周期,这样设置的好处是减轻查询数据库的压力,同时展现界面的粒度会适配。变量配置完毕后,在仪表盘Metrics中对应位置配置$interval便可。
interval配置
interval变量展现
3.2变量之query
变量
Variable
name: 变量名,好比我这里取名为ip,到时候要使用这个变量名就用$ip来调用。
type: 变量类型,变量类型有多种,其中query表示这个变量是一个查询语句,type也能够是datasource,datasource就表示该变量表明一个数据源,若是是datasource你能够用该变量修改整个DashBoard的数据源,变量类型还能够是时间间隔Interval等等。这里咱们选择query。
label: 是对应下拉框的名称,默认就是变量名,选择默认便可。
hide: 有三个值,分别为空,label,variable。选择label,表示不显示下拉框的名字。选择variable表示隐藏该变量,该变量不会在DashBoard上方显示出来。默认选择为空,这里也选默认。
Query options
Data source: 数据源,不用多说。
Refresh: 什么时候去更新变量的值,变量的值是经过查询数据源获取到的,可是数据源自己也会发生变化,因此要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显示出来。Refresh有三个值能够选择,Never:永不更新。On Dashboard Load:在DashBoard加载时更新。On Time Range Change:在时间范围变化时更新。此处,选择On Dashboard Load,当数据源发生更新是,刷新一下当前DashBoard,变量的值也会跟着发生更新。
Query:查询表达式,不一样的数据源查询表达式都不一样(这些能够到官网上查询:http://docs.grafana.org/features/datasources/)。
Regex:正则表达式,用来对抓取到的数据进行过滤,这里默认不过滤。
Sort:排序,对下拉框中的变量值作排序,排序的方式挺多的,默认是disable,表示查询结果是怎样下拉框就怎样显示。此处选disable。
Selection Options
Multi-value:启用这个功能,变量的值就能够选择多个,具体表如今变量对应的下拉框中能够选多个值的组合。
Include All option:启用这个功能,变量下拉框中就多了一个all选项。
Custom all value:启用Include All option这个功能,才会出现Custom all value这个输入框,表示给all这个选项自定义一个值,all这个选项默认是全部值的组合,你也能够自定义,好比我自定义all为cpu五分钟平均负载,则选择all就表明cpu五分钟平均负载。
虽然选择组合值能够在一个panel里面查看多种监控数据,可是因为不一样监控数据的数值大小格式均可能不同,在一个图形里面格式很难兼容,这样就会出现问题,因此此处建议默认都不选。
Value groups/tags
组合标签,能够选择多个值组合在一块儿设置一个标签,这个功能还没弄明白,按照官网上的操做没效果,暂且忽略吧,反正没多大影响。
Preview of values (shows max 20)
前面都设置好以后,下方会显示前二十。
点击add,group这个variables就建立好了。在仪表盘中配置时须要在变量的名字以前添加$标志。
注意:能够配置多个变量,且变量之间能够复用,即选定第一个变量以后,第二个变量可使用择的第一个变量值再配置,以此类推
多变量示例
多变量展现效果
下面是具体的一个influxdb数据源的具体变量的配置及展现效果。
inflxdb数据源之变量query
最终的展现效果
4.仪表盘导出导入
仪表盘导入导出功能方便不一样grafana之间仪表盘的复用。也能够在grafana官网下载现有的模板使用,少量更改便可展现本身的数据。
导出
导