diff --git a/docs/sources/alerting/set-up/performance-limitations/index.md b/docs/sources/alerting/set-up/performance-limitations/index.md index 69becbad450..b8524e4c8a7 100644 --- a/docs/sources/alerting/set-up/performance-limitations/index.md +++ b/docs/sources/alerting/set-up/performance-limitations/index.md @@ -61,7 +61,13 @@ For more information, refer to [this GitHub issue](https://github.com/grafana/gr If you have a high number of alert instances, it can happen that the load on the database gets very high, as each state transition of an alert instance is saved in the database. -This can be prevented by writing to the database periodically. For this the feature flag `alertingSaveStatePeriodic` needs +### Compressed alert state + +When the `alertingSaveStateCompressed` feature toggle is enabled, Grafana saves the alert rule state in a compressed form, reducing database overhead for alerts with many instances. + +### Save state periodically + +High load can be also prevented by writing to the database periodically. For this the feature flag `alertingSaveStatePeriodic` needs to be enabled. By default, it saves the states every 5 minutes to the database and on each shutdown. The periodic interval can also be configured using the `state_periodic_save_interval` configuration flag. During this process, Grafana deletes all existing alert instances from the database and then writes the entire current set of instances back in batches in a single transacton. diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 9cd7fe7e1a7..13646ef8948 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -114,6 +114,7 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general- | `canvasPanelPanZoom` | Allow pan and zoom in canvas panel | | `regressionTransformation` | Enables regression analysis transformation | | `onPremToCloudMigrations` | Enable the Grafana Migration Assistant, which helps you easily migrate on-prem resources, such as dashboards, folders, and data source configurations, to your Grafana Cloud stack. | +| `alertingSaveStateCompressed` | Enables the compressed protobuf-based alert state storage | | `ssoSettingsSAML` | Use the new SSO Settings API to configure the SAML connector | | `azureMonitorPrometheusExemplars` | Allows configuration of Azure Monitor as a data source that can provide Prometheus exemplars | | `ssoSettingsLDAP` | Use the new SSO Settings API to configure LDAP | @@ -188,7 +189,6 @@ Experimental features might be changed or removed without prior notice. | `tableSharedCrosshair` | Enables shared crosshair in table panel | | `kubernetesFeatureToggles` | Use the kubernetes API for feature toggle management in the frontend | | `newFolderPicker` | Enables the nested folder picker without having nested folders enabled | -| `alertingSaveStateCompressed` | Enables the compressed protobuf-based alert state storage | | `scopeApi` | In-development feature flag for the scope api using the app platform. | | `sqlExpressions` | Enables using SQL and DuckDB functions as Expressions. | | `nodeGraphDotLayout` | Changed the layout algorithm for the node graph | diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 5589a2cdb6b..ac2eaffc940 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -1023,9 +1023,10 @@ var ( { Name: "alertingSaveStateCompressed", Description: "Enables the compressed protobuf-based alert state storage", - Stage: FeatureStageExperimental, + Stage: FeatureStagePublicPreview, FrontendOnly: false, Owner: grafanaAlertingSquad, + Expression: "false", }, { Name: "scopeApi", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 5ee9c0c2f1f..e88c9c3d176 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -134,7 +134,7 @@ newFolderPicker,experimental,@grafana/grafana-frontend-platform,false,false,true jitterAlertRulesWithinGroups,preview,@grafana/alerting-squad,false,true,false onPremToCloudMigrations,preview,@grafana/grafana-operator-experience-squad,false,false,false alertingSaveStatePeriodic,privatePreview,@grafana/alerting-squad,false,false,false -alertingSaveStateCompressed,experimental,@grafana/alerting-squad,false,false,false +alertingSaveStateCompressed,preview,@grafana/alerting-squad,false,false,false scopeApi,experimental,@grafana/grafana-app-platform-squad,false,false,false promQLScope,GA,@grafana/oss-big-tent,false,false,false logQLScope,privatePreview,@grafana/observability-logs,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 970b8edf66f..607d0581270 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -373,23 +373,27 @@ { "metadata": { "name": "alertingSaveStateCompressed", - "resourceVersion": "1737472824047", + "resourceVersion": "1738604435531", "creationTimestamp": "2025-01-17T18:17:20Z", "annotations": { - "grafana.app/updatedTimestamp": "2025-01-21 15:20:24.047499 +0000 UTC" + "grafana.app/updatedTimestamp": "2025-02-03 17:40:35.53174 +0000 UTC" } }, "spec": { "description": "Enables the compressed protobuf-based alert state storage", - "stage": "experimental", - "codeowner": "@grafana/alerting-squad" + "stage": "preview", + "codeowner": "@grafana/alerting-squad", + "expression": "false" } }, { "metadata": { "name": "alertingSaveStatePeriodic", - "resourceVersion": "1718727528075", - "creationTimestamp": "2024-01-23T16:03:30Z" + "resourceVersion": "1738604155684", + "creationTimestamp": "2024-01-23T16:03:30Z", + "annotations": { + "grafana.app/updatedTimestamp": "2025-02-03 17:35:55.684572 +0000 UTC" + } }, "spec": { "description": "Writes the state periodically to the database, asynchronous to rule evaluation",