mirror of
https://github.com/wuwuwu223/system_query.git
synced 2026-04-22 15:27:19 +08:00
初始化仓库
This commit is contained in:
@@ -0,0 +1 @@
|
||||
.idea
|
||||
@@ -0,0 +1,15 @@
|
||||
module system_query
|
||||
|
||||
go 1.18
|
||||
|
||||
require github.com/shirou/gopsutil/v3 v3.22.4
|
||||
|
||||
require (
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
|
||||
github.com/tklauser/go-sysconf v0.3.10 // indirect
|
||||
github.com/tklauser/numcpus v0.4.0 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 // indirect
|
||||
)
|
||||
@@ -0,0 +1,33 @@
|
||||
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
|
||||
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
|
||||
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
|
||||
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
github.com/shirou/gopsutil/v3 v3.22.4 h1:srAQaiX6jX/cYL6q29aE0m8lOskT9CurZ9N61YR3yoI=
|
||||
github.com/shirou/gopsutil/v3 v3.22.4/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw=
|
||||
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
|
||||
github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o=
|
||||
github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ=
|
||||
github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg=
|
||||
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 h1:XDXtA5hveEEV8JB2l7nhMTp3t3cHp9ZpwcdjqyEWLlo=
|
||||
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
@@ -0,0 +1,103 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
"github.com/shirou/gopsutil/v3/disk"
|
||||
"github.com/shirou/gopsutil/v3/host"
|
||||
"github.com/shirou/gopsutil/v3/mem"
|
||||
"github.com/shirou/gopsutil/v3/net"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var sid string
|
||||
var ethx string
|
||||
flag.StringVar(&sid, "s", "我的mac", "服务器名字")
|
||||
flag.StringVar(ðx, "i", "en0", "网卡名")
|
||||
flag.Parse()
|
||||
txlast, rxlast, txplast, rxplast := getTxRx(ethx)
|
||||
for {
|
||||
time.Sleep(1 * time.Second)
|
||||
go func() {
|
||||
v, _ := mem.VirtualMemory()
|
||||
info, _ := cpu.Info()
|
||||
c, _ := cpu.Percent(0*time.Second, false)
|
||||
uptime, _ := host.Uptime()
|
||||
arch, _ := host.KernelArch()
|
||||
version, _ := host.KernelVersion()
|
||||
d, _ := disk.Usage("/")
|
||||
tcpConns, _ := net.Connections("tcp")
|
||||
udpConns, _ := net.Connections("udp")
|
||||
swap, _ := mem.SwapMemory()
|
||||
txnow, rxnow, txpnow, rxpnow := getTxRx(ethx)
|
||||
server := &Server{
|
||||
Name: sid,
|
||||
Uptime: uptime,
|
||||
NetworkRx: rxnow - rxlast,
|
||||
NetworkTx: txnow - txlast,
|
||||
NetworkIn: rxnow,
|
||||
NetworkOut: txnow,
|
||||
RxpNow: rxpnow - rxplast,
|
||||
TxpNow: txpnow - txplast,
|
||||
Rxp: rxpnow,
|
||||
Txp: txpnow,
|
||||
Cpu: strconv.Itoa(runtime.NumCPU()) + "*" + info[0].ModelName,
|
||||
CpuUsedPercent: c[0],
|
||||
CpuVersion: version,
|
||||
CpuArch: arch,
|
||||
MemoryTotal: v.Total,
|
||||
MemoryUsedPercent: v.UsedPercent,
|
||||
SwapTotal: swap.Total,
|
||||
SwapUsedPercent: swap.UsedPercent,
|
||||
HddTotal: d.Total,
|
||||
HddUsedPercent: d.UsedPercent,
|
||||
TcpNum: len(tcpConns),
|
||||
UdpNum: len(udpConns),
|
||||
}
|
||||
str, _ := json.Marshal(server)
|
||||
fmt.Println(string(str))
|
||||
rxlast = rxnow
|
||||
txlast = txnow
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
func getTxRx(name string) (uint64, uint64, uint64, uint64) {
|
||||
counters, _ := net.IOCounters(true)
|
||||
for i := range counters {
|
||||
if counters[i].Name == name {
|
||||
return counters[i].BytesRecv, counters[i].BytesSent, counters[i].PacketsRecv, counters[i].PacketsSent
|
||||
}
|
||||
}
|
||||
return 0, 0, 0, 0
|
||||
}
|
||||
|
||||
type Server struct {
|
||||
Name string `json:"name"`
|
||||
Uptime uint64 `json:"uptime"`
|
||||
NetworkRx uint64 `json:"network_rx"`
|
||||
NetworkTx uint64 `json:"network_tx"`
|
||||
NetworkIn uint64 `json:"network_in"`
|
||||
NetworkOut uint64 `json:"network_out"`
|
||||
Cpu string `json:"cpu"`
|
||||
CpuUsedPercent float64 `json:"cpu_used_percent"`
|
||||
MemoryTotal uint64 `json:"memory_total"`
|
||||
MemoryUsedPercent float64 `json:"memory_used_percent"`
|
||||
SwapTotal uint64 `json:"swap_total"`
|
||||
SwapUsedPercent float64 `json:"swap_used_percent"`
|
||||
HddTotal uint64 `json:"hdd_total"`
|
||||
HddUsedPercent float64 `json:"hdd_used_percent"`
|
||||
RxpNow uint64 `json:"rxp_now"`
|
||||
TxpNow uint64 `json:"txp_now"`
|
||||
CpuVersion string `json:"cpu_version"`
|
||||
CpuArch string `json:"cpu_arch"`
|
||||
Rxp uint64 `json:"rxp"`
|
||||
Txp uint64 `json:"txp"`
|
||||
TcpNum int `json:"tcp_num"`
|
||||
UdpNum int `json:"udp_num"`
|
||||
}
|
||||
Reference in New Issue
Block a user