Commit Graph

28 Commits

Author SHA1 Message Date
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
Alexander Akhmetov e92baba748 Alerting: Support PDC in Grafana-managed recording rules (#106677) 2025-06-17 11:46:34 +02:00
Alexander Akhmetov e256f2d5e2 Alerting: Enable recording rules by default (#105603) 2025-06-02 10:56:05 +02:00
William Wernert 0208231ed6 Alerting: Handle connection errors in remote writer as expected (i.e. user) errors (#105687) 2025-05-20 15:14:39 -04:00
Tito Lins 15aa879acb Alerting: ignore multiple org ids on prom writer (#105652) 2025-05-20 10:15:25 +02:00
Alexander Akhmetov 04f7f2451d Alerting: Add custom headers support for recording rules custom datasource writer (#105618)
Alerting: Add custom headers support for recording rules datasource writer
2025-05-19 19:42:22 +02:00
Yuri Tseretyan f647faba5f Alerting: Prom Writer to handle 401 and 403 errors (#105498)
* handle 401 and 403 errors + try to extract information from underlying error.

---------

Signed-off-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2025-05-16 17:11:05 +03:00
Tito Lins 42472dbe7e Alerting: handle mimir BadRequest write errors (#102027) 2025-03-19 14:56:00 +01:00
Steve Simpson bbab62ce39 Alerting: Select remote write path dependent on metrics backend type. (#101891)
The remote write path differs based on whether the data source is actually
Prometheus, Mimir, Cortex, or an older version of Cortex. We do not want
users to have to specify the path, so this change determines the path as
best it can.

It may be in the future we have to make this configurable per-datasource
to cater for setups where it's impossible to determine the correct path.
2025-03-11 13:45:16 +01:00
Steve Simpson cc80681beb Alerting: Extend recording rules test to exercise writing with data sources. (#101775)
The change to use WriteDatasource was done in a previous commit, this adds a
test case using DatasourceWriter, in addition to the one using PrometheusWriter.
2025-03-07 13:51:50 +01:00
Steve Simpson 872fbf0208 Alerting: Implement arbitrary data source remote writer. (#101735)
* Alerting: Implement arbitrary data source remote writer.

Recording rules currently remote write to the endpoint speficied in the
configuration file, but we want to change this so that it can be specified
on a per-rule basis. This change implements the updated RemoteWriter
interface, and dispatches writes to the correct data source.

Notes about the implementation:
- There is a defaulting behaviour, because we will need to handle situations
  when upgrading from older Grafana versions, where recording rules do not a
  data source target specified.
- In order to avoid re-creating the remote write clients for every request,
  a cache is used. The entries have a TTL of 30 seconds at which point they
  are recreated; this is the delay for picking up new data source settings.

Known limitations:
- There is no per data source configuration for the remote write path suffix.
- Not all data source settings will be used, but basic auth and TLS will be.
- There is no RBAC. This will be a follow up feature.

* Lint
2025-03-07 10:23:23 +01:00
Steve Simpson eed07cf503 Alerting: Refactor NewPrometheusWriter function. (#101706)
* Alerting: Refactor NewPrometheusWriter function.

In order to re-use PrometheusWriter, changing the function take a
PrometheusWriterConfig instead of RecordingRulesSettings, and adapt the old
interface onto the new interface.

* Make linter happy
2025-03-06 16:13:22 +01:00
Steve Simpson b7dcfcedcb Alerting: Extend recording rule definitions/interfaces with data source. (#101678)
Extend the recording rule definition to include the target data source, allowing
configuration of where the output of the recording rule is written to. Also
extends the relevant interfaces in preparation for the next set of changes.
2025-03-06 14:09:17 +01:00
Santiago b58d616495 Alerting: Handle err-mimir-max-label-names-per-series as a user error in the prom writer (#101214) 2025-02-24 15:43:19 +01:00
Alexander Akhmetov aaa4fe1fe4 Alerting: handle err-mimir-label-value-too-long as user error in the prom writer (#98783)
Alerting: handle err-mimir-label-value-too-long as user error in the writer
2025-01-10 18:36:05 +01:00
Yuri Tseretyan bfa56bcf08 Alerting: Prom writer to handle err-mimir-max-series-per-user as user error (#98334)
handle err-mimir-max-series-per-user as user error
2025-01-06 10:54:56 -05:00
Alexander Weaver 4d8d916434 Alerting: Separate write errors from Prometheus/Mimir into 400/500 categories (#94699)
* Separate errors from Prometheus/Mimir into categories

* Drop duplicate

* tests
2024-10-14 15:31:36 -05:00
Alexander Weaver 378d92130d Alerting: Don't suppress translation errors in PointsFromFrames (#93747)
* don't suppress error

* reorder

* re-add nilcheck
2024-09-26 16:30:50 -05:00
Alexander Weaver 534bfba7e3 Alerting: Use typed errors in prometheus remote writer (#93500)
Strongly typed writer errors
2024-09-19 13:34:35 -05:00
Alexander Weaver 72ecde5045 Alerting: Make orgID a direct arg of writer interface (#91422)
make orgID a direct arg of writer interface
2024-08-02 09:37:28 -05:00
William Wernert a1ee84f757 Alerting: Remove duplicate tracing middleware from prom writer (#91353)
Remove duplicate tracing middleware from prom writer
2024-08-01 11:57:14 -04:00
William Wernert 45f298120e Alerting: Return error when writing recorded metrics instead of default writing NaN (#90743)
* Return error instead of default writing NaN
2024-07-22 15:47:02 -04:00
Alexander Weaver 418b077c59 Alerting: Integration testing for recording rules including writes (#90390)
* Add success case and tests for writer using metrics

* Use testable version of clock

* Assert a specific series was written

* Fix linter

* Fix manually constructed writer
2024-07-18 17:14:49 -05:00
Alexander Weaver 111ebd4fb2 Alerting: Create integration testing infra for recording rules (#90306)
* Create some integration testing infra for RRs

* whoops

* Require no error in responding

* fix linter

* Panic, no need to pass testing around

* Extend status test
2024-07-11 14:59:52 -05:00
William Wernert fcfa89f864 Alerting: Implement Prometheus remote write for recording rules (#89189)
* Fix timestamp recorded by rule

* Implement prometheus remote write

* Create http client instead of transport

* Address PR comments

* Remove status code label
2024-06-25 17:23:42 +03:00
William Wernert c62cc25513 Alerting: Configure recording rule writer from config.ini (#89056) 2024-06-12 16:04:46 -04:00
William Wernert 63e9969c1b Alerting: Recording rule mapping logic for data frames to Prometheus metrics (#88550)
* Add stub Prometheus writer with mapping logic

* Add tests
2024-06-07 20:00:22 +03:00
William Wernert 5de7d4d06d Alerting: Create writer interface for recording rules (#88459)
* Create writer interface for recording rules

Also create fake impl + use it for stub in scheduler
2024-05-29 22:38:33 +03:00