mirror of
https://github.com/Monibuca/plugin-summary.git
synced 2025-09-27 03:26:06 +08:00
网卡支持按正则匹配有效网卡设备
This commit is contained in:
3
go.mod
3
go.mod
@@ -1,4 +1,4 @@
|
|||||||
module github.com/Monibuca/plugin-summary
|
module github.com/Monibuca/plugin-summary/v3
|
||||||
|
|
||||||
go 1.13
|
go 1.13
|
||||||
|
|
||||||
@@ -6,6 +6,7 @@ require (
|
|||||||
github.com/Monibuca/engine/v3 v3.4.5
|
github.com/Monibuca/engine/v3 v3.4.5
|
||||||
github.com/Monibuca/utils/v3 v3.0.5
|
github.com/Monibuca/utils/v3 v3.0.5
|
||||||
github.com/StackExchange/wmi v1.2.1 // indirect
|
github.com/StackExchange/wmi v1.2.1 // indirect
|
||||||
|
github.com/gogf/gf v1.16.6 // indirect
|
||||||
github.com/shirou/gopsutil v3.21.6+incompatible
|
github.com/shirou/gopsutil v3.21.6+incompatible
|
||||||
github.com/tklauser/go-sysconf v0.3.9 // indirect
|
github.com/tklauser/go-sysconf v0.3.9 // indirect
|
||||||
)
|
)
|
||||||
|
49
summary.go
49
summary.go
@@ -1,8 +1,10 @@
|
|||||||
package plugin_summary
|
package plugin_summary
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/gogf/gf/text/gregex"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
. "github.com/Monibuca/engine/v3"
|
. "github.com/Monibuca/engine/v3"
|
||||||
@@ -17,12 +19,18 @@ import (
|
|||||||
var Summary ServerSummary
|
var Summary ServerSummary
|
||||||
var config = struct {
|
var config = struct {
|
||||||
SampleRate int
|
SampleRate int
|
||||||
}{1}
|
NetAdapter string //在容器化设备会有很多无效的虚拟网卡,只读取有意义的网卡
|
||||||
|
}{1, ""}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
plugin := PluginConfig{
|
plugin := PluginConfig{
|
||||||
Name: "Summary",
|
Name: "Summary",
|
||||||
Config: &config,
|
Config: &config,
|
||||||
|
HotConfig: map[string]func(interface{}){
|
||||||
|
"NetAdapter": func(v interface{}) {
|
||||||
|
config.NetAdapter = v.(string)
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
plugin.Install(Summary.StartSummary)
|
plugin.Install(Summary.StartSummary)
|
||||||
http.HandleFunc("/api/summary", summary)
|
http.HandleFunc("/api/summary", summary)
|
||||||
@@ -133,29 +141,14 @@ func (s *ServerSummary) Report(slave *ServerSummary) {
|
|||||||
}
|
}
|
||||||
func (s *ServerSummary) collect() {
|
func (s *ServerSummary) collect() {
|
||||||
v, _ := mem.VirtualMemory()
|
v, _ := mem.VirtualMemory()
|
||||||
//c, _ := cpu.Info()
|
|
||||||
d, _ := disk.Usage("/")
|
d, _ := disk.Usage("/")
|
||||||
//n, _ := host.Info()
|
|
||||||
nv, _ := net.IOCounters(true)
|
nv, _ := net.IOCounters(true)
|
||||||
//boottime, _ := host.BootTime()
|
|
||||||
//btime := time.Unix(int64(boottime), 0).Format("2006-01-02 15:04:05")
|
|
||||||
s.Memory.Total = v.Total / 1024 / 1024
|
s.Memory.Total = v.Total / 1024 / 1024
|
||||||
s.Memory.Free = v.Available / 1024 / 1024
|
s.Memory.Free = v.Available / 1024 / 1024
|
||||||
s.Memory.Used = v.Used / 1024 / 1024
|
s.Memory.Used = v.Used / 1024 / 1024
|
||||||
s.Memory.Usage = v.UsedPercent
|
s.Memory.Usage = v.UsedPercent
|
||||||
//fmt.Printf(" Mem : %v MB Free: %v MB Used:%v Usage:%f%%\n", v.Total/1024/1024, v.Available/1024/1024, v.Used/1024/1024, v.UsedPercent)
|
|
||||||
//if len(c) > 1 {
|
|
||||||
// for _, sub_cpu := range c {
|
|
||||||
// modelname := sub_cpu.ModelName
|
|
||||||
// cores := sub_cpu.Cores
|
|
||||||
// fmt.Printf(" CPU : %v %v cores \n", modelname, cores)
|
|
||||||
// }
|
|
||||||
//} else {
|
|
||||||
// sub_cpu := c[0]
|
|
||||||
// modelname := sub_cpu.ModelName
|
|
||||||
// cores := sub_cpu.Cores
|
|
||||||
// fmt.Printf(" CPU : %v %v cores \n", modelname, cores)
|
|
||||||
//}
|
|
||||||
if cc, _ := cpu.Percent(time.Second, false); len(cc) > 0 {
|
if cc, _ := cpu.Percent(time.Second, false); len(cc) > 0 {
|
||||||
s.CPUUsage = cc[0]
|
s.CPUUsage = cc[0]
|
||||||
}
|
}
|
||||||
@@ -174,12 +167,20 @@ func (s *ServerSummary) collect() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
s.lastNetWork = s.NetWork
|
s.lastNetWork = s.NetWork
|
||||||
//fmt.Printf(" Network: %v bytes / %v bytes\n", nv[0].BytesRecv, nv[0].BytesSent)
|
|
||||||
//fmt.Printf(" SystemBoot:%v\n", btime)
|
|
||||||
//fmt.Printf(" CPU Used : used %f%% \n", cc[0])
|
|
||||||
//fmt.Printf(" HD : %v GB Free: %v GB Usage:%f%%\n", d.Total/1024/1024/1024, d.Free/1024/1024/1024, d.UsedPercent)
|
|
||||||
//fmt.Printf(" OS : %v(%v) %v \n", n.Platform, n.PlatformFamily, n.PlatformVersion)
|
|
||||||
//fmt.Printf(" Hostname : %v \n", n.Hostname)
|
|
||||||
s.Streams = Streams.ToList()
|
s.Streams = Streams.ToList()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//NetAdapter 通过匹配和正则判断要过滤的无效网卡
|
||||||
|
func isNetAdapter(name string) bool {
|
||||||
|
if name == "" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
//正则用@作正则修饰符
|
||||||
|
if !strings.Contains(name, "@") {
|
||||||
|
return strings.Contains(name, config.NetAdapter)
|
||||||
|
}
|
||||||
|
|
||||||
|
return gregex.IsMatchString(config.NetAdapter, name)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user