mirror of
https://github.com/fankes/komari-agent.git
synced 2025-10-20 03:29:24 +08:00
新增Linux GPU监控功能
参考了nezha-agent。实现了Linux服务器下NVIDIA显卡的监控。 通过 --gpu 参数启用显卡监控功能。 支持多显卡,显卡使用率,显存使用率监控 实现了AMD显卡的监控,但是未经过测试
This commit is contained in:
@@ -9,13 +9,26 @@ import (
|
||||
)
|
||||
|
||||
func GpuName() string {
|
||||
accept := []string{"vga", "nvidia", "amd", "radeon", "render"}
|
||||
// 调整优先级:专用显卡厂商优先,避免只识别集成显卡
|
||||
accept := []string{"nvidia", "amd", "radeon", "vga", "3d"}
|
||||
out, err := exec.Command("lspci").Output()
|
||||
if err == nil {
|
||||
lines := strings.Split(string(out), "\n")
|
||||
|
||||
// 首先尝试找专用显卡
|
||||
for _, line := range lines {
|
||||
lower := strings.ToLower(line)
|
||||
|
||||
// 跳过集成显卡和管理控制器
|
||||
if strings.Contains(lower, "aspeed") ||
|
||||
strings.Contains(lower, "matrox") ||
|
||||
strings.Contains(lower, "management") {
|
||||
continue
|
||||
}
|
||||
|
||||
// 优先匹配专用显卡厂商
|
||||
for _, a := range accept {
|
||||
if strings.Contains(strings.ToLower(line), a) {
|
||||
if strings.Contains(lower, a) {
|
||||
parts := strings.SplitN(line, ":", 4)
|
||||
if len(parts) >= 4 {
|
||||
return strings.TrimSpace(parts[3])
|
||||
@@ -27,6 +40,16 @@ func GpuName() string {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有找到专用显卡,返回第一个VGA设备作为兜底
|
||||
for _, line := range lines {
|
||||
if strings.Contains(strings.ToLower(line), "vga") {
|
||||
parts := strings.SplitN(line, ":", 4)
|
||||
if len(parts) >= 3 {
|
||||
return strings.TrimSpace(parts[2])
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return "None"
|
||||
}
|
||||
|
Reference in New Issue
Block a user