1. 程式人生 > >zabbix的Java API(一)

zabbix的Java API(一)

strong 走了 .html image catch 是我 後來 resp 登錄密碼

  上文說了,我是對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

zabbix的Java API(一)