...
This commit is contained in:
parent
a87bb573e9
commit
f4939b34f4
|
@ -1,8 +1,6 @@
|
||||||
package io.renren.modules.gateway.controller;
|
package io.renren.modules.gateway.controller;
|
||||||
|
|
||||||
|
|
||||||
import cn.hutool.core.net.URLEncoder;
|
|
||||||
import cn.hutool.core.util.URLUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import io.renren.modules.gateway.service.MonitorServiceV2;
|
import io.renren.modules.gateway.service.MonitorServiceV2;
|
||||||
|
@ -15,19 +13,16 @@ import io.renren.modules.sys.dao.SysDeptDao;
|
||||||
import io.renren.modules.sys.entity.SysDeptEntity;
|
import io.renren.modules.sys.entity.SysDeptEntity;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.log4j.Log4j;
|
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.http.*;
|
import org.springframework.http.HttpEntity;
|
||||||
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
|
import org.springframework.http.HttpHeaders;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.http.HttpMethod;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.client.HttpMessageConverterExtractor;
|
|
||||||
import org.springframework.web.client.RequestCallback;
|
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
|
@ -66,14 +61,14 @@ public class MonitorController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private MonitorServiceV2 monitorServiceV2;
|
private MonitorServiceV2 monitorServiceV2;
|
||||||
|
|
||||||
// @RequestMapping("/metrics/**")
|
// @RequestMapping("/metrics/**")
|
||||||
void forward(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
void forward(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||||
//类似nginx匹配前缀
|
//类似nginx匹配前缀
|
||||||
String location = "/juapi";
|
String location = "/juapi";
|
||||||
|
|
||||||
String requestURI = request.getRequestURI();
|
String requestURI = request.getRequestURI();
|
||||||
requestURI = requestURI.replace( context_path,"");
|
requestURI = requestURI.replace(context_path, "");
|
||||||
String url = gatewayDomain + location + requestURI ;
|
String url = gatewayDomain + location + requestURI;
|
||||||
if (StringUtils.isNotBlank(request.getQueryString())) {
|
if (StringUtils.isNotBlank(request.getQueryString())) {
|
||||||
url = url + "?" + request.getQueryString();
|
url = url + "?" + request.getQueryString();
|
||||||
}
|
}
|
||||||
|
@ -81,7 +76,7 @@ public class MonitorController {
|
||||||
|
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
Enumeration<String> headerNames = request.getHeaderNames();
|
Enumeration<String> headerNames = request.getHeaderNames();
|
||||||
while (headerNames.hasMoreElements()){
|
while (headerNames.hasMoreElements()) {
|
||||||
String element = headerNames.nextElement();
|
String element = headerNames.nextElement();
|
||||||
headers.add(element, request.getHeader(element));
|
headers.add(element, request.getHeader(element));
|
||||||
}
|
}
|
||||||
|
@ -89,17 +84,17 @@ public class MonitorController {
|
||||||
InputStream in = request.getInputStream();
|
InputStream in = request.getInputStream();
|
||||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
int len = 1024;
|
int len = 1024;
|
||||||
byte tmp [] = new byte[len];
|
byte tmp[] = new byte[len];
|
||||||
int i ;
|
int i;
|
||||||
while((i=in.read(tmp, 0, len))>0){
|
while ((i = in.read(tmp, 0, len)) > 0) {
|
||||||
baos.write(tmp, 0, i);
|
baos.write(tmp, 0, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpEntity<byte[]> httpEntity = null;
|
HttpEntity<byte[]> httpEntity = null;
|
||||||
if (baos.size() > 0){
|
if (baos.size() > 0) {
|
||||||
|
|
||||||
httpEntity = new HttpEntity(baos.toByteArray(), headers);
|
httpEntity = new HttpEntity(baos.toByteArray(), headers);
|
||||||
}else {
|
} else {
|
||||||
httpEntity = new HttpEntity(headers);
|
httpEntity = new HttpEntity(headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,13 +113,13 @@ public class MonitorController {
|
||||||
|
|
||||||
@GetMapping("/metrics/**")
|
@GetMapping("/metrics/**")
|
||||||
@ApiOperation("前端访问图片请求转发")
|
@ApiOperation("前端访问图片请求转发")
|
||||||
public void ford(HttpServletRequest request, HttpServletResponse response){
|
public void ford(HttpServletRequest request, HttpServletResponse response) {
|
||||||
|
|
||||||
String location = "/juapi";
|
String location = "/juapi";
|
||||||
|
|
||||||
String requestURI = request.getRequestURI();
|
String requestURI = request.getRequestURI();
|
||||||
requestURI = requestURI.replace( context_path,"");
|
requestURI = requestURI.replace(context_path, "");
|
||||||
String fordUrl = gatewayDomain + location + requestURI ;
|
String fordUrl = gatewayDomain + location + requestURI;
|
||||||
if (StringUtils.isNotBlank(request.getQueryString())) {
|
if (StringUtils.isNotBlank(request.getQueryString())) {
|
||||||
fordUrl = fordUrl + "?" + request.getQueryString();
|
fordUrl = fordUrl + "?" + request.getQueryString();
|
||||||
}
|
}
|
||||||
|
@ -157,34 +152,34 @@ public class MonitorController {
|
||||||
len = inputStream.read(buffer);
|
len = inputStream.read(buffer);
|
||||||
}
|
}
|
||||||
inputStream.close();
|
inputStream.close();
|
||||||
}catch(Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/queryGroupByAbility")
|
@GetMapping("/gateway-monitor/queryGroupByAbility")
|
||||||
@ApiOperation("统计数据按能力归集")
|
@ApiOperation("统计数据按能力归集")
|
||||||
public Result queryGroupByAbility(String query, String time){
|
public Result queryGroupByAbility(String query, String time) {
|
||||||
String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time;
|
String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time;
|
||||||
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
||||||
HashMap body = entity.getBody();
|
HashMap body = entity.getBody();
|
||||||
HashMap data = (HashMap) body.get("data");
|
HashMap data = (HashMap) body.get("data");
|
||||||
if (data != null){
|
if (data != null) {
|
||||||
List<HashMap> result = (List) data.get("result");
|
List<HashMap> result = (List) data.get("result");
|
||||||
ArrayList<Map> results = new ArrayList<>();
|
ArrayList<Map> results = new ArrayList<>();
|
||||||
ArrayList<Long> abilityIds = new ArrayList<>();
|
ArrayList<Long> abilityIds = new ArrayList<>();
|
||||||
for (HashMap hashMap : result) {
|
for (HashMap hashMap : result) {
|
||||||
Map metric = (Map) hashMap.get("metric");
|
Map metric = (Map) hashMap.get("metric");
|
||||||
if (metric != null && metric.get("groupInfo") != null){
|
if (metric != null && metric.get("groupInfo") != null) {
|
||||||
List value = (List) hashMap.get("value");
|
List value = (List) hashMap.get("value");
|
||||||
if (value.size() == 2){
|
if (value.size() == 2) {
|
||||||
metric.put("count", value.get(1));
|
metric.put("count", value.get(1));
|
||||||
try{
|
try {
|
||||||
Long groupInfo = Long.valueOf((String) metric.get("groupInfo"));
|
Long groupInfo = Long.valueOf((String) metric.get("groupInfo"));
|
||||||
abilityIds.add(groupInfo);
|
abilityIds.add(groupInfo);
|
||||||
metric.put("groupInfo", groupInfo);
|
metric.put("groupInfo", groupInfo);
|
||||||
results.add(metric);
|
results.add(metric);
|
||||||
}catch (Exception e) {
|
} catch (Exception e) {
|
||||||
//忽略
|
//忽略
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,9 +206,9 @@ public class MonitorController {
|
||||||
map.put("type", resourceEntity.getType());
|
map.put("type", resourceEntity.getType());
|
||||||
map.put("apiUrl", resourceEntity.getApiUrl());
|
map.put("apiUrl", resourceEntity.getApiUrl());
|
||||||
LambdaQueryWrapper<AttrEntity> attrQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<AttrEntity> attrQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
attrQueryWrapper.select(AttrEntity::getAttrType,AttrEntity::getAttrValue)
|
attrQueryWrapper.select(AttrEntity::getAttrType, AttrEntity::getAttrValue)
|
||||||
.eq(AttrEntity::getDataResourceId,groupInfo)
|
.eq(AttrEntity::getDataResourceId, groupInfo)
|
||||||
.eq(AttrEntity::getAttrType,"服务商名")
|
.eq(AttrEntity::getAttrType, "服务商名")
|
||||||
.eq(AttrEntity::getDelFlag, 0);
|
.eq(AttrEntity::getDelFlag, 0);
|
||||||
AttrEntity attrEntity = attrDao.selectOne(attrQueryWrapper);
|
AttrEntity attrEntity = attrDao.selectOne(attrQueryWrapper);
|
||||||
if (attrEntity.getAttrValue() != null) {
|
if (attrEntity.getAttrValue() != null) {
|
||||||
|
@ -234,27 +229,27 @@ public class MonitorController {
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/queryGroupByDepartment")
|
@GetMapping("/gateway-monitor/queryGroupByDepartment")
|
||||||
@ApiOperation("统计数据按部门归集")
|
@ApiOperation("统计数据按部门归集")
|
||||||
public Result queryGroupByDepartment(String query, String time){
|
public Result queryGroupByDepartment(String query, String time) {
|
||||||
String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time;
|
String url = gatewayDomain + "/juapi/metrics/api/v1/query?query={query}" + "&time=" + time;
|
||||||
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
||||||
HashMap body = entity.getBody();
|
HashMap body = entity.getBody();
|
||||||
HashMap data = (HashMap) body.get("data");
|
HashMap data = (HashMap) body.get("data");
|
||||||
if (data != null){
|
if (data != null) {
|
||||||
List<HashMap> result = (List) data.get("result");
|
List<HashMap> result = (List) data.get("result");
|
||||||
ArrayList<Map> results = new ArrayList<>();
|
ArrayList<Map> results = new ArrayList<>();
|
||||||
ArrayList<Long> abilityIds = new ArrayList<>();
|
ArrayList<Long> abilityIds = new ArrayList<>();
|
||||||
for (HashMap hashMap : result) {
|
for (HashMap hashMap : result) {
|
||||||
Map metric = (Map) hashMap.get("metric");
|
Map metric = (Map) hashMap.get("metric");
|
||||||
if (metric != null && metric.get("deptInfo") != null){
|
if (metric != null && metric.get("deptInfo") != null) {
|
||||||
List value = (List) hashMap.get("value");
|
List value = (List) hashMap.get("value");
|
||||||
if (value.size() == 2){
|
if (value.size() == 2) {
|
||||||
metric.put("count", value.get(1));
|
metric.put("count", value.get(1));
|
||||||
try {
|
try {
|
||||||
Long groupInfo = Long.valueOf((String) metric.get("deptInfo"));
|
Long groupInfo = Long.valueOf((String) metric.get("deptInfo"));
|
||||||
abilityIds.add(groupInfo);
|
abilityIds.add(groupInfo);
|
||||||
metric.put("deptInfo", groupInfo);
|
metric.put("deptInfo", groupInfo);
|
||||||
results.add(metric);
|
results.add(metric);
|
||||||
}catch (Exception e) {
|
} catch (Exception e) {
|
||||||
//忽略
|
//忽略
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,7 +259,7 @@ public class MonitorController {
|
||||||
|
|
||||||
if (!results.isEmpty()) {
|
if (!results.isEmpty()) {
|
||||||
LambdaQueryWrapper<SysDeptEntity> queryWrapper = new QueryWrapper<SysDeptEntity>().lambda();
|
LambdaQueryWrapper<SysDeptEntity> queryWrapper = new QueryWrapper<SysDeptEntity>().lambda();
|
||||||
queryWrapper.select(SysDeptEntity::getName,SysDeptEntity::getId)
|
queryWrapper.select(SysDeptEntity::getName, SysDeptEntity::getId)
|
||||||
.in(SysDeptEntity::getId, abilityIds);
|
.in(SysDeptEntity::getId, abilityIds);
|
||||||
List<SysDeptEntity> entities = sysDeptDao.selectList(queryWrapper);
|
List<SysDeptEntity> entities = sysDeptDao.selectList(queryWrapper);
|
||||||
for (Map map : results) {
|
for (Map map : results) {
|
||||||
|
@ -287,7 +282,7 @@ public class MonitorController {
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/queryGroupByDeptInRange")
|
@GetMapping("/gateway-monitor/queryGroupByDeptInRange")
|
||||||
@ApiOperation("统计数据按部门显示趋势")
|
@ApiOperation("统计数据按部门显示趋势")
|
||||||
public Result queryGroupByDeptInRange(String query, String start, String end, String step){
|
public Result queryGroupByDeptInRange(String query, String start, String end, String step) {
|
||||||
String url = gatewayDomain + "/juapi/metrics/api/v1/query_range?query={query}" +
|
String url = gatewayDomain + "/juapi/metrics/api/v1/query_range?query={query}" +
|
||||||
"&start=" + start +
|
"&start=" + start +
|
||||||
"&end=" + end +
|
"&end=" + end +
|
||||||
|
@ -296,34 +291,32 @@ public class MonitorController {
|
||||||
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
ResponseEntity<HashMap> entity = restTemplate.getForEntity(url, HashMap.class, query);
|
||||||
HashMap body = entity.getBody();
|
HashMap body = entity.getBody();
|
||||||
HashMap data = (HashMap) body.get("data");
|
HashMap data = (HashMap) body.get("data");
|
||||||
if (data != null){
|
if (data != null) {
|
||||||
List<HashMap> result = (List) data.get("result");
|
List<HashMap> result = (List) data.get("result");
|
||||||
ArrayList<HashMap> results = new ArrayList<>(result.size());
|
ArrayList<HashMap> results = new ArrayList<>(result.size());
|
||||||
for (HashMap hashMap : result) {
|
for (HashMap hashMap : result) {
|
||||||
Map metric = (Map) hashMap.get("metric");
|
Map metric = (Map) hashMap.get("metric");
|
||||||
if (metric != null && metric.get("deptInfo") != null){
|
if (metric != null && metric.get("deptInfo") != null) {
|
||||||
try{
|
try {
|
||||||
Long filterId = Long.valueOf((String) metric.get("deptInfo"));
|
Long filterId = Long.valueOf((String) metric.get("deptInfo"));
|
||||||
SysDeptEntity sysDeptEntity = sysDeptDao.selectById(filterId);
|
SysDeptEntity sysDeptEntity = sysDeptDao.selectById(filterId);
|
||||||
if (sysDeptEntity != null && StringUtils.isNotBlank(sysDeptEntity.getName())){
|
if (sysDeptEntity != null && StringUtils.isNotBlank(sysDeptEntity.getName())) {
|
||||||
metric.put("name", sysDeptEntity.getName());
|
metric.put("name", sysDeptEntity.getName());
|
||||||
results.add(hashMap);
|
results.add(hashMap);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.warn("数据异常忽略", e);
|
log.warn("数据异常忽略:{}", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Result.success(results);
|
return Result.success(results);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.success(Collections.emptyList());
|
return Result.success(Collections.emptyList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/queryGroupCount")
|
@GetMapping("/gateway-monitor/queryGroupCount")
|
||||||
@ApiOperation("查询总api数量")
|
@ApiOperation("查询总api数量")
|
||||||
public Result queryGroupCount(){
|
public Result queryGroupCount() {
|
||||||
LambdaQueryWrapper<ResourceEntity> queryWrapper = new QueryWrapper<ResourceEntity>().lambda();
|
LambdaQueryWrapper<ResourceEntity> queryWrapper = new QueryWrapper<ResourceEntity>().lambda();
|
||||||
queryWrapper.isNotNull(ResourceEntity::getGroupId).eq(ResourceEntity::getDelFlag, 0);
|
queryWrapper.isNotNull(ResourceEntity::getGroupId).eq(ResourceEntity::getDelFlag, 0);
|
||||||
Integer selectCount = resourceDao.selectCount(queryWrapper);
|
Integer selectCount = resourceDao.selectCount(queryWrapper);
|
||||||
|
@ -332,23 +325,23 @@ public class MonitorController {
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/getCallCount")
|
@GetMapping("/gateway-monitor/getCallCount")
|
||||||
@ApiOperation("查询总api调用总量")
|
@ApiOperation("查询总api调用总量")
|
||||||
public Result getCallCount(){
|
public Result getCallCount() {
|
||||||
Long callCount = monitorServiceV2.getCallCount();
|
Long callCount = monitorServiceV2.getCallCount();
|
||||||
return Result.success(callCount);
|
return Result.success(callCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/test/get")
|
@GetMapping("/gateway-monitor/test/get")
|
||||||
public Result testGet(){
|
public Result testGet() {
|
||||||
return Result.success(null);
|
return Result.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/test/404")
|
@GetMapping("/gateway-monitor/test/404")
|
||||||
public void test404(HttpServletResponse response){
|
public void test404(HttpServletResponse response) {
|
||||||
response.setStatus(404);
|
response.setStatus(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/gateway-monitor/test/500")
|
@GetMapping("/gateway-monitor/test/500")
|
||||||
public void test500(HttpServletResponse response){
|
public void test500(HttpServletResponse response) {
|
||||||
response.setStatus(500);
|
response.setStatus(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue