深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

第十六章 第三方应用扩展

16.1 graphtrees

当Zabbix中监控设备的数量比较多时,查看监控图形是一个比较痛苦的事情。Zabbix 2.x版本中有个插件叫Zatree(https://github.com/spide4k/zatree),主要功能是提供Host group的树形展示和在item中指定关键字查询及数据排序。Zabbix 3.0发布后,Zatree一直没有更新。好消息是OneOaaS公司开源了graphtrees,项目托管在github上,目前支持Zabbix 3.0.1、3.0.2和3.0.3版本,你可以访问https://github.com/OneOaaS/graphtrees获得最新的项目信息。

近日完成《深入浅出 zabbix 4.0》****的录制并正式发布,该教程基于 zabbix 4.2 ,对Zabbix进行全面讲解。欢迎大家围观。课程链接:https://edu.csdn.net/course/detail/24870

Graphtrees的主要功能有:

  • 集中展示所有分组设备

  • 集中展示一个分组图像

  • 集中展示一个设备图像

  • 展示设备下的Application

  • 展示每个Application下的图像

  • 展示每个Application下的日志

  • 对原生无图的监控项进行绘图

  • 安装及使用

步骤如下:

1、   备份现有Zabbix web 页面程序,假设安装目录为 /usr/share/zabbix。

# cd /usr/share/

# tar -czf zabbix_web.tar.gz zabbix

# cd zabbix

2、   收集补丁文件。

# wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3-0-1.patch

3、   安装patch工具并执行补丁命令。

# yum install -y patch

        

         # patch -Np0 <graphtree3-0-1.patch

         patching file ./README.md

patching file ./biggraph.php

patching file ./graphtree.left.php

The next patch would delete the file graphtree/graphtree.patch,

which does not exist! Skipping patch.

1 out of 1 hunk ignored

patching file ./graphtree.right.php

patching file ./graphtrees.php

patching file ./hosts.php

patching file ./img/icon-sprite.svg

patching file ./img/oneoaas-wechat.jpg

patching file ./include/func.inc.php

patching file ./include/menu.inc.php

patching file ./include/page_header.php

patching file ./js/vendors/highlight.min.js

patching file ./js/vendors/jquery.ztree.core-3.5.js

patching file ./jsLoader.php

patching file ./locale/lt/LC_MESSAGES/frontend.po

patching file ./locale/lv/LC_MESSAGES/frontend.po

patching file ./locale/pt_BR/LC_MESSAGES/frontend.po

patching file ./styles/ztree/line_conn.gif

patching file ./styles/ztree/loading.gif

patching file ./styles/ztree/zTreeStandard.gif

patching file ./styles/ztree/zTreeStandard.png

patching file ./styles/ztree/zTreeStyle.css

从上面的输出信息可以看到除了graphtree.patch这个补丁文件报错外,其他文件都没有问题。接下来在Zabbix 前端页面的Monitoring菜单会有一个Graphtrees子菜单,如下图16-1所示。

                             深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-1

点击Graphtrees菜单,我们会看到屏幕左侧是树形组织的host group --> host --> application,每个host group名称后面的括号内会显示当前属于这个主机组的主机数量,每个host名称后面的括号内显示当前主机中的application数量。当你点击host group或host时,在屏幕右侧默认显示系统配置的图形。当点击host中的application时会显示3中数据,包括系统默认有图形的、系统默认没有图形的和日志类的数据。效果图如下16-2所示。

 

 

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-2

16.2 grafana

Grafana 提供强大而优雅的方式来创建、 浏览和共享仪表板和数据,常用于可视化互联网基础设施的时序数据和应用分析的开源程序。在仪表板中可以显示来自不同数据源的数据,通过可插拔的面板和数据源,允许轻松的扩展和丰富的面板展示,包括全功能的图形面板和丰富的可视化的选项。内建支持很多流行的时序数据源,包括Graphite、Elasticsearch、Prometheus、InfluxDB、OpenTSDB和KairosDB,也可以使用插件功能添加你自己的应用。通过访问grafana官网http://grafana.org/了解更多信息,也可以访问grafana演示网站http://play.grafana.org/ 浏览grafana更多的特性。显示界面如下图16-3所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-3

Grafana-zabbix 是 AlexanderZobnin 在github上开源的grafana Zabbix插件,可以展示Zabbix中items、triggers等数据,

主要特性有:

  • 灵活的监控指标编辑器(支持Regex)

  • 支持模板变量

  • 支持注释(在图形上显示事件)

  • 触发器面板

  • 客户端监控指标处理(Avg、Median、Min、Max、Multiply、Summarize)

你可以访问http://play.grafana-zabbix.org ,这是一个Grafana-zabbix的功能演示网站,通过仪表板的例子体验grafana提供的丰富的功能特性。

16.2.1 安装grafana-zabbix

安装grafana的方法很多,具体可参考http://docs.grafana.org/installation/。

在这里我们采用yum Repository安装,这种方式可以自动解决依赖关系,安装步骤如下:

首先通过脚本生成grafana.repo文件。

# curl -shttps://packagecloud.io/install/repositories/grafana/stable/script.rpm.sh |bash

# more/etc/yum.repos.d/grafana_stable.repo

[grafana_stable]

name=grafana_stable

baseurl=https://packagecloud.io/grafana/stable/el/7/$basearch

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/grafana/stable/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

 

[grafana_stable-source]

name=grafana_stable-source

baseurl=https://packagecloud.io/grafana/stable/el/7/SRPMS

repo_gpgcheck=1

gpgcheck=0

enabled=1

gpgkey=https://packagecloud.io/grafana/stable/gpgkey

sslverify=1

sslcacert=/etc/pki/tls/certs/ca-bundle.crt

metadata_expire=300

查看grafana程序包并安装。

# yum list | grep grafana

grafana.x86_64             3.1.1-1470047149              grafana_stable pcp-webapp-grafana.noarch    3.10.6-2.el7                                                base

# yum install grafana

启动grafana服务

# systemctl startgrafana-server

# systemctl status  grafana-server

允许系统引导时自动启动grafana服务

# systemctl enable grafana-server

安装grafana-zabbix插件也有多种方法,在这里我们采用grafana-cli工具进行安装,其他的方法请参考文档http://docs.grafana-zabbix.org/installation/。

# grafana-cli pluginslist-remote

id: abhisant-druid-datasource version: 0.0.2

id: alexanderzobnin-zabbix-app version: 3.0.0

id: bosun-app version: 0.0.25

id: bosun-datasource version: 0.0.5

id: crate-datasource version: 0.0.1

id: fastweb-openfalcon-datasource version: 1.0.0

id: fetzerch-sunandmoon-datasource version: 0.1.1

id: grafana-clock-panel version: 0.0.8

id: grafana-example-app version: 1.0.1

id: grafana-influxdb-08-datasource version: 1.0.2

id: grafana-kairosdb-datasource version: 1.0.1

id: grafana-piechart-panel version: 1.1.1

id: grafana-simple-json-datasource version: 1.1.2

id: grafana-worldmap-panel version: 0.0.13

id: kentik-app version: 1.0.4

id: mtanda-heatmap-epoch-panel version: 0.1.1

id: mtanda-histogram-panel version: 0.1.1

id: ns1-app version: 0.0.5

id: opennms-datasource version: 2.0.1

id: percona-percona-app version: 1.0.0

id: praj-ams-datasource version: 1.0.1

id: raintank-snap-app version: 0.0.3

id: raintank-worldping-app version: 1.0.10

id: sileht-gnocchi-datasource version: 1.0.3

id: stagemonitor-elasticsearch-app version: 0.26.0

id: udoprog-heroic-datasource version: 0.1.0

id: voxter-app version: 0.0.1

# grafana-cli pluginsinstall alexanderzobnin-zabbix-app

installing alexanderzobnin-zabbix-app @ 3.0.0

from url: https://grafana.net/api/plugins/alexanderzobnin-zabbix-app/versions/3.0.0/download

into: /var/lib/grafana/plugins

 

Installedalexanderzobnin-zabbix-app successfully

 

Restart grafana after installing plugins . <servicegrafana-server restart>

# systemctl restartgrafana-serve

现在,grafana和zabbix插件已经安装完成,grafana相关的环境变量配置文件位于 /etc/sysconfig/grafana-server文件中,例如日志文件、数据文件保存的位置等都可以在这个文件中。日志文件默认保存在/var/log/grafana目录中,默认数据保存在/var/lib/grafana目录的sqlite3数据库grafana.db中,默认配置保存在 /etc/grafana/grafana.ini中。

打开浏览器并在地址栏中输入http://<server ip >:3000,就会出现Grafana 登录页面。如下图16-4所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-4

在grafana登录页面输入用户名 admin,密码admin,点击Log in按钮登录进入主页面,如下图16-5所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-5

在主页面的左上角点击grafana logo会弹出主菜单,包括当前用户、Dashboards、Data sources、Plugins和Admin。在当前用户下可以完成用户相关的配置,Dashboards下可以添加(New)或导入(Import)仪表板;也可以创建播放列表(Playlists)、快照(snapshots),或返回主页面(home);Data Sources中可以添加、管理数据源;Plugins可以管理grafana的Panels、Data sources和Apps插件;Admin中可以管理用户、组织,可以浏览grafana服务器的设置和运行状态,也可以改变前端页面显示的风格。grafana菜单页面如下图16-6所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-6

点击Home会弹出Dashboard列表页面,通过页面中的搜索框可以搜索仪表板,这个在有很多仪表板时很方便查找。可以通过页面左下角的Create New按钮创建新的仪表板,或用Import按钮导入仪表板。如下图16-7所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-7

点击齿轮图标可以对当前仪表板进行管理,很多工作都在这里完成。如下图16-8所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-8

16.2.2 配置grafana

首先启用Zabbix插件,在主菜单点击Plugins,在Apps标签中点击Zabbix插件进入插件管理界面,在config标签下点击Enable按钮启用Zabbix插件。如下图16-9所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-9

在主菜单点击Data Sources ,在数据源管理页面点击 Adddata source按钮进入添加数据源的配置页面,其中各参数含义及配置如下:

Name:数据源的名称,例如Zabbix。

Type:数据源的类型,在该下拉框中选择Zabbix。

Url:Zabbix API入口连接,例如http://192.168.10.102/zabbix/api_jsonrpc.php。

Access:访问方式。Direct为从浏览器直接访问,Proxy为通过grafana后端访问。

Http Auth:如果你使用Proxy方式,需要配置Basic Auth和WithCredentials。

Username:可以访问Zabbix API的用户,例如Admin。

Password:密码,例如 zabbix。

Trends:建议使用Trends,可以提供grafana的新能。

建议为grafana-zabbix插件设置专用的用户,该用户对Zabbix数据库和前端页面都有读权限。

页面配置如下图16-10所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-10

点击Add按钮添加后,会显示添加成功,如下图16-11所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-11

16.2.3 添加图形

点击仪表板右下角的ADD ROW按钮添加新行,在行的最左边绿色的滑动按钮,在弹出菜单中点击Add Panel,如下图16-12所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-12

在子菜单中点击 Graph按钮,会出现一个新图形,点击图形下方的General标签,可以设置图形名称等参数。点击Metrics标签, Panel datasource选择为Zabbix后,就可以添加监控项了。如果要添加多个监控项,可以点击Add query按钮。如下图16-13所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-13

 

当所有设置完成后,点击磁盘图标保存。如下图16-14所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-14

对已有图形或其他Panel可以通过点击上方的名称,在弹出菜单中可以选择Edit进行编辑,点击Duplicate复制Panel,点击-(减号)或 +(加号)缩小/增大宽度,也可以点击垃圾桶图标删除当前的Panel。如下图16-15所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-15

 

16.2.4 添加模板变量

打开需要设置模板变量的仪表板,点击齿轮图标在弹出菜单中选择Templating,如 下图16-16所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-16

点击New按钮创建新的变量,如下图16-17所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-17

主要配置参数有:

  • Name:变量名称,例如group。

  • Type:收集数据的方式,大部分情况下都会使用Query。

  • Label:在仪表板中显示的名称,例如Group。

  • Data source:数据源,例如Zabbix。

  • Refresh:数据刷新的方式。

  • Quiry:匹配规则。

  • Regex:正在表达式。

一般我们在仪表板中创建三个变量就可以实现选择host group、host及item,如下图16-18所示。

深入浅出Zabbix 3.0 -- 第十六章 第三方应用扩展

图 16-18