Commit Graph

1975 Commits

Author SHA1 Message Date
Yuri Tseretyan 15fab1cb99 Alerting: Update integration schema to support versions (#109969)
* add VersionedNotifierPlugin and method that converts NotifierPlugin to it

* return new schema if query parameter version=2

* add version to k8s model of integration

* fix open api snapshot

* add version to IntegrationConfig

* use current version on conversion

* create versioned integrations for test
2025-08-28 14:46:30 -04:00
Moustafa Baiou c73b3ccf6e Alerting: Fix copying of recording rule fields
Recording rule fields were not being copied correctly when duplicating an alert rule. This manifests as missing `TargetDataSourceUID` fields from the `Record` part of the rule when rules in a group are re-ordered.

Added some additional tests to ensure we cover the generation of recording rules in tests and fixed the copying logic to ensure all fields are copied correctly.
2025-08-28 14:07:00 -04:00
Thomas Casteleyn 7768e507da docs(openapi): Cleanup tag usage and minor fixes (#105546)
* docs(openapi): Cleanup tag usage and minor fixes

* Add missing change

* More fixes

* make swagger-gen

* Remove unused documentation

* Update pkg/services/publicdashboards/api/query.go

Co-authored-by: Artur Wierzbicki <artur@arturwierzbicki.com>

* Run make swagger-gen

* Run make openapi3-gen

---------

Co-authored-by: Artur Wierzbicki <artur@arturwierzbicki.com>
2025-08-28 01:51:04 +04:00
Alexander Akhmetov 5e1f79ca83 Alerting: Fix alert rule comparison with the same missing_evals_to_resolve (#110174) 2025-08-26 18:20:50 +02:00
Yuri Tseretyan c5667476a7 Alerting: Update ticker to accept logger in the constructor (#110176)
* add logger to ticker
* move ticker to schedule
2025-08-26 12:17:48 -04:00
Moustafa Baiou 5724fae778 Alerting: Add Extended List Query for Alert Rules w/pagination (#109360)
* Alerting: Add Extended List Query for Alert Rules w/pagination

This adds an extended query which allows filtering by the kind of rule (Recording or Alerting) and supports pagination.

Pagination tokens will allow us to list all rules paginated, regardless of the rule group.

---------

Co-authored-by: William Wernert <william.wernert@grafana.com>
2025-08-26 08:20:47 -04:00
Kyle Brandt 4f0cb47d3c SQL Expressions: Rework backend errors and error instrumentation (#109633)
* Capture error_type label on metrics/traces
* Make error messages more helpful to user
* Use errutil, categorized errors, and tie them to error_type (category in code)
* Misc trace fixes
* Add metric to track SQL input conversion
2025-08-25 11:13:42 -04:00
Alexander Akhmetov 5d3be370e0 Alerting: Fix provisioning API returning 500 for validation errors in notification settings (#110006) 2025-08-22 13:16:06 +02:00
Alexander Akhmetov b4ff398865 Alerting: Fix folder permissions for Editor role in Prometheus import (#109977)
Alerting: Fix folder permisisons for Editor role in Prometheus import
2025-08-22 13:15:53 +02:00
Santiago 6976ac4caa Alerting: Fix bad field used in LogContext (#110023) 2025-08-22 10:13:02 +00:00
Santiago 29aff8c387 Remote Alertmanager: Ignore tenant ID when merging remote state (#109928)
* Remote Alertmanager: Ignore tenant ID when merging remote state

* update tests
2025-08-21 09:00:37 +00:00
Alexander Akhmetov 38672c7936 Alerting: Set specific backend type in remote_writer_writes_total metric for grafanacloud-prom datasource (#109516) 2025-08-20 13:04:00 +02:00
Santiago a31323578f Remote Alertmanager: Move factory functions to the remote package (#108582)
* Remote Alertmanager: Move factory functions to the remote package

* remove createRemoteAlertmanager

* modify comment

* unexport functions to create remote secondary and primary forked AMs

* RemoteFactory -> NewRemoteFactory

* avoid passing a logger

* avoid panics if creating the internal AM fails

* remove lines

* rephrase comment

* fix source of sync interval
2025-08-19 15:34:58 +00:00
Yuri Tseretyan a2cae07ac7 Alerting: Remove method ReceiverService.ListReceivers (#109828) 2025-08-19 09:12:23 -04:00
Gábor Farkas 2e5b55a855 datasources: querier: renamed the "mt" builder to "qs" builder (#109779) 2025-08-19 12:37:56 +02:00
Alexander Akhmetov bdd5bf0397 Alerting: Configurable queue and batch size in external alert manager notifier (#109831) 2025-08-19 09:32:10 +02:00
Yuri Tseretyan bb55972cef Alerting: Fix fromPrometheusConfig (#109807) 2025-08-18 13:44:33 -04:00
Moustafa Baiou effc887b08 Alerting: Use db pagination for prometheus api
This reintroduces database pagination for the Prometheus API for rules.

Follow up for #109558 to use the new pagination format.

Note: This changes the sort-order to use `NamespaceUID` instead of the fully qualified Folder path. This also changes the cursor format to use the `NamespaceUID` instead of the Folder path and to be in a reverisble format.
2025-08-18 06:18:12 -07:00
Yuri Tseretyan 9ba1987478 Alerting: Update alertRuleVersions.EqualSpec to ignore RuleGroupIndex (#109740) 2025-08-16 00:19:27 +00:00
Alexander Akhmetov 17444fdc0d Alerting: Add keepFiringFor and missing_series_evals_to_resolve to file provisioning (#109699) 2025-08-14 22:19:43 +02:00
Moustafa Baiou a4edc27044 Alerting: Add store level pagination of rules
This reintroduces store level pagination, without using it in the prometheus API yet.

Related to #108633

Co-authored-by: William Wernert <william.wernert@grafana.com>
2025-08-14 07:46:53 -07:00
Alexander Akhmetov e165a490b4 Alerting: Return merged extra configurations in the API (#109636) 2025-08-14 07:46:12 +02:00
Alexander Akhmetov 587f52cf5b Alerting: API to show converted alertmanager configurations in the UI (#109353)
What is this feature?

This PR add the backend functionality to support viewing extra Alertmanager configurations (imported with the Prometheus conversion API) in the UI under the feature flag alertingImportAlertmanagerUI. The same flag will be used to enable this in the UI.

This is just the backend part, the full PoC PR is here: #109027

It uses a special datasource UID prefix __grafana-converted-extra-config-{identifier} to identify imported configurations. When the Alertmanager proxy handler detects this prefix:

    GET requests are proxied to either the Grafana Alertmanager service (for alerts, silences, etc.) or the Prometheus conversion API to get the config
    Write operations are not supported
2025-08-13 17:28:43 +02:00
Kyle Brandt 466aa70179 Sql Expressions: (Chore) Dedicated logger for expr.sql, and pass context (#109549) 2025-08-13 11:20:14 -04:00
Moustafa Baiou 1bb68a1151 Revert "Alerting: Add store level pagination of rules" (#109422)
Revert "Alerting: Add store level pagination of rules (#108633)"

This reverts commit 2f0190d775.
2025-08-08 18:39:04 +00:00
Alexander Akhmetov 4e94e463cf Alerting: Fix private labels filtering test (#109393) 2025-08-08 14:08:36 +00:00
Alexander Akhmetov 89d6756c67 Alerting: Filter out private labels before writing recording rules (#109295) 2025-08-07 17:25:12 +02:00
Alexander Akhmetov 8add059800 Alerting: Do not apply extra labels in the Prometheus conversion API to recording rules (#109312) 2025-08-07 15:16:04 +02:00
Moustafa Baiou 16f8359d35 Alerting: Update Alert Rule to use int64 for MissingSeriesEvalsToResolve (#109306) 2025-08-06 21:45:48 -04:00
Fayzal Ghantiwala d3af4b582f Alerting: Fix flaky tests (#109205)
* Make sure random orgID isn't 0

* Retrigger CI
2025-08-06 22:05:22 +01:00
Santiago 1914fb95ee Remote Alertmanager: Wire up remoteSecondaryAlertmanagerWithRemoteState and fix path (#109253) 2025-08-06 17:33:31 +02:00
Alexander Akhmetov f65e501e1b Alerting: Support extra labels in the Prometheus conversion API (#109136) 2025-08-05 00:03:21 +02:00
Yuri Tseretyan cbf256120e Revert "Alerting: Remote Alertmanager to calculate hash of the request payload instead of just the configuration" (#109086)
Revert "Alerting: Remote Alertmanager to calculate hash of the request payloa…"

This reverts commit 32434810e1.
2025-08-01 21:34:31 +00:00
Alexander Akhmetov eb3a457c6d Alerting: Support JSON responses in the Prometheus conversion API (#109070) 2025-08-01 21:15:21 +02:00
William Wernert 2f0190d775 Alerting: Add store level pagination of rules (#108633) 2025-08-01 12:54:13 -04:00
Yuri Tseretyan 32434810e1 Alerting: Remote Alertmanager to calculate hash of the request payload instead of just the configuration (#108632)
* update CreateGrafanaAlertmanagerConfig to accept UserGrafanaConfig move construction logic to alertmanager
* consolidate building UserGrafanaConfig into buildConfig
* use config to determine whether it needs to be send calculate hash of the entire request struct rather than configuration
2025-07-31 10:25:43 -04:00
Alexander Akhmetov 1ad042b4e0 Alerting: Mark Prometheus to Grafana conversion API as stable (#103499)
Alerting: Make Prometheus conversion API stable
2025-07-31 11:56:15 +02:00
Alexander Akhmetov 6db07b901c Alerting: Enable HA clustering in remote primary mode (#108930) 2025-07-31 09:55:08 +02:00
Stephanie Hingtgen 1f025fe1a3 K8s: Remove kubernetesClientDashboardsFolders feature flag (#108626) 2025-07-29 16:52:57 -05:00
Stephanie Hingtgen 1716173f71 Alerting: Move some tests to full integration tests (#108747)
* Alerting: Move some tests to full integration tests

* add back two error handling tests

* imports

---------

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2025-07-29 12:15:26 +00:00
Santiago 3c4c3b3f5c Remote Alertmanager: Remove unneeded SmtpFrom and StaticHeaders fields (#108781)
* Remote Alertmanager: Remove unneeded SmtpFrom and StaticHeaders fields

* remove smtpFrom (am struct)

* move smtp field (am struct)

* fix test
2025-07-29 12:14:42 +02:00
Serge Zaitsev a95fb3a37c Chore: Omit integration tests if short test flag is passed (#108777)
* omit integration tests if short test flag is passed

* Update pkg/services/ngalert/models/receivers_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/tests/api/alerting/api_ruler_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/tests/api/alerting/api_ruler_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/tests/api/alerting/api_ruler_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/tests/api/alerting/api_ruler_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/tests/api/alerting/api_ruler_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/services/ngalert/models/receivers_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/cmd/grafana-cli/commands/datamigrations/to_unified_storage_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* Update pkg/services/ngalert/models/receivers_test.go

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>

* fix the rest

* false positive

---------

Co-authored-by: Matheus Macabu <macabu@users.noreply.github.com>
2025-07-28 13:38:54 +02:00
Alexander Akhmetov f969eb0277 Alerting: Add rule group name validation to the Prometheus conversion API (#108740)
Alerting: Add rule group name validation to the conversion API
2025-07-28 11:44:17 +02:00
Alexander Akhmetov 4ad80cec1a Alerting: Validate extra configuration with PostableApiAlertingConfig (#108706) 2025-07-28 10:09:26 +02:00
Santiago dcb965b7dc Remote Alertmanager: Optionally merge remote state before starting the internal Alertmanager (#107710)
* Remote Alertmanager: Use the same struct for Grafana stat and Mimir full state

* Alertmanager: Add methods to merge nflog and silences

* update grafana/alerting version

* make update-workspace

* update mocks

* remove unnecesary methods from the remote Alertmanager implementation, create separate StateMerger interface

* (WIP) Remote Alertmanager: Optionally merge remote state before starting the internal Alertmanager

* cleanup ngalert.go

* restore defaults.ini

* move state parsing logic to 'remote' package, clean up ngalert.go

* remove GetBase, implement MegeNflog and MergeSilences

* delete fmt.Println

* FetchRemoteState -> GetRemoteState

* UserGrafanaState -> UserState

* remove duplicate clusterpb import

* reorder MimirClient interface

* use general getState() method for Grafana state and Mimir full state

* remove unnecessary state merging methods from the Alertmanager interface

* remove pullState field

* reduce diff

* add info log after merging

* merge silences and nflog entries in the same method

* merge the remote state in the forked AM

* reduce diff

* update remote AM mock

* tests

* make error more specific

* typo
2025-07-25 15:06:59 +00:00
Yuri Tseretyan e280b949e3 Alerting: Refactor remote Alertmanager and Mimir client (#107808)
* deduplicate config preparation logic squashes config preparation in 3 places into a single method buildConfiguration
* remove copying config from decrypt because we already use copy
* move logic from decryptConfiguration to buildConfiguration
* move logic from mergeExtraConfigs to buildConfiguration
* load default config with buildConfiguration method and skip if fails
---------

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2025-07-24 12:00:38 -04:00
Yuri Tseretyan 0895d63516 Alerting: Remote Alertmanager to compare current hash with hash from response (#108554) 2025-07-24 09:22:44 -04:00
Alexander Akhmetov 7c43c061a8 Alerting: Fix deadlocks in provenance table (#106370)
What is this feature?

This PR further improves concurrent updates to the provenance table (a follow-up for #101688). The fix explicitly checks for a provenance record using SELECT ... FOR UPDATE for the databases that support it before performing either an update or upsert operation. This preemptive locking reduces the possibility of deadlocks in MySQL.

This works only with the alertingProvenanceLockWrites feature flag enabled.

Why do we need this feature?

The current implementation (directly performing upserts without prior locking) may still encounter deadlocks because of the gap and insert-intention locks in some configurations, for example, with repeatable-read transaction isolation level in MySQL+InnoDB.

---------

Co-authored-by: William Wernert <william.wernert@grafana.com>
2025-07-23 20:16:06 +02:00
Yuri Tseretyan cc869e7668 Alerting: Fix active time intervals when time interval is renamed (#108534) 2025-07-23 13:08:11 -04:00
Moustafa Baiou 71b5c1d997 Alerting: Update test data for exports which now contain http_configs for receivers (#108405)
This was introduced in https://github.com/grafana/grafana/pull/108190 and missed in the integration
2025-07-21 16:32:21 +00:00