grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。最好的参考资料就是官网,虽然是英文,但是看多了就会啦。
Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch,MySQL和OpenTSDB等。
每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
组成:
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. 设置:管理仪表盘设置和功能,如模板和注释。
要运行Grafana,请打开浏览器并转到http://localhost:3000/ ,如果你尚未配置不同的端口,则3000是Grafana监听的默认http端口,阿里云等公有云主机需要开通安全组规则。
默认用户名为admin,默认密码为admin。当你第一次登录时,系统会要求你更改密码,我们强烈建议你遵循Grafana的最佳做法并更改默认管理员密码,你可以稍后转到用户首选项并更改你的用户名。
按照前面的数据源,这里讲解几个我们常使用的数据源的配置,包括elasticsearch、opentsdb、influxdb和zabbix,也可以新增其他的数据源。
opentsdb数据源配置示例,其中关于Access这里具体解释下:Server (default) = 需要从Grafana后端/服务器访问,Browser = 需要从浏览器访问,对应上面的url。
es数据源配置示例:
influxdb数据源配置示例:
在配置好所使用的数据源之后,即可新增配置自己的面板。面板也存在多种:
这里选取graph为例,如下图所示,新增或配置仪表盘。右上角的红框中表示:新建、标星、分享、保存、设置、查询模式、时间段、缩小(针对时间段进行放宽,即小时间段换成了大时间段)、刷新等。
Graph里面的选项有:General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Alert(告警)、Time range(时间范围)
1. General(常规选择)
详情参考:http://docs.grafana.org/features/panels/graph/)
General允许定制面板的外观和菜单选项:
钻取/详细信息链接
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数据源为例:
指标:
3. Axes(坐标轴)
坐标轴
4. Legend(图例)
通过选择显示复选框隐藏图例。如果它被显示,它可以通过检查表复选框显示为一个值表。没有值的系列可以使用隐藏空复选框,从而在图例中隐藏。
options:
values:
5. Display(显示样式)
显示样式
1、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:空值被绘制为零值)
2、series overrieds:多坐标轴重写,即可以在这里设置y轴正负轴或z轴的正负轴,需要选择对应的指标,而且因指标、指标别名的变化需重新设置,设置完成后对比效果更好
3、Thresholds:可以写多条临界值在界面上显示,大于400,和大于600两个。如设置了alert,就不能设置这个。
4、Time regions:时间区域允许你突出特定的时间区域图的,更容易看到例如周末营业时间和/或工作时间。
6. Alert(告警)
Alert Config:Name & Evaluation interval:在这里可以指定警报规则的名称,以及调度器应该多长时间对警报规则进行评估。
Conditions:目前唯一存在的条件类型是一个查询条件,允许您指定查询字母(metric里查询语句的字母,代表哪个查询语句)、时间范围和聚合函数。
Notifications:在警告选项卡中,还可以指定警报规则通知,以及关于警报规则的详细信息。这个消息可以包含任何信息,关于如何解决这个问题的信息,链接到runbook等。实际的通知被配置并在多个警报之间共享。
State History:警戒状态的变化都被记录在内部注释Grafana的数据库表。状态更改可视为警报规则的图形面板中的注释。
7. Time range(时间范围)
您可以覆盖单个面板的相对时间范围,使它们与右上方的仪表盘时间选择器中选择的时间不同。这允许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选项允许您隐藏在覆盖时间范围选项时显示在面板右上方的覆盖信息文本。
注意:您只能在相对时间范围内覆盖仪表盘时间。绝对时间范围不可用。
1)变量之interval
这里的变量类型选择的是interval,可以设置隐藏状态,主要是控制查询时的采样周期,添加自动Auto后,在展示界面会根据选择的时间段自动选择对应的采样周期,这样设置的好处是减轻查询数据库的压力,同时展示界面的粒度会适配。
变量配置完毕后,在仪表盘Metrics中对应位置配置$interval即可。
interval变量展示:
2)变量之query
(1)Variable
name: 变量名,比如我这里取名为ip,到时候要使用这个变量名就用$ip来调用。
type: 变量类型,变量类型有多种,其中query表示这个变量是一个查询语句,type也可以是datasource,datasource就表示该变量代表一个数据源,如果是datasource你可以用该变量修改整个DashBoard的数据源,变量类型还可以是时间间隔Interval等等。这里我们选择query。
label: 是对应下拉框的名称,默认就是变量名,选择默认即可。
hide: 有三个值,分别为空,label,variable。选择label,表示不显示下拉框的名字。选择variable表示隐藏该变量,该变量不会在DashBoard上方显示出来。默认选择为空,这里也选默认。
(2)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。
(3)Selection Options
Multi-value:启用这个功能,变量的值就可以选择多个,具体表现在变量对应的下拉框中可以选多个值的组合。
Include All option:启用这个功能,变量下拉框中就多了一个all选项。
Custom all value:启用Include All option这个功能,才会出现Custom all value这个输入框,表示给all这个选项自定义一个值,all这个选项默认是所有值的组合,你也可以自定义,比如我自定义all为cpu五分钟平均负载,则选择all就代表cpu五分钟平均负载。
虽然选择组合值可以在一个panel里面查看多种监控数据,但是由于不同监控数据的数值大小格式都可能不一样,在一个图形里面格式很难兼容,这样就会出现问题,所以此处建议默认都不选。
(4)Value groups/tags
组合标签,可以选择多个值组合在一起设置一个标签,这个功能还没弄明白,按照官网上的操作没效果,暂且忽略吧,反正没多大影响。
Preview of values (shows max 20)
前面都设置好之后,下方会显示前二十。
点击add,group这个variables就创建好了。在仪表盘中配置时需要在变量的名字之前添加$标志。
注意:可以配置多个变量,且变量之间可以复用,即选定第一个变量之后,第二个变量可以使用择的第一个变量值再配置,以此类推
多变量展示效果:
下面是具体的一个influxdb数据源的具体变量的配置及展示效果:
最终的展示效果:
仪表盘导入导出功能方便不同grafana之间仪表盘的复用。也可以在grafana官网下载现有的模板使用,少许更改即可展示自己的数据。
导入:
Graph:线图形,可以选择折线图、点状图、柱状图来展示数据变化。
D3 Gauge:显示服务器CPU用量。
Dashboard list:创建一个可以展示Dashboard名称的列表。
Breadcrumb:创建空行,可以添加标题链接等,使优化遍历仪表盘展示。
Clock:时间表。
Pie Chart:
Table:图表,列出数据的数值图表,可以设置时间。
Grafana自身并不存储数据,数据从其它地方获取。需要配置数据源,支持从Zabbix中获取数据。
优化了图形的展现,可以用来做监控大屏。
支持用户的认证,运维安全。
Download Grafana | Grafana Labs
[zrz_file link=百度网盘 请输入提取码 name=grafana-6.7.1-1.x86_64.rpm pass=v4ag code=]
wget https://dl.grafana.com/oss/release/grafana-6.7.1-1.x86_64.rpm
sudo yum install grafana-6.7.1-1.x86_64.rpm
Grafana访问:启动后默认用户名密码都是admin。
需要修改密码,如果是放在公网的话,密码一定要有复杂性。
使用说明
需要先创建dashboard,然后再创建图形
每次操作都需要save保存,类似代码写完提交到代码管理服务器一样
默认不支持读取Zabbix数据,需要安装插件
Grafana安装Zabbix插件
grafana-cli plugins list-remote
grafana-cli plugins list-remote|grep -i zabbix
grafana-cli plugins install alexanderzobnin-zabbix-app
#插件安装有时候比较慢,可以下载离线的zabbix插件,放/var/lib/grafana/plugins,解压
systemctl restart grafana-server
plugins -> apps -> zabbix -> enable
配置Zabbix数据源:
http://server_ip/zabbix/api_jsonrpc.php
选择Zabbix的版本:
配置Zabbix用户名密码(Zabbix API details设置的用户名密码是zabbix的用户名密码)。
Grafana变量的使用:
Grafana使用变量功能让我们可以选择展现哪台服务器的流量,适用于多服务器环境。
图形展示:
首先安装好mysql,将监控的日志数据写入到mysql之中。如下图:
好了,这里就已经准备好了相关的测试模拟数据。那么下面就使用Grafana来配置图表看看。
1. 在登陆系统后的首页,就可以进行数据源的添加了。
2. 按库区分的,多个库要建立多个数据源了,所以名称要命名好
测试下使用:
3. 回到首页,点击表格(Dashboard),创建一个新的,再创建一个视图
创建Table表格,save保存一下,再进来:
4. 点击编辑
5. 选择数据库源,这时候会变成输入sql语句了
6. 下面来编写一个SQL查询来看看。
7. 好了,那么下面把这个SQL语句配置到Grafana钟进行呈现。
8. 可以进行拖拽拉扯,点击序号、API请求之类的标题还可以针对排序
好了,基本上table表格已经呈现,但是单纯这样的一个表格满足不了我的胃口。那么下面就来再整一个曲线图来看看。
我不是想单独增加一个新的面板,而是想在刚刚创建的table上面创建一个曲线图,那么该怎么做呢?
1. 在面板创建新的图表
2. 这次选择曲线图
3. 进行配置