diff --git a/powerjob-server/pom.xml b/powerjob-server/pom.xml index 08e6b04d..268dba77 100644 --- a/powerjob-server/pom.xml +++ b/powerjob-server/pom.xml @@ -21,6 +21,7 @@ powerjob-server-extension powerjob-server-migrate powerjob-server-core + powerjob-server-monitor @@ -56,6 +57,11 @@ powerjob-server-common ${project.version} + + tech.powerjob + powerjob-server-monitor + ${project.version} + tech.powerjob powerjob-server-extension diff --git a/powerjob-server/powerjob-server-monitor/pom.xml b/powerjob-server/powerjob-server-monitor/pom.xml new file mode 100644 index 00000000..dce0a058 --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/pom.xml @@ -0,0 +1,28 @@ + + + + powerjob-server + tech.powerjob + 4.1.0 + ../pom.xml + + 4.0.0 + + powerjob-server-monitor + ${project.parent.version} + + + 8 + 8 + + + + + tech.powerjob + powerjob-server-common + + + + \ No newline at end of file diff --git a/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Event.java b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Event.java new file mode 100644 index 00000000..e62a304f --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Event.java @@ -0,0 +1,22 @@ +package tech.powerjob.server.monitor; + +/** + * 监控事件 + * + * @author tjq + * @since 2022/9/6 + */ +public interface Event { + + /** + * 监控事件的类型 + * @return 监控类型 + */ + String type(); + + /** + * 监控事件的内容 + * @return 监控事件的内容 + */ + String message(); +} diff --git a/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Monitor.java b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Monitor.java new file mode 100644 index 00000000..7d3a4de2 --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/Monitor.java @@ -0,0 +1,16 @@ +package tech.powerjob.server.monitor; + +/** + * 监视器 + * + * @author tjq + * @since 2022/9/6 + */ +public interface Monitor { + /** + * 记录监控事件 + * 请注意该方法务必异步不阻塞!!! + * @param event 事件 + */ + void record(Event event); +} diff --git a/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/ServerMonitor.java b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/ServerMonitor.java new file mode 100644 index 00000000..62f30035 --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/ServerMonitor.java @@ -0,0 +1,39 @@ +package tech.powerjob.server.monitor.monitors; + +import com.google.common.collect.Lists; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import tech.powerjob.server.monitor.Event; +import tech.powerjob.server.monitor.Monitor; + +import java.util.List; + +/** + * 服务端监视器 + * + * @author tjq + * @since 2022/9/6 + */ +@Slf4j +@Component +public class ServerMonitor implements Monitor { + + private final List monitors = Lists.newLinkedList(); + + @Autowired + public ServerMonitor(List monitors) { + monitors.forEach(m -> { + if (m == this) { + return; + } + log.info("[ServerMonitor] register monitor: {}", m.getClass().getName()); + this.monitors.add(m); + }); + } + + @Override + public void record(Event event) { + monitors.forEach(m -> m.record(event)); + } +} diff --git a/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/impl/LogMonitor.java b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/impl/LogMonitor.java new file mode 100644 index 00000000..79e433bb --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/monitors/impl/LogMonitor.java @@ -0,0 +1,22 @@ +package tech.powerjob.server.monitor.monitors.impl; + +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +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 { + + @Override + public void record(Event event) { + LoggerFactory.getLogger(event.type()).info(event.message()); + } +} diff --git a/powerjob-server/powerjob-server-starter/pom.xml b/powerjob-server/powerjob-server-starter/pom.xml index c1fb09f1..b6e95a20 100644 --- a/powerjob-server/powerjob-server-starter/pom.xml +++ b/powerjob-server/powerjob-server-starter/pom.xml @@ -31,6 +31,10 @@ tech.powerjob powerjob-server-common + + tech.powerjob + powerjob-server-monitor + tech.powerjob powerjob-server-persistence