191 lines
7.1 KiB
Java
191 lines
7.1 KiB
Java
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|