zabbix api java

您所在的位置:网站首页 python二次开发zabbix zabbix api java

zabbix api java

#zabbix api java| 来源: 网络整理| 查看: 265

(继续贴一篇之前工作期间写的经验案例)

一、案例背景

我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发。

Zabbix官方提供了Rest API的文档,并推荐了第三方库,但这些库都是zabbix老版本(2.2,2.4/3.0)的库,多年未更新过,且变量/方法命名都不符合java的驼峰式规范。

所以开发中基于3.4的文档,自己封装了一套库。结合二次开发中对zabbix业务逻辑的理解与实践,梳理总结出该篇接口开发文档。

二、基础知识

二次开发前,zabbix的业务术语和基本的业务逻辑需要了解清楚。

包括 模板、应用、监控项、触发器、事件、异常、动作等。

参考官方手册:

重点说明下problem与event:

触发器被触发时,会生成一个 problem event 记录, 当问题恢复正常时,会生成一个recovery event记录,两个event的时间差,即为事件持续时间。所有的event都存在于同一张表。对应接口25)报警时间查询

problem存在于一张单独的表,每一条记录对应了两个事件,即problem event 和 recovery event。对应接口24)报警数据查询。

这张表zabbix后台会定期清理,problem事件恢复30分钟后,会被从表中删除。

所以如果要查当前的报警事件,去problem里查;如果要查事件的历史记录,到event里查,并且要对problem event 与 recovery event 进行匹配计算,一个开始对应一个结束,才算一条历史报警记录。

三、接口封装与使用详解(代码见第五节的链接)

1)登陆

zabbix登陆token的保留时间非常长,一次登陆后,基本可数周内不用重新登陆

/**

* @return登陆zabbix后台true/false

*/Boolean

login();

2)在线状态

/**

* 判断zabbix是否已 在线(可用,并已登陆),没有的话 尝试登陆* @return在线/重连成功,返回1;自系统启动首次登陆成功返回2; 不在线,且重连失败,返回0

*/Integer OnLine();

3)请求zabbix后台,并返回结果

作为最基础的访问zabbix后台的接口,其他接口都是基于它实现的。

/**

* 封装了RestTemplate 请求 与zabbix 自动重连功能* @paramzabbixMethod  请求方法* @paramzabbixParams  请求参数* @returnresult Object

*/ZabbixResponse requestZabbixForObject(String zabbixMethod, Object zabbixParams);

4)模板-xml导入

对于用户来说,让他们配置一个相当复杂的“模板-应用集-监控项-触发器”是很有难度的,这些应该是开发人员做的事,用户只管会用就可以。所以我们把这些配置梳理好后,以xml文件的形式发给用户,用户只需上传模板,即可完成整个复杂的创建过程。

/**

* 导入xml模板* @paramsourceXml* @return*/Boolean  importConfiguration(Document sourceXml);

5)模板-Id查询

/**

* 根据模板host名称(全英文的那个名字 在zabbix后台唯一标识模板) 查询 模板在zabbix后台的id

* @paramtempLateHostName* @return*/String getTemplateIdByHostName(String tempLateHostName);

6)主机群组(host group)-Id查询

- 主机的逻辑组;它包含主机和模板。创建主机/模板时,必须指定其所属的主机群组,所以需要事先创建(导入模板xml时即会创建)。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。

/**

* 根据group名称,查询group在zabbix后台的id

* @paramgroupName* @return*/String getGroupIdByName(String groupName);

7)主机-创建

/**

* 创建



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3