package com.wgcloud.service;
|
|
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageInfo;
|
import com.wgcloud.entity.SnmpInfo;
|
import com.wgcloud.entity.SnmpInterfaceInfo;
|
import com.wgcloud.entity.SnmpState;
|
import com.wgcloud.mapper.SnmpInfoMapper;
|
import com.wgcloud.mapper.SnmpInterfaceInfoMapper;
|
import com.wgcloud.util.HostUtil;
|
import com.wgcloud.util.SnmpUtil;
|
import com.wgcloud.util.UUIDUtil;
|
import com.wgcloud.util.msg.WarnMailUtil;
|
import com.wgcloud.util.msg.WarnPools;
|
import com.wgcloud.util.staticvar.BatchData;
|
import com.wgcloud.util.staticvar.StaticKeys;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @version v3.3
|
* @ClassName:SnmpInfoService.java
|
* @author: http://www.wgstart.com
|
* @date: 2022年4月10日
|
* @Description: SnmpInfoService.java
|
* @Copyright: 2019-2021 wgcloud. All rights reserved.
|
*/
|
@Service
|
public class SnmpInfoService {
|
|
public PageInfo selectByParams(Map<String, Object> params, int currPage, int pageSize) throws Exception {
|
PageHelper.startPage(currPage, pageSize);
|
List<SnmpInfo> list = snmpInfoMapper.selectByParams(params);
|
PageInfo<SnmpInfo> pageInfo = new PageInfo<SnmpInfo>(list);
|
return pageInfo;
|
}
|
|
public void save(SnmpInfo SnmpInfo) throws Exception {
|
SnmpInfo.setId(UUIDUtil.getUUID());
|
SnmpInfo.setCreateTime(new Date());
|
//第一次保存,初始化一些数据
|
SnmpInfo.setState(StaticKeys.ON_STATE);
|
SnmpInfo.setSnmpUnit(StaticKeys.BYTES_STR);
|
SnmpInfo.setBytesSent("0");
|
SnmpInfo.setBytesRecv("0");
|
SnmpInfo.setSentAvg("0");
|
SnmpInfo.setRecvAvg("0");
|
SnmpInfo.setCpuPer("0");
|
SnmpInfo.setMemPer("0");
|
if (StringUtils.isEmpty(SnmpInfo.getHostname())) {
|
SnmpInfo.setHostname(SnmpInfo.getHostname().trim());
|
}
|
if (StringUtils.isEmpty(SnmpInfo.getRecvOID())) {
|
SnmpInfo.setRecvOID(SnmpInfo.getRecvOID().trim());
|
}
|
if (StringUtils.isEmpty(SnmpInfo.getSentOID())) {
|
SnmpInfo.setSentOID(SnmpInfo.getSentOID().trim());
|
}
|
if (StringUtils.isEmpty(SnmpInfo.getCpuPerOID())) {
|
SnmpInfo.setCpuPerOID(SnmpInfo.getCpuPerOID().trim());
|
}
|
if (StringUtils.isEmpty(SnmpInfo.getMemSizeOID())) {
|
SnmpInfo.setMemSize(SnmpInfo.getMemSizeOID().trim());
|
}
|
if (StringUtils.isEmpty(SnmpInfo.getMemTotalSizeOID())) {
|
SnmpInfo.setMemTotalSizeOID(SnmpInfo.getMemTotalSizeOID().trim());
|
}
|
snmpInfoMapper.save(SnmpInfo);
|
}
|
|
public int countByParams(Map<String, Object> params) throws Exception {
|
return snmpInfoMapper.countByParams(params);
|
}
|
|
@Transactional
|
public int deleteById(String[] id) throws Exception {
|
return snmpInfoMapper.deleteById(id);
|
}
|
|
public void updateById(SnmpInfo snmpInfo)
|
throws Exception {
|
if (StringUtils.isEmpty(snmpInfo.getHostname())) {
|
snmpInfo.setHostname(snmpInfo.getHostname().trim());
|
}
|
snmpInfoMapper.updateById(snmpInfo);
|
}
|
|
public SnmpInfo selectById(String id) throws Exception {
|
return snmpInfoMapper.selectById(id);
|
}
|
|
@Transactional
|
public void updateRecord(List<SnmpInfo> recordList) throws Exception {
|
snmpInfoMapper.updateList(recordList);
|
}
|
|
public List<SnmpInfo> selectAllByParams(Map<String, Object> params) throws Exception {
|
return snmpInfoMapper.selectAllByParams(params);
|
}
|
|
/**
|
* snmp设备扫描检测任务具体处理线程
|
*
|
* @param snmpMap
|
* @param h
|
* @param date
|
*/
|
public void taskThreadHandler(Map<String, String> snmpMap, SnmpInfo h, Date date) {
|
SnmpInfo snmpInfo = null;
|
List<SnmpInterfaceInfo> interfaceSnmpInfo = new ArrayList<>();
|
if (StaticKeys.ON_STATE.equals(snmpMap.get(h.getHostname()))) {
|
snmpInfo = SnmpUtil.getAvgSnmpInfo(h);
|
interfaceSnmpInfo = SnmpUtil.getInterfaceSnmpInfo(h);
|
}
|
h.setCreateTime(date);
|
h.setState(StaticKeys.ON_STATE);
|
if (null != snmpInfo) {
|
h.setRecvAvg(snmpInfo.getRecvAvg());
|
h.setSentAvg(snmpInfo.getSentAvg());
|
h.setBytesSent(snmpInfo.getBytesSent());
|
h.setBytesRecv(snmpInfo.getBytesRecv());
|
h.setMemPer(snmpInfo.getMemPer());
|
h.setCpuPer(snmpInfo.getCpuPer());
|
}
|
|
//设备下线后,不再更新时间 begin
|
if (null == snmpInfo) {
|
h.setState(StaticKeys.DOWN_STATE);
|
h.setCreateTime(null);
|
h.setRecvAvg(null);
|
h.setSentAvg(null);
|
h.setBytesSent(null);
|
h.setBytesRecv(null);
|
}
|
//设备下线后,不再更新时间 end
|
|
try {
|
updateById(h);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (StaticKeys.ON_STATE.equals(h.getState())) {
|
SnmpState snmpState = new SnmpState();
|
snmpState.setRecvAvg(h.getRecvAvg());
|
snmpState.setSentAvg(h.getSentAvg());
|
snmpState.setCpuPer(h.getCpuPer());
|
snmpState.setMemPer(h.getMemPer());
|
snmpState.setSnmpInfoId(h.getId());
|
snmpState.setCreateTime(date);
|
BatchData.SNMP_STATE_LIST.add(snmpState);
|
|
//新增接口詳情
|
if(interfaceSnmpInfo.size() > 0){
|
List<SnmpInterfaceInfo> interfaceInfos = snmpInterfaceInfoMapper.selectByHostName(h.getHostname());
|
if(interfaceInfos.size() > 0){
|
snmpInterfaceInfoMapper.deleteByHostName(h.getHostname());
|
snmpInterfaceInfoMapper.insertList(interfaceSnmpInfo);
|
}else {
|
snmpInterfaceInfoMapper.insertList(interfaceSnmpInfo);
|
}
|
}
|
}
|
if (StaticKeys.DOWN_STATE.equals(h.getState())) {
|
//返回错误处理
|
WarnMailUtil.sendSnmpInfo(h, true);
|
} else {
|
//返回成功处理
|
if (null != WarnPools.MEM_WARN_MAP.get(h.getId())) {
|
WarnMailUtil.sendSnmpInfo(h, false);
|
}
|
}
|
}
|
|
/**
|
* 保存操作日志
|
*
|
* @param request 获取当前登录用户
|
* @param action 操作标识
|
*/
|
public void saveLog(HttpServletRequest request, String action, SnmpInfo snmpInfo) {
|
if (null == snmpInfo) {
|
return;
|
}
|
logInfoService.save(HostUtil.getAccountByRequest(request).getAccount() + action + "snmp设备监测信息:" + snmpInfo.getHostname(),
|
"snmp设备:" + snmpInfo.getRemark(), StaticKeys.LOG_XTCZ);
|
}
|
|
@Autowired
|
private SnmpInfoMapper snmpInfoMapper;
|
@Autowired
|
private LogInfoService logInfoService;
|
@Autowired
|
private SnmpInterfaceInfoMapper snmpInterfaceInfoMapper;
|
|
|
}
|