文档章节

调用Zabbix API工具类

郭恩洲_OSC博客
 郭恩洲_OSC博客
发布于 2014/08/18 13:15
字数 346
阅读 104
收藏 1
package util;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;

import constant.ConfigConstant;
import ftl.FtlClass;


/**
 * @author java_guoenzhou@163.com
 *
 */
public class ZabbixUtil {
	static String authID = null;
	//用户名
	static String user = ConfigConstant.ZABBIX_USER;
	//密码
	static String password = ConfigConstant.ZABBIX_PASSWORD;
	//请求URL
	static String url = ConfigConstant.ZABBIX_URL;
	//zabbix API 版本
	static String version = ConfigConstant.ZABBIX_VERSION;
	
	static{
		authID = user_login();
	}
	
	/**
	 * 登录验证获取auth
	 * @return
	 */
	public static String user_login(){
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("user", user);
		paramMap.put("password", password);
		String result = execute("user.login",paramMap);
		@SuppressWarnings("unchecked")
		Map<String, Object> jsonMap = (Map<String, Object>)JSONObject.parse(result);
		String authID =String.valueOf(jsonMap.get("result"));
		System.out.println(authID);
		return authID;
	}
	
	/**
	 * HTTP 请求
	 * @param jsonArgument
	 * @return
	 */
	public static String get_data(String jsonArgument ) {
		try {
			URL httpUrl = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
			conn.setRequestMethod("POST");
			conn.setDoOutput(true);
			conn.setRequestProperty("Content-Type", "application/json-rpc");
			// 表单参数
			StringBuffer params = new StringBuffer();
			params.append(jsonArgument);
			byte[] bypes = params.toString().getBytes();
			conn.getOutputStream().write(bypes);// 输入参数	
			//返回
			BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
			String result = reader.readLine();
			return result;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	
	/**
	 * 执行
	 * @param method 方法名称
	 * @param paramMap 模板参数集合
	 * @return
	 */
	public static String execute(String method,Map<String, Object> paramMap){
		String basePath = FtlClass.class.getResource(version+"/").getPath();
		try {
			String temp = FreemarkerUtils.getTemplate(basePath, method, paramMap);
			return get_data(temp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * @param method 方法名称
	 * @param params 模板参数集合
	 * @return
	 */
	public static String execute(String method,String[] params){
		String basePath = FtlClass.class.getResource(version+"/").getPath();
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("auth", authID);
		paramMap.put("params", params);
		try {
			String temp = FreemarkerUtils.getTemplate(basePath, method, paramMap);
			return get_data(temp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	

	public static void main(String[] args) throws IOException {
		//String result = execute("hostgroup.create",new String[]{"TEST3"});
		//System.out.println(result);
		
	}
}

© 著作权归作者所有

郭恩洲_OSC博客
粉丝 37
博文 256
码字总数 118046
作品 0
徐汇
高级程序员
私信 提问
桔子/Mojo-Zabbix

Mojo::Zabbix IT is a simple perl wrapper of Zabbix API. We build only authentication and request methods and few helper methods to simplify calling methods such ascreate/get/upd......

桔子
2016/10/13
0
0
python 邮件发送 zabbix 图片

实现调用zabbix api类 http://www.361way.com/zabbix-api-2/3681.html 获取图片 http://www.iyunv.com/thread-21332-1-1.html 邮件内嵌图片 http://www.tuicool.com/articles/vaAVri......

wennan
2015/11/06
159
0
深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了。 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,...

大白一起学
2017/06/01
0
0
Zabbix 3.4.3实现企业微信报警

Zabbix 3.4.3实现企业微信报警 [日期:2017-11-08] 来源:Linux社区 作者:wzlinux [字体:大 中 小] 一、企业微信注册 微信的报警方式可以让我们随时随地接收到信息,加快问题的处理,比传统...

linjin200
2018/06/13
34
0
Zabbix 调用API 批量添加主机等

今天介绍跟实验两种方法调用api接口去批量添加批量管理zabbix客户端主机: 首先看官网介绍: 概观 Zabbix API允许您以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它被广泛用于...

拎壶冲冲冲
2018/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

VMware vSphere ESXi主机的访问控制

在vShpere中,访问ESXi主机的途径很多,如下: ESXi DCUI ESXi Shell ESXi SSH ESXi Host Client vCenter --> vSphere web client / vSphere Client VMware vSphere ESXi主机的访问控制,除了......

大别阿郎
18分钟前
2
0
大神讲解CGI、FastCGI和PHP-FPM关系图解

参考资料 概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM:http://www.nowamagic.net/librarys/veda/detail/1319 php中fastcgi和php-fpm是什么东西:https://www.zybuluo.com/phper/note/50231 ......

网络小虾米
27分钟前
2
0
《DNS攻击防范科普系列3》 -如何保障 DNS 操作安全

引言 前两讲我们介绍了 DNS 相关的攻击类型,以及针对 DDoS 攻击的防范措施。这些都是更底层的知识,有同学就来问能否讲讲和我们的日常操作相关的知识点,今天我们就来说说和我们日常 DNS 操...

Mr_zebra
28分钟前
1
0
zk中ServerCnxn

实现接口Stats, Watcher 内部类 DisconnectReason CloseRequestException EndOfStreamException(流关闭) 属性 方法 getSessionTimeout 获取session失效时间 sendResponse 发送回复数据 se......

writeademo
32分钟前
3
0
如何将 Redis 用于微服务通信的事件存储

来源:Redislabs 作者:Martin Forstner 翻译:Kevin (公众号:中间件小哥) 以我的经验,将某些应用拆分成更小的、松耦合的、可协同工作的独立逻辑业务服务会更易于构建和维护。这些服务(也...

中间件小哥
36分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部