增加获取网络流量的功能
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