package com.wgcloud.controller;
|
|
import cn.hutool.json.JSONObject;
|
import cn.hutool.json.JSONUtil;
|
import com.github.pagehelper.PageInfo;
|
import com.wgcloud.config.CommonConfig;
|
import com.wgcloud.entity.FileWarnInfo;
|
import com.wgcloud.entity.FileWarnState;
|
import com.wgcloud.entity.SystemInfo;
|
import com.wgcloud.service.*;
|
import com.wgcloud.util.HostUtil;
|
import com.wgcloud.util.PageUtil;
|
import com.wgcloud.util.ResDataUtils;
|
import com.wgcloud.util.TokenUtils;
|
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.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @version v3.3
|
* @ClassName:FileWarnInfoController.java
|
* @author: http://www.wgstart.com
|
* @date: 2021年1月16日
|
* @Description: 日志文件监控
|
* @Copyright: 2019-2021 wgcloud. All rights reserved.
|
*/
|
@Controller
|
@RequestMapping("/fileWarnInfo")
|
public class FileWarnInfoController {
|
|
|
private static final Logger logger = LoggerFactory.getLogger(FileWarnInfoController.class);
|
|
@Resource
|
private FileWarnInfoService fileWarnInfoService;
|
|
@Resource
|
private FileWarnStateService fileWarnStateService;
|
|
@Resource
|
private LogInfoService logInfoService;
|
|
@Resource
|
private SystemInfoService systemInfoService;
|
|
@Resource
|
private ExcelExportService excelExportService;
|
|
@Autowired
|
private TokenUtils tokenUtils;
|
|
@Autowired
|
private CommonConfig commonConfig;
|
|
|
/**
|
* agent查询日志监控列表
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping(value = "agentList")
|
public String agentList(@RequestBody String paramBean) {
|
JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean);
|
if (!tokenUtils.checkAgentToken(agentJsonObject)) {
|
logger.error(StaticKeys.TOKEN_ERROR);
|
return ResDataUtils.resetErrorJson(StaticKeys.TOKEN_ERROR);
|
}
|
Map<String, Object> params = new HashMap<String, Object>();
|
if (null == agentJsonObject.get("hostname") || StringUtils.isEmpty(agentJsonObject.get("hostname").toString())) {
|
return "";
|
}
|
params.put("hostname", agentJsonObject.get("hostname").toString());
|
try {
|
params.put("active", StaticKeys.ON_STATE);
|
List<FileWarnInfo> FileWarnInfoList = fileWarnInfoService.selectAllByParams(params);
|
return ResDataUtils.resetSuccessJson(FileWarnInfoList);
|
} catch (Exception e) {
|
logger.error("agent获取日志监控信息错误", e);
|
logInfoService.save("agent获取日志监控信息错误", e.toString(), StaticKeys.LOG_XTCZ);
|
return ResDataUtils.resetErrorJson(e.toString());
|
}
|
}
|
|
/**
|
* agent查询监控日志告警详情信息列表
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@ResponseBody
|
@RequestMapping(value = "agentStateListList")
|
public String agentStateListList(@RequestBody String paramBean) {
|
JSONObject agentJsonObject = (JSONObject) JSONUtil.parse(paramBean);
|
if (!tokenUtils.checkAgentToken(agentJsonObject)) {
|
logger.error(StaticKeys.TOKEN_ERROR);
|
return ResDataUtils.resetErrorJson(StaticKeys.TOKEN_ERROR);
|
}
|
Map<String, Object> params = new HashMap<String, Object>();
|
if (null == agentJsonObject.get("fileWarnId") || StringUtils.isEmpty(agentJsonObject.get("fileWarnId").toString())) {
|
return ResDataUtils.resetErrorJson(StaticKeys.REQUIRE_PARAM_ERROR);
|
}
|
params.put("fileWarnId", agentJsonObject.get("fileWarnId").toString());
|
try {
|
PageInfo pageInfo = fileWarnStateService.selectByParams(params, agentJsonObject.getInt("page"), agentJsonObject.getInt("pageSize"));
|
JSONObject pageJson = new JSONObject();
|
pageJson.set("total", pageInfo.getTotal());
|
pageJson.set("pages", pageInfo.getPages());
|
pageJson.set("page", agentJsonObject.getInt("page"));
|
pageJson.set("pageSize", agentJsonObject.getInt("pageSize"));
|
pageJson.set("list", pageInfo.getList());
|
return ResDataUtils.resetSuccessJson(pageJson);
|
} catch (Exception e) {
|
logger.error("agent获取日志监控状态信息错误", e);
|
logInfoService.save("agent获取日志监控状态信息错误", e.toString(), StaticKeys.LOG_XTCZ);
|
return ResDataUtils.resetErrorJson(e.toString());
|
}
|
}
|
|
/**
|
* 根据条件查询日志监控列表
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "list")
|
public String fileWarnInfoList(FileWarnInfo FileWarnInfo, Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
try {
|
|
StringBuffer url = new StringBuffer();
|
String hostname = null;
|
if (!StringUtils.isEmpty(FileWarnInfo.getHostname())) {
|
hostname = FileWarnInfo.getHostname();
|
params.put("hostname", hostname.trim());
|
url.append("&hostname=").append(hostname);
|
}
|
if (!StringUtils.isEmpty(FileWarnInfo.getAccount())) {
|
params.put("account", FileWarnInfo.getAccount());
|
url.append("&account=").append(FileWarnInfo.getAccount());
|
}
|
if (!StringUtils.isEmpty(FileWarnInfo.getOrderBy())) {
|
params.put("orderBy", FileWarnInfo.getOrderBy());
|
params.put("orderType", FileWarnInfo.getOrderType());
|
url.append("&orderBy=").append(FileWarnInfo.getOrderBy());
|
url.append("&orderType=").append(FileWarnInfo.getOrderType());
|
}
|
|
//校验是否需要添加过滤用户查询条件
|
HostUtil.addAccountquery(request, params);
|
|
PageInfo<FileWarnInfo> pageInfo = fileWarnInfoService.selectByParams(params, FileWarnInfo.getPage(), FileWarnInfo.getPageSize());
|
for (FileWarnInfo fileWarnInfo1 : pageInfo.getList()) {
|
fileWarnInfo1.setHostname(fileWarnInfo1.getHostname() + HostUtil.addRemark(fileWarnInfo1.getHostname()));
|
|
//设置所属用户账号 begin
|
if (StaticKeys.TRUE_VAL.equals(commonConfig.getUserInfoManage())) {
|
fileWarnInfo1.setAccount(HostUtil.getAccount(fileWarnInfo1.getHostname()));
|
}
|
//设置所属用户账号 begin
|
|
}
|
|
//设置用户列表
|
HostUtil.addAccountListModel(model);
|
|
PageUtil.initPageNumber(pageInfo, model);
|
model.addAttribute("pageUrl", "/fileWarnInfo/list?1=1" + url.toString());
|
model.addAttribute("page", pageInfo);
|
model.addAttribute("fileWarnInfo", FileWarnInfo);
|
} catch (Exception e) {
|
logger.error("查询日志监控信息错误", e);
|
logInfoService.save("查询日志监控信息错误", e.toString(), StaticKeys.LOG_XTCZ);
|
|
}
|
return "file/list";
|
}
|
|
|
/**
|
* 保存应用监控信息
|
*
|
* @param FileWarnInfo
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "save")
|
public String saveFileWarnInfo(FileWarnInfo FileWarnInfo, Model model, HttpServletRequest request) {
|
try {
|
if (StringUtils.isEmpty(FileWarnInfo.getId())) {
|
FileWarnInfo.setWarnRows("0");
|
FileWarnInfo.setFileSize("0");
|
fileWarnInfoService.save(FileWarnInfo);
|
} else {
|
fileWarnInfoService.updateById(FileWarnInfo);
|
}
|
} catch (Exception e) {
|
logger.error("保存日志监控错误", e);
|
logInfoService.save("保存日志监控错误", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "redirect:/fileWarnInfo/list";
|
}
|
|
|
/**
|
* 批量保存应用监控信息
|
*
|
* @param FileWarnInfo
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "saveBatch")
|
public String saveBatchFileWarnInfo(FileWarnInfo FileWarnInfo, Model model, HttpServletRequest request) {
|
try {
|
String[] hostnames = request.getParameterValues("hostnames");
|
if (null == hostnames || hostnames.length < 1) {
|
return "redirect:/fileWarnInfo/list";
|
}
|
for (String selectedHost : hostnames) {
|
FileWarnInfo.setHostname(selectedHost);
|
FileWarnInfo.setWarnRows("0");
|
FileWarnInfo.setFileSize("0");
|
fileWarnInfoService.save(FileWarnInfo);
|
}
|
} catch (Exception e) {
|
logger.error("批量保存日志监控错误", e);
|
logInfoService.save("批量保存日志监控错误", e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "redirect:/fileWarnInfo/list";
|
}
|
|
/**
|
* 添加
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "edit")
|
public String edit(Model model, HttpServletRequest request) {
|
String errorMsg = "添加日志监控";
|
String id = request.getParameter("id");
|
FileWarnInfo fileWarnInfo = new FileWarnInfo();
|
try {
|
|
//校验是否需要添加过滤用户查询条件
|
Map<String, Object> paramsAccount = new HashMap<String, Object>();
|
HostUtil.addAccountquery(request, paramsAccount);
|
|
List<SystemInfo> systemInfoList = systemInfoService.selectAllByParams(paramsAccount);
|
model.addAttribute("systemInfoList", systemInfoList);
|
if (StringUtils.isEmpty(id)) {
|
fileWarnInfo.setFileType("1");
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
|
return "file/add";
|
}
|
fileWarnInfo = fileWarnInfoService.selectById(id);
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
} catch (Exception e) {
|
logger.error(errorMsg, e);
|
logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "file/add";
|
}
|
|
/**
|
* 批量添加
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "editBatch")
|
public String editBatch(Model model, HttpServletRequest request) {
|
String errorMsg = "批量添加日志监控";
|
FileWarnInfo fileWarnInfo = new FileWarnInfo();
|
try {
|
List<SystemInfo> systemInfoList = systemInfoService.selectAllByParams(new HashMap<>());
|
model.addAttribute("systemInfoList", systemInfoList);
|
fileWarnInfo.setFileType("1");
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
|
} catch (Exception e) {
|
logger.error(errorMsg, e);
|
logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "file/addBatch";
|
}
|
|
/**
|
* 添加
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "view")
|
public String view(Model model, HttpServletRequest request) {
|
String errorMsg = "查看日志监控";
|
String id = request.getParameter("id");
|
FileWarnInfo fileWarnInfo = new FileWarnInfo();
|
try {
|
fileWarnInfo = fileWarnInfoService.selectById(id);
|
//提取主机备注 begin
|
fileWarnInfo.setHostname(fileWarnInfo.getHostname() + HostUtil.addRemark(fileWarnInfo.getHostname()));
|
//提取主机备注 end
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
} catch (Exception e) {
|
logger.error(errorMsg, e);
|
logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "file/view";
|
}
|
|
|
/**
|
* 查看日志告警列表
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "stateList")
|
public String stateList(FileWarnState fileWarnState, Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
try {
|
StringBuffer url = new StringBuffer();
|
FileWarnInfo fileWarnInfo = null;
|
if (!StringUtils.isEmpty(fileWarnState.getFileWarnId())) {
|
fileWarnInfo = fileWarnInfoService.selectById(fileWarnState.getFileWarnId());
|
params.put("fileWarnId", fileWarnState.getFileWarnId());
|
url.append("&fileWarnId=").append(fileWarnState.getFileWarnId());
|
}
|
PageInfo pageInfo = fileWarnStateService.selectByParams(params, fileWarnState.getPage(), fileWarnState.getPageSize());
|
PageUtil.initPageNumber(pageInfo, model);
|
model.addAttribute("pageUrl", "/fileWarnInfo/stateList?1=1" + url.toString());
|
model.addAttribute("page", pageInfo);
|
//提取主机备注 begin
|
fileWarnInfo.setHostname(fileWarnInfo.getHostname() + HostUtil.addRemark(fileWarnInfo.getHostname()));
|
//提取主机备注 end
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
} catch (Exception e) {
|
logger.error("查询日志监控信息错误", e);
|
logInfoService.save("查询日志监控信息错误", e.toString(), StaticKeys.LOG_XTCZ);
|
|
}
|
return "file/stateList";
|
}
|
|
/**
|
* 导出日志监控信息excel
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "chartExcel")
|
public void chartExcel(Model model, HttpServletRequest request, HttpServletResponse response) {
|
String errorMsg = "日志监控信息导出excel错误";
|
String id = request.getParameter("id");
|
try {
|
Map<String, Object> params = new HashMap<String, Object>();
|
if (StringUtils.isEmpty(id)) {
|
response.setContentType("text/html;charset=UTF-8");
|
response.getOutputStream().write(StaticKeys.EXCEL_PARAM_ERROR.getBytes());
|
return;
|
}
|
FileWarnInfo fileWarnInfo = fileWarnInfoService.selectById(id);
|
params.put("fileWarnId", id);
|
excelExportService.exportFileWarnStateExcel(fileWarnInfo, params, response);
|
} catch (Exception e) {
|
logger.error(errorMsg, e);
|
logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
}
|
|
/**
|
* 查看日志告警详情
|
*
|
* @param model
|
* @param request
|
* @return
|
*/
|
@RequestMapping(value = "stateView")
|
public String stateView(FileWarnState fileWarnState, Model model, HttpServletRequest request) {
|
Map<String, Object> params = new HashMap<String, Object>();
|
try {
|
fileWarnState = fileWarnStateService.selectById(fileWarnState.getId());
|
model.addAttribute("fileWarnState", fileWarnState);
|
|
FileWarnInfo fileWarnInfo = fileWarnInfoService.selectById(fileWarnState.getFileWarnId());
|
//提取主机备注 begin
|
fileWarnInfo.setHostname(fileWarnInfo.getHostname() + HostUtil.addRemark(fileWarnInfo.getHostname()));
|
//提取主机备注 end
|
model.addAttribute("fileWarnInfo", fileWarnInfo);
|
} catch (Exception e) {
|
logger.error("查询日志监控信息详情错误", e);
|
logInfoService.save("查询日志监控信息详情错误", e.toString(), StaticKeys.LOG_XTCZ);
|
|
}
|
return "file/stateView";
|
}
|
|
|
/**
|
* 删除日志监控
|
*
|
* @param id
|
* @param model
|
* @param request
|
* @param redirectAttributes
|
* @return
|
*/
|
@RequestMapping(value = "del")
|
public String delete(Model model, HttpServletRequest request, RedirectAttributes redirectAttributes) {
|
String errorMsg = "删除日志监控信息错误";
|
FileWarnInfo FileWarnInfo = new FileWarnInfo();
|
try {
|
if (!StringUtils.isEmpty(request.getParameter("id"))) {
|
String[] ids = request.getParameter("id").split(",");
|
for (String id : ids) {
|
FileWarnInfo = fileWarnInfoService.selectById(id);
|
logInfoService.save("删除日志监控:" + FileWarnInfo.getHostname(), "删除日志监控:" + FileWarnInfo.getHostname(), StaticKeys.LOG_XTCZ);
|
}
|
fileWarnInfoService.deleteById(ids);
|
}
|
} catch (Exception e) {
|
logger.error(errorMsg, e);
|
logInfoService.save(errorMsg, e.toString(), StaticKeys.LOG_XTCZ);
|
}
|
return "redirect:/fileWarnInfo/list";
|
}
|
|
}
|