mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-11 02:15:48 +02:00
58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package analytic
|
|
|
|
import (
|
|
"github.com/shirou/gopsutil/v3/net"
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
type usage struct {
|
|
Time time.Time `json:"x"`
|
|
Usage interface{} `json:"y"`
|
|
}
|
|
|
|
var (
|
|
CpuUserRecord []usage
|
|
CpuTotalRecord []usage
|
|
NetRecvRecord []usage
|
|
NetSentRecord []usage
|
|
DiskWriteRecord []usage
|
|
DiskReadRecord []usage
|
|
LastDiskWrites uint64
|
|
LastDiskReads uint64
|
|
LastNetSent uint64
|
|
LastNetRecv uint64
|
|
)
|
|
|
|
func init() {
|
|
network, _ := net.IOCounters(false)
|
|
|
|
if len(network) > 0 {
|
|
LastNetRecv = network[0].BytesRecv
|
|
LastNetSent = network[0].BytesSent
|
|
}
|
|
|
|
LastDiskReads, LastDiskWrites = getTotalDiskIO()
|
|
|
|
now := time.Now()
|
|
// init record slices
|
|
for i := 100; i > 0; i-- {
|
|
u := usage{Time: now.Add(time.Duration(-i) * time.Second), Usage: 0}
|
|
CpuUserRecord = append(CpuUserRecord, u)
|
|
CpuTotalRecord = append(CpuTotalRecord, u)
|
|
NetRecvRecord = append(NetRecvRecord, u)
|
|
NetSentRecord = append(NetSentRecord, u)
|
|
DiskWriteRecord = append(DiskWriteRecord, u)
|
|
DiskReadRecord = append(DiskReadRecord, u)
|
|
}
|
|
}
|
|
|
|
func RecordServerAnalytic() {
|
|
log.Println("[Nginx UI] RecordServerAnalytic Started")
|
|
for {
|
|
now := time.Now()
|
|
recordCpu(now) // this func will spend more than 1 second.
|
|
recordNetwork(now)
|
|
recordDiskIO(now)
|
|
}
|
|
}
|