/
server-analytics.go
55 lines (42 loc) · 1.92 KB
/
server-analytics.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
import "os"
import "time"
import "github.com/jpillora/go-ogle-analytics"
import linuxproc "github.com/c9s/goprocinfo/linux"
func main() {
uaid := os.Getenv("UAID")
if uaid == "" {
panic("UAID environment required. Example: UAID=UA-XXXXXX-Y ./server-analytics")
}
client, err := ga.NewClient(uaid)
if err != nil {
panic(err)
}
ticker := time.NewTicker(15 * time.Second)
quit := make(chan struct{})
stop := false
for !stop {
select {
case <- ticker.C:
diskInfo, err := linuxproc.ReadDisk("/")
_ = err
client.Send(ga.NewEvent("Disk", "All").Label("Total Disk Space").Value(int64(diskInfo.All)))
client.Send(ga.NewEvent("Disk", "Used").Label("Used Disk Space").Value(int64(diskInfo.Used)))
client.Send(ga.NewEvent("Disk", "Free").Label("Free Disk Space").Value(int64(diskInfo.Free)))
loadAvg, err := linuxproc.ReadLoadAvg("/proc/loadavg")
_ = err
client.Send(ga.NewEvent("Load Average", "1m").Label("1m").Value(int64(loadAvg.Last1Min)))
client.Send(ga.NewEvent("Load Average", "5m").Label("5m").Value(int64(loadAvg.Last5Min)))
client.Send(ga.NewEvent("Load Average", "15m").Label("15m").Value(int64(loadAvg.Last15Min)))
client.Send(ga.NewEvent("Load Average", "Running").Label("Process Running").Value(int64(loadAvg.ProcessRunning)))
client.Send(ga.NewEvent("Load Average", "Total").Label("Process Total").Value(int64(loadAvg.ProcessTotal)))
meminfo, err := linuxproc.ReadMemInfo("/proc/meminfo")
_ = err
client.Send(ga.NewEvent("Memory", "Total").Label("Memory Total").Value(int64(meminfo.MemTotal)))
client.Send(ga.NewEvent("Memory", "Free").Label("Memory Free").Value(int64(meminfo.MemFree)))
case <- quit:
ticker.Stop()
return
}
}
}