-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmain.go
executable file
·94 lines (78 loc) · 2.84 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
93
94
/* ©INFINI, All Rights Reserved.
* mail: contact#infini.ltd */
package main
import (
"context"
_ "expvar"
log "github.com/cihub/seelog"
"infini.sh/agent/config"
_ "infini.sh/agent/plugin"
api3 "infini.sh/agent/plugin/api"
"infini.sh/framework"
"infini.sh/framework/core/global"
"infini.sh/framework/core/module"
task2 "infini.sh/framework/core/task"
"infini.sh/framework/core/util"
"infini.sh/framework/modules/api"
"infini.sh/framework/modules/elastic"
"infini.sh/framework/modules/keystore"
"infini.sh/framework/modules/metrics"
"infini.sh/framework/modules/pipeline"
queue2 "infini.sh/framework/modules/queue/disk_queue"
stats2 "infini.sh/framework/modules/stats"
"infini.sh/framework/modules/task"
_ "infini.sh/framework/plugins/elastic/bulk_indexing"
_ "infini.sh/framework/plugins/elastic/indexing_merge"
_ "infini.sh/framework/plugins/http"
_ "infini.sh/framework/plugins/queue/consumer"
"infini.sh/framework/plugins/simple_kv"
)
func main() {
terminalHeader := (" _ ___ __ __ _____ \n")
terminalHeader += (" /_\\ / _ \\ /__\\/\\ \\ \\/__ \\\n")
terminalHeader += (" //_\\\\ / /_\\//_\\ / \\/ / / /\\/\n")
terminalHeader += ("/ _ \\/ /_\\\\//__/ /\\ / / / \n")
terminalHeader += ("\\_/ \\_/\\____/\\__/\\_\\ \\/ \\/ \n\n")
terminalFooter := ""
app := framework.NewApp("agent", "A light-weight but powerful cloud agent.",
util.TrimSpaces(config.Version), util.TrimSpaces(config.BuildNumber), util.TrimSpaces(config.LastCommitLog), util.TrimSpaces(config.BuildDate), util.TrimSpaces(config.EOLDate), terminalHeader, terminalFooter)
app.Init(nil)
defer app.Shutdown()
if app.Setup(func() {
//load core modules first
module.RegisterSystemModule(&elastic.ElasticModule{})
module.RegisterSystemModule(&stats2.SimpleStatsModule{})
module.RegisterSystemModule(&simple_kv.SimpleKV{})
module.RegisterSystemModule(&queue2.DiskQueue{})
module.RegisterSystemModule(&api.APIModule{})
module.RegisterSystemModule(&pipeline.PipeModule{})
module.RegisterSystemModule(&task.TaskModule{})
module.RegisterUserPlugin(&metrics.MetricsModule{})
module.RegisterUserPlugin(&keystore.KeystoreModule{})
api3.InitAPI()
}, func() {
//start each module, with enabled provider
module.Start()
if global.Env().SystemConfig.Configs.AllowGeneratedMetricsTasks {
taskID := util.GetUUID()
task2.RegisterScheduleTask(task2.ScheduleTask{
ID: taskID,
Description: "generated metrics tasks for agent",
Type: "interval",
Interval: "20s",
Task: func(ctx context.Context) {
err := generatedMetricsTasksConfig()
if err != nil {
log.Error("error generating metrics tasks config: ", err)
return
}
//clean up task after success
task2.DeleteTask(taskID)
},
})
}
//if agent is mark as deleted, cleanup local configs
}, nil) {
app.Run()
}
}