zabbix的Java API(一)

  上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。

于是我在zabbix网站各种找,终于在下面网址找到了:

  http://zabbix.org/wiki/Docs/api/libraries;这里面有各个开发语言的API,大家可以去看看。

  接下来继续说Java的API,如下:

    

  第一和第三都是连接zabbix server的api,第一个需要自己构造json格式的参数。 第二个sender 是开发向server 输送数据的api。

  第三个即是本次我研究的对象,这个api里面,进一步做了封装,也提供了一些测试代码。本次就从这里研究吧。(一起学习呀( ⊙ o ⊙ )!)

  要用这个API,可以导入zabbix4j这个包就好,相关的包都会导入进来,(我第一次就走了弯路,都是一个个的导包,后来想zabbix既然提供了API应该zabbix包啊?就试了试,果然有,吼吼吼~~)

  为了测试我们还要导入其他包,如下:

    

  下面就正式开始研究代码了:

  在zabbix的web界面中首先是从创建主机开始的,那么,这儿我们也先从创建主机开始研究吧,创建主机的代码如下:

  

 1 import static org.junit.Assert.*;
 2
 3 import java.util.ArrayList;
 4 import java.util.Date;
 5 import java.util.List;
 6
 7 import org.junit.Test;
 8
 9 import com.zabbix4j.host.HostCreateRequest;
10 import com.zabbix4j.host.HostCreateResponse;
11 import com.zabbix4j.hostinteface.HostInterfaceObject;
12 import com.zabbix4j.usermacro.Macro;
13
14 public class testCreateHost extends ZabbixApiTestBase{
15     public testCreateHost(){
16         super();
17     }
18
19     @Test
20     public void createHost(){
21 //        这两个变量数据库中必须存在(我第一次就在这儿捣鼓了半天,以为创建主机就什么都是新的,
22 //        这是对zabbix本身的不理解导致的)
23         final Integer groupId = 4;
24         final Integer templateId = 10081;
25
26          try {
27                 HostCreateRequest request = new HostCreateRequest();
28                 HostCreateRequest.Params params = request.getParams();
29
30                 params.addTemplateId(templateId);
31                 params.addGroupId(groupId);
32                 //添加宏
33                 List<Macro> macros = new ArrayList<Macro>();
34                 Macro macro1 = new Macro();
35                 macro1.setMacro("{$MACRO1}");
36                 macro1.setValue("value1");
37                 macros.add(macro1);
38                 params.setMacros(macros);
39                 //添加主机接口
40                 HostInterfaceObject hostInterface = new HostInterfaceObject();
41                 hostInterface.setIp("192.168.106.133");
42                 params.addHostInterfaceObject(hostInterface);
43                 //添加主机,和主机名
44                 params.setHost("test host created1." + new Date().getTime());
45                 params.setName("test host created1 name" + new Date().getTime());
46
47                 HostCreateResponse response = zabbixApi.host().create(request);
48                 assertNotNull(response);
49                 logger.debug(getGson().toJson(response));
50
51             } catch (Exception e) {
52                 fail(e.getMessage());
53             }
54         }
55
56     }

  要在zabbix里面创建主机(做其他操作也一样),就要先通过身份验证,首先你要通过你自己的zabbix接口地址:http://IP/zabbix/api_jsonrpc.php;

  我将这个前提工作放在了一个类中,代码如下:

  

 1 import static org.junit.Assert.fail;
 2
 3
 4 import org.slf4j.Logger;
 5 import org.slf4j.LoggerFactory;
 6
 7 import com.google.gson.Gson;
 8 import com.google.gson.GsonBuilder;
 9 import com.zabbix4j.ZabbixApi;
10 import com.zabbix4j.ZabbixApiException;
11
12
13
14 public class ZabbixApiTestBase {
15
16     protected static Logger logger = LoggerFactory.getLogger(ZabbixApiTestBase.class);
17     protected static String user = "Admin";//zabbix登录账号
18     protected static String password = "zabbix";//zabbix登录密码
19
20     protected ZabbixApi zabbixApi;
21
22     public ZabbixApiTestBase() {
23         login(user, password);
24     }
25
26     protected void login(String user, String password) {
27         try {
28             zabbixApi = new ZabbixApi("http://192.168.106.136/zabbix/api_jsonrpc.php");
29             zabbixApi.login(user, password);
30         } catch (ZabbixApiException e) {
31             fail(e.getMessage());
32         }
33     }
34
35
36     protected Gson getGson() {
37
38         return new GsonBuilder().setPrettyPrinting().create();
39     }
40
41 }

  小白的我正在学习的路上,希望各位大佬多多指教,谢谢,谢谢!

  转载请注明地址:http://www.cnblogs.com/dbdd/p/7161723.html

时间: 2024-10-13 22:55:13

zabbix的Java API(一)的相关文章

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

笔记:MyBatis 使用 Java API配置

我们已经讨论了各种MyBatis配置元素,如envronments.typeAlias和typeHandlers,以及如何使用XML配置它们.即使你想使用基于JavaAPI的MyBatis配置,MyBatis的SqlSessionFactory接口除了使用基于XML的配置创建外也可以通过Java API 编程式地被创建.每个在XML中配置的元素,都可以编程式的创建.使用Java API创建SqlSessionFactory,代码如下: ? ? ????public?static?SqlSessi

MyEclipse生成java API文档

API文档是提供接口是必须的,如果用word文档,不仅书写起来很麻烦,而且对于使用者来说很不方便.可以使用myEclipse来生成API文档,与java提供的官方API文档一样.一下是详细步骤. /**  * 数据库操作通用程序包  */ package xju.dbhelper; import java.sql.*; /**  * 数据库操作通用接口  * @author xju  * @version 1.0  */ public abstract interface DBHelper {

spark2.x由浅入深深到底系列六之RDD java api详解三

学习任何spark知识点之前请先正确理解spark,可以参考:正确理解spark 本文详细介绍了spark key-value类型的rdd java api 一.key-value类型的RDD的创建方式 1.sparkContext.parallelizePairs JavaPairRDD<String, Integer> javaPairRDD =         sc.parallelizePairs(Arrays.asList(new Tuple2("test", 3

Elasticsearch5.0 Java Api(一) -- 插入索引

Elasticsearch5.X官方手册 Elasticsearch5.X官方手册中文版 Elasticsearch5.X Java Api官方手册 导入maven依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.0.0</version> </depend

Java API操作HDFS

HDFS是存储数据的分布式文件系统,对HDFS的操作,就是对文件系统的操作,除了用HDFS的shell命令对文件系统进行操作,我们也可以利用Java API对文件系统进行操作,比如文件的创建.删除.修改权限等等,还有文件夹的创建.删除.重命名等等. 使用Java API对文件系统进行操作主要涉及以下几个类: 1.Configuration类:该类的对象封装了客户端或者服务端的配置. 2.FileSystem类:该类的对象是一个文件系统对象,可以利用该对象的一些方法来对文件进行操作,FileSys

在Java API设计中,面向接口编程的思想,以及接口和工厂的关系

现在的java API的设计中,提倡面向接口的编程,即在API的设计中,参数的传递和返回建议使用接口,而不是具体的实现类,如一个方法的输入参数类型应该使用Map接口,而不是HashMap或Hashtable等具体的实现类.这样做的好处是,程序容易扩展.如果使用Map作为参数,用户可以使用任何实现Map接口的类作为参数,而不是仅仅限制使用HashMap或Hashtable作为参数,使程序的实现更加灵活. 接口(Java的Interface),只定义了一些抽象的方法(也可以定义一些常量,但不鼓励这么

HDFS中JAVA API的使用

转自:http://www.cnblogs.com/liuling/p/2013-6-17-01.html 相关源代码:http://www.cnblogs.com/ggjucheng/archive/2013/02/19/2917020.html HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件.删除文件.读取文件内容等操作.下面记录一下使用JAVA API对HDFS中的文件进行操作的过程. 对分HDFS中的文件操作主要涉及一下几个类: Configurat

ElasticSearch Java api 详解_V1.0

原英文文档:http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/index.html (各个版本的api) Search部分: 查询有两种方法:query Java API和filter Java API 首先看一个例子: import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.Se