package com.gxx.config_center.web.monitor;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.gxx.config_center.dto.MonitorDto;
import com.gxx.config_center.interfaces.BaseInterface;
import com.gxx.config_center.interfaces.MonitorInterface;
import com.gxx.config_center.utils.HttpClientUtils;
/**
*
* - Title:
* -
* none
*
* - Description:监控控制器
* -
*
none
*
*
*
* @author Administrator
* @version 1.0, 2017年06月21日
* @since config_center
*/
@Controller
@RequestMapping("/monitor/")
public class MonitorController {
/**
* 日志处理器
*/
private final Logger logger = Logger.getLogger(MonitorController.class);
/**
* 访问交易监控查询页面
* @return
*/
@RequestMapping(value = "/query", method = RequestMethod.GET)
public String queryGet(HttpServletRequest request) {
if(null == request.getSession().getAttribute(BaseInterface.KEY_USER)){
logger.info("访问account/login");
return "account/login";
}
/**
* 初始化session
*/
initSession(request);
logger.info("访问monitor/query");
return "monitor/query";
}
/**
* 交易监控查询
* @param request
* @param monitorDto
* @return
*/
@RequestMapping(value = "/query", method = RequestMethod.POST, produces="application/json")
public @ResponseBody String query(HttpServletRequest request, MonitorDto monitorDto) {
logger.info("交易监控查询,方法路径:[" + monitorDto.getMethodRoute() + "],方法类型:[" + monitorDto.getMethodType() + "]"
+ ",外部系统:[" + monitorDto.getOuterSystem() + "],是否异常发生:[" + monitorDto.getIsException() + "]"
+ ",开始时间:[" + monitorDto.getBeginTime() + "],结束时间:[" + monitorDto.getEndTime() + "]"
+ ",最小耗时(毫秒)(>=):[" + monitorDto.getBeginUsedTime() + "],最大耗时(毫秒)(<=):[" + monitorDto.getEndUsedTime() + "]"
+ ",机器ip:[" + monitorDto.getIp() + "]"
+ ",备注字段1:[" + monitorDto.getResv1() + "],备注字段2:[" + monitorDto.getResv2() + "]"
+ ",备注字段3:[" + monitorDto.getResv3() + "],每页个数:[" + monitorDto.getPageSize() + "]"
+ ",当前页数:[" + monitorDto.getActivePage() + "]");
/**
* 判登录
*/
if(null == request.getSession().getAttribute(BaseInterface.KEY_USER)){
logger.info("请先登录!");
return "{isSuccess:false,message:'请先登录!'}";
}
/**
* 调record_app查询
*/
String url = "http://121.43.104.34:8080/record_app/monitor/query.htm";
Map mapData = new HashMap();
mapData.put("methodRoute", monitorDto.getMethodRoute());
mapData.put("methodType", processColon(monitorDto.getMethodType()));
mapData.put("outerSystem", processColon(monitorDto.getOuterSystem()));
mapData.put("isException", StringUtils.isBlank(monitorDto.getIsException())?"-1":processColon(monitorDto.getIsException()));
mapData.put("beginTime", monitorDto.getBeginTime());
mapData.put("endTime", monitorDto.getEndTime());
mapData.put("beginUsedTime", StringUtils.isBlank(monitorDto.getBeginUsedTime())?"-1":monitorDto.getBeginUsedTime());
mapData.put("endUsedTime", StringUtils.isBlank(monitorDto.getEndUsedTime())?"-1":monitorDto.getEndUsedTime());
mapData.put("ip", monitorDto.getIp());
mapData.put("resv1", monitorDto.getResv1());
mapData.put("resv2", monitorDto.getResv2());
mapData.put("resv3", monitorDto.getResv3());
mapData.put("pageSize", StringUtils.EMPTY + monitorDto.getPageSize());
mapData.put("activePage", StringUtils.EMPTY + monitorDto.getActivePage());
return HttpClientUtils.getWebContentByPost(url, mapData, "utf-8");
}
/**
* 交易监控统计
* @param request
* @param monitorDto
* @return
*/
@RequestMapping(value = "/count", method = RequestMethod.POST, produces="application/json")
public @ResponseBody String count(HttpServletRequest request, MonitorDto monitorDto) {
logger.info("交易监控查询,方法路径:[" + monitorDto.getMethodRoute() + "],方法类型:[" + monitorDto.getMethodType() + "]"
+ ",外部系统:[" + monitorDto.getOuterSystem() + "],是否异常发生:[" + monitorDto.getIsException() + "]"
+ ",开始时间:[" + monitorDto.getBeginTime() + "],结束时间:[" + monitorDto.getEndTime() + "]"
+ ",最小耗时(毫秒)(>=):[" + monitorDto.getBeginUsedTime() + "],最大耗时(毫秒)(<=):[" + monitorDto.getEndUsedTime() + "]"
+ ",机器ip:[" + monitorDto.getIp() + "]"
+ ",备注字段1:[" + monitorDto.getResv1() + "],备注字段2:[" + monitorDto.getResv2() + "]"
+ ",备注字段3:[" + monitorDto.getResv3() + "]");
/**
* 判登录
*/
if(null == request.getSession().getAttribute(BaseInterface.KEY_USER)){
logger.info("请先登录!");
return "{isSuccess:false,message:'请先登录!'}";
}
/**
* 调record_app查询
*/
String url = "http://121.43.104.34:8080/record_app/monitor/count.htm";
Map mapData = new HashMap();
mapData.put("methodRoute", monitorDto.getMethodRoute());
mapData.put("methodType", processColon(monitorDto.getMethodType()));
mapData.put("outerSystem", processColon(monitorDto.getOuterSystem()));
mapData.put("isException", StringUtils.isBlank(monitorDto.getIsException())?"-1":processColon(monitorDto.getIsException()));
mapData.put("beginTime", monitorDto.getBeginTime());
mapData.put("endTime", monitorDto.getEndTime());
mapData.put("beginUsedTime", StringUtils.isBlank(monitorDto.getBeginUsedTime())?"-1":monitorDto.getBeginUsedTime());
mapData.put("endUsedTime", StringUtils.isBlank(monitorDto.getEndUsedTime())?"-1":monitorDto.getEndUsedTime());
mapData.put("ip", monitorDto.getIp());
mapData.put("resv1", monitorDto.getResv1());
mapData.put("resv2", monitorDto.getResv2());
mapData.put("resv3", monitorDto.getResv3());
return HttpClientUtils.getWebContentByPost(url, mapData, "utf-8");
}
/**
* 处理字符串,含有:,则返回:之前的字符
* @param string
* @return
*/
private String processColon(String string) {
int index = StringUtils.indexOf(string, ":");
if(index > -1) {
string = string.substring(0, index);
}
return string;
}
/**
* 初始化session
* @param request
*/
public void initSession(HttpServletRequest request) {
/**
* 调record_app查询
*/
String url = "http://121.43.104.34:8080/record_app/monitor/queryAllMethodRoutes.htm";
String methodRoutes = HttpClientUtils.getWebContentByGet(url, "utf-8");
JSONArray array = JSONArray.parseArray(methodRoutes);
Object[] objArray = null;
if(null != array) {
objArray = array.toArray();
}
/**
* 方法路径
*/
request.getSession().setAttribute(MonitorInterface.METHOD_ROUTE_LIST, objArray);
/**
* 方法类型
*/
request.getSession().setAttribute(MonitorInterface.METHOD_TYPE_LIST, new String[]{"PO:提供对外服务方法","IN:内部服务方法","IO:调用外部方法","SQL:SQL"});
/**
* 外部系统
*/
request.getSession().setAttribute(MonitorInterface.OUTER_SYSTEM_LIST, new String[]{"record_app:记录点滴"});
/**
* 是否异常发生
*/
request.getSession().setAttribute(MonitorInterface.IS_EXCEPTION_LIST, new String[]{"0:无异常发生","1:异常发生"});
/**
* 机器ip
*/
request.getSession().setAttribute(MonitorInterface.IP_LIST, new String[]{"10.117.24.172"});
}
/**
* 访问实时监控页面
* @return
*/
@RequestMapping(value = "/realtime", method = RequestMethod.GET)
public String realtimeGet(HttpServletRequest request) {
if(null == request.getSession().getAttribute(BaseInterface.KEY_USER)){
logger.info("访问account/login");
return "account/login";
}
/**
* 初始化session
*/
initSession(request);
logger.info("访问monitor/realtime");
return "monitor/realtime";
}
/**
* 实时监控
* @param request
* @param monitorDto
* @return
*/
@RequestMapping(value = "/realtime", method = RequestMethod.POST, produces="application/json")
public @ResponseBody String realtime(HttpServletRequest request, MonitorDto monitorDto) {
logger.info("交易监控查询,方法路径:[" + monitorDto.getMethodRoute() + "],方法类型:[" + monitorDto.getMethodType() + "]"
+ ",外部系统:[" + monitorDto.getOuterSystem() + "],是否异常发生:[" + monitorDto.getIsException() + "]"
+ ",开始时间:[" + monitorDto.getBeginTime() + "],结束时间:[" + monitorDto.getEndTime() + "]"
+ ",机器ip:[" + monitorDto.getIp() + "]"
+ ",备注字段1:[" + monitorDto.getResv1() + "],备注字段2:[" + monitorDto.getResv2() + "]"
+ ",备注字段3:[" + monitorDto.getResv3() + "]");
/**
* 判登录
*/
if(null == request.getSession().getAttribute(BaseInterface.KEY_USER)){
logger.info("请先登录!");
return "{isSuccess:false,message:'请先登录!'}";
}
/**
* 调record_app查询
*/
String url = "http://121.43.104.34:8080/record_app/monitor/count.htm";
Map mapData = new HashMap();
mapData.put("methodRoute", monitorDto.getMethodRoute());
mapData.put("methodType", processColon(monitorDto.getMethodType()));
mapData.put("outerSystem", processColon(monitorDto.getOuterSystem()));
mapData.put("isException", StringUtils.isBlank(monitorDto.getIsException())?"-1":processColon(monitorDto.getIsException()));
mapData.put("beginTime", monitorDto.getBeginTime());
mapData.put("endTime", monitorDto.getEndTime());
mapData.put("beginUsedTime", StringUtils.isBlank(monitorDto.getBeginUsedTime())?"-1":monitorDto.getBeginUsedTime());
mapData.put("endUsedTime", StringUtils.isBlank(monitorDto.getEndUsedTime())?"-1":monitorDto.getEndUsedTime());
mapData.put("ip", monitorDto.getIp());
mapData.put("resv1", monitorDto.getResv1());
mapData.put("resv2", monitorDto.getResv2());
mapData.put("resv3", monitorDto.getResv3());
return HttpClientUtils.getWebContentByPost(url, mapData, "utf-8");
}
}