[Agent] [Status] agent metric accomplish
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
package status
|
||||
|
||||
import (
|
||||
"agent-go/g"
|
||||
logger2 "agent-go/logger"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
var log = logger2.Log
|
||||
var pool = g.G.P
|
||||
|
||||
type StatusMessage struct {
|
||||
/**
|
||||
@@ -20,11 +22,107 @@ type StatusMessage struct {
|
||||
metricRepeatPinch int `json:"metricRepeatPinch,omitempty"`
|
||||
}
|
||||
|
||||
type AgentStatus struct {
|
||||
CPUStatus *CPUMetric
|
||||
MemoryStatus *MemoryMetric
|
||||
NetworkStatus *NetworkStatus
|
||||
DiskStatus *DiskStatus
|
||||
type AgentMetric struct {
|
||||
CPUMetric *CPUMetric
|
||||
MemoryMetric *MemoryMetric
|
||||
NetworkMetric []NetworkMetric
|
||||
DiskInfo []DiskInfo
|
||||
DockerMetric *DockerMetric
|
||||
}
|
||||
|
||||
func Ping() string {
|
||||
return "PONG"
|
||||
}
|
||||
|
||||
func ReportAgentMetric() *AgentMetric {
|
||||
|
||||
lenOfAgentMetric := 5
|
||||
waitResultChan := make(chan string, lenOfAgentMetric)
|
||||
timeout := time.After(5 * time.Second)
|
||||
var err error
|
||||
|
||||
var cpuMetric *CPUMetric
|
||||
err = pool.Submit(func() {
|
||||
cpuMetric, err = GetCPUMetric()
|
||||
if err != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查 => %v", err)
|
||||
waitResultChan <- "GetCPUMetric error !"
|
||||
}
|
||||
waitResultChan <- "GetCPUMetric success !"
|
||||
})
|
||||
if err != nil {
|
||||
log.ErrorF("[ReportAgentMetric] - GetCPUMetric exec error => %v", err)
|
||||
}
|
||||
|
||||
var memoryMetric *MemoryMetric
|
||||
err = pool.Submit(func() {
|
||||
memoryMetric, err = GetMemoryMetric()
|
||||
if err != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查 => %v", err)
|
||||
waitResultChan <- "GetMemoryMetric error !"
|
||||
}
|
||||
waitResultChan <- "GetMemoryMetric success !"
|
||||
})
|
||||
if err != nil {
|
||||
log.ErrorF("[ReportAgentMetric] - GetMemoryMetric exec error => %v", err)
|
||||
}
|
||||
|
||||
var diskInfoList []DiskInfo
|
||||
err = pool.Submit(func() {
|
||||
diskInfoList, err = GetDiskInfo()
|
||||
if err != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查 => %v", err)
|
||||
waitResultChan <- "GetDiskInfo error !"
|
||||
}
|
||||
waitResultChan <- "GetDiskInfo success !"
|
||||
})
|
||||
if err != nil {
|
||||
log.ErrorF("[ReportAgentMetric] - GetDiskInfo exec error => %v", err)
|
||||
}
|
||||
|
||||
var networkMetric []NetworkMetric
|
||||
err = pool.Submit(func() {
|
||||
networkMetric, err = GetNetworkMetric()
|
||||
if err != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查 => %v", err)
|
||||
waitResultChan <- "GetNetworkMetric error !"
|
||||
}
|
||||
waitResultChan <- "GetNetworkMetric success !"
|
||||
})
|
||||
if err != nil {
|
||||
log.ErrorF("[ReportAgentMetric] - GetNetworkMetric exec error => %v", err)
|
||||
}
|
||||
var dockerMetric *DockerMetric
|
||||
err = pool.Submit(func() {
|
||||
dockerMetric, err = GetDockerMetric()
|
||||
if err != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查 => %v", err)
|
||||
waitResultChan <- "GetDockerMetric error !"
|
||||
}
|
||||
waitResultChan <- "GetDockerMetric success !"
|
||||
})
|
||||
if err != nil {
|
||||
log.ErrorF("[ReportAgentMetric] - GetDockerMetric exec error => %v", err)
|
||||
}
|
||||
|
||||
for i := 0; i < lenOfAgentMetric; i++ {
|
||||
select {
|
||||
case result := <-waitResultChan:
|
||||
log.DebugF("[ReportAgentMetric] - metric received => %s", result)
|
||||
case <-timeout:
|
||||
fmt.Println("[ReportAgentMetric] - Timeout! Not all results received.")
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return &AgentMetric{
|
||||
CPUMetric: cpuMetric,
|
||||
MemoryMetric: memoryMetric,
|
||||
NetworkMetric: networkMetric,
|
||||
DiskInfo: diskInfoList,
|
||||
DockerMetric: dockerMetric,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func ConvertToFormat(eventData float64) string {
|
||||
@@ -38,26 +136,3 @@ func ConvertToFormat(eventData float64) string {
|
||||
milliseconds := duration.Milliseconds() % 1000
|
||||
return fmt.Sprintf("%02d:%02d:%02d,%03d", hours, minutes, seconds, milliseconds)
|
||||
}
|
||||
|
||||
func Ping() string {
|
||||
return "PONG"
|
||||
}
|
||||
|
||||
func ReportAppStatus() *AgentStatus {
|
||||
|
||||
cpuStatus, cpuerr := GetCPUMetric()
|
||||
memoryStatus, memerr := GetMemoryStatus()
|
||||
networkStatus, neterr := GetNetworkStatus()
|
||||
if cpuerr != nil || memerr != nil || neterr != nil {
|
||||
log.ErrorF("获取Agent的状态出现错误! 请检查")
|
||||
return nil
|
||||
}
|
||||
diskStatus := GetDiskStatus()
|
||||
return &AgentStatus{
|
||||
CPUStatus: cpuStatus,
|
||||
MemoryStatus: memoryStatus,
|
||||
NetworkStatus: networkStatus,
|
||||
DiskStatus: diskStatus,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user