MasterAgent.java 3.64 KB
package com.sitech.jmx;

import com.sitech.base.ACommonThread;
import com.sitech.base.AgentProperties;
import com.sitech.base.Config;
import com.sitech.database.dao.TbCfgEventDao;
import com.sitech.ismp.messageObject.AgentSyncRequest;
import com.sitech.jmx.adaptor.JmsAdaptor;
import com.sitech.jmx.adaptor.RmiAdaptor;
import com.sitech.jmx.manage.CollScheduleManager;
import com.sitech.jmx.manage.CronLogScan;
import com.sitech.jmx.manage.MBeanManager;
import com.sitech.jmx.manage.MessageSenderManager;
import com.sitech.jmx.manage.SwapMonitorThread;
import com.sitech.util.mq.MQConstants;
import com.sitech.util.mq.TunnelFactory;
import org.apache.log4j.Logger;

import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;

public class MasterAgent extends ACommonThread {
	private static Logger logger = Logger.getLogger("LOGER");
	private static Logger error = Logger.getLogger("ERROR");
	private static Logger log = Logger.getLogger(MasterAgent.class);
	private MBeanServer server;

	public MasterAgent() {
		super(AgentProperties.AGENT_ID, AgentProperties.PROCESS_KEY);
	}

	protected void process() {
		createMBS();
		registerScheduler();
		registAdapter();
		startJmsSender();
		startSwapMonitorThread();
		sendSyncRequest();
		startCronScheduleLogThread();
	}

	/**
	 * 启动MBeanServer
	 */
	private void createMBS() {
		log.info("MBeanServer create .....");
		try {
			server = MBeanServerFactory.createMBeanServer(AgentProperties.MBEAN_SERVER_DOMAIN);
			MBeanManager manager = MBeanManager.getInstance();
			manager.setMBeanServer(server);
			log.info("MBeanServer create successful.");
		} catch (Exception e) {
			log.error("MBeanServer instance creation failed.", e);
		}
	}

	/**
	 * 注册quartz调度
	 */
	private void registerScheduler() {
		try {
			CollScheduleManager collschedule = CollScheduleManager.getInstance();
			collschedule.setMBeanServer(server);
			collschedule.startSchedule();
			log.info("Start quartz scheduler successful.");
		} catch (Exception e) {
			log.error("Exception while start quartz scheduler.", e);
		}
	}

	/**
	 * 启动采集/告警配置同步接收
	 * 2012-12-20 改为MQ
	 */
	private void registAdapter() {
		log.info("Start MQ adapter...");
		String url = Config.WORKSTAITON_CONN_URL;
		String queue = "Q_AGENT_" + AgentProperties.AGENT_ID;
		JmsAdaptor jmsAdaptor = new JmsAdaptor(url, queue);
		jmsAdaptor.start();
		RmiAdaptor.getInstance().regist(server);
		log.info("Start MQ adapter ok...");
	}

	/**s
	 * 启动指标数据和告警数据发送服务
	 */
	private void startJmsSender() {
		log.info("Start all jms sender.");
		new MessageSenderManager().startAllMessageSender();
		log.info("Start all jms sender ok.");
	}

	/**
	 * 启动swap目录监控线程
	 */
	private void startSwapMonitorThread() {
		SwapMonitorThread swapMonitorThread = new SwapMonitorThread();
		swapMonitorThread.start();
		log.info("Start swap path monitor thread successful.");
	}

	/**
	 * 启动cron日志目录监控线程
	 */
	private void startCronScheduleLogThread(){
		new Thread(new CronLogScan(),"CronLogScan").start();
	}

	/**
	 * 发送告警配置和采集配置同步请求
	 */
	private void sendSyncRequest() {
		new TbCfgEventDao().deleteTbCfgEventAll();
		AgentSyncRequest request = new AgentSyncRequest();
		request.setAgentId(AgentProperties.AGENT_ID);

		TunnelFactory.getTunnel(MQConstants.Q_ROPORT_FROM_AGENT).writeData(request);

//		MQSender mqSender = MQSenderFactory.createMQSender(
//				Config.WORKSTAITON_CONN_URL, MQConstants.Q_ROPORT_FROM_AGENT);
//		mqSender.writeData(request);
//		mqSender.start();
		log.info("Send sync request.");
	}

	public static void main(String[] args) {
		new MasterAgent().start();
	}

}