Commit Graph
93 Commits
Author SHA1 Message Date
Jean-Philippe Quéméner 7cfd470c91 fix(alerting): only expose metrics if executing alerts (#85512) 2024-04-03 17:18:02 +02:00
Jean-Philippe Quéméner f2c7023fe6 fix(alerting): use uid and not rand() in tests for title (#85001) 2024-03-22 16:26:09 +02: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
Jean-Philippe Quéméner 25dd8d5ceb Docs: add section about periodic state saving for alerting (#81244) 2024-01-25 17:05:58 +01:00
Jean-Philippe Quéméner aa25776f81 Alerting: Add a feature flag to periodically save states (#80987) 2024-01-23 17:03:30 +01:00
Jean-Philippe Quéméner eb7e1216a1 feat(alerting): add async state persister (#80763) 2024-01-22 13:07:11 +01:00
Jean-Philippe Quéméner 82638d059f feat(alerting): add state persister interface (#80384) 2024-01-17 13:33:13 +01:00
Jean-Philippe Quéméner 11d4f604f5 fix(alerting): proper handling for queries with multiple conditions in migration (#78591)
fix(alerting): proper handling for queries with multiple conditions
2023-11-23 18:05:44 +01:00
Jean-Philippe Quéméner 2d2e058563 refactor: use constant for prometheus datasource type (#78287) 2023-11-17 01:07:35 +01:00
Jean-Philippe Quéméner 2b8c6d66e1 feat(alerting): add query optimizations for prometheus (#76015) 2023-10-17 11:41:25 +02:00
Jean-Philippe Quéméner f3b6d01306 feat(alerting): enable loki query optimization by default (#74739) 2023-09-13 13:52:40 +02:00
Jean-Philippe Quéméner 44b94eca19 docs(alerting): add section about running redis for HA (#73153) 2023-08-11 13:57:00 +02:00
Jean-Philippe Quéméner 2266e09f94 Alerting: optimize rules with multiple loki range queries (#73103) 2023-08-09 19:00:51 +02:00
Jean-Philippe Quéméner 2c6cf66741 Alerting: Optimize external Loki queries (#73014) 2023-08-08 15:13:41 +02:00
Jean-Philippe Quéméner 50f7937675 chore(docs): regenerate feature toggles file (#71827) 2023-07-18 11:46:59 +02:00
Jean-Philippe Quéméner 09dd7ae980 chore(cue): run make gen-cue (#71819) 2023-07-18 11:03:16 +02:00
Jean-Philippe Quéméner 934ba1aaa1 Alerting: Rewrite range to instant queries if possible (#69976) 2023-06-16 19:55:49 +02:00
Jean-Philippe Quéméner fe2103bfc8 Util: Fix panic when generating UIDs concurrently (#69476) 2023-06-05 11:21:11 +02:00
Jean-Philippe Quéméner 22d47d6b96 Alerting: Add info to enable alert forwarding when using an external alertmanager (#69150) 2023-05-26 15:30:51 +02:00
Jean-Philippe Quéméner 5717d8954f Alerting: Return empty list on export if no rules exist (#69023) 2023-05-25 14:12:18 +02:00
Jean-Philippe Quéméner 8bb62a8316 Alerting: Add option for memberlist label (#67982) 2023-05-09 10:32:23 +02:00
Jean-Philippe Quéméner bbce69f295 Alerting: Use configured headers for external alertmanager (#63819) 2023-04-21 16:16:27 +02:00
Jean-Philippe QuéménerandSteve Simpson bc11a484ed Alerting: Add support for running HA using Redis (#65267)
Co-authored-by: Steve Simpson <steve.simpson@grafana.com>
2023-04-19 17:05:26 +02:00
Jean-Philippe Quéméner 42cdec369d Datasources: provide generic function to extract custom headers (#66738) 2023-04-19 17:04:30 +02:00
Jean-Philippe Quéméner cb8e01214d Revert "Alerting: Update Prometheus Alertmanager (#64434)" (#64503)
This reverts commit 5a4ebe3a67.
2023-03-09 13:32:07 +01:00
Jean-Philippe Quéméner fb5ed0b0b3 Alerting: fix flaky cache test (#64499) 2023-03-09 06:08:05 -05:00
Jean-Philippe QuéménerandAlex Weaver 1694a35e0c Alerting: implement loki query for alert state history (#61992)
* Alerting: implement loki query for alert state history

* extract selector building

* add unit tests for selector creation

* backup

* give selectors their own type

* build dataframe

* add some tests

* small changes after manual testing

* use struct client

* golint

* more golint

* Make RuleUID optional for Loki implementation

* Drop initial assumption that we only have one series

* Pare down to three columns, fix timestamp overflows, improve failure cases in loki responses

* Embed structred log lines in the dataframe as objects rather than json strings

* Include state history label filter

* Remove dead code

---------

Co-authored-by: Alex Weaver <weaver.alex.d@gmail.com>
2023-02-02 16:31:51 -06:00
Jean-Philippe Quéméner 44b11d3228 Alerting: support basic auth for the state history loki client (#61696) 2023-01-18 20:24:40 +01:00
Jean-Philippe Quéméner 41b3398eb4 Alerting: Enable interpolation for notification policies in file provisioning (#58956) 2022-11-22 16:54:24 +01:00
Jean-Philippe Quéméner f3a307778a Alerting: cache general folder in migration based on org id (#55620) 2022-09-23 18:22:45 +02:00
Jean-Philippe Quéméner 0f2afb6417 Alerting: support env variables in contact point settings when provsioning (#55666) 2022-09-23 08:06:51 -05:00
Jean-Philippe Quéméner 74c66b29d0 Alerting: Skip unsupported file types on provisioning (#55573) 2022-09-21 16:48:39 +02:00
Jean-Philippe Quéméner 4dc0d49025 Alerting: make sure that rules in rule group are nil if not provided (#55301) 2022-09-16 18:54:00 +02:00
Jean-Philippe Quéméner bc4d929c67 Alerting: remove interpolation of annotations from alert rule file provisioning (#54975) 2022-09-09 18:47:54 +02:00
Jean-Philippe Quéméner d88f1c8e35 Alerting: validate am config changes before persisting (#54908) 2022-09-09 10:05:52 +02:00
Jean-Philippe Quéméner e41f78a56d Alerting: make sure to update contact point references when updating (#54896) 2022-09-08 15:20:52 +02:00
Jean-Philippe Quéméner a932428057 Alerting: use raw query data in provisioning to bypass interpolation of macros (#54293) 2022-08-26 23:54:30 +02:00
Jean-Philippe Quéméner 49b1182f34 Alerting: add missing yaml tag to mute time struct (#54287) 2022-08-26 23:30:07 +02:00
Jean-Philippe Quéméner 2fef8e6f2c Alerting: add docs for file provisioning (#53101) 2022-08-17 18:53:36 +02:00
Jean-Philippe Quéméner 7f0002448d Alerting: use duration model for alert rule provisioning api (#53196) 2022-08-12 00:58:02 +02:00
Jean-Philippe Quéméner e14c91d5d4 Alerting: fetch interval from stored namespace UID (#53195) 2022-08-12 00:54:57 +02:00
Jean-Philippe Quéméner 8c5f5e7a32 Alerting: create provisioning dir in docker image (#53594) 2022-08-12 00:16:02 +02:00
Jean-Philippe Quéméner 54217a2037 Alerting: set dashboard and panel id using annotations in provisioning api (#53221) 2022-08-03 16:05:32 +02:00
Jean-Philippe Quéméner 8fc8d00167 Alerting: Add file provisioning for text templates (#52952) 2022-08-01 20:50:03 +02:00
Jean-Philippe Quéméner 3d39594d75 Alerting: Add file provisioning for mute timings (#52936) 2022-08-01 14:19:33 -04:00
Jean-Philippe Quéméner eab6365cf7 Alerting: Add file provisioning for notification policies (#52877) 2022-08-01 19:14:57 +02:00
Jean-Philippe Quéméner d9cace4dca Alerting: Add file provisioning for contact points (#51924) 2022-08-01 18:17:42 +02:00
Jean-Philippe Quéméner ba9c18d9c3 Alerting: use static channel configuration to determinate secure fields (#52527)
* Alerting: use static channel configuration to determinate secure fields

* move to channels package

* introduce channel_config package to fix cyclic import

* add missing changes

* compare type to type
2022-07-20 19:58:36 +02:00
Jean-Philippe Quéméner 320262c3db Alerting: Cleanup the alert_configuration table on write (#51497) 2022-07-20 16:54:18 +02:00
Jean-Philippe Quéméner 50ae42130b Alerting: take datasources as external alertmanagers into consideration (#52534) 2022-07-20 16:50:49 +02:00
Jean-Philippe Quéméner 41790083d2 Alerting: Add file provisioning for alert rules (#51635) 2022-07-14 23:53:13 +02:00
Jean-Philippe Quéméner 4a76436be2 Altering: validate that the mute time intervals exist when updating routing tree (#51573)
* validate that the mute time intervals exist when updating routing tree

* run lint

* add tests
2022-07-05 13:09:17 -04:00
Jean-Philippe Quéméner e64cde8727 Alerting: validate that the receiver exist when updating routing tree (#51561)
* Alerting: validate that the receiver exist when updating routing tree

* rename interface

* add missing file

* change constructor

* fix e2e tests

* only import package once

* add unit test for bug

* wording

* close response body

* Update pkg/services/ngalert/api/tooling/definitions/alertmanager_validation.go

* refactor to remove database roundtrip
2022-07-05 18:09:57 +02:00
Jean-Philippe Quéméner 580c5b6ad2 Alerting: add YAML support for relative time range (#51694) 2022-07-04 06:03:34 -04:00
Jean-Philippe Quéméner cd0fefec5b Alerting: change optimistic lock to use proper insert select (#51461)
* Alerting: change optimistic lock to proper insert select

* remove debug logging

* fix postgres

* fix mysql

* remove empty line for go-lint

* add some docs

* use constants
2022-06-28 00:20:21 +02:00
Jean-Philippe QuéménerandYuriy Tseretyan bf255965a2 Alerting: prevent the use of the same uid across all contact points (#51440)
* Alerting: prevent the use of the same uid across all contact points

* Update pkg/services/ngalert/provisioning/contactpoints.go

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-06-27 12:57:47 -04:00
Jean-Philippe Quéméner 1ed7280363 Alerting: add right provenance when creating mute timings (#50707) 2022-06-13 18:05:41 +02:00
Jean-Philippe Quéméner ed6a887737 Alerting: remove unused function in alert rule store (#50696) 2022-06-13 11:24:29 -04:00
Jean-Philippe Quéméner 862f51216b Alerting: improve provisioning docs (#50347)
* Alerting: improve provisioning docs

* add new provisioning page

* add api docs

* fix formatting and add better descriptions

* fix typo
2022-06-10 16:25:15 +02:00
Jean-Philippe Quéméner cf684ed38f Alerting: bump rule version when updating rule group interval (#50295)
* Alerting: move group update to alert rule service

* rename validateAlertRuleInterval to validateRuleGroupInterval

* init baseinterval correctly

* add seconds suffix

* extract validation function for reusability

* add context to err message
2022-06-09 09:28:32 +02:00
Jean-Philippe Quéméner fd664e4beb Alerting: replace a duplicated configuration key (#50350)
This PR renames the configuration key enabled to capture. This is needed as we already have a configuration key with the name enabled.

Fixes #50328

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-06-08 11:04:51 +08:00
Jean-Philippe Quéméner 4b8a4449ed Alerting: remove feature toggle for provisioning API (#50167)
* Alerting: remove feature toggle for provisioning API

* remove missed code parts

* remove unused import

* remove empty line

* mark routes as stable
2022-06-05 07:45:36 +02:00
Jean-Philippe Quéméner 4cc8c6f745 Alerting: Add provenance guard to config api (#50147)
* Alerting: add provenance guard to config api

* add tests

* only guard if config valid

* adapt error message

* simplify logic

* rename arguments

* make logic more straight forward

* rename opt to options

* remove useless maps
2022-06-04 14:55:46 +02:00
Jean-Philippe Quéméner 0cec12b8a9 strip null from new heatmap dashboard definition (#50208) 2022-06-04 14:32:19 +02:00
Jean-Philippe Quéméner 8de4ffe61f Alerting: only delete mute time if not used by route (#50193)
* Alerting: only delete mute time if not used by route

* add a testcase

* import package only once

* replace apimodels with definitions
2022-06-04 07:48:24 +02:00
Jean-Philippe Quéméner d2f3631a47 Alerting: add mute timings provenance to config api (#50149) 2022-06-03 19:32:31 +02:00
Jean-Philippe Quéméner 468ed68d64 Alerting: allow custom UID for contact points through API (#50089)
* Alerting: allow custom UID for contact points through API

* fix auth
2022-06-03 10:33:47 +02:00
Jean-Philippe Quéméner 81d360529b Alerting: Provisioning API - Alert rules (#47930) 2022-06-02 14:48:53 +02:00
Jean-Philippe Quéméner 30d9cc81ec Alerting: check provenance of alert rules in current API (#48694) 2022-05-06 20:55:27 +02:00
Jean-Philippe Quéméner 0a87ef06af Alerting: add safeguard for migrations that might cause dataloss (#48526)
* Alerting: add safeguard for migrations that might cause dataloss

* add test for panic

* add documentation
2022-05-02 10:38:42 +02:00
Jean-Philippe Quéméner 9e3a01a1be Alerting: skip flaky test (#48500) 2022-04-29 12:32:30 +02:00
Jean-Philippe Quéméner 9e21e4d1c1 Alerting: indicate whether an alertrule is provisioned (#48458) 2022-04-28 21:27:34 +02:00
Jean-Philippe Quéméner a3256bafa7 Alerting: indicate whether contact point is provisioned (#48323) 2022-04-27 20:53:36 +02:00
Jean-Philippe Quéméner 060ccacbf9 Alerting: unwrap upsert into insert and update function (#47731)
* Alerting: unwrap upsert into insert and update function

* add changelog entry

* remove changelog entry

* rename upsertrule to updaterule

* use directly alertrule model for inserts

* add test for updating a rule with a conflicting name
2022-04-14 14:21:36 +02:00
Jean-Philippe Quéméner 388ecb4037 Alerting: Provisioning API - Contact points (#47197) 2022-04-13 22:15:55 +02:00
Jean-Philippe Quéméner a80f04c949 Alerting: add collision safe update function for alertmanager configurations (#46692)
* Alerting: add collision safe update function for alertmanager configurations

* fix typo

* use bootstrap func for tests

* move hash calculation to store

* remove icons lol

* remove removed field
2022-03-23 09:31:46 +01:00
Jean-Philippe Quéméner e135b8531a Alerting: refactor receiver validation to be reusable (#46103) 2022-03-15 00:27:10 +01:00
Jean-Philippe Quéméner 82aa5acba6 Revert "Alerting: Calculate diff for two AlertRules (#45877)" (#46023)
This reverts commit 4e19d7df63.
2022-03-01 13:40:47 +01:00
Jean-Philippe Quéméner 4fef791c7c Alerting: enable e2e tests to run in production mode (#45073)
* Alerting: run e2e tests in production mode

* adapt expected messages

* switch expected and actual to have the right order
2022-02-09 10:26:06 +01:00
Jean-Philippe Quéménerandgillesdemey 8ee3f59cd4 Alerting: recognize Cortex datasources correctly in the frontend (#44316)
* Alerting: always use msg field for user facing errors

* fix: revert front-end Cortex detection

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
2022-01-21 15:44:11 +01:00
Jean-Philippe Quéméner ffc72aa255 Alerting: fix gosec warning that is not valid (#43425) 2021-12-21 19:47:47 +01:00
Jean-Philippe Quéméner b605340668 Alerting: log errors happening in the API on server side (#43192)
* Alerting: log errors happening in the API on server side

* adapt tests to reflect changed payload
2021-12-16 13:33:10 +01:00
Jean-Philippe Quéméner e70cdb3f49 Alerting: add documentation about alertmanager contactpoint support (#42799) 2021-12-07 09:04:47 +01:00
Jean-Philippe Quéméner cec2d965ec Alerting: validate mute timings in the alertmanager configuration (#42125)
* Alerting: check for uniqueness of mutetime names

* add some testing

* add name validation

* add root route validation

* add tests for validation

* add check for root route mute_time_intervals

* add duplicate test

* remove useless yaml test

* refactor table test
2021-11-23 16:25:20 +01:00
Jean-Philippe Quéméner f3b023ffa6 Fix: add the babel config to the dockerfiles (#42021) 2021-11-20 15:40:13 +01:00
Jean-Philippe Quéméner b9cdad3814 Alerting: support mute timings configuration through the api for the embedded alertmanager (#41533)
* Alerting: accept mute_timing_intervals through the api for the embedded alertmanager

* add workaround for mutetimeinterval

* add mute timings to routes

* revert changes

* Update pkg/services/ngalert/api/api_alertmanager.go

* Update pkg/services/ngalert/api/api_alertmanager.go

* Update pkg/services/ngalert/api/api_alertmanager.go

* update prometheus/alertmanager dependency

* add some var docs
2021-11-19 16:50:55 +01:00
Jean-Philippe Quéméner 2319c52c85 Alerting: fix a bug where the metric in the evaluation string was not correctly populated (#41731)
Instead of using the frame name as the series name, we now use the name of the series value column if the frame name is not set. Queries to some datasources may end up with an empty frame name, which leads to an empty series name. As the series name is used in the frontend to display which metrics were queried etc. it shouldn't be empty.
2021-11-17 11:00:59 +01:00
Jean-Philippe Quéméner d1aefa1792 Alerting: fix ngalert alertmanager SQL Syntax Errors (#40827)
* test kvstore in intregration tests with different databases

* escape 'key' in delete query

* export quote and use it in kvstore
2021-10-25 11:53:41 +02:00
Jean-Philippe Quéméner 74aa105b86 docs: fix typos in unified alerting (#40696) 2021-10-20 14:52:57 +02:00
Jean-Philippe Quéméner 153c356993 Alerting: delete orphaned records from kvstore (#40337) 2021-10-14 12:04:00 +02:00
Jean-Philippe Quéméner 1b7ca0413a Alerting: add docs for the new webhook (#40314) 2021-10-14 11:07:31 +02:00
Jean-Philippe Quéméner e1dfec49f9 Alerting: cleanup alert resources on org removal (#39938) 2021-10-12 12:05:02 +02:00
Jean-Philippe Quéméner d9c0220824 Alerting: add organziation ID to the ngAlert webhook payload (#40189)
* Alerting: add organziation ID to the ngAlert webhook payload
2021-10-08 14:52:44 +02:00