MasterAgentWin.java 3.15 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.manage.CollScheduleManager;
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.MQSender;
import com.sitech.util.mq.MQSenderFactory;
import org.apache.log4j.Logger;

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

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

	public MasterAgentWin() {
		super(AgentProperties.AGENT_ID, AgentProperties.PROCESS_KEY);
	}
	
	protected void process() {
		createMBS();
		registerScheduler();
		registAdapter();
		startJmsSender();
		startSwapMonitorThread();
		sendSyncRequest();
	}

	/**
	 * 启动MBeanServer
	 */
	private void createMBS() {
		try {
			server = MBeanServerFactory.createMBeanServer(AgentProperties.MBEAN_SERVER_DOMAIN);
			MBeanManager manager = MBeanManager.getInstance();
			manager.setMBeanServer(server);
			logger.info("MBeanServer create successful.");
		} catch (Exception e) {
			logger.error("MBeanServer instance creation failed.", e);
		}
	}
	
	/**
	 * 注册quartz调度
	 */
	private void registerScheduler() {
		try {
			CollScheduleManager collschedule = CollScheduleManager.getInstance();
			collschedule.setMBeanServer(server);
			collschedule.startSchedule();
			logger.info("Start quartz scheduler successful.");
		} catch (Exception e) {
			error.error("Exception while start quartz scheduler.", e);
		}
	}
	
	/**
	 * 启动采集/告警配置同步接收 
	 * 2012-12-20 改为MQ
	 */
	private void registAdapter() {
		logger.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();
	}

	/**
	 * 启动指标数据和告警数据发送服务
	 */
	private void startJmsSender() {
		new MessageSenderManager().startAllMessageSender();
		logger.info("Start all jms sender.");
	}
	
	/**
	 * 启动swap目录监控线程
	 */
	private void startSwapMonitorThread() {
		SwapMonitorThread swapMonitorThread = new SwapMonitorThread();
		swapMonitorThread.start();
		logger.info("Start swap path monitor thread successful.");
	}

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

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

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

}