hpds_control_center/model/nodeState.go

61 lines
2.6 KiB
Go

package model
// NodeState 节点状态信息
type NodeState struct {
Uptime uint64 `xorm:"BIGINT pk" json:"uptime,omitempty"`
NodeName string `xorm:"varchar(100) pk" json:"nodeName"`
CPU float64 `xorm:"DECIMAL(18,4)" json:"cpu,omitempty"`
MemUsed uint64 `xorm:"BIGINT" json:"memUsed,omitempty"`
SwapUsed uint64 `xorm:"BIGINT" json:"swapUsed,omitempty"`
DiskUsed uint64 `xorm:"BIGINT" json:"diskUsed,omitempty"`
NetInTransfer uint64 `xorm:"BIGINT" json:"netInTransfer,omitempty"`
NetOutTransfer uint64 `xorm:"BIGINT" json:"netOutTransfer,omitempty"`
NetInSpeed uint64 `xorm:"BIGINT" json:"netInSpeed,omitempty"`
NetOutSpeed uint64 `xorm:"BIGINT" json:"netOutSpeed,omitempty"`
Load1 float64 `xorm:"DECIMAL(18,4)" json:"load1,omitempty"`
Load5 float64 `xorm:"DECIMAL(18,4)" json:"load5,omitempty"`
Load15 float64 `xorm:"DECIMAL(18,4)" json:"load15,omitempty"`
TcpConnCount uint64 `xorm:"BIGINT" json:"tcpConnCount,omitempty"`
UdpConnCount uint64 `xorm:"BIGINT" json:"udpConnCount,omitempty"`
ProcessCount uint64 `xorm:"BIGINT" json:"processCount,omitempty"`
}
type NodeLastStateItem struct {
NodeId int64 `json:"nodeId"`
NodeGuid string `json:"nodeGuid"`
NodeName string `json:"nodeName"`
NodeType int `json:"nodeType"`
MemTotal uint64 `json:"memTotal"`
SwapTotal uint64 `json:"swapTotal"`
CpuUsed float64 `json:"cpuUsed"`
MemUsed uint64 `json:"memUsed"`
SwapUsed uint64 `json:"swapUsed"`
Load1 float64 `json:"load1"`
Load5 float64 `json:"load5"`
Load15 float64 `json:"load15"`
ExecTask string `json:"execTask"`
}
func GetNodeState(nodeList []Node) []NodeLastStateItem {
list := make([]NodeLastStateItem, 0)
err := DB.SQL(`select c.node_id,c.node_name,c.node_guid,c.node_type,c.node_type,c.mem_total,
c.swap_total,a.c_p_u cpu_used, a.mem_used,a.swap_used, a.load1, a.load5, a.load15,
d.task_name exec_task from node_state a , (select node_name, max(uptime) uptime from node_state group by node_name) b, node c
left join (select t2.node_id, t2.task_name from task t2, (select node_id, max(start_time) start from task group by node_id) t1
where t2.node_id = t1.node_id and t2.start_time = t1.start and t2.status = 1) d on c.node_id = d.node_id
where a.node_name = b.node_name and a.uptime = b.uptime and a.node_name = c.node_guid and c.node_status > 0 `).Find(&list)
if err != nil {
return nil
}
resList := make([]NodeLastStateItem, 0)
for _, v := range list {
for _, val := range nodeList {
if v.NodeGuid == val.NodeGuid {
resList = append(resList, v)
break
}
}
}
return resList
}