• 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

  • 相关阅读:
    免费的编程中文书籍索引 from github
    win7 Python 环境 准备 配置
    SQL Server 2008 允许远程链接,适用于广域网和局域网
    CTP API开发期货自动交易平台概论
    一步一步重写 CodeIgniter 框架 (4) —— load_class 管理多个对象实例的思路
    一步一步重写 CodeIgniter 框架 (3) —— 用面向对象重构代码
    一步一步重写 CodeIgniter 框架 (2) —— 实现简单的路由功能
    一步一步重写 CodeIgniter 框架 (1) —— url 如何映射到具体的方法
    一步一步重写 CodeIgniter 框架 -- 原因和思路
    GDI双缓冲绘图
  • 原文地址:https://www.cnblogs.com/dbdd/p/7161723.html
Copyright © 2020-2023  润新知