MCPcopy Create free account
hub / github.com/astercloud/aster / GetEventSummary

Method GetEventSummary

pkg/security/audit.go:742–782  ·  view source on GitHub ↗

GetEventSummary 获取事件摘要

(timeRange TimeRange)

Source from the content-addressed store, hash-verified

740
741// GetEventSummary 获取事件摘要
742func (al *InMemoryAuditLog) GetEventSummary(timeRange TimeRange) (*EventSummary, error) {
743 query := &AuditQuery{
744 TimeRange: &timeRange,
745 }
746
747 result, err := al.QueryEvents(context.Background(), query)
748 if err != nil {
749 return nil, err
750 }
751
752 summary := &EventSummary{
753 TimeRange: timeRange,
754 TotalEvents: result.Total,
755 KeyMetrics: make(map[string]any),
756 Trends: []TrendData{},
757 Alerts: []SecurityAlert{},
758 }
759
760 // 生成趋势数据
761 trendData := make(map[string]int64)
762 for _, event := range result.Events {
763 hour := event.Timestamp.Truncate(time.Hour)
764 key := hour.Format("2006-01-02 15:00")
765 trendData[key]++
766 }
767
768 for timestamp, count := range trendData {
769 t, _ := time.Parse("2006-01-02 15:00", timestamp)
770 summary.Trends = append(summary.Trends, TrendData{
771 Timestamp: t,
772 Value: count,
773 Label: timestamp,
774 })
775 }
776
777 // 设置关键指标
778 summary.KeyMetrics["events_per_hour"] = float64(result.Total) / timeRange.End.Sub(timeRange.Start).Hours()
779 summary.KeyMetrics["unique_users"] = len(getUniqueUsers(result.Events))
780
781 return summary, nil
782}
783
784// ArchiveEvents 归档事件
785func (al *InMemoryAuditLog) ArchiveEvents(ctx context.Context, before time.Time) (int64, error) {

Callers

nothing calls this directly

Calls 3

QueryEventsMethod · 0.95
getUniqueUsersFunction · 0.85
ParseMethod · 0.65

Tested by

no test coverage detected