From a46336083602ecc865936aabad02aa5828da0b7e Mon Sep 17 00:00:00 2001 From: joy0x1 Date: Sat, 27 Dec 2025 16:36:00 +0900 Subject: [PATCH] fix: support counting host processes inside containers Allow configuring custom `/proc` path to count host processes via volume mount. --- cmd/flags/flag.go | 1 + monitoring/unit/process_linux.go | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/cmd/flags/flag.go b/cmd/flags/flag.go index 36e991e..3457d95 100644 --- a/cmd/flags/flag.go +++ b/cmd/flags/flag.go @@ -26,6 +26,7 @@ type Config struct { CustomIpv4 string `json:"custom_ipv4" env:"AGENT_CUSTOM_IPV4"` // 自定义 IPv4 地址 CustomIpv6 string `json:"custom_ipv6" env:"AGENT_CUSTOM_IPV6"` // 自定义 IPv6 地址 GetIpAddrFromNic bool `json:"get_ip_addr_from_nic" env:"AGENT_GET_IP_ADDR_FROM_NIC"` // 从网卡获取IP地址 + HostProc string `json:"host_proc" env:"HOST_PROC"` // 容器环境下宿主机/proc目录的挂载点,用于监控宿主机进程 ConfigFile string `json:"config_file" env:"AGENT_CONFIG_FILE"` // JSON配置文件路径 } diff --git a/monitoring/unit/process_linux.go b/monitoring/unit/process_linux.go index 97e64da..07a02f5 100644 --- a/monitoring/unit/process_linux.go +++ b/monitoring/unit/process_linux.go @@ -17,6 +17,12 @@ func ProcessCount() (count int) { func processCountLinux() (count int) { procDir := "/proc" + if flags.HostProc != "" { + if info, err := os.Stat(flags.HostProc); err == nil && info.IsDir() { + procDir = flags.HostProc + } + } + entries, err := os.ReadDir(procDir) if err != nil { return 0