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

zabbix的Java API(一)

程序员文章站 2022-07-11 11:59:16
...
上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。
于是我在zabbix网站各种找,终于在下面网址找到了:
  http://zabbix.org/wiki/Docs/api/libraries;这里面有各个开发语言的API,大家可以去看看。

  接下来继续说Java的API,如下:

zabbix的Java API(一)

第一和第三都是连接zabbix server的api,第一个需要自己构造json格式的参数。 第二个sender 是开发向server 输送数据的api。
  第三个即是本次我研究的对象,这个api里面,进一步做了封装,也提供了一些测试代码。本次就从这里研究吧。(一起学习呀( ⊙ o ⊙ )!)
  要用这个API,可以导入zabbix4j这个包就好,相关的包都会导入进来,(我第一次就走了弯路,都是一个个的导包,后来想zabbix既然提供了API应该zabbix包啊?就试了试,果然有,吼吼吼~~)
 
  为了测试我们还要导入其他包,如下:

zabbix的Java API(一)

下面就正式开始研究代码了:
  在zabbix的web界面中首先是从创建主机开始的,那么,这儿我们也先从创建主机开始研究吧,创建主机的代码如下:

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.junit.Test;

import com.zabbix4j.host.HostCreateRequest;
import com.zabbix4j.host.HostCreateResponse;
import com.zabbix4j.hostinteface.HostInterfaceObject;
import com.zabbix4j.usermacro.Macro;

public class testCreateHost extends ZabbixApiTestBase{
	public testCreateHost(){
		super();
	}
	
	@Test
	public void createHost(){
//		这两个变量数据库中必须存在(我第一次就在这儿捣鼓了半天,以为创建主机就什么都是新的,
//		这是对zabbix本身的不理解导致的)
		final Integer groupId = 4;
		final Integer templateId = 10081;
		
		 try {
	            HostCreateRequest request = new HostCreateRequest();
	            HostCreateRequest.Params params = request.getParams();

	            params.addTemplateId(templateId);
	            params.addGroupId(groupId);
	            //添加宏
	            List<Macro> macros = new ArrayList<Macro>();
	            Macro macro1 = new Macro();
	            macro1.setMacro("{$MACRO1}");
	            macro1.setValue("value1");
	            macros.add(macro1);
	            params.setMacros(macros);
	            //添加主机接口
	            HostInterfaceObject hostInterface = new HostInterfaceObject();
	            hostInterface.setIp("192.168.106.133");
	            params.addHostInterfaceObject(hostInterface);
	            //添加主机,和主机名
	            params.setHost("test host created1." + new Date().getTime());
	            params.setName("test host created1 name" + new Date().getTime());

	            HostCreateResponse response = zabbixApi.host().create(request);
	            assertNotNull(response);
	            logger.debug(getGson().toJson(response));

	        } catch (Exception e) {
	            fail(e.getMessage());
	        }
	    }

	}

要在zabbix里面创建主机(做其他操作也一样),就要先通过身份验证,首先你要通过你自己的zabbix接口地址:http://IP/zabbix/api_jsonrpc.php;
  我将这个前提工作放在了一个类中,代码如下:
import static org.junit.Assert.fail;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.zabbix4j.ZabbixApi;
import com.zabbix4j.ZabbixApiException;



public class ZabbixApiTestBase {

    protected static Logger logger = LoggerFactory.getLogger(ZabbixApiTestBase.class);
    protected static String user = "Admin";//zabbix登录账号
    protected static String password = "zabbix";//zabbix登录密码

    protected ZabbixApi zabbixApi;

    public ZabbixApiTestBase() {
        login(user, password);
    }

    protected void login(String user, String password) {
        try {
            zabbixApi = new ZabbixApi("http://192.168.2.118/zabbix/api_jsonrpc.php");
            zabbixApi.login(user, password);
        } catch (ZabbixApiException e) {
            fail(e.getMessage());
        }
    }
   

    protected Gson getGson() {

        return new GsonBuilder().setPrettyPrinting().create();
    }

}

小白的我正在学习的路上,希望各位大佬多多指教,谢谢,谢谢!