From b6de5aa56373920c178d6295d24f70bd85de838f Mon Sep 17 00:00:00 2001 From: tjq Date: Fri, 9 Sep 2022 22:45:05 +0800 Subject: [PATCH] feat: add WorkerHeartbeatEvent --- .../core/handler/WorkerRequestHandler.java | 9 +++++ .../events/handler/WorkerHeartbeatEvent.java | 38 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/events/handler/WorkerHeartbeatEvent.java diff --git a/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/handler/WorkerRequestHandler.java b/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/handler/WorkerRequestHandler.java index ed5787a6..df8ab472 100644 --- a/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/handler/WorkerRequestHandler.java +++ b/powerjob-server/powerjob-server-core/src/main/java/tech/powerjob/server/core/handler/WorkerRequestHandler.java @@ -19,6 +19,8 @@ import tech.powerjob.server.core.handler.impl.WorkerRequestHttpHandler; import tech.powerjob.server.core.instance.InstanceLogService; import tech.powerjob.server.core.instance.InstanceManager; import tech.powerjob.server.core.workflow.WorkflowInstanceManager; +import tech.powerjob.server.monitor.events.handler.WorkerHeartbeatEvent; +import tech.powerjob.server.monitor.monitors.ServerMonitor; import tech.powerjob.server.persistence.remote.model.ContainerInfoDO; import tech.powerjob.server.persistence.remote.model.JobInfoDO; import tech.powerjob.server.persistence.remote.repository.ContainerInfoRepository; @@ -45,6 +47,8 @@ import java.util.stream.Collectors; @Component public class WorkerRequestHandler { + @Resource + private ServerMonitor serverMonitor; @Resource private Environment environment; @Resource @@ -74,6 +78,11 @@ public class WorkerRequestHandler { * @param heartbeat 心跳包 */ public void onReceiveWorkerHeartbeat(WorkerHeartbeat heartbeat) { + + WorkerHeartbeatEvent event = new WorkerHeartbeatEvent(); + BeanUtils.copyProperties(heartbeat, event); + serverMonitor.record(event.setScore(heartbeat.getSystemMetrics().getScore())); + WorkerClusterManagerService.updateStatus(heartbeat); } diff --git a/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/events/handler/WorkerHeartbeatEvent.java b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/events/handler/WorkerHeartbeatEvent.java new file mode 100644 index 00000000..542c23d7 --- /dev/null +++ b/powerjob-server/powerjob-server-monitor/src/tech/powerjob/server/monitor/events/handler/WorkerHeartbeatEvent.java @@ -0,0 +1,38 @@ +package tech.powerjob.server.monitor.events.handler; + +import lombok.Setter; +import lombok.experimental.Accessors; +import tech.powerjob.server.common.SJ; +import tech.powerjob.server.monitor.Event; + +/** + * worker 心跳事件监控 + * + * @author tjq + * @since 2022/9/9 + */ +@Setter +@Accessors(chain = true) +public class WorkerHeartbeatEvent implements Event { + + private String appName; + + private String version; + + private String protocol; + + private String tag; + private String workerAddress; + + private Integer score; + + @Override + public String type() { + return "MONITOR_LOGGER_WORKER_HEART_BEAT"; + } + + @Override + public String message() { + return SJ.MONITOR_JOINER.join(appName, version, protocol, tag, workerAddress, score); + } +}