package org.infosec.ismp.agent;
import org.infosec.ismp.agent.register.AgentRegister;
import org.infosec.ismp.collectd.DirectSnmpEventProcessor;
import org.infosec.ismp.collectd.SnmpCollectd;
import org.infosec.ismp.collectd.SnmpGetterEventProcessor;
import org.infosec.ismp.database.collectd.DatabaseCollectd;
import org.infosec.ismp.eventd.Eventd;
import org.infosec.ismp.ping.DirectPingProcessor;
import org.infosec.ismp.ping.Pingd;
import org.infosec.ismp.servicecheck.ServiceCheck;
import org.infosec.ismp.sitecheck.SiteCheck;
import org.infosec.ismp.syslogd.Syslogd;
import org.infosec.ismp.trapd.Trapd;
import org.infosec.ismp.util.ThreadCategory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.util.Log4jConfigurer;
/**
* 启动Agent程序
*
* @author <a href="mailto:lianglin1979@sjtu.edu.cn">lianglin</a>
*
*/
public class AgentMain {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// 加载log4j配置文件
Log4jConfigurer.initLogging("classpath:log4j.properties");
// 初始化snmp资源文件
try {
SnmpConfigFactoryInitializer.init(new String[]{"classpath:snmpresources/snmpResource.xml"
,"classpath:snmpresources/snmpHostResource.xml"
,"classpath:snmpresources/snmpConfigCisco.xml"
,"classpath:snmpresources/snmpConfigWeblogic.xml"
,"classpath:snmpresources/snmpFirewallH3c.xml"
,"classpath:snmpresources/snmpFirewallLeadsec.xml"
,"classpath:snmpresources/snmpFirewallTopsec.xml"
,"classpath:snmpresources/snmpFirewallWibeda.xml"
,"classpath:snmpresources/snmpRouterCisco.xml"
,"classpath:snmpresources/snmpRouterH3c.xml"
,"classpath:snmpresources/snmpSwitchCisco.xml"
,"classpath:snmpresources/snmpSwitchH3c.xml"
});
} catch (Throwable t) {
ThreadCategory.getInstance(AgentMain.class.getClass()).fatal(
"初始化SNMP资源配置失败,请检查 :", t);
System.exit(1);
}
// 加载spring配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] { "classpath:applicationContext.xml",
"classpath:applicationContext-agent.xml" });
AgentRegister register = (AgentRegister) ctx.getBean("register");
register.start();
// 启动事件模块
Eventd eventd = (Eventd) ctx.getBean("eventd");
eventd.start();
// 启动syslog日志模块
Syslogd syslogd = (Syslogd) ctx.getBean("syslogd");
syslogd.start();
// 启动设备Ping模块
Pingd pingd = (Pingd) ctx.getBean("pingd");
pingd.start();
// 初始化页面检测模块
SiteCheck siteCheck = (SiteCheck) ctx.getBean("siteCheck");
siteCheck.start();
// 初始化服务检测模块
ServiceCheck serviceCheck = (ServiceCheck) ctx.getBean("serviceCheck");
serviceCheck.start();
DirectPingProcessor dp = ctx.getBean(DirectPingProcessor.class);
DirectSnmpEventProcessor snmp = ctx
.getBean(DirectSnmpEventProcessor.class);
SnmpGetterEventProcessor snmpgetter = ctx
.getBean(SnmpGetterEventProcessor.class);
Trapd trapd = ctx.getBean(Trapd.class);
trapd.start();
// 初始化snmp采集模块
SnmpCollectd snmpCollectd = (SnmpCollectd) ctx.getBean("snmpCollectd");
snmpCollectd.start();
// 初始化snmp采集模块
DatabaseCollectd dbCollectd = (DatabaseCollectd) ctx
.getBean("dbcollectd");
dbCollectd.start();
//
// WinsensorMain main = new WinsensorMain();
// main.init();
// main.start();
System.out.println("-------start ismp aagent--------------");
}
ThreadCategory log() {
return ThreadCategory.getInstance(getClass());
}
}