diff --git a/conf/defaults.ini b/conf/defaults.ini index c23fdb13f69..29cb40206c5 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -1147,8 +1147,8 @@ execute_alerts = true # The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. evaluation_timeout = 30s -# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence. -max_attempts = 3 +# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is 1. +max_attempts = 1 # Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. diff --git a/conf/sample.ini b/conf/sample.ini index a76b4ffffbf..868b5fc62d0 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -1094,8 +1094,8 @@ # The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;evaluation_timeout = 30s -# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. This option has a legacy version in the `[alerting]` section that takes precedence. -;max_attempts = 3 +# Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is 1. +;max_attempts = 1 # Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. This option has a legacy version in the `[alerting]` section that takes precedence. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. diff --git a/docs/sources/setup-grafana/configure-grafana/_index.md b/docs/sources/setup-grafana/configure-grafana/_index.md index eea7bf1b45d..a4a0ea38889 100644 --- a/docs/sources/setup-grafana/configure-grafana/_index.md +++ b/docs/sources/setup-grafana/configure-grafana/_index.md @@ -1595,7 +1595,7 @@ The timeout string is a possibly signed sequence of decimal numbers, followed by ### max_attempts -Sets a maximum number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is `3`. This option has a [legacy version in the alerting section]({{< relref "#max_attempts-1" >}}) that takes precedence. +Sets a maximum number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is `1`. ### min_interval diff --git a/pkg/setting/setting_unified_alerting.go b/pkg/setting/setting_unified_alerting.go index a67fae0b69c..2e141a2345d 100644 --- a/pkg/setting/setting_unified_alerting.go +++ b/pkg/setting/setting_unified_alerting.go @@ -47,7 +47,7 @@ const ( evaluatorDefaultEvaluationTimeout = 30 * time.Second schedulerDefaultAdminConfigPollInterval = time.Minute schedulereDefaultExecuteAlerts = true - schedulerDefaultMaxAttempts = 3 + schedulerDefaultMaxAttempts = 1 schedulerDefaultLegacyMinInterval = 1 screenshotsDefaultCapture = false screenshotsDefaultCaptureTimeout = 10 * time.Second @@ -294,15 +294,7 @@ func (cfg *Cfg) ReadUnifiedAlertingSettings(iniFile *ini.File) error { } uaCfg.EvaluationTimeout = uaEvaluationTimeout - uaMaxAttempts := ua.Key("max_attempts").MustInt64(schedulerDefaultMaxAttempts) - if uaMaxAttempts == schedulerDefaultMaxAttempts { // unified option or equals the default - legacyMaxAttempts := alerting.Key("max_attempts").MustInt64(schedulerDefaultMaxAttempts) - if legacyMaxAttempts != schedulerDefaultMaxAttempts { - cfg.Logger.Warn("falling back to legacy setting of 'max_attempts'; please use the configuration option in the `unified_alerting` section if Grafana 8 alerts are enabled.") - } - uaMaxAttempts = legacyMaxAttempts - } - uaCfg.MaxAttempts = uaMaxAttempts + uaCfg.MaxAttempts = ua.Key("max_attempts").MustInt64(schedulerDefaultMaxAttempts) uaCfg.BaseInterval = SchedulerBaseInterval diff --git a/pkg/setting/setting_unified_alerting_test.go b/pkg/setting/setting_unified_alerting_test.go index af9b73678d6..cbbb30bd64d 100644 --- a/pkg/setting/setting_unified_alerting_test.go +++ b/pkg/setting/setting_unified_alerting_test.go @@ -110,20 +110,19 @@ func TestUnifiedAlertingSettings(t *testing.T) { desc: "when the unified options equal the defaults, it should apply the legacy ones", unifiedAlertingOptions: map[string]string{ "admin_config_poll_interval": "120s", - "max_attempts": strconv.FormatInt(schedulerDefaultMaxAttempts, 10), "min_interval": SchedulerBaseInterval.String(), "execute_alerts": strconv.FormatBool(schedulereDefaultExecuteAlerts), "evaluation_timeout": evaluatorDefaultEvaluationTimeout.String(), }, alertingOptions: map[string]string{ - "max_attempts": "12", + "max_attempts": "1", "min_interval_seconds": "120", "execute_alerts": "true", "evaluation_timeout_seconds": "160", }, verifyCfg: func(t *testing.T, cfg Cfg) { require.Equal(t, 120*time.Second, cfg.UnifiedAlerting.AdminConfigPollInterval) - require.Equal(t, int64(12), cfg.UnifiedAlerting.MaxAttempts) + require.Equal(t, int64(1), cfg.UnifiedAlerting.MaxAttempts) require.Equal(t, 120*time.Second, cfg.UnifiedAlerting.MinInterval) require.Equal(t, true, cfg.UnifiedAlerting.ExecuteAlerts) require.Equal(t, 160*time.Second, cfg.UnifiedAlerting.EvaluationTimeout) @@ -164,14 +163,14 @@ func TestUnifiedAlertingSettings(t *testing.T) { "evaluation_timeout": "invalid", }, alertingOptions: map[string]string{ - "max_attempts": "12", + "max_attempts": "1", "min_interval_seconds": "120", "execute_alerts": "false", "evaluation_timeout_seconds": "160", }, verifyCfg: func(t *testing.T, cfg Cfg) { require.Equal(t, alertmanagerDefaultConfigPollInterval, cfg.UnifiedAlerting.AdminConfigPollInterval) - require.Equal(t, int64(12), cfg.UnifiedAlerting.MaxAttempts) + require.Equal(t, int64(1), cfg.UnifiedAlerting.MaxAttempts) require.Equal(t, 120*time.Second, cfg.UnifiedAlerting.MinInterval) require.Equal(t, false, cfg.UnifiedAlerting.ExecuteAlerts) require.Equal(t, 160*time.Second, cfg.UnifiedAlerting.EvaluationTimeout)