From dd1df44211c0fd58dd0e236a70e65c368d626170 Mon Sep 17 00:00:00 2001 From: Pulse Monitor Date: Tue, 2 Sep 2025 21:36:46 +0000 Subject: [PATCH] enhance: optimize default schedule settings for production use - Enable alert cooldown by default (5 minutes) to prevent notification spam - Enable rate limiting by default (10 alerts/hour) to prevent flooding - Enable smart grouping by default (30 second window, group by node) - Keep quiet hours disabled by default (requires user configuration) - Keep escalation disabled by default (requires user setup) These defaults provide sensible protection against notification overload while allowing users to opt-in to more advanced scheduling features --- internal/alerts/alerts.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/internal/alerts/alerts.go b/internal/alerts/alerts.go index 241c9135a..2494994d6 100644 --- a/internal/alerts/alerts.go +++ b/internal/alerts/alerts.go @@ -232,7 +232,7 @@ func NewManager() *Manager { Overrides: make(map[string]ThresholdConfig), Schedule: ScheduleConfig{ QuietHours: QuietHours{ - Enabled: false, + Enabled: false, // OFF - users should opt-in to quiet hours Start: "22:00", End: "08:00", Timezone: "America/New_York", @@ -246,11 +246,11 @@ func NewManager() *Manager { "sunday": false, }, }, - Cooldown: 5, // 5 minutes default - GroupingWindow: 30, // 30 seconds default - MaxAlertsHour: 10, // 10 alerts per hour default + Cooldown: 5, // ON - 5 minutes prevents spam + GroupingWindow: 30, // ON - 30 seconds groups related alerts + MaxAlertsHour: 10, // ON - 10 alerts/hour prevents flooding Escalation: EscalationConfig{ - Enabled: false, + Enabled: false, // OFF - requires user configuration Levels: []EscalationLevel{ {After: 15, Notify: "email"}, {After: 30, Notify: "webhook"}, @@ -258,10 +258,10 @@ func NewManager() *Manager { }, }, Grouping: GroupingConfig{ - Enabled: true, - Window: 30, - ByNode: true, - ByGuest: false, + Enabled: true, // ON - reduces notification noise + Window: 30, // 30 second window for grouping + ByNode: true, // Group by node for mass node issues + ByGuest: false, // Don't group by guest by default }, }, },