增加获取网络流量的功能
This commit is contained in:
		
							parent
							
								
									27b3bfacbd
								
							
						
					
					
						commit
						e857790db1
					
				|  | @ -75,6 +75,7 @@ func NewStartCmd() *cobra.Command { | ||||||
| 			for { | 			for { | ||||||
| 				select { | 				select { | ||||||
| 				case <-statTicker.C: | 				case <-statTicker.C: | ||||||
|  | 					monitor.TrackNetworkSpeed() | ||||||
| 					stat := monitor.GetState(node.NodeName).ToByte() | 					stat := monitor.GetState(node.NodeName).ToByte() | ||||||
| 					go func() { | 					go func() { | ||||||
| 						_ = generateAndSendData(ap, stat) | 						_ = generateAndSendData(ap, stat) | ||||||
|  |  | ||||||
|  | @ -28,6 +28,9 @@ var ( | ||||||
| 		"apfs", "ext4", "ext3", "ext2", "f2fs", "reiserfs", "jfs", "btrfs", | 		"apfs", "ext4", "ext3", "ext2", "f2fs", "reiserfs", "jfs", "btrfs", | ||||||
| 		"fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs", "fuse.rclone", | 		"fuseblk", "zfs", "simfs", "ntfs", "fat32", "exfat", "xfs", "fuse.rclone", | ||||||
| 	} | 	} | ||||||
|  | 	excludeNetInterfaces = []string{ | ||||||
|  | 		"lo", "tun", "docker", "veth", "br-", "vmbr", "vnet", "kube", | ||||||
|  | 	} | ||||||
| 	getMacDiskNo = regexp.MustCompile(`\/dev\/disk(\d)s.*`) | 	getMacDiskNo = regexp.MustCompile(`\/dev\/disk(\d)s.*`) | ||||||
| 	Version      string | 	Version      string | ||||||
| ) | ) | ||||||
|  | @ -46,8 +49,8 @@ func GetHost() *model.Node { | ||||||
| 		cpuModelCount[ci[i].ModelName]++ | 		cpuModelCount[ci[i].ModelName]++ | ||||||
| 	} | 	} | ||||||
| 	var cpus []string | 	var cpus []string | ||||||
| 	for model, count := range cpuModelCount { | 	for mod, count := range cpuModelCount { | ||||||
| 		cpus = append(cpus, fmt.Sprintf("%s %d %s Core", model, count, cpuType)) | 		cpus = append(cpus, fmt.Sprintf("%s %d %s Core", mod, count, cpuType)) | ||||||
| 	} | 	} | ||||||
| 	mv, _ := mem.VirtualMemory() | 	mv, _ := mem.VirtualMemory() | ||||||
| 	diskTotal, _ := getDiskTotalAndUsed() | 	diskTotal, _ := getDiskTotalAndUsed() | ||||||
|  | @ -208,3 +211,26 @@ func isListContainsStr(list []string, str string) bool { | ||||||
| 	} | 	} | ||||||
| 	return false | 	return false | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func TrackNetworkSpeed() { | ||||||
|  | 	var innerNetInTransfer, innerNetOutTransfer uint64 | ||||||
|  | 	nc, err := net.IOCounters(true) | ||||||
|  | 	if err == nil { | ||||||
|  | 		for _, v := range nc { | ||||||
|  | 			if isListContainsStr(excludeNetInterfaces, v.Name) { | ||||||
|  | 				continue | ||||||
|  | 			} | ||||||
|  | 			innerNetInTransfer += v.BytesRecv | ||||||
|  | 			innerNetOutTransfer += v.BytesSent | ||||||
|  | 		} | ||||||
|  | 		now := uint64(time.Now().Unix()) | ||||||
|  | 		diff := now - lastUpdateNetStats | ||||||
|  | 		if diff > 0 { | ||||||
|  | 			netInSpeed = (innerNetInTransfer - netInTransfer) / diff | ||||||
|  | 			netOutSpeed = (innerNetOutTransfer - netOutTransfer) / diff | ||||||
|  | 		} | ||||||
|  | 		netInTransfer = innerNetInTransfer | ||||||
|  | 		netOutTransfer = innerNetOutTransfer | ||||||
|  | 		lastUpdateNetStats = now | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue