mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-06 05:30:05 +00:00
♻️ 优化取网卡流量及硬盘容量
Co-authored-by: CHN-STUDENT <21209416+CHN-STUDENT@users.noreply.github.com>
This commit is contained in:
@@ -22,7 +22,7 @@ func GetHost() *model.Host {
|
||||
hi, _ := host.Info()
|
||||
var cpuType string
|
||||
if hi.VirtualizationSystem != "" {
|
||||
cpuType = "Virtual"
|
||||
cpuType = "Vrtual"
|
||||
} else {
|
||||
cpuType = "Physical"
|
||||
}
|
||||
@@ -37,15 +37,15 @@ func GetHost() *model.Host {
|
||||
}
|
||||
mv, _ := mem.VirtualMemory()
|
||||
ms, _ := mem.SwapMemory()
|
||||
u, _ := disk.Usage("/")
|
||||
diskTotal, _ := getDiskTotalAndUsed()
|
||||
|
||||
return &model.Host{
|
||||
Platform: hi.OS,
|
||||
PlatformVersion: hi.PlatformVersion,
|
||||
CPU: cpus,
|
||||
MemTotal: mv.Total,
|
||||
DiskTotal: u.Total,
|
||||
SwapTotal: ms.Total,
|
||||
DiskTotal: diskTotal,
|
||||
Arch: hi.KernelArch,
|
||||
Virtualization: hi.VirtualizationSystem,
|
||||
BootTime: hi.BootTime,
|
||||
@@ -57,23 +57,19 @@ func GetHost() *model.Host {
|
||||
|
||||
func GetState(delay int64) *model.HostState {
|
||||
hi, _ := host.Info()
|
||||
// Memory
|
||||
mv, _ := mem.VirtualMemory()
|
||||
ms, _ := mem.SwapMemory()
|
||||
// CPU
|
||||
var cpuPercent float64
|
||||
cp, err := cpu.Percent(time.Second*time.Duration(delay), false)
|
||||
if err == nil {
|
||||
cpuPercent = cp[0]
|
||||
}
|
||||
// Disk
|
||||
u, _ := disk.Usage("/")
|
||||
|
||||
_, diskUsed := getDiskTotalAndUsed()
|
||||
return &model.HostState{
|
||||
CPU: cpuPercent,
|
||||
MemUsed: mv.Used,
|
||||
SwapUsed: ms.Used,
|
||||
DiskUsed: u.Used,
|
||||
DiskUsed: diskUsed,
|
||||
NetInTransfer: atomic.LoadUint64(&netInTransfer),
|
||||
NetOutTransfer: atomic.LoadUint64(&netOutTransfer),
|
||||
NetInSpeed: atomic.LoadUint64(&netInSpeed),
|
||||
@@ -84,10 +80,22 @@ func GetState(delay int64) *model.HostState {
|
||||
|
||||
func TrackNetworkSpeed() {
|
||||
var innerNetInTransfer, innerNetOutTransfer uint64
|
||||
nc, err := net.IOCounters(false)
|
||||
nc, err := net.IOCounters(true)
|
||||
if err == nil {
|
||||
innerNetInTransfer += nc[0].BytesRecv
|
||||
innerNetOutTransfer += nc[0].BytesSent
|
||||
for _, v := range nc {
|
||||
if strings.Contains(v.Name, "lo") ||
|
||||
strings.Contains(v.Name, "tun") ||
|
||||
strings.Contains(v.Name, "docker") ||
|
||||
strings.Contains(v.Name, "veth") ||
|
||||
strings.Contains(v.Name, "br-") ||
|
||||
strings.Contains(v.Name, "vmbr") ||
|
||||
strings.Contains(v.Name, "vnet") ||
|
||||
strings.Contains(v.Name, "kube") {
|
||||
continue
|
||||
}
|
||||
innerNetInTransfer += v.BytesRecv
|
||||
innerNetOutTransfer += v.BytesSent
|
||||
}
|
||||
now := uint64(time.Now().Unix())
|
||||
diff := now - atomic.LoadUint64(&lastUpdate)
|
||||
if diff > 0 {
|
||||
@@ -99,3 +107,32 @@ func TrackNetworkSpeed() {
|
||||
atomic.StoreUint64(&lastUpdate, now)
|
||||
}
|
||||
}
|
||||
|
||||
func getDiskTotalAndUsed() (total uint64, used uint64) {
|
||||
diskList, _ := disk.Partitions(false)
|
||||
for _, d := range diskList {
|
||||
fsType := strings.ToLower(d.Fstype)
|
||||
if strings.Contains(fsType, "ext4") ||
|
||||
strings.Contains(fsType, "ext3") ||
|
||||
strings.Contains(fsType, "ext2") ||
|
||||
strings.Contains(fsType, "reiserfs") ||
|
||||
strings.Contains(fsType, "jfs") ||
|
||||
strings.Contains(fsType, "btrfs") ||
|
||||
strings.Contains(fsType, "fuseblk") ||
|
||||
strings.Contains(fsType, "zfs") ||
|
||||
strings.Contains(fsType, "simfs") ||
|
||||
strings.Contains(fsType, "ntfs") ||
|
||||
strings.Contains(fsType, "fat32") ||
|
||||
strings.Contains(fsType, "exfat") ||
|
||||
strings.Contains(fsType, "xfs") {
|
||||
diskUsageOf, _ := disk.Usage(d.Mountpoint)
|
||||
path := diskUsageOf.Path
|
||||
// 不统计 K8s 的虚拟挂载点,see here:https://github.com/shirou/gopsutil/issues/1007
|
||||
if !strings.Contains(path, "/var/lib/kubelet") {
|
||||
total += diskUsageOf.Total
|
||||
used += diskUsageOf.Used
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user