grafana简易学习手册

grafana简易学习手册 ---- 让你的zabbix披上超炫的皮肤

一、grafana简介

1. grafana的官方介绍:

grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。

grafana最常用于因特网基础设施和应用分析,但在其他领域也有机会用到,比如:工业传感器、家庭自动化、过程控制等等。

grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch。

Grafana官方网站:https://grafana.com/

2. 到底什么是grafana?

Grafana其实就是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,经常被用作基础设施的时间序列数据和应用程序分析的可视化,它在其他领域也被广泛的使用包括工业传感器、家庭自动化、天气和过程控制等。

Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。

官方支持以下数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB。

3. 如何获取Grafana

访问Grafana下载页面https://grafana.com/grafana/download在这里可获取该软件的全版本。

二、部署grafana

系统环境:


[root@zabbix ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

[root@zabbix ~]# uname -r

3.10.0-862.el7.x86_64

[root@zabbix ~]# systemctl status firewalld.service

● firewalld.service - firewalld - dynamic firewall daemon

  Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

  Active: inactive (dead)

    Docs: man:firewalld(1)

[root@zabbix ~]# getenforce

Disabled

1. 安装grafana


1.获取官方rpm包

[root@zabbix ~]# wget https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm

2.安装grafana

[root@zabbix ~]# yum localinstall grafana-5.4.2-1.x86_64.rpm -y

PS:这里只是为了获取rpm包,可以直接使用

yum install -y https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.rpm

3.启动grafana

[root@zabbix ~]# systemctl enable grafana-server

[root@zabbix ~]# systemctl start grafana-server

4.检查监听端口(默认3000)

[root@zabbix ~]# netstat -lntp|grep grafana

tcp6      0      0 :::3000                :::*                    LISTEN      5501/grafana-server

2. 安装服务器端图像渲染组件


[root@zabbix ~]# yum install fontconfig freetype* urw-fonts

PS: 服务器端图像(png)渲染是grafana的一项可选功能,在共享可视化时非常有用,例如在警报通知中。如果图像缺失文本,请确保已安装字体包。

3. 安装grafana-zabbix 插件


1. 通过grafana-cli plugins list-remote 命令来查看都有什么插件可以安装

[root@zabbix ~]# grafana-cli plugins list-remote|grep "zabbix"

id: alexanderzobnin-zabbix-app version: 3.10.0

PS: 确认zabbix 插件的名称方便我们安装

2.安装zabbix 插件

[root@zabbix ~]# grafana-cli plugins install alexanderzobnin-zabbix-app

grafana-zabbix1.png

4. 安装grafana的时钟插件


[root@zabbix ~]# grafana-cli plugins install grafana-clock-panel

grafana-zabbix2.png
grafana-zabbix21.png

5. 重启服务


在zabbix的插件安装成功之后会提示我们需要重启grafana 使插件生效

[root@zabbix ~]# systemctl restart grafana-server

三、登录配置

1. 登录Grafana,在浏览器输入 http://Grafana_IP:3000

默认用户和密码:admin/admin

1. 首次登录,会提醒用户修改用户密码
grafana-zabbix3.png
2. 默认登录后会需要创建数据源
grafana-zabbix7.png

grafana支持的数据库类型很多,比较常用的是InfluxDB

grafana-zabbix10.png

由于我们已经安装了Zabbix插件,因此grafana会将zabbix作为我们的第一数据源

2. 添加数据源

可以通过点击左上角的小齿轮图标,点击Data Sources添加数据源,grafana的数据源支持各种各样的数据库

1. 添加了zabbix支持插件,数据源就可以使用zabbix了。
grafana-zabbix5.png
grafana-zabbix6.png

开启zabbix插件后显示是这样的

grafana-zabbix8.png
2. 添加zabbix数据源

然后我们就需要来添加zabbix的数据源信息了,grafana是通过zabbix的api接口获取zabbix的监控数据的,因此我们需要做相应的设置

grafana-zabbix11.png
grafana-zabbix9.png
3. 相关配置项目说明:
配置项目 说明
Name 给数据源起一个名字。
Default 选择默认,意味着数据源将预先选定为新的面板。
Type 选择数据源的类型。
Url 这里的Url是http协议,地址和端口是zabbix-web提供的接口。或为zabbix的api地址。
Access 访问代理,这里选择了proxy表示Grfana通过后端访问,还有direct值表示从浏览器直接访问目录。
Username 输入zabbix的用户名,需要进行认证,一般使用Admin。
Password 输入zabbix用户的密码,Admin默认密码为zabbix。
1.添加zabbix的API接口信息

Zabbix的API地址为

http://localhost/zabbix/api_jsonrpc.php (ip为zabbix的服务端地址)

grafana-zabbix12.png

代理(proxy)访问意味着的Grafana后端将从浏览器代理所有请求,并将它们发送到数据源。这样是有用的,因为它可以消除CORS(交叉来源站点资源)的问题,如消除需要传播到数据源到浏览器的身份验证详细信息。但还支持直接(direct)访问,因为在某些情况下可能用来访问直接根据用例和拓扑结构的Grafana、 用户和数据源的数据源。

2.添加认证信息
grafana-zabbix13.png
3.添加完成后save&test
grafana-zabbix14.png
grafana-zabbix15.png

一般弹出绿色带√的对话框,就表示成功了,在我们安装完zabbix插件后,其实它已经默认安装了几个仪表盘的模板,我们先将它们开启, 使用grafana的好处是对图形的自定义更加简便,通过变更不同的json文件,即可在数据源中查找到想要的结果,然后绘制出图,我们可以直接将已有的图形拷贝,并使用到其他的仪表盘中,再进行编辑,这样可以很有效的简化操作。

grafana-zabbix20.png

详细配置教程请参考官方文档:官方安装配置文档

常见错误解决请参考:官方错误解决方案

3. 创建DashBoard

grafana-zabbix4.png

创建好数据源之后,就需要创建DashBoard(仪表盘)了

grafana-zabbix22.png
1、添加一个新的空白仪表盘
grafana-zabbix23.png
2、单击标题面板可打开一个菜单框。单击edit 选项面板将会打开额外的配置选项。

Graph里面的选项有:

General(常规选择)、Metrics(指标)、Axes(坐标轴)、Legend(图例)、 Display(显示样式)、Time range(时间范围)

grafana-zabbix24.png
1. Genera(常规选择):添加图形标题,图形宽度高度等
配置项目 说明
Title 仪表板上的面板标题
Span 面板背景透明化
Drilldown / detail link 钻取/详细信息链接
grafana-zabbix25.png

拓展:钻取/详细信息链接(Drilldown / detail link)

钻取部分允许添加动态面板的链接,可以链接到其他仪表板或URL。



每个链接都有一个标题,一个类型和参数。链接可以是 dashboard或 absolute链接。如果它是一个仪表板链接, dashboard值必须是一个仪表板的名字。如果这是一个 absolute链接,是URL链接的URL。



params允许添加额外的URL参数的链接。格式是 name=value与多个参数分开,当链接到另一个仪表板使用模板变量,你可以使用 var-myvar=value填充模板变量的期望值链接。
2. Metrics(指标)

​ 定义了来源数据的呈现,每个数据源都提供不同的选择。面板的来源数据通过group,host,application,item从zabbix中获得。

grafana-zabbix26.png
配置项目 说明
Data Source 数据来源,因为是zabbix插件,自然来自zabbix,支持使用变量
Group zabbix中设置的主机群组,支持使用变量
Host zabbix中设置的主机名,支持使用变量
Application zabbix中的应用集,可以在下拉菜单中自由选择
Item zabbix中的监控项,支持正则匹配多个监控项
3. Axes(坐标轴)

用于坐标轴和网格的显示方式,包括单位,比例,标签等。

Left Y和 Right Y可以定制使用,因其中的可选参数太多,怕描述不准确。所以请在使用的时候参考官方文档

X -Axis可以选择图形面板模式:Time(线性时间)、Series(系列对比)、Histogram(直方图)

grafana-zabbix27.png
设置项目 说明
Unit 单位
Mode Time|Series|Histogram
4. Legend(图例):图例展示

Grafana 中Legend值的计算取决于你使用的度量查询方式和什么样类型的聚合或合并点来实现的,所有上述所说的值在同一时间可能都是不正确的。
例如,如果你是每秒请求一次,这可能是使用平均值来作为一个整合,然而这个Legend值不会代表请求的总数。这只是Grafana收到的所有数据点的总和。

grafana-zabbix28.png
图例的参数 说明
Show 显示查询的参数名称
As Table 以表格是形似显示
To the right 在右边显示
Total 返回所有度量查询值的总和
Current 返回度量查询的最后一个值
Min 返回最小的度量查询值
Max 返回最大的度量查询值
Avg 返回所有度量查询的平均值
Decimals 控制Legend值的多少,以小数显示悬浮工具提示(图)
5. Display(显示样式)

显示样式的控件属性图如下:

grafana-zabbix29.png

图表模式(Draw Modes)

Bar:一个条形图显示值
Lines:显示线图值
Points:显示点值

选择模式(Mode Options)

Fill:系列的颜色填充,0是没有。
Line Width:线的宽度。
Staircase:楼梯状显示。

PS: 如果有多个选择项,它们可以作为一个群体显示。

叠加和空值(Stacking & Null value)

Stack:每个系列是叠在另一个之上
Null value:空值

PS: 如果你启用了堆栈可以选择应该显示鼠标悬停功能。

6. Time range(时间范围)
grafana-zabbix30.png
3、仪表盘顶部标题介绍
grafana-zabbix31.png
1.侧菜单切换:

切换菜单,让你专注于仪表板中给出的数据。侧菜单提供了访问特性,仪表板,用户,组织和数据源等。

2.仪表板下拉菜单:

下拉菜单显示你当前浏览的仪表板,并允许轻松地切换到另一个新的仪表板。在这里你还可以创建一个新的仪表板,导入现有的仪表板和管理仪表板播放列表。

3.添加新的面板:

可以在当然仪表盘中添加新的面板,如图形面板,txt面板等。

4.星仪表板:

星(或unstar)当前的仪表板。默认情况下星仪表板将出现在自己建立的仪表板里,为你提供快捷的查看途径。

5.仪表板分享:

通过创建一个链接或创建一个静态快照分享当前仪表板。

6.保存仪表板:

以当前仪表板的名字保存。会有备份,如果有变量或参数改变,会有覆盖提醒。

7.设置:

管理仪表板的设置和特性,比如模板和注释。

8.显示模式:

可以隐藏顶部标题,只显示仪表盘。

9.查询时间:

可以切换数据查询的时间段,作用和zabbix中类似。

10.刷新:

刷新仪表盘的数据读取。

4. 仪表盘变量功能

单纯的手动去添加一个个监控图,只能显示一个主机的所有监控图形,若要查看不同主机的所有监控图形,就要通过变量的方式去实现。我们要设置的变量包括group,host,application和iteam。

仪表盘模板可以让你创建一个交互式和动态性的仪表板,它是Grafana里面最强大的、最常用的功能之一。创建的仪表盘模板参数,可以在任何一个仪表盘中使用。

1、创建变量
grafana-zabbix32.png
1.变量(Variable)
grafana-zabbix33.png

Name(命名):变量的名称。
Label(标签):可见标签变量。例如,主机组,而不是HOST_GROUP。
Type(类型):查询类型选择。

PS: 有五种变量类型: query,custom,interval,Data source和Contsta。它们都可以用来创建动态变量,不同之处在于获得的数据值不一样。

2.查询选项(Query Options)
grafana-zabbix34.png

Data source(数据源):用于查询变量值的数据源。
Refresh(刷新):更新此变量的值。
Query(查询):查询字符串。
Regex(正则表达式):如果你需要筛选值或提取价值的一部分,那就使用正则表达式。

3.选择选项(Selection Options)
grafana-zabbix35.png

Multi-value(多值):启用,如果你想在同一时间选择多个值。
数值组/标签(实验功能)(Value groups/tags (Experimental feature))

2、变量的查询格式

zabbix模板变量数据源查询是一个包含了4个部分的以.号隔开的字符串{host group}.{host}.{application}.{item name}。例如, Zabbix servers.Zabbix server.CPU.*。

例子:

* ,返回所有可用主机组

*.*, 返回主机组里所有可用主机

Servers.*,返回服务器组里的所有主机

Linux servers.*.* ,返回Linux服务器组中的所有应用程序

Linux servers.*.*.* ,返回Linux服务器组中所有主机的监控项。

你可以使用另一个变量作为查询的一部分。例如,你有一个变量组,它返回的是主机组的列表,并仅希望将其用于在选定的组在查询主机。下面是这种情况的查询条件:$group.*

grafana-zabbix36.png
grafana-zabbix37.png
3、变量的使用方法

当你创建一个变量,你可以使用它作为一个数据源查询的一部分。Grafana还支持变量在不同的地方被使用,比如面板和行标题、文本面板的内容等。
注意,你需要在变量的名字之前加$标志!!

grafana-zabbix38.png

4. 导入官方提供的仪表盘

​ 除了自定义创建DashBoard外,我门也可以选择导入你需要的仪表盘,官方提供了很多的可选仪表盘。

BashBoard地址:BashBoard

grafana-zabbix16.png
1. 选择想要的仪表盘ID,复制
grafana-zabbix17.png
2. 填入导入界面

复制后会自动跳转,需要填写相应信息

grafana-zabbix18.png
3. 添加唯一标识符和源信息,然后Import
grafana-zabbix19.png

四、附录——grafana-cli命令

安装插件最简单的方法是使用与grafana捆绑在一起的CLI工具grafana-cli。在修改插件之后发生任何修改之前,grafana服务器需要重新启动。

1. Grafana插件安装目录

在Linux系统上,grafana-cli会假定grafana插件目录是/var/lib/grafana/plugins。通过指定-pluginsDir标志可以覆盖grafana-cli将要运行的目录。在Windows系统中,必须为每个呼叫指定此参数

2. Grafana-cli命令说明


列出可用的插件

#grafana-cli plugins list-remote

安装最新版本的插件

#grafana-cli plugins install <plugin-id>

安装特定版本的插件

#grafana-cli plugins install <plugin-id> <version>

列出安装的插件

#grafana-cli plugins ls

更新所有安装的插件

#grafana-cli plugins update-all

更新一个插件

#grafana-cli plugins update <plugin-id>

删除一个插件

#grafana-cli plugins remove <plugin-id>

参考文献:

[1] http://docs.grafana.org/guides/getting_started/

[2] https://github.com/grafana/grafana/

[3] https://cloud.tencent.com/developer/article/1352735

[4] https://blog.csdn.net/bbwangj/article/details/81109615

[5] https://www.cnblogs.com/imyalost/p/9873641.html

推荐阅读更多精彩内容