This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nms-nmsserver/src/com/nms/server/thread/monitor/MonitorManagerThread.java
2018-09-27 16:17:06 +08:00

191 lines
7.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.nms.server.thread.monitor;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
import com.nms.server.bean.NodeModel;
import com.nms.server.bean.SetInfo;
import com.nms.server.common.Common;
import com.nms.server.common.Constants;
import com.nms.server.dao.CommonDao;
import com.nms.server.service.CommonService;
import com.nms.server.service.ThreadService;
import com.nms.server.thread.InitServerThread;
import com.nms.server.util.BoneCPPool;
public class MonitorManagerThread implements Runnable{
private Logger logger = Logger.getLogger(MonitorManagerThread.class);
private String name;
private final int socketPort = Constants.SSL_CLIENT_PORT;
private long startTime = Calendar.getInstance().getTimeInMillis();
private SetInfo setInfo = null;
public MonitorManagerThread(String name,SetInfo setInfo) {
this.name = name;
this.setInfo = setInfo;
}
public static void main(String[] args) {
//把所有的监测都插入一遍只是没有初始化本DC的IP管理范围
CommonDao dao = null;
try {
BoneCPPool.initPool();
dao = new CommonDao();
CommonService commonService = new CommonService(dao);
ThreadService service = new ThreadService();
new InitServerThread().initCommonInfo(dao);
//--获取switchPort 监测配置并启动监测任务
List<SetInfo> setList = commonService.getDrivingSetInfo(Constants.DETEC_SYSTEMDATE_STR);//时钟同步
//-- Ping 监测任务启动 和 客户端启动监测任务启动
if(setList!=null && setList.size()>0){
for (Iterator setIte = setList.iterator(); setIte.hasNext();) {
SetInfo si = (SetInfo) setIte.next();
// if(si.getCheckTypeName().equalsIgnoreCase("checktype422")){
// si.setCheckTypeName("system");
// MonitorManagerThread thread = new MonitorManagerThread(si.getCheckTypeName()+"_"+si.getProcessIden(),si);
// Common.service.submit(thread);
// }
//- 创建线程
Runnable runnable = new MonitorManagerThread(si.getCheckTypeName()+"_"+si.getProcessIden(),si);
//- 添加到 定时线程池
ScheduledFuture<?> future = Common.scheduled.scheduleAtFixedRate(runnable, 0, 2, TimeUnit.MINUTES);
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(dao!=null){
dao.close();
dao=null;
}
}
// ScheduledFuture<?> fcFuture = Common.scheduled.scheduleWithFixedDelay(new DetecDataResoveManagerThread(), 15, Constants.DETEC_DATA_RESOLVE_PERIOD, TimeUnit.SECONDS);
//注册 管理线程
}
@Override
public void run() {
Thread.currentThread().setName("Monitor:"+name+"");
List<NodeModel> nodeList = null;
CommonDao dao = null;
try {
dao = new CommonDao();
CommonService service = new CommonService(dao);
nodeList = service.getNodeModelListBySetInfo(setInfo);
/*nodeList.clear();
nodeList.add(new NodeModel("10.0.9.183",0l));*/
logger.info("本次监测节点数:"+nodeList.size());
} catch (Exception e) {
logger.error("Initializing query monitoring node failure", e);
return;
}finally{
if(dao!=null){
dao.close();
dao=null;
}
}
try {
//- 将设置加入计划任务
if(Constants.DETEC_PING_STR.equalsIgnoreCase(setInfo.getCheckTypeName())){ //Ping 监测线程创建
if(nodeList!= null && nodeList.size()>0){
for(NodeModel model: nodeList){
Common.runMonitorRunnable(new PingThread(name,model.getNodeIp(),setInfo,startTime));
}
}
}else if(Constants.DETEC_NMSC_STR.equalsIgnoreCase(setInfo.getCheckTypeName())){ //NMSC 监测线程创建
if(nodeList!= null && nodeList.size()>0){
if(Constants.NETTY_SERVER_FLAG == 1 ){ //当启用 nc 主动上传 监测及 任务文件时开启
//NMSC
Common.runMonitorRunnable(new ServerNMSCThread(name,setInfo,startTime,nodeList));
}
for(NodeModel model: nodeList){
if(model.getNodeType() != null && model.getNodeType().longValue() == 1l){//非服务器节点
//SNMP校验监测
Common.runMonitorRunnable(new NMSClientForSNMPThread(name,model.getNodeIp(),setInfo,startTime));
}
}
}
}else if(Constants.DETEC_SYSTEMDATE_STR.equalsIgnoreCase(setInfo.getCheckTypeName())){ //系统时间
if(nodeList!= null && nodeList.size()>0){
if(Constants.NETTY_SERVER_FLAG == 1 ){ //当启用 nc 主动上传 监测及 任务文件时开启,根据心跳计算时间同步
Common.runMonitorRunnable(new ServerDateThread(name, setInfo, nodeList, startTime));
}else{
for(NodeModel model: nodeList){
//NMSClient 校验修正 针对于计算机 进行NMSClient校验失败后进行PING校验
// 针对于非计算机 进行SNMP监测是否启动校验
if(model.getNodeType() != null && model.getNodeType().longValue() == 0l){ //服务器节点
//NMSC
Common.runMonitorRunnable(new SystemDateThread(name,model.getNodeIp(),socketPort,setInfo,startTime));
}else{ //非服务器节点
logger.info("监测目标:"+model.getNodeIp()+" 是非服务器节点,不进行"+Constants.DETEC_SYSTEMDATE_STR+"监测");
}
}
}
}
}else if(Constants.DETEC_SWITCH_STR.equalsIgnoreCase(setInfo.getCheckTypeName())){ //SWITCH 监测线程创建
if(nodeList!= null && nodeList.size()>0){
for(NodeModel model: nodeList){
if(model.getNodeType() != null && model.getNodeType().longValue() == 1l){//交换机节点
// if(!model.getNodeIp() .equals("10.0.6.254")){
// continue;
// }
//交换机类型节点监测 SNMP校验监测
Common.runMonitorRunnable(new SwitchPortThread(name,model.getNodeIp(),setInfo,startTime));
}else{ //计算机类型校验
logger.info("监测目标:"+model.getNodeIp()+" 不是交换机,无法进行监测");
}
}
}
}else if(Constants.DETEC_SYSTEM_STR.equalsIgnoreCase(setInfo.getCheckTypeName())){ //system 监测线程创建--预置的属于snmp监测
if(nodeList!= null && nodeList.size()>0){
for(NodeModel model: nodeList){
if(model.getNodeType() != null && model.getNodeType().longValue() != 0l){ //非服务器节点
Common.runMonitorRunnable(new SNMP4JThread(name,model.getNodeIp(),setInfo,startTime));
}else{ //计算机类型校验
logger.info("监测目标:"+model.getNodeIp()+" 是服务器节点,不进行该类监测");
}
}
}
}
else if(setInfo.getIsSNMP()!= null && setInfo.getIsSNMP().longValue()==1){ //SNMP4j 监测线程创建--针对的是非预置的监测
if(nodeList!= null && nodeList.size()>0){
for(NodeModel model: nodeList){
Common.runMonitorRunnable(new SNMP4JThread(name,model.getNodeIp(),setInfo,startTime));
}
}
}
else if(setInfo.getIsSNMP()!= null && setInfo.getIsSNMP().longValue()==0){ //ObjectSNMP 监测线程创建
if(nodeList!= null && nodeList.size()>0){
for(NodeModel model: nodeList){
Common.runMonitorRunnable(new SNMP4JThread(name,model.getNodeIp(),setInfo,startTime));
}
}
}
} catch (Exception e) {
logger.error("", e);
}
}
}