feat: add monitor module

This commit is contained in:
tjq 2022-09-06 00:26:04 +08:00
parent ad1a7227d6
commit 5080796c6f
7 changed files with 137 additions and 0 deletions

View File

@ -21,6 +21,7 @@
<module>powerjob-server-extension</module>
<module>powerjob-server-migrate</module>
<module>powerjob-server-core</module>
<module>powerjob-server-monitor</module>
</modules>
@ -56,6 +57,11 @@
<artifactId>powerjob-server-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-monitor</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-extension</artifactId>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>powerjob-server</artifactId>
<groupId>tech.powerjob</groupId>
<version>4.1.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>powerjob-server-monitor</artifactId>
<version>${project.parent.version}</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,22 @@
package tech.powerjob.server.monitor;
/**
* 监控事件
*
* @author tjq
* @since 2022/9/6
*/
public interface Event {
/**
* 监控事件的类型
* @return 监控类型
*/
String type();
/**
* 监控事件的内容
* @return 监控事件的内容
*/
String message();
}

View File

@ -0,0 +1,16 @@
package tech.powerjob.server.monitor;
/**
* 监视器
*
* @author tjq
* @since 2022/9/6
*/
public interface Monitor {
/**
* 记录监控事件
* 请注意该方法务必异步不阻塞
* @param event 事件
*/
void record(Event event);
}

View File

@ -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<Monitor> monitors = Lists.newLinkedList();
@Autowired
public ServerMonitor(List<Monitor> 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));
}
}

View File

@ -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());
}
}

View File

@ -31,6 +31,10 @@
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-common</artifactId>
</dependency>
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-monitor</artifactId>
</dependency>
<dependency>
<groupId>tech.powerjob</groupId>
<artifactId>powerjob-server-persistence</artifactId>