diff --git a/agent/Dockerfile b/agent/Dockerfile index daa2d13..8f5e597 100644 --- a/agent/Dockerfile +++ b/agent/Dockerfile @@ -3,7 +3,8 @@ FROM icederce/eclipse-temurin-11-jre-focal # Set environment variables -ENV TZ=Asia/Shanghai serverName="" serverIpPbV4="" serverIpInV4="" serverIpPbV6="" serverIpInV6="" location="" provider="" managePort="" cpuBrand="" cpuCore="" memoryTotal="" diskTotal="" diskUsage="" osInfo="" osKernelInfo="" tcpControl="" virtualization="" ioSpeed="" JAVA_OPTS="-Xms2028m -Xmx2048m" +ENV TZ=Asia/Shanghai serverName="" serverIpPbV4="" serverIpInV4="" serverIpPbV6="" serverIpInV6="" location="" provider="" managePort="" cpuBrand="" cpuCore="" memoryTotal="" diskTotal="" diskUsage="" osInfo="" osKernelInfo="" tcpControl="" virtualization="" ioSpeed="" +ENV JAVA_OPTS="-Xms2028m -Xmx2048m" # Set time zone RUN set -eux; \ @@ -20,4 +21,4 @@ WORKDIR /wdd COPY ./agent/target/agent-*.jar /wdd/agent.jar # When the docker container starts, run the jar -ENTRYPOINT exec java ${JAVA_OPTS} -jar /wdd/agent.jar +ENTRYPOINT chroot /host && exec java ${JAVA_OPTS} -jar /wdd/agent.jar diff --git a/agent/src/main/java/io/wdd/agent/config/beans/executor/CommandLog.java b/agent/src/main/java/io/wdd/agent/config/beans/executor/CommandLog.java new file mode 100644 index 0000000..d64aad1 --- /dev/null +++ b/agent/src/main/java/io/wdd/agent/config/beans/executor/CommandLog.java @@ -0,0 +1,22 @@ +package io.wdd.agent.config.beans.executor; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import org.springframework.data.annotation.AccessType; + +import java.time.LocalDateTime; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CommandLog { + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime lineTime; + + private String lineContend; + +} diff --git a/agent/src/main/java/io/wdd/agent/initialization/beans/AgentServerInfo.java b/agent/src/main/java/io/wdd/agent/config/beans/init/AgentServerInfo.java similarity index 97% rename from agent/src/main/java/io/wdd/agent/initialization/beans/AgentServerInfo.java rename to agent/src/main/java/io/wdd/agent/config/beans/init/AgentServerInfo.java index e96dafb..261de0d 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/beans/AgentServerInfo.java +++ b/agent/src/main/java/io/wdd/agent/config/beans/init/AgentServerInfo.java @@ -1,4 +1,4 @@ -package io.wdd.agent.initialization.beans; +package io.wdd.agent.config.beans.init; import lombok.AllArgsConstructor; diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/config/OctopusRabbitMQAdminConfig.java b/agent/src/main/java/io/wdd/agent/config/message/config/OctopusRabbitMQAdminConfig.java similarity index 92% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/config/OctopusRabbitMQAdminConfig.java rename to agent/src/main/java/io/wdd/agent/config/message/config/OctopusRabbitMQAdminConfig.java index 1494f92..d5cdc26 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/config/OctopusRabbitMQAdminConfig.java +++ b/agent/src/main/java/io/wdd/agent/config/message/config/OctopusRabbitMQAdminConfig.java @@ -1,4 +1,4 @@ -package io.wdd.agent.config.rabbitmq.config; +package io.wdd.agent.config.message.config; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/AbstractOctopusMessageHandler.java b/agent/src/main/java/io/wdd/agent/config/message/handler/AbstractOctopusMessageHandler.java similarity index 91% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/AbstractOctopusMessageHandler.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/AbstractOctopusMessageHandler.java index 7c639fe..fe187ae 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/AbstractOctopusMessageHandler.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/AbstractOctopusMessageHandler.java @@ -1,8 +1,7 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; import io.wdd.common.beans.rabbitmq.OctopusMessage; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Lazy; /** diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerAgent.java b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerAgent.java similarity index 91% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerAgent.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerAgent.java index 3547c9c..6aae320 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerAgent.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerAgent.java @@ -1,4 +1,4 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; import io.wdd.common.beans.rabbitmq.OctopusMessage; import io.wdd.common.beans.rabbitmq.OctopusMessageType; diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerBlackHole.java b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerBlackHole.java similarity index 88% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerBlackHole.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerBlackHole.java index 8e200a0..6f097e3 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerBlackHole.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerBlackHole.java @@ -1,4 +1,4 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; import io.wdd.common.beans.rabbitmq.OctopusMessage; import lombok.extern.slf4j.Slf4j; diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerExecutor.java b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerExecutor.java similarity index 91% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerExecutor.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerExecutor.java index 1c4f32f..398fec5 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerExecutor.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerExecutor.java @@ -1,4 +1,4 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; import io.wdd.common.beans.rabbitmq.OctopusMessage; import io.wdd.common.beans.rabbitmq.OctopusMessageType; diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerInit.java b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerInit.java similarity index 82% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerInit.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerInit.java index 402aab2..1895ecb 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerInit.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerInit.java @@ -1,7 +1,7 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; -import io.wdd.agent.initialization.beans.AgentServerInfo; -import io.wdd.agent.initialization.rabbitmq.GenerateOctopusConnection; +import io.wdd.agent.config.beans.init.AgentServerInfo; +import io.wdd.agent.initialization.message.GenOctopusRabbitMQConnection; import io.wdd.agent.message.ToServerMessage; import io.wdd.common.beans.rabbitmq.OctopusMessage; import io.wdd.common.beans.rabbitmq.OctopusMessageType; @@ -23,7 +23,7 @@ import javax.annotation.Resource; public class OMHandlerInit extends AbstractOctopusMessageHandler { @Resource - GenerateOctopusConnection generateOctopusConnection; + GenOctopusRabbitMQConnection genOctopusRabbitMQConnection; @Resource ToServerMessage toServerMessage; @@ -40,7 +40,7 @@ public class OMHandlerInit extends AbstractOctopusMessageHandler { // handle the PassThroughTopicName message // 1. generator the unique topic queue for agent itself // 1.1 initial the specific topic queue listener - generateOctopusConnection.ManualGenerate(octopusMessage); + genOctopusRabbitMQConnection.ManualGenerate(octopusMessage); // 2. send PassThroughTopicName successful info to the server diff --git a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerStatus.java b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerStatus.java similarity index 91% rename from agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerStatus.java rename to agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerStatus.java index 8999e5c..ef92986 100644 --- a/agent/src/main/java/io/wdd/agent/config/rabbitmq/handler/OMHandlerStatus.java +++ b/agent/src/main/java/io/wdd/agent/config/message/handler/OMHandlerStatus.java @@ -1,4 +1,4 @@ -package io.wdd.agent.config.rabbitmq.handler; +package io.wdd.agent.config.message.handler; import io.wdd.common.beans.rabbitmq.OctopusMessage; import io.wdd.common.beans.rabbitmq.OctopusMessageType; diff --git a/agent/src/main/java/io/wdd/agent/excuetor/redis/StreamSenderTest.java b/agent/src/main/java/io/wdd/agent/excuetor/redis/StreamSenderTest.java new file mode 100644 index 0000000..b7f4d9f --- /dev/null +++ b/agent/src/main/java/io/wdd/agent/excuetor/redis/StreamSenderTest.java @@ -0,0 +1,62 @@ +package io.wdd.agent.excuetor.redis; + + +import io.wdd.agent.config.beans.executor.CommandLog; +import lombok.SneakyThrows; +import org.apache.commons.lang3.RandomStringUtils; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.stream.MapRecord; +import org.springframework.data.redis.connection.stream.RecordId; +import org.springframework.data.redis.connection.stream.StreamRecords; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.hash.HashMapper; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +@Configuration +public class StreamSenderTest { + + @Resource + RedisTemplate redisTemplate; + + public static String TEST_STREAM_JAVA = "test-stream-java"; + + @SneakyThrows + public void test(){ + + HashMapper hashMapper = redisTemplate.opsForStream().getHashMapper(CommandLog.class); + + RecordId recordId = null; + if (!redisTemplate.hasKey(TEST_STREAM_JAVA)) { + + recordId = redisTemplate.opsForStream().add(TEST_STREAM_JAVA, generateFakeData(hashMapper)); + } + + for (int i = 0; i < 100; i++) { + + Map fakeData = generateFakeData(hashMapper); + + MapRecord mapRecord = StreamRecords.mapBacked(fakeData).withId(recordId).withStreamKey(TEST_STREAM_JAVA); + + + recordId = redisTemplate.opsForStream(hashMapper).add(mapRecord); + + TimeUnit.MILLISECONDS.sleep(200); + + } + + + + } + + private static Map generateFakeData(HashMapper hashMapper) { + String random = RandomStringUtils.random(16); + CommandLog commandLog = new CommandLog(LocalDateTime.now(), random); + Map map = hashMapper.toHash(commandLog); + return map; + } + +} diff --git a/agent/src/main/java/io/wdd/agent/initialization/bootup/BootUpAgent.sh b/agent/src/main/java/io/wdd/agent/initialization/bootup/BootUpAgent.sh index 27079d4..f0b894b 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/bootup/BootUpAgent.sh +++ b/agent/src/main/java/io/wdd/agent/initialization/bootup/BootUpAgent.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash - docker run -d \ -e ServerName: "${ServerName}" \ - -e serverIpPbV4: "$serverIpPbV4" \ + -e serverIpPbV4: "$serverIspPbV4" \ -e serverIpInV4: "$serverIpInV4" \ -e serverIpPbV6: "$serverIpPbV6" \ -e serverIpInV6: "$serverIpInV6" \ @@ -20,4 +19,9 @@ docker run -d \ -e tcpControl: "$tcpControl" \ -e virtualization: "$virtualization" \ -e ioSpeed: "$ioSpeed" \ + --privileged \ + --net=host \ + --pid=host \ + --ipc=host \ + --volume /:/host \ icederce/wdd-octopus-agent:latest \ No newline at end of file diff --git a/agent/src/main/java/io/wdd/agent/initialization/bootup/CollectSystemInfo.java b/agent/src/main/java/io/wdd/agent/initialization/bootup/CollectSystemInfo.java index f2636d4..deb392e 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/bootup/CollectSystemInfo.java +++ b/agent/src/main/java/io/wdd/agent/initialization/bootup/CollectSystemInfo.java @@ -1,7 +1,7 @@ package io.wdd.agent.initialization.bootup; -import io.wdd.agent.initialization.beans.AgentServerInfo; +import io.wdd.agent.config.beans.init.AgentServerInfo; import io.wdd.common.handler.MyRuntimeException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.ObjectUtils; diff --git a/agent/src/main/java/io/wdd/agent/initialization/bootup/OctopusAgentInitService.java b/agent/src/main/java/io/wdd/agent/initialization/bootup/OctopusAgentInitService.java index 8681352..52a8ddd 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/bootup/OctopusAgentInitService.java +++ b/agent/src/main/java/io/wdd/agent/initialization/bootup/OctopusAgentInitService.java @@ -2,7 +2,7 @@ package io.wdd.agent.initialization.bootup; import com.fasterxml.jackson.databind.ObjectMapper; import com.rabbitmq.client.Channel; -import io.wdd.agent.initialization.beans.AgentServerInfo; +import io.wdd.agent.config.beans.init.AgentServerInfo; import io.wdd.agent.message.ToServerMessage; import io.wdd.agent.message.handler.OctopusMessageHandler; import io.wdd.common.beans.rabbitmq.OctopusMessage; diff --git a/agent/src/main/java/io/wdd/agent/initialization/bootup.sh b/agent/src/main/java/io/wdd/agent/initialization/bootup/reference/bootup.sh similarity index 100% rename from agent/src/main/java/io/wdd/agent/initialization/bootup.sh rename to agent/src/main/java/io/wdd/agent/initialization/bootup/reference/bootup.sh diff --git a/agent/src/main/java/io/wdd/agent/initialization/rabbitmq/GenerateOctopusConnection.java b/agent/src/main/java/io/wdd/agent/initialization/message/GenOctopusRabbitMQConnection.java similarity index 97% rename from agent/src/main/java/io/wdd/agent/initialization/rabbitmq/GenerateOctopusConnection.java rename to agent/src/main/java/io/wdd/agent/initialization/message/GenOctopusRabbitMQConnection.java index a87a38a..71501ad 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/rabbitmq/GenerateOctopusConnection.java +++ b/agent/src/main/java/io/wdd/agent/initialization/message/GenOctopusRabbitMQConnection.java @@ -1,4 +1,4 @@ -package io.wdd.agent.initialization.rabbitmq; +package io.wdd.agent.initialization.message; import com.fasterxml.jackson.databind.ObjectMapper; @@ -30,7 +30,7 @@ import java.util.List; @Component @Slf4j @RequiredArgsConstructor -public class GenerateOctopusConnection { +public class GenOctopusRabbitMQConnection { private final List messageListenerContainerList = new ArrayList<>(); private final SimpleRabbitListenerContainerFactory containerFactory; diff --git a/agent/src/main/java/io/wdd/agent/initialization/rabbitmq/InitRabbitMQConnector.java b/agent/src/main/java/io/wdd/agent/initialization/message/InitRabbitMQConnector.java similarity index 97% rename from agent/src/main/java/io/wdd/agent/initialization/rabbitmq/InitRabbitMQConnector.java rename to agent/src/main/java/io/wdd/agent/initialization/message/InitRabbitMQConnector.java index 2d1aa04..fe40722 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/rabbitmq/InitRabbitMQConnector.java +++ b/agent/src/main/java/io/wdd/agent/initialization/message/InitRabbitMQConnector.java @@ -1,4 +1,4 @@ -package io.wdd.agent.initialization.rabbitmq; +package io.wdd.agent.initialization.message; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; diff --git a/agent/src/main/java/io/wdd/agent/initialization/webtest/SendServerInfoController.java b/agent/src/main/java/io/wdd/agent/initialization/webtest/SendServerInfoController.java index 2f6bab0..b97cfc3 100644 --- a/agent/src/main/java/io/wdd/agent/initialization/webtest/SendServerInfoController.java +++ b/agent/src/main/java/io/wdd/agent/initialization/webtest/SendServerInfoController.java @@ -1,7 +1,7 @@ package io.wdd.agent.initialization.webtest; -import io.wdd.agent.initialization.beans.AgentServerInfo; +import io.wdd.agent.config.beans.init.AgentServerInfo; import io.wdd.agent.initialization.bootup.CollectSystemInfo; import io.wdd.agent.initialization.bootup.OctopusAgentInitService; import io.wdd.common.beans.response.R; diff --git a/agent/src/main/java/io/wdd/agent/message/ToServerMessage.java b/agent/src/main/java/io/wdd/agent/message/ToServerMessage.java index 6695677..99f49a1 100644 --- a/agent/src/main/java/io/wdd/agent/message/ToServerMessage.java +++ b/agent/src/main/java/io/wdd/agent/message/ToServerMessage.java @@ -3,8 +3,8 @@ package io.wdd.agent.message; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import io.wdd.agent.initialization.beans.AgentServerInfo; -import io.wdd.agent.initialization.rabbitmq.InitRabbitMQConnector; +import io.wdd.agent.config.beans.init.AgentServerInfo; +import io.wdd.agent.initialization.message.InitRabbitMQConnector; import io.wdd.common.beans.rabbitmq.OctopusMessage; import io.wdd.common.handler.MyRuntimeException; import lombok.extern.slf4j.Slf4j; diff --git a/agent/src/main/java/io/wdd/agent/message/handler/OctopusMessageHandler.java b/agent/src/main/java/io/wdd/agent/message/handler/OctopusMessageHandler.java index 16ca279..a9b04fa 100644 --- a/agent/src/main/java/io/wdd/agent/message/handler/OctopusMessageHandler.java +++ b/agent/src/main/java/io/wdd/agent/message/handler/OctopusMessageHandler.java @@ -1,7 +1,7 @@ package io.wdd.agent.message.handler; -import io.wdd.agent.config.rabbitmq.handler.*; +import io.wdd.agent.config.message.handler.*; import io.wdd.common.beans.rabbitmq.OctopusMessage; import org.springframework.stereotype.Service; diff --git a/agent/src/main/resources/application.yml b/agent/src/main/resources/application.yml index 14c8c79..f93ef74 100644 --- a/agent/src/main/resources/application.yml +++ b/agent/src/main/resources/application.yml @@ -12,6 +12,20 @@ spring: username: boge password: boge14@Level5 virtual-host: /wddserver + listener: + simple: + retry: + # ack failed will reentrant the Rabbit Listener + max-attempts: 5 + enabled: true + # retry interval unit ms + max-interval: 5000 + initial-interval: 5000 + redis: + host: 127.0.0.1 + port: 36379 + database: 0 + password: boge14@Level5 octopus: message: diff --git a/agent/src/test/java/io/wdd/agent/InitRabbitMQTest.java b/agent/src/test/java/io/wdd/agent/InitRabbitMQTest.java index c0c94f3..b446cae 100644 --- a/agent/src/test/java/io/wdd/agent/InitRabbitMQTest.java +++ b/agent/src/test/java/io/wdd/agent/InitRabbitMQTest.java @@ -1,5 +1,6 @@ package io.wdd.agent; +import io.wdd.agent.excuetor.redis.StreamSenderTest; import io.wdd.agent.initialization.bootup.OctopusAgentInitService; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @@ -10,10 +11,12 @@ import javax.annotation.Resource; public class InitRabbitMQTest { @Resource - OctopusAgentInitService octopusAgentInitService; + StreamSenderTest streamSenderTest; @Test void testInitSendInfo(){ + + streamSenderTest.test(); } } diff --git a/pom.xml b/pom.xml index 9ed2e97..3b2948c 100644 --- a/pom.xml +++ b/pom.xml @@ -73,6 +73,12 @@ spring-boot-starter-amqp + + + org.springframework.boot + spring-boot-starter-data-redis + + org.springframework.boot spring-boot-devtools diff --git a/server/pom.xml b/server/pom.xml index 5d04ca5..b257180 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -66,10 +66,6 @@ runtime --> - - org.springframework.boot - spring-boot-starter-data-redis -