mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-21 18:53:37 +00:00
fix: properly handle 100% thresholds to disable alerts (addresses #434)
When a threshold is set to 100%, it now effectively disables alerts for that metric. This allows users to turn off specific alerts without disabling all alerts for a resource. Also clears any existing alerts when threshold is changed to 100%.
This commit is contained in:
@@ -923,6 +923,35 @@ func (m *Manager) checkMetric(resourceID, resourceName, node, instance, resource
|
||||
return
|
||||
}
|
||||
|
||||
// Special case: 100% threshold effectively disables alerts for this metric
|
||||
if threshold.Trigger >= 100 {
|
||||
log.Debug().
|
||||
Str("resource", resourceName).
|
||||
Str("metric", metricType).
|
||||
Float64("value", value).
|
||||
Float64("threshold", threshold.Trigger).
|
||||
Msg("Alert disabled (100% threshold)")
|
||||
|
||||
// Clear any existing alert for this metric
|
||||
alertID := fmt.Sprintf("%s-%s", resourceID, metricType)
|
||||
m.mu.Lock()
|
||||
if _, exists := m.activeAlerts[alertID]; exists {
|
||||
delete(m.activeAlerts, alertID)
|
||||
log.Info().
|
||||
Str("alertID", alertID).
|
||||
Str("resource", resourceName).
|
||||
Str("metric", metricType).
|
||||
Msg("Cleared alert - threshold set to 100%")
|
||||
|
||||
// Notify resolution
|
||||
if m.onResolved != nil {
|
||||
go m.onResolved(alertID)
|
||||
}
|
||||
}
|
||||
m.mu.Unlock()
|
||||
return
|
||||
}
|
||||
|
||||
log.Debug().
|
||||
Str("resource", resourceName).
|
||||
Str("metric", metricType).
|
||||
|
||||
Reference in New Issue
Block a user