基于java的zabbix api调用实现数据共享
来源:互联网 发布:逆袭网络剧bilbil2集 编辑:程序博客网 时间:2024/06/05 19:34
使用了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里面,进一步做了封装,也提供了一些测试代码。本次实践就是在这个基础上进行实践的。
依赖的库如下
下面贴一下代码,代码里面做了比较详细的描述。
- package com.zabbix4j.apitest;
- import com.zabbix4j.ZabbixApi;
- import com.zabbix4j.ZabbixApiException;
- import com.zabbix4j.ZabbixApiParamter;
- import com.zabbix4j.host.*;
- import com.zabbix4j.hostinteface.HostInterfaceObject;
- import com.zabbix4j.item.ItemObject;
- import com.zabbix4j.usermacro.Macro;
- import java.util.ArrayList;
- import java.util.List;
- public class Zabbix4jSampleGetHost extends ZabbixApiTestDummyMethodBase {
- public Zabbix4jSampleGetHost(ZabbixApi zabbixApi) {
- super(zabbixApi);
- }
- // 这里配置zabbix的url,帐号和密码
- public static final String ZBX_URL = “http://192.168.136.144/zabbix/api_jsonrpc.php”;
- public static final String USERNAME = “admin”;
- public static final String PASSWORD = “zabbix”;
- // 调用api的host get方法的封装
- public HostGetResponse getHost() throws ZabbixApiException {
- Integer targetHostId = 10105;
- HostGetRequest request = new HostGetRequest();
- HostGetRequest.Params params = request.getParams();
- ArrayList<Integer> hostIds = new ArrayList<Integer>();
- hostIds.add(targetHostId);
- // params.setHostids(hostIds);
- // 这里可以设指定的id值,也可以不设值。设值的话,取指定的内容,不设的话,获取全部的host
- params.setHostids(null);
- params.setSelectDiscoveryRule(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectGroups(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectItems(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectApplications(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectDiscoveries(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectGraphs(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectHostDiscovery(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectHttpTests(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectInterfaces(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectInventory(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectMacros(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectParentTemplates(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectScreens(ZabbixApiParamter.QUERY.extend.name());
- params.setSelectTriggers(ZabbixApiParamter.QUERY.extend.name());
- System.out.println(”parames setting complete…”);
- HostGetResponse response = zabbixApi.host().get(request);
- return response;
- }
- public static void main(String[] args) {
- try {
- // login to Zabbix
- System.out.println(”beging…”);
- ZabbixApi zabbixApi = new ZabbixApi(ZBX_URL);
- zabbixApi.login(USERNAME, PASSWORD);
- System.out.println(”create new get host instance…”);
- Zabbix4jSampleGetHost myGetHost = new Zabbix4jSampleGetHost(
- zabbixApi);
- System.out.println(”Get host beging…”);
- HostGetResponse response = myGetHost.getHost();
- System.out.println(”Get host end…let’s print result”);
- // 对response进行处理
- for (int i = 0; i < response.getResult().size(); i++) {
- //response 返回的信息非常大,可以赋值给HostObject,也可以其他对象
- HostObject myHostObject = response.getResult().get(i);
- //response 返回的信息非常大,可以赋值给ItemObject,也可以其他对象
- List<ItemObject> myItemObjectList = response.getResult().get(i)
- .getItems();
- //打印host信息
- if (null == myHostObject)
- System.out.println(”Get host null, program will exit”);
- else {
- System.out.println(”++++++Print Result ” + i
- + ” HostObject+++++++++++”);
- System.out.println(myHostObject.getHost());
- System.out.println(myHostObject.getName());
- System.out.println(myHostObject.getAvailable());
- System.out.println(myHostObject.getHostid());
- System.out.println(myHostObject.getStatus());
- }
- //打印这个host下的item信息
- for (int j = 0; j < myItemObjectList.size(); j++) {
- if (j == 0)
- System.out.println(”++++++Print ItemObject List ”
- + ”+++++++++++”);
- ItemObject tmpItemObject = myItemObjectList.get(j);
- System.out.println(”Itemid:” + tmpItemObject.getItemid());
- System.out.println(”Templateid:”
- + tmpItemObject.getTemplateid());
- System.out.println(”Hostid:” + tmpItemObject.getHostid());
- System.out.println(”Name:” + tmpItemObject.getName());
- System.out.println(”Key:” + tmpItemObject.getKey_());
- System.out.println(”Lastvalue:”
- + tmpItemObject.getLastvalue());
- System.out.println(”Lastclock:”
- + tmpItemObject.getLastclock());
- System.out
- .println(”——————————————”);
- }
- System.out
- .println(”*****************%%%%%%%%%%%%%%************”);
- }
- } catch (ZabbixApiException e) {
- e.printStackTrace();
- }
- }
- }
转载来源: http://blog.csdn.net/csolo/article/details/53202823
阅读全文
0 0
- 基于java的zabbix api调用实现数据共享
- Java通过调用API获取zabbix监控
- zabbix api调用
- 基于windows api实现的共享锁/独占锁
- python调用zabbix api接口实时展示数据
- zabbix的Java API(一)
- zabbix的使用:简介+安装+java api
- hadoop:基于Java API实现的编译
- JAVA访问Zabbix API
- zabbix java api
- 爱测未来开发-Zabbix的使用 API的调用
- zabbix可利用的表结构及api的调用
- Java 调用 Windows API 可能性的实现
- java实现kubernates API的访问调用
- 基于XML的数据共享
- 基于JAVA的货币汇率api调用代码实例
- zabbix-Java library to access Zabbix API
- 基于Webservice API 的数据同步的reset的实现
- 日期时间范围选择插件-daterangepicker使用总结
- (一)栈和队列--由两个栈组成的队列 java实现
- idea 中 java文件图标出现红色J
- Win10网络102错误代码该怎么办?360浏览器网络连接错误 错误代码 102的解决方法
- [swift] UIImage NSImage PNG透明区域填充自定义颜色实现
- 基于java的zabbix api调用实现数据共享
- 独家解密:为什么企业持续更新SEO软文却没有效果?
- Java多线程join()
- 唔..
- 时间减去n秒
- Python:关于三角矩阵
- FFmpeg源码剖析-框架:transcode()
- 1138: 【C语言训练】计算一个整数N的阶乘
- http调用打码兔 的文档