/
main.go
92 lines (77 loc) · 1.99 KB
/
main.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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package main
import (
"flag"
"fmt"
"time"
ag "github.com/open-falcon/agent/g"
"github.com/open-falcon/common/model"
jg "github.com/open-falcon/judge/g"
)
var (
agentConfig string = "agent.json"
judgeConfig string = "judge.json"
step int64
fnList []func()
)
func main() {
// Parse cmd-line flags
var loop int
var mode string
flag.IntVar(&loop, "loop", 1, "Loop times.")
flag.Int64Var(&step, "step", 60, "Time interval in sec.")
flag.StringVar(&mode, "mode", "all", "[all, hbs, transfer].")
flag.Parse()
switch mode {
case "hbs":
fnList = append(fnList, rpcHbsGetStrategies)
case "transfer":
fnList = append(fnList, rpcTransferUpdate)
case "all":
fnList = append(fnList, rpcHbsGetStrategies)
fnList = append(fnList, rpcTransferUpdate)
default:
flag.Usage()
}
// :~)
// Run periodically
for i := 1; i <= loop; i++ {
fmt.Printf("[LOOP.] # %3d\n", i)
for _, fn := range fnList {
fn()
}
if i < loop {
time.Sleep(time.Duration(step) * time.Second)
fmt.Println("")
}
}
}
func rpcHbsGetStrategies() {
jg.ParseConfig(judgeConfig)
jg.InitHbsClient()
var resp model.StrategiesResponse
err := jg.HbsClient.Call("Hbs.GetStrategies", model.NullRpcRequest{}, &resp)
if err != nil {
fmt.Println("[ERROR] Hbs.GetStrategies:", err)
return
}
fmt.Println("[RESP.] Hbs.GetStrategies:", resp)
for k, v := range resp.HostStrategies {
fmt.Printf("Idx:%v, Hostname:%v, Strategies:%v\n", k, v.Hostname, v.Strategies)
}
}
func rpcTransferUpdate() {
ag.ParseConfig(agentConfig)
ag.InitRpcClients()
now := time.Now().Unix()
value := now % 100
metrics := []*model.MetricValue{}
mv := &model.MetricValue{"fake-agent", "cpu.idle", value, step, "GAUGE", "module=transfer-fake", now}
metrics = append(metrics, mv)
fmt.Printf("[REQ .] <Total=%d> %v\n", len(metrics), metrics[0])
var resp model.TransferResponse
err := ag.TransferClient.Call("Transfer.Update", metrics, &resp)
if err != nil {
fmt.Println("[ERROR] Transfer.Update:", err)
}
fmt.Println("[RESP.]", &resp)
}