package tech.powerjob.server.monitor.monitors;
|
|
import org.slf4j.LoggerFactory;
|
import org.slf4j.MDC;
|
import org.springframework.stereotype.Component;
|
import tech.powerjob.server.common.aware.ServerInfoAware;
|
import tech.powerjob.server.common.module.ServerInfo;
|
import tech.powerjob.server.monitor.Event;
|
import tech.powerjob.server.monitor.Monitor;
|
|
/**
|
* 系统默认实现——基于日志的监控监视器
|
* 需要接入方自行基于类 ELK 系统采集
|
*
|
* @author tjq
|
* @since 2022/9/6
|
*/
|
@Component
|
public class LogMonitor implements Monitor, ServerInfoAware {
|
|
/**
|
* server 启动依赖 DB,DB会被 monitor,因此最初的几条 log serverInfo 一定为空,在此处简单防空
|
*/
|
private ServerInfo serverInfo = new ServerInfo();
|
|
private static final String MDC_KEY_SERVER_ID = "serverId";
|
|
|
@Override
|
public void init() {
|
}
|
|
@Override
|
public void record(Event event) {
|
MDC.put(MDC_KEY_SERVER_ID, String.valueOf(serverInfo.getId()));
|
LoggerFactory.getLogger(event.type()).info(event.message());
|
}
|
|
@Override
|
public void setServerInfo(ServerInfo serverInfo) {
|
this.serverInfo = serverInfo;
|
}
|
}
|