初始化仓库

This commit is contained in:
mzfqy
2022-05-20 14:04:44 +08:00
commit 9299314da4
4 changed files with 152 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
.idea
+15
View File
@@ -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
)
+33
View File
@@ -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=
+103
View File
@@ -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(&ethx, "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"`
}