From 547df7a40a3cedf405f07f292ae9dd36f9e59028 Mon Sep 17 00:00:00 2001 From: imlonghao Date: Sat, 2 Aug 2025 10:48:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=90=AF=E5=8A=A8=E6=97=B6=E8=BE=93?= =?UTF-8?q?=E5=87=BA=E7=9B=91=E6=8E=A7=E7=9A=84=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E5=92=8C=E7=BD=91=E5=8D=A1=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/root.go | 11 +++++++++++ monitoring/unit/disk.go | 24 ++++++++++++++++++++++++ monitoring/unit/net.go | 27 +++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index 4587d87..34233d6 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -7,6 +7,7 @@ import ( "os" "github.com/komari-monitor/komari-agent/cmd/flags" + monitoring "github.com/komari-monitor/komari-agent/monitoring/unit" "github.com/komari-monitor/komari-agent/server" "github.com/komari-monitor/komari-agent/update" "github.com/spf13/cobra" @@ -19,6 +20,16 @@ var RootCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { log.Println("Komari Agent", update.CurrentVersion) log.Println("Github Repo:", update.Repo) + diskList, err := monitoring.DiskList() + if err != nil { + log.Println("Failed to get disk list:", err) + } + log.Println("Monitoring Mountpoints:", diskList) + interfaceList, err := monitoring.InterfaceList() + if err != nil { + log.Println("Failed to get interface list:", err) + } + log.Println("Monitoring Interfaces:", interfaceList) // 忽略不安全的证书 if flags.IgnoreUnsafeCert { diff --git a/monitoring/unit/disk.go b/monitoring/unit/disk.go index a6e74ab..cd2d0dc 100644 --- a/monitoring/unit/disk.go +++ b/monitoring/unit/disk.go @@ -90,3 +90,27 @@ func isPhysicalDisk(part disk.PartitionStat) bool { return true } + +func DiskList() ([]string, error) { + diskList := []string{} + if flags.IncludeMountpoints != "" { + includeMounts := strings.Split(flags.IncludeMountpoints, ";") + for _, mountpoint := range includeMounts { + mountpoint = strings.TrimSpace(mountpoint) + if mountpoint != "" { + diskList = append(diskList, mountpoint) + } + } + } else { + usage, err := disk.Partitions(false) + if err != nil { + return nil, err + } + for _, part := range usage { + if isPhysicalDisk(part) { + diskList = append(diskList, part.Mountpoint) + } + } + } + return diskList, nil +} diff --git a/monitoring/unit/net.go b/monitoring/unit/net.go index 9a64b3b..bc760bb 100644 --- a/monitoring/unit/net.go +++ b/monitoring/unit/net.go @@ -321,3 +321,30 @@ func shouldInclude(nicName string, includeNics, excludeNics map[string]struct{}) return true } + +func InterfaceList() ([]string, error) { + includeNics := parseNics(flags.IncludeNics) + excludeNics := parseNics(flags.ExcludeNics) + interfaces := []string{} + if flags.MonthRotate != 0 { + vnstatData, err := getVnstatData() + if err == nil { + for interfaceName := range vnstatData { + if shouldInclude(interfaceName, includeNics, excludeNics) { + interfaces = append(interfaces, interfaceName) + } + } + return interfaces, nil + } + } + ioCounters, err := net.IOCounters(true) + if err != nil { + return nil, err + } + for _, interfaceStats := range ioCounters { + if shouldInclude(interfaceStats.Name, includeNics, excludeNics) { + interfaces = append(interfaces, interfaceStats.Name) + } + } + return interfaces, nil +}