[ Agent ] [ Status ] - accomplish agent info part

This commit is contained in:
zeaslity
2024-01-18 15:56:07 +08:00
parent d1671bbe77
commit 86b6484194
6 changed files with 391 additions and 24 deletions

View File

@@ -26,18 +26,26 @@ type AgentMetric struct {
CPUMetric *CPUMetric
MemoryMetric *MemoryMetric
NetworkMetric []NetworkMetric
DiskInfo []DiskInfo
HostInfo *HostInfo
DiskMetric []DiskInfo
DockerMetric *DockerMetric
}
type AgentInfo struct {
CPUInfo *CPUInfo
MemoryInfo *MemoryInfo
NetworkInfo []NetworkInfo
DiskInfo []DiskInfo
HostInfo *HostInfo
DockerInfo *DockerMetric
}
func Ping() string {
return "PONG"
}
func ReportAgentMetric() *AgentMetric {
lenOfAgentMetric := 6
lenOfAgentMetric := 5
waitResultChan := make(chan string, lenOfAgentMetric)
timeout := time.After(5 * time.Second)
var err error
@@ -81,19 +89,6 @@ func ReportAgentMetric() *AgentMetric {
log.ErrorF("[ReportAgentMetric] - GetDiskInfo exec error => %v", err)
}
var hostInfo *HostInfo
err = pool.Submit(func() {
hostInfo, err = GetHostInfo()
if err != nil {
log.ErrorF("获取Agent的状态出现错误 请检查 => %v", err)
waitResultChan <- "GetHostInfo error !"
}
waitResultChan <- "hostInfo success !"
})
if err != nil {
log.ErrorF("[ReportAgentMetric] - hostInfo exec error => %v", err)
}
var networkMetric []NetworkMetric
err = pool.Submit(func() {
networkMetric, err = GetNetworkMetric()
@@ -133,13 +128,118 @@ func ReportAgentMetric() *AgentMetric {
CPUMetric: cpuMetric,
MemoryMetric: memoryMetric,
NetworkMetric: networkMetric,
DiskInfo: diskInfoList,
HostInfo: hostInfo,
DiskMetric: diskInfoList,
DockerMetric: dockerMetric,
}
}
func ReportAgentInfo() *AgentInfo {
lenOfAgentMetric := 6
waitResultChan := make(chan string, lenOfAgentMetric)
timeout := time.After(5 * time.Second)
var err error
var cpuInfo *CPUInfo
err = pool.Submit(func() {
cpuInfo, err = GetCPUInfo()
if err != nil {
log.ErrorF("获取Agent的状态出现错误 请检查 => %v", err)
waitResultChan <- "GetCPUInfo error !"
}
waitResultChan <- "GetCPUInfo success !"
})
if err != nil {
log.ErrorF("[ReportAgentInfo] - GetCPUInfo exec error => %v", err)
}
var memoryInfo *MemoryInfo
err = pool.Submit(func() {
memoryInfo, err = GetMemoryInfo()
if err != nil {
log.ErrorF("获取Agent的状态出现错误 请检查 => %v", err)
waitResultChan <- "GetMemoryInfo error !"
}
waitResultChan <- "GetMemoryInfo success !"
})
if err != nil {
log.ErrorF("[ReportAgentInfo] - GetMemoryInfo 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("[ReportAgentInfo] - GetDiskInfo exec error => %v", err)
}
var hostInfo *HostInfo
err = pool.Submit(func() {
hostInfo, err = GetHostInfo()
if err != nil {
log.ErrorF("获取Agent的状态出现错误 请检查 => %v", err)
waitResultChan <- "GetHostInfo error !"
}
waitResultChan <- "hostInfo success !"
})
if err != nil {
log.ErrorF("[ReportAgentInfo] - hostInfo exec error => %v", err)
}
var networkInfo []NetworkInfo
err = pool.Submit(func() {
networkInfo, err = GetNetworkInfo()
if err != nil {
log.ErrorF("获取Agent的状态出现错误 请检查 => %v", err)
waitResultChan <- "GetNetworkInfo error !"
}
waitResultChan <- "GetNetworkInfo success !"
})
if err != nil {
log.ErrorF("[ReportAgentInfo] - GetNetworkInfo 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("[ReportAgentInfo] - GetDockerMetric exec error => %v", err)
}
for i := 0; i < lenOfAgentMetric; i++ {
select {
case result := <-waitResultChan:
log.DebugF("[ReportAgentInfo] - metric received => %s", result)
case <-timeout:
fmt.Println("[ReportAgentInfo] - Timeout! Not all results received.")
break
}
}
return &AgentInfo{
CPUInfo: cpuInfo,
MemoryInfo: memoryInfo,
NetworkInfo: networkInfo,
DiskInfo: diskInfoList,
HostInfo: hostInfo,
DockerInfo: dockerMetric,
}
}
func ConvertToFormat(eventData float64) string {
duration := time.Duration(eventData) * time.Second