zabbix api java_zabbix的Java API(一)

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

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

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

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

20180110235315268962.png

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

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

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

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

20180110235315271892.png

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

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

1 import static org.junit.Assert.*;2

3 importjava.util.ArrayList;4 importjava.util.Date;5 importjava.util.List;6

7 importorg.junit.Test;8

9 importcom.zabbix4j.host.HostCreateRequest;10 importcom.zabbix4j.host.HostCreateResponse;11 importcom.zabbix4j.hostinteface.HostInterfaceObject;12 importcom.zabbix4j.usermacro.Macro;13

14 public class testCreateHost extendsZabbixApiTestBase{15 publictestCreateHost(){16 super();17 }18

19 @Test20 public voidcreateHost(){21 //这两个变量数据库中必须存在(我第一次就在这儿捣鼓了半天,以为创建主机就什么都是新的,22 //这是对zabbix本身的不理解导致的)

23 final Integer groupId = 4;24 final Integer templateId = 10081;25

26 try{27 HostCreateRequest request = newHostCreateRequest();28 HostCreateRequest.Params params =request.getParams();29

30 params.addTemplateId(templateId);31 params.addGroupId(groupId);32 //添加宏

33 List macros = new ArrayList();34 Macro macro1 = newMacro();35 macro1.setMacro("{$MACRO1}");36 macro1.setValue("value1");37 macros.add(macro1);38 params.setMacros(macros);39 //添加主机接口

40 HostInterfaceObject hostInterface = newHostInterfaceObject();41 hostInterface.setIp("192.168.106.133");42 params.addHostInterfaceObject(hostInterface);43 //添加主机,和主机名

44 params.setHost("test host created1." + newDate().getTime());45 params.setName("test host created1 name" + newDate().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 staticorg.junit.Assert.fail;2

3

4 importorg.slf4j.Logger;5 importorg.slf4j.LoggerFactory;6

7 importcom.google.gson.Gson;8 importcom.google.gson.GsonBuilder;9 importcom.zabbix4j.ZabbixApi;10 importcom.zabbix4j.ZabbixApiException;11

12

13

14 public classZabbixApiTestBase {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 protectedZabbixApi zabbixApi;21

22 publicZabbixApiTestBase() {23 login(user, password);24 }25

26 protected voidlogin(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 protectedGson getGson() {37

38 return newGsonBuilder().setPrettyPrinting().create();39 }40

41 }

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

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


版权声明:本文为weixin_39542710原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。