/
swap.go
69 lines (65 loc) · 1.41 KB
/
swap.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package builtin
import (
"owl/common/types"
"time"
"github.com/shirou/gopsutil/mem"
)
func SwapMetrics(cycle int, ch chan types.TimeSeriesData) {
for _, metric := range swapMetrics(cycle) {
if metric == nil {
continue
}
ch <- *metric
}
}
func swapMetrics(cycle int) []*types.TimeSeriesData {
metrics := make([]*types.TimeSeriesData, 6)
cnt, err := mem.SwapMemory()
if err != nil {
return nil
}
ts := time.Now().Unix()
metrics[0] = &types.TimeSeriesData{
Metric: "system.swap.total",
Value: float64(cnt.Total),
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
metrics[1] = &types.TimeSeriesData{
Metric: "system.swap.used_pct",
Value: cnt.UsedPercent,
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
metrics[2] = &types.TimeSeriesData{
Metric: "system.swap.free",
Value: float64(cnt.Free),
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
metrics[3] = &types.TimeSeriesData{
Metric: "system.swap.used",
Value: float64(cnt.Used),
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
metrics[4] = &types.TimeSeriesData{
Metric: "system.swap.sin",
Value: float64(cnt.Sin),
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
metrics[5] = &types.TimeSeriesData{
Metric: "system.swap.sout",
Value: float64(cnt.Sout),
Cycle: cycle,
Timestamp: ts,
DataType: "GAUGE",
}
return metrics
}