Commit Graph

750 Commits

Author SHA1 Message Date
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
Alexander Akhmetov f65e501e1b Alerting: Support extra labels in the Prometheus conversion API (#109136) 2025-08-05 00:03:21 +02: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
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
Stephanie Hingtgen 1f025fe1a3 K8s: Remove kubernetesClientDashboardsFolders feature flag (#108626) 2025-07-29 16:52:57 -05: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
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
Matthew Jacobson 5489c814c0 Alerting: Fix Jira HCL export with fields & add export snapshots test (#108032)
* Alerting: Contact point export snapshot test

* Fix Jira.fields hcl export type to allow map[string]any

Since gohcl does not support this type, we marshal as a string instead
which will be handled in the TF provider.

* mapToJSONStringCodec encoder needed for
TestContactPointFromContactPointExports
2025-07-21 10:24:24 -04:00
Yuri Tseretyan 5097dd5c7d Alerting: Send templates from extra configuration to remote Alertmanager (#107981)
* extract logging of MergedResult into method

* convert GetMergedTemplateDefinitions to return PostableApiTemplate

* update mergeExtracConfigs to return GrafanaAlertmanagerConfig

* pass by value, not pointer

* add template definition to payload

* update tests

* rename to Templates

* log merge results

* fix reference in workspace
2025-07-18 15:16:17 -04:00
Vadim Stepanov bccc980b90 Alerting: Notifiication history (#107644)
* Add unified_alerting.notification_history to ini files

* Parse notification history settings

* Move Loki client to a separate package

* Loki client: add params for metrics and traces

* add NotificationHistorian

* rm writeDuration

* remove RangeQuery stuff

* wip

* wip

* wip

* wip

* pass notification historian in tests

* unify loki settings

* unify loki settings

* add test

* update grafana/alerting

* make update-workspace

* add feature toggle

* fix configureNotificationHistorian

* Revert "add feature toggle"

This reverts commit de7af8f7

* add feature toggle

* more tests

* RuleUID

* fix metrics test

* met.Info.Set(0)
2025-07-17 14:26:26 +01:00
Matthew Jacobson 2444fb1caf Alerting: Update grafana/alerting to 8eef376f49f8 (#108190)
Update grafana/alerting to 8eef376f49f8

Includes support for OAuth2 in most notifiers but does not enable that support
yet in FE. Fixes tests related to the change.
2025-07-16 17:33:52 +00:00
Yuri Tseretyan d15e1ad8d0 Alerting: Fix route validation in provisioning service (#107550)
* introduce ExtraConfigsCrypto
* delete getLastConfiguration and move all code into method Get
* update legacy store to encrypt ExtraConfigs same way we do in MultiOrgAlertmanager
* update legacy store init
* delete PersistConfig
* remove unnecessary unmarshalling
* add better error

* add tests for legacy store

* add tests that cover extra config validation

* add integration test for conflicting routes

---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2025-07-07 12:16:31 -04:00
Alexander Akhmetov b483a04aec Alerting: Send merged configuration to the remote alertmanager (#107004) 2025-07-02 21:35:24 +02:00
Serge Zaitsev f66a693438 Chore: Rename integration tests to follow the common convention (#105987)
* automatically rename integration tests to follow the common convention

* name tests differently

* alter column type to bigint

* update another column to bigint

* add another alter

* fix subquery for mysql
2025-06-29 16:56:24 +02:00
Alexander Akhmetov b93cde0adb Alerting: Use default identifier for extra configs in Alertmanager API (#107049) 2025-06-26 12:44:49 +02:00
Alexander Akhmetov 3b45f7daa5 Alerting: Fix flaky test (#107090) 2025-06-24 11:25:51 +02:00
Alexander Akhmetov 700c9a857c Alerting: Return extra alertmanager config as a string for mimirtool (#106959) 2025-06-19 01:12:26 +02:00
Alexander Akhmetov 4b46da9214 Alerting: Hide extra Prometheus configuration secrets (#106916) 2025-06-18 17:01:19 +02:00
Alexander Akhmetov 426c334973 Alerting: API to create extra Alertmanager configurations (#106904)
What is this feature?

Implements the POST endpoint for deleting imported Mimir Alertmanager configurations:

    POST /api/convert/api/v1/alerts

The API endpoint creates the extra Alertmanager configuration with the provided identifier and matchers.
2025-06-18 15:05:06 +02:00
Alexander Akhmetov def5d889d0 Alerting: API to delete extra Alertmanager configurations (#106892) 2025-06-18 12:37:56 +02:00
Alexander Akhmetov 8c6df8b449 Alerting: Add support for retrieving imported Prometheus Alertmanager configurations (#106864) 2025-06-18 10:49:40 +02:00
Alexander Akhmetov 5a78ce8a4b Alerting: Support saving extra Mimir configurations (#106721) 2025-06-17 23:33:16 +02:00
Moustafa Baiou 74e800e427 Alerting: Add provenance to Prometheus API (#106596)
This commit adds provenance information to the Prometheus API in the ngalert service to enable compatibility with the new alert list page.
2025-06-17 23:31:42 +02:00
Moustafa Baiou 0e6c7f84c3 Alerting: Add filters for health and contact point in Prometheus Rules api (#106580)
This adds the ability to filter rules with the prometheus compatible api using:
1. `receiver_name` to filter by contact point name
2. `health` to filter by the health status of the rule (one of `ok`, `error`, `nodata`, or `unknown`)

This also ensures that groups with no rules (due to filters) are not returned.
2025-06-17 16:57:03 +02:00
Yuri Tseretyan b0ff51a903 Alerting: Support for Mimir configuration in Grafana Alertmanager (#106402) 2025-06-13 16:32:23 +02:00
Matthew Jacobson 0016b57486 Alerting: Add OAuth2 Support for Webhook Receiver (#106302)
* Add to available channels

* Export

* Fix bug in deeply nested secrets

BE: Slice re-use bug when traversing deeply.

FE: Only at most one level of nesting was being taken into account
when determining secureFields keys. This change adds a new field on
NotificationChannelOption: secureFieldKey. This is populated on API GET via
transform. This change gives us the option to hardcode secureFieldKey in the
backend and no longer calculate the key via settings topology.

* Update grafana/alerting to 3e20fda3b872

* Prettier

* Linting

* Fix IntegrationConfig test to catch secure field mismatch
2025-06-12 23:00:09 +02:00
Alexander Akhmetov eaac4a69fb Alerting: Empty endpoints to manage alertmanager configurations (#106546) 2025-06-11 13:45:02 +02:00
Alexander Akhmetov a4fa8ab891 Alerting: Empty endpoint to load alertmanager config with mimirtool (#106266) 2025-06-10 11:35:57 +02:00
Vadim Stepanov 1df888c517 Alerting: Provisioning API returns 403 on quota exceeded for rule group PUT (#106409) 2025-06-09 11:12:22 +01:00
Alexander Akhmetov f7a52bc04e Alerting: Fix group-level labels and query_offset in the import API (#106379)
What is this feature?

Fixes a bug when group-level query_offset and labels parameters are ignored and not saved

Why do we need this feature?

In the import API Prometheus YAML rule definitions are supported:

groups:
  - name: group-1
    interval: 1m
    query_offset: 10m
    labels:
      severity: "warning"
    rules:
      - alert: Alert 0 > 0
        expr: vector(0) > 0

But applying group-level labels and query_offset is broken and they are not saved right now because during the conversion of the API model to PrometheusRuleGroup they aren't saved to the new structure.
2025-06-06 11:21:39 +02:00
Moustafa Baiou 941162ca79 Alerting: Optimize prometheus api permission checks (#106299)
* Alerting: Optimize prometheus api permission checks

This improves the performance of the Prometheus API by performing the permission checks for rule read permission in a folder upfront, rather than checking permissions for each rule group individually. This reduces the number of permission checks and should speed up the API response time.

* refactor vars

---------

Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
2025-06-05 09:43:06 -04:00
Alexander Akhmetov da88e5912f Alerting: Evaluate all imported from Prometheus rules sequentially (#106295)
What is this feature?

Makes all alert rules imported from a Prometheus YAML or Prometheus-compatible data source evaluate sequentially.

Why do we need this feature?

Currently only alert rules [imported via the API](https://grafana.com/docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/alerting-migration/migration-api/) are evaluated sequentially, because only they have the original alert rule definition in YAML. But alert rules can be imported [in the UI, and from a YAML file](https://grafana.com/docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/alerting-migration/), and they won't be evaluated sequentially which can lead to issues with recording rules.
2025-06-05 12:08:44 +02:00
Yuri Tseretyan 33298550b4 Update Alerting module (#106272)
* set kind in TemplateDefinition
2025-06-04 16:05:05 -04:00
Alexander Akhmetov e256f2d5e2 Alerting: Enable recording rules by default (#105603) 2025-06-02 10:56:05 +02:00
Alexander Akhmetov b51d70aad9 Alerting: Fix swagger generation (#106106) 2025-05-28 10:15:11 +02:00
Matheus Macabu 36c31ce841 NGAlert: Revert change to use math/rand/v2 in tests (#105661) 2025-05-20 14:47:57 +02:00
Alexander Akhmetov c58ac15031 Alerting: Remove grafanaManagedRecordingRules feature flag (#105569) 2025-05-19 12:15:49 +02:00
Ieva 2cddaf0781 RBAC: Remove dashboard and folder guardians (#104646)
* replace usage of folder guardians with access control evaluators

* remove NewByFolderUID guardian

* bring up to date

* fix test

* more test fixes, and don't fetch the folder before evaluating lib element access

* change what error is returned

* fix alerting test

* try to fix linter errors

* replace the use of newByFolder guardian with direct access control evaluator checks

* remove newByFolder guardian

* get rid of dashboard and folder guardians

* undo unwanted change

* undo unwanted change

* undo unwanted change

* update code owners
2025-05-19 09:48:16 +03:00
Matheus Macabu 4b426238bd Dependencies: Bump github.com/openfga/openfga from v1.8.6 to v1.8.12 (#105193)
* Dependencies: Bump github.com/openfga/openfga from v1.8.6 to v1.8.12

* Linter: Replace x/exp/rand with math/rand/v2

* NGAlert: Fix test after linter fixes
2025-05-14 11:09:00 +03:00
Alexander Akhmetov 9fe523b9e6 Alerting: API to pause all alert rules in a folder (#104674) 2025-05-13 17:04:01 +02:00
Alexander Akhmetov c17b019ab1 Alerting: Support simplified routing receivers in Prometheus conversion API (#105135)
Adds ability to set notifications settings using the Prometheus conversion API.

The API now supports a new optional header: X-Grafana-Alerting-Notification-Settings which can be used to specify notification settings.

The value of the header is the AlertRuleNotificationSettings structure in JSON:
mimirtool rules load alerts.yaml --extra-headers 'X-Grafana-Alerting-Notification-Settings: {"receiver": "my-webhook", "group_by": ["cluster", "pod"]}'
2025-05-12 22:07:02 +02:00
Sonia Aguilar 0ceea29787 Alerting: Remove alertingSimplifiedRouting feature toggle (#104980)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2025-05-09 16:30:56 +03:00
Yuri Tseretyan 3e2296acd3 Alerting: Support for active time intervals in notification policies (#104252)
* add active_time_intervals to route model

* update k8s compat layer

* update notification policies service to validate active time intervals

* update integration tests

* update openapi

* add active time interval to model

* update route generator to include active time interval

* Update storage list and rename methods to handle active intervals

* update api model

* update provisioning and export models

* update ui to allow active timing config

* update i18n

* fix snapshots for ui tests

* run prettier

* Alerting: Active time intervals UI naming (#104402)

* update naming in UI

* update naming in the edit page title

* update translations

* update alerting module

---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
Co-authored-by: Sonia Aguilar <soniaaguilarpeiron@gmail.com>
2025-05-07 19:19:33 -04:00
Moustafa Baiou 9f07e49cdd Alerting: Add extended definition to prometheus alert rules api (#103320)
* Alerting: Add extended definition to prometheus alert rules api

This adds `isPaused` and `notificationSettings` to the paginated rules api to enable the paginated view of GMA rules.

refactor: make alert rule status and state retrieval extensible

This lets us get status from other sources than the local ruler.

* update swagger spec

* add safety checks in test
2025-04-23 21:14:09 +01:00
Moustafa Baiou 5ddcac8678 Alerting: Add back time interval items to the API spec (#104306) 2025-04-22 14:57:04 -04:00
Fayzal Ghantiwala 3a054d5e00 Alerting: Add FiredAt field to State (#104046)
* Add FiredAt field to the State

* Update featuretoggle files

* Fix lint errors

* Fix test compilation

* Remove random print line + formatting

* Address PR comments
2025-04-22 12:16:38 +01:00