欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于Java的Zabbix二次开发-----主机列表的获取

程序员文章站 2022-07-11 11:59:22
...

上一篇介绍了zabbix的api实例。
本篇文章开始正是开始介绍基于Java的Zabbix二次开发。

可以使用封装好的jar包进行开发,封装好的jar包地址如下:

Jar包地址

基于Java的Zabbix二次开发-----主机列表的获取
基于Java的Zabbix二次开发-----主机列表的获取
这里选取第三个封装好的jar包,在项目中引入即可。

这个jar包到底如何使用,来获取zabbix服务端的数据?接下来用主机管理这个菜单进行分析解答。

Api接口文档

先看一下具体效果:

基于Java的Zabbix二次开发-----主机列表的获取
可以看到,这是配置好的zabbix的主机管理页面,我们要通过api,获取这些数据,并且操作这些数据,如下:

基于Java的Zabbix二次开发-----主机列表的获取
首先,我们创建一个类存放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等等,具体方法接口文档中都有,很详细。