package com.alibaba.doris.dataserver.monitor; import com.alibaba.doris.dataserver.ApplicationContext; import com.alibaba.doris.dataserver.BaseModule; import com.alibaba.doris.dataserver.Module; import com.alibaba.doris.dataserver.ModuleContext; import com.alibaba.doris.dataserver.ModuleContextAware; import com.alibaba.doris.dataserver.action.ActionFactory; import com.alibaba.doris.dataserver.config.ModuleConstances; import com.alibaba.doris.dataserver.config.data.ModuleConfigure; import com.alibaba.doris.dataserver.monitor.action.StatsAction; import com.alibaba.doris.dataserver.monitor.action.StatsActionType; import com.alibaba.doris.dataserver.monitor.support.PrefReportThread; import com.alibaba.doris.dataserver.monitor.support.UpTime; /** * 定时向admin server 报告状态 * * @author helios */ public class MonitorMudule extends BaseModule implements ModuleContextAware { private static final PrefReportThread thread = new PrefReportThread(); public void load(ModuleConfigure conf) { initThread(conf); ActionFactory.registAction(StatsActionType.STATS, new StatsAction()); thread.start(); // 设置服务器启动时间 UpTime.init(); } public void unload() { thread.setStop(); thread.interrupt(); } private void initThread(ModuleConfigure conf) { ModuleContext moduleContext = getModuleContext(); if (null != moduleContext) { ApplicationContext appContext = moduleContext.getApplicationContext(); Module module = appContext.getModuleByName(ModuleConstances.NETWORK_MODULE); ModuleContext netWorkModuleContext = module.getModuleContext(); if (netWorkModuleContext == null) { throw new RuntimeException("netWorkModuleContext not found"); } int port = (Integer) netWorkModuleContext.getAttribute("serverPort"); thread.setPort(port); } int reportIntervalInMinite = conf.getParamAsInt("reportIntervalInMinite", 5); thread.setIntervalInMinites(reportIntervalInMinite); } }