基于Java的Zabbix二次开发-----主机列表的获取
程序员文章站
2022-07-11 11:59:22
...
上一篇介绍了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等等,具体方法接口文档中都有,很详细。
上一篇: 负载均衡集群中的session解决方案
下一篇: zabbix的Java API(一)