Skip to content

Commit 9c67849

Browse files
committed
Update.
1 parent 051b3e1 commit 9c67849

File tree

5 files changed

+28
-37
lines changed

5 files changed

+28
-37
lines changed

db/badger.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -491,10 +491,8 @@ func (b *BadgerDB) FindAll(prefix string, result interface{}) error {
491491

492492
// 手动解析 Rules 字段(模拟 GORM 的 AfterFind 钩子)
493493
if alertRules, ok := result.(*[]*model.AlertRule); ok {
494-
log.Printf("FindAll: 开始解析 %d 条报警规则的 Rules 字段", len(*alertRules))
495-
for i, rule := range *alertRules {
494+
for _, rule := range *alertRules {
496495
if rule != nil {
497-
log.Printf("FindAll: 处理报警规则 %d: ID=%d, Name=%s, RulesRaw=%s", i+1, rule.ID, rule.Name, rule.RulesRaw)
498496
if rule.RulesRaw != "" {
499497
// 解析 RulesRaw 到 Rules 字段
500498
if err := utils.Json.Unmarshal([]byte(rule.RulesRaw), &rule.Rules); err != nil {

service/singleton/alertsentinel.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -529,19 +529,28 @@ func generateDetailedAlertMessage(alert *model.AlertRule, server *model.Server,
529529
message += fmt.Sprintf("• 进程数过多: %d (阈值: %.0f)\n",
530530
server.State.ProcessCount, rule.Max)
531531
case ruleType == "offline":
532-
// 使用正确的最后在线时间字段
532+
// 修复离线时长计算:使用服务器实际离线的时间点
533533
var lastSeenTime time.Time
534+
var offlineDuration time.Duration
535+
536+
// 优先使用LastOnline字段(这是服务器最后一次在线的准确时间)
534537
if !server.LastOnline.IsZero() {
535538
lastSeenTime = server.LastOnline
539+
offlineDuration = time.Since(lastSeenTime)
536540
} else if !server.LastActive.IsZero() {
541+
// 如果没有LastOnline,使用LastActive,但需要考虑离线超时时间
537542
lastSeenTime = server.LastActive
543+
// 减去离线检测的超时时间(3分钟),得到更准确的离线时长
544+
offlineDuration = time.Since(lastSeenTime) - (3 * time.Minute)
545+
if offlineDuration < 0 {
546+
offlineDuration = time.Since(lastSeenTime)
547+
}
538548
} else {
539-
lastSeenTime = time.Now().Add(-24 * time.Hour) // 默认24小时前
549+
// 如果都没有,说明服务器从未上线过
550+
lastSeenTime = time.Now().Add(-time.Hour) // 默认1小时前
551+
offlineDuration = time.Hour
540552
}
541553

542-
// 计算离线时长
543-
offlineDuration := time.Since(lastSeenTime)
544-
545554
message += fmt.Sprintf("• 服务器离线: 最后在线时间 %s (离线时长: %s)\n",
546555
lastSeenTime.Format("2006-01-02 15:04:05"),
547556
formatDuration(offlineDuration))
@@ -782,19 +791,28 @@ func generateDetailedRecoveryMessage(alert *model.AlertRule, server *model.Serve
782791
}
783792

784793
if hasOfflineRule {
785-
// 使用正确的最后在线时间字段
794+
// 修复恢复消息中的离线时长计算
786795
var lastSeenTime time.Time
796+
var offlineDuration time.Duration
797+
798+
// 优先使用LastOnline字段(这是服务器最后一次在线的准确时间)
787799
if !server.LastOnline.IsZero() {
788800
lastSeenTime = server.LastOnline
801+
offlineDuration = now.Sub(lastSeenTime)
789802
} else if !server.LastActive.IsZero() {
803+
// 如果没有LastOnline,使用LastActive,但需要考虑离线超时时间
790804
lastSeenTime = server.LastActive
805+
// 减去离线检测的超时时间(3分钟),得到更准确的离线时长
806+
offlineDuration = now.Sub(lastSeenTime) - (3 * time.Minute)
807+
if offlineDuration < 0 {
808+
offlineDuration = now.Sub(lastSeenTime)
809+
}
791810
} else {
811+
// 如果都没有,说明服务器从未上线过
792812
lastSeenTime = now.Add(-time.Hour) // 默认1小时前
813+
offlineDuration = time.Hour
793814
}
794815

795-
// 计算离线时长(从离线到恢复)
796-
offlineDuration := now.Sub(lastSeenTime)
797-
798816
message += fmt.Sprintf("• 服务器已恢复上线: 上次离线时间 %s (离线时长: %s)\n",
799817
lastSeenTime.Format("2006-01-02 15:04:05"),
800818
formatDuration(offlineDuration))

service/singleton/badger_adapter.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -330,18 +330,6 @@ func loadServersFromBadgerDB() error {
330330
return SortedServerListForGuest[i].DisplayIndex < SortedServerListForGuest[j].DisplayIndex
331331
})
332332

333-
log.Printf("服务器列表加载完成: 共 %d 台服务器, 排序后 %d 台, 访客可见 %d 台",
334-
len(ServerList), len(SortedServerList), len(SortedServerListForGuest))
335-
336-
// 显示服务器ID列表,用于调试
337-
if len(ServerList) > 0 {
338-
ids := []uint64{}
339-
for id := range ServerList {
340-
ids = append(ids, id)
341-
}
342-
log.Printf("服务器ID列表: %v", ids)
343-
}
344-
345333
return nil
346334
}
347335

service/singleton/server.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,15 @@ func loadServers() {
4141
if Conf.DatabaseType == "badger" {
4242
// 使用 BadgerDB 加载服务器
4343
if db.DB != nil {
44-
log.Printf("使用BadgerDB加载服务器列表...")
4544
serverOps := db.NewServerOps(db.DB)
4645
var err error
4746
servers, err = serverOps.GetAllServers()
4847
if err != nil {
4948
log.Printf("从 BadgerDB 加载服务器列表失败: %v", err)
5049
// 检查具体错误类型,适当处理
51-
log.Printf("尝试修复BadgerDB服务器加载问题...")
5250
// 确保服务器列表为空数组而不是nil
5351
servers = []*model.Server{}
5452
} else {
55-
log.Printf("从 BadgerDB 加载了 %d 台服务器", len(servers))
5653
// 确保没有nil条目
5754
for i, s := range servers {
5855
if s == nil {
@@ -70,13 +67,11 @@ func loadServers() {
7067
}
7168
} else {
7269
// 使用 GORM (SQLite) 加载服务器
73-
log.Printf("使用SQLite加载服务器列表...")
7470
var sqliteServers []model.Server
7571
DB.Find(&sqliteServers)
7672
for _, s := range sqliteServers {
7773
servers = append(servers, &s)
7874
}
79-
log.Printf("从 SQLite 加载了 %d 台服务器", len(servers))
8075
}
8176

8277
// 清空当前服务器列表,确保是干净的状态
@@ -173,7 +168,6 @@ func loadServers() {
173168
innerS.TaskCloseLock = new(sync.Mutex)
174169

175170
// 将服务器添加到映射表
176-
log.Printf("添加服务器到列表: ID=%d, 名称=%s", innerS.ID, innerS.Name)
177171
ServerList[innerS.ID] = innerS
178172

179173
// 处理Secret映射
@@ -195,14 +189,10 @@ func loadServers() {
195189
if Conf.DatabaseType == "badger" {
196190
if err := SaveServerToBadgerDB(innerS); err != nil {
197191
log.Printf("保存服务器 %s (ID: %d) 的新Secret到BadgerDB失败: %v", innerS.Name, innerS.ID, err)
198-
} else {
199-
log.Printf("已为服务器 %s (ID: %d) 生成并保存新Secret: %s", innerS.Name, innerS.ID, newSecret)
200192
}
201193
} else {
202194
if err := DB.Save(innerS).Error; err != nil {
203195
log.Printf("保存服务器 %s (ID: %d) 的新Secret到SQLite失败: %v", innerS.Name, innerS.ID, err)
204-
} else {
205-
log.Printf("已为服务器 %s (ID: %d) 生成并保存新Secret: %s", innerS.Name, innerS.ID, newSecret)
206196
}
207197
}
208198
}
@@ -214,7 +204,6 @@ func loadServers() {
214204
}
215205
}
216206

217-
log.Printf("服务器加载完成,共加载 %d 台服务器", len(ServerList))
218207
ReSortServer()
219208
}
220209

service/singleton/servicesentinel.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,6 @@ func (ss *ServiceSentinel) loadMonitorHistory() {
273273
if Conf.DatabaseType == "badger" {
274274
if db.DB != nil {
275275
// 使用BadgerDB加载监控历史记录
276-
log.Printf("BadgerDB模式:正在加载监控历史记录...")
277-
278276
// 获取最近30天的监控历史记录
279277
endTime := time.Now()
280278
startTime := endTime.AddDate(0, 0, -30)

0 commit comments

Comments
 (0)