Commit Graph

1325 Commits

Author SHA1 Message Date
Yuri Tseretyan 5da383d5b8 [v10.4.x] Alerting: Fix persisting result fingerprint that is used by recovery threshold (#91331)
Alerting: Fix persisting result fingerprint that is used by recovery threshold (#91224)

(cherry picked from commit 537f1fb857)

# Conflicts:
#	pkg/services/ngalert/state/persister_sync.go
2024-07-31 11:16:48 -04:00
grafana-delivery-bot[bot] 9c9d47e99e [v10.4.x] Alerting: Fix panic in provisioning filter contacts by unknown name (#90440)
Alerting: Fix panic in provisioning filter contacts by unknown name (#83070)

(cherry picked from commit 87ab98ea95)

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2024-07-15 17:59:53 +03:00
Fayzal Ghantiwala 466e2573c1 [v10.4.x] Alerting: Return better error for invalid time range on alert queries (#90372)
Alerting: Return better error for invalid time range on alert queries (#85611)

* Return better error for invalid time range

* drop comment

(cherry picked from commit 03114e7602)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2024-07-12 16:15:27 +01:00
grafana-delivery-bot[bot] b037f37bfe [v10.4.x] Alerting: Fix erroneous use of grafana-cli/logger. (#89601)
Alerting: Fix erroneous use of grafana-cli/logger. (#89037)

Can't see how this was intentional, likely just a typo.

(cherry picked from commit d440d86bbb)

Co-authored-by: Steve Simpson <steve.simpson@grafana.com>
2024-06-25 08:59:35 +02:00
Yuri Tseretyan 245297028e [v10.4.x] Alerting: Fix rule storage to filter by group names using case-sensitive comparison (#89061)
Alerting: Fix rule storage to filter by group names using case-sensitive comparison (#88992)

* add test for the bug
* remove unused struct
* update db store to post process filters by group using go-lang's case-sensitive string comparison

--------

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
# Conflicts:
#	pkg/services/ngalert/store/alert_rule.go
#	pkg/services/ngalert/store/alert_rule_test.go
2024-06-11 15:59:37 -04:00
grafana-delivery-bot[bot] 565368e39d [v10.4.x] Alerting: Clamp Loki ASH range query to configured max_query_length (#84607)
Alerting: Clamp Loki ASH range query to configured max_query_length (#83986)

* Clamp range in loki http client to configured max_query_length

Defaults to 721h to match Loki default

(cherry picked from commit 97f37b2e6f)

Co-authored-by: William Wernert <william.wernert@grafana.com>
2024-05-21 12:18:42 -04:00
grafana-delivery-bot[bot] f063ee874e [v10.4.x] Alerting: Fix typo in JSON response for rule export. (#88094)
Alerting: Fix typo in JSON response for rule export. (#88028)

(cherry picked from commit 8c2a382788)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-05-20 10:34:03 -04:00
Yuri Tseretyan 3724a83786 [v10.4.x] Alerting: Add two sets of provisioning actions for rules and notifications (#87664)
Alerting: Add two sets of provisioning actions for rules and notifications  (#87149)

(cherry picked from commit 356a29592b)

# Conflicts:
#	pkg/services/accesscontrol/models.go
#	pkg/services/ngalert/accesscontrol.go
#	pkg/services/ngalert/api/authorization.go
#	pkg/services/ngalert/provisioning/accesscontrol.go
#	pkg/services/ngalert/provisioning/accesscontrol_test.go
2024-05-13 10:45:50 -04:00
Matthew Jacobson 879edcbc32 [v10.4.x] Alerting: Fix simplified routing group by override (#86620)
Alerting: Fix simplified routing group by override (#86552)

* Alerting: Fix simplified routing custom group by override

Custom group by overrides for simplified routing were missing required fields
GroupBy and GroupByAll normally set during upstream Route validation.

This fix ensures those missing fields are applied to the generated routes.

* Inline GroupBy and GroupByAll initialization instead of normalize after

(cherry picked from commit 71445002b7)
2024-04-19 17:23:16 +02:00
grafana-delivery-bot[bot] 2c66783f98 [v10.4.x] Alerting: Return a 400 and errutil error when trying to delete a contact point that is referenced by a policy (#86162)
Alerting: Return a 400 and errutil error when trying to delete a contact point that is referenced by a policy (#85481)

Return a 400 and errutil error when trying to delete a contact point that is referenced by a policy

(cherry picked from commit 5b1498f98f)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2024-04-15 09:49:15 -05:00
grafana-delivery-bot[bot] e743c4a88d [v10.4.x] Alerting: Fix receiver inheritance when provisioning a notification policy (#85192)
Alerting: Fix receiver inheritance when provisioning a notification policy (#82007)

Terraform Issue: grafana/terraform-provider-grafana#1007
Nested routes should be allowed to inherit the contact point from the root (or direct parent) route but this fails in the provisioning API (it works in the UI)

(cherry picked from commit 2188516a21)

Co-authored-by: Julien Duchesne <julien.duchesne@grafana.com>
2024-03-26 17:43:49 +00:00
Will Browne e1fc1e9a13 [v10.4.x] Chore: Update grafana-plugin-sdk (#85087)
* Chore: Update grafana-plugin-sdk (#84289)

(cherry picked from commit 265200799d)

* Re-generate openapi

---------

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
Co-authored-by: Giuseppe Guerra <giuseppe@guerra.in>
2024-03-25 21:27:55 +02:00
grafana-delivery-bot[bot] 04f6c66e91 [v10.4.x] Alerting: Marshal incoming json.RawMessage in diff (#84853)
Alerting: Marshal incoming json.RawMessage in diff (#84692)

This will ensure the encoding is correct when comparing
to the existing rule.

(cherry picked from commit 6d16cf2699)

Co-authored-by: William Wernert <william.wernert@grafana.com>
2024-03-20 17:06:53 -04:00
grafana-delivery-bot[bot] 335aa31bde [v10.4.x] Alerting: Add "Keep Last State" backend functionality (#84406)
Alerting: Add "Keep Last State" backend functionality (#83940)

* Implement keep last state for state transitions

* Respect For duration when keeping state

* Only keep transition from recording an annotation

* Add keep last state option for nodata/error in UI

(cherry picked from commit 10dc6c6d75)

Co-authored-by: William Wernert <william.wernert@grafana.com>
2024-03-13 15:23:02 -04:00
William Wernert fabaff9a24 Alerting: Create metric for rules using simple notifications (#82904)
---------

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2024-02-16 19:01:49 +02:00
Matthew Jacobson dfaf6d1e2e Alerting: Dry-run legacy upgrade on startup (#82835)
Adds a feature flag (alertingUpgradeDryrunOnStart) that will dry-run the legacy 
alert upgrade on startup. It is enabled by default.

When on legacy alerting, this feature flag will log the results of the legacy 
alerting upgrade on startup and draw attention to anything in the current legacy 
alerting configuration that will cause issues when the upgrade is eventually 
performed. It acts as a log warning for those where action is required before 
upgrading to Grafana v11 where legacy alerting will be removed.
2024-02-16 11:29:54 -05:00
Matthew Jacobson e7c6e9c5c9 Alerting: Fix migration edge-case race condition for silences (#81206)
If the db already has an entry in the kvstore for the silences of an
alertmanager before the migration has taken place, then it's possible that the
active alertmanager will overwrite the silence file created by the migration
before it has a chance to load it into memory.

This should not happen normally but is possible in edge-cases.

This change opts to bypass the unnecessary step of writing the silences to disk
during the migration and instead write them directly to the kvstore. This avoids
 the race condition entirely and is more correct as we treat the database as the
  source of truth for AM state.
2024-02-16 10:47:34 -05:00
Gabriel MABILLE 846eadff63 RBAC Search: Replace userLogin filter by namespacedID filter (#81810)
* Add namespace ID

* Refactor and add tests

* Rename maxOneOption -> atMostOneOption

* Add ToDo

* Remove UserLogin & UserID for NamespaceID

Co-authored-by: jguer <joao.guerreiro@grafana.com>

* Remove unecessary import of the userSvc

* Update pkg/services/accesscontrol/acimpl/service.go

* fix 1 -> userID

* Update pkg/services/accesscontrol/accesscontrol.go

---------

Co-authored-by: jguer <joao.guerreiro@grafana.com>
2024-02-16 11:42:36 +01:00
Sven Kirschbaum 86c618a6d6 Alerting: Escape namespace and group path parameters (#80504)
Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2024-02-16 09:43:47 +01:00
Matthew Jacobson 118e4a50b7 Alerting: Remove start page of legacy upgrade preview (#82010)
Alerting: Remove start page of upgrade preview

Alerting upgrade page will now always show the summary table even before
upgrading any alerts or notification channels. There a few reasons for this:

- The information on the start page is redundant as it's now contained in the
documentation.
- Previously, if some unexpected issue prevented performing a full upgrade, a
user would have limited to no means to using the preview tool to help fix the
problem. This is because you could not see the summary table until the full
upgrade was performed at least once. Now, you can upgrade individual alerts and
notification channels from the beginning.
2024-02-15 17:34:00 -05:00
Julien Duchesne ba63e62311 Alerting: Return provenance of notification templates (#82274) 2024-02-15 14:35:54 -05:00
William Wernert b7bbc5058f Alerting: Don't validate rules on group update if they've only been reordered (#81841)
---------

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-02-15 12:03:28 -05:00
Yuri Tseretyan 1eebd2a4de Alerting: Support for simplified notification settings in rule API (#81011)
* Add notification settings to storage\domain and API models. Settings are a slice to workaround XORM mapping
* Support validation of notification settings when rules are updated

* Implement route generator for Alertmanager configuration. That fetches all notification settings.
* Update multi-tenant Alertmanager to run the generator before applying the configuration.

* Add notification settings labels to state calculation
* update the Multi-tenant Alertmanager to provide validation for notification settings

* update GET API so only admins can see auto-gen
2024-02-15 09:45:10 -05:00
Alexander Weaver d4ae10ecc6 Alerting: Small refactor, move unrelated functions out of fetcher (#82459)
Move unrelated functions out of fetcher
2024-02-14 20:01:32 +02:00
Diego Augusto Molina ff08c0a790 Chore: improve test readability in ngalert/schedule (#82453)
Chore: improve test readability
2024-02-14 14:53:32 -03:00
Diego Augusto Molina 9c29e1a783 Alerting: Fix data races and improve testing (#81994)
* Alerting: fix race condition in (*ngalert/sender.ExternalAlertmanager).Run

* Chore: Fix data races when accessing members of *ngalert/state.FakeInstanceStore

* Chore: Fix data races in tests in ngalert/schedule and enable some parallel tests

* Chore: fix linters

* Chore: add TODO comment to remove loopvar once we move to Go 1.22
2024-02-14 12:45:39 -03:00
Alexander Weaver ccb4533a86 Alerting: Remove unused AlertRuleVersionWithPauseStatus (#82383)
Remove unused AlertRuleVersionWithPauseStatus
2024-02-13 10:56:24 -06:00
Alexander Weaver 99fa064576 Alerting: Emit warning when creating or updating unusually large groups (#82279)
* Add config for limit of rules per rule group

* Warn when editing big groups through normal API

* Warn on prov api writes for groups

* Wire up comp root, tests

* Also add warning to state manager warm

* Drop unnecessary conversion
2024-02-13 08:29:03 -06:00
Ryan McKinley 0c6e409350 Chore: Update arrow and prometheus dependencies (#82215)
* update arrow and prometheus

* keep codeowner

* use compare

* use grafana-plugin-sdk-go v0.210.0

---------

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2024-02-13 01:50:25 +01:00
Karl Persson 1315c67c8b Team/User: UID migrations (#82298)
* Add user uid migration to run on every startup to protect against empty values in a upgrade downgrade scenario

* Add team uid migration to run on every startup to protect against empty values in a upgrade downgrade scenario

* Run team uid migration
2024-02-12 14:48:29 +01:00
Alexander Weaver 5bbe9c6e61 Alerting: Enable group-level rule evaluation jittering by default, remove feature toggle (#82212)
* remove jitter feature flag

* Add an out so users can manually disable jitter

* Pass in cfg

* Add TODO to remove knob in future
2024-02-09 15:53:58 -06:00
Dan Cech 790e1feb93 Chore: Update test database initialization (#81673)
* streamline initialization of test databases, support on-disk sqlite test db

* clean up test databases

* introduce testsuite helper

* use testsuite everywhere we use a test db

* update documentation

* improve error handling

* disable entity integration test until we can figure out locking error
2024-02-09 09:35:39 -05:00
Jean-Philippe Quéméner 4dc1ebbb66 fix(alerting): add a proper compare func for location in mute timings (#82153) 2024-02-08 13:36:09 +01:00
George Robinson 90a26e18db Alerting: Update Alertmanager to e82436c (#82145)
This commit updates Alertmanager to commit e82436c, which is based
on commit f69a508 from Prometheus Alertmanager.
2024-02-08 11:25:27 +00:00
Matthew Jacobson dd0ca1263b Alerting: Include rule uid, title, namespace in unique constraint errors (#82011)
* Alerting: Include rule_uid, title, namespace_uid in unique constraint errors
2024-02-07 12:55:48 -05:00
Alexander Weaver 843c477899 Alerting: Add exported API to scheduler to access currently loaded rules (#82031)
* Add exported API to fetch rule definitions from scheduler

* Add comment
2024-02-07 09:31:22 -06:00
Yuri Tseretyan 47546a4c72 Alerting: Update API to use folders' full paths (#81214)
* update GetUserVisibleNamespaces to use FolderSeriver
* update GetNamespaceByUID to use FolderService.GetFolders
* update GetAlertRulesForScheduling to use FolderService.GetFolders 

* Update API and GetAlertRulesForScheduling to use the folder's full path
* get full path of folder in RouteTestGrafanaRuleConfig

* fix escaping of titles for MySQL
2024-02-06 17:12:13 -05:00
Gokhan cf601fab09 Alerting: Enable sending notifications to a specific topic on Telegram (#79546)
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-02-06 17:19:22 +02:00
William Wernert 2ea82af6e7 Alerting: Pass in receiver service to API struct (#81978) 2024-02-06 16:49:47 +02:00
George Robinson c8ccc4649c Alerting: Support UTF-8 (#81512)
This pull request updates our fork of Alertmanager to commit 65bdab0, which is based on commit 5658f8c in Prometheus Alertmanager.

It applies the changes from grafana/alerting#155 which removes the overrides for validation of alerts, labels and silences that we had put in place to allow alerts and silences to work for non-Prometheus datasources. However, as this is now supported in Alertmanager with the UTF-8 work, we can use the new upstream functions and remove these overrides.

The compat package is a package in Alertmanager that takes care of backwards compatibility when parsing matchers, validating alerts, labels and silences. It has three modes: classic mode, UTF-8 strict mode, fallback mode. These modes are controlled via compat.InitFromFlags. Grafana initializes the compat package without any feature flags, which is the equivalent of fallback mode. Classic and UTF-8 strict mode are used in Mimir.

While Grafana Managed Alerts have no need for fallback mode, Grafana can still be used as an interface to manage the configurations of Mimir Alertmanagers and view configurations of Prometheus Alertmanager, and those installations might not have migrated or being running on older versions. Such installations behave as if in classic mode, and Grafana must be able to parse their configurations to interact with them for some period of time. As such, Grafana uses fallback mode until we are ready to drop support for outdated installations of Mimir and the Prometheus Alertmanager.
2024-02-06 08:33:47 +00:00
William Wernert 2ab7d3c725 Alerting: Receivers API (read only endpoints) (#81751)
* Add single receiver method

* Add receiver permissions

* Add single/multi GET endpoints for receivers

* Remove stable tag from time intervals

See end of PR description here: https://github.com/grafana/grafana/pull/81672
2024-02-05 20:12:15 +02:00
Ryan McKinley 9c9e5e68c8 User: Add uid colum to user table (#81615) 2024-02-01 18:14:10 -08:00
Yuri Tseretyan d1073deefd Alerting: Time intervals API (read only endpoints) (#81672)
* declare new API and models GettableTimeIntervals, PostableTimeIntervals
* add new actions alert.notifications.time-intervals:read and alert.notifications.time-intervals:write.
* update existing alerting roles with the read action. Add to all alerting roles.
* add integration tests
2024-02-01 15:17:13 -05:00
William Wernert 7e939401dc Alerting: Introduce initial common receiver service (#81211)
* Create locking config store that mimics existing provisioning store

* Rename existing receivers(_test).go

* Introduce shared receiver group service

* Fix test

* Move query model to models package

* ReceiverGroup -> Receiver

* Remove locking config store

* Move convert methods to compat.go

* Cleanup
2024-02-01 14:42:59 -05:00
George Robinson 0726c7c3fa Alerting: Prevent inhibition rules in Grafana Alertmanager (#81712)
This commit prevents saving configurations containing inhibition
rules in Grafana Alertmanager. It does not reject inhibition
rules when using external Alertmanagers, such as Mimir. This meant
the validation had to be put in the MultiOrgAlertmanager instead of
in the validation of PostableUserConfig. We can remove this when
inhibition rules are supported in Grafana Managed Alerts.
2024-02-01 14:53:15 +00:00
Matthew Jacobson 0ce1ccd6f9 Alerting: Fix inconsistent AM raw config when applied via sync vs API (#81655)
AM config applied via API would use the PostableUserConfig as the AM raw
config and also the hash used to decide when the AM config has changed.
However, when applied via the periodic sync the PostableApiAlertingConfig would
be used instead.

This leads to two issues:
- Inconsistent hash comparisons when modifying the AM causing redundant applies.
- GetStatus assumed the raw config was PostableUserConfig causing the endpoint
to return correctly after a new config is applied via API and then nothing once
 the periodic sync runs.

Note: Technically, the upstream GrafanaAlertamanger GetStatus shouldn't be
returning PostableUserConfig or PostableApiAlertingConfig, but instead
GettableStatus. However, this issue required changes elsewhere and is out of
scope.
2024-01-31 21:05:30 +02:00
Ashley Harrison 39057552dc QueryField: Handle autocomplete better (#81484)
* extract out function + add unit tests

* add feature toggle and default it to on
2024-01-31 10:01:20 +00:00
Yuri Tseretyan 131c72d655 Alerting: Fix scheduler to group folders by the unique key (orgID and UID) (#81303) 2024-01-30 17:14:11 -05:00
Sofia Papagiannaki 89d3b55bec Folders: Reduce DB queries when counting and deleting resources under folders (#81153)
* Add folder store method for fetching all folder descendants

* Modify GetDescendantCounts() to fetch folder descendants at once

* Reduce DB calls when counting library panels under dashboard

* Reduce DB calls when counting dashboards under folder

* Reduce DB calls during folder delete

* Modify folder registry to count/delete entities under multiple folders

* Reduce DB calls when counting

* Reduce DB calls when deleting
2024-01-30 18:26:34 +02:00
William Wernert de662810cf Alerting: Create instance of alert rule generator in historian annotation tests (#81394)
* Create generator variable to ensure closures have correct context
2024-01-29 11:22:43 -05:00