Compare commits

...
Author SHA1 Message Date
Johnny K. 0b6c55f503 recording rule provisioning 2026-01-12 14:17:41 -06:00
Johnny K. 12601754d9 Update alerting provisioning documentation to remove references to recording rules and streamline content 2026-01-12 14:15:23 -06:00
Johnny K. 8ec74206db add recording rule provisioning content 2026-01-12 14:13:27 -06:00
Johnny K. dba4dab203 Revert "alerting docs: update configure alert state history"
This reverts commit fbd74104bd.
2026-01-12 13:55:09 -06:00
Johnny K. fbd74104bd alerting docs: update configure alert state history
Update the Configure Alert State History docs with multi configurations.
2026-01-12 13:54:28 -06:00
Johnny K. f81dd88ca7 Revert "alerting docs: update alert state history docs"
This reverts commit d4d2cc8d59.
2026-01-12 13:52:39 -06:00
Johnny K. d4d2cc8d59 alerting docs: update alert state history docs
Update the Configure Alert State History docs with multi configurations.
2026-01-12 13:49:53 -06:00
Johnny K. 9c7e48997a prettier 2026-01-12 13:29:24 -06:00
Johnny K. 801bd30272 wrong pr 2026-01-12 13:20:51 -06:00
Johnny K. c6b07f1ab9 alerting docs: remove reference to removed field
This PR removes the Role ARN field for Amazon contact points, per Fayzal's comment here: https://github.com/grafana/support-escalations/issues/16775#issuecomment-2987343725
2026-01-12 13:19:26 -06:00
Johnny K. 34ea402456 alerting docs: add keepFiringFor to provisioning
This PR adds `keepFiringFor` to provisioning docs and includes it in examples.
2026-01-12 12:50:30 -06:00
@@ -23,6 +23,8 @@ The `export` endpoints allow you to export alerting resources in a JSON format s
### Alert rules
The following endpoints can be used to manage both alert rules and recording rules. To create a recording rule, include a `record` block in your request instead of a `condition` field.
| Method | URI | Name | Summary |
| ------ | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------- |
| DELETE | /api/v1/provisioning/alert-rules/:uid | [route delete alert rule](#route-delete-alert-rule) | Delete a specific alert rule by UID. |
@@ -51,6 +53,7 @@ Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
"noDataState": "OK",
"execErrState": "OK",
"for": "5m",
"keepFiringFor": "2m",
"orgId": 1,
"uid": "",
"condition": "B",
@@ -200,6 +203,7 @@ Content-Type: application/json
"noDataState": "OK",
"execErrState": "OK",
"for": "5m",
"keepFiringFor": "2m",
"annotations": {
"summary": "test_api_1"
},
@@ -213,6 +217,103 @@ Content-Type: application/json
}
```
**Example request for new recording rule:**
Recording rules allow you to pre-compute frequently used or computationally expensive expressions and save the results as new time series data. To create a recording rule instead of an alert rule, include a `record` block in your request.
The `record` block contains the following fields:
- `metric`: The name of the new metric to create
- `from`: The `refId` of the query whose value will be used for the recording
- `target_datasource_uid`: The UID of the data source where the metric will be written
```http
POST /api/v1/provisioning/alert-rules
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
{
"folderUID": "IpGEy0u7k",
"ruleGroup": "Testing",
"title": "test-grafana-recording-rule-2",
"condition": "",
"data": [
{
"refId": "A",
"queryType": "",
"relativeTimeRange": {
"from": 600,
"to": 0
},
"datasourceUid": "grafanacloud-prom",
"model": {
"expr": "up{job=\"integrations/macos-node\",instance=\"Bojans-MacBook-Pro.local\"}",
"instant": true,
"intervalMs": 1000,
"legendFormat": "__auto",
"maxDataPoints": 43200,
"range": false,
"refId": "A"
}
},
{
"refId": "B",
"queryType": "",
"relativeTimeRange": {
"from": 0,
"to": 0
},
"datasourceUid": "__expr__",
"model": {
"conditions": [
{
"evaluator": {
"params": [],
"type": "gt"
},
"operator": {
"type": "and"
},
"query": {
"params": [
"B"
]
},
"reducer": {
"params": [],
"type": "last"
},
"type": "query"
}
],
"datasource": {
"type": "__expr__",
"uid": "__expr__"
},
"expression": "A",
"intervalMs": 1000,
"maxDataPoints": 43200,
"reducer": "last",
"refId": "B",
"type": "reduce"
}
}
],
"noDataState": "",
"execErrState": "",
"for": "0s",
"keep_firing_for": "0s",
"isPaused": false,
"notification_settings": null,
"record": {
"metric": "grafana_recording_rule_test_2",
"from": "B",
"target_datasource_uid": "grafanacloud-prom"
}
}
```
### Contact points
| Method | URI | Name | Summary |
@@ -1551,20 +1652,21 @@ Status: Accepted
{{% responsive-table %}}
| Name | Type | Go type | Required | Default | Description | Example |
| -------------- | ----------------------------------------- | --------------------- | :------: | ------- | ----------- | ------- |
| `annotations` | map of string | `map[string]string` | | | | |
| `condition` | string | string | | | | |
| `dashboardUid` | string | string | | | | |
| `data` | [][AlertQueryExport](#alert-query-export) | `[]*AlertQueryExport` | | | | |
| `execErrState` | string | string | | | | |
| `for` | [Duration](#duration) | Duration | | | | |
| `isPaused` | boolean | `bool` | | | | |
| `labels` | map of string | `map[string]string` | | | | |
| `noDataState` | string | string | | | | |
| `panelId` | int64 (formatted integer) | int64 | | | | |
| `title` | string | string | | | | |
| `uid` | string | string | | | | |
| Name | Type | Go type | Required | Default | Description | Example |
| --------------- | ----------------------------------------- | --------------------- | :------: | ------- | --------------------------------------------------------------------------------------------------- | ------- |
| `annotations` | map of string | `map[string]string` | | | | |
| `condition` | string | string | | | | |
| `dashboardUid` | string | string | | | | |
| `data` | [][AlertQueryExport](#alert-query-export) | `[]*AlertQueryExport` | | | | |
| `execErrState` | string | string | | | | |
| `for` | [Duration](#duration) | Duration | | | | |
| `keepFiringFor` | [Duration](#duration) | Duration | | | How long the alert continues to fire after the condition is no longer met. Prevents alert flapping. | `2m` |
| `isPaused` | boolean | `bool` | | | | |
| `labels` | map of string | `map[string]string` | | | | |
| `noDataState` | string | string | | | | |
| `panelId` | int64 (formatted integer) | int64 | | | | |
| `title` | string | string | | | | |
| `uid` | string | string | | | | |
{{% /responsive-table %}}
@@ -1784,24 +1886,25 @@ When creating a contact point, the `EmbeddedContactPoint.name` property determin
{{% responsive-table %}}
| Name | Type | Go type | Required | Default | Description | Example |
| ------------- | ---------------------------- | ------------------------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `annotations` | map of string | `map[string]string` | | | Optional key-value pairs. `__dashboardUid__` and `__panelId__` must be set together; one cannot be set without the other. | `{"runbook_url":"https://supercoolrunbook.com/page/13"}` |
| `condition` | string | string | ✓ | | | `A` |
| `data` | [][AlertQuery](#alert-query) | `[]*AlertQuery` | ✓ | | | `[{"datasourceUid":"__expr__","model":{"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":[]},"reducer":{"params":[],"type":"avg"},"type":"query"}],"datasource":{"type":"__expr__","uid":"__expr__"},"expression":"1 == 1","hide":false,"intervalMs":1000,"maxDataPoints":43200,"refId":"A","type":"math"},"queryType":"","refId":"A","relativeTimeRange":{"from":0,"to":0}}]` |
| execErrState | string | string | ✓ | | | |
| `folderUID` | string | string | ✓ | | | `project_x` |
| `for` | [Duration](#duration) | [Duration](#duration) | ✓ | | | |
| `id` | int64 (formatted integer) | int64 | | | | |
| `isPaused` | boolean | `bool` | | | | `false` |
| `labels` | map of string | `map[string]string` | | | | `{"team":"sre-team-1"}` |
| `noDataState` | string | string | | | | |
| `orgID` | int64 (formatted integer) | `int64 | ✓ | | | |
| `provenance` | [Provenance](#provenance) | [Provenance](#provenance) | | | | |
| `ruleGroup` | string | string | ✓ | | | `eval_group_1` |
| `title` | string | string | ✓ | | | `Always firing` |
| `uid` | string | string | | | | |
| `updated` | date-time (formatted string) | `strfmt.DateTime` | | | | |
| Name | Type | Go type | Required | Default | Description | Example |
| --------------- | ---------------------------- | ------------------------- | :------: | ------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `annotations` | map of string | `map[string]string` | | | Optional key-value pairs. `__dashboardUid__` and `__panelId__` must be set together; one cannot be set without the other. | `{"runbook_url":"https://supercoolrunbook.com/page/13"}` |
| `condition` | string | string | ✓ | | | `A` |
| `data` | [][AlertQuery](#alert-query) | `[]*AlertQuery` | ✓ | | | `[{"datasourceUid":"__expr__","model":{"conditions":[{"evaluator":{"params":[0,0],"type":"gt"},"operator":{"type":"and"},"query":{"params":[]},"reducer":{"params":[],"type":"avg"},"type":"query"}],"datasource":{"type":"__expr__","uid":"__expr__"},"expression":"1 == 1","hide":false,"intervalMs":1000,"maxDataPoints":43200,"refId":"A","type":"math"},"queryType":"","refId":"A","relativeTimeRange":{"from":0,"to":0}}]` |
| execErrState | string | string | ✓ | | | |
| `folderUID` | string | string | ✓ | | | `project_x` |
| `for` | [Duration](#duration) | [Duration](#duration) | ✓ | | | |
| `keepFiringFor` | [Duration](#duration) | [Duration](#duration) | | | How long the alert continues to fire after the condition is no longer met. Prevents alert flapping. | `2m` |
| `id` | int64 (formatted integer) | int64 | | | | |
| `isPaused` | boolean | `bool` | | | | `false` |
| `labels` | map of string | `map[string]string` | | | | `{"team":"sre-team-1"}` |
| `noDataState` | string | string | ✓ | | | |
| `orgID` | int64 (formatted integer) | `int64 | ✓ | | | |
| `provenance` | [Provenance](#provenance) | [Provenance](#provenance) | | | | |
| `ruleGroup` | string | string | ✓ | | | `eval_group_1` |
| `title` | string | string | | | | `Always firing` |
| `uid` | string | string | | | | |
| `updated` | date-time (formatted string) | `strfmt.DateTime` | | | | |
{{% /responsive-table %}}