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"); } }