From d5fca554f179659e86b2566a8769fc56d3de1530 Mon Sep 17 00:00:00 2001 From: baoqm <976302356@qq.com> Date: Mon, 25 Aug 2025 10:49:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=87=87=E9=9B=86=E9=97=B4?= =?UTF-8?q?=E9=9A=94=E5=88=9D=E5=A7=8B=E5=8C=96=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?5=E5=88=86=E9=92=9F=20=E5=A2=9E=E5=8A=A0=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=87=87=E9=9B=86=E9=97=B4=E9=9A=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../netty/annotation/AgentDispatcher.java | 47 +++++ .../server/netty/basics/AgentHandler.java | 19 ++ .../server/netty/enpoint/AgentEndpoint.java | 171 ++++++++++++++++++ .../server/netty/model/UpMsgResponse.java | 21 +++ 4 files changed, 258 insertions(+) create mode 100644 src/main/java/com/tongran/agentserver/server/netty/annotation/AgentDispatcher.java create mode 100644 src/main/java/com/tongran/agentserver/server/netty/basics/AgentHandler.java create mode 100644 src/main/java/com/tongran/agentserver/server/netty/enpoint/AgentEndpoint.java create mode 100644 src/main/java/com/tongran/agentserver/server/netty/model/UpMsgResponse.java diff --git a/src/main/java/com/tongran/agentserver/server/netty/annotation/AgentDispatcher.java b/src/main/java/com/tongran/agentserver/server/netty/annotation/AgentDispatcher.java new file mode 100644 index 0000000..0827b85 --- /dev/null +++ b/src/main/java/com/tongran/agentserver/server/netty/annotation/AgentDispatcher.java @@ -0,0 +1,47 @@ +package com.tongran.agentserver.server.netty.annotation; + +import com.tongran.agentserver.core.enums.MsgEnum; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +/** + * 指明类为Agent消息 + */ +@Component +@Documented +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface AgentDispatcher { + + @Getter + @AllArgsConstructor + enum VersionEnum { + V1("2025"); + public final String value; + } + + /** + * 消息ID + * + * @return + */ + MsgEnum msgId(); + + /** + * 消息版本 默认版本2025 + * + * @return + */ + VersionEnum version() default VersionEnum.V1; + + /** + * 描述 + * + * @return + */ + String desc() default ""; + +} diff --git a/src/main/java/com/tongran/agentserver/server/netty/basics/AgentHandler.java b/src/main/java/com/tongran/agentserver/server/netty/basics/AgentHandler.java new file mode 100644 index 0000000..1c711ee --- /dev/null +++ b/src/main/java/com/tongran/agentserver/server/netty/basics/AgentHandler.java @@ -0,0 +1,19 @@ +package com.tongran.agentserver.server.netty.basics; + + +import com.tongran.agentserver.server.netty.model.UpMsgResponse; + +public interface AgentHandler { + + /** + * 处理终端传入的消息, 然后进行返回 + * + * @return 需要发送给终端的消息 + */ + + default UpMsgResponse upHandle(String data,String clientId) { + return null; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/tongran/agentserver/server/netty/enpoint/AgentEndpoint.java b/src/main/java/com/tongran/agentserver/server/netty/enpoint/AgentEndpoint.java new file mode 100644 index 0000000..58b1b4c --- /dev/null +++ b/src/main/java/com/tongran/agentserver/server/netty/enpoint/AgentEndpoint.java @@ -0,0 +1,171 @@ +package com.tongran.agentserver.server.netty.enpoint; + +import com.alibaba.fastjson2.JSONObject; +import com.tongran.agentserver.core.enums.MsgEnum; +import com.tongran.agentserver.scheduler.*; +import com.tongran.agentserver.server.netty.annotation.AgentDispatcher; +import com.tongran.agentserver.server.netty.basics.AgentHandler; +import com.tongran.agentserver.server.netty.model.UpMsgResponse; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +public class AgentEndpoint { + + @Resource + private CpuScheduler cpuScheduler; + + @Resource + private DiskScheduler diskScheduler; + + @Resource + private DockerScheduler dockerScheduler; + + @Resource + private MemoryScheduler memoryScheduler; + + @Resource + private NetScheduler netScheduler; + + @Resource + private PointScheduler pointScheduler; + + @Resource + private SwitchBoardScheduler switchBoardScheduler; + + @Resource + private SysScheduler sysScheduler; + + + @AgentDispatcher(msgId = MsgEnum.更新CPU采集间隔) + public class TimeCpuHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + cpuScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新CPU采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新容器采集间隔) + public class TimeDockerHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + cpuScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新容器采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新CPU采集间隔) + public class CpuHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + dockerScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新CPU采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新网卡采集间隔) + public class TimeNetHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + netScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新网卡采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新交换机采集间隔) + public class TimeSwitchHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + switchBoardScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新交换机采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新磁盘采集间隔) + public class TimeDiskHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + diskScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新磁盘采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新挂载采集间隔) + public class TimePointHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + pointScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新挂载采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新内存采集间隔) + public class TimeMemoryHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + memoryScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新内存采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + @AgentDispatcher(msgId = MsgEnum.更新系统采集间隔) + public class TimeSysHandler implements AgentHandler { + @Override + public UpMsgResponse upHandle(String data, String clientId) { + JSONObject jsonObject = JSONObject.parseObject(data); + long intervalMillis = jsonObject.getLong("intervalMillis"); + sysScheduler.updateInterval(intervalMillis); + JSONObject json = new JSONObject(); + json.put("clientId",clientId); + json.put("resCode",1); + return UpMsgResponse.builder().dataType(MsgEnum.更新系统采集间隔应答.getValue()).content(json.toString()).build(); + } + } + + + + + +} \ No newline at end of file diff --git a/src/main/java/com/tongran/agentserver/server/netty/model/UpMsgResponse.java b/src/main/java/com/tongran/agentserver/server/netty/model/UpMsgResponse.java new file mode 100644 index 0000000..1db3fda --- /dev/null +++ b/src/main/java/com/tongran/agentserver/server/netty/model/UpMsgResponse.java @@ -0,0 +1,21 @@ +package com.tongran.agentserver.server.netty.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +public class UpMsgResponse { + + /** + * type + */ + private String dataType; + + private String content; + +}