基於Java的Zabbix二次開發-----主機列表的獲取

上一篇介紹了zabbix的api實例。
本篇文章開始正是開始介紹基於Java的Zabbix二次開發。

可以使用封裝好的jar包進行開發,封裝好的jar包地址如下:

Jar包地址

在這裏插入圖片描述
在這裏插入圖片描述
這裏選取第三個封裝好的jar包,在項目中引入即可。

這個jar包到底如何使用,來獲取zabbix服務端的數據?接下來用主機管理這個菜單進行分析解答。

Api接口文檔

先看一下具體效果:

在這裏插入圖片描述
可以看到,這是配置好的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等等,具體方法接口文檔中都有,很詳細。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章