1. 程式人生 > >通過呼叫API獲取zabbix監控服務(JAVA實現)案例

通過呼叫API獲取zabbix監控服務(JAVA實現)案例

        因為專案保密的原因,實際程式碼無法貼出,但與他人部落格中的程式碼有一定的相似度,現拷貝部分作為參考,再結合我專欄中的技術文件,以便理解對zabbix的部分封裝過程

 Zabbix4jSampleGetHost.java

    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.4.132/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();  
	        }  
        }  
}  

ZabbixApiTestDummyMethodBase.java

package com.zabbix4j.apitest;

import com.zabbix4j.ZabbixApi;

public class ZabbixApiTestDummyMethodBase {  
	  
    protected ZabbixApi zabbixApi;  
  
    public ZabbixApiTestDummyMethodBase(ZabbixApi zabbixApi) {  
        this.zabbixApi = zabbixApi;  
    }  
}