上一篇介紹了zabbix的api實例。
本篇文章開始正是開始介紹基於Java的Zabbix二次開發。
可以使用封裝好的jar包進行開發,封裝好的jar包地址如下:
這裏選取第三個封裝好的jar包,在項目中引入即可。
這個jar包到底如何使用,來獲取zabbix服務端的數據?接下來用主機管理這個菜單進行分析解答。
先看一下具體效果:
可以看到,這是配置好的zabbix的主機管理頁面,我們要通過api,獲取這些數據,並且操作這些數據,如下:
首先,我們創建一個類存放ZabbixApi所需要的url,用戶名和密碼常量。
public class ZabbixApiParamter {
public static final String URL = "http://10.0.119.140/zabbix/api_jsonrpc.php";
public static final String USER = "Admin";
public static final String PASSWORD = "zabbix";
}
注:這裏的Api接口url,是固定不變的。
然後我們New一個ZabbixApi的實例,通過用戶名密碼登錄:
ZabbixApi zabbixApi = new ZabbixApi(ZabbixApiParamter.URL);
zabbixApi.login(ZabbixApiParamter.USER, ZabbixApiParamter.PASSWORD);
通過查看ZabbixApi這個類的源碼你會發現,不一樣的數據來源有不一樣的方法,如主機相關的就在host方法裏:
public class ZabbixApi {
private String apiUrl;
private String auth;
public ZabbixApi(String apiUrl) {
this.apiUrl = apiUrl;
}
public void login(String username, String password) throws ZabbixApiException {
User user = new User(this.apiUrl);
UserLoginRequest request = new UserLoginRequest();
request.getParams().setPassword(password);
request.getParams().setUser(username);
UserLoginResponse response = user.login(request);
this.auth = response.getResult();
}
public Hostgroup hostgroup() {
return new Hostgroup(this.apiUrl, this.auth);
}
public Host host() {
return new Host(this.apiUrl, this.auth);
}
public Item item() {
return new Item(this.apiUrl, this.auth);
}
根據上方的Api接口文檔可以查到,查詢主機列表的方法爲get方法,所以我們可以接着寫:
com.zabbix4j.host.Host hostApi = zabbixApi.host();//獲取主機api
HostGetResponse hostGetResponse = hostApi.get(new HostGetRequest());//調用get方法獲取響應
List<Result> resultList = hostGetResponse.getResult();
如上,resultList即爲主機列表。
Result類可以通過result.getName()獲取主機名稱,result.getHostid()獲取主機id等等,具體方法接口文檔中都有,很詳細。