Browse Source

新增系统信息

master
xyiege 5 months ago
parent
commit
16985412e1
  1. 92
      aufs/core/sysmonitor.go
  2. 3
      aufs/go.mod
  3. 13
      aufs/go.sum
  4. 3
      aufs/main.go

92
aufs/core/sysmonitor.go

@ -0,0 +1,92 @@
package core
import (
"fmt"
"log"
"net/http"
"time"
"github.com/shirou/gopsutil/v3/cpu"
"github.com/shirou/gopsutil/v3/disk"
"github.com/shirou/gopsutil/v3/mem"
"github.com/shirou/gopsutil/v3/net"
"github.com/shirou/gopsutil/v3/process"
)
// 系统监控
func SysMonitor(w http.ResponseWriter, r *http.Request) {
// 设置 CORS 头部
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "GET")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
// 磁盘容量信息
diskInfo, err := disk.Usage("/")
if err != nil {
fmt.Println("获取磁盘信息失败:", err)
return
} else {
fmt.Println("=== 磁盘信息 ===")
fmt.Printf("总容量: %.2f GB\n", float64(diskInfo.Total)/1024/1024/1024)
fmt.Printf("已使用: %.2f GB\n", float64(diskInfo.Used)/1024/1024/1024)
fmt.Printf("可用空间: %.2f GB\n", float64(diskInfo.Free)/1024/1024/1024)
fmt.Printf("使用率: %.2f%%\n", diskInfo.UsedPercent)
}
// 获取CPU占用率 (需要等待1秒来计算)
cpuPercent, err := cpu.Percent(time.Second, false)
if err != nil {
log.Printf("获取CPU信息失败: %v", err)
} else {
fmt.Println("\n=== CPU信息 ===")
fmt.Printf("CPU使用率: %.2f%%\n", cpuPercent[0])
}
// 获取内存占用信息
memInfo, err := mem.VirtualMemory()
if err != nil {
log.Printf("获取内存信息失败: %v", err)
} else {
fmt.Println("\n=== 内存信息 ===")
fmt.Printf("总内存: %.2f GB\n", float64(memInfo.Total)/1024/1024/1024)
fmt.Printf("已使用: %.2f GB\n", float64(memInfo.Used)/1024/1024/1024)
fmt.Printf("可用内存: %.2f GB\n", float64(memInfo.Available)/1024/1024/1024)
fmt.Printf("内存使用率: %.2f%%\n", memInfo.UsedPercent)
}
// 获取网络流量信息
netIO, err := net.IOCounters(false)
if err != nil {
log.Printf("获取网络信息失败: %v", err)
} else if len(netIO) > 0 {
fmt.Println("\n=== 网络信息 ===")
fmt.Printf("总接收: %.2f MB\n", float64(netIO[0].BytesRecv)/1024/1024)
fmt.Printf("总发送: %.2f MB\n", float64(netIO[0].BytesSent)/1024/1024)
fmt.Printf("接收包数: %d\n", netIO[0].PacketsRecv)
fmt.Printf("发送包数: %d\n", netIO[0].PacketsSent)
}
// 获取系统进程信息 (只获取前5个进程)
processes, err := process.Processes()
if err != nil {
log.Printf("获取进程信息失败: %v", err)
} else {
fmt.Println("\n=== 进程信息 (前5个) ===")
count := 0
for _, p := range processes {
if count >= 5 {
break
}
pid := p.Pid
name, _ := p.Name()
cpuPercent, _ := p.CPUPercent()
memPercent, _ := p.MemoryPercent()
fmt.Printf("PID: %d, 名称: %s, CPU使用率: %.2f%%, 内存使用率: %.2f%%\n",
pid, name, cpuPercent, memPercent)
count++
}
}
}

3
aufs/go.mod

@ -8,11 +8,14 @@ require (
github.com/jmoiron/sqlx v1.4.0
github.com/logoove/sqlite v1.37.1
github.com/schollz/progressbar/v3 v3.18.0
github.com/shirou/gopsutil/v3 v3.20.10
google.golang.org/protobuf v1.36.7
)
require (
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/go-ole/go-ole v1.2.4 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect

13
aufs/go.sum

@ -1,11 +1,16 @@
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
@ -38,6 +43,11 @@ github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA=
github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec=
github.com/shirou/gopsutil v2.18.10/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/shirou/gopsutil/v3 v3.20.10 h1:7zomV9HJv6UGk225YtvEa5+camNLpbua3MAz/GqiVJY=
github.com/shirou/gopsutil/v3 v3.20.10/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o=
@ -46,6 +56,7 @@ golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w=
golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20201024232916-9f70ab9862d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
@ -55,6 +66,8 @@ golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo=
golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=
google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A=
google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM=

3
aufs/main.go

@ -28,6 +28,9 @@ func startWeb() {
// http.HandleFunc("/rc", core.ReceiveHandler)
// 发送zip文件
// http.HandleFunc("/sendZip", core.SendZip)
// 系统监控
http.HandleFunc("/sysinfo", core.SysMonitor)
// 内存信息
http.HandleFunc("/dtmem", core.Dtmem)

Loading…
Cancel
Save