diff --git a/docs/sources/administration/provisioning/index.md b/docs/sources/administration/provisioning/index.md index 4801b470905..999af309e41 100644 --- a/docs/sources/administration/provisioning/index.md +++ b/docs/sources/administration/provisioning/index.md @@ -222,6 +222,7 @@ Data sources tagged with _HTTP\*_ communicate using the HTTP protocol, which inc | cacheLevel | string | Prometheus | Determines the duration of the browser cache. Valid values include: `Low`, `Medium`, `High`, and `None`. This field is configurable when you enable the `prometheusResourceBrowserCache` feature flag. | | incrementalQuerying | string | Prometheus | Experimental: Turn on incremental querying to enhance dashboard reload performance with slow data sources | | incrementalQueryOverlapWindow | string | Prometheus | Experimental: Configure incremental query overlap window. Requires a valid duration string, i.e. `180s` or `15m` Default value is `10m` (10 minutes). | +| disableRecordingRules | boolean | Prometheus | Experimental: Turn off Prometheus recording rules | | implementation | string | AlertManager | The implementation of the AlertManager data source, such as `prometheus`, `cortex` or `mimir` | | handleGrafanaManagedAlerts | boolean | AlertManager | When enabled, Grafana-managed alerts are sent to this Alertmanager | diff --git a/docs/sources/datasources/prometheus/_index.md b/docs/sources/datasources/prometheus/_index.md index 07d3466b746..3f46a67dfe5 100644 --- a/docs/sources/datasources/prometheus/_index.md +++ b/docs/sources/datasources/prometheus/_index.md @@ -69,7 +69,7 @@ prometheusVersion: 2.44.0 incrementalQuerying: true incrementalQueryOverlapWindow: 10m cacheLevel: 'High' -incrementalQuerying: true +disableRecordingRules: false incrementalQueryOverlapWindow: 10m exemplarTraceIdDestinations: # Field with internal link pointing to data source in Grafana. @@ -141,3 +141,7 @@ This can be toggled on or off in the data source configuration or provisioning f Additionally, the amount of overlap between incremental queries can be configured using the `incrementalQueryOverlapWindow` jsonData field, the default value is `10m` (10 minutes). Increasing the duration of the `incrementalQueryOverlapWindow` will increase the size of every incremental query, but might be helpful for instances that have inconsistent results for recent data. + +## Recording Rules (beta) + +The Prometheus data source can be configured to disable recording rules under the data source configuration or provisioning file (under `disableRecordingRules` in jsonData). diff --git a/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx b/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx index d67ce0e6a7f..91bb6f26a16 100644 --- a/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx +++ b/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx @@ -440,8 +440,25 @@ export const PromSettings = (props: Props) => { )} - +
+
+ This feature will disable recording rules Turn this on to improve dashboard performance} + interactive={true} + className={styles.switchField} + disabled={options.readOnly} + > + + +
+
+

Other

diff --git a/public/app/plugins/datasource/prometheus/datasource.tsx b/public/app/plugins/datasource/prometheus/datasource.tsx index ee234893944..8f522f2fba6 100644 --- a/public/app/plugins/datasource/prometheus/datasource.tsx +++ b/public/app/plugins/datasource/prometheus/datasource.tsx @@ -102,6 +102,7 @@ export class PrometheusDatasource customQueryParameters: any; datasourceConfigurationPrometheusFlavor?: PromApplication; datasourceConfigurationPrometheusVersion?: string; + disableRecordingRules: boolean; defaultEditor?: QueryEditorMode; exemplarsAvailable: boolean; subType: PromApplication; @@ -140,6 +141,7 @@ export class PrometheusDatasource this.datasourceConfigurationPrometheusFlavor = instanceSettings.jsonData.prometheusType; this.datasourceConfigurationPrometheusVersion = instanceSettings.jsonData.prometheusVersion; this.defaultEditor = instanceSettings.jsonData.defaultEditor; + this.disableRecordingRules = instanceSettings.jsonData.disableRecordingRules ?? false; this.variables = new PrometheusVariableSupport(this, this.templateSrv, this.timeSrv); this.exemplarsAvailable = true; this.cacheLevel = instanceSettings.jsonData.cacheLevel ?? PrometheusCacheLevel.Low; @@ -160,7 +162,9 @@ export class PrometheusDatasource } init = async () => { - this.loadRules(); + if (!this.disableRecordingRules) { + this.loadRules(); + } this.exemplarsAvailable = await this.areExemplarsAvailable(); }; diff --git a/public/app/plugins/datasource/prometheus/types.ts b/public/app/plugins/datasource/prometheus/types.ts index 8d22449b9e6..df895ce838f 100644 --- a/public/app/plugins/datasource/prometheus/types.ts +++ b/public/app/plugins/datasource/prometheus/types.ts @@ -44,6 +44,7 @@ export interface PromOptions extends DataSourceJsonData { defaultEditor?: QueryEditorMode; incrementalQuerying?: boolean; incrementalQueryOverlapWindow?: string; + disableRecordingRules?: boolean; } export type ExemplarTraceIdDestination = {