zabbix-api

zabbix-api for java

https://www.zabbix.com/wiki/doc/api

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

Based on zabbix api version 2.4.

Zabbix api version 2.2 will throw a exception.

Info

API is simple, beacuse java can not process json like dynamic language.

You can build you own Request Object.

public interface ZabbixApi {

    public void init();

    public void destory();

    public String apiVersion();

    public JSONObject call(Request request);

    public boolean login(String user, String password);
}

Example

        String url = "http://192.168.90.102/zabbix/api_jsonrpc.php";
        zabbixApi = new DefaultZabbixApi(url);
        zabbixApi.init();

        boolean login = zabbixApi.login("zabbix.dev", "goK0Loqua4Eipoe");
        System.err.println("login:" + login);

        String host = "192.168.66.29";
        JSONObject filter = new JSONObject();

        filter.put("host", new String[] { host });
        Request getRequest = RequestBuilder.newBuilder()
                .method("host.get").paramEntry("filter", filter)
                .build();
        JSONObject getResponse = zabbixApi.call(getRequest);
        System.err.println(getResponse);
        String hostid = getResponse.getJSONArray("result")
                .getJSONObject(0).getString("hostid");
        System.err.println(hostid);

You can set your own HttpClient.

        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(5 * 1000).setConnectionRequestTimeout(5 * 1000)
                .setSocketTimeout(5 * 1000).build();
        PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager();

        CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(connManager)
                .setDefaultRequestConfig(requestConfig).build();

        ZabbixApi zabbixApi = new DefaultZabbixApi(
                "http://localhost:10051/zabbix/api_jsonrpc.php", httpclient);
        zabbixApi.init();

        String apiVersion = zabbixApi.apiVersion();

        System.out.println("api version:" + apiVersion);

        zabbixApi.destory();

Maven dependency

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

Links

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

Licence

Apache License V2