package com.wgcloud.controller;
|
|
import cn.hutool.json.JSONUtil;
|
import com.github.pagehelper.PageInfo;
|
import com.wgcloud.entity.AccountInfo;
|
import com.wgcloud.service.*;
|
import com.wgcloud.util.HostUtil;
|
import com.wgcloud.util.ThreadPoolUtil;
|
import com.wgcloud.util.staticvar.StaticKeys;
|
import org.apache.commons.lang3.StringUtils;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.Model;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
/**
|
* @version v3.3
|
* @ClassName:DashboardController.java
|
* @author: http://www.wgstart.com
|
* @date: 2021年1月16日
|
* @Description: 监控概要页面显示
|
* @Copyright: 2019-2021 wgcloud. All rights reserved.
|
*/
|
@Controller
|
@RequestMapping(value = "/dash")
|
public class DashboardController {
|
|
|
private void testThread() {
|
Runnable runnable = () -> {
|
logger.info("DashboardCotroller----------testThread");
|
};
|
ThreadPoolUtil.executor.execute(runnable);
|
}
|
|
|
private static final Logger logger = LoggerFactory.getLogger(DashboardController.class);
|
@Resource
|
private DbTableService dbTableService;
|
@Resource
|
private PortInfoService portInfoService;
|
@Resource
|
private DceInfoService dceInfoService;
|
@Resource
|
private DbInfoService dbInfoService;
|
@Resource
|
private SystemInfoService systemInfoService;
|
@Resource
|
private AppInfoService appInfoService;
|
@Resource
|
private FileWarnInfoService fileWarnInfoService;
|
@Resource
|
private DockerInfoService dockerInfoService;
|
@Resource
|
private LogInfoService logInfoService;
|
@Autowired
|
private HeathMonitorService heathMonitorService;
|
@Autowired
|
private TaskUtilService taskUtilService;
|
@Resource
|
private DashboardService dashboardService;
|
|
/**
|
* 监控概要页面数据处理
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "main")
|
public String mainList(Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
try {
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int totalSystemInfoSize = systemInfoService.countByParams(params);
|
//监控主机总量
|
model.addAttribute("totalSystemInfoSize", totalSystemInfoSize);
|
params.put("state", StaticKeys.DOWN_STATE);
|
int hostDownSize = systemInfoService.countByParams(params);
|
//下线主机数量
|
model.addAttribute("hostDownSize", hostDownSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int totalSizeApp = appInfoService.countByParams(params);
|
//进程总数量
|
model.addAttribute("totalSizeApp", totalSizeApp);
|
int dockerSize = dockerInfoService.countByParams(params);
|
//docker总数量
|
model.addAttribute("dockerSize", dockerSize);
|
|
params.put("state", StaticKeys.DOWN_STATE);
|
int downAppSize = appInfoService.countByParams(params);
|
//监控进程下线数量
|
model.addAttribute("downAppSize", downAppSize);
|
int downDockerSize = dockerInfoService.countByParams(params);
|
//监控docker下线数量
|
model.addAttribute("downDockerSize", downDockerSize);
|
|
//设置监控概要页面的内存和cpu饼图
|
dashboardService.setPieChart(model, totalSystemInfoSize, request);
|
|
//设置监控概要页面腰线和波浪图
|
dashboardService.setMiddleData(model, request);
|
|
//设置监控概要页面,系统核心参数信息
|
dashboardService.setMiddleApplicationData(model);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int portSize = portInfoService.countByParams(params);
|
//端口总数量
|
model.addAttribute("portSize", portSize);
|
params.put("state", StaticKeys.DOWN_STATE);
|
int portDownSize = portInfoService.countByParams(params);
|
//端口下线数量
|
model.addAttribute("portDownSize", portDownSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int dceSize = dceInfoService.countByParams(params);
|
//数通设备总数量
|
model.addAttribute("dceSize", dceSize);
|
params.put("resTimes", -1);
|
int dceDownSize = dceInfoService.countByParams(params);
|
//数通设备下线数量
|
model.addAttribute("dceDownSize", dceDownSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
Integer fileWarnSize = fileWarnInfoService.countByParams(params);
|
//日志监控总量
|
model.addAttribute("fileWarnSize", fileWarnSize == null ? 0 : fileWarnSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
PageInfo pageInfoDbTableList = dbTableService.selectByParams(params, 1, 30);
|
//最新30张表数据量
|
model.addAttribute("dbTableList", JSONUtil.parseArray(pageInfoDbTableList.getList()));
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int dbInfoSize = dbInfoService.countByParams(params);
|
//数据源数量
|
model.addAttribute("dbInfoSize", dbInfoSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
params.put("dbState", StaticKeys.DOWN_STATE);
|
int dbInfoDownSize = dbInfoService.countByParams(params);
|
//失败数据源数量
|
model.addAttribute("dbInfoDownSize", dbInfoDownSize);
|
|
params.clear();
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
int heathSize = heathMonitorService.countByParams(params);
|
//服务接口数量
|
model.addAttribute("heathSize", heathSize);
|
params.put("heathStatus", StaticKeys.HEATH_STATUS_200);
|
int heath200Size = heathMonitorService.countByParams(params);
|
model.addAttribute("heath200Size", heath200Size);
|
//服务接口失败数量
|
model.addAttribute("heatherrSize", (heathSize - heath200Size));
|
|
//普通用户需要实时计算磁盘总容量 begin
|
AccountInfo accountInfo = HostUtil.getAccountByRequest(request);
|
if (null != accountInfo) {
|
if (StaticKeys.ROLE_USER.equals(accountInfo.getRole())) {
|
model.addAttribute("sumDiskSizeCache", taskUtilService.sumDiskSizeCache(request));
|
}
|
}
|
//普通用户需要实时计算磁盘总容量 end
|
|
//设置监控概要页面环图
|
dashboardService.setHuantu(model, totalSystemInfoSize, totalSizeApp, dockerSize, portSize, dceSize, fileWarnSize,
|
dbInfoSize, heathSize, request);
|
} catch (Exception e) {
|
logger.error("监控概要页面信息异常", e);
|
logInfoService.save("监控概要页面信息异常", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
if (request.getParameter(StaticKeys.DASH_VIEW_ACCOUNT) != null) {
|
return "dashView/index";
|
} else {
|
return "index";
|
}
|
}
|
|
|
/**
|
* 给主机画像
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "hostDraw")
|
public String hostDraw(Model model, HttpServletRequest request) {
|
String id = request.getParameter("id");
|
if (StringUtils.isEmpty(id)) {
|
return "error/500";
|
}
|
try {
|
dashboardService.hostDraw(model, id);
|
} catch (Exception e) {
|
logger.error("主机画像错误", e);
|
logInfoService.save("主机画像错误", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "hostDraw/view";
|
}
|
|
|
}
|