diff --git a/conf/defaults.ini b/conf/defaults.ini index 9c74b4c2197..91e7af25442 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -462,6 +462,9 @@ datasource_limit = 5000 # Check datasource documentations for enabling concurrency. concurrent_query_count = 10 +# Default behavior for the "Manage alerts via Alerting UI" toggle when configuring a data source. +# It only works if the data source's `jsonData.manageAlerts` prop does not contain a previously configured value. +default_manage_alerts_ui_toggle = true ################################### SQL Data Sources ##################### [sql_datasources] diff --git a/conf/sample.ini b/conf/sample.ini index 705b06e2195..d1a06d9c331 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -466,6 +466,10 @@ # Check datasource documentations for enabling concurrency. ;concurrent_query_count = 10 +# Default behavior for the "Manage alerts via Alerting UI" toggle when configuring a data source. +# It only works if the data source's `jsonData.manageAlerts` prop does not contain a previously configured value. +;default_manage_alerts_ui_toggle = true + ################################### SQL Data Sources ##################### [sql_datasources] # Default maximum number of open connections maintained in the connection pool diff --git a/docs/sources/datasources/prometheus/configure-prometheus-data-source.md b/docs/sources/datasources/prometheus/configure-prometheus-data-source.md index 014487ae277..6c94d9c7d45 100644 --- a/docs/sources/datasources/prometheus/configure-prometheus-data-source.md +++ b/docs/sources/datasources/prometheus/configure-prometheus-data-source.md @@ -117,9 +117,15 @@ Following are additional configuration options. - **Manage alerts via Alerting UI** - Toggle to enable `Alertmanager` integration for this data source. +{{% admonition type="note" %}} + +The **Manage alerts via Alerting UI** toggle is enabled by default. You can change this behavior by setting the [default_manage_alerts_ui_toggle]({{< relref "../../setup-grafana/configure-grafana/#default_manage_alerts_ui_toggle" >}}) option in the Grafana configuration file. + +{{% /admonition %}} + ### Interval behavior -- **Scrape interval** - Set this to the typical scrape and evaluation interval configured in Prometheus. The default is `15s`. +- **Scrape interval** - Set to the typical scrape and evaluation interval configured in Prometheus. The default is `15s`. - **Query timeout** - The default is `60s`. diff --git a/docs/sources/setup-grafana/configure-grafana/_index.md b/docs/sources/setup-grafana/configure-grafana/_index.md index 238da2179f5..780fd4c7a98 100644 --- a/docs/sources/setup-grafana/configure-grafana/_index.md +++ b/docs/sources/setup-grafana/configure-grafana/_index.md @@ -782,6 +782,12 @@ On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the d
+## [datasources] + +### default_manage_alerts_ui_toggle + +Default behavior for the "Manage alerts via Alerting UI" toggle when configuring a data source. It only works if the data source's `jsonData.manageAlerts` prop does not contain a previously configured value. + ## [sql_datasources] ### max_open_conns_default diff --git a/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.test.tsx b/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.test.tsx new file mode 100644 index 00000000000..8c3d94d4c99 --- /dev/null +++ b/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.test.tsx @@ -0,0 +1,48 @@ +import { render } from '@testing-library/react'; + +import { config } from '@grafana/runtime'; + +import { createDefaultConfigOptions } from '../test/__mocks__/datasource'; + +import { AlertingSettingsOverhaul } from './AlertingSettingsOverhaul'; + +describe(AlertingSettingsOverhaul.name, () => { + describe('Switch checked behavior', () => { + describe('when options.jsonData.manageAlerts is unset', () => { + it('uses the config default `true`', () => { + const options = createDefaultConfigOptions(); + options.jsonData.manageAlerts = undefined; + + config.defaultDatasourceManageAlertsUiToggle = true; + + const { getByRole } = render( {}} options={options} />); + + expect(getByRole('switch')).toBeChecked(); + }); + + it('uses the config default `false`', () => { + const options = createDefaultConfigOptions(); + options.jsonData.manageAlerts = undefined; + + config.defaultDatasourceManageAlertsUiToggle = false; + + const { getByRole } = render( {}} options={options} />); + + expect(getByRole('switch')).not.toBeChecked(); + }); + }); + + describe('when options.jsonData.manageAlerts is set', () => { + it.each([true, false])('uses the manageAlerts value even when the config default is %s', (configDefault) => { + const options = createDefaultConfigOptions(); + options.jsonData.manageAlerts = true; + + config.defaultDatasourceManageAlertsUiToggle = configDefault; + + const { getByRole } = render( {}} options={options} />); + + expect(getByRole('switch')).toBeChecked(); + }); + }); + }); +}); diff --git a/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx b/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx index feea1322c69..bade01d047e 100644 --- a/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx +++ b/packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx @@ -4,6 +4,7 @@ import { cx } from '@emotion/css'; import { DataSourceJsonData, DataSourcePluginOptionsEditorProps } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { ConfigSubSection } from '@grafana/experimental'; +import { config } from '@grafana/runtime'; import { InlineField, Switch, useTheme2 } from '@grafana/ui'; import { docsTip, overhaulStyles } from './ConfigEditor'; @@ -43,7 +44,7 @@ export function AlertingSettingsOverhaul({ className={styles.switchField} > onOptionsChange({ ...options, diff --git a/packages/grafana-runtime/src/config.ts b/packages/grafana-runtime/src/config.ts index 95f175fcca5..0ebfab4e4fd 100644 --- a/packages/grafana-runtime/src/config.ts +++ b/packages/grafana-runtime/src/config.ts @@ -188,6 +188,7 @@ export class GrafanaBootConfig implements GrafanaConfig { maxIdleConns: 100, connMaxLifetime: 14400, }; + defaultDatasourceManageAlertsUiToggle = true; tokenExpirationDayLimit: undefined; enableFrontendSandboxForPlugins: string[] = []; diff --git a/pkg/api/dtos/frontend_settings.go b/pkg/api/dtos/frontend_settings.go index 37a71629fde..e33490bd41b 100644 --- a/pkg/api/dtos/frontend_settings.go +++ b/pkg/api/dtos/frontend_settings.go @@ -242,6 +242,8 @@ type FrontendSettingsDTO struct { Azure FrontendSettingsAzureDTO `json:"azure"` + DefaultDatasourceManageAlertsUIToggle bool `json:"defaultDatasourceManageAlertsUiToggle"` + Caching FrontendSettingsCachingDTO `json:"caching"` RecordedQueries FrontendSettingsRecordedQueriesDTO `json:"recordedQueries"` Reporting FrontendSettingsReportingDTO `json:"reporting"` diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index 61e29c977be..8f17ad1e85e 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -245,6 +245,8 @@ func (hs *HTTPServer) getFrontendSettings(c *contextmodel.ReqContext) (*dtos.Fro ReportingStaticContext: hs.Cfg.ReportingStaticContext, ExploreDefaultTimeOffset: hs.Cfg.ExploreDefaultTimeOffset, + DefaultDatasourceManageAlertsUIToggle: hs.Cfg.DefaultDatasourceManageAlertsUIToggle, + BuildInfo: dtos.FrontendSettingsBuildInfoDTO{ HideVersion: hideVersion, Version: version, diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 41ea9973030..bd58f2424d6 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -330,6 +330,9 @@ type Cfg struct { DataSourceLimit int // Number of queries to be executed concurrently. Only for the datasource supports concurrency. ConcurrentQueryCount int + // Default behavior for the "Manage alerts via Alerting UI" toggle when configuring a data source. + // It only works if the data source's `jsonData.manageAlerts` prop does not contain a previously configured value. + DefaultDatasourceManageAlertsUIToggle bool // IP range access control IPRangeACEnabled bool @@ -1914,6 +1917,7 @@ func (cfg *Cfg) readDataSourcesSettings() { datasources := cfg.Raw.Section("datasources") cfg.DataSourceLimit = datasources.Key("datasource_limit").MustInt(5000) cfg.ConcurrentQueryCount = datasources.Key("concurrent_query_count").MustInt(10) + cfg.DefaultDatasourceManageAlertsUIToggle = datasources.Key("default_manage_alerts_ui_toggle").MustBool(true) } func (cfg *Cfg) readDataSourceSecuritySettings() {