|
|
package com.monitor.javaserver.ctrl;
|
|
|
|
|
|
import com.monitor.common.util.HttpRestClient;
|
|
|
import com.monitor.influxdb.InluxDBSingle;
|
|
|
import com.monitor.influxdb.contants.InfluxDBContants;
|
|
|
import com.monitor.javaserver.service.NewJavaApiInfoService;
|
|
|
import com.monitor.model.request.NewJavaApiInfoReq;
|
|
|
import com.monitor.model.response.BaseResponse;
|
|
|
import com.monitor.model.response.NewJavaApiDetailInfoRep;
|
|
|
import com.monitor.model.response.NewJavaApiInfoRep;
|
|
|
import org.apache.commons.lang.time.DateFormatUtils;
|
|
|
import org.apache.commons.lang.time.DateUtils;
|
|
|
import org.apache.commons.lang.math.RandomUtils;
|
|
|
import org.influxdb.dto.Point;
|
|
|
import org.joda.time.DateTime;
|
|
|
import org.joda.time.DateTimeZone;
|
...
|
...
|
@@ -19,10 +20,12 @@ import org.springframework.web.bind.annotation.RequestBody; |
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by wangning on 2016/10/20.
|
|
|
* java服务接口监控
|
|
|
*/
|
|
|
@Controller
|
|
|
@RequestMapping("newJavaApiInfo")
|
...
|
...
|
@@ -36,12 +39,18 @@ public class NewJavaApiInfoCtrl { |
|
|
@Autowired
|
|
|
private InluxDBSingle inluxDBSingle;
|
|
|
|
|
|
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
|
@Autowired
|
|
|
HttpRestClient httpRestClient;
|
|
|
|
|
|
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
|
|
|
|
//根据serviceName和timeInterval查询每台ip的监控信息
|
|
|
@RequestMapping("/queryByServiceType")
|
|
|
@ResponseBody
|
|
|
public BaseResponse getJavaApiStatus(@RequestBody NewJavaApiInfoReq req) {
|
|
|
|
|
|
log.info("queryByServiceType accept pram : {},{},{}",req.getServiceType(),req.getServiceName(),req.getTimeInterval());
|
|
|
//influxdb使用的是utc时间
|
|
|
DateTime endDateTime = DateTime.now(DateTimeZone.UTC);
|
|
|
DateTime startDateTime = endDateTime.minusMinutes(req.getTimeInterval());
|
|
|
String startDateStr = startDateTime.toString(DATE_TIME_FORMAT);
|
...
|
...
|
@@ -57,19 +66,22 @@ public class NewJavaApiInfoCtrl { |
|
|
return rep;
|
|
|
}
|
|
|
|
|
|
|
|
|
//根据serviceName获取平均耗时和异常次数的曲线图信息
|
|
|
@RequestMapping("/getJavaApiGraph")
|
|
|
@ResponseBody
|
|
|
public BaseResponse getJavaApiGraph(@RequestBody NewJavaApiInfoReq req) {
|
|
|
log.info("getJavaApiGraph accept pram : {},{},{}",req.getServiceType(),req.getServiceName(),req.getGraphType());
|
|
|
Map map = newJavaApiInfoService.getJavaApiGraph(req);
|
|
|
BaseResponse rep = new BaseResponse();
|
|
|
rep.setData(map);
|
|
|
return rep;
|
|
|
}
|
|
|
|
|
|
//根据serviceType获取所有ip列表
|
|
|
@RequestMapping("/getIPList")
|
|
|
@ResponseBody
|
|
|
public BaseResponse getIPList(@RequestBody NewJavaApiInfoReq req) {
|
|
|
log.info("getIPList accept pram : {},{},{}",req.getCloudType(),req.getServiceType(),req.getServiceName());
|
|
|
List<String> ipList = newJavaApiInfoService.getIPList(req);
|
|
|
BaseResponse rep = new BaseResponse();
|
|
|
rep.setData(ipList);
|
...
|
...
|
@@ -77,29 +89,82 @@ public class NewJavaApiInfoCtrl { |
|
|
}
|
|
|
|
|
|
|
|
|
//根据context和ip查询详细接口信息
|
|
|
@RequestMapping("/queryByServiceTypeAndIP")
|
|
|
@ResponseBody
|
|
|
public BaseResponse queryByServiceTypeAndIP(@RequestBody NewJavaApiInfoReq req) {
|
|
|
log.info("getIPList accept pram : {},{},{}",req.getCloudType(),req.getServiceType(),req.getServiceName(),req.getIp(),req.getStartTime(),req.getEndTime());
|
|
|
List<NewJavaApiDetailInfoRep> list = newJavaApiInfoService.queryByServiceTypeAndIP(req);
|
|
|
BaseResponse rep = new BaseResponse();
|
|
|
rep.setData(list);
|
|
|
return rep;
|
|
|
}
|
|
|
|
|
|
// @RequestMapping("/queryByServiceTypeAndIP")
|
|
|
// @ResponseBody
|
|
|
// public BaseResponse queryByServiceTypeAndIP(@RequestBody NewJavaApiInfoReq req) {
|
|
|
// List list = newJavaApiInfoService.queryByServiceTypeAndIP(req);
|
|
|
// BaseResponse rep = new BaseResponse();
|
|
|
// rep.setData(list);
|
|
|
// return rep;
|
|
|
// }
|
|
|
|
|
|
@RequestMapping("/test")
|
|
|
@ResponseBody
|
|
|
public BaseResponse test() {
|
|
|
|
|
|
String[] strs = new String[]{"192.168.102.76","172.31.31.169","172.31.28.166","172.31.17.195","172.16.6.235","172.16.6.170","10.66.0.5","10.66.0.4","10.66.0.6","10.66.0.7","10.66.0.8","10.66.0.9","10.66.0.10","10.66.0.11","10.66.0.12","10.66.0.13","10.66.0.14"};
|
|
|
|
|
|
DecimalFormat df = new DecimalFormat("######0.00");
|
|
|
for(int i = 0;i<strs.length;i++){
|
|
|
String ip = strs[i];
|
|
|
|
|
|
Double CPU_UTIL_USER = Double.parseDouble(df.format(RandomUtils.nextDouble()));
|
|
|
Double MEMORY_SIZE_AVAILABLE = Double.parseDouble(df.format(RandomUtils.nextDouble() * 1000));
|
|
|
Double MEMORY_SIZE_TOTAL = Double.parseDouble(df.format(RandomUtils.nextDouble() * 1000));
|
|
|
Double NET_IF_IN = Double.parseDouble(df.format(RandomUtils.nextDouble() * 1000));
|
|
|
Double NET_IF_OUT = Double.parseDouble(df.format(RandomUtils.nextDouble() * 1000));
|
|
|
Point point = Point.measurement("vm_info")
|
|
|
.tag("ip",ip)
|
|
|
.addField("CPU_UTIL_USER",CPU_UTIL_USER).addField("MEMORY_SIZE_AVAILABLE",MEMORY_SIZE_AVAILABLE).addField("MEMORY_SIZE_TOTAL",MEMORY_SIZE_TOTAL)
|
|
|
.addField("NET_IF_IN",NET_IF_IN).addField("NET_IF_OUT",NET_IF_OUT)
|
|
|
.build();
|
|
|
inluxDBSingle.getInfluxDBByName(InfluxDBContants.AWS).getInfluxDB()
|
|
|
.write(InfluxDBContants.ZABBIX, "default", point);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
@RequestMapping("/test2")
|
|
|
@ResponseBody
|
|
|
public BaseResponse test2() {
|
|
|
|
|
|
String[] strs = new String[]{"192.168.102.76","172.31.31.169","172.31.28.166","172.31.17.195","172.16.6.235","172.16.6.170","10.66.0.5","10.66.0.4","10.66.0.6","10.66.0.7","10.66.0.8","10.66.0.9","10.66.0.10","10.66.0.11","10.66.0.12","10.66.0.13","10.66.0.14"};
|
|
|
for(int i = 0;i<strs.length;i++){
|
|
|
String ip = strs[i];
|
|
|
Point point = Point.measurement("service_access")
|
|
|
.tag("context","gateway").tag("event","/gateway").tag("host","/gateway")
|
|
|
.tag("hostAddress",ip).tag("src_service","app.product.promotion").tag("status_code","200")
|
|
|
.addField("cost", RandomUtils.nextInt(199) + 2000).addField("ip",ip)
|
|
|
.addField("stack","Total Delay [15004ms] /gateway +---[15004ms] - com.yoho.core.common.monitor.ThreadProfileInterceptor.preHandle - [enter:1476930300814,exit:1476930315818] +---[15004ms] - app.product.data. - [enter:1476930300814,exit:1476930315818]")
|
|
|
.build();
|
|
|
inluxDBSingle.getInfluxDBByName(InfluxDBContants.AWS).getInfluxDB()
|
|
|
.write(InfluxDBContants.YOHO_EVENT, "default", point);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
@RequestMapping("/test")
|
|
|
|
|
|
@RequestMapping("/test3")
|
|
|
@ResponseBody
|
|
|
public BaseResponse getJavaApiStatus() {
|
|
|
|
|
|
Point point = Point.measurement("service_server_exception")
|
|
|
.addField("ip","172.31.28.166")
|
|
|
.addField("stack","234523453")
|
|
|
.build();
|
|
|
inluxDBSingle.getInfluxDBByName(InfluxDBContants.AWS).getInfluxDB()
|
|
|
.write(InfluxDBContants.YOMO_MONITOR, "default", point);
|
|
|
public BaseResponse test3() {
|
|
|
String[] strs = new String[]{"192.168.102.76","172.31.31.169","172.31.28.166","172.31.17.195","172.16.6.235","172.16.6.170","10.66.0.5","10.66.0.4","10.66.0.6","10.66.0.7","10.66.0.8","10.66.0.9","10.66.0.10","10.66.0.11","10.66.0.12","10.66.0.13","10.66.0.14"};
|
|
|
|
|
|
for(int i = 0;i<strs.length;i++){
|
|
|
String ip = strs[i];
|
|
|
Point point = Point.measurement("service_server_exception")
|
|
|
.tag("context","gateway").tag("event","/gateway").tag("host","/brower/favorite/isFavorite")
|
|
|
.tag("hostAddress",ip).tag("service_name","brower/favorite/isFavorite")
|
|
|
.addField("ip",ip)
|
|
|
.addField("stack","org.apache.catalina\\n.connector.ClientAbortException: java.io.IOException: 断开的管道\\n\\tat org.apache.catalina.connector.OutputBuffer\\n.realWriteBytes(OutputBuffer.java:393)\\n\\tat org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk\\n.java:426)\\n\\tat org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:342)\\n\\tat org\\n.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:317)\\n\\tat org.apache.catalina.connector\\n.CoyoteOutputStream.flush(CoyoteOutputStream.java:110)\\n\\tat com.fasterxml.jackson.core.json.UTF8JsonGenerator\\n.flush(UTF8JsonGenerator.java:1022)\\n\\tat com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter\\n.java:891)\\n\\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal\\n(AbstractJackson2HttpMessageConverter.java:264)\\n\\tat org.springframework.http.converter.AbstractGenericHttpMessageConverter\\n.write(AbstractGenericHttpMessageConverter.java:100)\\n\\tat org.springframework.web.servlet.mvc.method\\n.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor\\n.java:202)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor\\n.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:133)\\n\\tat org.springframework\\n.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor\\n.java:165)\\n\\tat org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue\\n(HandlerMethodReturnValueHandlerComposite.java:80)\\n\\tat org.springframework.web.servlet.mvc.method.annotation\\n.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126)\\n\\tat org.springframework\\n.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter\\n.java:806)\\n\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal\\n(RequestMappingHandlerAdapter.java:729)\\n\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter\\n.handle(AbstractHandlerMethodAdapter.java:85)\\n\\tat org.springframework.web.servlet.DispatcherServlet\\n.doDispatch(DispatcherServlet.java:959)\\n\\tat org.springframework.web.servlet.DispatcherServlet.doService\\n(DispatcherServlet.java:893)\\n\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet\\n.java:970)\\n\\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)\\n\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:648)\\n\\tat org.springframework.web.servlet\\n.FrameworkServlet.service(FrameworkServlet.java:846)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet\\n.java:729)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain\\n.java:291)\\n\\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java\\n:206)\\n\\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)\\n\\tat org.apache.catalina\\n.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)\\n\\tat org.apache.catalina\\n.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\\n\\tat org.springframework.web\\n.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)\\n\\tat org.springframework\\n.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\\n\\tat org.apache.catalina.core\\n.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)\\n\\tat org.apache.catalina.core\\n.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)\\n\\tat org.apache.catalina.core.StandardWrapperValve\\n.invoke(StandardWrapperValve.java:217)\\n\\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve\\n.java:106)\\n\\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502\\n)\\n\\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)\\n\\tat org.apache\\n.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)\\n\\tat org.apache.catalina.core.StandardEngineValve\\n.invoke(StandardEngineValve.java:88)\\n\\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter\\n.java:518)\\n\\tat org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java\\n:1091)\\n\\tat org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java\\n:673)\\n\\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)\\n\\tat\\n org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)\\n\\tat java.util.concurrent\\n.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)\\n\\tat java.util.concurrent.ThreadPoolExecutor$Worker\\n.run(ThreadPoolExecutor.java:617)\\n\\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run\\n(TaskThread.java:61)\\n\\tat java.lang.Thread.run(Thread.java:745)\\nCaused by: java.io.IOException: 断开\\n的管道\\n\\tat sun.nio.ch.FileDispatcherImpl.write0(Native Method)\\n\\tat sun.nio.ch.SocketDispatcher.write\\n(SocketDispatcher.java:47)\\n\\tat sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)\\n\\tat sun.nio\\n.ch.IOUtil.write(IOUtil.java:65)\\n\\tat sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471\\n)\\n\\tat org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:124)\\n\\tat org.apache.tomcat.util\\n.net.NioBlockingSelector.write(NioBlockingSelector.java:101)\\n\\tat org.apache.tomcat.util.net.NioSelectorPool\\n.write(NioSelectorPool.java:172)\\n\\tat org.apache.coyote.http11.InternalNioOutputBuffer.writeToSocket\\n(InternalNioOutputBuffer.java:139)\\n\\tat org.apache.coyote.http11.InternalNioOutputBuffer.addToBB(InternalNioOutputBuffer\\n.java:197)\\n\\tat org.apache.coyote.http11.InternalNioOutputBuffer.access$000(InternalNioOutputBuffer\\n.java:41)\\n\\tat org.apache.coyote.http11.InternalNioOutputBuffer$SocketOutputBuffer.doWrite(InternalNioOutputBuffer\\n.java:320)\\n\\tat org.apache.coyote.http11.filters.ChunkedOutputFilter.doWrite(ChunkedOutputFilter.java\\n:118)\\n\\tat org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:256)\\n\\tat\\n org.apache.coyote.Response.doWrite(Response.java:501)\\n\\tat org.apache.catalina.connector.OutputBuffer\\n.realWriteBytes(OutputBuffer.java:388)\\n\\t... 47 more\\n")
|
|
|
.build();
|
|
|
inluxDBSingle.getInfluxDBByName(InfluxDBContants.AWS).getInfluxDB()
|
|
|
.write(InfluxDBContants.YOMO_MONITOR, "default", point);
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|