feat(logic): 优化数据采集器启动流程并增加节点状态管理功能

- 移除配置参数依赖,改为直接调用Boot()函数
- 添加主机名自动获取和设置功能
- 新增SaveNodeStatus函数用于保存节点状态数据
- 在数据变化时同时保存节点状态信息
- 创建CollectorNode数据库模型用于存储节点状态
This commit is contained in:
2026-04-24 09:40:48 +08:00
parent b2bfcc5e5e
commit 8bae04bc5e
5 changed files with 92 additions and 45 deletions

View File

@@ -8,28 +8,26 @@ import (
"syscall"
"time"
"git.apinb.com/quant/collector/internal/conf"
"github.com/robfig/cron/v3"
)
var (
COLLECTOR_URL = "http://localhost:5000/status"
COLLECTION_INTERVAL = 30
HOSTNAME = "localhost"
)
func Boot(cfg *conf.Config) {
func Boot() {
log.Println("=== QMT数据采集器启动 ===")
log.Printf("采集地址: %s", COLLECTOR_URL)
log.Printf("采集间隔: %d秒", COLLECTION_INTERVAL)
if cfg == nil {
log.Println("配置为空")
return
host, err := os.Hostname()
if err != nil {
panic(fmt.Errorf("获取主机名失败: %v", err))
} else {
HOSTNAME = host
}
log.Printf("账户: %s", cfg.Account)
log.Printf("账户ID: %s", cfg.AccountID)
log.Printf("主机名: %s", cfg.Hostname)
log.Printf("主机名称: %s", HOSTNAME)
// 创建采集器
coll := NewCollector(COLLECTOR_URL)
@@ -45,7 +43,7 @@ func Boot(cfg *conf.Config) {
log.Printf("定时任务表达式: %s", cronSpec)
// 添加定时任务
_, err := c.AddFunc(cronSpec, func() {
_, err = c.AddFunc(cronSpec, func() {
runCollection(coll)
})
if err != nil {
@@ -99,6 +97,12 @@ func runCollection(coll *Collector) {
return
}
// 保存节点状态(有则更新,没有则新增)
if err := SaveNodeStatus(&status.Status); err != nil {
log.Printf("保存节点状态失败: %v", err)
return
}
// 记录成功的日志
// if err := store.SaveCollectionLog(dataHash, ymd, true, "数据保存成功"); err != nil {
// log.Printf("保存采集日志失败: %v", err)