Commit Graph
2001 Commits
Author SHA1 Message Date
SantiagoandGitHub 345b72227f Alert State History: Remove redundant JSON serialization when merging Loki streams (#111443) 2025-09-23 20:56:37 +02:00
SantiagoandGitHub 04bc71fa6d Alert State History: Skip invalid entries when merging streams (#111387) 2025-09-22 12:29:39 +02:00
Yuri TseretyanandGitHub f166968357 Alerting: Refactoring ConfigRevision methods (#111192)
* make validateReceiver private

* make functions and type alias private

* move EncryptedReceivers and DecryptedReceivers to notifier package

to reduce exposure of definitions package via legacy_storage

* return receivers with Grafana origin after create\update

* add tests for ConfigRevision methods
2025-09-19 09:46:35 -04:00
SantiagoandGitHub 8f9d8f1154 Remote Alertmanager: Fix log line in the Mimir client (#111293) 2025-09-18 10:07:16 +00:00
Yuri TseretyanandGitHub c36b2ae191 Alerting: v0 schema for integrations (mimir) (#110908)
* generate schema for mimir integrations from schema on front-end
* review and fix the settings
* Update GetAvailableNotifiersV2 to return mimir as v0
* add version argument to GetSecretKeysForContactPointType
* update TestGetSecretKeysForContactPointType to include v0
* add type alias field to contain alternate types that different from Grafana's
* add support for msteamsv2
* update ConfigForIntegrationType to look for alternate type
* update IntegrationConfigFromType to use new result of ConfigForIntegrationType
* add reference to parent plugin to NotifierPluginVersion to allow getting plugin type by it's alias
* add tests to ensure consistency
* make API response stable
* add tests against snapshot + omit optional fields
2025-09-17 09:25:56 -04:00
Yuri TseretyanandGitHub 356521c9b9 Alerting: Annotation CanUse for receiver resource (#110839)
* add origin to receiver
* populate origin of the receiver
* set CanUse to false if origin is not Grafana
* set provenance if origin is imported
* set Grafana origin by default in conversion API
* set canUse annotation
* reject update\delete operations on resources with origin other than Grafana
* fail to create with wrong origin
2025-09-16 09:32:04 -04:00
Vadim StepanovandGitHub d4bad37853 Alerting: Move notification historian to grafana/alerting (#109078)
* Move notification historian to grafana/alerting

* wip

* golangci-lint

* Revert "golangci-lint"

This reverts commit 10ccebad41.

* JSONEncoder

* alertingInstrument

* go mod tidy

* go.work.sum

* make update-workspace

* merge

* revert go.mod changes

* github.com/grafana/alerting

* make update-workspace

* update github.com/grafana/alerting

* merge
2025-09-15 15:23:51 +01:00
Ryan McKinleyandGitHub afc08dbbbc Chore: go.mod updates (#110957) 2025-09-15 09:01:45 +00:00
Ryan McKinleyandGitHub 9a54243f09 Chore: update golang.org/x/exp (#110980) 2025-09-11 22:13:07 +03:00
Alexander AkhmetovandGitHub fc3636acf2 Alerting: Fix bug where rules with identical mute/active intervals produced conflicting routes (#110935)
Alerting: Fix hash collision in NotificationSettings fingerprint
2025-09-11 13:44:06 +02:00
f65e219b21 Alerting: Update prometheus api to reuse list query logic
This lets the prometheus api respect NoGroup query logic and treat non-grouped rules consistently.

Co-authored-by: William Wernert <william.wernert@grafana.com>
2025-09-10 09:30:56 -04:00
ca8324e62a Alerting: Add support for alpha rules apis in legacy storage
Rules created in the new api makes the rule have no group in the database, but the rule is returned in the old group api with a sentinel group name formatted with the rule uid for compatiblity with the old api.
This makes the UI continue to work with the rules without a group, and the ruler will continue to work with the rules without a group.

Rules are not allowed to be created in the provisioning api with a NoGroup sentinel mask, but NoGroup rules can be manipulated through both the new and old apis.

Co-authored-by: William Wernert <william.wernert@grafana.com>
2025-09-10 09:30:56 -04:00
Peter ŠtibranýandGitHub c32650e9d8 Replace remaining calls to testing.Short where possible. (#110765)
* Replace remaining calls to testing.Short where possible.
* Update style guide.
* Revert change in TestAlertmanager_ExtraDedupStage, as it doesn't work.
* Make TestAlertRulePostExport into integration test.
2025-09-09 08:16:12 +00:00
William WernertandGitHub 61adae16f2 Alerting: Ensure failed query validation returns the proper error code (#110717)
Ensure presave error is a validation error
2025-09-08 13:51:22 -04:00
Ryan McKinleyandGitHub 7c95d3c8a9 Folders: Split legacy out of folder.Service (and remove folder.FolderStore) (#110734) 2025-09-08 18:27:49 +03:00
Fayzal GhantiwalaandGitHub 22ed5499a2 Alerting: Check if TimeInterval is used in ActiveTimings when deleting (#110691)
* check for active timing in route

* Update test

* Add integration test
2025-09-08 15:04:40 +01:00
Peter ŠtibranýandGitHub 7fd9ab9481 Replace check for integration tests. (#110707)
* Replace check for integration tests.
* Revert changes in pkg/tsdb/mysql packages.
* Fix formatting of few tests.
2025-09-08 15:49:49 +02:00
Matthew JacobsonandGitHub d21178e348 Alerting: Fix field names on webhook HMAC/TLS config HCL export (#110722)
tlsConfig -> tls_config
hmacConfig -> hmac_config

tls_config export still does not match TF provider, as the provider currently
treats tls_config as a schemaless map. Once this is improved, they will now
match.
2025-09-05 19:58:11 -04:00
a459d43746 Alerting: Refactor prometheus api functions
Make state and health filters public

Co-authored-by: William Wernert <william.wernert@grafana.com>
Co-authored-by: Fayzal Ghantiwala <fayzal.ghantiwala@grafana.com>
2025-09-05 10:59:16 -04:00
ce55d70fa5 Alerting: Refactor notification legacy storage (#110619)
* make legacy store expose only model.Receiver
* use integration as provenance type provider
* use revision RenameReceiverInRoutes
* introduce function GetReceiversNames in config revision

---------

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2025-09-05 14:46:46 +00:00
Alexander AkhmetovandGitHub 100528e274 Alerting: Support retry with backoff in alert rule evaluation (#99710) 2025-09-04 13:56:03 +02:00
Yuri TseretyanandGitHub 7d32640179 Alerting: Fix ticker tests to not fail if channel is empty (#110538) 2025-09-03 16:21:47 -04:00
Yuri TseretyanandGitHub 1e0aaa29af Alerting: Comprehensive payload for Alertmanager convert API tests (#110485)
* do not remove global config
* create more comprehensive payload for mimir alertmanager testing
2025-09-03 12:11:55 -04:00
Alexander AkhmetovandGitHub 8a7c1f595a Alerting: Backend state filtering for history UI (#109647) 2025-09-03 17:47:03 +02:00
Yuri TseretyanandGitHub 0351a37e99 Alerting: Remote Alertmanager to calculate hash of the request payload instead of just the configuration v2 (#109139)
* Revert "Revert "Alerting: Remote Alertmanager to calculate hash of the reques…"

This reverts commit cbf256120e.

* log the decision

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>

---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2025-09-03 14:01:25 +00:00
Igor SuleymanovandGitHub a07a8d0ba2 Fix listing and getting dashboard versions across different API versions (#109860)
* Fix listing and getting dashboard versions across different API versions

What

This commit updates dashboard version service to use API version aware
API client. The service now also supports parsing different API version
representation of dashboards.

The API version aware client is also updated to support listing across
versions.

Why

Currently listing or getting specific versions is broken for all v2
versions of the dashboard API, especially if the dashboard being checked
is still saved using v1 APIs.

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

* Remove superfluous tracing spans

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>

---------

Signed-off-by: Igor Suleymanov <igor.suleymanov@grafana.com>
2025-09-03 13:51:11 +03:00
Yuri TseretyanandGitHub 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 BaiouandMoustafa 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
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 AkhmetovandGitHub 5e1f79ca83 Alerting: Fix alert rule comparison with the same missing_evals_to_resolve (#110174) 2025-08-26 18:20:50 +02:00
Yuri TseretyanandGitHub 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
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 BrandtandGitHub 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 AkhmetovandGitHub 5d3be370e0 Alerting: Fix provisioning API returning 500 for validation errors in notification settings (#110006) 2025-08-22 13:16:06 +02:00
Alexander AkhmetovandGitHub 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
SantiagoandGitHub 6976ac4caa Alerting: Fix bad field used in LogContext (#110023) 2025-08-22 10:13:02 +00:00
SantiagoandGitHub 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 AkhmetovandGitHub 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
SantiagoandGitHub 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 TseretyanandGitHub a2cae07ac7 Alerting: Remove method ReceiverService.ListReceivers (#109828) 2025-08-19 09:12:23 -04:00
Gábor FarkasandGitHub 2e5b55a855 datasources: querier: renamed the "mt" builder to "qs" builder (#109779) 2025-08-19 12:37:56 +02:00
Alexander AkhmetovandGitHub bdd5bf0397 Alerting: Configurable queue and batch size in external alert manager notifier (#109831) 2025-08-19 09:32:10 +02:00
Yuri TseretyanandGitHub bb55972cef Alerting: Fix fromPrometheusConfig (#109807) 2025-08-18 13:44:33 -04:00
Moustafa BaiouandMoustafa 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 TseretyanandGitHub 9ba1987478 Alerting: Update alertRuleVersions.EqualSpec to ignore RuleGroupIndex (#109740) 2025-08-16 00:19:27 +00:00
Alexander AkhmetovandGitHub 17444fdc0d Alerting: Add keepFiringFor and missing_series_evals_to_resolve to file provisioning (#109699) 2025-08-14 22:19:43 +02:00
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 AkhmetovandGitHub e165a490b4 Alerting: Return merged extra configurations in the API (#109636) 2025-08-14 07:46:12 +02:00
Alexander AkhmetovandGitHub 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 BrandtandGitHub 466aa70179 Sql Expressions: (Chore) Dedicated logger for expr.sql, and pass context (#109549) 2025-08-13 11:20:14 -04:00