上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。
于是我在zabbix网站各种找,终于在下面网址找到了:
http://zabbix.org/wiki/Docs/api/libraries;这里面有各个开发语言的API,大家可以去看看。
接下来继续说Java的API,如下:
第一和第三都是连接zabbix server的api,第一个需要自己构造json格式的参数。 第二个sender 是开发向server 输送数据的api。
第三个即是本次我研究的对象,这个api里面,进一步做了封装,也提供了一些测试代码。本次就从这里研究吧。(一起学习呀( ⊙ o ⊙ )!)
要用这个API,可以导入zabbix4j这个包就好,相关的包都会导入进来,(我第一次就走了弯路,都是一个个的导包,后来想zabbix既然提供了API应该zabbix包啊?就试了试,果然有,吼吼吼~~)
为了测试我们还要导入其他包,如下:
下面就正式开始研究代码了:
在zabbix的web界面中首先是从创建主机开始的,那么,这儿我们也先从创建主机开始研究吧,创建主机的代码如下:
1 import static org.junit.Assert.*; 2 3 import java.util.ArrayList; 4 import java.util.Date; 5 import java.util.List; 6 7 import org.junit.Test; 8 9 import com.zabbix4j.host.HostCreateRequest; 10 import com.zabbix4j.host.HostCreateResponse; 11 import com.zabbix4j.hostinteface.HostInterfaceObject; 12 import com.zabbix4j.usermacro.Macro; 13 14 public class testCreateHost extends ZabbixApiTestBase{ 15 public testCreateHost(){ 16 super(); 17 } 18 19 @Test 20 public void createHost(){ 21 // 这两个变量数据库中必须存在(我第一次就在这儿捣鼓了半天,以为创建主机就什么都是新的, 22 // 这是对zabbix本身的不理解导致的) 23 final Integer groupId = 4; 24 final Integer templateId = 10081; 25 26 try { 27 HostCreateRequest request = new HostCreateRequest(); 28 HostCreateRequest.Params params = request.getParams(); 29 30 params.addTemplateId(templateId); 31 params.addGroupId(groupId); 32 //添加宏 33 List<Macro> macros = new ArrayList<Macro>(); 34 Macro macro1 = new Macro(); 35 macro1.setMacro("{$MACRO1}"); 36 macro1.setValue("value1"); 37 macros.add(macro1); 38 params.setMacros(macros); 39 //添加主机接口 40 HostInterfaceObject hostInterface = new HostInterfaceObject(); 41 hostInterface.setIp("192.168.106.133"); 42 params.addHostInterfaceObject(hostInterface); 43 //添加主机,和主机名 44 params.setHost("test host created1." + new Date().getTime()); 45 params.setName("test host created1 name" + new Date().getTime()); 46 47 HostCreateResponse response = zabbixApi.host().create(request); 48 assertNotNull(response); 49 logger.debug(getGson().toJson(response)); 50 51 } catch (Exception e) { 52 fail(e.getMessage()); 53 } 54 } 55 56 }
要在zabbix里面创建主机(做其他操作也一样),就要先通过身份验证,首先你要通过你自己的zabbix接口地址:http://IP/zabbix/api_jsonrpc.php;
我将这个前提工作放在了一个类中,代码如下:
1 import static org.junit.Assert.fail; 2 3 4 import org.slf4j.Logger; 5 import org.slf4j.LoggerFactory; 6 7 import com.google.gson.Gson; 8 import com.google.gson.GsonBuilder; 9 import com.zabbix4j.ZabbixApi; 10 import com.zabbix4j.ZabbixApiException; 11 12 13 14 public class ZabbixApiTestBase { 15 16 protected static Logger logger = LoggerFactory.getLogger(ZabbixApiTestBase.class); 17 protected static String user = "Admin";//zabbix登录账号 18 protected static String password = "zabbix";//zabbix登录密码 19 20 protected ZabbixApi zabbixApi; 21 22 public ZabbixApiTestBase() { 23 login(user, password); 24 } 25 26 protected void login(String user, String password) { 27 try { 28 zabbixApi = new ZabbixApi("http://192.168.106.136/zabbix/api_jsonrpc.php"); 29 zabbixApi.login(user, password); 30 } catch (ZabbixApiException e) { 31 fail(e.getMessage()); 32 } 33 } 34 35 36 protected Gson getGson() { 37 38 return new GsonBuilder().setPrettyPrinting().create(); 39 } 40 41 }
小白的我正在学习的路上,希望各位大佬多多指教,谢谢,谢谢!
转载请注明地址:http://www.cnblogs.com/dbdd/p/7161723.html