zabbix Java-client-API

zabbix官网

 

  https://www.zabbix.com/documentation/4.0/zh/manual/api/reference/user/login

 

  可查看crud的API,难就难在它的参数太复杂了。

       ps:只有4.0版本以上才有中文翻译。

 

git地址


  https://github.com/hengyunabc/zabbix-api

 

jar包

 

<dependency>
    <groupId>io.github.hengyunabc</groupId>
    <artifactId>zabbix-api</artifactId>
    <version>0.0.2</version>
</dependency>

 

连接zabbix至少需要哪些参数?

  URL:   
    http://"+ip+"/zabbix/api_jsonrpc.php , IP是你配置zabbix时候配置的IP 这个地址是数据地址

用户名:
    
密码:

登录

 

 private ZabbixApi login(String username, String password, String url) throws Exception {

        ZabbixApi zabbixApi = new DefaultZabbixApi(url);

        zabbixApi.init();

        boolean login = zabbixApi.login(username, password);

        if(!login){
    
              //TODO
        }

        return zabbixApi;

}    

 

获取数据的示例

 public String getTriggerInfoList(Long timeFrom,String[] groupsIds) throws Exception {
        //声明一个过滤对象集
        JSONObject jo = new JSONObject();

        //添加参数value并设置为1 代表只读故障状态数据
        jo.put("value", 1); 

        //priority故障严重级别,2-5代表从警告到灾难
        jo.put("priority", new String[]{"2", "3", "4", "5"});

        //主机ID,传入你向拿到的主机ID:注意它是一个数组类型
        jo.put("groupids",groupsIds);

        //从哪一个时刻获取数据,long类型数据,比如只获取最近五分钟的数据
        jo.put("time_from",timeFrom);

        
        //请求体:这个传什么主要看你需要zabbix给你返回哪些数据
        //一定要把过滤对象添加上去
        Request request = RequestBuilder.newBuilder().method("trigger.get")
                .paramEntry("output", new String[]{"description", "priority", "lastchange","extend"})
                .paramEntry("selectHosts", new String[]{"host", "name", "hostid"})
                .paramEntry("selectGroups",new String[]{"group"})
                .paramEntry("selectDependencies", "extend")
                .paramEntry("selectLastEvent","extend")
                .paramEntry("correlation_mode","0")
                .paramEntry("expandData", "host")
                .paramEntry("skipDependent", "1")
                .paramEntry("monitored", "1")
                .paramEntry("active", "1")
                .paramEntry("expandDescription", "1")
                .paramEntry("sortfield", "lastchange")
                .paramEntry("sortorder", "DESC")
                .paramEntry("only_true","1")
                //将jo 放入请求体对应的key为filter内
                .paramEntry("filter", jo)
                .build();

        JSONObject response = zabbixRequest(request);
        zabbixError(response);
        JSONArray result = response.getJSONArray("result");
        return result.toJSONString();
    }      

 

posted @ 2021-07-09 18:10  无上仰无  阅读(274)  评论(0)    收藏  举报