Datasources: Add toggle to control default behaviour of 'Manage alerts via Alerts UI' toggle (#98441)

* Datasources: Add toggle to control default behaviour of 'Manage alerts via Alerts UI' toggle

* Update documentation with suggestions

Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
pull/98820/head
Matheus Macabu 6 months ago committed by GitHub
parent ac2345a3c0
commit 4e398bf2bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      conf/defaults.ini
  2. 4
      conf/sample.ini
  3. 8
      docs/sources/datasources/prometheus/configure-prometheus-data-source.md
  4. 6
      docs/sources/setup-grafana/configure-grafana/_index.md
  5. 48
      packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.test.tsx
  6. 3
      packages/grafana-prometheus/src/configuration/AlertingSettingsOverhaul.tsx
  7. 1
      packages/grafana-runtime/src/config.ts
  8. 2
      pkg/api/dtos/frontend_settings.go
  9. 2
      pkg/api/frontendsettings.go
  10. 4
      pkg/setting/setting.go

@ -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]

@ -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

@ -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`.

@ -782,6 +782,12 @@ On Linux, Grafana uses `/usr/share/grafana/public/dashboards/home.json` as the d
<hr />
## [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

@ -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(<AlertingSettingsOverhaul onOptionsChange={() => {}} 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(<AlertingSettingsOverhaul onOptionsChange={() => {}} 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(<AlertingSettingsOverhaul onOptionsChange={() => {}} options={options} />);
expect(getByRole('switch')).toBeChecked();
});
});
});
});

@ -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<T extends AlertingConfig>({
className={styles.switchField}
>
<Switch
value={options.jsonData.manageAlerts !== false}
value={options.jsonData.manageAlerts ?? config.defaultDatasourceManageAlertsUiToggle}
onChange={(event) =>
onOptionsChange({
...options,

@ -188,6 +188,7 @@ export class GrafanaBootConfig implements GrafanaConfig {
maxIdleConns: 100,
connMaxLifetime: 14400,
};
defaultDatasourceManageAlertsUiToggle = true;
tokenExpirationDayLimit: undefined;
enableFrontendSandboxForPlugins: string[] = [];

@ -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"`

@ -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,

@ -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() {

Loading…
Cancel
Save