diff --git a/agent-go/rabbitmq/OctopusMessage.go b/agent-go/rabbitmq/OctopusMessage.go index 2c684ad..869bf8a 100644 --- a/agent-go/rabbitmq/OctopusMessage.go +++ b/agent-go/rabbitmq/OctopusMessage.go @@ -3,9 +3,11 @@ package rabbitmq import ( "agent-go/executor" "agent-go/g" + "agent-go/status" "agent-go/utils" "encoding/json" "fmt" + "strings" "time" ) @@ -105,10 +107,28 @@ func executorOMHandler(octopusMessage *OctopusMessage) { } func statusOMHandler(octopusMessage *OctopusMessage) { - log.Info("接收到查询Agent状态的请求,假装已经处理") - //statusMessageString := octopusMessage.Content.(string) + statusMsgString := octopusMessage.Content.(string) + var statusMessage *status.StatusMessage + err := json.Unmarshal([]byte(statusMsgString), &statusMessage) + if err != nil { + log.Error(fmt.Sprintf("status message convert to json is wrong! msg is => %s", statusMsgString)) + return + } + var statusRes string + if strings.HasPrefix(statusMessage.Type, "p") { + // ping info + statusRes = status.Ping() + } else { + // status info + agentStatusString, _ := json.Marshal(status.ReportAppStatus()) + statusRes = string(agentStatusString) + } + + // 返回消息 + + log.InfoF("接收到查询Agent状态的请求,结果为 => %s", statusRes) } func blackHoleOMHandler(octopusMessage *OctopusMessage) { diff --git a/agent-go/status/Status.go b/agent-go/status/Status.go index 5e4e666..63d65db 100644 --- a/agent-go/status/Status.go +++ b/agent-go/status/Status.go @@ -8,6 +8,19 @@ import ( var log = logger2.Log +type StatusMessage struct { + /** + * which kind of status should be return + * metric => short time message + * all => all agent status message + * healthy => check for healthy + * */ + Type string `json:"type,omitempty"` + AgentTopicName string `json:"agent_topic_name,omitempty"` + MetricRepeatCount int `json:"metric_repeat_count,omitempty"` + metricRepeatPinch int `json:"metric_repeat_pinch,omitempty"` +} + type AgentStatus struct { CPUStatus *CPUStatus MemoryStatus *MemoryStatus diff --git a/agent-go/tmp/status-agentStatus.json b/agent-go/tmp/status-agentStatus.json new file mode 100644 index 0000000..e69de29 diff --git a/agent-go/tmp/status-ping.json b/agent-go/tmp/status-ping.json new file mode 100644 index 0000000..3046aa4 --- /dev/null +++ b/agent-go/tmp/status-ping.json @@ -0,0 +1,8 @@ +{ + "uuid": "2023-03-27 14:38:49", + "init_time": "2023-03-27T14:38:49.8162801+08:00", + "type": "PING", + "content": "ping", + "result": "", + "ac_time": "0001-01-01T00:00:00Z" +} diff --git a/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java b/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java new file mode 100644 index 0000000..4ab2767 --- /dev/null +++ b/server/src/main/java/io/wdd/rpc/status/beans/AgentStatus.java @@ -0,0 +1,23 @@ +package io.wdd.rpc.status.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class AgentStatus { + + @JsonProperty("CPUStatus") + private CPUInfo cPUStatus; + + @JsonProperty("MemoryStatus") + private MemoryInfo memoryStatus; + + @JsonProperty("NetworkStatus") + private NetworkInfo networkStatus; + + @JsonProperty("DiskStatus") + private DiskInfo diskStatus; + +} diff --git a/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java b/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java new file mode 100644 index 0000000..7b8c7de --- /dev/null +++ b/server/src/main/java/io/wdd/rpc/status/beans/DiskInfo.java @@ -0,0 +1,32 @@ +package io.wdd.rpc.status.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@NoArgsConstructor +@Data +public class DiskInfo { + + @JsonProperty("Total") + private Long total; + @JsonProperty("Used") + private Long used; + @JsonProperty("LogicalDisk") + private List logicalDisk; + + @NoArgsConstructor + @Data + public static class LogicalDiskDTO { + @JsonProperty("device") + private String device; + @JsonProperty("mountpoint") + private String mountpoint; + @JsonProperty("fstype") + private String fstype; + @JsonProperty("opts") + private List opts; + } +} diff --git a/server/src/main/java/io/wdd/rpc/status/beans/MemoryInfo.java b/server/src/main/java/io/wdd/rpc/status/beans/MemoryInfo.java new file mode 100644 index 0000000..15971af --- /dev/null +++ b/server/src/main/java/io/wdd/rpc/status/beans/MemoryInfo.java @@ -0,0 +1,21 @@ +package io.wdd.rpc.status.beans; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +public class MemoryInfo { + + @JsonProperty("TotalMemory") + private Long totalMemory; + @JsonProperty("UsedMemory") + private Long usedMemory; + @JsonProperty("AvailableMemory") + private Long availableMemory; + @JsonProperty("TotalVirtualMemory") + private Long totalVirtualMemory; + @JsonProperty("UsedVirtualMemory") + private Long usedVirtualMemory; +} diff --git a/server/src/main/java/io/wdd/rpc/status/beans/Status.java b/server/src/main/java/io/wdd/rpc/status/beans/Status.java deleted file mode 100644 index fd2c5d5..0000000 --- a/server/src/main/java/io/wdd/rpc/status/beans/Status.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.wdd.rpc.status.beans; - -public class AgentStatus { - -}