|
package com.mz.zabbix;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public> private static String URL = "http://IP:port/api_jsonrpc.php";
private static String AUTH = null;
private static String USERNAME = "u";
private static String PASSWORD = "p";
/**
* 向Zabbix发送Post请求,并返回json格式字符串
*
* @param param 请求参数
* @return
* @throws Exception
*/
private static String sendPost(String param) throws Exception {
HttpURLConnection connection = null;
DataOutputStream out = null;
BufferedReader reader = null;
StringBuffer sb = null;
try {
//创建连接
URL url = new URL(URL);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
connection.connect();
//POST请求
out = new DataOutputStream(connection.getOutputStream());
out.writeBytes(param);
out.flush();
//读取响应
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String lines;
sb = new StringBuffer("");
while ((lines = reader.readLine()) != null) {
lines = new String(lines.getBytes(), "utf-8");
sb.append(lines);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
if (reader != null) {
reader.close();
}
if (connection != null) {
connection.disconnect();
}
}
return sb.toString();
}
/**
* 通过用户名和密码设置AUTH,获得权限
*
* @throws Exception
*/
private static void setAuth() throws Exception {
Map params = new HashMap();
params.put("user", USERNAME);
params.put("password", PASSWORD);
Map map = new HashMap();
map.put("jsonrpc", "2.0");
map.put("method", "user.login");
map.put("params", params);
map.put("auth", null);
map.put("id", 0);
String param = JSON.toJSONString(map);
String response = sendPost(param);
JSONObject json = JSON.parseObject(response);
AUTH = json.getString("result");
}
/**
* 获得主机hostid
*
* @param host Zabbix中配置的主机hosts
* @return 返回hostid
* @throws Exception
*/
private static String getHostid(String host) throws Exception {
Map filter = new HashMap();
filter.put("host", host);
Map params = new HashMap();
params.put("output", "hostid");
params.put("filter", filter);
Map map = new HashMap();
map.put("jsonrpc", "2.0");
map.put("method", "host.get");
map.put("params", params);
map.put("auth", AUTH);
map.put("id", 0);
String param = JSON.toJSONString(map);
String response = sendPost(param);
JSONObject json = JSON.parseObject(response).getJSONArray("result").getJSONObject(0);
String hostid = json.getString("hostid");
return hostid;
}
/**
* 获得某主机的某个监控项id
*
* @param host 主机
* @param item 监控项
* @return 监控项itemid
* @throws Exception
*/
private static String getItemid(String host, String item) throws Exception {
Map search = new HashMap();
search.put("key_", item);
Map params = new HashMap();
params.put("output", "itemids");
params.put("hostids", getHostid(host));
params.put("search", search);
Map map = new HashMap();
map.put("jsonrpc", "2.0");
map.put("method", "item.get");
map.put("params", params);
map.put("auth", AUTH);
map.put("id", 0);
String param = JSON.toJSONString(map);
String response = sendPost(param);
JSONObject json = JSON.parseObject(response).getJSONArray("result").getJSONObject(0);
String itemid = json.getString("itemid");
return itemid;
}
/**
* 获取某主机某监控项在一段时间内的数据
*
* @param host 主机
* @param item 监控项
* @param time_from 起始时间
* @param time_till 结束时间
* @throws Exception
*/
public static void getDatas(String host, String item, Date time_from, Date time_till)
throws Exception {
Map params = new HashMap();
params.put("output", "extend");
params.put("history", 0);
params.put("itemids", getItemid(host, item));
params.put("time_from", time_from.getTime() / 1000);
params.put("time_till", time_till.getTime() / 1000);
Map map = new HashMap();
map.put("jsonrpc", "2.0");
map.put("method", "history.get");
map.put("params", params);
map.put("auth", AUTH);
map.put("id", 0);
String param = JSON.toJSONString(map);
String response = sendPost(param);
JSONArray json = JSON.parseObject(response).getJSONArray("result");
System.out.println(json);
}
public static void main(String[] args) throws Exception {
setAuth();
long time_till = new Date().getTime();
long time_from = time_till - 5 * 60000;
getDatas("GZ-FastDFS-15.16", "system.cpu.util[,idle]", new Date(time_from), new Date(
time_till));
}
} |
|
|