瀏覽代碼

make default values for alerting configurable

bergquist 7 年之前
父節點
當前提交
3ce89cad71

+ 6 - 0
conf/defaults.ini

@@ -467,6 +467,12 @@ enabled = true
 # Makes it possible to turn off alert rule execution but alerting UI is visible
 execute_alerts = true
 
+# Default setting for new alert rules. Defaults to categories error and timeouts as alerting. (alerting, keep_state)
+error_or_timeout = alerting
+
+# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)
+nodata_or_nullvalues = no_data
+
 #################################### Explore #############################
 [explore]
 # Enable the Explore section

+ 6 - 0
conf/sample.ini

@@ -387,6 +387,12 @@ log_queries =
 # Makes it possible to turn off alert rule execution but alerting UI is visible
 ;execute_alerts = true
 
+# Default setting for new alert rules. Defaults to categories error and timeouts as alerting. (alerting, keep_state)
+;error_or_timeout = alerting
+
+# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)
+;nodata_or_nullvalues = no_data
+
 #################################### Explore #############################
 [explore]
 # Enable the Explore section

+ 8 - 0
docs/sources/installation/configuration.md

@@ -1009,3 +1009,11 @@ Defaults to true. Set to false to disable alerting engine and hide Alerting from
 ### execute_alerts
 
 Makes it possible to turn off alert rule execution.
+
+### error_or_timeout
+
+Default setting for new alert rules. Defaults to categories error and timeouts as alerting. (alerting, keep_state)
+
+### nodata_or_nullvalues
+
+Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)

+ 16 - 14
pkg/api/frontendsettings.go

@@ -132,20 +132,22 @@ func getFrontendSettingsMap(c *m.ReqContext) (map[string]interface{}, error) {
 	}
 
 	jsonObj := map[string]interface{}{
-		"defaultDatasource":       defaultDatasource,
-		"datasources":             datasources,
-		"panels":                  panels,
-		"appSubUrl":               setting.AppSubUrl,
-		"allowOrgCreate":          (setting.AllowUserOrgCreate && c.IsSignedIn) || c.IsGrafanaAdmin,
-		"authProxyEnabled":        setting.AuthProxyEnabled,
-		"ldapEnabled":             setting.LdapEnabled,
-		"alertingEnabled":         setting.AlertingEnabled,
-		"exploreEnabled":          setting.ExploreEnabled,
-		"googleAnalyticsId":       setting.GoogleAnalyticsId,
-		"disableLoginForm":        setting.DisableLoginForm,
-		"externalUserMngInfo":     setting.ExternalUserMngInfo,
-		"externalUserMngLinkUrl":  setting.ExternalUserMngLinkUrl,
-		"externalUserMngLinkName": setting.ExternalUserMngLinkName,
+		"defaultDatasource":          defaultDatasource,
+		"datasources":                datasources,
+		"panels":                     panels,
+		"appSubUrl":                  setting.AppSubUrl,
+		"allowOrgCreate":             (setting.AllowUserOrgCreate && c.IsSignedIn) || c.IsGrafanaAdmin,
+		"authProxyEnabled":           setting.AuthProxyEnabled,
+		"ldapEnabled":                setting.LdapEnabled,
+		"alertingEnabled":            setting.AlertingEnabled,
+		"alertingErrorOrTimeout":     setting.AlertingErrorOrTimeout,
+		"alertingNoDataOrNullValues": setting.AlertingNoDataOrNullValues,
+		"exploreEnabled":             setting.ExploreEnabled,
+		"googleAnalyticsId":          setting.GoogleAnalyticsId,
+		"disableLoginForm":           setting.DisableLoginForm,
+		"externalUserMngInfo":        setting.ExternalUserMngInfo,
+		"externalUserMngLinkUrl":     setting.ExternalUserMngLinkUrl,
+		"externalUserMngLinkName":    setting.ExternalUserMngLinkName,
 		"buildInfo": map[string]interface{}{
 			"version":       setting.BuildVersion,
 			"commit":        setting.BuildCommit,

+ 6 - 2
pkg/setting/setting.go

@@ -164,8 +164,10 @@ var (
 	Quota QuotaSettings
 
 	// Alerting
-	AlertingEnabled bool
-	ExecuteAlerts   bool
+	AlertingEnabled            bool
+	ExecuteAlerts              bool
+	AlertingErrorOrTimeout     string
+	AlertingNoDataOrNullValues string
 
 	// Explore UI
 	ExploreEnabled bool
@@ -672,6 +674,8 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
 	alerting := iniFile.Section("alerting")
 	AlertingEnabled = alerting.Key("enabled").MustBool(true)
 	ExecuteAlerts = alerting.Key("execute_alerts").MustBool(true)
+	AlertingErrorOrTimeout = alerting.Key("error_or_timeout").MustString("alerting")
+	AlertingNoDataOrNullValues = alerting.Key("nodata_or_nullvalues").MustString("no_data")
 
 	explore := iniFile.Section("explore")
 	ExploreEnabled = explore.Key("enabled").MustBool(false)

+ 2 - 0
public/app/core/config.ts

@@ -22,6 +22,8 @@ export class Settings {
   disableLoginForm: boolean;
   defaultDatasource: string;
   alertingEnabled: boolean;
+  alertingErrorOrTimeout: string;
+  alertingNoDataOrNullValues: string;
   authProxyEnabled: boolean;
   exploreEnabled: boolean;
   ldapEnabled: boolean;

+ 2 - 2
public/app/features/alerting/alert_tab_ctrl.ts

@@ -164,8 +164,8 @@ export class AlertTabCtrl {
       alert.conditions.push(this.buildDefaultCondition());
     }
 
-    alert.noDataState = alert.noDataState || 'no_data';
-    alert.executionErrorState = alert.executionErrorState || 'alerting';
+    alert.noDataState = alert.noDataState || config.alertingNoDataOrNullValues;
+    alert.executionErrorState = alert.executionErrorState || config.alertingErrorOrTimeout;
     alert.frequency = alert.frequency || '60s';
     alert.handler = alert.handler || 1;
     alert.notifications = alert.notifications || [];