前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix3.4新功能介绍 (一):Preprocessing

Zabbix3.4新功能介绍 (一):Preprocessing

作者头像
Zabbix
发布2021-02-03 10:03:43
9400
发布2021-02-03 10:03:43
举报
文章被收录于专栏:Zabbix中国官方

随着3.4版本的发布,迎来了一大波新功能,社区特此推出#3.4版本新功能介绍及实践#专栏,一一盘点。敬请期待。

29

12-2017

#Zabbix3.4#Preprocessing

5

1-2018

#Zabbix3.4#使用宏变量来管理时间段

王亚楠

Zabbix3.4新功能介绍——Preprocessing

2013年开始使用Zabbix,2014-2016年负责Zabbix二次开发及架构设计,目前从事PaaS平台及微服务的开发和运维工作,Zabbix实践爱好者,Cactifans作者,golang爱好者

本次主要介绍3.4新增的Preprocessing这个功能。(3.4中文翻译好像有点问题把Preprocessing翻译为进程,翻译有点错误。ps:Z小秘正在敢去修改的路上w(゚Д゚)w)Preprocessing为预处理,预加工(google翻译^_^)使用这个功能可以对item收到的数据行处理,处理之后再存入数据库或展示出来.

下面结合一个监控nginx状态的实际应用来介绍一下item预处理功能及Dependent item的使用.

Nginx status配置

nginx作为一款强大的web服务器已被广泛使用,结合nginx-module-vts插件可以将nginx的状态通过http方式输出,可使用这种方式来监控nginx的运行状态,配置好插件之后,访问插件页面可以看到如下状态页面

点击下面的json可以输出为标准的json格式

表明nginx配置完成.

Zabbix agent配置

zabbix自带web监控,由于功能较弱,因此我自己写了一个类似web监控的工具,通过GET方式访问nginx status页面(任何GET请求都可),将返回结果输出.web_get 我自己写的web检测小工具,大家可下载使用. web_get工具下载

Linux 64位

Windows 64位

配置zabbix修改zabbix agent 配置文件,添加如下(根据自己实际路径配置,并赋予可执行权限)

1 UserParameter=nginx.status[*],/usr/local/zabbix/share/zabbix/web_get 1 2

配置之后重启zabbix agent.可在zabbix server上使用zabbix_get命令进行测试UserParameter是否工作正常

1 zabbix_get -s 192.168.0.1 -k nginx.status[http,exp.test.com/ngx_status/format/json]

192.168.0.1为被监控客户端,其中包含2个参数,第一个http为协议,一般为http或https,后面为要监控的nginx status的具体URL.根据自身具体情况配置.如果返回如下信息,表示配置成功

Zabbix Server配置

上一步在zabbix agent配置文件中指定了key为nginx.status,因此这里建立的第一个item的key应该为nginx.status.这里可以建一个模版,把这些key统一到一个模版,我这里为了演示就直接在host上建立item,如图

type为zabbix agent,这里key里有2个参数,第一个参数为协议,为http或https,第二个参数为nginx status的URL地址.

由于返回结果为json,因此Type of information 选择Text即可.建立Master item之后,开始建立:

Dependent item

(这也是3.4的新功能之一)

大致为这些item的数据都是来自Master item.通过Preprocessing处理master item的数据而获得.建立之前先使用zabbix_get获取json数据,复制json字符串,并使用在线工具或编辑器格式化json,可看到json的层次.

如果我们要获取json中nginxVersion这个数据,我们可以这样建立一个Dependent item.点击create item

item name可随便填写,能标示就成.type这里一定要选择 Dependent item,key这里可以随便添能标示就成.由于nginx version为字符所以Type of information 选择为text,其他选项一般默认即可.之后点击Preprocessing标签,由于此item数据来自nginx status 这个master,因此要使用预处理功能,对nginx status获取的json进行处理,得到我们需要的nginxVersion这个数据.

如图name 选择JSON Path,Parameters为需要获取的字段.

具体使用方式可查看item_value_preprocessing说明,由于nginxVersion为第一层,Parameters填写为$.nginxVersion即可,保存之后,过一会就可以看到nginxVersion数据已经采集了.

接下来再添加一个nginx连接数统计.点击create item,如图配置item 其他不变

由于nginix connections requests为一个数值类型,这里Type of information 选择Numeric类型.key可随便填写.Preprocessing标签如图配置

由于通过获取的json可以看到connections requests在json里为connections之内的requests,因此Parameters填写为$.connections.requests.

从nginx-module-vts页面得知,这个requests为The total number of requested client connections.即所有客户端连接,为一个计数器,这里我们需要统计为速率,因此这里点击add,从上一步获取的requests数据再做一次计算,选择Change per second即之前的每秒变化(Req/s)即可.依照此方法可添加其他指标.最后效果如下: 最新数据

请求汇总

(图上数据较大出为第一次没有添加Change per second,造成统计所有请求数,后来查看nginx-module-vts文档得知,此数据为计数器,后续改动导致数据突降.由于是测试服务器基本无人访问数据为0属于正常)

拓展即思考

个人认为Preprocessing和Dependent item主要有以下几个好处和扩展之处: 1.切割处理以前不好处理的数据.:之前通过SNMP获取到设备内存或者cpu使用率,获取数据往往为“8Mb”或“16%”等带单位的数据,这种类型不属于整型和浮点类型,因此只能作为字符处理,而作为字符就不能做成折线图,不能根据数值来做触发器.有了预处理功能就可以完美解决这个问题. 2.item数据可为xml/json等格式的数据,丰富了数据采集类型.通过Preprocessing功能获取指定字段,存入数据. 3.结合3.4的Dependent items可以提高监控效率.通过Dependent items功能可一次返回多个item的数值,提高监控的效率,降低了系统负荷,减少网络流量 4.多样化数据处理,可对采集数据做深层次处理.可对一些暴露http接口的应用或者服务进行监控 5.结合UserParameter功能,可进行分布式监控.对网站/App等进行分布式的监控.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Zabbix开源社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档