基于java的zabbix api调用实现数据共享

性能测试工具选型实战指南:JMeter、Gatling、Locust与商业工具深度对比 性能测试是保障软件系统稳定性和扩展性的关键环节,其核心在于模拟真实用户负载,评估系统在高并发下的表现。从原理上看,性能测试通过工具模拟海量虚拟用户,发送请求并收集响应时间、吞吐量、错误率等指标,从而识别系统瓶颈。其技术价值在于,它不仅是上线前的验证手段,更是容量规划、架构优化和故障预防的重要依据,广泛应用于电商大促、金融交易、实时通信等高并发场景。在众多工具中,JMeter以其全面的协议支持和庞大的社区生态,成为开源领域的首选;而Gatling凭借代码驱动和高效资源利用,更适合集成到CI/CD流程。本文基于 阅读详情

使用了zabbix进行监控后,往往因为项目的需求,需要对zabbix的数据,进行二次共享和开发。如何从zabbix获取数据是本次实践要解决的问题。

zabbix的数据共享有两个途径

1) 通过数据库查询,获取数据。 前提是对zabbbix数据库模型要有深入了解,并且在大量监控的时候,不能因为查询影响zabbix生身的运行

2) 通过zabbix的api,进行数据的获取,这种方式相对比较可靠

一、目标

通过java api实现zabbix的数据获取。

二、环境

在本机的虚拟机144上,安装了zabbix的服务端,分别在144,155上部署了监控agent。 都是centos系统

在本机使用eclipse进行数据的获取。 jdk 为 1.7

三、api的获取

http://zabbix.org/wiki/Docs/api/libraries 这网站列出了api的情况,如下图

点开这个后,可以看到java的api有三种

第一和第三都是连接zabbix server的api,第一个是最简单的api,需要自己构造json格式的参数。 第二个sender 是开发想server 输送数据的api。第三个才是这次实践关心的api,这个api里面,进一步做了封装,也提供了一些测试代码。本次实践就是在这个基础上进行实践的。

依赖的库如下

下面贴一下代码,代码里面做了比较详细的描述。

  1. package com.zabbix4j.apitest;  
  2.   
  3. import com.zabbix4j.ZabbixApi;  
  4. import com.zabbix4j.ZabbixApiException;  
  5. import com.zabbix4j.ZabbixApiParamter;  
  6. import com.zabbix4j.host.*;  
  7. import com.zabbix4j.hostinteface.HostInterfaceObject;  
  8. import com.zabbix4j.item.ItemObject;  
  9. import com.zabbix4j.usermacro.Macro;  
  10.   
  11. import java.util.ArrayList;  
  12. import java.util.List;  
  13.   
  14. public class Zabbix4jSampleGetHost extends ZabbixApiTestDummyMethodBase {  
  15.   
  16.     public Zabbix4jSampleGetHost(ZabbixApi zabbixApi) {  
  17.     super(zabbixApi);  
  18.     }  
  19.   
  20.     // 这里配置zabbix的url,帐号和密码  
  21.     public static final String ZBX_URL = “http://192.168.136.144/zabbix/api_jsonrpc.php”;  
  22.     public static final String USERNAME = “admin”;  
  23.     public static final String PASSWORD = “zabbix”;  
  24.   
  25.     // 调用api的host get方法的封装  
  26.     public HostGetResponse getHost() throws ZabbixApiException {  
  27.   
  28.     Integer targetHostId = 10105;  
  29.     HostGetRequest request = new HostGetRequest();  
  30.     HostGetRequest.Params params = request.getParams();  
  31.   
  32.     ArrayList<Integer> hostIds = new ArrayList<Integer>();  
  33.     hostIds.add(targetHostId);  
  34.     // params.setHostids(hostIds);  
  35.     // 这里可以设指定的id值,也可以不设值。设值的话,取指定的内容,不设的话,获取全部的host  
  36.     params.setHostids(null);  
  37.   
  38.     params.setSelectDiscoveryRule(ZabbixApiParamter.QUERY.extend.name());  
  39.     params.setSelectGroups(ZabbixApiParamter.QUERY.extend.name());  
  40.     params.setSelectItems(ZabbixApiParamter.QUERY.extend.name());  
  41.     params.setSelectApplications(ZabbixApiParamter.QUERY.extend.name());  
  42.     params.setSelectDiscoveries(ZabbixApiParamter.QUERY.extend.name());  
  43.     params.setSelectGraphs(ZabbixApiParamter.QUERY.extend.name());  
  44.     params.setSelectHostDiscovery(ZabbixApiParamter.QUERY.extend.name());  
  45.     params.setSelectHttpTests(ZabbixApiParamter.QUERY.extend.name());  
  46.     params.setSelectInterfaces(ZabbixApiParamter.QUERY.extend.name());  
  47.     params.setSelectInventory(ZabbixApiParamter.QUERY.extend.name());  
  48.     params.setSelectMacros(ZabbixApiParamter.QUERY.extend.name());  
  49.     params.setSelectParentTemplates(ZabbixApiParamter.QUERY.extend.name());  
  50.     params.setSelectScreens(ZabbixApiParamter.QUERY.extend.name());  
  51.     params.setSelectTriggers(ZabbixApiParamter.QUERY.extend.name());  
  52.   
  53.     System.out.println(”parames setting complete…”);  
  54.     HostGetResponse response = zabbixApi.host().get(request);  
  55.   
  56.     return response;  
  57.     }  
  58.   
  59.     public static void main(String[] args) {  
  60.   
  61.     try {  
  62.         // login to Zabbix  
  63.         System.out.println(”beging…”);  
  64.         ZabbixApi zabbixApi = new ZabbixApi(ZBX_URL);  
  65.         zabbixApi.login(USERNAME, PASSWORD);  
  66.   
  67.         System.out.println(”create new get host instance…”);  
  68.         Zabbix4jSampleGetHost myGetHost = new Zabbix4jSampleGetHost(  
  69.             zabbixApi);  
  70.   
  71.         System.out.println(”Get host beging…”);  
  72.         HostGetResponse response = myGetHost.getHost();  
  73.   
  74.         System.out.println(”Get host end…let’s print result”);  
  75.   
  76.         // 对response进行处理  
  77.         for (int i = 0; i < response.getResult().size(); i++) {  
  78.   
  79.         //response 返回的信息非常大,可以赋值给HostObject,也可以其他对象  
  80.         HostObject myHostObject = response.getResult().get(i);  
  81.         //response 返回的信息非常大,可以赋值给ItemObject,也可以其他对象  
  82.         List<ItemObject> myItemObjectList = response.getResult().get(i)  
  83.             .getItems();  
  84.   
  85.         //打印host信息  
  86.         if (null == myHostObject)  
  87.             System.out.println(”Get host null, program will exit”);  
  88.         else {  
  89.             System.out.println(”++++++Print Result ” + i  
  90.                 + ” HostObject+++++++++++”);  
  91.             System.out.println(myHostObject.getHost());  
  92.             System.out.println(myHostObject.getName());  
  93.             System.out.println(myHostObject.getAvailable());  
  94.             System.out.println(myHostObject.getHostid());  
  95.             System.out.println(myHostObject.getStatus());  
  96.         }  
  97.   
  98.         //打印这个host下的item信息  
  99.         for (int j = 0; j < myItemObjectList.size(); j++) {  
  100.             if (j == 0)  
  101.             System.out.println(”++++++Print ItemObject List ”  
  102.                 + ”+++++++++++”);  
  103.             ItemObject tmpItemObject = myItemObjectList.get(j);  
  104.             System.out.println(”Itemid:” + tmpItemObject.getItemid());  
  105.             System.out.println(”Templateid:”  
  106.                 + tmpItemObject.getTemplateid());  
  107.             System.out.println(”Hostid:” + tmpItemObject.getHostid());  
  108.             System.out.println(”Name:” + tmpItemObject.getName());  
  109.             System.out.println(”Key:” + tmpItemObject.getKey_());  
  110.             System.out.println(”Lastvalue:”  
  111.                 + tmpItemObject.getLastvalue());  
  112.             System.out.println(”Lastclock:”  
  113.                 + tmpItemObject.getLastclock());  
  114.             System.out  
  115.                 .println(”——————————————”);  
  116.   
  117.         }  
  118.   
  119.         System.out  
  120.             .println(”*****************%%%%%%%%%%%%%%************”);  
  121.   
  122.         }  
  123.   
  124.     } catch (ZabbixApiException e) {  
  125.         e.printStackTrace();  
  126.     }  
  127.     }  
  128. }  
最后贴一下执行的结果




转载来源: http://blog.youkuaiyun.com/csolo/article/details/53202823

zabbix api java_zabbix的Java API(一) 上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。于是我在zabbix网站各种找,终于在下面网址找到了:http://zabbix.org/wiki/Docs/api/libraries;这里面有各个开发语言的API,大家可以去看看。接下来继续说Java的API,如下:第一和第三都是连接zabbix server... 阅读详情

相关推荐

Zabbix4.0架构理解-zabbix的工作方式

Zabbix server 是整个 Zabbix 软件的核心程序。 Zabbix server 进程以守护进程(Deamon)运行 Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。

qq_48391148的博客 1194

Zabbix实践(五):基于java的zabbix api调用实现数据共享

Zabbix的功能虽然很强大,能将数据以图表形式展现在Web中,但是,一个监控系统的使用者如果不了解Zabbix,或者其非维护人员需要通过监控了解各个服务器大致运行状况时,Zabbix所提供的界面就不是很友好了。 Zabbix API恰恰解决了这一问题。我们可以从API接口中读取想要了解的数据,用自己的方式展现在Web中

csolo的博客 2万+

Java调用zabbix API获取监控信息相关jar

Java调用zabbix API获取监控信息相关jar包,包括zabbix4j-0.1.jar、httpclient-4.3.1.jar、httpcore-4.3.jar、lombok.jar、slf4j-api-1.6.1.jar、slf4j-log4j12-1.6.1.jar、commons-codec-1.6.jar、commons-logging-1.1.1.jar、gson-2.5.jar

基于java的zabbix4.4 API开发

为什么要写这篇博客呢,是因为最近做的视频结构化运维系统有集成zabbix做服务器监控,项目需要调用zabbix得api来获取服务器得指标。所以呢边学习便记录 api开发有两种方式,一种是基于zabbix4j得jar包开发,一种是直接http直接调用,今天得博客就是通过http来调用。 ...

不经意的博客 1945

zabbix4j-0.1.6.jar 及其相关jar包

zabbix4j-0.1.6.jar 及其相关jar包。包括:commons-codec commons-logging gson httpclient httpclient-cache httpcore junit log4j lombok slf4j-api slf4j-log4j12 zabbix4j

C#与西门子PLC S7-1500 S7协议PLC读写数据

/获取对应长度的字符串。//将val字符串转换为字符数组。//String写入。//String读取。//PLC类型 IP地址 机架号 槽号。1.类库使用S7netplus。

softshow1026的博客 5578

java+zabbixapi_zabbixApi4j-Application

Application:此类设计用于处理应用程序。application.create: 创建新应用程序application.delete: 删除应用程序application.exists: 检查应用程序是否存在application.get: 检索应用application.massadd: 更新中的应用application.update: 将项目添加到应用程序image.pngzabbi...

weixin_35486456的博客 535

保姆级避坑指南:Mid-360雷达到手后,用livox_ros_driver2从接线到出点云的完整流程

本文提供Mid-360雷达到手后的完整使用指南,涵盖从硬件接线、网络配置到livox_ros_driver2驱动的安装与调试,帮助用户避开常见陷阱,实现点云数据的稳定输出与可视化。重点解析了配置文件的参数设置和点云格式选择,确保用户能够高效部署和使用Mid-360雷达。

weixin_30733003的博客 486

zabbix的使用:简介+安装+java api

一,简介 zabbix是一个分布式监控系统,支持多种采集方式、采集客户端、多种协议,将采集到的数据存放到数据库,然后分析整理,达到条件触发告警。 是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 二,使用场景 在一个IT环境中,由上层应用(数据库、应用软件)、系统架构(操作系统、虚拟化、集群)、底层支持(网络、硬件)等所组成,为了保证这些应用稳定运行,则

MyNoteBlog的博客 3386

数据中心机房建设标准及依据

深刻理解、尊重并恪守这些依据,是我们以科学、经济、可靠的方式,为蓬勃发展的数字经济筑牢基石的唯一路径。让我们共同努力,以标准为依据,以匠心为精神,建造更多世界一流的高效能、高可用、高智能的绿色数据中心,共同赋能数字中国的宏伟事业,支撑中华民族在数字时代的伟大复兴征程中稳步前行!今天我将力图以宏大的视角和深入的剖析,系统性地阐述数据中心机房建设所应遵循的多层次、多维度的标准依据,揭示这些依据背后的深层逻辑与时代使命,并探讨其如何共同作用于一座世界级数据中心的诞生。,以支持万兆乃至更高速率的传输。

qq_39980997的博客 1139

解决倍福ADS通信错误1861和6:一次完整的TwinCAT3路由配置与故障排查实录

本文详细解析了在Linux系统上解决倍福ADS通信错误1861和6的完整流程,包括TwinCAT3路由配置与故障排查。通过实例演示了如何正确配置AMS NetID、使用adstool工具添加静态路由,以及高级网络抓包分析技巧,帮助工程师快速定位和解决通信问题。

weixin_30875157的博客 520

zabbix的API接口管理和添加监控项

通过API接口管理Zabbix所监控主机 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于: 创建新的应用程序以使用Zabbix; 将Zabbix与第三方软件集成; 自动执行常规任务 Zabbix API是基于Web的

LY_CS的博客 8257

攻防世界 web高手进阶区 9分题 Web_python_flask_sql_injection

继续ctf的旅程,开始攻防世界web高手进阶区的9分题,本文是Web_python_flask_sql_injection的writeup

闵行小鱼塘 1473

如何在大数据领域实现高效的数据即服务

你是否遇到过这样的场景?业务同事要一份用户行为数据,你得先查Hive表结构、写SQL、跑任务、导出CSV,来回折腾2小时;不同部门重复开发相同的数据查询逻辑,导致“数据烟囱”越来越多;数据泄露风险频发,因为每个人都能直接访问原始数据;实时数据需求越来越迫切,但传统ETL流程根本跟不上。这些痛点的根源,在于数据的“交付方式”落后——我们还在用水电煤气时代的“拎桶取水”模式,而不是“打开龙头就用”的服务模式。数据即服务(Data as a Service, DaaS)

SuperAGI2025 974

Rancher操作手册(v2.7.5-rc1)

选择需要创建ingress的命名空间 ==》填写ingress名称 ==》在“规则”一栏,选择“Prefix” ==》输入访问路径 ==》选择访问路径对应的service ==》如果需要继续添加访问路径,点击“添加路径”,重复前面的步骤即可。选择需要创建Deployment的命名空间 ==》填写Deployment名称 ==》选择通用 ==》填写容器名称 ==》填写镜像 ==》选择镜像的拉取密文 ==》点击添加端口或Service。点击左侧菜单栏的集群里的“项目/命名空间”,点击右下角的“创建命名空间”。

weixin_60197334的博客 5573

基于MS5351的三通道可编程时钟发生器设计

时钟发生器是数字系统时序验证与信号完整性测试的核心基础设备,其原理基于锁相环(PLL)对参考晶振进行倍频与分频控制,通过寄存器配置实现多路独立频率输出。技术价值体现在高精度、低抖动、快速切换与工程可部署性之间取得平衡,尤其适用于FPGA/ASIC参考时钟调试、ADC/DAC采样时钟验证及嵌入式硬件时序裕量评估等场景。本方案采用MS5351三通道时钟芯片与ESP32主控协同架构,在保证LVCMOS输出质量与I²C可编程性的前提下,优化电源噪声抑制、晶体负载匹配和跨板信号完整性,兼顾成本、周期与实测稳定性,为实

weixin_31715353的博客 212

postman调用webservice接口_【分享】关于接口对前后端和测试的意义

1.什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2.接口都有哪些类型?  接口一般分为两种:1.程序内部的接口 2.系统对外的接口  系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把 数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引...

weixin_39996496的博客 113

西南科技大学数字电子技术实验七(4行串行累加器设计及FPGA实现)FPGA部分

/在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入1,并在k=0时运算。//在k=1时输入0,并在k=0时运算。//在k=1时输入0,并在k=0时运算。三、程序清单(每条语句必须包括注释或在开发窗口注释后截图)四、综合、管脚分配、生成输出文件、下载(所有步骤截图)五、仿真程序清单、波形(波形截图必做,截图!.k(k),//开关。

Welcome To My6n Blog 4332

filemaker server php,FileMaker Server 18

FileMaker Server 18是一款功能实用的服务器软件,该软件内置大量的开发数据,可以在最短的时间构建一个可使用的应用程序,软件以可靠的安全性和网络性能管理FileMaker用户组,它不限制联网的FileMaker Pro客户端的数量,限制是由您的硬件,应用程序设计,操作系统或许可程序强加的,需要的朋友赶紧来本站下载吧!FileMaker Server 18简介FileMaker Ser...

weixin_33644222的博客 471

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

2026毕设ssm+vue基于移动互联网的校内物业报修管理系统论文+程序

本研究针对高校宿舍报修效率低、监管难等问题,设计开发了一套基于SSM+VUE的数字化报修系统。系统通过九大功能模块实现"报修-派单-维修-评价-统计"全流程闭环管理,采用智能派单、移动端H5接单、多维度评价等创新设计。研究运用软件工程方法,解决了高并发处理、多端兼容等关键技术难题。预期成果包括完整的系统源码、技术文档及压力测试报告,可将报修响应时间缩短75%,为高校后勤信息化提供可复制的解决方案。系统部署环境为MySQL5.7+Tomcat7.0,采用Maven进行项目管理。

sheji5998的博客 975

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2017年欢聚时代Android校招笔试题型深度复盘

Android开发进阶不仅要求掌握四大组件的使用,更需要对底层原理有系统认知。例如,Binder作为Android IPC的核心机制,通过mmap实现一次拷贝,保障跨进程通信的性能与安全;Handler消息机制则通过Looper与MessageQueue驱动主线程任务调度。性能优化中的内存泄漏、布局绘制等问题,直接影响应用用户体验。这些知识点在移动互联网时代成为Android工程师校招笔试的高频考点。本文基于欢聚时代2017年Android校招笔试A卷,复盘其题型结构与考察重点,涵盖Java基础、并发、四大

weixin_34248023的博客 442

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

系统性能工程全解析:从核心指标到实战优化

性能是衡量系统在特定负载下执行效率与效果的综合概念,其核心在于响应时间、吞吐量、资源利用率与稳定性四大维度。从原理层面看,性能问题本质是资源竞争与等待,任何瓶颈最终都会体现在CPU、内存、磁盘I/O、网络I/O等基础资源指标上。掌握性能工程的价值在于,它能将抽象的用户体验转化为可观测、可量化的数据体系,从而指导容量规划与架构设计。在实际应用场景中,无论是高并发交易系统还是日常办公软件,性能问题都会直接影响用户体验与运维成本。本文以一次线上故障为引,系统拆解了性能监控、剖析与优化的完整闭环,并重点介绍了火焰图

weixin_33875564的博客 400

zabbix api例子 java_通过调用API获取zabbix监控服务(JAVA实现)案例

因为项目保密的原因,实际代码无法贴出,但与他人博客中的代码有一定的相似度,现拷贝部分作为参考,再结合我专栏中的技术文档,以便理解对zabbix的部分封装过程。Zabbix4jSampleGetHost.javapackage com.zabbix4j.apitest;import com.zabbix4j.ZabbixApi;import com.zabbix4j.ZabbixApiExcepti...

weixin_39926749的博客 677

Zabbix API 使用详解 (Python)

1.Zabbix API是基于前端HTTP协议实现的,数据格式采用JSONRPC协议,格式如下: {"method": "getid", "params": ["arg"], "id": 1} 参数说明: method:调用的方法名。 params:方法传入的参数,若无参数,则传入[]。 id:调用标识符,用于标识一次远程调用过程。 服务器接收到JSON-RPC的调用请求后,处理该请求的方法调用,然后将结果返回调用方。 2.返回的数据格式如下: { "result": "xx

平平无奇,不断学习的运维玖玖 6548

zabbix实现对java应用的监控【tomcat】【JMX】

tomcat的官方说明文件 文章目录软件需要知识点说明TomcatjdkJMX原理展示实验环境实验演示server2安装配置:server1安装配置页面配置 软件需要 apache-tomcat-8.5.24.tar.gz jdk-8u121-linux-x64.rpm 知识点说明 Tomcat Tomcat是Apache 软件基金会(Apache Software Foundation)的...

dddxxy的博客 1225
下一篇: 在eclipse中使用maven创建springMVC项目
LQLZ925
博客等级 码龄9年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值