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 @   无上仰无  阅读(260)  评论(0)    收藏  举报
编辑推荐:
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
· 微服务之间有哪些调用方式?
· 记一次SQL隐式转换导致精度丢失问题的排查
· dotnet 9 通过 AppHostRelativeDotNet 指定自定义的运行时路径
阅读排行:
· 一个基于 C# Unity 开发的金庸群侠传 3D 版,直呼牛逼!
· SQL Server 2025 中的改进
· 国内首个「混合推理模型」Qwen3深夜开源,盘点它的N种对接方式!
· 向商界大佬一样管理技术工作 - 以团队换将+技术重构为例
· 用c#从头写一个AI agent,实现企业内部自然语言数据统计分析(三)--一个综合的例子
点击右上角即可分享
微信分享提示