zabbix java api

zabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/api

Zabbix功能

概观

  • Zabbix是一个高度集成的网络监控解决方案,在单个软件包中提供了多种功能。

数据采集

  • 可用性和性能检查
  • 支持SNMP(捕获和轮询),IPMI,JMX,VMware监控
  • 定制检查
  • 以定制的间隔收集所需的数据
  • 由服务器/代理和代理执行

灵活的阈值定义

  • 您可以定义非常灵活的问题阈值,称为触发器,从后端数据库引用值

高度可配置的警报

  • 可以为升级计划,收件人,媒体类型定制发送通知
  • 使用宏变量可以使通知变得有意义和有用
  • 自动操作包括远程命令

实时绘图

  • 使用内置的图形功能立即绘制被监视的项目

Web监控功能

  • Zabbix可以按照网站上模拟鼠标点击的路径,并检查功能和响应时间

    广泛的可视化选项

  • 能够创建可以将多个项目组合成单个视图的自定义图形
  • 网络地图
  • 自定义屏幕和幻灯片,以显示仪表板风格的概述
  • 报告
  • 监控资源的高级(业务)视图

历史数据存储

  • 存储在数据库中的数据
  • 可配置历史
  • 内置内务程序

轻松配置

  • 将监控的设备添加为主机
  • 主机被拾取用于监视,一次在数据库中
  • 将模板应用于受监控设备

使用模板

  • 在模板中分组检查
  • 模板可以继承其他模板

网络发现

  • 自动发现网络设备
  • 代理商自动注册
  • 发现文件系统,网络接口和SNMP OID

快速的Web界面

  • PHP中的基于Web的前端
  • 可从任何地方访问
  • 你可以点击你的方式
  • 审核日志

Zabbix API

  • Zabbix API为Zabbix 提供了可编程接口,用于大规模操作,第三方软件集成和其他目的。

权限系统

  • 安全的用户认证
  • 某些用户可以限于某些视图

全功能和易于扩展的代理

  • 部署在监测目标上
  • 可以部署在Linux和Windows上

二进制程序

  • 写在C中,用于性能和小内存占用
  • 容易携带

准备复杂的环境

  • 通过使用Zabbix代理,远程监控变得容易

zabbix最近问题列表

pom.xml

        <dependency><groupId>io.github.hengyunabc</groupId><artifactId>zabbix-api</artifactId><version>0.0.1</version></dependency>

zabbix获取最近问题列表

JSONObject jo = new JSONObject();jo.put("value", 1);jo.put("priority", new String[]{"2", "3", "4", "5"});Request request = RequestBuilder.newBuilder().method("trigger.get").paramEntry("output", new String[]{"description", "priority", "lastchange"}).paramEntry("selectHosts", new String[]{"host", "name", "hostid"}).paramEntry("selectDependencies", "extend").paramEntry("expandData", "host").paramEntry("skipDependent", "1").paramEntry("monitored", "1").paramEntry("active", "1").paramEntry("expandDescription", "1").paramEntry("sortfield", "priority").paramEntry("sortorder", "DESC").paramEntry("filter", jo).build();

zabbix Api

import io.github.hengyunabc.zabbix.api.DefaultZabbixApi;
import io.github.hengyunabc.zabbix.api.Request;
import io.github.hengyunabc.zabbix.api.RequestBuilder;
import io.github.hengyunabc.zabbix.api.ZabbixApi;import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;/*** zabbix Api* @author can*/
public class ZabbixUtil {private static final Logger LOGGER = LoggerFactory.getLogger(ZabbixUtil.class);private ZabbixApi zabbixApi;public ZabbixUtil(String username, String password, String url) throws Exception {if (StringUtils.isBlank(username) || StringUtils.isBlank(password) || StringUtils.isBlank(url)){throw new Exception("ZabbixApi初始化失败!参数不全!");}login(username, password, url);}private ZabbixApi login(String username, String password, String url) throws Exception {zabbixApi = new DefaultZabbixApi(url);zabbixApi.init();boolean login = zabbixApi.login(username, password);if(!login){LOGGER.info(username + " login in Zabbix " + (login ? "SUCCESS" : "FALURE") + " !");}return zabbixApi;}/*** 获取zabbix中所以的主机群组列表* @return 主机群组列表json*/public String getHostGroupList() throws Exception {Request request = RequestBuilder.newBuilder().method("hostgroup.get").paramEntry("output", "extend").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}public String getHostList() throws Exception {Request request = RequestBuilder.newBuilder().method("host.get").paramEntry("output", new String[]{"host", "name", "description", "hostid"}).paramEntry("selectGroups", "extend").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 获取主机ID* @param hostIp* @return 主机ID*/public String getHostByGroupid(Integer groupid) throws Exception {Request request = RequestBuilder.newBuilder().method("host.get").paramEntry("groupids", groupid).paramEntry("output", new String[]{"host", "name", "description", "hostid"}).paramEntry("selectGroups", "extend").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 获取zabbix报警列表* @param timeFrom 仅返回在给定时间之后生成的警报。* @return*/public String getAlertList(Long timeFrom) throws Exception {Request request = RequestBuilder.newBuilder().method("alert.get").paramEntry("output", new String[]{"sendto", "subject", "clock", "message"}).paramEntry("selectHosts", new String[]{"host"}).paramEntry("time_from", timeFrom).build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 获取zabbix报警列表* @param timeFrom 仅返回在给定时间之后生成的警报。* @return*/public String getAlertListByGroupids(Integer groupid, Long timeFrom) throws Exception {Request request = RequestBuilder.newBuilder().method("alert.get").paramEntry("time_from", timeFrom).paramEntry("groupids", groupid).paramEntry("output", new String[]{"sendto", "subject", "clock", "message","triggerid"}).paramEntry("selectHosts", new String[]{"host"}).build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 获取zabbix最近问题列表* @return* @throws Exception*/public String getTriggerInfoList() throws Exception {JSONObject jo = new JSONObject();jo.put("value", 1);jo.put("priority", new String[]{"2", "3", "4", "5"});Request request = RequestBuilder.newBuilder().method("trigger.get").paramEntry("output", new String[]{"description", "priority", "lastchange"}).paramEntry("selectHosts", new String[]{"host", "name", "hostid"}).paramEntry("selectDependencies", "extend").paramEntry("expandData", "host").paramEntry("skipDependent", "1").paramEntry("monitored", "1").paramEntry("active", "1").paramEntry("expandDescription", "1").paramEntry("sortfield", "priority").paramEntry("sortorder", "DESC").paramEntry("filter", jo).build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 根据群组id和机器host获取触发器信息列表* @param groupid* @param host* @return* @throws Exception*/public String getTrigger(Integer groupid, String host) throws Exception {Request request = RequestBuilder.newBuilder().method("trigger.get").paramEntry("groupids", groupid).paramEntry("host", host).paramEntry("monitored", 1).paramEntry("output", new String[]{"expression","description", "priority", "lastchange","status"}).build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}/*** 根据触发器id获取触发器信息* @param triggerId* @return* @throws Exception*/public String getTriggerByTriggerId(Integer triggerId) throws Exception {Request request = RequestBuilder.newBuilder().method("trigger.get").paramEntry("triggerids", triggerId).paramEntry("output", "extend").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}public String getItemList() throws Exception {Request request = RequestBuilder.newBuilder().method("item.get").paramEntry("output", "extend").paramEntry("monitored", "true").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}public String getTriggerPrototypeByGroupid(Integer groupid) throws Exception {Request request = RequestBuilder.newBuilder().method("triggerprototype.get").paramEntry("groupids", groupid).paramEntry("selectHosts", new String[]{"host", "hostid"}).paramEntry("selectGroups", "extend").paramEntry("output", new String[]{"expression", "triggerid", "description", "priority", "status"}).build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}public String getTriggerPrototypeByTriggerids(Integer triggerid) throws Exception {Request request = RequestBuilder.newBuilder().method("triggerprototype.get").paramEntry("triggerids", triggerid).paramEntry("output", "extend").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}public String getTriggerInfo(Integer groupid,Long lastChangeSince) throws Exception {Request request = RequestBuilder.newBuilder().method("trigger.get").paramEntry("groupids", groupid).paramEntry("lastChangeSince", lastChangeSince).paramEntry("output", new String[]{"description", "priority", "lastchange"}).paramEntry("selectHosts", new String[]{"host", "name", "hostid"}).paramEntry("skipDependent", "1").paramEntry("monitored", "1").paramEntry("active", "1").paramEntry("expandDescription", "1").paramEntry("sortfield", "priority").build();JSONObject response = zabbixRequest(request);zabbixError(response);JSONArray result = response.getJSONArray("result");return result.toJSONString();}private JSONObject zabbixRequest(Request request) throws Exception {JSONObject response = zabbixApi.call(request);return response;}private void zabbixError(JSONObject response) throws Exception {if (!StringUtils.isBlank(response.getString("error")))throw new Exception("向Zabbix请求出错了!" + JSON.parseObject(response.getString("error")).getString("data"));}

运行结果



转载于:https://www.cnblogs.com/xinxiucan/p/7365780.html

zabbix java api相关推荐

  1. 基于Java的Zabbix二次开发-----Zabbix的Api接口实例

    博主之前的文章配置好了Zabbix环境,正常启动Zabbix服务端,并成功监控客户端服务器的情况,如有疑问,下方传送门: centos7下安装Zabbix服务端 Windows下安装Zabbix客户端 ...

  2. 2021年大数据Kafka(五):❤️Kafka的java API编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的java API编写 一.生产者代码 第一步: ...

  3. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作

    目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...

  4. 随机森林 java_机器学习weka,java api调用随机森林及保存模型

    工作需要,了解了一下weka的java api,主要是随机森林这一块,刚开始学习,记录下. 了解不多,直接上demo,里面有一些注释说明: package weka; import java.io.F ...

  5. 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例

    查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...

  6. Kafka系列三 java API操作

    使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  7. java代码操作git_JGit--实现Git命令操作的Java API

    问题来源:最近在做一个项目,其中有一块需要用户上传代码到服务器中,然后分析用户所传的代码,传代码最直接的方式就是用户打个包上传,但是后期再分析代码的时候还要代码实现解压上传的代码,操作起来比较复杂. ...

  8. java api 设计_Java API设计实践

    使你的API在模块化和非模块化Java环境中都可用 在优锐课的java学习分享中,对微服务有了更深层次的新概念.关于API设计实践一点就通了. 介绍 了解设计Java API时应应用的一些API设计实 ...

  9. hbase建索引java api_hbase java api样例(版本1.3.1,新API)

    hbase版本:1.3.1 目的:HBase新API的使用方法. 尝试并验证了如下几种java api的使用方法. 1.创建表 2.创建表(预分区) 3.单条插入 4.批量插入 5.批量插入(客户端缓 ...

最新文章

  1. 100条Vista命令行技巧Tips,您知道几条?
  2. python3堆排序_python 堆排序
  3. Fast Stone超好用的截图工具,可截取长图,带滚动条的页面
  4. Open 5分钟:恺英收集闵懿
  5. 这个在Github有52100颗星星的项目,怎么还有人不知道鸭!
  6. SAP UI5 应用开发教程之三十一 - SAP UI5 的路由历史和路由回退(Routing back and history)试读版
  7. python安装requests库超时_【Python 库】requests 详解超时和重试
  8. 厉害了!顶级学术期刊封面的“中国元素”
  9. python os path isfile_Python path.isfile方法代码示例
  10. 【BZOJ2115】Xor,第一次的线性基
  11. linux2019内核版本发布,新兴的桌面发行版 Septor Linux 发布 2019 版
  12. C语言小项目----图书馆管理系统
  13. 粒子群优化算法matlab实现,粒子群优化算法的MATLAB程序实现+源程序
  14. 数据分析进阶 - 评分模型权重计算方法
  15. USPS手写体数据的处理
  16. 汕头大学计算机专业就业,汕头大学毕业生最后怎样了?17%进入世界和中国500强,月薪5185元...
  17. 计算机毕业设计SSM餐厅管理系统【附源码数据库】
  18. 基于龙格-库塔法Runge-Kutta的常微分方程的求解matlab仿真
  19. pytorch入门强化教程——数据加载和处理
  20. vhost-user

热门文章

  1. 超强!MDETR:基于Transformer的端到端目标检测神器!开源!
  2. 重磅 | 《机器学习综述》算法分类及特征工程手推笔记!
  3. 2018年90后薪资报告出炉:你在哪个级别???
  4. Python解决print()不换行问题
  5. 2019年财政收支分析_2019年模锻行业经济运行情况分析
  6. 深度学习中的损失函数总结以及Center Loss函数笔记
  7. 在Linux系统中,使用useradd命令新建用户后,登录该用户时shell开头为$,不显示用户名和路径,如下:...
  8. confer安装与连接度的计算
  9. 二叉树线索化示意图_二叉树的线索化
  10. android+对象池使用,Android开发中对高并发对象池的重复利用