feat: #5 支持指定挂载路径

This commit is contained in:
Akizon77
2025-07-20 07:58:13 +00:00
parent 4704d0daa8
commit a984adc56d
3 changed files with 29 additions and 9 deletions

View File

@@ -13,5 +13,6 @@ var (
InfoReportInterval int
IncludeNics string
ExcludeNics string
IncludeMountpoints string
MonthRotate int
)

View File

@@ -70,6 +70,7 @@ func init() {
RootCmd.PersistentFlags().IntVar(&flags.InfoReportInterval, "info-report-interval", 5, "Interval in minutes for reporting basic info")
RootCmd.PersistentFlags().StringVar(&flags.IncludeNics, "include-nics", "", "Comma-separated list of network interfaces to include")
RootCmd.PersistentFlags().StringVar(&flags.ExcludeNics, "exclude-nics", "", "Comma-separated list of network interfaces to exclude")
RootCmd.PersistentFlags().StringVar(&flags.IncludeMountpoints, "include-mountpoint", "", "Semicolon-separated list of mount points to include for disk statistics")
RootCmd.PersistentFlags().IntVar(&flags.MonthRotate, "month-rotate", 0, "Month reset for network statistics (0 to disable)")
RootCmd.PersistentFlags().ParseErrorsWhitelist.UnknownFlags = true
}

View File

@@ -3,6 +3,7 @@ package monitoring
import (
"strings"
"github.com/komari-monitor/komari-agent/cmd/flags"
"github.com/shirou/gopsutil/v4/disk"
)
@@ -18,8 +19,24 @@ func Disk() DiskInfo {
diskinfo.Total = 0
diskinfo.Used = 0
} else {
// 如果指定了自定义挂载点,只统计指定的挂载点
if flags.IncludeMountpoints != "" {
includeMounts := strings.Split(flags.IncludeMountpoints, ";")
for _, mountpoint := range includeMounts {
mountpoint = strings.TrimSpace(mountpoint)
if mountpoint != "" {
u, err := disk.Usage(mountpoint)
if err != nil {
continue
} else {
diskinfo.Total += u.Total
diskinfo.Used += u.Used
}
}
}
} else {
// 使用默认逻辑,排除临时文件系统和网络驱动器
for _, part := range usage {
// 排除临时文件系统和网络驱动器
if isPhysicalDisk(part) {
u, err := disk.Usage(part.Mountpoint)
if err != nil {
@@ -31,6 +48,7 @@ func Disk() DiskInfo {
}
}
}
}
return diskinfo
}