通過呼叫API獲取zabbix監控服務(JAVA實現)案例
阿新 • • 發佈:2019-01-03
因為專案保密的原因,實際程式碼無法貼出,但與他人部落格中的程式碼有一定的相似度,現拷貝部分作為參考,再結合我專欄中的技術文件,以便理解對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; } }