Compare commits

...

181 Commits

Author SHA1 Message Date
grafana-delivery-bot[bot]
9731d7c0f7 [v11.1.x] Bugfix: QueryField typeahead missing background color (#92316)
Bugfix: QueryField typeahead missing background color (#92216)

Added missing styles to the typeahead menu.

(cherry picked from commit 95409f53d2)

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2024-08-22 18:34:41 +03:00
grafana-delivery-bot[bot]
09ed2369ce [v11.1.x] Fix tests failing due to harcoded date (#92311)
Fix tests failing due to harcoded date (#92293)

fix tests failing due to harcoded date

(cherry picked from commit 9c73916f09)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2024-08-22 18:15:40 +03:00
grafana-delivery-bot[bot]
33eaec336e [v11.1.x] Docs: remove aliases from incorrect files (#92302)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-08-22 10:42:09 -04:00
grafana-delivery-bot[bot]
312b99f68e [v11.1.x] Added admonition about time zones (#92294)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Irene Rodriguez <irene.rodriguez@grafana.com>
2024-08-22 14:12:28 +00:00
grafana-delivery-bot[bot]
da500a56b3 [v11.1.x] RBAC: Fix an issue with server admins not being able to manage users in orgs that they don't belong to (#92273)
* RBAC: Fix an issue with server admins not being able to manage users in orgs that they don't belong to (#92024)

* look at global perms if user is not a part of the target org

* use constant

* update tests

(cherry picked from commit 41ac5b5ae7)

* fix tests

---------

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2024-08-22 11:24:08 +01:00
grafana-delivery-bot[bot]
783216e4b9 [v11.1.x] Docs: Update adhoc filter documentation (#92227)
Docs: Update adhoc filter documentation (#92197)

update adhoc filter documentation

(cherry picked from commit 9f8e68e9a1)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-08-21 18:53:59 +03:00
Michael Mandrus
cc2941b1b8 Chore: Bump grafana-azure-sdk-go dependency in v11.1.x (#92174)
update dependency
2024-08-21 10:10:33 -04:00
grafana-delivery-bot[bot]
1c6687ac61 [v11.1.x] Alerting docs: adds sns integration (#92141)
Alerting docs: adds sns integration (#92075)

* Alerting docs: adds sns integration

* deletes 2000 alert rule limit

* added .md ext and set weight field to 0

---------

Co-authored-by: tonypowa <tonypowa@gmail.com>
(cherry picked from commit 0631322d36)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-08-21 09:42:00 +02:00
grafana-delivery-bot[bot]
53d92abf74 [v11.1.x] VizTooltip: Fix positioning at bottom and right edges on mobile (#92137)
VizTooltip: Fix positioning at bottom and right edges on mobile (#92042)

(cherry picked from commit 74ebc66520)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2024-08-20 17:07:58 +03:00
grafana-delivery-bot[bot]
bacab3498c [v11.1.x] DashboardModel - Add fallback for variable current value fallback (#92123)
DashboardModel - Add fallback for variable current value fallback (#91833)

* add variable current value fallback when null

* refactor to avoid loosing reference

(cherry picked from commit 7c8184d5bf)

Co-authored-by: Sergej-Vlasov <37613182+Sergej-Vlasov@users.noreply.github.com>
2024-08-20 12:48:42 +03:00
Jo
90646fa1e6 Chore: Upgrade retryablehttp (#92120)
chore: upgrade retryablehttp
2024-08-20 11:35:22 +02:00
grafana-delivery-bot[bot]
ca5554e88d [v11.1.x] Alerting docs: include Grafana Alerting API as one option to manage… (#92100)
Alerting docs: include `Grafana Alerting API` as one option to manage… (#91593)

Alerting docs: include `Grafana Alerting API` as one option to manage Data sources-mangaged resources

(cherry picked from commit a0e1028ae6)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-08-20 00:36:30 +02:00
Larissa Wandzura
d6dd16fdf9 [v11.1.x] Docs: Create new landing page and Get started doc for Explore (#92086)
Docs: Create new landing page and Get started doc for Explore (#91602)

* started updates

* added descriptions

* changed some wording

* minor updates

* updates

* updates

* created new landing page, and the get started page

* finished creating landing page

* continued with restructure

* final edits

* updated the Explore landing page

* ran prettier

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Update docs/sources/explore/get-started-with-explore.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* updates based on Jack's feedback

* ran prettier a second time

* wording change on landing page

* removed uncommented section

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit 7ff8b1e0e2)
2024-08-19 11:26:52 -05:00
grafana-delivery-bot[bot]
fc43fecb81 [v11.1.x] Docs: Update configure-prometheus-data-source.md (#92084)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: qiyang <dominic.qiyang@gmail.com>
2024-08-19 10:51:58 -04:00
grafana-delivery-bot[bot]
b549030921 [v11.1.x] Capitalized list items under "With Explore Metrics, you can:" (#92016)
Capitalized list items under "With Explore Metrics, you can:" (#91879)

capitalised list items under "With Explore Metrics, you can:"

(cherry picked from commit 62abaea8f5)

Co-authored-by: Irene Rodriguez <irene.rodriguez@grafana.com>
2024-08-19 09:32:45 -05:00
grafana-delivery-bot[bot]
e998da3163 [v11.1.x] Docs: Revise Configure Prometheus documentation to align with Grafana v11.1 (#92073)
Co-authored-by: Seungyong Lee <kokodakadokok@gmail.com>
2024-08-19 13:47:48 +01:00
grafana-delivery-bot[bot]
374e83718e [v11.1.x] Add grafana_state_reason section in State of alerts (#91915)
Add `grafana_state_reason` section in State of alerts (#91562)

* Add `grafana_state_reason` section in State of alerts

* Minor edit for clarification

* Mention `Paused/RuleDeleted/Updated` states

(cherry picked from commit 98a74d844e)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-08-15 23:26:46 +02:00
grafana-delivery-bot[bot]
b6d5da870d [v11.1.x] Docs: add Zoom to Reporting docs (#91964)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2024-08-15 11:34:15 -04:00
grafana-delivery-bot[bot]
90cd1d9ca2 [v11.1.x] Table: Fix edge case where text wrapping crashes on undefined header widths (#91926)
Table: Fix edge case where text wrapping crashes on undefined header widths (#91850)

Make sure we don't read from header groups if it's undefined

(cherry picked from commit 40144eb3c8)

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2024-08-15 21:40:29 +07:00
github-actions[bot]
0eef9d22d2 Release: 11.1.4 (#91931)
* Update changelog

* Update version to 11.1.4

* fix changelog

* fix lerna.json

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
2024-08-14 17:12:18 -03:00
grafana-delivery-bot[bot]
34d6127e3d [v11.1.x] docs: add play link to explore metrics to demonstrate (#91861)
docs: add play link to explore metrics to demonstrate (#91744)

(cherry picked from commit e90b272299)

Co-authored-by: David Allen <david.allen@grafana.com>
2024-08-13 16:39:42 -05:00
grafana-delivery-bot[bot]
07005383db [v11.1.x] Docs: add playlist management permissions (#91805)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-08-12 11:34:40 -04:00
grafana-delivery-bot[bot]
d5a6f8eed0 [v11.1.x] OpenTSDB: Fix data frame construction (#91757)
OpenTSDB: Fix data frame construction (#90991)

* Update type and frame construction

* Update tests

* Keep dataField name as value

(cherry picked from commit 06509712ec)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2024-08-09 20:18:11 +03:00
grafana-delivery-bot[bot]
0d08409945 [v11.1.x] AzureMonitor: Add authproxy as supported user auth method (#91758)
AzureMonitor: Add authproxy as supported user auth method (#91754)

Add authproxy as supported user auth method

(cherry picked from commit d52626be3f)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2024-08-09 17:43:04 +01:00
grafana-delivery-bot[bot]
ee41006ac2 [v11.1.x] docs: added missing panel options to node graph docs (#91628)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-08-07 09:56:56 -04:00
grafana-delivery-bot[bot]
4d59d59425 [v11.1.x] TimeSeries: Use original frames for creating data links (#91601)
TimeSeries: Use original frames for creating data links (#91598)

(cherry picked from commit 1b6362a807)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2024-08-06 22:36:46 +03:00
Adela Almasan
567fbab84a [v11.1.x] Tooltip: Fix scrollbars (#91547) 2024-08-05 13:54:36 -05:00
grafana-delivery-bot[bot]
7045ce16dd [v11.1.x] Alerting docs: Update Alerting provisioning HTTP API (#91537)
Alerting docs: Update `Alerting provisioning  HTTP API` (#91493)

* Remove `Consumes` info

* Remove `top-level` content negotiation/Produces

* Remove `Version Information`

* Better distinguish between Grafana and Data source managed alerts

* Add note for Enterprise RBAC permissions

* Minor changes for clarity

* Add examples

* Minor copy change

* Update docs/sources/shared/alerts/alerting_provisioning.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/shared/alerts/alerting_provisioning.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/shared/alerts/alerting_provisioning.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 114d87bf61)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-08-05 17:00:20 +02:00
grafana-delivery-bot[bot]
49b6f2847d [v11.1.x] [DOC] Add canonical URL to Explore Metrics (#91521)
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2024-08-05 08:39:14 +01:00
Alexa V
a07b6c7c95 [v11.1.x] Dashboard Scene: Make Variables non-sticky on mobile (#91388)
Dashboard Scene: Make Variables non-sticky on mobile (#90755)

* Make variables not sticky on mobile

* Removes scrollable body

* Remove unused CSS

* Remove unnecessary cx

---------

Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
(cherry picked from commit 474ea9615d)
2024-08-02 13:29:59 +02:00
grafana-delivery-bot[bot]
f19611aa9f [v11.1.x] Docs: Update subtitle in Loki datasource documentation to fix link issue (#91463)
Co-authored-by: minuchi <112928337+minuchi@users.noreply.github.com>
fix link issue (#91454)
2024-08-02 08:59:45 +01:00
grafana-delivery-bot[bot]
a3e7b4bbba [v11.1.x] Docs: time series overall edit (#91427)
Co-authored-by: Nathan Marrs  <nathanielmarrs@gmail.com>
Co-authored-by: Nathan Marrs <nathanielmarrs@gmail.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-08-01 17:12:23 -04:00
grafana-delivery-bot[bot]
59c9ddba40 [v11.1.x] Docs: Updates to Traces in Explore doc (#91420)
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
2024-08-01 14:19:17 -05:00
grafana-delivery-bot[bot]
6941bd5fc8 [v11.1.x] Alerting: Fix permissions for prometheus rule endpoints (#91414)
Alerting: Fix permissions for prometheus rule endpoints (#91409)

(cherry picked from commit e231211234)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-08-01 14:30:45 -04:00
grafana-delivery-bot[bot]
ae03217b9c [v11.1.x] Update traces to metrics doc (#91371)
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2024-08-01 09:01:50 +01:00
grafana-delivery-bot[bot]
68665e4ce9 [v11.1.x] Fix broken link (#91355)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Fix broken link (#90216)
2024-08-01 08:39:26 +01:00
Yuri Tseretyan
738cc49ec5 [v11.1.x] Alerting: Fix persisting result fingerprint that is used by recovery threshold (#91290)
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:37 -04:00
Ryan McKinley
bb5d2c83ef Snapshots: Fix panic when snapshot_remove_expired is true (#91232) 2024-07-31 16:21:58 +03:00
Andreas Christou
b7d434faaf [v11.1.x] CI: Fix drone docker publish (#91207)
CI: Fix drone docker publish (#91204)

* $debug -> $$debug

* use bash instead of sh

* Update publish_images.star

* Install bash in the docker/docker image

* buildifier

(cherry picked from commit bee678da94)

# Conflicts:
#	.drone.yml

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-30 18:03:45 +03:00
Gilles De Mey
f4e7402e3f [v11.1.x] Alerting: Add validation for path separators in the rule group edit modal (#91180) 2024-07-30 12:05:17 +02:00
grafana-delivery-bot[bot]
4c70fd6a3e [v11.1.x] Scenes/Dashboards: Fix issue where changes in panel height weren't saved (#91178)
Scenes/Dashboards: Fix issue where changes in panel height weren't saved (#91125)

* Scenes/Dashboards: Fix issue where changes in panel height weren't saved

(cherry picked from commit b80e16075f)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-07-30 12:52:09 +03:00
grafana-delivery-bot[bot]
78d19bfa11 [v11.1.x] docs: Added sub header, description for video link (#91159)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-29 17:54:26 -04:00
grafana-delivery-bot[bot]
4aa2bb630e [v11.1.x] Docs: Add release stage note to text wrapping (#89719)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-07-29 11:13:27 -04:00
grafana-delivery-bot[bot]
8c9d4696e1 [v11.1.x] Docs: adds alerting redis link to grafana config docs (#91138)
Docs: adds alerting redis link to grafana config docs (#91112)

* Docs: adds alerting redis link to grafana config docs

* Update docs/sources/setup-grafana/configure-grafana/_index.md

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

---------

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit 218cf45ec0)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-07-29 16:57:16 +02:00
Kevin Minehart
39df6fb2fa [v11.1.x] CI: set dry-run if release/dry-run label is set on release-comms.yml and set latest on github release if latest is set (#91131)
CI: set dry-run if `release/dry-run` label is set on `release-comms.yml` and set latest on github release if `latest` is set (#91089)

set dry-run and set latest on github release

(cherry picked from commit 4e84234424)
2024-07-29 16:54:58 +03:00
Kevin Minehart
3d38f30ff4 [v11.1.x] CI: Fix release-pr call in releases (#91096)
* CI: Fix release-pr call in releases (#91088)

* Fix release-pr call in releases

* Remove backport arg

* set TARGET to v_target

(cherry picked from commit 2ffdc2d5b0)

* Release Pipeline: [RPM pkg verification] Fix linefeeds converted to literal backslash-n sequences (#90989)

fix lf converted to literal backslash-n sequence

(cherry picked from commit 9852513c65)

---------

Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
2024-07-27 04:03:09 +03:00
github-actions[bot]
fe032f10c7 Release: 11.1.3 (#91059)
* Update changelog

* Update version to 11.1.3

* Update CHANGELOG.md

* yarn prettier:write

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-07-26 10:41:44 -05:00
grafana-delivery-bot[bot]
61d9102d98 [v11.1.x] Alerting: Update documentation for MS Teams integration (#91064)
Alerting: Update documentation for MS Teams integration (#90610)

---------

Co-authored-by: Alyssa Wada <101596687+alyssawada@users.noreply.github.com>
(cherry picked from commit 534549e491)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-07-26 17:06:34 +02:00
grafana-delivery-bot[bot]
99bd39539b [v11.1.x] Loki: Fix ad hoc filters adding stream selectors to stream selectors and line filters (#91049)
Loki: Fix ad hoc filters adding stream selectors to stream selectors and line filters (#90626)

* fix: fix case where we are adding stream selectors to both stream selectors and line filters

---------

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
(cherry picked from commit 6fa25df37f)

Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2024-07-26 15:57:21 +03:00
github-actions[bot]
a1751ab900 Release: 11.1.2 (#91028)
* Update changelog

* Update version to 11.1.2

* lint

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2024-07-26 05:31:31 +03:00
grafana-delivery-bot[bot]
2c084e6113 [v11.1.x] CI: use main instead of my branch in release-pr.yml (#91007)
CI: use main instead of my branch in release-pr.yml (#91004)

use main instead of my branch

(cherry picked from commit 7e4b7f73e7)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-26 00:54:25 +03:00
grafana-delivery-bot[bot]
93d25da8c1 [v11.1.x] CI: fix release pr target (#91002)
CI: fix release pr target (#90999)

* use inputs.target as checkout ref, and `main` for all reused actions.

(cherry picked from commit 2fe506d502)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-26 00:33:52 +03:00
github-actions[bot]
78680389b3 Release: 11.1.1 (#90998)
* Update changelog

* Update version to 11.1.1

* Update CHANGELOG.md

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-26 00:31:34 +03:00
grafana-delivery-bot[bot]
a8ed6c49e3 [v11.1.x] Update version of docker-compose.yaml (#90985)
Update version of docker-compose.yaml (#90539)

* Update version of docker-compose.yaml

* Update index.md

(cherry picked from commit 3c405e8b1f)

Co-authored-by: lnnt <770954908@qq.com>
2024-07-25 12:40:57 -05:00
grafana-delivery-bot[bot]
9f22e97ab6 [v11.1.x] CI: fix changelog push error (#90978)
CI: fix changelog push error (#90971)

* add --set-upstream origin to release-pr workflow git push

* use a different branch name for the changelog workflow

* disable backport support for now

* remove backport condition

(cherry picked from commit 089a5710b6)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-25 12:28:47 -05:00
grafana-delivery-bot[bot]
8a8679fc4e [v11.1.x] CI: fix changelog repo null (#90966)
CI: fix changelog repo null (#90960)

* give secrets when running changelog action

* i guess secrets don't have types

(cherry picked from commit d4304b59ec)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-25 18:55:44 +03:00
grafana-delivery-bot[bot]
8a219d5d18 [v11.1.x] CI: changelog boolean type (#90956)
CI: changelog boolean type (#90948)

* bool -> boolean

* add missing type keys

* provide secrets in release-pr

* use permissions and built-in github token

(cherry picked from commit 14396048d7)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-25 18:10:17 +03:00
Kevin Minehart
c17f395374 RBAC: Allow plugins to use scoped actions (#90945)
Co-authored-by: gamab <gabriel.mabille@grafana.com>
2024-07-25 17:22:31 +03:00
grafana-delivery-bot[bot]
8007be0b57 [v11.1.x] Docs: Updated the Logs in Explore doc (#90914)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
2024-07-24 21:13:57 +03:00
grafana-delivery-bot[bot]
ec81c967b6 [v11.1.x] docs: Updates to GeoMap panel doc (#90911)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-24 13:31:29 -04:00
grafana-delivery-bot[bot]
beac3bdbcb [v11.1.x] Alerting docs: updates icon on landing page (#90884)
Alerting docs: updates icon on landing page (#90881)

* Alerting docs: updates icon on landing page

* adds svg

(cherry picked from commit 745eb60775)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-07-24 13:16:59 +03:00
grafana-delivery-bot[bot]
00614f2813 [v11.1.x] Docs: Updates to the Query management in Explore page (#90843)
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
2024-07-23 17:59:15 +03:00
Dominik Prokop
16bca1736d [v11.1.x] TemplateSrv: Backportable version of 90808 (#90837)
TemplateSrv: Backportable version of 90808  (#90833)

TemplateSrv: Backportable version of 90808 (#90816)

* TemplateSrv: Add test case for SafeSerializableSceneObject

* Update dashboard data source to use scoped vars scene object valueOf

* 11.1.x Backportable version of 90808

* lint

(cherry picked from commit 2e5b41cbcb)
2024-07-23 16:30:25 +02:00
grafana-delivery-bot[bot]
907916dc39 [v11.1.x] Scenes: Save height as itemHeight for repeat panels (#90606)
Scenes: Save height as itemHeight for repeat panels (#90487)

(cherry picked from commit 5afb1c6ce0)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-07-23 14:15:44 +02:00
Andreas Christou
417edf5c43 [v11.1.x] Prometheus: Reintroduce Azure audience override feature flag (#90560)
Prometheus: Reintroduce Azure audience override feature flag (#90339)

* Re-add feature flag with deprecation note

* Hide the field in frontend if ff disabled

* Block scope overriding if ff is disabled in backend

- Update promlib to forward logger to extendOptions
- Add warning
- Update tests

* Default toggle to true for now

* Update description

* Update prom tests

* Fix lint

(cherry picked from commit 2616366a0a)

# Conflicts:
#	packages/grafana-data/src/types/featureToggles.gen.ts
#	pkg/services/featuremgmt/registry.go
#	pkg/services/featuremgmt/toggles_gen.csv
#	pkg/services/featuremgmt/toggles_gen.go
#	pkg/services/featuremgmt/toggles_gen.json
#	pkg/tsdb/prometheus/prometheus.go
2024-07-23 11:31:31 +01:00
grafana-delivery-bot[bot]
a034ed6f1b [v11.1.x] [DOC] Update span filters doc for Tempo data source (#90773)
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2024-07-22 13:29:20 -05:00
grafana-delivery-bot[bot]
bf264b2df3 [v11.1.x] Docs: Remove duplicate row (chore) (#90767)
Co-authored-by: Nikolaos Pothitos <pothitos@di.uoa.gr>
2024-07-22 13:08:56 -04:00
grafana-delivery-bot[bot]
bd59be01e8 [v11.1.x] CI: post changelog to forum in release-comms (#90751)
CI: post changelog to forum in release-comms (#90742)

* post changelog to forum in post-release workflow

(cherry picked from commit 9a3672c2bb)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-22 18:23:25 +03:00
Piotr Jamróz
8ecf1dff7e Chore: Update What's new URL (#90736)
Update what's new URL
2024-07-22 09:24:47 -05:00
Ashley Harrison
12a3a261a2 [v11.1.x] Select: Fix scrolling virtualized menu on mobile (#90740)
Select: Fix scrolling virtualized menu on mobile (#90724)

pass select-menu innerRef to virtualized list

(cherry picked from commit dc30858e9d)
2024-07-22 15:59:46 +02:00
grafana-delivery-bot[bot]
b4f4b3e9b4 [v11.1.x] CI: For every release PR created, also push a changelog PR to main (#90704)
CI: For every release PR created, also push a changelog PR to main (#90698)

For every release PR created, also push a changelog PR to main

(cherry picked from commit 9232db2416)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-20 01:14:38 +03:00
Serge Zaitsev
c2e78f5cd6 [v11.1.x] Chore: update changelog workflow (#90685)
Chore: update changelog workflow (#90608)

* try integrating

* pass tags

* change section order

* use better terminology

* one more attempt

* keep delimiters

* attempt to patch changelog

* quotes, bash quotes...

* use proper content file

* parens around date

* time for a pr

* first checkout, then create user

* add latest input

* git push

* use square brackets

* formatting

* update release-pr

* fix typo

* try sparse checkout

* fetch depth zero

* clean up after changelog generator

(cherry picked from commit f8b092aba6)
2024-07-19 21:36:25 +02:00
grafana-delivery-bot[bot]
f5cebcca1b [v11.1.x] Docs: Replaces Agent with Alloy (#90691)
Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-07-19 15:07:59 -04:00
grafana-delivery-bot[bot]
009a75f796 [v11.1.x] Docs: added heading identifiers (#90665)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-07-19 09:52:11 -04:00
Isabel Matwawana
7e742cdaa2 [v11.1.x] Docs: Refactor time series page - part 1 (#90624)
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
2024-07-18 14:25:00 -04:00
Kevin Minehart
17fce96f7f [v11.1.x] CI: replace publish image step with a much simpler one that supports LATEST (#90622)
CI: replace publish image step with a much simpler one that supports LATEST (#90498)

* replace publish image step with a much simpler one that supports LATEST

(cherry picked from commit 6a2a6b0fbc)
2024-07-18 12:19:03 -06:00
grafana-delivery-bot[bot]
220f0a5b42 [v11.1.x] docs: added video to gauge panel doc (#90603)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-18 08:57:14 -04:00
grafana-delivery-bot[bot]
61662f3574 [v11.1.x] Docs: replace broken link (#90599)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-07-18 08:21:51 -04:00
Ivan Ortega Alba
2c8c2199a1 [v11.1.x] Revert \"Frontend: Use safe stringifier in parseBody\" (#90532)
Revert "Frontend: Use safe stringifier in parseBody" (#90522)

Revert "Frontend: Use safe stringifier in parseBody (#90047)"

This reverts commit 434f386982.

(cherry picked from commit 3559c5c297)
2024-07-18 12:30:15 +02:00
grafana-delivery-bot[bot]
6a9fc2ac93 [v11.1.x] Docs: make heading fix in content.ts file (#90511)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
fix in content.ts file (#90473)
2024-07-17 13:16:50 -04:00
grafana-delivery-bot[bot]
af6b53420b [v11.1.x] alerting:docs>google chat (#90516)
alerting:docs>google chat (#90257)

* alerting:docs>google chat

* pretty

* weight

* changed weight

* typo

(cherry picked from commit 2186676f55)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-07-17 09:01:20 +02:00
grafana-delivery-bot[bot]
ed0cd7ee06 [v11.1.x] highlighting the part of the Grafana enterprise section so easir for … (#90503)
highlighting the part of the Grafana enterprise section so easir for … (#90177)

highlighting the part of the Grafana enterprise section so easir for users to find it

(cherry picked from commit 677d2a8b70)

Co-authored-by: Usman Ahmad <usman.ahmad@grafana.com>
2024-07-16 20:28:38 +02:00
grafana-delivery-bot[bot]
104daa45db [v11.1.x] Scrollbar: fix scrollTo being called on stale reference (#90491)
Scrollbar: fix scrollTo being called on stale reference (#90346)

* fix: fix scrollTo being called on stale reference

(cherry picked from commit bb52c340cc)

Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2024-07-16 19:52:29 +03:00
grafana-delivery-bot[bot]
7e9f8a8779 [v11.1.x] Revert "Scenes: Fixes issue with panel repeat height calculation (#90221)" (#90486)
Revert "Scenes: Fixes issue with panel repeat height calculation (#90221)" (#90478)

This reverts commit 5cab595f45.

(cherry picked from commit e7f9d592f0)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-07-16 18:38:34 +03:00
grafana-delivery-bot[bot]
1d30eb36d9 [v11.1.x] Docs: Update group to nested tables transformation header to match naming in UI (#90475)
Co-authored-by: Nathan Marrs <nathanielmarrs@gmail.com>
2024-07-16 10:04:31 -04:00
grafana-delivery-bot[bot]
27cd35a97b [v11.1.x] docs: updated table panel visualization (#90474)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-16 10:00:59 -04:00
Isabel Matwawana
41bd47700a [v11.1.x] Docs: Update dashboard URL variables docs (#90445)
Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-07-15 11:50:31 -04:00
grafana-delivery-bot[bot]
6f27663318 [v11.1.x] SoloPanel: Avoid fatal error when panelId correspond to a row (#90422)
SoloPanel: Avoid fatal error when panelId correspond to a row (#90271)

(cherry picked from commit 51fab9adf4)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-07-15 15:04:53 +02:00
Jev Forsberg
be8ff40d58 [v11.1.x] Automation: Verify DEB and RPM packages (#90402)
Automation: Verify DEB and RPM packages (#90146)

* baldm0mma/verify_aptyum/ add verify_linux_packages_step

* baldm0mma/verify_aptyum/ add name and image

* baldm0mma/verify_aptyum/ add commands

* baldm0mma/verify_aptyum/ add test pipeline

* baldm0mma/verify_aptyum/ update deps for verify_linux_packages_step

* baldm0mma/verify_aptyum/ update ubuntu image

* baldm0mma/verify_aptyum/ add rockylinux9 image

* baldm0mma/verify_aptyum/ update to verify_linux_DEB_packages_step naming

* baldm0mma/verify_aptyum/ add verify_linux_RPM_packages_step

* baldm0mma/verify_aptyum/ update commands for RPM check

* baldm0mma/verify_aptyum/ update test pipeline

* baldm0mma/verify_aptyum/ update annos

* baldm0mma/verify_aptyum/ update annos

* baldm0mma/verify_aptyum/ update args

* baldm0mma/verify_aptyum/ add arg to verify_linux_RPM_packages_step

* baldm0mma/verify_aptyum/ update oss_steps

* baldm0mma/verify_aptyum/ update deps args

* baldm0mma/verify_aptyum/ update sec hash

* baldm0mma/verify_aptyum/ make format-drone

* baldm0mma/verify_aptyum/ update sec hash

* baldm0mma/verify_aptyum/ update drone

* baldm0mma/verify_aptyum/ update function styles

* baldm0mma/verify_aptyum/ revert changes

* baldm0mma/verify_aptyum/ make drone

* baldm0mma/verify_aptyum/ redirect install logs

* baldm0mma/verify_aptyum/ restructure args

* baldm0mma/verify_aptyum/ update verify_linux_DEB_packages_step

* baldm0mma/verify_aptyum/ make format drone

* baldm0mma/verify_aptyum/ update verify_linux_RPM_packages_step

* baldm0mma/verify_aptyum/ add retry_command

* baldm0mma/verify_aptyum/ make drone

* baldm0mma/verify_aptyum/ update attempts to 10 minutes

* baldm0mma/verify_aptyum/ handle is_preview

* baldm0mma/verify_aptyum/ add doc strings to satisfy starlark linter

* baldm0mma/verify_aptyum/ revert is_preview

* baldm0mma/verify_aptyum/ update to rpm repo download

* baldm0mma/verify_aptyum/ add back logging for rpm

* baldm0mma/verify_aptyum/ revert to working

* baldm0mma/verify_aptyum/ update to use RPM repo

* baldm0mma/verify_aptyum/ remove redirect for logging

* baldm0mma/verify_aptyum/ rem gpg check

* baldm0mma/verify_aptyum/ fromat drone

* baldm0mma/verify_aptyum/ rem comment

* baldm0mma/verify_aptyum/ add single comment on timing

(cherry picked from commit d781ec2daa)
2024-07-12 15:54:55 -06:00
grafana-delivery-bot[bot]
e0dbd8f3f2 [v11.1.x] CloudWatch: Fix raw queries with dimensions set (#90387)
CloudWatch: Fix raw queries with dimensions set (#90348)

(cherry picked from commit 9a8be1785a)

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2024-07-12 17:33:49 -04:00
grafana-delivery-bot[bot]
af1aaab3a6 [v11.1.x] docs: updated logs panel visualization (#90399)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-12 17:08:35 -04:00
grafana-delivery-bot[bot]
b1a552bd07 [v11.1.x] docs: updated time series panel visualization (#90394)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-07-12 16:46:40 -04:00
Yuri Tseretyan
26822fae62 Alerting: Update grafana/alerting to 20240712181403-02e012d6dd7f (#90386)
update alerting to 02e012d6dd7fc889194cac5e7d3cf2c1db6b0b54
2024-07-12 15:24:39 -04:00
grafana-delivery-bot[bot]
abd9e86fe6 [v11.1.x] Table: Fix state bug with initialRowIndex (#90370)
Table: Fix state bug with initialRowIndex (#90308)

* fix: fix state bug

---------

Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
(cherry picked from commit 8400b54a53)

Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2024-07-12 17:33:51 +03:00
grafana-delivery-bot[bot]
eab471a17c [v11.1.x] RBAC: List only the folders that the user has access to (#89016)
RBAC: List only the folders that the user has access to (#88599)

only check folder permissions when listing folders

(cherry picked from commit 095ca66d9f)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2024-07-12 14:54:31 +03:00
Ieva
c5ea48aec9 [v11.1.x] Admin: Fixes an issue where user accounts could not be enabled (#90361)
Fix: unable to enable user
Co-authored-by: gonvee <gonvee@users.noreply.github.com>
2024-07-12 12:12:21 +02:00
grafana-delivery-bot[bot]
5c39ab885d [v11.1.x] CI: fix release pr condition (#90305)
CI: fix release pr condition (#90299)

* Release comms should only run when the source PR is

* Fix release-comms workflow condition

(cherry picked from commit a28db90dd5)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-10 15:49:37 -05:00
grafana-delivery-bot[bot]
2efd32d5e4 [v11.1.x] Docs: Updated the Query inspector page (#90297)
Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
2024-07-10 23:11:30 +03:00
grafana-delivery-bot[bot]
1af63c69f8 [v11.1.x] CI: remove missing dependency from workflow action (#90293)
CI: remove missing dependency from workflow action (#90285)

remove missing dep from workflow action

(cherry picked from commit f411d85749)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-10 14:24:26 -05:00
grafana-delivery-bot[bot]
3124df86a9 [v11.1.x] Azure: Fix default subscription setting (#90263)
* Azure: Fix default subscription setting (#90185)

* Ensure default subscription is set

* Include some info for when the default subscription is required

* Rename settings mock

- Add mockDatasourceSettings function

* Add MonitorConfig test

* Revert "Rename settings mock"

- Avoid issues when backporting

* Remove description

* Remove required field

* Remove unused import

(cherry picked from commit bba26f8e13)

* Add react

---------

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2024-07-10 12:24:18 +01:00
kay delaney
e5bbc6f17a [v11.1.x] Frontend: Use safe stringifier in parseBody (#90234)
Frontend: Use safe stringifier in parseBody (#90047)

* Frontend: Use safe stringifier in parseBody

Closes #88064

(cherry picked from commit 434f386982)
2024-07-10 10:42:33 +01:00
grafana-delivery-bot[bot]
64b649e407 [v11.1.x] Docs: Fix link to send report API (#90248)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Davidson Francis <davidsondfgl@gmail.com>
Fix link to send report API (#90242)
2024-07-09 17:23:14 -04:00
grafana-delivery-bot[bot]
b8c48273db [v11.1.x] InfluxDB: Fix returning InfluxDB error messages (#90087)
InfluxDB: Fix returning InfluxDB error messages (#89973)

* Revert "Chore: Return influxdb query error early before parsing the result (#88549)"

This reverts commit a87c155c06.

* Handle error in buffered parser

* handle error message in streaming parser

(cherry picked from commit 4fcd348366)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2024-07-09 19:50:04 +02:00
grafana-delivery-bot[bot]
06a25efb55 [v11.1.x] [DOC] Fix broken links in profiles and traces content (#90241)
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
Fix broken links in profiles and traces content (#90237)
2024-07-09 18:21:58 +01:00
grafana-delivery-bot[bot]
d4241ea163 [v11.1.x] Scenes: Fixes issue with panel repeat height calculation (#90232)
Scenes: Fixes issue with panel repeat height calculation (#90221)

* Scenes: Fixes issue with panel repeat height calculation

(cherry picked from commit 5cab595f45)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-07-09 18:19:40 +03:00
grafana-delivery-bot[bot]
0d3206db83 [v11.1.x] CI: Sync branch and tag after release (#90206)
CI: Sync branch and tag after release (#89967)

* Added `workflow_call` event to allow other workflows to invoke the "Create or update GitHub release"
* Added `dry_run` to `github-release.yml`
* Added `latest` to `release-pr.yml` which will cause the release PR to add a `release/latest` label.
* Removed unnecessary github app creation from github-release workflow and just used permissions.

(cherry picked from commit 63e715f6a9)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-07-08 14:53:05 -05:00
grafana-delivery-bot[bot]
6920f9118c [v11.1.x] Fix panel paste button in nav toolbar (#90147)
* Fix panel paste button in nav toolbar (#90143)

fix panel paste button in nav toolbar

(cherry picked from commit f88bf474bd)

* modify store import

---------

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
Co-authored-by: Victor Marin <victor.marin@grafana.com>
2024-07-08 14:26:29 +03:00
grafana-delivery-bot[bot]
cbf4bd59fa [v11.1.x] alerting/integrations:opsgenie (#90158)
alerting/integrations:opsgenie (#90133)

* alerting/integrations:opsgenie

* Update _index.md

* new line

* all pretty no pity

* numbering

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-opsgenie.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-opsgenie.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update configure-opsgenie.md

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit e061f2886f)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-07-07 13:30:09 +02:00
grafana-delivery-bot[bot]
c20fd6e7f5 [v11.1.x] [DOC] Update the Pyroscope data source config doc (#90150)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2024-07-05 15:00:47 -04:00
grafana-delivery-bot[bot]
37b9d659a7 [v11.1.x] Alerting: Support utf8_strict_mode: false in Mimir (#90148)
Alerting: Support `utf8_strict_mode: false` in Mimir (#90092)

(cherry picked from commit 650616a404)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-07-05 18:33:39 +03:00
grafana-delivery-bot[bot]
6452e9665e [v11.1.x] Loki datasource: interpolate query before adding adhoc filters (#90114)
Loki datasource: interpolate query before adding adhoc filters (#89849)

* Loki datasource: interpolate query before adding adhoc filters

* Chore: remove unused export

* Prettier

* Chore: made test case more obvious

(cherry picked from commit cc7aae154c)

Co-authored-by: Matias Chomicki <matyax@gmail.com>
2024-07-05 12:15:25 +03:00
grafana-delivery-bot[bot]
2d0723ffc8 [v11.1.x] alerting/integrations:telegram-update (#90109)
alerting/integrations:telegram-update (#90105)

* alerting/integrations:telegram-update

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-telegram.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-telegram.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 8bc8b4b31f)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-07-05 10:33:19 +02:00
grafana-delivery-bot[bot]
a56e351bc8 [v11.1.x] alerting/docs:discord (#90086)
* alerting/docs:discord (#90068)

* alerting/docs:discord

* 'pretty'

(cherry picked from commit d563db63e7)

* Update configure-discord.md

---------

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-07-04 22:36:27 +02:00
grafana-delivery-bot[bot]
cae1635c8f [v11.1.x] Docs: Fix typo in text (#90090)
Co-authored-by: ANURAG RANJAN <61619621+1md3nd@users.noreply.github.com>
Fix typo in text (#89325)
2024-07-04 12:26:19 -04:00
grafana-delivery-bot[bot]
b1751659c7 [v11.1.x] Alerting: Skip fetching alerts for unsaved dashboards (#90074)
* Alerting: Skip fetching alerts for unsaved dashboards (#90061)

skip fetching alerts for dashboards with null uid

(cherry picked from commit dd4e254900)

---------

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-07-04 17:36:12 +02:00
grafana-delivery-bot[bot]
2835a1c9c7 [v11.1.x] Update make docs procedure (#90073)
Co-authored-by: grafanabot <bot@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-04 16:27:38 +01:00
grafana-delivery-bot[bot]
460dfdd63d [v11.1.x] Tempo: Fix grpc streaming support over pdc-agent (#90055)
Tempo: Fix grpc streaming support over pdc-agent (#89883)

* Tempo: Fix grpc streaming support over pdc-agent

* Fix a spelling error and formatting

* Ignore lint issue for reasons listed in source code comment

---------

Co-authored-by: Joey Tawadrous <joey.tawadrous@grafana.com>
(cherry picked from commit d5b21f77aa)

Co-authored-by: Taylor Dean <taylor@makeshift.dev>
2024-07-04 15:48:00 +01:00
grafana-delivery-bot[bot]
69139f20a5 [v11.1.x] Scenes: Fix issue where "get help" drawer was empty in panel edit mode (#90041)
Scenes: Fix issue where "get help" drawer was empty in panel edit mode (#89431)

(cherry picked from commit 4671b7d5ae)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-07-04 11:26:28 +01:00
antonio
8c8a2d77bf alerting:oncall-11.1.x (#89985)
added title
2024-07-03 14:57:51 +02:00
antonio
e60254c952 alerting:docs>oncall (#89780) (#89980)
* alerting:docs>oncall (#89780)

* alerting:docs>oncall

* removed refs

* links

* dot

* all pretty no pity

(cherry picked from commit 9740ce3f58)

* Update configure-oncall.md
2024-07-03 11:36:26 +02:00
grafana-delivery-bot[bot]
8caf0df5a4 [v11.1.x] Docs: Clarify query and tags search in dashboard list (#89970)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-07-02 16:49:29 -04:00
grafana-delivery-bot[bot]
11b8626b36 [v11.1.x] DashboardScene: Disable edit related shortcuts for Viewer (#89941)
DashboardScene: Disable edit related shortcuts for Viewer (#89936)

check if can edit before adding edit shortcuts

(cherry picked from commit 527071aed6)

Co-authored-by: Sergej-Vlasov <37613182+Sergej-Vlasov@users.noreply.github.com>
2024-07-02 14:54:02 +03:00
grafana-delivery-bot[bot]
c032def097 [v11.1.x] alerting:mute-timings>api (#89943)
alerting:mute-timings>api (#89902)

* alerting:mute-timings>api

* added type go-type

* all pretty

(cherry picked from commit 92ad6c71d1)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-07-02 13:22:51 +02:00
grafana-delivery-bot[bot]
5510541ae7 [v11.1.x] Table Panel: Fix Image hover without datalinks (#89922)
Table Panel: Fix Image hover without datalinks (#89751)

* Fix image hover

* Prettier

* Fix height offset

(cherry picked from commit c575c06d63)

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2024-07-01 20:11:48 +03:00
grafana-delivery-bot[bot]
81c03daac3 [v11.1.x] Frontend: InteractiveTable fix - prevent styles from leaking into tables added in expanded rows (#89917)
Frontend: InteractiveTable fix - prevent styles from leaking into tables added in expanded rows (#88948)

* fix: prevent styles from leaking into tables added in expanded rows

(cherry picked from commit 1f967a89b6)

Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2024-07-01 10:55:33 -05:00
grafana-delivery-bot[bot]
244d0cf46a [v11.1.x] Alerting: Skip loading alert rules for dashboards when disabled (#89905)
Alerting: Skip loading alert rules for dashboards when disabled (#89361)

(cherry picked from commit 781e394118)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2024-07-01 13:36:39 +03:00
grafana-delivery-bot[bot]
fbcdaccb6d [v11.1.x] Alerting docs: Update View alert groups (#89899)
Alerting docs: Update `View alert groups` (#89461)

* Alerting docs: Update `View alert groups`
Rename to `View the status of notifications` and extend on this topic

* Update docs/sources/alerting/manage-notifications/view-alert-groups.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/manage-notifications/view-alert-groups.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/manage-notifications/view-alert-groups.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Use `1` always for numbered list

* refer to `grouping settings of notification policies`

* Update `View notification errors` with latest instructions

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit c168f2acec)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-07-01 11:46:39 +02:00
grafana-delivery-bot[bot]
bd64166681 [v11.1.x] Alerting docs: adds silence RBAC 11.1 (#89814)
Alerting docs: adds silence RBAC 11.1 (#89176)

* Alerting docs: adds silence RBAC 11.1

* ran prettier

* Improve docs with new rule-specific silence RBAC information

* Apply suggestions from code review

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* Apply suggestions from code review

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>

* prettier

---------

Co-authored-by: Matt Jacobson <matthew.jacobson@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit f833b782b6)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2024-06-27 10:27:52 +02:00
grafana-delivery-bot[bot]
60ea823a60 [v11.1.x] CI: fix release comms workflow (#89789)
CI: fix release comms workflow (#89744)

* add runs-on key

* remove unneeded env key

* use more specific quotes in commands

* fix block syntax

* fix workflow dispatch event check

(cherry picked from commit 16b050f676)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-06-26 17:37:06 +03:00
Jack Baldry
b908b86d22 Link to v11.1.x What's new page from the home (#89778) 2024-06-26 10:03:21 -04:00
grafana-delivery-bot[bot]
9cafc1abe4 [v11.1.x] CI: add release comms workflow (#89738)
CI: add release comms workflow (#89718)

* add release comms workflow

* add version input

* Add release-comms workflow to CODEOWNERS

(cherry picked from commit 3ede2dba24)

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>
2024-06-25 17:14:13 -05:00
grafana-delivery-bot[bot]
e0c2a0a219 [v11.1.x] advertise RBAC for silences better (#89720)
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2024-06-25 15:20:11 -04:00
grafana-delivery-bot[bot]
801dd891b8 [v11.1.x] Docs: Add more info and link to text wrap content (#89715)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2024-06-25 21:31:12 +03:00
grafana-delivery-bot[bot]
bf610cb029 [v11.1.x] Docs: Add youtube links to What's new 11.1 (#89713)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-06-25 14:16:32 -04:00
grafana-delivery-bot[bot]
36102bbaef [v11.1.x] alerting: teams contact point + updates (#89702)
alerting: teams contact point + updates (#89695)

* alerting: teams contact point + updates

* typo

* all pretty no pity

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-email.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-email.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-slack.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-slack.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/configure-slack.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/pager-duty.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/webhook-notifier.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/webhook-notifier.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/configure-notifications/manage-contact-points/integrations/webhook-notifier.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* formatting

* formatting

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 891cc0512f)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-06-25 18:08:05 +02:00
grafana-delivery-bot[bot]
66034f5eb7 [v11.1.x] Scenes: Repeat horizontally set the width to 24 even if repeat variab… (#89680)
Scenes: Repeat horizontally set the width to 24 even if repeat variable is not set (#89658)

(cherry picked from commit 6773f7f4ce)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-06-25 15:26:13 +03:00
grafana-delivery-bot[bot]
6f5e8414b3 [v11.1.x] Changelog: Updated changelog for 11.1.0 (#89660)
Changelog: Updated changelog for 11.1.0 (#89659)

* Changelog: Updated changelog for 11.1.0

* Linting

---------

Co-authored-by: grafanabot <bot@grafana.com>
Co-authored-by: Fabrizio <fabrizio.casati@grafana.com>
(cherry picked from commit 91628158f2)

Co-authored-by: grafana-delivery-bot[bot] <132647405+grafana-delivery-bot[bot]@users.noreply.github.com>
2024-06-25 13:00:04 +02:00
grafana-delivery-bot[bot]
4cf941e19f Release: Bump version to 11.1.1 (#89667)
bump version 11.1.1

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-06-25 13:57:13 +03:00
grafana-delivery-bot[bot]
64e4b0ec6a [v11.1.x] Docs: What’s new & Upgrade guide v11.1 (#89642)
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-06-24 16:51:04 -04:00
Kevin Minehart
80b3b5d292 [11.1.x] backport CI / release changes (#89641)
* CI: Make pkg/build its own module, remove unused Grafana modules in go.mo… (#89243)

* Make pkg/build its own module, remove unused Grafana modules in go.mod/go.sum

* fix go.work format

* log errors on file close errors

* CI: Add release-pr workflow (#89005)

* Add release-pr workflow

* update CODEOWNERS

* CI: Trigger release pr workflow when a release is completed (#89062)

* CI: Add bump-version action to the release PR workflow (#89491)

* Automation: Verify release artifacts on grafana.com (#89197)

* baldm0mma/verify_release/ create verify_release_for_download function

* baldm0mma/verify_release/ add name, image, env

* baldm0mma/verify_release/ add initial commands

* baldm0mma/verify_release/ add deps?

* baldm0mma/verify_release/ update location

* baldm0mma/verify_release/ add anno to lib-star

* bald0mma/verify_release/ update func name to verify_grafanacom_step

* baldm0mma/verify_release/ add verify shell script

* baldm0mma/verify_release/ add script content, first attempt

* baldm0mma/verify_release/ add node image to verify_grafanacom_step

* baldm0mma/verify_release/ add gcom secret note

* baldm0mma/verify_release/ add sudo to apt-get

* baldm0mma/verify_release/ add anno

* baldm0mma/verify_release/ add anno to secrets

* baldm0mma/verify_release/ update commands to reflect node env image

* baldm0mma/verify_release/ update annos

* baldm0mma/verify_release/ update tag variable

* baldm0mma/verify release/ add whitespace

* baldm0mma/verify_releases/ update with no bash loops

* baldm0mma/verify_release/ update exit logic

* baldm0mma/verify_release/ remove annos

* baldm0mma/verify_releasse/ resign and build yml

* baldm0mma/verify_release/ remove annos

* baldm0mma/verify_release/ update signature

* baldm0mma/verify_release/ download curl

* baldm0mma/verify_release/ remove temp key folder removal

* baldm0mma/verify_release/ account for artifact download time

* baldm0mma/verify_release/ add anno

* baldm0mma/verify_release/ update location

* baldm0mma/verify_release/ update script

* baldm0mma/verify_release/ make drone

* baldm0mma/verify_release/ update script for oss or ent

* baldm0mma/verify_release/ add promotion option

* baldm0mma/verify_release/ make drone

* Update scripts/drone/events/release.star

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* Update scripts/drone/steps/lib.star

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* Update scripts/drone/steps/lib.star

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* baldm0mma/verify_release/ update drone

* Update scripts/drone/events/release.star

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* baldm0mma/verify_release/ update drone

* Update scripts/drone/steps/lib.star

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* baldm0mma/update drone

* baldm0mma/verify_release/ update path

* baldm0mma/verify_release/ make drone

* baldm0mma/update drone

* Apply suggestions from code review

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

* baldm0mma/verify_release/ update for loop to account for failure

* baldm0mma/verify_release/ make drone

* baldm0mma/verify_release/ make format-drone

* baldm0mma/verify_release/ rem unused var

---------

Co-authored-by: Kevin Minehart <5140827+kminehart@users.noreply.github.com>

---------

Co-authored-by: Jev Forsberg <46619047+baldm0mma@users.noreply.github.com>
2024-06-24 15:07:01 -05:00
grafana-delivery-bot[bot]
82eccf0672 [v11.1.x] NavToolbarActions: Make sure ToolbarActions are renrendered when needed (#89620)
NavToolbarActions: Make sure ToolbarActions are renrendered when needed (#89615)

(cherry picked from commit 96fda0d6ea)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2024-06-24 15:37:56 +02:00
grafana-delivery-bot[bot]
6a89d906cc [v11.1.x] Fix typo in API key (#89593)
Co-authored-by: pmo <philmoses@gmail.com>
Fix typo in API key (#89568)
2024-06-24 10:15:59 +01:00
grafana-delivery-bot[bot]
795025156e [v11.1.x] DashboardScene: Fix dashboard clear when row repeating with non-existing variable (#89561)
DashboardScene: Fix dashboard clear when row repeating with non-existing variable (#89559)

---------

Co-authored-by: Sergej-Vlasov <sergej.s.vlasov@gmail.com>
(cherry picked from commit 7feea32602)

Co-authored-by: Alexa V <239999+axelavargas@users.noreply.github.com>
2024-06-24 09:09:03 +02:00
Ivan Ortega Alba
b5eeb5fd92 [v11.1.x] Home: Remove extra padding for dashboard home (#89544)
Home: Remove extra padding for dashboard home (#89432)

(cherry picked from commit aea894191b)
2024-06-21 14:35:27 +03:00
grafana-delivery-bot[bot]
7910226cdf [v11.1.x] Scenes: Unset _changesWorker when change tracker is terminated (#89536)
Scenes: Unset _changesWorker when change tracker is terminated (#89495)

* Scenes: Unset _changesWorker when change tracker is terminated

Closes #89458

(cherry picked from commit d750af0c48)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-06-21 13:21:07 +02:00
grafana-delivery-bot[bot]
446501ffd1 [v11.1.x] Docs: Fixed broken links on Prometheus data source page (#89514)
Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
Fixed broken links on Prometheus data source page (#89485)
2024-06-20 13:44:13 -05:00
grafana-delivery-bot[bot]
fe6cc7bcb5 [v11.1.x] Notifications: Do not log email address in error message (#89502)
Notifications: Do not log email address in error message (#89314)

Do not log email address in error message

(cherry picked from commit c2c30c25ed)

Co-authored-by: William Wernert <william.wernert@grafana.com>
2024-06-20 20:12:48 +03:00
grafana-delivery-bot[bot]
0b55fd04bc [v11.1.x] Echo: Suppress errors from frontend-metrics API call failing (#89494)
Echo: Don't notify if PerformanceBackend errors when flushing (#89379)

(cherry picked from commit b43411631b)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2024-06-20 19:28:20 +03:00
grafana-delivery-bot[bot]
b1a42dd55a [v11.1.x] Docs: Fix broken link (#89479)
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Fix broken link (#89441)
2024-06-20 10:04:42 -04:00
grafana-delivery-bot[bot]
b97bf4c632 [v11.1.x] Scenes: Setting default_home_dashboard_path returns blank page and no controls (#89360)
Scenes: Setting default_home_dashboard_path returns blank page and no controls (#89304)

(cherry picked from commit 3fdc66d284)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-06-19 18:54:27 +03:00
grafana-delivery-bot[bot]
bbefb6a4eb [v11.1.x] Docs: correct tracesToLogsV2 example span time shifts (#89426)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: jvaelen <jeroen.vaelen@gmail.com>
2024-06-19 16:07:45 +01:00
grafana-delivery-bot[bot]
9b283e650d [v11.1.x] Document Unix ms format for time type parsing (#89417)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Oleg Zaytsev <mail@olegzaytsev.com>
2024-06-19 17:37:12 +03:00
Dominik Prokop
e4a82fedbd [v11.1.x] DashboardScene: Make Grafana usable when custom home dashboard is invalid (#89366)
DashboardScene: Make Grafana usable when custom home dashboard is invalid (#89305)

* DashboardScene: Make Grafana usable when custom home dashboard is invalid

* Tests

* Remove console.error

(cherry picked from commit ae04580e5f)
2024-06-19 11:38:12 +03:00
ismail simsek
d19a851353 [v11.1.x] InfluxDB: Fix sending range info on variable editor (#89386)
InfluxDB: Fix sending range info on variable editor (#89347)

send range info in range field

(cherry picked from commit e5a50a7db8)
2024-06-19 08:51:20 +02:00
grafana-delivery-bot[bot]
3531b585e3 [v11.1.x] Prometheus: Don't use match[] parameter if there is no metric (#89385)
Prometheus: Don't use match[] parameter if there is no metric (#89352)

don't use match[] parameter if there is no metric

(cherry picked from commit 76047d9365)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2024-06-19 09:39:33 +03:00
grafana-delivery-bot[bot]
e62f0388da [v11.1.x] Fix: Portuguese Brazilian wasn't loading translations (#89375) 2024-06-18 20:23:50 +03:00
grafana-delivery-bot[bot]
6257deeae6 [v11.1.x] Alerting docs: update Introduction page (#89329)
Alerting docs: update Introduction page (#89155)

* Update Introduction page

* Update `How alerting works` image

* Update docs/sources/alerting/fundamentals/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/_index.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Fix `alt` attribute

* alert instance are sent `in` notifications

* Clarify `Notification policies`

* Clarify Notification Policy responsibilities

* Edit existing image captions

* change `configure a contact point` to `choose a contact point`

* Update image `caption/alt`

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit d0cf8956e2)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-06-18 09:58:44 +02:00
grafana-delivery-bot[bot]
5ec9cd017b [v11.1.x] Plugin extensions: Return react components from usePluginComponents() (#89328)
Plugin extensions: Return react components from `usePluginComponents()` (#89237)

feat: return with react components from `usePluginComponents()`
(cherry picked from commit 1d6c9d4690)

Co-authored-by: Levente Balogh <balogh.levente.hu@gmail.com>
2024-06-18 10:58:26 +03:00
grafana-delivery-bot[bot]
10e913ac79 [v11.1.x] alerting: notes on label matchers (#89326)
alerting: notes on label matchers (#89269)

* alerting: notes on label matchers

* routing clarification

* Update docs/sources/alerting/alerting-rules/templating-labels-annotations.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/templates.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 0cc67bb93d)

Co-authored-by: antonio <45235678+tonypowa@users.noreply.github.com>
2024-06-18 09:33:25 +02:00
grafana-delivery-bot[bot]
f96fb799a9 [v11.1.x] [DOC] Add feature toggle for admin page (#89310)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2024-06-17 19:24:13 +01:00
grafana-delivery-bot[bot]
212fe5d179 [v11.1.x] Scenes: Be able to hide dashboard controls in Kiosk mode (#89306)
Scenes: Be able to show/hide dashboard controls in Kiosk mode (#88920)

(cherry picked from commit 0abe4fc709)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-06-17 19:15:47 +03:00
grafana-delivery-bot[bot]
36dbcbc78a [v11.1.x] Analytics: Fix ApplicationInsights integration (#89301)
Analytics: Fix ApplicationInsights integration (#89299)

change ApplicationInsights backend to use SystemJS to load

(cherry picked from commit 7bb883e375)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2024-06-17 18:39:35 +03:00
grafana-delivery-bot[bot]
3418e01da5 [v11.1.x] Update index.md for Node, adding video to docs (#89076)
Update index.md for Node, adding video to docs (#88941)

(cherry picked from commit c98b7a712f)

Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-06-17 10:28:28 -04:00
grafana-delivery-bot[bot]
c4f072e4a9 [v11.1.x] DashboardScene: Emit meta analytic view event (#89266)
DashboardScene: Emit meta analytic view event (#89094)

* DashboardScene: Emit view event

* check fix

(cherry picked from commit ae80ed02e4)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2024-06-17 09:38:03 +02:00
grafana-delivery-bot[bot]
ba5cc1b089 [v11.1.x] Fix typo in dashboard-variables destinations and also use Grafana Cloud docs if they exist (#89245)
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Fix typo in dashboard-variables destinations and also use Grafana Cloud docs if they exist (#89244)
2024-06-17 08:11:59 +01:00
grafana-delivery-bot[bot]
34289b84fd [v11.1.x] Geomap: Fix data fit (#89248)
Geomap: Fix data fit (#89247)

(cherry picked from commit e53e6e7caa)

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2024-06-14 11:15:33 -07:00
grafana-delivery-bot[bot]
cdc07eb126 [v11.1.x] Use ref URIs with the reference style links (#89229)
Use ref URIs with the reference style links (#89204)

* Use ref URIs with the reference style links

If I remember correctly, the UI needs reference style links so it can substitute its own link destinations.
ref URIs work both inline and as the destination for reference style links.

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

* Remove unused ref URI

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

* Remove unused Data frames link

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

---------

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit f5468542ba)

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2024-06-14 18:05:29 +03:00
grafana-delivery-bot[bot]
1d165ba391 [v11.1.x] Docs: Fixes for 11.1 visualizations docs (#89194)
Docs: Fixes for 11.1 visualizations docs (#89193)

* Updated table wrapping and auto wording

* Fixed formatting to match other lists

* Fixed admonition styling and moved content out of note into body

* Added note re feature toggle

* Fixed typo

* Added comma

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>

---------

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
(cherry picked from commit e807f4201b)

Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
2024-06-13 17:10:16 -04:00
grafana-delivery-bot[bot]
4690d88c52 [v11.1.x] BrowseDashboards: Prepend subpath to New Browse Dashboard actions (#89131)
BrowseDashboards: Prepend subpath to New Browse Dashboard actions (#89109)

(cherry picked from commit c58d09fd81)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2024-06-13 15:55:20 +01:00
grafana-delivery-bot[bot]
7535629551 [v11.1.x] Inspect: Include only BOM char for excel files (#89146)
Inspect: Include only BOM char for excel files (#88994)

(cherry picked from commit 080adaf987)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2024-06-13 11:57:48 +03:00
grafana-delivery-bot[bot]
badcca2bb2 [v11.1.x] Alerting docs: fix example (#89150)
Alerting docs: fix example (#89132)

* Fix matching label example

* Update some wording

* Update docs/sources/alerting/fundamentals/notifications/notification-policies.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Minor Timing options summary clarification

* Clarify `Disable grouping`

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 35fba3833b)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-06-13 10:12:36 +02:00
grafana-delivery-bot[bot]
96ba44c802 [v11.1.x] DashboardScene: Fixes issue removing override rule (#89136) 2024-06-13 09:42:58 +02:00
grafana-delivery-bot[bot]
37b9dc0a37 [v11.1.x] @grafana/data: Introduce new getTagKeys/getTagValues response interface (#89120)
@grafana/data: Introduce new getTagKeys/getTagValues response interface (#88369)

* @grafana/data: Introduce new getTagKeys/getTagValues response interface

(cherry picked from commit 207672365a)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2024-06-12 17:37:08 +03:00
grafana-delivery-bot[bot]
9bfa4a6ce6 [v11.1.x] Alerting docs: Update Timing Options (#89105)
Alerting docs: Update Timing Options (#89036)

* first wip

* Complete changes

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Edit sentence refering the previous example

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit 57c9207a74)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-06-12 11:14:00 +02:00
grafana-delivery-bot[bot]
5c6f18a18b [v11.1.x] Alerting docs: update Introduction > Notification policies (#89103)
Alerting docs: update `Introduction > Notification policies` (#88656)

* Alerting docs: Notification policies and grouping

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/group-alert-notifications.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/notification-policies.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/notification-policies.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Change `alt` text in a diagram

* Clarify `siblings` and `child` policies

* Fix spelling error

* minor change

* Rewrite routing

* Update docs/sources/alerting/fundamentals/notifications/notification-policies.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Update docs/sources/alerting/fundamentals/notifications/notification-policies.md

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>

* Rewrite Routing

* extend routing

* Minor `Group by` example

* Clarify how Grafana groups alerts by the alert rule

* Skip bold style for `group` options

---------

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
(cherry picked from commit ee75fc3852)

Co-authored-by: Pepe Cano <825430+ppcano@users.noreply.github.com>
2024-06-12 10:58:00 +02:00
Isabel Matwawana
cad1d4541b [v11.1.x] Added Grafana Play Links to Panel visualization docs (#89078)
Added Grafana Play Links to Panel visualization docs (#88995)

* Update index.md on Node panels to Grafana Play link

* Update index.md add Traces docs link to Grafana Play

* Update index.md News documentation link to Grafana Play

* Update index.md Alert list documentation link to Grafana Play

* Update index.md Alert list fixed missing link

* Update index.md Fixed title

* Update index.md Trying code fix

* Ran prettier command

* Matched link text to dashboard titles

* Replaced URL with ref URI key

---------

Co-authored-by: Isabel Matwawana <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Isabel Matwawana <isabel.matwawana@grafana.com>
(cherry picked from commit 404617b33d)

Co-authored-by: Señor Performo - Leandro Melendez <54183040+srperf@users.noreply.github.com>
2024-06-11 17:03:05 -04:00
grafana-delivery-bot[bot]
36dd8f50de [v11.1.x] feat: Updated whats-new-in-v11-0.md with release video (#89077)
feat: Updated whats-new-in-v11-0.md with release video (#87953)

Update whats-new-in-v11-0.md

Grafana 11 release video added.

(cherry picked from commit 465efbf802)

Co-authored-by: Jay Clifford <45856600+Jayclifford345@users.noreply.github.com>
2024-06-11 16:55:04 -04:00
grafana-delivery-bot[bot]
1d6d252e1d [v11.1.x] Docs: Updates to the Grafana enterprise data source intro page (#89069)
Docs:  Updates to the Grafana enterprise data source intro page (#89065)

removed a dupe, deprecated data source and cleaned up a page name

(cherry picked from commit 59fbc0d9e3)

Co-authored-by: Larissa Wandzura <126723338+lwandz13@users.noreply.github.com>
2024-06-11 14:23:43 -05:00
grafana-delivery-bot[bot]
92ba78cd95 [v11.1.x] Alerting: Fix rule storage to filter by group names using case-sensitive comparison (#89007)
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>
(cherry picked from commit d4b0ac5973)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2024-06-11 12:04:39 -04:00
grafana-delivery-bot[bot]
db381f3afd [v11.1.x] DashboardScene: Fixes lack of re-render when updating field override properties (#89011)
DashboardScene: Fixes lack of re-render when updating field override properties (#88796)

* DashboardScene: Fixes lack of re-render when updating field override properties

* Added unit test

(cherry picked from commit db25886f9c)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2024-06-11 11:35:32 +03:00
grafana-delivery-bot[bot]
e20392c206 [v11.1.x] Transformations: Keep original field.labels.name when joining frames (#89012)
Transformations: Keep original `field.labels.name` when joining frames (#88873)

(cherry picked from commit 89a0bec208)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2024-06-11 10:19:59 +02:00
325 changed files with 8140 additions and 2472 deletions

View File

@@ -1320,10 +1320,6 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
"public/app/core/services/echo/backends/analytics/ApplicationInsightsBackend.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
"public/app/core/services/echo/backends/analytics/RudderstackBackend.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"],
@@ -2800,7 +2796,8 @@ exports[`better eslint`] = {
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "10"]
],
"public/app/features/dashboard-scene/inspect/HelpWizard/utils.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"]
],
"public/app/features/dashboard-scene/inspect/InspectDataTab.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "0"]
@@ -2860,6 +2857,10 @@ exports[`better eslint`] = {
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "2"],
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "3"]
],
"public/app/features/dashboard-scene/saving/DashboardSceneChangeTracker.test.ts:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"],
[0, 0, 0, "Unexpected any. Specify a different type.", "1"]
],
"public/app/features/dashboard-scene/saving/SaveDashboardAsForm.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "0"],
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "1"],
@@ -2893,6 +2894,9 @@ exports[`better eslint`] = {
"public/app/features/dashboard-scene/saving/shared.tsx:5381": [
[0, 0, 0, "No untranslated strings. Wrap text with <Trans />", "0"]
],
"public/app/features/dashboard-scene/scene/DashboardControls.tsx:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/features/dashboard-scene/scene/NavToolbarActions.test.tsx:5381": [
[0, 0, 0, "Unexpected any. Specify a different type.", "0"]
],
@@ -2948,7 +2952,9 @@ exports[`better eslint`] = {
[0, 0, 0, "Unexpected any. Specify a different type.", "9"],
[0, 0, 0, "Unexpected any. Specify a different type.", "10"],
[0, 0, 0, "Unexpected any. Specify a different type.", "11"],
[0, 0, 0, "Unexpected any. Specify a different type.", "12"]
[0, 0, 0, "Unexpected any. Specify a different type.", "12"],
[0, 0, 0, "Unexpected any. Specify a different type.", "13"],
[0, 0, 0, "Unexpected any. Specify a different type.", "14"]
],
"public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"],
@@ -6232,6 +6238,9 @@ exports[`better eslint`] = {
[0, 0, 0, "Do not use any type assertions.", "0"],
[0, 0, 0, "Do not use any type assertions.", "1"]
],
"public/app/plugins/datasource/dashboard/datasource.ts:5381": [
[0, 0, 0, "Do not use any type assertions.", "0"]
],
"public/app/plugins/datasource/dashboard/index.ts:5381": [
[0, 0, 0, "Do not re-export imported variable (\`./runSharedRequest\`)", "0"],
[0, 0, 0, "Do not re-export imported variable (\`./DashboardQueryEditor\`)", "1"],

View File

@@ -2672,8 +2672,40 @@ steps:
- name: docker
path: /var/run/docker.sock
- commands:
- ./bin/grabpl artifacts docker publish --dockerhub-repo grafana/grafana --version-tag
${DRONE_TAG}
- apk add bash
- |2-
bash -c '
debug=
if [[ -n $${DRY_RUN} ]]; then debug=echo; fi
docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}
# Push the grafana-image-tags images
$$debug docker push grafana/grafana-image-tags:$${TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
# Create the grafana manifests
$$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
# Push the grafana manifests
$$debug docker manifest push grafana/grafana:$${TAG}
$$debug docker manifest push grafana/grafana:$${TAG}-ubuntu
# if LATEST is set, then also create & push latest
if [[ -n $${LATEST} ]]; then
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest push grafana/grafana:latest
$$debug docker manifest push grafana/grafana:latest-ubuntu
fi'
depends_on:
- fetch-images
environment:
@@ -2681,15 +2713,7 @@ steps:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GCP_KEY:
from_secret: gcp_grafanauploads
GITHUB_APP_ID:
from_secret: delivery-bot-app-id
GITHUB_APP_INSTALLATION_ID:
from_secret: delivery-bot-app-installation-id
GITHUB_APP_PRIVATE_KEY:
from_secret: delivery-bot-app-private-key
image: google/cloud-sdk:431.0.0
image: docker:27-cli
name: publish-images-grafana
volumes:
- name: docker
@@ -2737,6 +2761,152 @@ image_pull_secrets:
- gcr
- gar
kind: pipeline
name: manually-publish-docker-public
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
image: alpine:3.19.1
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v3.0.50/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
- commands:
- go build -o ./bin/build -ldflags '-extldflags -static' ./pkg/build/cmd
depends_on: []
environment:
CGO_ENABLED: 0
image: golang:1.22.4-alpine
name: compile-build-cmd
- commands:
- ./bin/build artifacts docker fetch --edition oss
depends_on:
- compile-build-cmd
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
GCP_KEY:
from_secret: gcp_grafanauploads
image: google/cloud-sdk:431.0.0
name: fetch-images
volumes:
- name: docker
path: /var/run/docker.sock
- commands:
- apk add bash
- |2-
bash -c '
debug=
if [[ -n $${DRY_RUN} ]]; then debug=echo; fi
docker login -u $${DOCKER_USER} -p $${DOCKER_PASSWORD}
# Push the grafana-image-tags images
$$debug docker push grafana/grafana-image-tags:$${TAG}-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-amd64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-arm64
$$debug docker push grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
# Create the grafana manifests
$$debug docker manifest create grafana/grafana:${TAG} grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:${TAG}-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
# Push the grafana manifests
$$debug docker manifest push grafana/grafana:$${TAG}
$$debug docker manifest push grafana/grafana:$${TAG}-ubuntu
# if LATEST is set, then also create & push latest
if [[ -n $${LATEST} ]]; then
$$debug docker manifest create grafana/grafana:latest grafana/grafana-image-tags:$${TAG}-amd64 grafana/grafana-image-tags:$${TAG}-arm64 grafana/grafana-image-tags:$${TAG}-armv7
$$debug docker manifest create grafana/grafana:latest-ubuntu grafana/grafana-image-tags:$${TAG}-ubuntu-amd64 grafana/grafana-image-tags:$${TAG}-ubuntu-arm64 grafana/grafana-image-tags:$${TAG}-ubuntu-armv7
$$debug docker manifest push grafana/grafana:latest
$$debug docker manifest push grafana/grafana:latest-ubuntu
fi'
depends_on:
- fetch-images
environment:
DOCKER_PASSWORD:
from_secret: docker_password
DOCKER_USER:
from_secret: docker_username
image: docker:27-cli
name: publish-images-grafana
volumes:
- name: docker
path: /var/run/docker.sock
trigger:
event:
- promote
target:
- publish-docker-public
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: create-release-pr
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- apk add perl
- v_target=`echo $${TAG} | perl -pe 's/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/v\1.\2.x/'`
- curl -L $${GH_CLI_URL} | tar -xz --strip-components=1 -C /usr
- gh workflow run -f dry_run=$${DRY_RUN} -f version=$${TAG} -f target=$${v_target}
-f latest=$${LATEST} --repo=grafana/grafana release-pr.yml
depends_on: []
environment:
GH_CLI_URL: https://github.com/cli/cli/releases/download/v2.50.0/gh_2.50.0_linux_amd64.tar.gz
GITHUB_TOKEN:
from_secret: github_token
image: byrnedo/alpine-curl:0.1.8
name: create-release-pr
trigger:
event:
- promote
target: release-pr
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
environment:
EDITION: oss
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: publish-artifacts-public
node:
type: no-parallel
@@ -2787,6 +2957,21 @@ steps:
from_secret: prerelease_bucket
image: grafana/grafana-ci-deploy:1.3.3
name: publish-storybook
- commands:
- apk add perl
- v_target=`echo $${TAG} | perl -pe 's/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/v\1.\2.x/'`
- curl -L $${GH_CLI_URL} | tar -xz --strip-components=1 -C /usr
- gh workflow run -f dry_run=$${DRY_RUN} -f version=$${TAG} -f target=$${v_target}
-f latest=$${LATEST} --repo=grafana/grafana release-pr.yml
depends_on:
- publish-artifacts
- publish-static-assets
environment:
GH_CLI_URL: https://github.com/cli/cli/releases/download/v2.50.0/gh_2.50.0_linux_amd64.tar.gz
GITHUB_TOKEN:
from_secret: github_token
image: byrnedo/alpine-curl:0.1.8
name: create-release-pr
trigger:
event:
- promote
@@ -2862,6 +3047,164 @@ volumes:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: verify-grafanacom-artifacts
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- apk add curl bash
- "\n for i in {1..5}; do\n if ./scripts/drone/verify-grafanacom.sh;
then\n exit 0\n elif [ $i -eq 5 ]; then\n exit
1\n else\n sleep 60\n fi\n done\n
\ "
depends_on: []
image: node:20.9.0-alpine
name: verify-grafanacom
trigger:
event:
- promote
target: verify-grafanacom-artifacts
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on: []
image_pull_secrets:
- gcr
- gar
kind: pipeline
name: verify-linux-packages
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- 'echo "Step 1: Updating package lists..."'
- apt-get update >/dev/null 2>&1
- 'echo "Step 2: Installing prerequisites..."'
- DEBIAN_FRONTEND=noninteractive apt-get install -yq apt-transport-https software-properties-common
wget >/dev/null 2>&1
- 'echo "Step 3: Adding Grafana GPG key..."'
- mkdir -p /etc/apt/keyrings/
- wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/grafana.gpg
> /dev/null
- 'echo "Step 4: Adding Grafana repository..."'
- echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable
main" | tee -a /etc/apt/sources.list.d/grafana.list
- 'echo "Step 5: Installing Grafana..."'
- for i in $(seq 1 10); do
- ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get
install -yq grafana=${TAG} >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
- ' echo "Attempt $i failed"'
- ' if [ $i -eq 10 ]; then'
- ' echo ''All attempts failed'''
- ' exit 1'
- ' fi'
- ' echo "Waiting 60 seconds before next attempt..."'
- ' sleep 60'
- ' fi'
- done
- 'echo "Step 6: Verifying Grafana installation..."'
- 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then'
- ' echo "Successfully verified Grafana version ${TAG}"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' exit 1'
- fi
- echo "Verification complete."
depends_on: []
environment: {}
image: ubuntu:22.04
name: verify-linux-DEB-packages
- commands:
- 'echo "Step 1: Updating package lists..."'
- dnf check-update -y >/dev/null 2>&1 || true
- 'echo "Step 2: Installing prerequisites..."'
- dnf install -y dnf-utils >/dev/null 2>&1
- 'echo "Step 3: Adding Grafana GPG key..."'
- rpm --import https://rpm.grafana.com/gpg.key
- 'echo "Step 4: Configuring Grafana repository..."'
- |-
echo -e '[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=0
enabled=1
gpgcheck=0
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
' > /etc/yum.repos.d/grafana.repo
- 'echo "Step 5: Checking RPM repository..."'
- dnf list available grafana-${TAG}
- if [ $? -eq 0 ]; then
- ' echo "Grafana package found in repository. Installing from repo..."'
- for i in $(seq 1 5); do
- ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
- ' echo "Attempt $i failed"'
- ' if [ $i -eq 5 ]; then'
- ' echo ''All attempts failed'''
- ' exit 1'
- ' fi'
- ' echo "Waiting 60 seconds before next attempt..."'
- ' sleep 60'
- ' fi'
- done
- ' echo "Verifying GPG key..."'
- ' rpm --import https://rpm.grafana.com/gpg.key'
- ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana'
- else
- ' echo "Grafana package version ${TAG} not found in repository."'
- ' dnf repolist'
- ' dnf list available grafana*'
- ' exit 1'
- fi
- 'echo "Step 6: Verifying Grafana installation..."'
- if rpm -q grafana | grep -q "${TAG}"; then
- ' echo "Successfully verified Grafana version ${TAG}"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' exit 1'
- fi
- echo "Verification complete."
depends_on: []
environment: {}
image: rockylinux:9
name: verify-linux-RPM-packages
trigger:
event:
- promote
target: verify-linux-packages
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
clone:
retries: 3
depends_on:
@@ -2930,6 +3273,107 @@ steps:
service_account_json:
from_secret: packages_service_account
target_bucket: grafana-packages
- commands:
- 'echo "Step 1: Updating package lists..."'
- apt-get update >/dev/null 2>&1
- 'echo "Step 2: Installing prerequisites..."'
- DEBIAN_FRONTEND=noninteractive apt-get install -yq apt-transport-https software-properties-common
wget >/dev/null 2>&1
- 'echo "Step 3: Adding Grafana GPG key..."'
- mkdir -p /etc/apt/keyrings/
- wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/grafana.gpg
> /dev/null
- 'echo "Step 4: Adding Grafana repository..."'
- echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable
main" | tee -a /etc/apt/sources.list.d/grafana.list
- 'echo "Step 5: Installing Grafana..."'
- for i in $(seq 1 10); do
- ' if apt-get update >/dev/null 2>&1 && DEBIAN_FRONTEND=noninteractive apt-get
install -yq grafana=${TAG} >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
- ' echo "Attempt $i failed"'
- ' if [ $i -eq 10 ]; then'
- ' echo ''All attempts failed'''
- ' exit 1'
- ' fi'
- ' echo "Waiting 60 seconds before next attempt..."'
- ' sleep 60'
- ' fi'
- done
- 'echo "Step 6: Verifying Grafana installation..."'
- 'if dpkg -s grafana | grep -q "Version: ${TAG}"; then'
- ' echo "Successfully verified Grafana version ${TAG}"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' exit 1'
- fi
- echo "Verification complete."
depends_on:
- publish-linux-packages-deb
environment: {}
image: ubuntu:22.04
name: verify-linux-DEB-packages
- commands:
- 'echo "Step 1: Updating package lists..."'
- dnf check-update -y >/dev/null 2>&1 || true
- 'echo "Step 2: Installing prerequisites..."'
- dnf install -y dnf-utils >/dev/null 2>&1
- 'echo "Step 3: Adding Grafana GPG key..."'
- rpm --import https://rpm.grafana.com/gpg.key
- 'echo "Step 4: Configuring Grafana repository..."'
- |-
echo -e '[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=0
enabled=1
gpgcheck=0
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
' > /etc/yum.repos.d/grafana.repo
- 'echo "Step 5: Checking RPM repository..."'
- dnf list available grafana-${TAG}
- if [ $? -eq 0 ]; then
- ' echo "Grafana package found in repository. Installing from repo..."'
- for i in $(seq 1 5); do
- ' if dnf install -y --nogpgcheck grafana-${TAG} >/dev/null 2>&1; then'
- ' echo "Command succeeded on attempt $i"'
- ' break'
- ' else'
- ' echo "Attempt $i failed"'
- ' if [ $i -eq 5 ]; then'
- ' echo ''All attempts failed'''
- ' exit 1'
- ' fi'
- ' echo "Waiting 60 seconds before next attempt..."'
- ' sleep 60'
- ' fi'
- done
- ' echo "Verifying GPG key..."'
- ' rpm --import https://rpm.grafana.com/gpg.key'
- ' rpm -qa gpg-pubkey* | xargs rpm -qi | grep -i grafana'
- else
- ' echo "Grafana package version ${TAG} not found in repository."'
- ' dnf repolist'
- ' dnf list available grafana*'
- ' exit 1'
- fi
- 'echo "Step 6: Verifying Grafana installation..."'
- if rpm -q grafana | grep -q "${TAG}"; then
- ' echo "Successfully verified Grafana version ${TAG}"'
- else
- ' echo "Failed to verify Grafana version ${TAG}"'
- ' exit 1'
- fi
- echo "Verification complete."
depends_on:
- publish-linux-packages-rpm
environment: {}
image: rockylinux:9
name: verify-linux-RPM-packages
- commands:
- ./bin/build publish grafana-com --edition oss ${DRONE_TAG}
depends_on:
@@ -2942,6 +3386,16 @@ steps:
from_secret: grafana_api_key
image: grafana/grafana-ci-deploy:1.3.3
name: publish-grafanacom
- commands:
- apk add curl bash
- "\n for i in {1..5}; do\n if ./scripts/drone/verify-grafanacom.sh;
then\n exit 0\n elif [ $i -eq 5 ]; then\n exit
1\n else\n sleep 60\n fi\n done\n
\ "
depends_on:
- publish-grafanacom
image: node:20.9.0-alpine
name: verify-grafanacom
trigger:
event:
- promote
@@ -4602,6 +5056,7 @@ steps:
- name: config
path: /root/.docker/
- commands:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM docker:27-cli
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM alpine/git:2.40.1
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM golang:1.22.4-alpine
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM node:20.9.0-alpine
@@ -4627,6 +5082,7 @@ steps:
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM cypress/included:13.10.0
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM jwilder/dockerize:0.6.1
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM koalaman/shellcheck:stable
- trivy --exit-code 0 --severity UNKNOWN,LOW,MEDIUM rockylinux:9
depends_on:
- authenticate-gcr
image: aquasec/trivy:0.21.0
@@ -4637,6 +5093,7 @@ steps:
- name: config
path: /root/.docker/
- commands:
- trivy --exit-code 1 --severity HIGH,CRITICAL docker:27-cli
- trivy --exit-code 1 --severity HIGH,CRITICAL alpine/git:2.40.1
- trivy --exit-code 1 --severity HIGH,CRITICAL golang:1.22.4-alpine
- trivy --exit-code 1 --severity HIGH,CRITICAL node:20.9.0-alpine
@@ -4662,6 +5119,7 @@ steps:
- trivy --exit-code 1 --severity HIGH,CRITICAL cypress/included:13.10.0
- trivy --exit-code 1 --severity HIGH,CRITICAL jwilder/dockerize:0.6.1
- trivy --exit-code 1 --severity HIGH,CRITICAL koalaman/shellcheck:stable
- trivy --exit-code 1 --severity HIGH,CRITICAL rockylinux:9
depends_on:
- authenticate-gcr
environment:
@@ -4893,6 +5351,6 @@ kind: secret
name: gcr_credentials
---
kind: signature
hmac: 08f38b820f97302de03a9fdfd39fb12c185bb36170704cf7591c16f33c3e4d31
hmac: faa6a717a8a8140633e39cefbd43432d1121392ac118cefb3985395857868889
...

2
.github/CODEOWNERS vendored
View File

@@ -658,6 +658,8 @@ embed.go @grafana/grafana-as-code
/.github/workflows/backport.yml @grafana/grafana-release-guild
/.github/workflows/bump-version.yml @grafana/grafana-release-guild
/.github/workflows/close-milestone.yml @grafana/grafana-release-guild
/.github/workflows/release-pr.yml @grafana/grafana-release-guild
/.github/workflows/release-comms.yml @grafana/grafana-release-guild
/.github/workflows/codeowners-validator.yml @tolzhabayev
/.github/workflows/codeql-analysis.yml @DanCech
/.github/workflows/commands.yml @torkelo

View File

@@ -0,0 +1,22 @@
name: Changelog generator
description: Generates and publishes a changelog for the given release version
inputs:
target:
description: Target tag, branch or commit hash for the changelog
required: true
previous:
description: Previous tag, branch or commit hash to start changelog from
required: false
github_token:
description: GitHub token with read/write access to all necessary repositories
required: true
output_file:
description: A file to store resulting changelog markdown
required: false
outputs:
changelog:
description: Changelog contents between the two given versions in Markdown format
runs:
using: 'node20'
main: 'index.js'

View File

@@ -0,0 +1,319 @@
import { appendFileSync, writeFileSync } from 'fs';
import { exec as execCallback } from 'node:child_process';
import { promisify } from 'node:util';
//
// Github Action core utils: logging (notice + debug log levels), must escape
// newlines and percent signs
//
const escapeData = (s) => s.replace(/%/g, '%25').replace(/\r/g, '%0D').replace(/\n/g, '%0A');
const LOG = (msg) => console.log(`::notice::${escapeData(msg)}`);
//
// Semver utils: parse, compare, sort etc (using official regexp)
// https://regex101.com/r/Ly7O1x/3/
//
const semverRegExp =
/^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
const semverParse = (tag) => {
const m = tag.match(semverRegExp);
if (!m) {
return;
}
const [_, major, minor, patch, prerelease] = m;
return [+major, +minor, +patch, prerelease, tag];
};
// semverCompare takes two parsed semver tags and comparest them more or less
// according to the semver specs
const semverCompare = (a, b) => {
for (let i = 0; i < 3; i++) {
if (a[i] !== b[i]) {
return a[i] < b[i] ? 1 : -1;
}
}
if (a[3] !== b[3]) {
return a[3] < b[3] ? 1 : -1;
}
return 0;
};
// Using `git tag -l` output find the tag (version) that goes semantically
// right before the given version. This might not work correctly with some
// pre-release versions, which is why it's possible to pass previous version
// into this action explicitly to avoid this step.
const getPreviousVersion = async (version) => {
const exec = promisify(execCallback);
const { stdout } = await exec('git tag -l');
const prev = stdout
.split('\n')
.map(semverParse)
.filter((tag) => tag)
.sort(semverCompare)
.find((tag) => semverCompare(tag, semverParse(version)) > 0);
if (!prev) {
throw `Could not find previous git tag for ${version}`;
}
return prev[4];
};
// A helper for Github GraphQL API endpoint
const graphql = async (ghtoken, query, variables) => {
const { env } = process;
const results = await fetch('https://api.github.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${ghtoken}`,
},
body: JSON.stringify({ query, variables }),
});
const { data } = await results.json();
return data;
};
// Using Github GraphQL API find the timestamp for the given tag/commit hash.
// This is required for PR listing, because Github API only takes date/time as
// a "since" parameter while listing. Currently there is no way to provide two
// "commitish" items and get a list of PRs in between them.
const getCommitishDate = async (name, owner, target) => {
const result = await graphql(
ghtoken,
`
query getCommitDate($owner: String!, $name: String!, $target: String!) {
repository(owner: $owner, name: $name) {
object(expression: $target) {
... on Commit {
committedDate
}
}
}
}
`,
{ name, owner, target }
);
return result.repository.object.committedDate;
};
// Using Github GraphQL API get a list of PRs between the two "commitish" items.
// This resoves the "since" item's timestamp first and iterates over all PRs
// till "target" using naïve pagination.
const getHistory = async (name, owner, target, sinceDate) => {
LOG(`Fetching ${owner}/${name} PRs since ${sinceDate} till ${target}`);
const query = `
query findCommitsWithAssociatedPullRequests(
$name: String!
$owner: String!
$target: String!
$sinceDate: GitTimestamp
$cursor: String
) {
repository(name: $name, owner: $owner) {
object(expression: $target) {
... on Commit {
history(first: 50, since: $sinceDate, after: $cursor) {
totalCount
pageInfo {
hasNextPage
endCursor
}
nodes {
id
associatedPullRequests(first: 1) {
nodes {
title
number
labels(first: 10) {
nodes {
name
}
}
commits(first: 1) {
nodes {
commit {
author {
user {
login
}
}
}
}
}
}
}
}
}
}
}
}
}`;
let cursor;
let nodes = [];
for (;;) {
const result = await graphql(ghtoken, query, {
name,
owner,
target,
sinceDate,
cursor,
});
LOG(`GraphQL: ${JSON.stringify(result)}`);
nodes = [...nodes, ...result.repository.object.history.nodes];
const { hasNextPage, endCursor } = result.repository.object.history.pageInfo;
if (!hasNextPage) {
break;
}
cursor = endCursor;
}
return nodes;
};
// The main function for this action: given two "commitish" items it gets a
// list of PRs between them and filters/groups the PRs by category (bugfix,
// feature, deprecation, breaking change and plugin fixes/enhancements).
//
// PR grouping relies on Github labels only, not on the PR contents.
const getChangeLogItems = async (name, owner, sinceDate, to) => {
// check if a node contains a certain label
const hasLabel = ({ labels }, label) => labels.nodes.some(({ name }) => name === label);
// get all the PRs between the two "commitish" items
const history = await getHistory(name, owner, to, sinceDate);
const items = history.flatMap((node) => {
// discard PRs without a "changelog" label
const changes = node.associatedPullRequests.nodes.filter((PR) => hasLabel(PR, 'add to changelog'));
if (changes.length === 0) {
return [];
}
const item = changes[0];
const { number, url, labels } = item;
const title = item.title.replace(/^\[[^\]]+\]:?\s*/, '');
// for changelog PRs try to find a suitable category.
// Note that we can not detect "deprecation notices" like that
// as there is no suitable label yet.
const isBug = /fix/i.test(title) || hasLabel({ labels }, 'type/bug');
const isBreaking = hasLabel({ labels }, 'breaking change');
const isPlugin =
hasLabel({ labels }, 'area/grafana/ui') ||
hasLabel({ labels }, 'area/grafana/toolkit') ||
hasLabel({ labels }, 'area/grafana/runtime');
const author = item.commits.nodes[0].commit.author.user.login;
return {
repo: name,
number,
title,
author,
isBug,
isPlugin,
isBreaking,
};
});
return items;
};
// ======================================================
// GENERATE CHANGELOG
// ======================================================
LOG(`Changelog action started`);
const ghtoken = process.env.GITHUB_TOKEN || process.env.INPUT_GITHUB_TOKEN;
if (!ghtoken) {
throw 'GITHUB_TOKEN is not set and "github_token" input is empty';
}
const target = process.argv[2] || process.env.INPUT_TARGET;
LOG(`Target tag/branch/commit: ${target}`);
const previous = process.argv[3] || process.env.INPUT_PREVIOUS || (await getPreviousVersion(target));
LOG(`Previous tag/commit: ${previous}`);
const sinceDate = await getCommitishDate('grafana', 'grafana', previous);
LOG(`Previous tag/commit timestamp: ${sinceDate}`);
// Get all changelog items from Grafana OSS
const oss = await getChangeLogItems('grafana', 'grafana', sinceDate, target);
// Get all changelog items from Grafana Enterprise
const entr = await getChangeLogItems('grafana-enterprise', 'grafana', sinceDate, target);
LOG(`Found OSS PRs: ${oss.length}`);
LOG(`Found Enterprise PRs: ${entr.length}`);
// Sort PRs and categorise them into sections
const changelog = [...oss, ...entr]
.sort((a, b) => (a.title < b.title ? -1 : 1))
.reduce(
(changelog, item) => {
if (item.isPlugin) {
changelog.plugins.push(item);
} else if (item.isBug) {
changelog.bugfixes.push(item);
} else if (item.isBreaking) {
changelog.breaking.push(item);
} else {
changelog.features.push(item);
}
return changelog;
},
{
breaking: [],
plugins: [],
bugfixes: [],
features: [],
}
);
// Convert PR numbers to Github links
const pullRequestLink = (n) => `[#${n}](https://github.com/grafana/grafana/pull/${n})`;
// Convert Github user IDs to Github links
const userLink = (u) => `[@${u}](https://github.com/${u})`;
// Now that we have a changelog - we can render some markdown as an output
const markdown = (changelog) => {
// This convers a list of changelog items into a markdown section with a list of titles/links
const section = (title, items) =>
items.length === 0
? ''
: `### ${title}
${items
.map(
(item) =>
`- ${item.title.replace(/^([^:]*:)/gm, '**$1**')} ${
item.repo === 'grafana-enterprise'
? '(Enterprise)'
: `${pullRequestLink(item.number)}, ${userLink(item.author)}`
}`
)
.join('\n')}
`;
// Render all present sections for the given changelog
return `${section('Features and enhancements', changelog.features)}
${section('Bug fixes', changelog.bugfixes)}
${section('Breaking changes', changelog.breaking)}
${section('Plugin development fixes & changes', changelog.plugins)}
`;
};
const md = markdown(changelog);
// Print changelog, mostly for debugging
LOG(`Resulting markdown: ${md}`);
// Save changelog as an output for this action
if (process.env.GITHUB_OUTPUT) {
LOG(`Output to ${process.env.GITHUB_OUTPUT}`);
appendFileSync(process.env.GITHUB_OUTPUT, `changelog<<EOF\n${escapeData(md)}\nEOF`);
} else {
LOG('GITHUB_OUTPUT is not set');
}
// Save changelog as an output file (if requested)
if (process.env.INPUT_OUTPUT_FILE) {
LOG(`Output to ${process.env.INPUT_OUTPUT_FILE}`);
writeFileSync(process.env.INPUT_OUTPUT_FILE, md);
}

View File

@@ -5,74 +5,39 @@ on:
version:
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
required: true
env:
YARN_ENABLE_IMMUTABLE_INSTALLS: false
push:
default: true
required: false
dry_run:
default: false
required: false
jobs:
main:
runs-on: ubuntu-latest
steps:
# This is a basic workflow to help you get started with Actions
- uses: actions-ecosystem/action-regex-match@v2.0.2
if: ${{ github.event.inputs.version != '' }}
id: regex-match
with:
text: ${{ github.event.inputs.version }}
regex: '^(\d+.\d+).\d+(?:-(?:(preview\d?)|(pre)))?$'
- uses: actions-ecosystem/action-regex-match@v2.0.2
if: ${{ inputs.version_call != '' }}
id: regex-match-version-call
with:
text: ${{ inputs.version_call }}
regex: '^(\d+.\d+).\d+(?:-(?:(preview\d?)|(pre)))?$'
- name: Validate input version
if: ${{ steps.regex-match.outputs.match == '' && github.event.inputs.version != '' }}
run: |
echo "The input version format is not correct, please respect:\
major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. \
example: 7.4.3, 7.4.3-preview or 7.4.3-preview1"
exit 1
- name: Validate input version call
if: ${{ inputs.version_call != '' && steps.regex-match-version-call.outputs.match == '' }}
run: |
echo "The input version format is not correct, please respect:\
major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. \
example: 7.4.3, 7.4.3-preview or 7.4.3-preview1"
exit 1
- uses: actions/checkout@v4
- name: Set intermedia variables
id: intermedia
run: |
echo "short_ref=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
echo "check_passed=false" >> $GITHUB_OUTPUT
echo "branch_name=v${{steps.regex-match.outputs.group1}}" >> $GITHUB_OUTPUT
echo "branch_exist=$(git ls-remote --heads https://github.com/grafana/grafana.git v${{ steps.regex-match.outputs.group1 }}.x | wc -l)" >> $GITHUB_OUTPUT
- name: Checkout Actions
- name: Checkout Grafana
uses: actions/checkout@v4
- name: Update package.json versions
uses: ./pkg/build/actions/bump-version
with:
repository: "grafana/grafana-github-actions"
path: ./actions
ref: main
# Go is required for also updating the schema versions as part of the precommit hook:
- uses: actions/setup-go@v4
with:
go-version-file: go.mod
- uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
version: ${{ inputs.version }}
- if: ${{ inputs.push }}
name: Generate token
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run bump version (manually invoked)
uses: ./actions/bump-version
with:
token: ${{ steps.generate_token.outputs.token }}
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
precommit_make_target: gen-cue
- if: ${{ inputs.push }}
name: Push & Create PR
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local --add --bool push.autoSetupRemote true
git checkout -b "bump-version/${{ github.run_id }}/${{ inputs.version }}"
git add .
git commit -m "bump version ${{ inputs.version }}"
git push
gh pr create --dry-run=${{ inputs.dry_run }} -l "type/ci" -l "no-changelog" -B "${{ github.ref_name }}" --title "Release: Bump version to ${{ inputs.version }}" --body "Updated version to ${{ inputs.version }}"
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}

130
.github/workflows/changelog.yml vendored Normal file
View File

@@ -0,0 +1,130 @@
name: Generate changelog
on:
workflow_call:
inputs:
version:
type: string
required: true
description: 'Target release version (semver, git tag, branch or commit)'
target:
required: true
type: string
description: 'The base branch that these changes are being merged into'
dry_run:
required: false
default: false
type: boolean
latest:
required: false
default: false
type: boolean
secrets:
GRAFANA_DELIVERY_BOT_APP_ID:
required: true
GRAFANA_DELIVERY_BOT_APP_PEM:
required: true
workflow_dispatch:
inputs:
version:
type: string
required: true
description: 'Target release version (semver, git tag, branch or commit)'
target:
required: true
type: string
description: 'The base branch that these changes are being merged into'
dry_run:
required: false
default: false
type: boolean
latest:
required: false
default: false
type: boolean
permissions:
contents: write
pull-requests: write
jobs:
main:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: "Checkout Grafana repo"
uses: "actions/checkout@v4"
with:
ref: main
sparse-checkout: |
.github/workflows
CHANGELOG.md
fetch-depth: 0
fetch-tags: true
- name: "Configure git user"
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local --add --bool push.autoSetupRemote true
- name: "Create branch"
run: git checkout -b "changelog/${{ github.run_id }}/${{ inputs.version }}"
- name: "Generate changelog"
id: changelog
uses: ./.github/workflows/actions/changelog
with:
github_token: ${{ steps.generate_token.outputs.token }}
target: v${{ inputs.version }}
output_file: changelog_items.md
- name: "Patch CHANGELOG.md"
run: |
# Prepare CHANGELOG.md content with version delimiters
(
echo
echo "# ${{ inputs.version}} ($(date '+%F'))"
echo
cat changelog_items.md
) > CHANGELOG.part
# Check if a version exists in the changelog
if grep -q "<!-- ${{ inputs.version}} START" CHANGELOG.md ; then
# Replace the content between START and END delimiters
echo "Version ${{ inputs.version }} is found in the CHANGELOG.md, patching contents..."
sed -i -e '/${{ inputs.version }} START/,/${{ inputs.version }} END/{//!d;}' \
-e '/${{ inputs.version }} START/r CHANGELOG.part' CHANGELOG.md
else
# Prepend changelog part to the main changelog file
echo "Version ${{ inputs.version }} not found in the CHANGELOG.md"
(
echo "<!-- ${{ inputs.version }} START -->"
cat CHANGELOG.part
echo "<!-- ${{ inputs.version }} END -->"
cat CHANGELOG.md
) > CHANGELOG.tmp
mv CHANGELOG.tmp CHANGELOG.md
fi
git diff CHANGELOG.md
git add CHANGELOG.md
- name: "Commit changelog changes"
run: git commit --allow-empty -m "Update changelog" CHANGELOG.md
- name: "git push"
if: ${{ inputs.dry_run }} != true
run: git push
- name: "Create changelog PR"
run: >
gh pr create \
--dry-run=${{ inputs.dry_run }} \
--label "no-backport" \
--label "no-changelog" \
-B "${{ inputs.target }}" \
--title "Release: update changelog for ${{ inputs.version }}" \
--body "Changelog changes for release ${{ inputs.version }}"
env:
GH_TOKEN: ${{ steps.generate_token.outputs.token }}

View File

@@ -1,25 +1,46 @@
name: Create community release post
on:
workflow_call:
inputs:
version:
type: string
required: true
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
dry_run:
type: boolean
required: false
default: false
description: When enabled, this workflow will print a preview instead of creating an actual post.
secrets:
GRAFANA_MISC_STATS_API_KEY:
required: true
GRAFANABOT_FORUM_KEY:
required: true
workflow_dispatch:
inputs:
version:
type: string
required: true
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch, major.minor.patch-preview or major.minor.patch-preview<number> format. example: 7.4.3, 7.4.3-preview or 7.4.3-preview1'
dry_run:
type: boolean
required: false
default: false
description: When enabled, this workflow will print a preview instead of creating an actual post.
permissions:
contents: read
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run community-release (manually invoked)
uses: grafana/grafana-github-actions-go/community-release@main
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GITHUB_TOKEN }}
version: ${{ inputs.version }}
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
community_api_key: ${{ secrets.GRAFANABOT_FORUM_KEY }}
community_api_username: grafanabot
dry_run: ${{ inputs.dry_run }}

View File

@@ -1,27 +1,48 @@
name: Create or update GitHub release
on:
workflow_call:
inputs:
version:
required: true
description: Needs to match, exactly, the name of a milestone (NO v prefix)
type: string
latest:
required: false
default: false
description: Mark this release as latest (`1`) or not (`0`, default)
type: string
dry_run:
required: false
default: false
type: boolean
workflow_dispatch:
inputs:
version:
required: true
description: Needs to match, exactly, the name of a milestone (NO v prefix)
type: string
latest:
required: false
description: Mark this release as latest (`1`) or not (`0`, default)
type: string
dry_run:
required: false
default: false
type: boolean
permissions:
# contents: write allows the action(s) to create github releases
contents: write
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Create GitHub release (manually invoked)
uses: grafana/grafana-github-actions-go/github-release@main
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GITHUB_TOKEN }}
version: ${{ inputs.version }}
metrics_api_key: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
latest: ${{ inputs.latest }}
dry_run: ${{ inputs.dry_run }}

78
.github/workflows/release-comms.yml vendored Normal file
View File

@@ -0,0 +1,78 @@
# This workflow runs whenever the release PR is merged. It includes post-release communication processes like
# posting to slack, the website, community forums, etc.
# Only things that happen after a release is completed and all of the necessary code changes (like the changelog) are made.
name: Post-release
on:
workflow_dispatch:
inputs:
dry_run:
required: false
default: true
version:
required: true
latest:
type: bool
default: false
pull_request:
types:
- closed
branches:
- 'main'
- 'v*.*.*'
jobs:
setup:
if: ${{ github.event_name == 'workflow_dispatch' || (github.event.pull_request.merged == true && startsWith(github.head_ref, 'release/')) }}
name: Setup and establish latest
outputs:
version: ${{ steps.output.outputs.version }}
dry_run: ${{ steps.output.outputs.dry_run }}
latest: ${{ steps.output.outputs.latest }}
runs-on: ubuntu-latest
steps:
- if: ${{ github.event_name == 'workflow_dispatch' }}
run: |
echo setting up GITHUB_ENV for ${{ github.event_name }}
echo "VERSION=${{ inputs.version }}" >> $GITHUB_ENV
echo "DRY_RUN=${{ inputs.dry_run }}" >> $GITHUB_ENV
echo "LATEST=${{ inputs.latest }}" >> $GITHUB_ENV
- if: ${{ github.event.pull_request.merged == true && startsWith(github.head_ref, 'release/') }}
run: |
echo "VERSION=$(echo ${{ github.head_ref }} | sed -e 's/release\/.*\///g')" >> $GITHUB_ENV
echo "DRY_RUN=${{ contains(github.event.pull_request.labels.*.name, 'release/dry-run') }}" >> $GITHUB_ENV
echo "LATEST=${{ contains(github.event.pull_request.labels.*.name, 'release/latest') }}" >> $GITHUB_ENV
- id: output
run: |
echo "dry_run: $DRY_RUN"
echo "latest: $LATEST"
echo "version: $VERSION"
echo "dry_run=$DRY_RUN" >> "$GITHUB_OUTPUT"
echo "latest=$LATEST" >> "$GITHUB_OUTPUT"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
post_changelog_on_forum:
needs: setup
uses: ./.github/workflows/community-release.yml
secrets:
GRAFANA_MISC_STATS_API_KEY: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
GRAFANABOT_FORUM_KEY: ${{ secrets.GRAFANABOT_FORUM_KEY }}
with:
version: ${{ needs.setup.outputs.version }}
dry_run: ${{ needs.setup.outputs.dry_run == 'true' }}
create_github_release:
# a github release requires a git tag
# The github-release action retrieves the changelog using the /repos/grafana/grafana/contents/CHANGELOG.md API
# endpoint.
needs: setup
uses: ./.github/workflows/github-release.yml
with:
version: ${{ needs.setup.outputs.version }}
dry_run: ${{ needs.setup.outputs.dry_run == 'true' }}
latest: ${{ needs.setup.outputs.latest }}
post_on_slack:
needs: setup
runs-on: ubuntu-latest
steps:
- run: |
echo announce on slack that ${{ needs.setup.outputs.version }} has been released
echo dry run: ${{ needs.setup.outputs.dry_run }}

161
.github/workflows/release-pr.yml vendored Normal file
View File

@@ -0,0 +1,161 @@
# This workflow creates a new PR in Grafana which is triggered after a release is completed.
# It should include all code changes that are needed after a release is done. This includes the changelog update and
# version bumps, but could include more in the future.
# Please refrain from including any processes that do not result in code changes in this workflow. Instead, they should
# either be triggered in the release promotion process or in the release comms process (that is triggered by merging
# this PR).
name: Complete a Grafana release
on:
workflow_dispatch:
inputs:
version:
required: true
type: string
description: The version of Grafana that is being released
target:
required: true
type: string
description: The base branch that these changes are being merged into
backport:
required: false
type: string
description: Branch to backport these changes to
dry_run:
required: false
default: false
type: boolean
latest:
required: false
default: false
type: boolean
permissions:
contents: write
pull-requests: write
jobs:
push-changelog-to-main:
name: Create PR to main to update the changelog
uses: ./.github/workflows/changelog.yml
with:
version: ${{ inputs.version }}
latest: ${{ inputs.latest }}
dry_run: ${{ inputs.dry_run }}
target: main
secrets:
GRAFANA_DELIVERY_BOT_APP_ID: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
GRAFANA_DELIVERY_BOT_APP_PEM: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
create-prs:
name: Create Release PR
runs-on: ubuntu-latest
if: github.repository == 'grafana/grafana'
steps:
- name: Generate bot token
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Checkout Grafana
uses: actions/checkout@v4
with:
ref: ${{ inputs.target }}
fetch-depth: 0
fetch-tags: true
- name: Checkout Grafana (main)
uses: actions/checkout@v4
with:
ref: main
fetch-depth: '0'
fetch-tags: 'false'
path: .grafana-main
- name: Configure git user
run: |
git config --local user.name "github-actions[bot]"
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local --add --bool push.autoSetupRemote true
- name: Create branch
run: git checkout -b "release/${{ github.run_id }}/${{ inputs.version }}"
- name: Generate changelog
id: changelog
uses: ./.grafana-main/.github/workflows/actions/changelog
with:
github_token: ${{ steps.generate_token.outputs.token }}
target: v${{ inputs.version }}
output_file: changelog_items.md
- name: Patch CHANGELOG.md
run: |
# Prepare CHANGELOG.md content with version delimiters
(
echo
echo "# ${{ inputs.version}} ($(date '+%F'))"
echo
cat changelog_items.md
) > CHANGELOG.part
# Check if a version exists in the changelog
if grep -q "<!-- ${{ inputs.version}} START" CHANGELOG.md ; then
# Replace the content between START and END delimiters
echo "Version ${{ inputs.version }} is found in the CHANGELOG.md, patching contents..."
sed -i -e '/${{ inputs.version }} START/,/${{ inputs.version }} END/{//!d;}' \
-e '/${{ inputs.version }} START/r CHANGELOG.part' CHANGELOG.md
else
# Prepend changelog part to the main changelog file
echo "Version ${{ inputs.version }} not found in the CHANGELOG.md"
(
echo "<!-- ${{ inputs.version }} START -->"
cat CHANGELOG.part
echo "<!-- ${{ inputs.version }} END -->"
cat CHANGELOG.md
) > CHANGELOG.tmp
mv CHANGELOG.tmp CHANGELOG.md
fi
rm -f CHANGELOG.part changelog_items.md
git diff CHANGELOG.md
- name: Commit CHANGELOG.md changes
run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md
- name: Update package.json versions
uses: ./.grafana-main/pkg/build/actions/bump-version
with:
version: 'patch'
- name: Add package.json changes
run: |
git add package.json lerna.json yarn.lock packages public
git commit -m "Update version to ${{ inputs.version }}"
- name: Git push
if: ${{ inputs.dry_run }} != true
run: git push --set-upstream origin release/${{ github.run_id }}/${{ inputs.version }}
- name: Create PR without backports
if: "${{ inputs.backport == '' }}"
run: >
gh pr create \
$( [ "x${{ inputs.latest }}" == "xtrue" ] && printf %s '-l "release/latest"') \
-l "no-changelog" \
--dry-run=${{ inputs.dry_run }} \
-B "${{ inputs.target }}" \
--title "Release: ${{ inputs.version }}" \
--body "These code changes must be merged after a release is complete"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create PR with backports
if: "${{ inputs.backport != '' }}"
run: >
gh pr create \
$( [ "x${{ inputs.latest }}" == "xtrue" ] && printf %s '-l "release/latest"') \
-l "product-approved" \
-l "no-changelog" \
--dry-run=${{ inputs.dry_run }} \
-B "${{ inputs.target }}" \
--title "Release: ${{ inputs.version }}" \
--body "These code changes must be merged after a release is complete"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,3 +1,290 @@
<!-- 11.1.4 START -->
# 11.1.4 (2024-08-14)
### Bug fixes
- **Swagger:** Fixed CVE-2024-6837.
<!-- 11.1.4 END -->
<!-- 11.1.3 START -->
# 11.1.3 (2024-07-26)
### Bug fixes
- **RBAC**: Allow plugins to use scoped actions [#90946](https://github.com/grafana/grafana/pull/90946), [@gamab](https://github.com/gamab)
<!-- 11.1.3 END -->
<!-- 11.1.2 START -->
# 11.1.2 (2024-07-26)
<!-- 11.1.2 END -->
<!-- 11.1.1 START -->
# 11.1.1 (2024-07-25)
### Bug fixes
- **Alerting:** Skip fetching alerts for unsaved dashboards [#90074](https://github.com/grafana/grafana/pull/90074), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Skip loading alert rules for dashboards when disabled [#89905](https://github.com/grafana/grafana/pull/89905), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Support `utf8_strict_mode: false` in Mimir [#90148](https://github.com/grafana/grafana/pull/90148), [@gillesdemey](https://github.com/gillesdemey)
- **Scenes:** Fixes issue with panel repeat height calculation [#90232](https://github.com/grafana/grafana/pull/90232), [@kaydelaney](https://github.com/kaydelaney)
- **Table Panel:** Fix Image hover without datalinks [#89922](https://github.com/grafana/grafana/pull/89922), [@codeincarnate](https://github.com/codeincarnate)
- **Tempo:** Fix grpc streaming support over pdc-agent [#90055](https://github.com/grafana/grafana/pull/90055), [@taylor-s-dean](https://github.com/taylor-s-dean)
- **RBAC**: Allow plugins to use scoped actions [#90946](https://github.com/grafana/grafana/pull/90946), [@gamab](https://github.com/gamab)
<!-- 11.1.1 END -->
<!-- 11.1.0 START -->
# 11.1.0 (2024-06-21)
### Features and enhancements
- **Tracing:** Enable traces to profiles. [#88896](https://github.com/grafana/grafana/issues/88896), [@marefr](https://github.com/marefr)
- **Auth:** Add org to role mappings support to Google integration. [#88891](https://github.com/grafana/grafana/issues/88891), [@kalleep](https://github.com/kalleep)
- **Alerting:** Support AWS SNS integration in Grafana. [#88867](https://github.com/grafana/grafana/issues/88867), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Auth:** Add org to role mappings support to Okta integration. [#88770](https://github.com/grafana/grafana/issues/88770), [@mgyongyosi](https://github.com/mgyongyosi)
- **Auth:** Add org to role mappings support to Gitlab integration. [#88751](https://github.com/grafana/grafana/issues/88751), [@kalleep](https://github.com/kalleep)
- **Cloudwatch:** Use the metric map from grafana-aws-sdk. [#88733](https://github.com/grafana/grafana/issues/88733), [@iwysiu](https://github.com/iwysiu)
- **Alerting:** Add option to use Redis in cluster mode for Alerting HA. [#88696](https://github.com/grafana/grafana/issues/88696), [@fayzal-g](https://github.com/fayzal-g)
- **VizTooltip:** Allow setting the `maxWidth` option. [#88652](https://github.com/grafana/grafana/issues/88652), [@adela-almasan](https://github.com/adela-almasan)
- **Auth:** Add org to role mappings support to GitHub integration . [#88537](https://github.com/grafana/grafana/issues/88537), [@mgyongyosi](https://github.com/mgyongyosi)
- **CloudWatch:** Handle permissions error and update docs. [#88524](https://github.com/grafana/grafana/issues/88524), [@iwysiu](https://github.com/iwysiu)
- ** Alerting:** Correctly handle duplicating notification templates. [#88487](https://github.com/grafana/grafana/issues/88487), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Mute Timing service to prevent changing provenance status to none. [#88462](https://github.com/grafana/grafana/issues/88462), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Ensure we fetch AM config before saving new configuration. [#88458](https://github.com/grafana/grafana/issues/88458), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Remove regex reference in silences filter tooltip. [#88455](https://github.com/grafana/grafana/issues/88455), [@tomratcliffe](https://github.com/tomratcliffe)
- **Cloudwatch:** Update AWS DynamoDB Metrics. [#88418](https://github.com/grafana/grafana/issues/88418), [@LeonardoBoleli](https://github.com/LeonardoBoleli)
- **Alerting:** Make regex notification routing preview consistent with notification policies implementation. [#88413](https://github.com/grafana/grafana/issues/88413), [@tomratcliffe](https://github.com/tomratcliffe)
- **DateTimePicker:** Return cleared value in onChange. [#88377](https://github.com/grafana/grafana/issues/88377), [@Clarity-89](https://github.com/Clarity-89)
- **NodeGraph:** Add msagl and the layered layout code. [#88375](https://github.com/grafana/grafana/issues/88375), [@aocenas](https://github.com/aocenas)
- **API:** Add in theme support to /render/\* endpoint. [#88304](https://github.com/grafana/grafana/issues/88304), [@timlevett](https://github.com/timlevett)
- **Alerting:** Add filters for RouteGetRuleStatuses. [#88295](https://github.com/grafana/grafana/issues/88295), [@fayzal-g](https://github.com/fayzal-g)
- **Plugins:** Update the `plugin.json` schema with UI extensions meta-data. [#88288](https://github.com/grafana/grafana/issues/88288), [@leventebalogh](https://github.com/leventebalogh)
- **Auth:** Update SAML lib to improve HTTP-Post binding. [#88287](https://github.com/grafana/grafana/issues/88287), [@mgyongyosi](https://github.com/mgyongyosi)
- **Tempo:** Send current filters when retrieving tags for AdHocFilters. [#88270](https://github.com/grafana/grafana/issues/88270), [@joey-grafana](https://github.com/joey-grafana)
- **Tempo:** Support standard span convention. [#88268](https://github.com/grafana/grafana/issues/88268), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
- **ValueFormats:** Add Uruguay peso currency. [#88260](https://github.com/grafana/grafana/issues/88260), [@lfdominguez](https://github.com/lfdominguez)
- **DateTimePicker:** Add clearable prop. [#88215](https://github.com/grafana/grafana/issues/88215), [@Clarity-89](https://github.com/Clarity-89)
- **Correlations:** Enable feature toggle by default (on-prem). [#88208](https://github.com/grafana/grafana/issues/88208), [@ifrost](https://github.com/ifrost)
- **Stat:** Add percent change color modes. [#88205](https://github.com/grafana/grafana/issues/88205), [@drew08t](https://github.com/drew08t)
- **Logs:** Added multi-line display control to the "wrap lines" option. [#88144](https://github.com/grafana/grafana/issues/88144), [@matyax](https://github.com/matyax)
- **Tempo:** Update lezer autocomplete (histogram, quantile) and add missing functions. [#88131](https://github.com/grafana/grafana/issues/88131), [@joey-grafana](https://github.com/joey-grafana)
- **AnnotationsPlugin2:** Implement support for rectangular annotations in Heatmap. [#88107](https://github.com/grafana/grafana/issues/88107), [@adrapereira](https://github.com/adrapereira)
- **CodeEditor:** Improved styles when the code editor is loading. [#88102](https://github.com/grafana/grafana/issues/88102), [@NWRichmond](https://github.com/NWRichmond)
- **CloudWatch:** Add additional AWS/KinesisAnalytics metrics . [#88101](https://github.com/grafana/grafana/issues/88101), [@tristanburgess](https://github.com/tristanburgess)
- **Cloudwatch:** Add AWS/Events Metrics. [#88097](https://github.com/grafana/grafana/issues/88097), [@LeonardoBoleli](https://github.com/LeonardoBoleli)
- **Azure:** Basic Logs support. [#88025](https://github.com/grafana/grafana/issues/88025), [@aangelisc](https://github.com/aangelisc)
- **Dashboard:** Make dashboard search faster. [#88019](https://github.com/grafana/grafana/issues/88019), [@knuzhdin](https://github.com/knuzhdin)
- **Alerting:** Support custom API URL for PagerDuty integration. [#88007](https://github.com/grafana/grafana/issues/88007), [@gaurav1999](https://github.com/gaurav1999)
- **Alerting:** Add optional metadata via query param to silence GET requests. [#88000](https://github.com/grafana/grafana/issues/88000), [@JacobsonMT](https://github.com/JacobsonMT)
- **Store:** Enable adding extra middleware. [#87984](https://github.com/grafana/grafana/issues/87984), [@Clarity-89](https://github.com/Clarity-89)
- **Tempo:** Don't modify the passed time range when using timeShiftEnabled. [#87980](https://github.com/grafana/grafana/issues/87980), [@aocenas](https://github.com/aocenas)
- **InfluxDB:** Introduce maxDataPoints setting for flux variable query editor. [#87935](https://github.com/grafana/grafana/issues/87935), [@itsmylife](https://github.com/itsmylife)
- **Alerting:** New list view UI Part 1. [#87907](https://github.com/grafana/grafana/issues/87907), [@gillesdemey](https://github.com/gillesdemey)
- **NodeGraph:** Remove msagl lib and layered layout option. [#87905](https://github.com/grafana/grafana/issues/87905), [@aocenas](https://github.com/aocenas)
- **InfluxDB:** Introduce custom variable support. [#87903](https://github.com/grafana/grafana/issues/87903), [@itsmylife](https://github.com/itsmylife)
- **Gops:** Add tracking for data source check. [#87886](https://github.com/grafana/grafana/issues/87886), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **AzureMonitor:** Prometheus exemplars support . [#87742](https://github.com/grafana/grafana/issues/87742), [@aangelisc](https://github.com/aangelisc)
- **Feature Management:** Move awsDatasourcesNewFormStyling to GA. [#87696](https://github.com/grafana/grafana/issues/87696), [@idastambuk](https://github.com/idastambuk)
- **TimeRangePicker:** Announce to screen reader when time range is updated. [#87692](https://github.com/grafana/grafana/issues/87692), [@tskarhed](https://github.com/tskarhed)
- **Alerting:** Template selector in contact points form. [#87689](https://github.com/grafana/grafana/issues/87689), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Azure:** Load custom clouds from ini file. [#87667](https://github.com/grafana/grafana/issues/87667), [@JonCole](https://github.com/JonCole)
- **Loki:** Kick start your query now applies templates to the current query. [#87658](https://github.com/grafana/grafana/issues/87658), [@matyax](https://github.com/matyax)
- **Elasticsearch:** Queries no longer executed while typing. [#87652](https://github.com/grafana/grafana/issues/87652), [@matyax](https://github.com/matyax)
- **Alerting:** Add options to configure TLS for HA using Redis. [#87567](https://github.com/grafana/grafana/issues/87567), [@fayzal-g](https://github.com/fayzal-g)
- **VizLegend:** Represent line style in series legend and tooltip. [#87558](https://github.com/grafana/grafana/issues/87558), [@domasx2](https://github.com/domasx2)
- **FeatureBadge:** Update FeatureBadge to support current release stages. [#87555](https://github.com/grafana/grafana/issues/87555), [@ivanahuckova](https://github.com/ivanahuckova)
- **Logs:** Infinite scrolling in Explore enabled by default. [#87493](https://github.com/grafana/grafana/issues/87493), [@matyax](https://github.com/matyax)
- **Plugins:** Improve frontend loader cache. [#87488](https://github.com/grafana/grafana/issues/87488), [@jackw](https://github.com/jackw)
- **Chore:** Upgrade go from 1.21.0 to 1.21.10. [#87479](https://github.com/grafana/grafana/issues/87479), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Chore:** Upgrade go to 1.22.3. [#87463](https://github.com/grafana/grafana/issues/87463), [@stephaniehingtgen](https://github.com/stephaniehingtgen)
- **Team:** Add an endpoint for bulk team membership updates. [#87441](https://github.com/grafana/grafana/issues/87441), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Flamegraph:** Add collapse and expand group buttons to toolbar. [#87395](https://github.com/grafana/grafana/issues/87395), [@aocenas](https://github.com/aocenas)
- **OIDC:** Support Generic OAuth org to role mappings. [#87394](https://github.com/grafana/grafana/issues/87394), [@sathieu](https://github.com/sathieu)
- **Search:** Announce to screen reader when query returns no result. [#87382](https://github.com/grafana/grafana/issues/87382), [@tskarhed](https://github.com/tskarhed)
- **Logs:** Added support for numeric log levels. [#87366](https://github.com/grafana/grafana/issues/87366), [@nailgun](https://github.com/nailgun)
- **Prometheus:** Place custom inputs first when using regex filter values in the query builder. [#87360](https://github.com/grafana/grafana/issues/87360), [@NWRichmond](https://github.com/NWRichmond)
- **Alerting:** Remove requirement for datasource query on rule read. [#87349](https://github.com/grafana/grafana/issues/87349), [@rwwiv](https://github.com/rwwiv)
- **Alerting:** Add RBAC logic for silences creation. [#87322](https://github.com/grafana/grafana/issues/87322), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Update silences creation to support `__alert_rule_uid__` and move into drawer. [#87320](https://github.com/grafana/grafana/issues/87320), [@tomratcliffe](https://github.com/tomratcliffe)
- **Flamegraph:** Add diff mode color legend. [#87319](https://github.com/grafana/grafana/issues/87319), [@aocenas](https://github.com/aocenas)
- **Dashboard:** Keyboard and mouse panel shortcuts improvement. [#87317](https://github.com/grafana/grafana/issues/87317), [@tskarhed](https://github.com/tskarhed)
- **PanelHeaderCorner:** Remove font-awesome icons. [#87303](https://github.com/grafana/grafana/issues/87303), [@Clarity-89](https://github.com/Clarity-89)
- **Alerting:** Add OAuth2 to HTTP settings for vanilla Alertmanager / Mimir. [#87272](https://github.com/grafana/grafana/issues/87272), [@gillesdemey](https://github.com/gillesdemey)
- **Plugins:** Allow apps to expose components. Update the extensions API. [#87236](https://github.com/grafana/grafana/issues/87236), [@leventebalogh](https://github.com/leventebalogh)
- **Plugins:** Catalog to show all plugins by default. [#87168](https://github.com/grafana/grafana/issues/87168), [@sympatheticmoose](https://github.com/sympatheticmoose)
- **Prometheus:** Ensure values in metric selector are visible. [#87150](https://github.com/grafana/grafana/issues/87150), [@NWRichmond](https://github.com/NWRichmond)
- **Select:** Add data-testid to Input. [#87105](https://github.com/grafana/grafana/issues/87105), [@Clarity-89](https://github.com/Clarity-89)
- **Prometheus:** Add native histogram types metric explorer to allow filter by type. [#87090](https://github.com/grafana/grafana/issues/87090), [@bohandley](https://github.com/bohandley)
- **Prometheus:** Add hints for native histograms. [#87017](https://github.com/grafana/grafana/issues/87017), [@bohandley](https://github.com/bohandley)
- **Alerting:** Reduce number of request fetching rules in the dashboard view using rtkq. [#86991](https://github.com/grafana/grafana/issues/86991), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Plugins:** Make grafana-com API URL usage consistent. [#86920](https://github.com/grafana/grafana/issues/86920), [@oshirohugo](https://github.com/oshirohugo)
- **Stack:** Add size props. [#86900](https://github.com/grafana/grafana/issues/86900), [@Clarity-89](https://github.com/Clarity-89)
- **Table Panel:** Enable Text Wrapping. [#86895](https://github.com/grafana/grafana/issues/86895), [@codeincarnate](https://github.com/codeincarnate)
- **Alerting:** Get grafana-managed alert rule by UID. [#86845](https://github.com/grafana/grafana/issues/86845), [@fayzal-g](https://github.com/fayzal-g)
- **Cloudwatch:** Add Kendra metrics. [#86809](https://github.com/grafana/grafana/issues/86809), [@scottschreckengaust](https://github.com/scottschreckengaust)
- **Auth:** Added support to filter for parent teams in GitHub connector's team membership filter. [#86754](https://github.com/grafana/grafana/issues/86754), [@wasim-nihal](https://github.com/wasim-nihal)
- **Alerting:** Hook up GMA silence APIs to new authentication handler. [#86625](https://github.com/grafana/grafana/issues/86625), [@JacobsonMT](https://github.com/JacobsonMT)
- **GeoMap:** Pan and zoom keyboard support. [#86573](https://github.com/grafana/grafana/issues/86573), [@tskarhed](https://github.com/tskarhed)
- **Alerting:** Optimize rule status gathering APIs when a limit is applied. [#86568](https://github.com/grafana/grafana/issues/86568), [@stevesg](https://github.com/stevesg)
- **Plugins:** Add an auto-generated part to the `plugin.json` schema. [#86520](https://github.com/grafana/grafana/issues/86520), [@leventebalogh](https://github.com/leventebalogh)
- **Loki/Prometheus Query Editor:** Disabled cmd/ctrl+f keybinding within the editor. [#86418](https://github.com/grafana/grafana/issues/86418), [@matyax](https://github.com/matyax)
- **Grafana packages:** Remove E2E workspace. [#86416](https://github.com/grafana/grafana/issues/86416), [@sunker](https://github.com/sunker)
- **RefreshPicker:** Change running state to be less distracting . [#86405](https://github.com/grafana/grafana/issues/86405), [@torkelo](https://github.com/torkelo)
- **Prometheus:** Cancellable label values requests. [#86403](https://github.com/grafana/grafana/issues/86403), [@NWRichmond](https://github.com/NWRichmond)
- **SQLStore:** Improve recursive CTE support detection. [#86397](https://github.com/grafana/grafana/issues/86397), [@mildwonkey](https://github.com/mildwonkey)
- **CloudMonitoring:** Ensure variables can be used in all variable queries. [#86377](https://github.com/grafana/grafana/issues/86377), [@aangelisc](https://github.com/aangelisc)
- **Common labels/displayed fields:** Show label names with values. [#86345](https://github.com/grafana/grafana/issues/86345), [@matyax](https://github.com/matyax)
- **AuthZ:** Further protect admin endpoints. [#86285](https://github.com/grafana/grafana/issues/86285), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Explore:** Deprecate local storage singular datasource key. [#86250](https://github.com/grafana/grafana/issues/86250), [@gelicia](https://github.com/gelicia)
- **Loki:** Add label filters after label_format if present. [#86124](https://github.com/grafana/grafana/issues/86124), [@matyax](https://github.com/matyax)
- **Alerting:** Immutable plugin rules and alerting plugins extensions. [#86042](https://github.com/grafana/grafana/issues/86042), [@konrad147](https://github.com/konrad147)
- **Tempo:** Group by template vars. [#86022](https://github.com/grafana/grafana/issues/86022), [@joey-grafana](https://github.com/joey-grafana)
- **Short Links:** Add setting for changing expiration time. [#86003](https://github.com/grafana/grafana/issues/86003), [@gelicia](https://github.com/gelicia)
- **Prometheus:** Add native histogram functions. [#86002](https://github.com/grafana/grafana/issues/86002), [@bohandley](https://github.com/bohandley)
- **Plugins:** Removed feature toggle pluginsDynamicAngularDetectionPatterns. [#85956](https://github.com/grafana/grafana/issues/85956), [@xnyo](https://github.com/xnyo)
- **Plugins:** Removed feature toggle enablePluginsTracingByDefault. [#85953](https://github.com/grafana/grafana/issues/85953), [@xnyo](https://github.com/xnyo)
- **Tracing:** Allow otel service name and attributes to be overridden from env. [#85937](https://github.com/grafana/grafana/issues/85937), [@marefr](https://github.com/marefr)
- **PanelChrome:** Improve accessibility landmark markup. [#85863](https://github.com/grafana/grafana/issues/85863), [@tskarhed](https://github.com/tskarhed)
- **Gops:** Add configuration tracker on the existing IRM page. [#85838](https://github.com/grafana/grafana/issues/85838), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **CloudWatch:** Add additional Glue metrics. [#85798](https://github.com/grafana/grafana/issues/85798), [@tristanburgess](https://github.com/tristanburgess)
- **CloudWatch:** Add labels for Metric Query type queries. [#85766](https://github.com/grafana/grafana/issues/85766), [@kevinwcyu](https://github.com/kevinwcyu)
- **Util:** Support parsing and splitting strings enclosed in quotes in util.SplitString. [#85735](https://github.com/grafana/grafana/issues/85735), [@mgyongyosi](https://github.com/mgyongyosi)
- **Loki:** Handle `X-Scope-OrgID` and tenant IDs. [#85726](https://github.com/grafana/grafana/issues/85726), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
- **CloudWatch:** Add a Performance Insights and other missing metrics to aws/rds. [#85680](https://github.com/grafana/grafana/issues/85680), [@kgeckhart](https://github.com/kgeckhart)
- **Prometheus:** Respect dashboard queries when querying ad hoc filter labels. [#85674](https://github.com/grafana/grafana/issues/85674), [@itsmylife](https://github.com/itsmylife)
- **Pyroscope:** Add adhoc filters support. [#85601](https://github.com/grafana/grafana/issues/85601), [@aocenas](https://github.com/aocenas)
- **Table Panel:** Update background colors to respect transparency. [#85565](https://github.com/grafana/grafana/issues/85565), [@codeincarnate](https://github.com/codeincarnate)
- **Canvas:** Add support for line animation. [#85556](https://github.com/grafana/grafana/issues/85556), [@adela-almasan](https://github.com/adela-almasan)
- **Reducers:** Add in basic Percentile Support. [#85554](https://github.com/grafana/grafana/issues/85554), [@timlevett](https://github.com/timlevett)
- **Storage:** Watch tests. [#85496](https://github.com/grafana/grafana/issues/85496), [@DanCech](https://github.com/DanCech)
- **Plugins:** Show update buttons when instance version is different. [#85486](https://github.com/grafana/grafana/issues/85486), [@oshirohugo](https://github.com/oshirohugo)
- **Tempo:** Always use time range even if timeShiftEnabled is false. [#85477](https://github.com/grafana/grafana/issues/85477), [@ogxd](https://github.com/ogxd)
- **Alerting:** Gops labels integration. [#85467](https://github.com/grafana/grafana/issues/85467), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Explore:** Set X-Cache-Skip to true for query requests. [#85460](https://github.com/grafana/grafana/issues/85460), [@Elfo404](https://github.com/Elfo404)
- **Explore:** Make Explore breadcrumb clickable. [#85437](https://github.com/grafana/grafana/issues/85437), [@Elfo404](https://github.com/Elfo404)
- **Prometheus:** Fuzzy search for metric names in Code Mode. [#85396](https://github.com/grafana/grafana/issues/85396), [@NWRichmond](https://github.com/NWRichmond)
- **Storage Api:** Adds traces. [#85391](https://github.com/grafana/grafana/issues/85391), [@owensmallwood](https://github.com/owensmallwood)
- **Storage Api:** Add metrics. [#85316](https://github.com/grafana/grafana/issues/85316), [@owensmallwood](https://github.com/owensmallwood)
- **Alerting:** Improve paused alert visibility and allow pausing/resuming from alert list view. [#85116](https://github.com/grafana/grafana/issues/85116), [@tomratcliffe](https://github.com/tomratcliffe)
- **CloudWatch:** Clarify match exact tooltip and docs. [#85095](https://github.com/grafana/grafana/issues/85095), [@iwysiu](https://github.com/iwysiu)
- **Alerting:** Evaluation quick buttons. [#85010](https://github.com/grafana/grafana/issues/85010), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Add state history polling interval. [#84837](https://github.com/grafana/grafana/issues/84837), [@gillesdemey](https://github.com/gillesdemey)
- **CloudWatch:** Improve metric label parsing. [#84835](https://github.com/grafana/grafana/issues/84835), [@iwysiu](https://github.com/iwysiu)
- **Alerting:** Improve template preview. [#84798](https://github.com/grafana/grafana/issues/84798), [@konrad147](https://github.com/konrad147)
- **Alerting:** New settings page. [#84501](https://github.com/grafana/grafana/issues/84501), [@gillesdemey](https://github.com/gillesdemey)
- **Explore:** Move Query History to be screen wide. [#84321](https://github.com/grafana/grafana/issues/84321), [@gelicia](https://github.com/gelicia)
- **MixedDataSource:** Support multi value data source variable that issues a query to each data source. [#83356](https://github.com/grafana/grafana/issues/83356), [@torkelo](https://github.com/torkelo)
- **PluginExtensions:** Make the extensions registry reactive. [#83085](https://github.com/grafana/grafana/issues/83085), [@mckn](https://github.com/mckn)
- **Loki:** Use label/&lt;name&gt;/values API instead of series API for label values discovery. [#83044](https://github.com/grafana/grafana/issues/83044), [@yuri-rs](https://github.com/yuri-rs)
- **Tempo:** Escape backslash in span name for promsql query. [#83024](https://github.com/grafana/grafana/issues/83024), [@ttshivers](https://github.com/ttshivers)
- **Alerting:** Export and provisioning rules into subfolders. [#77450](https://github.com/grafana/grafana/issues/77450), [@papagian](https://github.com/papagian)
- **Notification banner:** Integrate with RBAC. (Enterprise)
- **Auth:** Assign users using SAML to AutoAssignOrgRole if no role matches. (Enterprise)
- **Notification banner:** Display preview. (Enterprise)
- **Auth:** Add None and Viewer roles as options to SAML UI config. (Enterprise)
- **SAML:** Add nonce to the generated script tag. (Enterprise)
- **Notification banner:** Add settings page. (Enterprise)
- **Notification banner:** Add API client. (Enterprise)
- **Chore:** Upgrade go version to 1.22.3. (Enterprise)
- **Auditing:** Correctly parse the URL for auditing through Loki. (Enterprise)
- **Auditlog:** Refactor action to post-action in default auditlogging. (Enterprise)
- **Plugins:** Make grafana-com API URL usage consistent. (Enterprise)
- **Plugins:** Make grafana-com API URL usage consistent. (Enterprise)
- **Caching:** Implement mtls-enabled memcached integration. (Enterprise)
- **OpenAPI:** Document the datasource caching API. (Enterprise)
### Bug fixes
- **Alerting:** Fix go-swagger extraction and several embedded types from Alertmanager in Swagger docs. [#88879](https://github.com/grafana/grafana/issues/88879), [@alexweav](https://github.com/alexweav)
- **DashboardScene:** Fixes inspect with transforms issue. [#88843](https://github.com/grafana/grafana/issues/88843), [@torkelo](https://github.com/torkelo)
- **Elasticsearch:** Fix stripping of trailing slashes in datasource URLs. [#88779](https://github.com/grafana/grafana/issues/88779), [@ivanahuckova](https://github.com/ivanahuckova)
- **Loki:** Fix editor history in wrong order. [#88666](https://github.com/grafana/grafana/issues/88666), [@svennergr](https://github.com/svennergr)
- **Cli:** Fix bug where password is hashed twice. [#88589](https://github.com/grafana/grafana/issues/88589), [@kalleep](https://github.com/kalleep)
- **AzureMonitor:** Fix bug detecting app insights queries. [#88572](https://github.com/grafana/grafana/issues/88572), [@aangelisc](https://github.com/aangelisc)
- **SSE:** Fix threshold unmarshal to avoid panic. [#88521](https://github.com/grafana/grafana/issues/88521), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Dashboard:** Fix Variables query hides fields with non-supported datasources. [#88516](https://github.com/grafana/grafana/issues/88516), [@axelavargas](https://github.com/axelavargas)
- **Explore:** Align time filters properly to day boundaries in query history. [#88498](https://github.com/grafana/grafana/issues/88498), [@aocenas](https://github.com/aocenas)
- **Access Control:** Clean up permissions for deprovisioned data sources. [#88483](https://github.com/grafana/grafana/issues/88483), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Dashboards:** Correctly display Admin access to dashboards in the UI. [#88439](https://github.com/grafana/grafana/issues/88439), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **LibraryPanels/RBAC:** Ignore old folder permission check when deleting/patching lib panel. [#88422](https://github.com/grafana/grafana/issues/88422), [@kaydelaney](https://github.com/kaydelaney)
- **LogsTable:** Fix default sort by time. [#88398](https://github.com/grafana/grafana/issues/88398), [@svennergr](https://github.com/svennergr)
- **Dashboards:** Fix regression when deleting folder. [#88311](https://github.com/grafana/grafana/issues/88311), [@papagian](https://github.com/papagian)
- **Docker:** Fix renderer plugin in custom Dockerfile. [#88223](https://github.com/grafana/grafana/issues/88223), [@AgnesToulet](https://github.com/AgnesToulet)
- **Alerting:** Fix rules deleting when reordering whilst filtered. [#88221](https://github.com/grafana/grafana/issues/88221), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Fix "copy link" not including full URL. [#88210](https://github.com/grafana/grafana/issues/88210), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Fix typo in JSON response for rule export. [#88028](https://github.com/grafana/grafana/issues/88028), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Fix scheduler to sort rules before evaluation. [#88006](https://github.com/grafana/grafana/issues/88006), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **CloudMonitoring:** Fix query type selection issue. [#87990](https://github.com/grafana/grafana/issues/87990), [@aangelisc](https://github.com/aangelisc)
- **Alerting:** Assume built-in AM is receiving alerts in case of not having admin config. [#87893](https://github.com/grafana/grafana/issues/87893), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **DashboardScene:** Skip panel repeats when values are the same. [#87788](https://github.com/grafana/grafana/issues/87788), [@torkelo](https://github.com/torkelo)
- **Alerting:** Fix deleting rules when silencing/resuming rule from a panel alert tab. [#87710](https://github.com/grafana/grafana/issues/87710), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Dashboards:** Don't set dashboard creator/updater if the action is done by an API key. [#87704](https://github.com/grafana/grafana/issues/87704), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Elasticsearch:** Fix setting of default maxConcurrentShardRequests. [#87703](https://github.com/grafana/grafana/issues/87703), [@ivanahuckova](https://github.com/ivanahuckova)
- **Graphite:** Fix alignment of elements in the query editor. [#87662](https://github.com/grafana/grafana/issues/87662), [@NWRichmond](https://github.com/NWRichmond)
- **DashboardScene:** Fixing major row repeat issues. [#87539](https://github.com/grafana/grafana/issues/87539), [@torkelo](https://github.com/torkelo)
- **Alerting:** Do not store series values from past evaluations in state manager for no reason. [#87525](https://github.com/grafana/grafana/issues/87525), [@alexweav](https://github.com/alexweav)
- **RBAC:** Update role picker in team page, fix a bug with roles being removed upon team setting update. [#87519](https://github.com/grafana/grafana/issues/87519), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Transformations:** Fix true inner join in `joinByField` transformation. [#87409](https://github.com/grafana/grafana/issues/87409), [@baldm0mma](https://github.com/baldm0mma)
- **Alerting:** Do not retry rule evaluations with "input data must be a wide series but got type long" style errors. [#87343](https://github.com/grafana/grafana/issues/87343), [@alexweav](https://github.com/alexweav)
- **Tempo:** Fix sorting for nested tables. [#87214](https://github.com/grafana/grafana/issues/87214), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
- **Cloudwatch Logs:** Fix bug where we did not return errors to user. [#87190](https://github.com/grafana/grafana/issues/87190), [@sarahzinger](https://github.com/sarahzinger)
- **CloudWatch:** Fix apostrophes in dimension values not being escaped. [#87182](https://github.com/grafana/grafana/issues/87182), [@kevinwcyu](https://github.com/kevinwcyu)
- **AnnotationList:** Fix link for annotation with no panel or dashboard. [#87048](https://github.com/grafana/grafana/issues/87048), [@tskarhed](https://github.com/tskarhed)
- **Graphite:** Fix splitting expressions in tag_value with template variables. [#86958](https://github.com/grafana/grafana/issues/86958), [@EduardZaydler](https://github.com/EduardZaydler)
- **SQL Query Editor:** Fix label-for IDs, associate "Table" label. [#86944](https://github.com/grafana/grafana/issues/86944), [@timo](https://github.com/timo)
- **SSO:** Add SSO settings to secrets migrator. [#86913](https://github.com/grafana/grafana/issues/86913), [@dmihai](https://github.com/dmihai)
- **Plugins:** Preserve trailing slash in plugin proxy. [#86859](https://github.com/grafana/grafana/issues/86859), [@marefr](https://github.com/marefr)
- **TimeSeries:** Improve keyboard focus and fix spacebar override. [#86848](https://github.com/grafana/grafana/issues/86848), [@tskarhed](https://github.com/tskarhed)
- **NodeGraph:** Use values from fixedX/fixedY column for layout. [#86643](https://github.com/grafana/grafana/issues/86643), [@timo](https://github.com/timo)
- **Alerting:** Prevent simplified routing zero duration GroupInterval and RepeatInterval. [#86561](https://github.com/grafana/grafana/issues/86561), [@JacobsonMT](https://github.com/JacobsonMT)
- **Loki:** Fix setting of tenant ID. [#86433](https://github.com/grafana/grafana/issues/86433), [@fabrizio-grafana](https://github.com/fabrizio-grafana)
- **DashboardScene:** Fixes checkbox orienation in save forms. [#86408](https://github.com/grafana/grafana/issues/86408), [@torkelo](https://github.com/torkelo)
- **CloudMonitoring:** Correctly interpolate multi-valued template variables in PromQL queries. [#86391](https://github.com/grafana/grafana/issues/86391), [@aangelisc](https://github.com/aangelisc)
- **Expressions:** Fix erroneous sorting of metrics and expressions. [#86372](https://github.com/grafana/grafana/issues/86372), [@NWRichmond](https://github.com/NWRichmond)
- **CloudMonitoring:** Allow a custom group by value. [#86288](https://github.com/grafana/grafana/issues/86288), [@aangelisc](https://github.com/aangelisc)
- **DataLinks:** Fixes datalinks with onClick and variables in url not being interpolated . [#86253](https://github.com/grafana/grafana/issues/86253), [@gng0](https://github.com/gng0)
- **I18N:** Fix untranslated descriptions in data source picker. [#86216](https://github.com/grafana/grafana/issues/86216), [@joshhunt](https://github.com/joshhunt)
- **RBAC:** Fix global role deletion in hosted Grafana. [#85980](https://github.com/grafana/grafana/issues/85980), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **Expression:** Fix a bug of the display name of the threshold expression result. [#85912](https://github.com/grafana/grafana/issues/85912), [@lingyufei](https://github.com/lingyufei)
- **Alerting:** Fix incorrect display of pending period in alert rule form. [#85893](https://github.com/grafana/grafana/issues/85893), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Fix redirect after saving a notification template. [#85667](https://github.com/grafana/grafana/issues/85667), [@tomratcliffe](https://github.com/tomratcliffe)
- **Alerting:** Get oncall metada only when we have alert manager configuration data. [#85622](https://github.com/grafana/grafana/issues/85622), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Return better error for invalid time range on alert queries. [#85611](https://github.com/grafana/grafana/issues/85611), [@alexweav](https://github.com/alexweav)
- **CloudWatch:** Fix SageMaker MBP namespace typo. [#85557](https://github.com/grafana/grafana/issues/85557), [@tristanburgess](https://github.com/tristanburgess)
- **Alerting:** Only append `/alertmanager` when sending alerts to mimir targets if not already present. [#85543](https://github.com/grafana/grafana/issues/85543), [@alexweav](https://github.com/alexweav)
- **Alerting:** Set mimir implementation in jsonData by default when creating a new a…. [#85513](https://github.com/grafana/grafana/issues/85513), [@soniaAguilarPeiron](https://github.com/soniaAguilarPeiron)
- **Alerting:** Persist silence state immediately on Create/Delete . [#84705](https://github.com/grafana/grafana/issues/84705), [@JacobsonMT](https://github.com/JacobsonMT)
- **NodeGraph:** Fix configuring arc colors with mixed case field names. [#84609](https://github.com/grafana/grafana/issues/84609), [@timo](https://github.com/timo)
- **Auditing:** Fix Loki URL parsing. (Enterprise)
- **Provisioning:** Add override option to role provisioning. (Enterprise)
- **Alerting:** Check pointers before use to prevent segfault. (Enterprise)
- **Reporting:** Fix UI errors when using linked variables. (Enterprise)
### Breaking changes
Users that provision alert rules into folders whose titles contain slashes from now on they should escape them:
eg. if an alert group contains:
`folder: folder_with_/_in_title`
it should become:
`folder: folder_with_\/_in_title` Issue [#77450](https://github.com/grafana/grafana/issues/77450)
### Deprecations
The `grafana.explore.richHistory.activeDatasourceOnly` local storage key is deprecated, and will be removed in Grafana 12. You may experience loss of your Explore query history or autocomplete data if you upgrade to Grafana 12 under 2 weeks of Grafana 11.1. Actual risk of data loss depends on your query history retention policy. Issue [#86250](https://github.com/grafana/grafana/issues/86250)
### Plugin development fixes & changes
- **Select:** Change `Select` group headers to always be visible. [#88178](https://github.com/grafana/grafana/issues/88178), [@ashharrison90](https://github.com/ashharrison90)
- **Select:** Ensure virtualised menu scrolls active option into view when using arrow keys. [#87743](https://github.com/grafana/grafana/issues/87743), [@ashharrison90](https://github.com/ashharrison90)
- **Switch:** Improve disabled active state. [#87694](https://github.com/grafana/grafana/issues/87694), [@ashharrison90](https://github.com/ashharrison90)
- **Button:** Allow disabled button to still be focused. [#87516](https://github.com/grafana/grafana/issues/87516), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
- **GrafanaUI:** Add `tabular` prop to Text component for tabular numbers. [#87440](https://github.com/grafana/grafana/issues/87440), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
<!-- 11.1.0 END -->
<!-- 11.0.0 START -->
# 11.0.0 (2024-05-14)

View File

@@ -6,6 +6,15 @@
# [Semantic versioning](https://semver.org/) is used to help the reader identify the significance of changes.
# Changes are relevant to this script and the support docs.mk GNU Make interface.
#
# ## 8.0.1 (2024-07-01)
#
# ### Fixed
#
# - Update log suppression to catch new format of website /docs/ homepage REF_NOT_FOUND warnings.
#
# These warnings are related to missing some pages during the build that are required for the /docs/ homepage.
# They were previously suppressed but the log format changed and without this change they reappear in the latest builds.
#
# ## 8.0.0 (2024-05-28)
#
# ### Changed
@@ -905,7 +914,7 @@ EOF
-e '/Press Ctrl+C to stop/ d' \
-e '/make/ d' \
-e '/WARNING: The manual_mount source directory/ d' \
-e '/docs\/_index.md .* not found/ d'
-e '/"docs\/_index.md" not found/d'
fi
;;
esac

View File

@@ -81,8 +81,8 @@ title: Grafana documentation
<h4>Provisioning</h4>
<p>Learn how to automate your Grafana configuration.</p>
</a>
<a href="{{< relref "whatsnew/whats-new-in-v11-0/" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What's new in v11.0</h4>
<a href="{{< relref "whatsnew/whats-new-in-v11-1/" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What's new in v11.1</h4>
<p>Explore the features and enhancements in the latest release.</p>
</a>

View File

@@ -49,7 +49,7 @@ To follow these instructions, you need at least one of the following:
### Steps
To create an API, complete the following steps:
To create an API key, complete the following steps:
1. Sign in to Grafana.
1. Click **Administration** in the left-side menu, **Users and access**, and select **API Keys**.

View File

@@ -42,4 +42,4 @@ We recommend that you remove all permissions for roles and teams that are not re
1. Navigate to Data Source Permissions
- Go to the permissions tab of the newly created Loki data source. Here, you'll find the Team LBAC rules section.
For more information on how to setup Team LBAC rules for a Loki data source, [Add Team LBAC rules]({{< relref "./../create-teamlbac-rules/" >}}).
For more information on how to setup Team LBAC rules for a Loki data source, refer to [Create Team LBAC rules for the Loki data source](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/data-source-management/teamlbac/create-teamlbac-rules/).

View File

@@ -50,6 +50,8 @@ To edit a feature toggle, follow these steps:
1. Navigate to the list of feature toggles and select your feature state overrides.
1. Click **Save changes** and wait for your Grafana instance to restart with the updated feature toggles.
{{% admonition type="note" %}}
{{< admonition type="note" >}}
If you don't have the feature toggle management page, enable the `featureToggleAdminPage` feature toggle.
Editing feature toggles with the feature toggle management page is available now in all tiers of [Grafana Cloud](/docs/grafana-cloud/).
{{% /admonition %}}
{{< /admonition >}}

View File

@@ -269,9 +269,8 @@ The _HTTP\*_ tag denotes data sources that communicate using the HTTP protocol,
#### Custom HTTP headers for data sources
Data sources managed by Grafanas provisioning can be configured to add HTTP headers to all requests
going to that data source. The header name is configured in the `jsonData` field and the header value should be
configured in `secureJsonData`.
Data sources managed with provisioning can be configured to add HTTP headers to all requests.
The header name is configured in the `jsonData` field and the header value is configured in `secureJsonData`.
```yaml
apiVersion: 1

View File

@@ -47,7 +47,7 @@ The following list contains role-based access control actions.
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.silences:create` | `folders:*`<br>`folders:uid:*` | Create rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read general and rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read all general silences and rule-specific silences in a folder and its subfolders. |
| `alert.silences:write` | `folders:*`<br>`folders:uid:*` | Update and expire rule-specific silences in a folder and its subfolders. |
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and datasource are not required. |
| `alert.provisioning.secrets:read` | n/a | Same as `alert.provisioning:read` plus ability to export resources with decrypted secrets. |

View File

@@ -16,7 +16,7 @@ weight: 114
hero:
title: Grafana Alerting
level: 1
image: /media/docs/alerting/alerting-bell-icon.png
image: /media/docs/grafana-cloud/alerting-and-irm/grafana-icon-alerting.svg
width: 100
height: 100
description: Grafana Alerting allows you to learn about problems in your systems moments after they occur.

View File

@@ -83,11 +83,8 @@ Grafana-managed rules are the most flexible alert rule type. They allow you to c
Multiple alert instances can be created as a result of one alert rule (also known as a multi-dimensional alerting).
{{% admonition type="note" %}}
For Grafana Cloud, there are limits on how many Grafana-managed alert rules you can create. These are as follows:
- Free: 100 alert rules
- Paid: 2000 alert rules
{{% /admonition %}}
For Grafana Cloud, you can create 100 free Grafana-managed alert rules.
{{% /admonition %}}
Grafana managed alert rules can only be edited or deleted by users with Edit permissions for the folder storing the rules.
@@ -256,7 +253,7 @@ You can configure the alert instance state when its evaluation returns no data:
| No Data configuration | Description |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| No Data | The default option. Sets alert instance state to `No data`. <br/> The alert rule also creates a new alert instance `DatasourceNoData` with the name and UID of the alert rule, and UID of the datasource that returned no data as labels. |
| Alerting | Sets alert instance state to `Alerting`. It waits until the [pending period](ref:pending-period) has finished. |
| Alerting | Sets alert instance state to `Alerting`. It transitions from `Pending` to `Alerting` after the [pending period](ref:pending-period) has finished. |
| Normal | Sets alert instance state to `Normal`. |
| Keep Last State | Maintains the alert instance in its last state. Useful for mitigating temporary issues, refer to [Keep last state](ref:keep-last-state). |
@@ -265,7 +262,7 @@ You can also configure the alert instance state when its evaluation returns an e
| Error configuration | Description |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error | The default option. Sets alert instance state to `Error`. <br/> The alert rule also creates a new alert instance `DatasourceError` with the name and UID of the alert rule, and UID of the datasource that returned no data as labels. |
| Alerting | Sets alert instance state to `Alerting`. It waits until the [pending period](ref:pending-period) has finished. |
| Alerting | Sets alert instance state to `Alerting`. It transitions from `Pending` to `Alerting` after the [pending period](ref:pending-period) has finished. |
| Normal | Sets alert instance state to `Normal`. |
| Keep Last State | Maintains the alert instance in its last state. Useful for mitigating temporary issues, refer to [Keep last state](ref:keep-last-state). |

View File

@@ -32,6 +32,10 @@ All templates should be written in [text/template](https://pkg.go.dev/text/templ
Each template is evaluated whenever the alert rule is evaluated, and is evaluated for every alert separately. For example, if your alert rule has a templated summary annotation, and the alert rule has 10 firing alerts, then the template will be executed 10 times, once for each alert. You should try to avoid doing expensive computations in your templates as much as possible.
{{% admonition type="caution" %}}
Extra whitespace in label templates can break matches with notification policies.
{{% /admonition %}}
## Examples
The following examples attempt to show the most common use-cases we have seen for templates. You can use these examples verbatim, or adapt them as necessary for your use case. For more information on how to write text/template refer see [the beginner's guide to alert notification templates in Grafana](https://grafana.com/blog/2023/04/05/grafana-alerting-a-beginners-guide-to-templating-alert-notifications/).

View File

@@ -93,6 +93,15 @@ To remove a silence, complete the following steps.
> **Note:** You cannot remove a silence manually. Silences that have ended are retained and listed for five days.
## Rule-specific silences
Rule-specific silences are silences that apply only to a specific alert rule.
They're created when you silence an alert rule directly using the **Silence notifications** action in the UI.
{{< admonition type="note" >}}
As opposed to general silences, rule-specific silence access is tied directly to the alert rule they act on. They can be created manually by including the specific label matcher: `__alert_rule_uid__=<alert rule UID>`.
{{< /admonition >}}
## Useful links
[Aggregation operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)

View File

@@ -31,6 +31,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-email/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-email/
discord:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-discord/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-discord/
telegram:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-telegram/
@@ -41,6 +46,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/webhook-notifier/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/webhook-notifier/
opsgenie:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-opsgenie/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-opsgenie/
pagerduty:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/pager-duty/
@@ -56,6 +66,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-slack/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-slack/
teams:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/manage-contact-points/integrations/configure-teams/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/manage-contact-points/integrations/configure-teams/
external-alertmanager:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-alertmanager/
@@ -144,14 +159,14 @@ The following table lists the contact point integrations supported by Grafana.
| Alertmanager | `prometheus-alertmanager` |
| Cisco Webex Teams | `webex` |
| DingDing | `dingding` |
| Discord | `discord` |
| [Discord](ref:discord) | `discord` |
| [Email](ref:email) | `email` |
| Google Chat | `googlechat` |
| [Grafana Oncall](ref:oncall) | `oncall` |
| Kafka REST Proxy | `kafka` |
| Line | `line` |
| Microsoft Teams | `teams` |
| Opsgenie | `opsgenie` |
| [Microsoft Teams](ref:teams) | `teams` |
| [Opsgenie](ref:opsgenie) | `opsgenie` |
| [Pagerduty](ref:pagerduty) | `pagerduty` |
| Pushover | `pushover` |
| Sensu Go | `sensugo` |

View File

@@ -0,0 +1,57 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-amazon-sns/
description: Configure the Grafana Alerting - Amazon SNS integration to receive alert notifications when your alerts are firing.
keywords:
- grafana
- alerting
- Amazon SNS
- integration
labels:
products:
- cloud
- enterprise
- oss
menuTitle: Amazon SNS
title: Configure Amazon SNS for Alerting
weight: 0
---
# Configure Amazon SNS for Alerting
Use the Grafana Alerting - Amazon SNS integration to send notifications to Amazon SNS when your alerts are firing.
## Before you begin
To configure Amazon SNS to receive alert notifications, complete the following steps.
1. Create a new topic in https://console.aws.amazon.com/sns.
1. Open the topic and create a new subscription.
1. Choose the protocol HTTPS.
1. Copy the URL.
For more information, refer to [Amazon SNS documentation](https://docs.aws.amazon.com/sns/latest/dg/welcome.html).
## Procedure
To create your Amazon SNS integration in Grafana Alerting, complete the following steps.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the Integration list, select **AWS SNS**.
1. Copy in the URL from above into the **The Amazon SNS API URL** field.
1. Click **Test** to check that your integration works.
1. Click **Save contact point**.
## Next steps
The Amazon SNS contact point is ready to receive alert notifications.
To add this contact point to your alert, complete the following steps.
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -0,0 +1,58 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-discord/
description: Configure the Discord integration to receive notifications when your alerts are firing
keywords:
- grafana
- alerting
- Discord
- integration
labels:
products:
- cloud
- enterprise
- oss
menuTitle: Discord
title: Configure Discord for Alerting
weight: 0
---
# Configure Discord for Alerting
Use the Grafana Alerting - Discord integration to receive alert notifications in your Discord channels when your Grafana alert rules are triggered and resolved.
## Before you begin
Create a Webhook to enable Grafana to send alert notifications to Discord channels.
To create a Webhook in Discord, complete the following steps.
1. Follow the steps in the [Intro to Webhooks guide](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks).
1. Copy the Webhook URL.
## Procedure
To create your Discord integration in Grafana Alerting, complete the following steps.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the Integration list, select **Discord**.
1. In the **Webhook URL** field, paste in your Webhook URL.
1. Click **Test** to check that your integration works.
A test alert notification should be sent to the Discord channel that you associated with the Webhook.
1. Click **Save contact point**.
## Next steps
The Discord contact point is ready to receive alert notifications.
To add this contact point to your alert, complete the following steps.
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under **Notifications** click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. Click **Save rule and exit**.

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Email
title: Configure email for Alerting
weight: 300
weight: 0
---
# Configure email for Alerting
@@ -80,13 +80,13 @@ To set up email integration, complete the following steps.
## Next steps
To add the contact point and integration you created to your default notification policy, complete the following steps.
The email contact point is ready to receive alert notifications.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Notification policies**.
1. In the **Default policy**, click the ellipsis icon (…) and then **Edit**.
1. Change the default policy to the contact point you created.
1. Click **Update default policy**.
To add this contact point to your alert, complete the following steps.
{{% admonition type="note" %}}
If you have more than one contact point, add a new child notification policy rather than edit the default one, so you can route specific alerts to one or multiple email addresses.
{{% /admonition %}}
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -0,0 +1,57 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-google-chat/
description: Configure the Google Chat integration to receive notifications when your alerts are firing
keywords:
- grafana
- alerting
- Google Chat
- integration
labels:
products:
- cloud
- enterprise
- oss
menuTitle: Google Chat
title: Configure Google Chat for Alerting
weight: 0
---
# Configure Google Chat for Alerting
Use the Grafana Alerting - Google Chat integration to receive alert notifications in your Google Chat space when your Grafana alert rules are triggered and resolved.
## Before you begin
Create a Webhook to enable Grafana to send alert notifications to a Google Chat space.
To create a Webhook in Google Chat space, complete the following steps.
1. Follow the steps in [Google's Chat app guide](https://developers.google.com/workspace/chat/quickstart/webhooks#create_a_webhook).
1. Copy the Webhook URL.
## Procedure
To create your Google Chat integration in Grafana Alerting, complete the following steps.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the Integration list, select **Google Chat**.
1. In the **URL** field, paste in your Webhook URL.
1. Click **Test** to check that your integration works.
A test alert notification should be sent to the Google Chat space that you associated with the Webhook.
1. Click **Save contact point**.
## Next steps
The Google Chat contact point is ready to receive alert notifications.
To add this contact point to your alert, complete the following steps.
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under **Notifications** click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. Click **Save rule and exit**.

View File

@@ -18,65 +18,57 @@ labels:
- oss
menuTitle: Grafana OnCall
title: Configure Grafana OnCall for Alerting
weight: 300
refs:
oncall-integration:
- pattern: /docs/grafana/
destination: /docs/oncall/latest/integrations/grafana-alerting/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/oncall/integrations/grafana-alerting/
create-notification-policy:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/create-notification-policy/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/create-notification-policy/
escalation-chain:
- pattern: /docs/grafana/
destination: /docs/oncall/latest/configure/escalation-chains-and-routes/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/oncall/configure/escalation-chains-and-routes/
weight: 0
---
## Configure Grafana OnCall for Alerting
# Configure Grafana OnCall for Alerting
Use the Grafana Alerting - Grafana OnCall integration to effortlessly connect alerts generated by Grafana Alerting with Grafana OnCall, where you can then route them according to defined escalation chains and schedules.
You can set up the integration using the Grafana Alerting application or the Grafana OnCall application. For more information on setting it up from the Grafana OnCall application, see [Grafana OnCall documentation](ref:oncall-integration).
{{< admonition type="note" >}}
You can also configure the integration from Grafana OnCall. For more information, refer to [Grafana OnCall documentation](http://grafana.com/docs/oncall/latest/integrations/grafana-alerting/).
{{< /admonition >}}
### Before you begin
## Before you begin
- Ensure you have Installed and enabled the Grafana OnCall plugin
- Ensure your version of Grafana is up-to-date and supports the new features
Grafana OnCall is available in Grafana Cloud by default.
### Procedure
If you are using Grafana OSS, [install and enable the Grafana OnCall plugin](http://grafana.com/docs/oncall/latest/set-up/open-source/#install-grafana-oncall-oss). Also, ensure your version of Grafana is up-to-date and supports the new features.
## Procedure
To set up the Grafana OnCall integration using the Grafana Alerting application, complete the following steps.
1. Navigate to **Alerts&IRM** -> **Alerting** -> **Contact points**.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the Integration list, select Grafana OnCall.
**Note:**
1. From the **Integration** list, select **Grafana OnCall**.
{{< admonition type="note" >}}
The Grafana OnCall integration is only available for Grafana Alertmanager.
{{< /admonition >}}
1. Choose whether to add a new OnCall integration or add an existing one.
- If you add a new one, enter an Integration name.
- If you add an existing one, choose from the list of available integrations
- If you add an existing one, choose from the list of available integrations.
1. Click **Save contact point**.
1. On the contact points list view page, you should see a link to Grafana OnCall.
1. On the Contact points list view page, you can see the contact point with the Grafana OnCall icon.
If the integration is not being used anywhere in the notification policies tree, it has **Unused** as its status in the **Health** column. It wont receive any notifications, because there are no notifications using that integration.
If the integration is not yet being used anywhere in the notification policies tree, it will have **Unused** as its status in the **Health** column. It wont receive any notifications, because there are no notifications using that integration.
1. To see the integration details and test the integration, click the link to Grafana OnCall on the contact points list view page.
1. Click **Send demo alert** > **Send alert**.
1. Go to Grafana OnCall **Alert Groups**. You should see the demo alert.
1. Connect your contact point to a notification policy.
## Next steps
For more information on connecting your contact point to a notification policy, see
[Create notification policy](ref:create-notification-policy).
The OnCall contact point is ready to receive alert notifications.
1. To view your integration in the Grafana OnCall application and set up routes and escalation chains, click the Link next to the integration on the Contact points list view page in the **Type** column.
To add the contact point to your alert rule, complete the following next steps:
This redirects you to the Grafana OnCall integration page in the Grafana OnCall application. From there, you can add [routes and escalation chains](ref:escalation-chain).
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under **Notifications**, click **Select contact point**.
1. From the drop-down menu, select the contact point you created.
1. Click **Save rule and exit**.

View File

@@ -0,0 +1,62 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-opsgenie/
description: Configure the Opsgenie integration to receive notifications when your alerts are firing
keywords:
- grafana
- alerting
- Opsgenie
- integration
labels:
products:
- cloud
- enterprise
- oss
menuTitle: Opsgenie
title: Configure Opsgenie for Alerting
weight: 0
---
# Configure Opsgenie for Alerting
Use the Grafana Alerting - Opsgenie integration to receive alert notifications in your Opsgenie alert dashboard when your Grafana alert rules are triggered and resolved.
## Before you begin
Create an API key to enable Grafana to send alert notifications to Opsgenie alert dashboard.
To create an API key in Opsgenie, complete the following steps.
1. Follow the steps in the [API integration guide](https://support.atlassian.com/opsgenie/docs/create-a-default-api-integration/).
Make sure you turn on the integration.
1. Copy the API key.
## Procedure
To create your Opsgenie integration in Grafana Alerting, complete the following steps.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the **Integration** list, select **Opsgenie**.
1. In the **API key** field, paste in your API key.
1. In the **Alert API URL**, enter `https://api.opsgenie.com/v2/alerts`.
1. Click **Test** to check that your integration works.
A test alert notification is sent to the Alerts page in Opsgenie.
1. Click **Save contact point**.
## Next steps
The Opsgenie contact point is ready to receive alert notifications.
To add this contact point to your alert rule, complete the following steps:
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under **Notifications**, click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. Click **Save rule and exit**.

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Slack
title: Configure Slack for Alerting
weight: 300
weight: 0
refs:
nested-policy:
- pattern: /docs/grafana/
@@ -82,12 +82,13 @@ To create your Slack integration in Grafana Alerting, complete the following ste
## Next steps
To add the contact point and integration you created to your default notification policy, complete the following steps.
The Slack contact point is ready to receive alert notifications.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Notification policies**.
1. In the **Default policy**, click the ellipsis icon (…) and then **Edit**.
1. Change the default policy to the contact point you created.
1. Click **Update default policy**.
To add this contact point to your alert, complete the following steps.
**Note:**
If you have more than one contact point, add a new notification policy rather than edit the default one, so you can route specific alerts to Slack. For more information, refer to [Notification policies](ref:nested-policy).
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -0,0 +1,64 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/configure-notifications/manage-contact-points/integrations/configure-teams/
description: Configure Microsoft Teams integration to receive notifications when your alerts are firing
keywords:
- grafana
- alerting
- Microsoft Teams
- integration
labels:
products:
- cloud
- enterprise
- oss
menuTitle: Microsoft Teams
title: Configure Microsoft Teams for Alerting
weight: 0
---
# Configure Microsoft Teams for Alerting
Use the Grafana Alerting - Microsoft Teams integration to receive notifications in your teams channel when your alerts are firing.
## Before you begin
To set up Microsoft Teams for integration with Grafana Alerting, create a new workflow that accepts Webhook requests. This allows Grafana to send alert notifications to Microsoft Teams channels.
### Create a workflow in Microsoft Teams
1. To create a new workflow, follow the steps in [Create flows in Microsoft Teams](https://learn.microsoft.com/en-us/power-automate/teams/teams-app-create).
1. Microsoft provides a template library. You can use the template **Post to a channel when a webhook request is received**.
1. At the end of workflow creation wizard, copy the URL that is provided.
**Note**
If you chose a private channel for the target of the workflow, you need to edit workflow before using it. Expand the step "Send each adaptive card", and then expand action "Post your own adaptive card as the Flow bot to a channel". Change "Post as" to User, and save the workflow.
## Procedure
To create your MS Teams integration in Grafana Alerting, complete the following steps.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
1. Click **+ Add contact point**.
1. Enter a contact point name.
1. From the Integration list, select **Microsoft Teams**.
1. In the **URL** field, copy in your Webhook URL.
1. Click **Test** to check that your integration works.
A test alert notification should be sent to the MS Team channel.
1. Click **Save** contact point.
## Next steps
The Microsoft Teams contact point is ready to receive alert notifications.
To add this contact point to your alert, complete the following steps.
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.
## Troubleshooting
- If Grafana reports that notification was sent successfully but it was not delivered to the channel, check the workflow's run history. You can find it in the workflow details page.

View File

@@ -13,7 +13,7 @@ labels:
- oss
menuTitle: Telegram
title: Configure Telegram for Alerting
weight: 300
weight: 0
---
# Configure Telegram for Alerting
@@ -24,7 +24,7 @@ Use the Grafana Alerting - Telegram integration to send [Telegram](https://teleg
### Telegram bot API token and chat ID
To integrate Grafana with Telegram, you need to obtain a Telegram **bot API token** and a **chat ID** (i.e., the ID of the Telegram chat where you want to receive the alert notifications).
To integrate Grafana with Telegram, you need to get a Telegram **bot API token** and a **chat ID** (the ID of the Telegram chat where you want to receive the alert notifications). To complete the integration, use the browser version of Telegram.
### Set up your Telegram bot
@@ -44,29 +44,9 @@ Add the bot to a group chat by following the steps below. Once the bot is added
1. In the Telegram app, **open a group or start a new one**.
1. Search and **add the bot to the group**.
1. **Interact with the bot** by sending a dummy message that starts with "`/`". E.g. `/hola @bot_name`.
1. Copy the **chat ID** from the URL in your browser's address bar. It should look like this: `https://web.telegram.org/a/#-4266674385`.
{{< figure src="/media/blog/telegram-grafana-alerting/telegram-screenshot.png" alt="A screenshot that shows a message to a Telegram bot." >}}
1. To obtain the **chat ID**, send an [HTTP request](https://core.telegram.org/bots/api#getupdates) to the bot. Copy the below URL and replace `{your_bot_api_token}` with your bot API token.
```
https://api.telegram.org/bot{your_bot_api_token}/getUpdates
```
1. **Paste the URL in your browser**.
1. If the request is successful, it will return a response in JSON format.
```
...
"chat": {
"id": -4065678900,
"title": "Tony and Hello world bot",
"type": "group",
...
```
1. Copy the value of the `“id”` that appears under `“chat”`.
The chat ID is the sequence of numbers that follows the `#` symbol. For example: `-4266674385`.
## Procedure
@@ -83,13 +63,13 @@ To create your Telegram integration in Grafana Alerting, complete the following
## Next steps
To add the contact point and integration you created to your default notification policy, complete the following steps.
The Telegram contact point is ready to receive alert notifications.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Notification policies**.
1. In the **Default policy**, click the ellipsis icon (…) and then **Edit**.
1. Change the default policy to the contact point you created.
1. Click **Update default policy**.
To add this contact point to your alert, complete the following steps.
{{<admonition type="note">}}
If you have more than one contact point, add a new child notification policy rather than edit the default one, so you can route specific alerts to Telegram.
{{</admonition>}}
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -14,7 +14,7 @@ labels:
- oss
menuTitle: PagerDuty
title: Configure PagerDuty for Alerting
weight: 400
weight: 0
---
# Configure PagerDuty for Alerting
@@ -63,11 +63,13 @@ To create your PagerDuty integration in Grafana Alerting, complete the following
## Next steps
To add the contact point and integration you created to your default notification policy, complete the following steps.
The PagerDuty contact point is ready to receive alert notifications.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Notification policies**.
1. In the Default policy, click the ellipsis icon (…) and then **Edit**.
1. Change the default policy to the contact point you created.
1. Click **Update default policy**.
To add this contact point to your alert, complete the following steps.
{{< admonition type="note" >}} If you have more than one contact point, add a new notification policy rather than edit the default one, so you can route specific alerts to PagerDuty. {{< /admonition >}}
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -21,7 +21,7 @@ labels:
- oss
menuTitle: Webhook notifier
title: Configure the webhook notifier for Alerting
weight: 200
weight: 0
---
# Configure the webhook notifier for Alerting
@@ -156,13 +156,13 @@ To create your webhook integration in Grafana Alerting, complete the following s
## Next steps
To add the contact point and integration you created to your default notification policy, complete the following steps.
The Webhook contact point is ready to receive alert notifications.
1. Navigate to **Alerts & IRM** -> **Alerting** -> **Notification policies**.
1. In the **Default policy**, click the ellipsis icon (…) and then **Edit**.
1. Change the default policy to the contact point you created.
1. Click **Update default policy**.
To add this contact point to your alert, complete the following steps.
{{< admonition type="note" >}}
If you have more than one contact point, add a new notification policy rather than edit the default one, so you can route specific alerts to your webhook.
{{< /admonition >}}
1. In Grafana, navigate to **Alerting** > **Alert rules**.
1. Edit or create a new alert rule.
1. Scroll down to the **Configure labels and notifications** section.
1. Under Notifications, click **Select contact point**.
1. From the drop-down menu, select the previously created contact point.
1. **Click Save rule and exit**.

View File

@@ -48,6 +48,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/rule-evaluation/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/rule-evaluation/
group-alert-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/
---
# Introduction to Alerting
@@ -56,14 +61,15 @@ Whether youre just starting out or you're a more experienced user of Grafana
The following diagram gives you an overview of Grafana Alerting and introduces you to some of the fundamental features that are the principles of how Grafana Alerting works.
{{< figure src="/media/docs/alerting/how-alerting-works.png" max-width="750px" caption="How Alerting works" >}}
<br/>
{{< figure src="/media/docs/alerting/alerting-configure-notifications-v2.png" max-width="750px" alt="How Grafana Alerting works" >}}
## How it works at a glance
- Grafana alerting periodically queries data sources and evaluates the condition defined in the alert rule
- Grafana Alerting periodically queries data sources and evaluates the condition defined in the alert rule
- If the condition is breached, an alert instance fires
- Firing and resolved alert instances are routed to notification policies based on matching labels
- Notifications are sent out to the contact points specified in the notification policy
- Firing (and resolved) alert instances are sent for notifications, either directly to a contact point or through notification policies for more flexibility
## Fundamentals
@@ -73,9 +79,7 @@ The following concepts are key to your understanding of how Grafana Alerting wor
An [alert rule](ref:alert-rules) consists of one or more queries and expressions that select the data you want to measure. It also contains a condition, which is the threshold that an alert rule must meet or exceed to fire.
Add labels to uniquely identify your alert rule and configure alert routing. Labels link alert rules to notification policies, so you can easily manage which policy should handle which alerts and who gets notified.
After alert rules are created, they go through various states and transitions.
In the alert rule, choose the contact point or notification policies to determine how to receive the alert notifications.
### Alert instances
@@ -91,23 +95,27 @@ A rule using the PromQL expression above creates as many alert instances as the
{{< figure src="/static/img/docs/alerting/unified/multi-dimensional-alert.png" caption="Multiple alert instances from a single alert rule" >}}
[Alert rules are frequently evaluated](ref:alert-rule-evaluation) and the state of their alert instances is updated accordingly. Only alert instances that are in a firing or resolved state are routed to notification policies to be handled.
### Notification policies
[Notification policies](ref:notification-policies) group alerts and then route them to contact points. They determine when notifications are sent, and how often notifications should be repeated.
Alert instances are matched to notification policies using label matchers. This provides a flexible way to organize and route alerts to different receivers.
Each policy consists of a set of label matchers (0 or more) that specify which alert instances (identified by their labels) they handle. Notification policies are defined as a tree structure where the root of the notification policy tree is called the **Default notification policy**. Each policy can have child policies.
{{< figure src="/media/docs/alerting/notification-routing.png" max-width="750px" caption="Notification policy routing" >}}
[Alert rules are frequently evaluated](ref:alert-rule-evaluation) and the state of their alert instances is updated accordingly. Only alert instances that are in a firing or resolved state are sent in notifications.
### Contact points
[Contact points](ref:contact-points) determine where notifications are sent. For example, you might have a contact point that sends notifications to an email address, to Slack, to an incident management system (IRM) such as Grafana OnCall or Pagerduty, or to a webhook.
[Contact points](ref:contact-points) determine the notification message and where notifications are sent. For example, you might have a contact point that sends notifications to an email address, to Slack, to an incident management system (IRM) such as Grafana OnCall or Pagerduty, or to a webhook.
Notifications sent from contact points are customizable with notification templates, which can be shared between contact points.
In the alert rule, you can choose a contact point to receive the alert notifications or use notification policies instead.
### Notification policies
[Notification policies](ref:notification-policies) provide a flexible method to handle alert notifications for larger systems.
Notification policies routes alerts to contact points via label matching. Each notification policy consists of a set of label matchers (0 or more) that specify which alert instances (identified by their labels) they handle. Notification policies are defined in a tree structure, where the root of the notification policy tree is the **Default notification policy**, which ensures all alert instances are handled.
{{< figure src="/media/docs/alerting/notification-routing.png" max-width="750px" alt="A diagram displaying how the notification policy tree routes alerts" caption="Routing firing alert instances through notification policies" >}}
<br/>
Each notification policy decides where to send the alert (contact point) and when to send the notification (timing options). Additionally, it can [group multiple firing alert instances into a single notification](ref:group-alert-notifications) to reduce alert noise.
{{< figure src="/media/docs/alerting/alerting-notification-policy-diagram-v5.png" max-width="750px" alt="A diagram of the notification policy component" >}}
### Silences and mute timings
@@ -115,16 +123,14 @@ Notifications sent from contact points are customizable with notification templa
### Architecture
Grafana Alerting is built on the Prometheus model of designing alerting systems.
Prometheus-based alerting systems have two main components:
Grafana Alerting is built on the Prometheus model of designing alerting systems. Prometheus-based alerting systems have two main components:
- An alert generator that evaluates alert rules and sends firing and resolved alerts to the alert receiver.
- An alert receiver (also known as Alertmanager) that receives the alerts and is responsible for handling them and sending their notifications.
Grafana doesnt use Prometheus as its default alert generator because Grafana Alerting needs to work with many other data sources in addition to Prometheus.
Grafana Alerting doesnt use Prometheus as its default alert generator because it works with many other data sources; not just Prometheus.
However, Grafana can also use Prometheus as an alert generator as well as external Alertmanagers. For more information about how to use distinct alerting systems, refer to the [Grafana alert rule types](ref:alert-rules).
However, Grafana can also use Prometheus as an alert generator (refer to [alert rule types](ref:alert-rules)), as well as external Alertmanagers.
## Design your Alerting system

View File

@@ -44,13 +44,13 @@ There are three key components that help you understand how your alerts behave d
An alert instance can be in either of the following states:
| State | Description |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Normal** | The state of an alert when the condition (threshold) is not met. |
| **Pending** | The state of an alert that has breached the threshold but for less than the [pending period](ref:pending-period). |
| **Alerting** | The state of an alert that has breached the threshold for longer than the [pending period](ref:pending-period). |
| **NoData** | The state of an alert whose query returns no data or all values are null. You can [change the default behavior](/docs/grafana/latest/alerting/alerting-rules/create-grafana-managed-rule/#configure-no-data-and-error-handling). |
| **Error** | The state of an alert when an error or timeout occurred evaluating the alert rule. You can [change the default behavior](/docs/grafana/latest/alerting/alerting-rules/create-grafana-managed-rule/#configure-no-data-and-error-handling). |
| State | Description |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Normal** | The state of an alert when the condition (threshold) is not met. |
| **Pending** | The state of an alert that has breached the threshold but for less than the [pending period](ref:pending-period). |
| **Alerting** | The state of an alert that has breached the threshold for longer than the [pending period](ref:pending-period). |
| **NoData** | The state of an alert whose query returns no data or all values are null. You can [change the default behavior of the no data state](#modify-the-no-data-and-error-state). |
| **Error** | The state of an alert when an error or timeout occurred evaluating the alert rule. You can [change the default behavior of the error state](#modify-the-no-data-and-error-state). |
{{< figure src="/media/docs/alerting/alert-instance-states-v3.png" caption="Alert instance state diagram" alt="A diagram of the distinct alert instance states and transitions." max-width="750px" >}}
@@ -64,18 +64,37 @@ Alert instances will be routed for [notifications](ref:notifications) when they
An alert instance is considered stale if its dimension or series has disappeared from the query results entirely for two evaluation intervals.
Stale alert instances that are in the **Alerting**, **NoData**, or **Error** states transition to the **Normal** state as **Resolved**, and include the `grafana_state_reason` annotation with the value **MissingSeries**. They are routed for notifications like other resolved alert instances.
Stale alert instances that are in the **Alerting**, **NoData**, or **Error** states transition to the **Normal** state as **Resolved**. Once transitioned, these resolved alert instances are routed for notifications like other resolved alerts.
### Keep last state
### Modify the no data and error state
The "Keep Last State" option helps mitigate temporary data source issues, preventing alerts from unintentionally firing, resolving, and re-firing.
In [Configure no data and error handling,](ref:no-data-and-error-handling) you can decide to keep the last state of the alert instance when a `NoData` and/or `Error` state is encountered. Just like normal evaluation, the alert instance transitions from `Pending` to `Alerting` after the pending period has elapsed.
In [Configure no data and error handling](ref:no-data-and-error-handling), you can change the default behaviour when the evaluation returns no data or an error. You can set the alert instance state to `Alerting`, `Normal`, or keep the last state.
{{< figure src="/media/docs/alerting/alert-rule-configure-no-data-and-error.png" alt="A screenshot of the `Configure no data and error handling` option in Grafana Alerting." max-width="500px" >}}
#### Keep last state
The "Keep Last State" option helps mitigate temporary data source issues, preventing alerts from unintentionally firing, resolving, and re-firing.
However, in situations where strict monitoring is critical, relying solely on the "Keep Last State" option may not be appropriate. Instead, consider using an alternative or implementing additional alert rules to ensure that issues with prolonged data source disruptions are detected.
### `grafana_state_reason` annotation
Occasionally, an alert instance may be in a state that isn't immediately clear to everyone. For example:
- Stale alert instances in the `Alerting` state transition to the `Normal` state when the series disappear.
- If "no data" handling is configured to transition to a state other than `NoData`.
- If "error" handling is configured to transition to a state other than `Error`.
- If the alert rule is deleted, paused, or updated in some cases, the alert instance also transitions to the `Normal` state.
In these situations, the evaluation state may differ from the alert state, and it might be necessary to understand the reason for being in that state when receiving the notification.
The `grafana_state_reason` annotation is included in these situations, providing the reason in the notifications that explain why the alert instance transitioned to its current state. For example:
- Stale alert instances in the `Normal` state include the `grafana_state_reason` annotation with the value **MissingSeries**.
- If "no data" or "error" handling transitions to the `Normal` state, the `grafana_state_reason` annotation is included with the value **NoData** or **Error**, respectively.
- If the alert rule is deleted or paused, the `grafana_state_reason` is set to **Paused** or **RuleDeleted**. For some updates, it is set to **Updated**.
### Special alerts for `NoData` and `Error`
When evaluation of an alert rule produces state `NoData` or `Error`, Grafana Alerting generates a new alert instance that have the following additional labels:

View File

@@ -20,6 +20,11 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rule-evaluation/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rule-evaluation/
group-alert-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/
templates:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/templates/
@@ -37,9 +42,9 @@ refs:
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/notification-policies/
notification-timings:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/notification-policies/#timing-options
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/#timing-options
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/notification-policies/#timing-options
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/#timing-options
silences:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/create-silence/
@@ -63,7 +68,9 @@ Choosing how, when, and where to send your alert notifications is an important p
Start defining your [contact points](ref:contact-points) to specify how to receive your alert notifications. Then, configure your alert rules to send their alerts to either a contact point or use the [Notification Policy Tree](#notification-policies) to flexibly route alerts to contact points.
{{< figure src="/media/docs/alerting/alerting-configure-notifications.svg" max-width="750px" alt="Configure alerts to send notifications to a contact point or via notification policies" caption="Configure alerts to send notifications to a contact point or via notification policies" >}}
<br/>
{{< figure src="/media/docs/alerting/alerting-configure-notifications-v2.png" max-width="750px" alt="Configure alert rules to forward firing alerts directly to a contact point or through notification policies" caption="Configure alert rules to forward firing alerts directly to a contact point or through notification policies" >}}
## How it works at a glance
@@ -95,21 +102,21 @@ The notification policy tree is responsible for:
Each notification policy handles specific tasks:
- Deciding which contact point receives the alert notification.
- Controlling when to send notifications based on its [notification timings](ref:notification-timings).
- [Grouping multiple alerts](#group-alert-notifications) into a single notification to reduce alert noise.
- Controlling when to send notifications based on its notification timing options.
- Grouping multiple alerts into a single notification to reduce alert noise.
{{< figure src="/media/docs/alerting/alerting-notification-policy-diagram-v2.png" max-width="750px" alt="A diagram of the notification policy component" >}}
{{< figure src="/media/docs/alerting/alerting-notification-policy-diagram-v5.png" max-width="750px" alt="A diagram of the notification policy component" >}}
### Group alert notifications
When something fails in our system, our alerting setup can easily trigger hundreds or even thousands of alert instances (notifications). Several alert rules often fail simultaneously. Additionally, each alert rule may generate multiple alert instances.
Grouping alert notifications is commonly necessary to avoid bombarding our alert inbox. Grouping combines similar alert instances in a given period into one single notification.
[Grouping alert notifications](ref:group-alert-notifications) is commonly necessary to avoid bombarding our alert inbox. Grouping combines similar alert instances in a given period into one single notification.
Notification grouping uses:
- **Matching labels**: Group alert instances of the same type by matching their labels.
- **[Notification timings](ref:notification-timings)**: Wait for a specified period before sending the notification, allowing for the grouping of incoming alert instances.
- **Labels**: Group alert instances of the same type by using labels.
- **Timing options**: Wait for a specified period before sending the notification, allowing for the grouping of incoming alert instances.
### Templates, silences and mute timings

View File

@@ -0,0 +1,185 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/fundamentals/notifications/group-alert-notifications/
description: Learn about how notification policies group alert notifications
keywords:
- grafana
- alerting
- notification policies
labels:
products:
- cloud
- enterprise
- oss
title: Group alert notifications
menuTitle: Grouping
weight: 114
refs:
alert-labels:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/
notification-policies:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/notification-policies/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/notification-policies/
silences:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/create-silence/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/create-silence/
---
# Group alert notifications
Grouping in Grafana Alerting allows you to batch relevant alerts together into a smaller number of notifications. This is particularly important if notifications are delivered to first-responders, such as engineers on-call, where receiving lots of notifications in a short period of time can be overwhelming. In some cases, it can negatively impact a first-responders ability to respond to an incident. For example, consider a large outage where many of your systems are down. In this case, grouping can be the difference between receiving 1 phone call and 100 phone calls.
## Group notifications
Grouping combines similar alert instances within a specific period into a single notification, reducing alert noise.
In the [notification policy](ref:notification-policies), you can configure how to group multiple alerts into a single notification:
- The `Group by` option specifies the criteria for grouping incoming alerts within the policy. The default is by alert rule.
- [Timing options](#timing-options) determine when and how often to send the notification.
{{< figure src="/media/docs/alerting/alerting-notification-policy-diagram-with-labels-v3.png" max-width="750px" alt="A diagram about the components of a notification policy, including labels and groups" >}}
Alert instances are grouped together if they have the same exact label values for the labels configured in the `Group by` option.
For example, given the `Group by` option set to the `team` label:
- `alertname:foo, team=frontend`, and `alertname:bar, team=frontend` are in one group.
- `alertname:foo, team=backend`, and `alertname:qux, team=backend` are in another group.
### Group by alert rule or labels
By default, notification policies in Grafana group alerts by the alert rule. Specifically, they are grouped using the `alertname` and `grafana_folder` labels, as alert rule names are not unique across folders.
If you want to group alerts by other labels, something other than the alert rule, change the `Group by` option to any other combination of labels.
### A single group for all alerts
If you want to group all alerts handled by the notification policy in a single group (without grouping notifications by alert rule or other labels), you can do so by leaving `Group by` empty.
### Disable grouping
If you want to receive every alert as a separate notification, you can do so by grouping by a special label called `...`, ensuring that other labels are not present.
## Timing options
In the notification policy, you can also configure how often notifications are sent for each [group of alerts](#group-notifications). There are three distinct timers applied to groups within the notification policy:
- **[Group wait](#group-wait)**: the time to wait before sending the first notification for a new group of alerts.
- **[Group interval](#group-interval)**: the time to wait before sending a notification about changes in the alert group.
- **[Repeat interval](#repeat-interval)**: the time to wait before sending a notification if the group has not changed since the last notification.
These timers reduce the number of notifications sent. By delaying the delivery of notifications, incoming alerts can be grouped into just one notification instead of many.
{{< figure src="/media/docs/alerting/alerting-timing-options-flowchart-v2.png" max-width="750px" alt="A basic sequence diagram of the the notification policy timers" caption="A basic sequence diagram of the notification policy timers" >}}
<!--
flowchart LR
A((First alert)) -///-> B
B[Group wait <br/> notification] -///-> C
B -- no changes -///-> D
C[Group interval <br/> notification] -- no changes -///-> D
C -- group changes -///-> C
D[Repeat interval <br/> notification]
-->
### Group wait
**Default**: 30 seconds
Group wait is the duration Grafana waits before sending the first notification for a new group of alerts.
The longer the group wait, the more time other alerts have to be included in the initial notification of the new group. The shorter the group wait, the earlier the first notification is sent, but at the risk of not including some alerts.
**Example**
Consider a notification policy that:
- Matches all alert instances with the `team` label—matching labels equals to `team=~.+`.
- Groups notifications by the `team` label—one group for each distinct `team`.
- Sets the Group wait timer to `30s`.
| Time | Incoming alert instance | Notification policy group | Number of instances | |
| ------------------ | ------------------------------- | ------------------------- | ------------------- | ----------------------------------------------------------------------- |
| 00:00 | `alert_name=f1` `team=frontend` | `frontend` | 1 | Starts the group wait timer of the `frontend` group. |
| 00:10 | `alert_name=f2` `team=frontend` | `frontend` | 2 | |
| 00:20 | `alert_name=b1` `team=backend` | `backend` | 1 | Starts the group wait timer of the `backend` group. |
| 00:30<sup>\*</sup> | | `frontend` | 2 | Group wait elapsed. <br/> Send initial notification reporting 2 alerts. |
| 00:35 | `alert_name=b2` `team=backend` | `backend` | 2 | |
| 00:40 | `alert_name=b3` `team=backend` | `backend` | 3 | |
| 00:50<sup>\*</sup> | | `backend` | 3 | Group wait elapsed. <br/> Send initial notification reporting 3 alerts. |
### Group interval
**Default**: 5 minutes
If an alert was too late to be included in the first notification due to group wait, it is included in subsequent notifications after group interval.
Group interval is the duration to wait before sending notifications about group changes. For instance, a group change may be adding a new firing alert to the group, or resolving an existing alert.
**Example**
Here are the related excerpts from the previous example:
| Time | Incoming alert instance | Notification policy group | Number of instances | |
| ------------------ | ----------------------- | ------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------- |
| 00:30<sup>\*</sup> | | `frontend` | 2 | Group wait elapsed and starts Group interval timer. <br/> Send initial notification reporting 2 alerts. |
| 00:50<sup>\*</sup> | | `backend` | 3 | Group wait elapsed and starts Group interval timer. <br/> Send initial notification reporting 3 alerts. |
And below is the continuation of the example setting the Group interval timer to 5 minutes:
| Time | Incoming alert instance | Notification policy group | Number of instances | |
| ------------------ | ------------------------------- | ------------------------- | ------------------- | ---------------------------------------------------------------------------------------------- |
| 01:30 | `alert_name=f3` `team=frontend` | `frontend` | 3 | |
| 02:30 | `alert_name=f4` `team=frontend` | `frontend` | 4 | |
| 05:30<sup>\*</sup> | | `frontend` | 4 | Group interval elapsed and resets timer. <br/> Send one notification reporting 4 alerts. |
| 05:50<sup>\*</sup> | | `backend` | 3 | Group interval elapsed and resets timer. <br/> No group changes, and do not send notification. |
| 08:00 | `alert_name=f4` `team=backend` | `backend` | 4 | |
| 10:30<sup>\*</sup> | | `frontend` | 4 | Group interval elapsed and resets timer. <br/> No group changes, and do not send notification. |
| 10:50<sup>\*</sup> | | `backend` | 4 | Group interval elapsed and resets timer. <br/> Send one notification reporting 4 alerts. |
**How it works**
Once the first notification has been sent for a new group of alerts, the group interval timer starts.
When the group interval timer elapses, the system resets the group interval timer and sends a notification only if there were group changes. This process repeats until there are no more alerts.
It's important to note that an alert instance exits the group after being resolved and notified of its state change. When no alerts remain, the group is deleted, and then the group wait timer handles the first notification for the next incoming alert once again.
### Repeat interval
**Default**: 4 hours
Repeat interval acts as a reminder that alerts in the group are still firing.
The repeat interval timer decides how often notifications are sent (or repeated) if the group has not changed since the last notification.
**How it works**
Repeat interval is evaluated every time the group interval resets. If the alert group has not changed and the time since the last notification was longer than the repeat interval, then a notification is sent as a reminder that the alerts are still firing.
Repeat interval must not only be greater than or equal to group interval, but also must be a multiple of Group interval. If Repeat interval is not a multiple of group interval it is coerced into one. For example, if your Group interval is 5 minutes, and your Repeat interval is 9 minutes, the Repeat interval is rounded up to the nearest multiple of 5 which is 10 minutes.
**Example**
Here are the related excerpts from the previous example:
| Time | Incoming alert instance | Notification policy group | Number of instances | |
| ------------------ | ----------------------- | ------------------------- | ------------------- | -------------------------------------------------------- |
| 05:30<sup>\*</sup> | | `frontend` | 4 | Group interval resets. <br/> Send the last notification. |
| 10:50<sup>\*</sup> | | `backend` | 4 | Group interval resets. <br/> Send the last notification. |
And below is the continuation of the example setting the Repeat interval timer to 4 hours:
| Time | Incoming alert instance | Notification policy group | Number of instances | |
| -------- | ----------------------- | ------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 04:05:30 | | `frontend` | 4 | Group interval resets. The time since the last notification was no longer than the repeat interval. |
| 04:10:30 | | `frontend` | 4 | Group interval resets. The time since the last notification was longer than the repeat interval. <br/> Send one notification reminding the 4 firing alerts. |
| 04:10:50 | | `backend` | 4 | Group interval resets. The time since the last notification was no longer than the repeat interval. |
| 04:15:50 | | `backend` | 4 | Group interval resets. The time since the last notification was longer than the repeat interval. <br/> Send one notification reminding the 4 firing alerts. |

View File

@@ -18,130 +18,100 @@ labels:
title: Notification policies
weight: 113
refs:
alert-labels:
contact-points:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/annotation-label/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/contact-points/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/alert-rules/annotation-label/
notification-policies:
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/contact-points/
notification-timings:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/notification-policies/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/#timing-options
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/notification-policies/
silences:
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/#timing-options
mute-timings:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/create-silence/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/configure-notifications/mute-timings/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/create-silence/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/configure-notifications/mute-timings/
group-alert-notifications:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/
---
# Notification policies
Notification policies provide you with a flexible way of routing alerts to various different receivers. Using label matchers, you can modify alert notification delivery without having to update every individual alert rule.
Notification policies provide you with a flexible way of designing how to handle notifications and minimize alert noise.
Learn more about how notification policies work and are structured, so that you can make the most out of setting up your notification policies.
Using label matchers, alert instances are [routed to notification policies](#routing). The notification policy can then [group multiple alert instances into a single notification](ref:group-alert-notifications) and deliver it to the contact point.
## Policy tree
{{< figure src="/media/docs/alerting/how-alerting-works.png" max-width="750px" alt="How Alerting works" >}}
Notification policies are _not_ a list, but rather are structured according to a [tree structure](https://en.wikipedia.org/wiki/Tree_structure). This means that each policy can have child policies, and so on. The root of the notification policy tree is called the **Default notification policy**.
Notification policies are _not_ a list, but rather are structured according to a [tree structure](https://en.wikipedia.org/wiki/Tree_structure):
Each policy consists of a set of label matchers (0 or more) that specify which labels they are or aren't interested in handling.
- The root of the notification policy tree is the **Default notification policy**.
- Each policy can have child policies.
- Each policy can have sibling policies, sharing the same parent and hierarchical level.
Each policy consists of a set of label matchers (0 or more) that specify which alerts they are or aren't interested in handling. A matching policy refers to a notification policy with label matchers that match the alert instances labels.
{{< docs/shared lookup="alerts/how_label_matching_works.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{% admonition type="note" %}}
If you haven't configured any label matchers for your notification policy, your notification policy matches _all_ alert instances. This may prevent child policies from being evaluated unless you have enabled **Continue matching siblings** on the notification policy.
{{% /admonition %}}
{{< figure src="/media/docs/alerting/notification-routing.png" max-width="750px" caption="Matching alert instances with notification policies" alt="Example of a notification policy tree" >}}
## Routing
To determine which notification policy handles which alert instances, you have to start by looking at the existing set of notification policies, starting with the default notification policy.
To determine which notification policies handle an alert instance, the system looks for matching policies starting from the top of the tree—beginning with the default notification policy.
If no policies other than the default policy are configured, the default policy handles the alert instance.
If a matching policy is found, the system continues to evaluate its child policies in the order they are displayed. If a child policy matches the alert, the system then evaluates its child policies recursively until no more matching child policies are found. In this case, only the deepest matching child policy handles the alert instance.
If policies other than the default policy are defined, it evaluates those notification policies in the order they are displayed.
By default, once a matching policy is found, the system does not continue to look for sibling policies. If you want sibling policies of one matching policy to handle the alert instance as well, then enable **Continue matching siblings** on the particular matching policy.
If a notification policy has label matchers that match the labels of the alert instance, it descends in to its child policies and, if there are any, continues to look for any child policies that might have label matchers that further narrow down the set of labels, and so forth until no more child policies have been found.
{{% admonition type="note" %}}
If no child policies are defined in a notification policy or if none of the child policies have any label matchers that match the alert instance's labels, the default notification policy is used.
The default notification policy matches all alert instances. It always handles alert instances if there are no child policies or if none of the child policies match the alert instance's labels—this prevents any alerts from being missed.
As soon as a matching policy is found, the system does not continue to look for other matching policies. If you want to continue to look for other policies that may match, enable **Continue matching siblings** on that particular policy.
If alerts use multiple labels, these labels must also be present in a notification policy to match and route notifications to a specific contact point.
Lastly, if none of the notification policies are selected the default notification policy is used.
{{% /admonition %}}
### Routing example
{{< collapse title="Routing example" >}}
Here is an example of a relatively simple notification policy tree and some alert instances.
{{< figure src="/media/docs/alerting/notification-routing.png" max-width="750px" caption="Notification policy routing" >}}
Here's a breakdown of how these policies are selected:
Here's a breakdown of the previous example:
**Pod stuck in CrashLoop** does not have a `severity` label, so none of its child policies are matched. It does have a `team=operations` label, so the first policy is matched.
The `team=security` policy is not evaluated a match was already found and **Continue matching siblings** was not configured for that policy.
The `team=security` policy is not a match and **Continue matching siblings** was not configured for that policy.
**Disk Usage 80%** has both a `team` and `severity` label, and matches a child policy of the operations team.
{{% admonition type="note" %}}
When an alert matches both a parent policy and a child policy (like it does in this case), the routing follows the child policy (`severity`) as it provides a more specific match.
{{% /admonition %}}
**Unauthorized log entry** has a `team` label but does not match the first policy (`team=operations`) since the values are not the same, so it will continue searching and match the `team=security` policy. It does not have any child policies, so the additional `severity=high` label is ignored.
{{< /collapse >}}
This routing and tree structure makes it convenient to organize and handle alerts for dedicated teams, while also narrowing down specific cases within the team by applying additional labels.
## Inheritance
In addition to child policies being a useful concept for routing alert instances, they also inherit properties from their parent policy. This also applies to any policies that are child policies of the default notification policy.
In addition to child policies being a useful concept for routing alert instances, they also inherit properties from their parent policy. This also applies to child policies of the default notification policy.
The following properties are inherited by child policies:
By default, a child policy inherits the following notification properties from its parent:
- Contact point
- Grouping options
- Timing options
- Mute timings
- [Contact point](ref:contact-points)
- [Grouping options](ref:group-alert-notifications)
- [Timing options](ref:notification-timings)
Each of these properties can be overwritten by an individual policy if you want to override the inherited properties.
Then, each policy can overwrite these properties if needed.
To inherit a contact point from the parent policy, leave it blank. To override the inherited grouping options, enable **Override grouping**. To override the inherited timing options, enable **Override general timings**.
The inheritance of notification properties, together with the routing process, is an effective method for grouping related notifications and handling specific cases through child policies.
### Inheritance example
**Inheritance example**
The example below shows how the notification policy tree from the previous example allows the child policies of the `team=operations` to inherit its contact point.
{{< figure src="/media/docs/alerting/notification-inheritance.png" max-width="750px" alt="Simple example inhering notification settings" >}}
In this way, you can avoid having to specify the same contact point multiple times for each child policy.
{{< figure src="/media/docs/alerting/notification-inheritance.png" max-width="750px" caption="Notification policy inheritance" >}}
## Additional configuration options
### Grouping
Grouping is an important feature of Grafana Alerting as it allows you to batch relevant alerts together into a smaller number of notifications. This is particularly important if notifications are delivered to first-responders, such as engineers on-call, where receiving lots of notifications in a short period of time can be overwhelming and in some cases can negatively impact a first-responders ability to respond to an incident. For example, consider a large outage where many of your systems are down. In this case, grouping can be the difference between receiving 1 phone call and 100 phone calls.
Choose how alerts are grouped together using the Group by option in a notification policy. By default, notification policies in Grafana group alerts together by alert rule using the `alertname` and `grafana_folder` labels (since alert names are not unique across multiple folders). If you want to group alerts by something other than the alert rule, change the grouping to any other combination of labels.
#### Disable grouping
If you want to receive every alert as a separate notification, you can do so by grouping by a special label called `...`. This is useful when your alerts are being delivered to an automated system instead of a first-responder.
#### A single group for all alerts
If you want to receive all alerts together in a single notification, you can do so by leaving Group by empty.
### Timing options
The timing options decide how often notifications are sent for each group of alerts. There are three timers that you need to know about: Group wait, Group interval, and Repeat interval.
#### Group wait
Group wait is the amount of time Grafana waits before sending the first notification for a new group of alerts. The longer Group wait is the more time you have for other alerts to arrive. The shorter Group wait is the earlier the first notification is sent, but at the risk of sending incomplete notifications. You should always choose a Group wait that makes the most sense for your use case.
**Default** 30 seconds
#### Group interval
Once the first notification has been sent for a new group of alerts, the Group interval timer starts. This is the amount of wait time before notifications about changes to the group are sent. For example, another firing alert might have just been added to the group while an existing alert might have resolved. If an alert was too late to be included in the first notification due to Group wait, it is included in subsequent notifications after Group interval. Once Group interval has elapsed, Grafana resets the Group interval timer. This repeats until there are no more alerts in the group after which the group is deleted.
**Default** 5 minutes
#### Repeat interval
Repeat interval decides how often notifications are repeated if the group has not changed since the last notification. You can think of these as reminders that some alerts are still firing. Repeat interval is closely related to Group interval, which means your Repeat interval must not only be greater than or equal to Group interval, but also must be a multiple of Group interval. If Repeat interval is not a multiple of Group interval it is coerced into one. For example, if your Group interval is 5 minutes, and your Repeat interval is 9 minutes, the Repeat interval is rounded up to the nearest multiple of 5 which is 10 minutes.
**Default** 4 hours
This example shows how the notification policy tree from the previous example allows the child policies of the `team=operations` to inherit its contact point. In this way, you can avoid specifying the same contact point multiple times for each child policy.

View File

@@ -17,7 +17,7 @@ labels:
- enterprise
- oss
title: Templates
weight: 114
weight: 115
refs:
variables-label-annotation:
- pattern: /docs/grafana/
@@ -106,6 +106,10 @@ Here are some commonly used built-in [variables](ref:variables-label-annotation)
CPU usage for instance1 has exceeded 80% for the last 5 minutes: 81.2345
{{% admonition type="caution" %}}
Extra whitespace in label templates can break matches with notification policies.
{{% /admonition %}}
### Template annotations
Both labels and annotations have the same structure: a set of named values; however their intended uses are different. The purpose of annotations is to add additional information to existing alerts.

View File

@@ -4,49 +4,93 @@ aliases:
- ../../alerting/alert-groups/filter-alerts/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alert-groups/filter-alerts/
- ../../alerting/alert-groups/view-alert-grouping/ # /docs/grafana/<GRAFANA_VERSION>/alerting/alert-groups/view-alert-grouping/
- ../../alerting/unified-alerting/alert-groups/ # /docs/grafana/<GRAFANA_VERSION>/alerting/unified-alerting/alert-groups/
- ../../alerting/manage-notifications/view-notification-errors/ # /docs/grafana/<GRAFANA_VERSION>/alerting/manage-notifications/view-notification-errors/
canonical: https://grafana.com/docs/grafana/latest/alerting/manage-notifications/view-alert-groups/
description: Alert groups
description: The Groups view lists grouped alerts that are actively triggering notifications.
keywords:
- grafana
- alerting
- alerts
- errors
- notifications
- groups
labels:
products:
- cloud
- enterprise
- oss
title: View and filter by alert groups
title: View the status of notifications
weight: 800
refs:
alertmanager:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-alertmanager/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/set-up/configure-alertmanager/
grouping:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/notifications/group-alert-notifications/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/fundamentals/notifications/group-alert-notifications/
---
# View and filter by alert groups
# View the status of notifications
Alert groups show grouped alerts from an Alertmanager instance. By default, alert rules are grouped by the label keys for the default policy in notification policies. Grouping common alert rules into a single alert group prevents duplicate alert rules from being fired.
The Groups view page lists grouped alerts that are actively triggering notifications.
You can view alert groups and also filter for alert rules that match specific criteria.
By default, Grafana Alerting groups similar firing alerts (or alert instances) to prevent notification overload. For details on how notification grouping works, refer to [Group alert notifications](ref:grouping).
## View alert groups
In the Groups view, you can see alert groups, check the state of their notifications, and also filter for alert instances that match specific criteria. This view is useful for debugging and verifying your grouping settings of notification policies.
## View alert groups and notification state
To view alert groups, complete the following steps.
1. In the left-side menu, click **Alerts & IRM** and then **Alerting**.
1. Click **Groups** to view the list of existing groups.
1. From the **Alertmanager** dropdown, select an external Alertmanager as your data source. By default, the `Grafana` Alertmanager is selected.
1. From **Custom group by** dropdown, select a combination of labels to view a grouping other than the default. This is useful for debugging and verifying your grouping of notification policies.
1. Click **Alerts & IRM** -> **Alerting**.
1. Click **Groups** to view the list of groups firing notifications.
By default, alert groups are grouped by the notification policies grouping.
Each group displays its label set, contact point, and the number of alert instances (or alerts).
Then, click on a group to access its alert instances. You can find alert instances by their label set and view their notification state.
### Notification states
The notification state of an alert instance can be in one of the following states:
- **Unprocessed**: The alert is received but its notification has not been processed yet.
- **Suppressed**: The alert has been silenced.
- **Active**: The alert notification has been handled. The alert is still firing and continues to be managed.
### Filter alerts
You can filter by label, state, or Alertmanager:
- **By label**: In **Search**, enter an existing label to view alerts matching the label. For example, `environment=production,region=~US|EU,severity!=warning`.
- **By state**: In **States**, select from Active, Suppressed, or Unprocessed states to view alerts matching your selected state. All other alerts are hidden.
- **By Alertmanager**: In the **Alertmanager** dropdown, select an [external Alertmanager](ref:alertmanager) to view only alert groups for that specific Alertmanager. By default, the `Grafana` Alertmanager is selected.
### Custom group
From **Custom group by** dropdown, select a combination of labels to view a grouping other than the default. This helps validate the [grouping settings of your notification policies](ref:grouping).
If an alert does not contain labels specified either in the grouping of the default policy or the custom grouping, then the alert is added to a catch all group with a header of `No grouping`.
## Filter alerts
## View notification errors
You can filter by label or state.
{{% admonition type="note" %}}
### Search by label
Notification errors are only available with [pre-configured Grafana Alertmanagers](ref:alertmanager).
In **Search**, enter an existing label to view alerts matching the label.
{{% /admonition %}}
For example, `environment=production,region=~US|EU,severity!=warning`.
Notification errors provide information about why they failed to be sent or were not received.
### Filter by state
To view notification errors, navigate to **Alerts & IRM** -> **Alerting** -> **Contact points**.
In **States**, select from Active, Suppressed, or Unprocessed states to view alerts matching your selected state. All other alerts are hidden.
Each contact point displays a message about the status of their latest notification deliveries.
If a contact point is failing, a red message indicates that there are errors delivering notifications. Hover over the error message to see the notification error details.

View File

@@ -1,44 +0,0 @@
---
canonical: https://grafana.com/docs/grafana/latest/alerting/manage-notifications/view-notification-errors/
description: View notification errors and understand why they failed to be sent or were not received
keywords:
- grafana
- alerting
- notification
- errors
- contact points
labels:
products:
- cloud
- enterprise
- oss
title: View notification errors
weight: 900
---
# View notification errors
View notification errors and understand why they failed to be sent or were not received.
**Note:**
This feature only works if you are using Grafana Alertmanager.
To view notification errors, complete the following steps.
1. Navigate to Alerting -> Contact points.
If any contact points are failing, a message at the right-hand corner of the screen alerts the user to the fact that there are errors and how many.
2. Click on the contact point to view the details of errors for each contact point.
Error details are displayed if you hover over the Error icon.
If a contact point has more than one integration, you see all errors for each of the integrations listed.
3. In the Health column, check the status of the notification.
This can be either OK, No attempts, or Error.
## Useful links
[Receivers API](https://editor.swagger.io/?url=https://raw.githubusercontent.com/grafana/grafana/main/pkg/services/ngalert/api/tooling/post.json)

View File

@@ -45,7 +45,7 @@ Grafana Alerting has the following permissions.
| `alert.rules:read` | `folders:*`<br>`folders:uid:*` | Read Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder. |
| `alert.rules:write` | `folders:*`<br>`folders:uid:*` | Update Grafana alert rules in a folder and its subfolders. Combine this permission with `folders:read` in a scope that includes the folder and `datasources:query` in the scope of data sources the user can query. |
| `alert.silences:create` | `folders:*`<br>`folders:uid:*` | Create rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read general and rule-specific silences in a folder and its subfolders. |
| `alert.silences:read` | `folders:*`<br>`folders:uid:*` | Read all general silences and rule-specific silences in a folder and its subfolders. |
| `alert.silences:write` | `folders:*`<br>`folders:uid:*` | Update and expire rule-specific silences in a folder and its subfolders. |
| `alert.provisioning:read` | n/a | Read all Grafana alert rules, notification policies, etc via provisioning API. Permissions to folders and data source are not required. |
| `alert.provisioning.secrets:read` | n/a | Same as `alert.provisioning:read` plus ability to export resources with decrypted secrets. |

View File

@@ -18,22 +18,37 @@ weight: 200
## Manage access using folders or data sources
You can further customize access for alert rules by assigning permissions to individual folders or data sources, regardless of role assigned.
You can extend the access provided by a role to alert rules and rule-specific silences by assigning permissions to individual folders or data sources.
{{< admonition type="note" >}}
Data source query permissions are required to create or modify an alert rule using that data source.
{{< /admonition >}}
This allows different users, teams, or service accounts to have customized access to modify or silence alert rules in specific folders or using specific data sources.
Details on the additional access provided by folder permissions are below.
| Folder permission | Additional Access |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| View | Read access to all general silences. Read access to alert rules and their rule-specific silences _only_ in the given folder and subfolders. |
| Edit | View access and write access to alert rules and their rule-specific silences _only_ in the given folder and subfolders. |
| Admin | Same additional access as Edit. |
Some example combinations:
| Role | Folder permission | Access |
| ------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| No Basic Role | - | None. No access to alert rules or rule-specific silences in the folder. |
| No Basic Role | View | Read access to all general silences. Read access to alert rules and their rule-specific silences _only_ in the given folder and subfolders. |
| No Basic Role | Edit | Above access and write access to alert rules (given necessary data source query permissions) and their rule-specific silences _only_ in the given folder and subfolders. |
| Viewer | - | Read access to alert rules and silences in all folders. |
| Viewer | Edit | Read access to alert rules and silences in all folders. Write access to alert rules and their rule-specific silences _only_ in the given folder and subfolders. |
| Editor | View | Read and write access to alert rules and silences in all folders. Access can only be extended. |
{{< admonition type="note" >}}
You can't use folders to customize access to notification resources.
{{< /admonition >}}
Details of how role access can combine with folder permissions for Grafana Alerting are below.
| Role | Folder | Access |
| ------ | ------ | ---------------------------------------------------------------------------------------- |
| Admin | - | Write access to alert rules in all folders. |
| Editor | - | Write access to alert rules in all folders. |
| Viewer | Admin | Write access to alert rules **only** in the folders where the Admin permission is added. |
| Viewer | Edit | Write access to alert rules **only** in the folders where the Edit permission is added. |
| Viewer | View | Read access to alert rules in all folders. |
## Folder permissions
To manage folder permissions, complete the following steps.

View File

@@ -42,19 +42,17 @@ To assign roles, admins need to complete the following steps.
## Manage access using folder permissions
You can further customize access for alert rules by assigning permissions to individual folders.
You can extend the access provided by a role to alert rules and rule-specific silences by assigning permissions to individual folders.
This prevents every user from having access to modify all alert rules and gives them access to the folders with the alert rules they're working on.
This allows different users, teams, or service accounts to have customized access to modify or silence alert rules in specific folders.
Details on the adding folder permissions as well as roles and the access that provides for Grafana Alerting is below.
Refer to the following table for details on the additional access provided by folder permissions:
| Role | Folder permission | Access |
| ------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| Admin | - | Write access to alert rules in all folders. |
| Editor | - | Write access to alert rules in all folders. |
| Viewer | Admin | Read access to alert rules in all folders. Write access to alert rules **only** in the folders where the Admin permission is added. |
| Viewer | Editor | Read access to alert rules in all folders. Write access to alert rules **only** in the folders where the Editor permission is added. |
| Viewer | Viewer | Read access to alert rules in all folders. |
| Folder permission | Additional Access |
| ----------------- | ------------------------------------------------------------------------------------------------------- |
| View | No additional access: all permissions already contained in Viewer role. |
| Edit | Write access to alert rules and their rule-specific silences _only_ in the given folder and subfolders. |
| Admin | Same additional access as Edit. |
{{< admonition type="note" >}}
You can't use folders to customize access to notification resources.

View File

@@ -81,7 +81,7 @@ Grafana legacy alerting (dashboard alerts) has been deprecated since Grafana v9.
#### Migration path
The new Grafana Alerting was introduced in Grafana 8 and is a superset of legacy alerting. Learn how to migrate your alerts in the [Upgrade Alerting documentation]({{< relref "./v10.4/alerting/set-up/migrating-alerts/" >}}).
The new Grafana Alerting was introduced in Grafana 8 and is a superset of legacy alerting. Learn how to migrate your alerts in the [Upgrade Alerting documentation](https://grafana.com/docs/grafana/v10.4/alerting/set-up/migrating-alerts/).
### API keys are migrating to service accounts

View File

@@ -17,46 +17,56 @@ title: Dashboard URL variables
description: Use variables in dashboard URLs to add more context to your links
weight: 250
refs:
add-ad-hoc-filters:
ad-hoc-filters:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/add-template-variables/#add-ad-hoc-filters
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/add-template-variables/#add-ad-hoc-filters
destination: /docs/grafana-cloud/visualizations/dashboards/variables/add-template-variables/#add-ad-hoc-filters
manage-dashboard-links:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/manage-dashboard-links/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/manage-dashboard-links/
linking-overview:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/
template-and-variables:
destination: /docs/grafana-cloud/visualizations/dashboards/build-dashboards/manage-dashboard-links/
variables:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/
destination: /docs/grafana-cloud/visualizations/dashboards/variables/
---
# Dashboard URL variables
Grafana can apply variable values passed as query parameters in dashboard URLs.
For more information, refer to [Manage dashboard links](ref:manage-dashboard-links) and [Templates and variables][].
Dashboard URL [variables](ref:variables) allow you to provide more context when you share a dashboard URL.
## Passing variables as query parameters
For example, you could share a basic URL to your dashboard that looks like this:
Grafana interprets query string parameters prefixed with `var-` as variables in the given dashboard.
```
https://${your-domain}/path/to/your/dashboard
```
For example, in this URL:
This allows someone to navigate to the dashboard, but doesn't provide any helpful context that might be available.
Instead, you can add dashboard variables, passed as query parameters in the dashboard URL, to provide a URL like this:
```
https://${your-domain}/path/to/your/dashboard?var-example=value
```
The query parameter `var-example=value` represents the dashboard variable `example` with a value of `value`.
This allows you to provide added context to the dashboard when someone navigates to it.
### Passing multiple values for a variable
## Variables as query parameters
Grafana interprets query string parameters prefixed with `var-` as variables in the given dashboard.
For example:
```
https://${your-domain}/path/to/your/dashboard?var-example=value
```
In this URL, the query parameter `var-example=value` represents the dashboard variable `example` with a value of `value`.
### Multiple values for a variable
To pass multiple values, repeat the variable parameter once for each value:
@@ -68,34 +78,38 @@ Grafana interprets `var-example=value1&var-example=value2` as the dashboard vari
### Example
This example in [Grafana Play](https://play.grafana.org/d/000000074/alerting?var-app=backend&var-server=backend_01&var-server=backend_03&var-interval=1h) passes the variable `server` with multiple values, and the variables `app` and `interval` with a single value each.
[This dashboard in Grafana Play](https://play.grafana.org/d/000000074/alerting?var-app=backend&var-server=backend_01&var-server=backend_03&var-interval=1h) passes the variable `server` with multiple values, and the variables `app` and `interval` with a single value each.
## Adding variables to dashboard links
## Ad hoc filters
Grafana can add variables to dashboard links when you generate them from a dashboard's settings. For more information and steps to add variables, refer to [Manage dashboard links](ref:manage-dashboard-links).
Ad hoc filters apply key/value filters to all metric queries that use the specified data source. For more information, refer to [Add ad hoc filters](ref:ad-hoc-filters).
## Passing ad hoc filters
To pass an ad hoc filter as a query parameter, use the variable syntax to pass the ad hoc filter variable. Then provide the key, operator, and value as a pipe-separated list.
Ad hoc filters apply key/value filters to all metric queries that use a specified data source. For more information, refer to [Add ad hoc filters](ref:add-ad-hoc-filters).
To pass an ad hoc filter as a query parameter, use the variable syntax to pass the ad hoc filter variable, and also provide the key, the operator as the value, and the value as a pipe-separated list.
For example, in this URL:
For example:
```
https://${your-domain}/path/to/your/dashboard?var-adhoc=example_key|=|example_value
```
The query parameter `var-adhoc=key|=|value` applies the ad hoc filter configured as the `adhoc` dashboard variable using the `example_key` key, the `=` operator, and the `example_value` value.
In this URL, the query parameter `var-adhoc=key|=|value` applies the ad hoc filter configured as the `adhoc` dashboard variable using the `example_key` key, the `=` operator, and the `example_value` value.
{{% admonition type="note" %}}
When sharing URLs with ad hoc filters, remember to encode the URL. In the above example, replace the pipes (`|`) with `%7C` and the equality operator (`=`) with `%3D`.
{{% /admonition %}}
{{< admonition type="note" >}}
When sharing URLs with ad hoc filters, remember to encode the URL. In the preceding example, replace the pipes (`|`) with `%7C` and the equality operator (`=`) with `%3D`.
{{< /admonition >}}
### Example
[This example in Grafana Play](https://play.grafana.org/d/000000002/influxdb-templated?orgId=1&var-datacenter=America&var-host=All&var-summarize=1m&var-adhoc=datacenter%7C%3D%7CAmerica) passes the ad hoc filter variable `adhoc` with the filter value `datacenter = America`.
[This dashboard in Grafana Play](https://play.grafana.org/d/000000002/influxdb-templated?orgId=1&var-datacenter=America&var-host=All&var-summarize=1m&var-adhoc=datacenter%7C%3D%7CAmerica) passes the ad hoc filter variable `adhoc` with the filter value `datacenter = America`.
## Controlling time range using the URL
## Time range control using the URL
To set a dashboard's time range, use the `from`, `to`, `time`, and `time.window` query parameters. Because these are not variables, they do not require the `var-` prefix. For more information, see the [Linking overview](ref:linking-overview).
{{< docs/shared lookup="dashboards/time-range-URLs.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Variables in dashboard links
When you create dashboard links the dashboard settings, you can have current dashboard variables included in the link by selecting that option:
{{< figure src="/media/docs/grafana/dashboards/screenshot-dashboard-link-variables-11.1.png" max-width="500px" alt="Dashboard link page with variables option selected" >}}
For steps to add variables to dashboard links, refer to [Manage dashboard links](ref:manage-dashboard-links).

View File

@@ -26,6 +26,10 @@ Grafana automatically scales dashboards to any resolution, which makes them perf
You can access the Playlist feature from Grafana's side menu, in the Dashboards submenu.
{{< admonition type="note" >}}
You must have at least Editor role permissions to create and manage playlists.
{{< /admonition >}}
## Access, share, and control a playlist
Use the information in this section to access existing playlists. Start and control the display of a playlist using one of the five available modes.

View File

@@ -76,9 +76,9 @@ refs:
destination: /docs/grafana-cloud/visualizations/dashboards/use-dashboards/#set-dashboard-time-range
send-report:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/
destination: /docs/grafana/<GRAFANA_VERSION>/developers/http_api/reporting/#send-a-report
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/
destination: /docs/grafana-cloud/developer-resources/api-reference/http-api/reporting/#send-a-report
smtp:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#smtp
@@ -129,6 +129,7 @@ Only organization administrators can create reports by default. You can customiz
- If you selected the PDF format option:
- Select an orientation for the report: **Portrait** or **Landscape**.
- Select a layout for the generated report: **Simple** or **Grid**. The simple layout renders each panel as full-width across the PDF. The grid layout renders the PDF with the same panel arrangement and width as the source dashboard.
- Select a zoom level for the report. Zoom in to enlarge text in your PDF, or zoom out to see more data (like table columns) per panel.
- Click **Preview PDF** to view a rendered PDF with the options you selected.
1. Schedule report.
- Enter scheduling information. Options vary depending on the frequency selected.

View File

@@ -1,7 +1,4 @@
---
aliases:
- ../features/dashboard/dashboards/
- dashboard-manage/
labels:
products:
- cloud

View File

@@ -1,6 +1,5 @@
---
aliases:
- ../features/dashboard/dashboards/
- ../panels/working-with-panels/organize-dashboard/
- ../reference/dashboard_folders/
- dashboard-folders/

View File

@@ -1,6 +1,5 @@
---
aliases:
- ../features/dashboard/dashboards/
- ../reference/search/
- dashboard-ui/
- dashboard-ui/dashboard-header/
@@ -241,8 +240,4 @@ Selecting the **Auto** interval schedules a refresh based on the query time rang
### Control the time range using a URL
You can control the time range of a dashboard by providing the following query parameters in the dashboard URL:
- `from`: Defines the lower limit of the time range, specified in `ms`, `epoch`, or [relative time](#relative-time-range)
- `to`: Defines the upper limit of the time range, specified in `ms`, `epoch`, or [relative time](#relative-time-range)
- `time` and `time.window`: Defines a time range from `time-time.window/2` to `time+time.window/2`. Both parameters should be specified in `ms`. For example `?time=1500000000000&time.window=10000` results in 10s time range from 1499999995000 to 1500000005000
{{< docs/shared lookup="dashboards/time-range-URLs.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -223,7 +223,7 @@ groupByNode(summarize(movingAverage(apps.$app.$server.counters.requests.count, 5
_Ad hoc filters_ enable you to add key/value filters that are automatically added to all metric queries that use the specified data source. Unlike other variables, you do not use ad hoc filters in queries. Instead, you use ad hoc filters to write filters for existing queries.
{{% admonition type="note" %}}
Ad hoc filter variables only work with Prometheus, Loki, InfluxDB, and Elasticsearch data sources.
Not all data sources support ad hoc filters. Examples of those that do include Prometheus, Loki, InfluxDB, and Elasticsearch.
{{% /admonition %}}
1. [Enter general options](#enter-general-options).

View File

@@ -76,7 +76,7 @@ Once you've added the Loki data source, you can [configure it](#configure-the-da
To troubleshoot configuration and other issues, check the log file located at `/var/log/grafana/grafana.log` on Unix systems, or in `<grafana_install_dir>/data/log` on other platforms and manual installations.
{{% /admonition %}}
## Provision the Loki data source
## Provision the data source
You can define and configure the data source in YAML files as part of Grafana's provisioning system.
For more information about provisioning, and for available configuration options, refer to [Provisioning Grafana](ref:provisioning-data-sources).

View File

@@ -247,6 +247,10 @@ The resulting table panel:
## Use time series queries
{{< admonition type="note" >}}
Store timestamps in UTC to avoid issues with time shifts in Grafana when using non-UTC timezones.
{{< /admonition >}}
If you set the **Format** setting in the query editor to **Time series**, then the query must have a column named `time` that returns either a SQL datetime or any numeric datatype representing Unix epoch in seconds.
Result sets of time series queries must also be sorted by time for panels to properly visualize the result.

View File

@@ -89,7 +89,7 @@ For instructions on how to add a data source to Grafana, refer to the [administr
Only users with the organization `administrator` role can add data sources and edit existing data sources.
Administrators can also [configure the data source via YAML](#provision-the-data-source) with Grafana's provisioning system.
Once you've added the Prometheus data source, you can [configure it](ref:configure-prometheus-data-source) so that your Grafana instance's users can create queries in its [query editor]({{< relref "./query-editor" >}}) when they [build dashboards](ref:build-dashboards), use [Explore](ref:explore), and [annotate visualizations][annotate visualizations].
Once you've added the Prometheus data source, you can [configure it](ref:configure-prometheus-data-source) so that your Grafana instance's users can create queries in its [query editor]({{< relref "./query-editor" >}}) when they [build dashboards](ref:build-dashboards), use [Explore](ref:explore), and [annotate visualizations](ref:annotate-visualizations).
The following guides will help you get started with the Prometheus data source:
@@ -152,7 +152,7 @@ We also bundle a dashboard within Grafana so you can start viewing your metrics
**To import the bundled dashboard:**
1. Navigate to the data source's [configuration page](#configure-the-data-source).
1. Navigate to the data source's [configuration page](ref:configure-prometheus-data-source).
1. Select the **Dashboards** tab.
This displays dashboards for Grafana and Prometheus.

View File

@@ -63,15 +63,19 @@ The first option to configure is the name of your connection:
- **Default** - Toggle to select as the default name in dashboard panels. When you go to a dashboard panel this will be the default selected data source.
### HTTP section
### Connection section
- **URL** - The URL of your Prometheus server. If your Prometheus server is local, use `<http://localhost:9090>`. If it is on a server within a network, this is the URL with port where you are running Prometheus. Example: `<http://prometheus.example.orgname:9090>`.
- **Prometheus server URL** - The URL of your Prometheus server. If your Prometheus server is local, use `http://localhost:9090`. If it is on a server within a network, this is the URL with port where you are running Prometheus. Example: `http://prometheus.example.orgname:9090`.
- **Allowed cookies** - Specify cookies by name that should be forwarded to the data source. The Grafana proxy deletes all forwarded cookies by default.
{{< admonition type="note" >}}
- **Timeout** - The HTTP request timeout. This must be in seconds. There is no default, so this setting is up to you.
If you're running Grafana and Prometheus together in different container environments, each localhost refers to its own container - if the server URL is localhost:9090, that means port 9090 inside the Grafana container, not port 9090 on the host machine.
### Auth section
You should use the IP address of the Prometheus container, or the hostname if you are using Docker Compose. Alternatively, you can consider `http://host.docker.internal:9090`.
{{< /admonition >}}
### Authentication section
There are several authentication methods you can choose in the Authentication section.
@@ -99,10 +103,16 @@ Use TLS (Transport Layer Security) for an additional layer of security when work
- **Value** - The value of the header.
## Additional settings
## Advanced settings
Following are additional configuration options.
### Advanced HTTP settings
- **Allowed cookies** - Specify cookies by name that should be forwarded to the data source. The Grafana proxy deletes all forwarded cookies by default.
- **Timeout** - The HTTP request timeout. This must be in seconds. The default is 30 seconds.
### Alerting
- **Manage alerts via Alerting UI** - Toggle to enable `Alertmanager` integration for this data source.
@@ -121,12 +131,14 @@ Following are additional configuration options.
### Performance
- **Prometheus type** - The type of your Prometheus server. There are four options: `Prometheus`, `Cortex`, `Thanos`, `Mimir`.
- **Prometheus type** - The type of your Prometheus server. There are four options: `Prometheus`, `Cortex`, `Mimir`, and `Thanos`.
- **Version** Select the version you are using. Once the Prometheus type has been selected, a list of versions auto-populates using the Prometheus [buildinfo](https://semver.org/) API. The `Cortex` Prometheus type does not support this API so you will need to manually add the version.
- **Cache level** - The browser caching level for editor queries. There are four options: `Low`, `Medium`, `High`, or `None`.
- **Incremental querying (beta)** - Changes the default behavior of relative queries to always request fresh data from the Prometheus instance. Enable this option to decrease database and network load.
- **Disable recording rules (beta)** - Toggle on to disable the recording rules. Enable this option to improve dashboard performance.
### Other
- **Custom query parameters** - Add custom parameters to the Prometheus query URL. For example `timeout`, `partial_response`, `dedup`, or `max_source_resolution`. Multiple parameters should be concatenated together with an '&amp;'.

View File

@@ -21,24 +21,24 @@ weight: 1150
refs:
flame-graph:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/flame-graph/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/flame-graph/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/flame-graph/
destination: https://grafana.com/docs/grafana-cloud/visualizations/panels-visualizations/visualizations/flame-graph/
configure-tempo-data-source:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source/
- pattern: /docs/grafana-cloud/
destination: docs/grafana-cloud/connect-externally-hosted/data-sources/tempo/configure-tempo-data-source/
destination: https://grafana.com/docs/grafana-cloud/connect-externally-hosted/data-sources/tempo/configure-tempo-data-source/
explore:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/explore/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/explore/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/
provisioning-data-sources:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/administration/provisioning/#datasources
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/provisioning/#datasources
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/administration/provisioning/#datasources
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/provisioning/#datasources
---
# Grafana Pyroscope data source
@@ -73,9 +73,9 @@ For more information, refer to the [Traces to profile section](ref:configure-tem
{{< youtube id="AG8VzfFMLxo" >}}
## Provision the Grafana Pyroscope data source
## Provision the Pyroscope data source
You can modify the Grafana configuration files to provision the Grafana Pyroscope data source.
You can modify the Grafana configuration files to provision the Pyroscope data source.
To learn more, and to view the available provisioning settings, refer to [provisioning documentation](ref:provisioning-data-sources).
Here is an example configuration:

View File

@@ -42,16 +42,89 @@ To configure basic settings for the data source, complete the following steps:
1. Click **Connections** in the left-side menu.
1. Under Your connections, click **Data sources**.
1. Enter `Grafana Pyroscope` in the search bar.
1. Select **Add new data source**.
1. Click **Grafana Pyroscope** to display the **Settings** tab of the data source.
1. Set the data source's basic configuration options.
1. Select **Save & test**.
1. Set the data source's basic configuration options:
## Configuration options
| Name | Description |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Name` | A name to specify the data source in panels, queries, and Explore. |
| `Default` | The default data source will be pre-selected for new panels. |
| `URL` | The URL of the Grafana Pyroscope instance, for example, `http://localhost:4100`. |
| `Basic Auth` | Enable basic authentication to the data source. |
| `User` | User name for basic authentication. |
| `Password` | Password for basic authentication. |
| `Minimal step` | Used for queries returning timeseries data. The Pyroscope backend, similar to Prometheus, scrapes profiles at certain intervals. To prevent querying at smaller interval, use Minimal step same or higher than your Pyroscope scrape interval. This prevents returning too many data points to the frontend. |
You can configure several options for the Pyroscope data source, including the name, HTTP, authentication, querying, and private data source connect.
If you make any changes, select **Save & test** to preserve those changes.
![Configuration options for the Pyroscope data source](/media/docs/grafana/data-sources/screenshot-pyroscope-data-source-config.png)
### Name and default
**Name**
: Enter a name to specify the data source in panels, queries, and Explore.
**Default**
: The default data source is pre-selected for new panels.
### HTTP
The HTTP section is shown in number 1 in the screenshot.
**URL**
: The URL of the Grafana Pyroscope instance, for example, `https://localhost:4100`.
**Allowed cookies**
: The Grafana Proxy deletes forwarded cookies. Use this field to specify cookies by name that should be forwarded to the data source.
**Timeout**
: HTTP request timeout in seconds.
### Auth
The Auth section is shown in number 2 in the screenshot.
**Basic auth**
: Enable basic authentication to the data source. When activated, it provides **User** and **Password** fields.
**With Credentials**
: Whether credentials, such as cookies or auth headers, should be sent with cross-site requests.
**TLS Client Auth**
: Toggle on to use client authentication. When enabled, it adds the **Server name**, **Client cert**, and **Client key** fields. The client provides a certificate that is validated by the server to establish the client's trusted identity. The client key encrypts the data between client and server. These details are encrypted and stored in the Grafana database.
**With CA Cert**
: Activate this option to verify self-signed TLS certificates.
**Skip TLS Verify**
: When activated, it bypasses TLS certificate verification.
**Forward OAuth Identity**
: When activated, the users upstream OAuth 2.0 identity is forwarded to the data source along with their access token.
**Custom HTTP Headers**
: Select Add header to add Header and Value fields.
**Header**
: Add a custom header. This allows custom headers to be passed based on the needs of your Pyroscope instance.
**Value**
: The value of the header.
### Querying
The **Querying** section is shown in number 3 in the screenshot.
**Minimum step** is used for queries returning time-series data. The default value is 15 seconds.
Adjusting this option can help prevent gaps when you zoom in to profiling data.
### Private data source connect
The **Private data source connect** section is shown in number 4 in the screenshot.
This feature is only available in Grafana Cloud.
This option lets you query data that lives within a secured network without opening the network to inbound traffic from Grafana Cloud.
Use the drop-down box to select a configured private data sources.
Select **Manage private data source connect** to configure and manage any private data sources you have configured.
For more information, refer to [Private data source connect](https://grafana.com/docs/grafana-cloud/connect-externally-hosted/private-data-source-connect/).

View File

@@ -31,22 +31,22 @@ refs:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/node-graph/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/node-graph/
destination: https://grafana.com/docs/grafana-cloud/visualizations/panels-visualizations/visualizations/node-graph/
configure-tempo-data-source:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source/#provision-the-data-source
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source/#provision-the-data-source
- pattern: /docs/grafana-cloud/
destination: docs/grafana-cloud/connect-externally-hosted/data-sources/tempo/configure-tempo-data-source/#provision-the-data-source
destination: https://grafana.com/docs/grafana-cloud/connect-externally-hosted/data-sources/tempo/configure-tempo-data-source/
exemplars:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/fundamentals/exemplars/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/fundamentals/exemplars/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/fundamentals/exemplars/
destination: https://grafana.com/docs/grafana/<GRAFANA_VERSION>/fundamentals/exemplars/
variable-syntax:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/variable-syntax/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/variable-syntax/
destination: https://grafana.com/docs/grafana-cloud/visualizations/dashboards/variables/variable-syntax/
explore-trace-integration:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/explore/trace-integration/

View File

@@ -84,9 +84,9 @@ This video explains how to add data sources, including Loki, Tempo, and Mimir, t
## Trace to logs
![Trace to logs settings](/media/docs/tempo/tempo-trace-to-logs-9-4.png)
The **Trace to logs** setting configures [trace to logs](ref:explore-trace-integration) that's available when you integrate Grafana with Tempo.
The **Trace to logs** setting configures the [trace to logs feature](ref:explore-trace-integration) that is available when you integrate Grafana with Tempo.
![Trace to logs settings](/media/docs/tempo/tempo-trace-to-logs-9-4.png)
There are two ways to configure the trace to logs feature:
@@ -100,8 +100,9 @@ There are two ways to configure the trace to logs feature:
You can also click **Open advanced data source picker** to see more options, including adding a data source.
1. Set start and end time shift. As the logs timestamps may not exactly match the timestamps of the spans in trace it may be necessary to search in larger or shifted time range to find the desired logs.
1. Select which tags to use in the logs query. The tags you configure must be present in the span's attributes or resources for a trace to logs span link to appear. You can optionally configure a new name for the tag. This is useful, for example, if the tag has dots in the name and the target data source does not allow using dots in labels. In that case, you can for example remap `http.status` (the span attribute) to `http_status` (the data source field). "Data source" in this context can refer to Loki, or another log data source.
1. Optionally switch on the **Filter by trace ID** and/or **Filter by span ID** setting to further filter the logs if your logs consistently contain trace or span IDs.
1. Select which tags to use in the logs query.
The tags you configure must be present in the span's attributes or resources for a trace to logs span link to appear. You can optionally configure a new name for the tag. This is useful, for example, if the tag has dots in the name and the target data source does not allow using dots in labels. In that case, you can for example remap `http.status` (the span attribute) to `http_status` (the data source field). "Data source" in this context can refer to Loki, or another log data source.
1. Optional: If your logs consistently trace or span IDs, you can use one or both of the **Filter by trace ID** and **Filter by span ID** settings.
### Configure a custom query
@@ -141,19 +142,33 @@ There are two ways to configure the trace to metrics feature:
- Use a basic configuration with a default query, or
- Configure one or more custom queries where you can use a [template language](ref:variable-syntax) to interpolate variables from the trace or span.
### Simple config
Refer to the Trace to metrics configuration options section to learn about the available options.
### Set up a simple configuration
To use a simple configuration, follow these steps:
1. Select a metrics data source from the **Data source** drop-down.
1. Optional: Change **Span start time shift** and **Span end time shift**. You can change one or both of these settings. The default start time shift is -2 minutes and 2 minutes for end time shift.
1. Optional: Choose any tags to use in the query. If left blank, the default values of `cluster`, `hostname`, `namespace`, `pod`, `service.name` and `service.namespace` are used.
The tags you configure must be present in the spans attributes or resources for a trace to metrics span link to appear. You can optionally configure a new name for the tag. This is useful for example if the tag has dots in the name and the target data source doesn't allow using dots in labels. In that case you can for example remap `service.name` to `service_name`.
1. Do not select **Add query**.
1. Don't select **Add query**.
1. Select **Save and Test**.
### Custom queries
### Set up custom queries
To use custom queries, you need to configure the tags youd like to include in the linked queries.
For each tag, the key is the span attribute name.
In cases where the attribute name would result in an invalid metrics query or doesnt exactly match the desired label name, you can enter the label name as the second value.
For example, you could map the attribute `k8s.pod` to the label `pod`.
You can interpolate the configured tags using the `$__tags` keyword.
For example, when you configure the query `requests_total{$__tags}` with the tags `k8s.pod=pod` and `cluster`, it results in `requests_total{pod="nginx-554b9", cluster="us-east-1"}`.
The label values are dynamically inserted based on the span attributes values.
You can link to any metric youd like, but metrics for span durations, counts, and errors filtered by service or span are a great starting point.
To use custom queries with the configuration, follow these steps:
@@ -174,7 +189,7 @@ To use custom queries with the configuration, follow these steps:
1. Select **Save and Test**.
### Configure trace to metrics
### Trace to metrics configuration options
| Setting name | Description |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -273,8 +288,8 @@ datasources:
# Field with an internal link pointing to a logs data source in Grafana.
# datasourceUid value must match the uid value of the logs data source.
datasourceUid: 'loki'
spanStartTimeShift: '1h'
spanEndTimeShift: '-1h'
spanStartTimeShift: '-1h'
spanEndTimeShift: '1h'
tags: ['job', 'instance', 'pod', 'namespace']
filterByTraceID: false
filterBySpanID: false

View File

@@ -72,7 +72,7 @@ You use the Service Graph to detect performance issues; track increases in error
## Display the Service Graph
1. [Configure Grafana Agent](/docs/tempo/latest/configuration/grafana-agent/) or [Tempo or GET](/docs/tempo/latest/metrics-generator/service_graphs/#tempo) to generate Service Graph data.
1. [Configure Grafana Alloy](https://grafana.com/docs/tempo/latest/configuration/grafana-alloy/) or [Tempo or GET](https://grafana.com/docs/tempo/latest/metrics-generator/service_graphs/#tempo) to generate Service Graph data.
1. Link a Prometheus data source in the Tempo data source's [Service Graph]({{< relref "./configure-tempo-data-source#configure-service-graph" >}}) settings.
1. Navigate to [Explore](ref:explore).
1. Select the Tempo data source.

View File

@@ -61,7 +61,12 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/administration/data-source-management/
---
# Span Filters
# Span filters
When working with traces, especially those comprising a vast number of spans, pinpointing specific spans of interest can be a daunting task.
This is where span filtering comes in.
Located above the trace view, span filters allow you to refine the spans displayed based on specific criteria.
Whether youre looking to identify spans from a certain service, those exceeding a particular duration, or spans tagged with specific attributes, span filtering streamlines the process.
Using span filters, you can filter your spans in the trace timeline viewer. The more filters you add, the more specific are the filtered spans.
@@ -74,6 +79,27 @@ You can add one or more of the following filters:
- Duration
- Tags (which include tags, process tags, and log fields)
To only show the spans you have matched, select the `Show matches only` toggle.
{{< youtube id="VP2XV3IIc80" >}}
<!-- Adding these in case they are needed. -->
## Use span filters
You can access span filters from within the trace view. You can add one or more filters.
The more filters you add, the more specific data that you are filtering.
1. Expand a trace to view individual spans.
1. Select a span to view the span details.
1. Select **Span Filters** to display the available filters.
![Locate span filters in trace view](/media/docs/grafana/data-sources/tempo-span-filters-find.gif)
Query results in the span view update as you select filters.
### Show matches only
For a more focused view, the **Show matches only** toggle ensures only the spans meeting your criteria are displayed. This is particularly useful when sifting through thousands of spans, allowing you to zero in on those that truly matter.
For instance, if youre keen on understanding why a specific request is lagging, or if youre on the hunt for spans without a certain tag, span filtering is your go-to tool.
It even lets you search for spans based on specific tag keys, like cluster.
### Remove a filter
To remove a filter, select the **X** next to the line item.

View File

@@ -10,141 +10,53 @@ labels:
- cloud
- enterprise
- oss
menuTitle: Explore
title: Explore
weight: 90
hero:
title: Explore
level: 1
width: 110
height: 110
description: >-
Use Explore to query, collect, and analyze data for detailed real-time data analysis.
cards:
title_class: pt-0 lh-1
items:
- title: Get started with Explore
href: ./get-started-with-explore/
description: Get started using Explore to create queries and do real-time analysis on your data.
height: 24
- title: Query management
href: ./query-management/
description: Learn how to manage queries in Explore.
height: 24
- title: Query inspector in Explore
href: ./explore-inspector/
description: Learn how to use the Query inspector to troubleshoot issues with your queries.
height: 24
- title: Logs in Explore
href: ./logs-integration/
description: Learn about working with logs and log data in Explore.
height: 24
- title: Traces in Explore
href: ./trace-integration/
description: Learn about working with traces and tracing data in Explore.
height: 24
- title: Correlations editor in Explore
href: ./correlations-editor-in-explore/
description: Learn how to create and use Correlations.
height: 24
---
# Explore
{{< docs/hero-simple key="hero" >}}
Grafana's dashboard UI is all about building dashboards for visualization. Explore strips away the dashboard and panel options so that you can focus on the query. It helps you iterate until you have a working query and then think about building a dashboard.
---
> Refer to [Role-based access control]({{< relref "../administration/roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can control access with role-based permissions.
## Overview
If you just want to explore your data and do not want to create a dashboard, then Explore makes this much easier. If your data source supports graph and table data, then Explore shows the results both as a graph and a table. This allows you to see trends in the data and more details at the same time. See also:
Explore is your starting point for querying, analyzing, and aggregating data in Grafana. You can quickly begin creating queries to start analyzing data without having to create a dashboard or customize a visualization.
- [Query management in Explore]({{< relref "query-management/" >}})
- [Logs integration in Explore]({{< relref "logs-integration/" >}})
- [Trace integration in Explore]({{< relref "trace-integration/" >}})
- [Explore metrics]({{< relref "explore-metrics/" >}})
- [Correlations Editor in Explore]({{< relref "correlations-editor-in-explore/" >}})
- [Inspector in Explore]({{< relref "explore-inspector/" >}})
## Explore
## Start exploring
{{< youtube id="1q3YzX2DDM4" >}}
> Refer to [Role-based access Control]({{< relref "../administration/roles-and-permissions/access-control/" >}}) in Grafana Enterprise to understand how you can manage Explore with role-based permissions.
In order to access Explore, you must have an editor or an administrator role, unless the [viewers_can_edit option]({{< relref "../setup-grafana/configure-grafana/#viewers_can_edit" >}}) is enabled. Refer to [About users and permissions]({{< relref "../administration/roles-and-permissions/" >}}) for more information on what each role has access to.
{{% admonition type="note" %}}
If you are using Grafana Cloud, open a [support ticket in the Cloud Portal](/profile/org#support) to enable the `viewers_can_edit` option
{{% /admonition %}}
To access Explore:
1. Click on the Explore icon on the menu bar.
An empty Explore tab opens.
Alternately to start with an existing query in a panel, choose the Explore option from the Panel menu. This opens an Explore tab with the query from the panel and allows you to tweak or iterate in the query outside of your dashboard.
{{< figure src="/media/docs/grafana/panels-visualizations/screenshot-panel-menu-10.1.png" class="docs-image--no-shadow" max-width= "650px" caption="Screenshot of the panel menu including the Explore option" >}}
1. Choose your data source from the drop-down in the top left.
You can also click **Open advanced data source picker** to see more options, including adding a data source (Admins only).
1. Write the query using a query editor provided by the selected data source. Please check [data sources documentation]({{< relref "../datasources" >}}) to see how to use various query editors.
1. For general documentation on querying data sources in Grafana, see [Query and transform data]({{< relref "../panels-visualizations/query-transform-data" >}}).
1. Run the query using the button in the top right corner.
## Split and compare
The split view provides an easy way to compare visualizations side-by-side or to look at related data together on one page.
To open the split view:
1. Click the split button to duplicate the current query and split the page into two side-by-side queries.
It is possible to select another data source for the new query which for example, allows you to compare the same query for two different servers or to compare the staging environment to the production environment.
{{< figure src="/media/docs/grafana/panels-visualizations/screenshot-explore-split-10.1.png" max-width= "950px" caption="Screenshot of Explore screen split" >}}
In split view, timepickers for both panels can be linked (if you change one, the other gets changed as well) by clicking on one of the time-sync buttons attached to the timepickers. Linking of timepickers helps with keeping the start and the end times of the split view queries in sync. It ensures that youre looking at the same time interval in both split panels.
To close the newly created query, click on the Close Split button.
## Content outline
The content outline is a side navigation bar that keeps track of the queries and visualization panels you created in Explore. It allows you to navigate between them quickly.
The content outline also works in a split view. When you are in split view, the content outline is generated for each pane.
To open the content outline:
1. Click the Outline button in the top left corner of the Explore screen.
You can then click on any panel icon in the content outline to navigate to that panel.
## Share Explore URLs
When using Explore, the URL in the browser address bar updates as you make changes to the queries. You can share or bookmark this URL.
{{% admonition type="note" %}}
Explore may generate relatively long URLs, some tools, like messaging or videoconferencing apps, may truncate messages to a fixed length. In such cases Explore will display a warning message and load a default state. If you encounter issues when sharing Explore links in such apps, you can generate shortened links. See [Share shortened link](#share-shortened-link) for more information.
{{% /admonition %}}
### Generating Explore URLs from external tools
Because Explore URLs have a defined structure, you can build a URL from external tools and open it in Grafana. The URL structure is:
```
http://<grafana_url>/explore?panes=<panes>&schemaVersion=<schema_version>&orgId=<org_id>
```
where:
- `org_id` is the organization ID
- `schema_version` is the schema version (should be set to the latest version which is `1`)
- `panes` is a url-encoded JSON object of panes, where each key is the pane ID and each value is an object matching the following schema:
```
{
datasource: string; // the pane's root datasource UID, or `-- Mixed --` for mixed datasources
queries: {
refId: string; // an alphanumeric identifier for this query, must be unique within the pane, i.e. "A", "B", "C", etc.
datasource: {
uid: string; // the query's datasource UID ie: "AD7864H6422"
type: string; // the query's datasource type-id, i.e: "loki"
}
// ... any other datasource-specific query parameters
}[]; // array of queries for this pane
range: {
from: string; // the start time, in milliseconds since epoch
to: string; // the end time, in milliseconds since epoch
}
}
```
{{% admonition type="note" %}}
The `from` and `to` also accept relative ranges defined in [Time units and relative ranges]({{< relref "../dashboards/use-dashboards/#time-units-and-relative-ranges" >}}).
{{% /admonition %}}
## Share shortened link
{{% admonition type="note" %}}
Available in Grafana 7.3 and later versions.
{{% /admonition %}}
The Share shortened link capability allows you to create smaller and simpler URLs of the format /goto/:uid instead of using longer URLs with query parameters. To create a shortened link to the executed query, click the **Share** option in the Explore toolbar.
A shortened link that is not accessed will automatically get deleted after a [configurable period](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#short_links) (defaulting to seven days). If a link is used at least once, it won't be deleted.
### Sharing shortened links with absolute time
{{% admonition type="note" %}}
Available in Grafana 10.3 and later versions.
{{% /admonition %}}
Short links have two options - keeping relative time (for example, from two hours ago to now) or absolute time (for example, from 8am to 10am). Sharing a shortened link by default will copy the time range selected, relative or absolute. Clicking the dropdown button next to the share shortened link button and selecting one of the options under "Time-Sync URL Links" will allow you to create a short link with the absolute time - meaning anyone receiving the link will see the same data you are seeing, even if they open the link at another time. This will not affect your selected time range.
{{< card-grid key="cards" type="simple" >}}

View File

@@ -1,97 +1,87 @@
---
description: Learn more about the Query inspector in Grafana Explore.
labels:
products:
- cloud
- enterprise
- oss
title: Inspector in Explore
weight: 400
keywords:
- Explore
title: Query inspector in Explore
weight: 40
---
# Inspector in Explore
# Query inspector in Explore
The inspector helps you understand and troubleshoot your queries. You can inspect the raw data, export that data to a comma-separated values (CSV) file, export log results in TXT format, and view query requests.
The Query inspector in Grafana Explore gives you detailed statistics regarding your query, which helps you understand and troubleshoot issues with your queries. Query inspector also lets you inspect raw data, export data to a comma-separated values (CSV) file, export log results in TXT format, and view query requests.
## Inspector UI
## Query inspector UI
The inspector has following tabs:
- **Stats tab -** Shows how long your query takes and how much it returns.
- **Query tab -** Shows you the requests to the server sent when Grafana queries the data source.
- **JSON tab -** Allows you to view and copy the data JSON and data frame structure JSON.
- **Data tab -** Shows the raw data returned by the query.
- **Error tab -** Shows the error. Only visible when query returns error.
## Inspector tasks
You can perform a variety of tasks in the Explore inspector.
### Open the Inspector
To open Query inspector:
1. Go to the Explore page.
1. Run the query you would like to inspect.
1. Click the **Inspector** button.
1. Click **Query inspector**.
The inspector pane opens on the bottom of the screen.
The Query inspector pane opens on the bottom of the Explore page, where you see the following tabs:
### Inspect raw query results
- **Stats tab -** Shows statistics regarding the query, including the amount of time it takes to run the query, data processing time and the amount of data returned.
- **Query tab -** Provides raw request and response data and time when Grafana queries the data source.
- **JSON tab -** Allows you to view and copy the JSON data and the JSON data frame structure.
- **Data tab -** Shows the raw data returned by the query. You can download the information to a CSV file.
- **Error tab -** Shows any errors. _Only visible if the query returns an error._
You can view raw query results, that is the data returned by the query in a table.
## Query inspector Stats tab
In the **Inspector** tab, click the **Data** tab.
You can inspect query performance in the **Stats tab**, which displays statistics that tell you how long your query takes, how many queries you send, the number of rows returned and trace IDs. This information can help you troubleshoot your queries, especially if any of the numbers are unexpectedly high or low.
For multiple queries or for queries multiple nodes, there are additional options.
1. Open the inspector.
1. Click the **Stats tab**.
- **Show data frame:** Select the result set data you want to view.
- **Series joined by time:** View the raw data from all of your queries at once, one result set per column. You can click a column heading to sort the data.
Statistics display in read-only format.
### Download raw query results as CSV
## Query inspector Query tab
Grafana generates a CSV file in your default browser download location. You can open it in the viewer of your choice.
View raw request and response in the Query tab.
1. In the **Inspector** tab, get raw query results by following the instructions [described in Inspect raw query results](#inspect-raw-query-results).
1. Refine query settings until you can see the raw data that you want to export.
1. Click **Download CSV**.
1. Open the Query inspector and click the **Query tab**.
1. Click **Refresh**.
In order to download a CSV file specifically formatted for Excel, expand **Data options** and then enable the **Download for Excel** toggle before you click the **Download CSV** option.
Grafana sends the query to the server and displays the result. You can drill down on specific portions of the query, expand or collapse all of it. Click **Copy to clipboard** to copy the data to use in other applications.
## Query inspector JSON tab
View data results as JSON and as data frame JSON models in the **JSON tab**.
1. Open the Query inspector and click the **JSON tab**.
1. Choose one of the following options from the **Select source** dropdown menu:
- **Panel data -** Displays a JSON object representing the data retrieved by the visualization from Explore.
- **DataFrame JSON (from query) -** Displays the raw data result set without transformations and field configuration applied.
## Query inspector Data tab
View, inspect and download raw query results in the **Data tab**.
1. Open the Query inspector and click the **Data** tab.
1. Click **Data options** to to view options under **Show data frame**.
1. Select a data results set from the dropdown menu.
1. For multiple queries or for queries multiple nodes, you can select **Series joined by time** from the dropdown to view the raw data from all of your queries at once, one result set per column. You can click any column heading to sort the data.
1. Toggle **Formatted data** to match the format in the panel.
1. Toggle **Download for Excel** to download a CSV file specifically formatted for Excel.
1. To download the results to a CSV file click **Download CSV** in the upper right of the Query inspector pane.
### Download log results as TXT
Grafana generates a TXT file in your default browser download location. You can open it in the viewer of your choice.
Based on the type of data source (Loki, for example), or when logs are present in the results set, Grafana generates a TXT file of log raw data results in your default browser download location. You can open it in the viewer of your choice.
1. Open the inspector.
1. Inspect the log query results as described above.
1. Click **Query inspector**.
1. Click the **Data tab** to view log query results.
1. Click **Download logs**.
### Download trace results
Based on the data source type, Grafana generates a JSON file for the trace results in one of the supported formats: Jaeger, Zipkin, or OTLP formats.
Based on the data source type (Tempo, for example), Grafana generates a JSON file for trace results in one of these supported formats: Jaeger, Zipkin, or OTLP.
1. Open the inspector.
1. Inspect the trace query results [as described above](#inspect-raw-query-results).
1. Click **Query inspector**.
1. Click the **Data tab** to view traces results.
1. Click **Download traces**.
### Inspect query performance
The Stats tab displays statistics that tell you how long your query takes, how many queries you send, and the number of rows returned. This information can help you troubleshoot your queries, especially if any of the numbers are unexpectedly high or low.
1. Open the inspector.
1. Navigate to the **Stats** tab.
Statistics are displayed in read-only format.
### View JSON model
You can explore and export data as well as data frame JSON models.
1. In the Inspector panel, click the **JSON** tab.
1. From the Select source dropdown, choose one of the following options:
- **Data -** Displays a JSON object representing the data that was returned to Explore.
- **DataFrame structure -** Displays the raw result set.
1. You can expand or collapse portions of the JSON to view separate sections. You can also click the **Copy to clipboard** option to copy JSON body and paste it into another application.
### View raw request and response to data source
1. Open the panel inspector and then click the **Query** tab.
1. Click **Refresh**.
Grafana sends the query to the server and displays the result. You can drill down on specific portions of the query, expand or collapse all of it, or copy the data to the clipboard to use in other applications.

View File

@@ -6,7 +6,8 @@ labels:
- oss
title: Explore Metrics
aliases:
description: This topic describes the Explore Metrics feature
canonical: https://grafana.com/docs/grafana/latest/explore/explore-metrics/
description: Explore Metrics lets you browse Prometheus-compatible metrics using an intuitive, queryless experience.
weight: 200
---
@@ -20,13 +21,15 @@ Explore Metrics is currently in [public preview](/docs/release-life-cycle/). Gra
With Explore Metrics, you can:
- easily slice and dice metrics based on their labels, so you can immediately see anomalies and identify issues
- see the right visualization for your metric based on its type (gauge vs. counter, for example) without building it yourself
- surface other metrics relevant to the current metric
-explore in a drawer” - expand a drawer over a dashboard with more content so you dont lose your place
- view a history of user steps when navigating through metrics and their filters
- Easily slice and dice metrics based on their labels, so you can immediately see anomalies and identify issues
- See the right visualization for your metric based on its type (gauge vs. counter, for example) without building it yourself
- Surface other metrics relevant to the current metric
-Explore in a drawer” - expand a drawer over a dashboard with more content so you dont lose your place
- View a history of user steps when navigating through metrics and their filters
<!-- - easily pivot to other related telemetry, including logs or traces -->
{{< docs/play title="Explore Metrics" url="https://play.grafana.org/explore/metrics/trail?from=now-1h&to=now&var-ds=grafanacloud-demoinfra-prom&var-filters=&refresh=&metricPrefix=all" >}}
You can access Explore Metrics either as a standalone experience or as part of Grafana dashboards.
## Standalone experience

View File

@@ -0,0 +1,208 @@
---
aliases:
-
keywords:
- explore
- loki
- logs
labels:
products:
- cloud
- enterprise
- oss
title: Get started with Explore
weight: 5
---
# Get started with Explore
Explore is your gateway for querying, analyzing, and aggregating data in Grafana. It allows you to visually explore and iterate until you develop a working query or set of queries for building visualizations and conducting data analysis. If your data source supports graph and table data, there's no need to create a dashboard, as Explore can display the results in both formats. This facilitates quick, detailed, real-time data analysis.
With Explore you can:
- Create visualizations to integrate into your dashboards.
- Create queries using mixed data sources.
- Create multiple queries within a single interface.
- Understand the shape of your data across various data sources.
- Perform real time data exploration and analysis.
Key features include:
- Query editor, based on specific data source, to create and iterate queries.
- [Query history](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/query-management/) to track and maintain your queries.
- [Query inspector](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/explore-inspector/) to help troubleshoot query performance.
Watch the following video to get started using Explore:
{{< youtube id="1q3YzX2DDM4" >}}
## Before you begin
In order to access Explore, you must have either the `editor` or `administrator` role, unless the [`viewers_can_edit` option](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#viewers_can_edit) is enabled. Refer to [Role and permissions](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/roles-and-permissions/) for more information on what each role can access.
Refer to [Role-based access control (RBAC)](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/roles-and-permissions/access-control/) in Grafana Enterprise to understand how you can manage Explore with role-based permissions.
{{< admonition type="note" >}}
If you are using Grafana Cloud, open a [support ticket in the Cloud Portal](/https://grafana.com/auth/sign-in) to enable the `viewers_can_edit` option.
{{< /admonition >}}
## Explore elements
Explore consists of a toolbar, outline, query editor, the ability to add multiple queries, a query history and a query inspector.
- **Outline** - Keeps track of the queries and visualization panels created in Explore. Refer to [Content outline](#content-outline) for more detail.
- **Toolbar** - Provides quick access to frequently used tools and settings.
- **Data source picker** - Select a data source from the dropdown menu, or use absolute time.
- **Split** - Click to compare visualizations side by side. Refer to [Split and compare](#split-and-compare) for additional detail.
- **Add** - Click to add your exploration to a dashboard. You can also use this to declare an incident,create a forecast, detect outliers and to run an investigation.
- **Time picker** - Select a time range form the time picker. You can also enter an absolute time range. Refer to [Time picker](#time-picker) for more information.
- **Run query** - Click to run your query.
- **Query editor** - Interface where you construct the query for a specific data source. Query editor elements differ based on data source. In order to run queries across multiple data sources you need to select **Mixed** from the data source picker.
- **+Add query** - Add additional queries.
- **Query history** - Query history contains the list of queries that you created in Explore. Refer to [Query history](/docs/grafana/<GRAFANA_VERSION>/explore/query-management/#query-history) for detailed information on working with your query history.
- **Query inspector** - Provides detailed statistics regarding your query. Inspector functions as a kind of debugging tool that "inspects" your query. It provides query statistics under **Stats**, request response time under **Query**, data frame details under **{} JSON**, and the shape of your data under **Data**. Refer to [Query inspector in Explore](/docs/grafana/latest/explore/explore-inspector/) for additional information.
## Access Explore
To access Explore:
1. Click on **Explore** in the left side menu.
To start with an existing query from a dashboard panel, select the Explore option from the Panel menu in the upper right. This opens an Explore page with the panel's query, enabling you to tweak or iterate the query outside your dashboard.
{{< figure src="/media/docs/grafana/panels-visualizations/screenshot-panel-menu-10.1.png" class="docs-image--no-shadow" caption="Panel menu with Explore option" >}}
1. Select a data source from the drop-down in the upper left.
1. Using the query editor provided for the specific data source, begin writing your query. Each query editor differs based on each data source's unique elements.
Some query editors provide a **Kick start your query** option, which gives you a list of basic pre-written queries. Refer to [Use query editors](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/datasources/#use-query-editors) to see how to use various query editors. For general information on querying data sources in Grafana, refer to [Query and transform data](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data/).
Based on specific data source, certain query editors allow you to select the label or labels to add to your query. Labels are fields that consist of key/value pairs representing information in the data. Some data sources allow for selecting fields.
1. Click **Run query** in the upper right to run your query.
## Content outline
The content outline is a side navigation bar that keeps track of the queries and visualizations you created in Explore. It allows you to navigate between them quickly.
The content outline works in a split view, with a separate outline generated for each pane.
To open the content outline:
1. Click the Outline button in the top left corner of the Explore screen.
You can then click on any panel icon in the content outline to navigate to that panel.
## Split and compare
The split view enables easy side-by-side comparison of visualizations or simultaneous viewing of related data on a single page.
To open the split view:
1. Click the split button to duplicate the current query and split the page into two side-by-side queries.
1. Run and re-run queries as often as needed.
You can select a different data source, or different metrics and label filters for the new query, allowing you to compare the same query across two different servers or compare the staging environment with the production environment.
{{< figure src="/media/docs/grafana/panels-visualizations/screenshot-explore-split-10.1.png" max-width= "950px" caption="Screenshot of Explore screen split" >}}
You can also link the time pickers for both panels by clicking on one of the time-sync buttons attached to the time pickers. When linked, changing the time in one panel automatically updates the other, keeping the start and end times synchronized. This ensures that both split panels display data for the same time interval.
Click **Close** to quit split view.
## Time picker
Use the time picker to select a time range for your query. The default is **last hour**. You can select a different option from the dropdown or use an absolute time range. You can also change the timezone associated with the query, or use a fiscal year.
1. Click **Change time settings** to change the timezone or apply a fiscal year.
Refer to [Set dashboard time range](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/use-dashboards/#set-dashboard-time-range) for more information on absolute and relative time ranges. You can also [control the time range using a URL](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/use-dashboards/#control-the-time-range-using-a-url).
## Mixed data source
Select **Mixed** from the data source dropdown to run queries across multiple data sources in the same panel. When you select Mixed, you can select a different data source for each new query that you add.
## Share Explore URLs
When using Explore, the URL in the browser address bar updates as you make changes to the queries. You can share or bookmark this URL.
{{% admonition type="note" %}}
Explore may generate long URLs, which some tools, like messaging or videoconferencing applications, might truncate due to fixed message lengths. In such cases, Explore displays a warning and loads a default state.
If you encounter issues when sharing Explore links in these applications, you can generate shortened links. See [Share shortened link](#share-shortened-link) for more information.
{{% /admonition %}}
### Generate Explore URLs from external tools
Because Explore URLs have a defined structure, you can build a URL from external tools and open it in Grafana. The URL structure is:
```
http://<grafana_url>/explore?panes=<panes>&schemaVersion=<schema_version>&orgId=<org_id>
```
where:
- `org_id` is the organization ID
- `schema_version` is the schema version (should be set to the latest version which is `1`)
- `panes` is a URL-encoded JSON object of panes, where each key is the pane ID and each value is an object matching the following schema:
```
{
datasource: string; // the pane's root datasource UID, or `-- Mixed --` for mixed datasources
queries: {
refId: string; // an alphanumeric identifier for this query, must be unique within the pane, i.e. "A", "B", "C", etc.
datasource: {
uid: string; // the query's datasource UID ie: "AD7864H6422"
type: string; // the query's datasource type-id, i.e: "loki"
}
// ... any other datasource-specific query parameters
}[]; // array of queries for this pane
range: {
from: string; // the start time, in milliseconds since epoch
to: string; // the end time, in milliseconds since epoch
}
}
```
{{< admonition type="note" >}}
The `from` and `to` also accept relative ranges defined in [Time units and relative ranges](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/use-dashboards/#time-units-and-relative-ranges).
{{< /admonition >}}
## Share shortened link
{{< admonition type="note" >}}
Available in Grafana 7.3 and later versions.
{{< /admonition >}}
The Share shortened link capability allows you to create smaller and simpler URLs of the format `/goto/:uid` instead of using longer URLs with query parameters. To create a shortened link to the executed query, click the **Share** option in the Explore toolbar.
A shortened link that's not accessed automatically gets deleted after a [configurable period](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#short_links), which defaults to seven days. However, if the link is accessed at least once, it will not be deleted.
### Share shortened links with absolute time
{{< admonition type="note" >}}
Available in Grafana 10.3 and later versions.
{{< /admonition >}}
Shortened links have two options: relative time (e.g., from two hours ago to now) or absolute time (e.g., from 8am to 10am). By default, sharing a shortened link copies the selected time range, whether it's relative or absolute.
To create a short link with an absolute time:
1. Click the dropdown button next to the share shortened link button.
1. Select one of the options under **Time-Sync URL Links**.
This ensures that anyone receiving the link will see the same data you see, regardless of when they open it. Your selected time range will remain unaffected.
## Next steps
Now that you are familiar with Explore you can:
- [Build dashboards](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/)
- Create a wide variety of [visualizations](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/)
- [Work with logs](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/logs-integration/)
- [Work with traces](https://grafana.com/docs/grafana/<GRAFANA_VERSION>)
- [Create and use correlations](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/explore/correlations-editor-in-explore/)

View File

@@ -16,81 +16,89 @@ weight: 15
Explore is a powerful tool for logging and log analysis. It allows you to investigate logs from different data sources including:
- [Loki]({{< relref "../datasources/loki" >}})
- [Elasticsearch]({{< relref "../datasources/elasticsearch" >}})
- [Cloudwatch]({{< relref "../datasources/aws-cloudwatch" >}})
- [InfluxDB]({{< relref "../datasources/influxdb" >}})
- [Azure Monitor]({{< relref "../datasources/azure-monitor" >}})
- [Loki](/docs/grafana/<GRAFANA_VERSION>/datasources/loki/)
- [Elasticsearch](/docs/grafana/<GRAFANA_VERSION>/datasources/elasticsearch/)
- [Cloudwatch](/docs/grafana/<GRAFANA_VERSION>/datasources/aws-cloudwatch/)
- [InfluxDB](/docs/grafana/<GRAFANA_VERSION>/datasources/influxdb/)
- [Azure Monitor](/docs/grafana/<GRAFANA_VERSION>/datasources/azure-monitor/)
- [ClickHouse](https://github.com/grafana/clickhouse-datasource)
With Explore, you can efficiently monitor, troubleshoot, and respond to incidents by analyzing your logs and identifying the root causes. It also helps you to correlate logs with other telemetry signals such as metrics, traces or profiles, by viewing them side-by-side.
The results of log queries are displayed as individual log lines and as a graph showing the logs volume for the selected time period.
The results of log queries display as individual log lines and as a graph showing the logs volume for the selected time period.
## Logs volume
When working with data sources that support a full range logs volume, Explore automatically displays a graph showing the log distribution for all the entered log queries. This feature is currently supported by Elasticsearch and Loki data sources.
When working with data sources that support a full range logs volume, Explore automatically displays a graph showing the log distribution for all submitted log queries. This feature is currently supported by the Elasticsearch and Loki data sources.
> **Note:** In Loki, this full range log volume is rendered by a metric query which can be expensive depending on time range queried. This query can be particularly challenging to process for smaller Loki installations. To mitigate this, we recommend using a proxy like [nginx](https://www.nginx.com/) in front of Loki to set a custom timeout (for example, 10 seconds) for these queries. Log volume histogram queries can be identified by looking for queries with the HTTP header `X-Query-Tags` with value `Source=logvolhist`; these headers are added by Grafana to all log volume histogram queries.
{{< admonition type="note" >}}
In Loki, generating the full range log volume via a metric query can be resource-intensive, depending on the time range queried. This is especially challenging for smaller Loki installations. To mitigate this, we recommend that you use a proxy like [nginx](https://www.nginx.com/) in front of Loki with a timeout like 10ss. Log volume histogram queries can be identified by looking for queries with the HTTP header `X-Query-Tags` with value `Source=logvolhist`; these headers are added by Grafana to all log volume histogram queries.
{{< /admonition >}}
If the data source does not support loading the full range logs volume, the logs model calculates a time series by counting log rows and organizing them into buckets based on an automatically calculated time interval. The timestamp of the first log row is used to anchor the start of the logs volume in the results. The end of the time series is anchored to the time picker's **To** range. This way, you can still analyze and visualize log data efficiently even when the data source doesn't offer full range support.
If the data source doesn't support loading the full range logs volume, the logs model calculates a time series by counting log rows and organizing them into buckets based on an automatically calculated time interval. The timestamp of the first log row is used to anchor the start of the logs volume in the results. The end of the time series is anchored to the time picker's **To** range. This way, you can still analyze and visualize log data efficiently even when the data source doesn't offer full range support.
## Logs
In the following sections, you will find detailed explanations of how to visualize and interact with individual logs in Explore.
The following sections provide detailed explanations on how to visualize and interact with individual logs in Explore.
### Logs navigation
Logs navigation, at the right side of the log lines, can be used to easily request additional logs. You can do this by clicking the **Older logs** button at the bottom of the navigation. This is especially useful when you reach the line limit and you want to see more logs. Each request that is run from the navigation is then displayed in the navigation as separate page. Every page shows `from` and `to` timestamps of the incoming log lines. You can see previous results by clicking on each page. Explore caches the last five requests run from the logs navigation, so you're not re-running the same queries when clicking on the pages, saving time and resources.
Logs navigation, located at the right side of the log lines, can be used to easily request additional logs by clicking **Older logs** at the bottom of the navigation. This is especially useful when you reach the line limit and you want to see more logs. Each request run from the navigation displays in the navigation as separate page. Every page shows `from` and `to` timestamps of the incoming log lines. You can see previous results by clicking on each page. Explore caches the last five requests run from the logs navigation so you're not re-running the same queries when clicking on the pages, saving time and resources.
![Navigate logs in Explore](/static/img/docs/explore/navigate-logs-8-0.png)
### Visualization options
You can customize how logs are displayed and select which columns are shown.
You have the option to customize the display of logs and choose which columns to show. Following is a list of available options.
| Option | Description |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Time** | Shows or hides the time column. This is the timestamp associated with the log line as reported from the data source. |
| **Unique labels** | Shows or hides the unique labels column that includes only non-common labels. All common labels are displayed above. |
| **Wrap lines** | Set this to `true` if you want the display to use line wrapping. If set to `false`, it will result in horizontal scrolling. |
| **Prettify JSON** | Set this to `true` to pretty print all JSON logs. This setting does not affect logs in any format other than JSON. |
| **Deduplication** | Log data can be very repetitive and Explore can help by hiding duplicate log lines. There are a few different deduplication algorithms that you can use **Exact** matches are done on the whole line except for date fields. **Numbers** matches are done on the line after stripping out numbers such as durations, IP addresses, and so on. **Signature** is the most aggressive deduplication as it strips all letters and numbers and matches on the remaining whitespace and punctuation. |
| **Display results order** | You can change the order of received logs from the default descending order (newest first) to ascending order (oldest first). |
| Option | Description |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Time** | Shows or hides the time column. This is the timestamp associated with the log line as reported from the data source. |
| **Unique labels** | Shows or hides the unique labels column that includes only non-common labels. All common labels are displayed above. |
| **Wrap lines** | Set this to `true` if you want the display to use line wrapping. If set to `false`, it will result in horizontal scrolling. |
| **Prettify JSON** | Set this to `true` to pretty print all JSON logs. This setting does not affect logs in any format other than JSON. |
| **Deduplication** | Log data can be very repetitive. Explore hides duplicate log lines using a few different deduplication algorithms. **Exact** matches are done on the whole line except for date fields. **Numbers** matches are done on the line after stripping out numbers such as durations, IP addresses, and so on. **Signature** is the most aggressive deduplication as it strips all letters and numbers and matches on the remaining whitespace and punctuation. |
| **Display results order** | You can change the order of received logs from the default descending order (newest first) to ascending order (oldest first). |
### Download log lines
To download log results in either `txt` or `json` format, simply use the **Download** button. This feature allows you to save the log data for further analysis or to share it with others in a convenient and accessible format.
Click **Download** to download log results in either `TXT` or `JSON` format. This feature allows you to save log data for further analysis or to share it with others in a convenient and accessible format.
### Log result meta information
Above the received log lines you can find essential meta information, including:
The following meta information displays above the retrieved log lines:
- **Number of received logs**: Indicates the total count of logs received for the current query or time range.
- **Error**: Displays possible error in your log results
- **Common labels**: Shows common labels.
- **Total bytes processed**: Represents the cumulative size of the log data processed in bytes.
- **Number of received logs -** Indicates the total count of logs received for the current query or time range.
- **Error -** Displays any errors in your log results.
- **Common labels -** Displays common labels.
- **Total bytes processed -** Represents the cumulative size of the log data processed in bytes.
> **Note:** The availability of certain meta information may depend on the data source, and as a result, you may only see some of these details for specific data sources.
{{< admonition type="note" >}}
The availability of certain metadata may vary depending on the data source, so you might only see details related to those specific data sources.
{{< /admonition >}}
### Escaping newlines
Explore automatically detects some incorrectly escaped sequences in log lines, such as newlines (`\n`, `\r`) or tabs (`\t`). When it detects such sequences, Explore provides an "Escape newlines" option.
Explore automatically detects some incorrectly escaped sequences in log lines, such as newlines (`\n`, `\r`) or tabs (`\t`). When it detects such sequences, Explore provides an **Escape newlines** option.
To automatically fix incorrectly escaped sequences that Explore has detected:
1. Click "Escape newlines" to replace the sequences.
2. Manually review the replacements to confirm their correctness.
1. Click **Escape newlines** to replace the sequences.
2. Review returned log lines.
Explore replaces these sequences. When it does so, the option will change from "Escape newlines" to "Remove escaping". Evaluate the changes as the parsing may not be accurate based on the input received. You can revert the replacements by clicking "Remove escaping".
Explore replaces these sequences, changing the option from **Escape newlines** to **Remove escaping**. Assess the changes, as the parsing may not be accurate based on the input. To revert the replacements, click **Remove escaping**.
### Log level
For the logs where a `level` label is specified, we use the value of this label to determine the log level and update color of each log line accordingly. If the log doesn't have specified level label, we try to find out if its content matches any of the supported expressions (see below for more information). The log level is always determined by the first match. In the case where Grafana is not able to infer a log level field, it will be visualized with an unknown log level.
For logs where a `level` label is specified, the value of this label is used to determine the log level and update the color of each log line accordingly.
If the log doesn't have a specified level label, Grafana attempts to determine if its content matches any of the supported expressions.
Refer to the following table for more information. The log level is always determined by the first match. If Grafana isn't able to infer a log level field, it gets visualized as an unknown log level.
> **Tip:** If you use a Loki data source and the "level" is part of your log line, you can use parsers (JSON, logfmt, regex,..) to extract the level information into a level label that is used to determine the level value. This will allow the histogram to show the various log levels as separate bars.
{{< admonition type="tip" >}}
When using the Loki data source, if `level` is part of your log line, you can use parsers such as `json`, `logfmt`, or `regex` to extract the level information into a level label. This label is used to determine the level value, allowing the histogram to display the various log levels as separate bars.
{{< /admonition >}}
**Supported log levels and mapping of log level abbreviation and expressions:**
**Log levels supported and mapping of log level abbreviation and expressions:**
| Log level | Color | Supported expressions |
| :-------- | :--------- | ---------------------------------------------- |
@@ -104,66 +112,76 @@ For the logs where a `level` label is specified, we use the value of this label
### Highlight searched words
When your query includes specific words or expressions to search for, Explore will highlight these in the log lines for better visibility. This highlighting feature makes it easier to identify and focus on the relevant content in your logs.
When your query includes specific words or expressions for keyword search, Explore highlights them in log lines to enhance visibility. This highlighting feature facilitates easier identification and focus on the relevant content within your logs.
> **Note:** The ability to highlight search words may vary depending on the data source. For some data sources, the highlighting of search words may not be available.
{{< admonition type="note" >}}
The ability to highlight search words varies depending on data source. For some data sources, the highlighting of search words may not be available.
{{< /admonition >}}
### Log details view
In Explore, each log line has an expandable section called **Log details** that can be opened by clicking on the log line. The Log details view provides additional information and exploration options in the form of **Fields** and **Links** attached to the log lines, enabling a more robust interaction and analysis.
In Explore, each log line has an expandable section called **Log details** that you open by clicking on the log line. The Log details view provides additional information and exploration options in the form of **Fields** and **Links** attached to the log lines, enabling a more robust interaction and analysis.
#### Fields
Within the Log details view, you have the ability to filter displayed fields in two ways: a positive filter (to focus on an specific field) and a negative filter (to exclude certain fields). These filters will update the corresponding query that produced the log line, adding equality and inequality expressions accordingly. If the data source has support, as it's the case for Loki and Elasticsearch, log details will check if the field is already present in the current query showing and active state (for positive filters only), allowing you to toggle it off the query, or changing the filter expression from positive to negative.
Within the **Log details** view, you have the ability to filter the displayed fields in two ways: a positive filter, which focuses on an specific field and a negative filter, which excludes certain fields.
These filters modify the corresponding query that generated the log line, incorporating equality and inequality expressions accordingly.
Additionally, you can select a subset of fields to visualize in the logs list instead of the complete log line by clicking on the eye icon. Finally, each field has a stats icon to display ad-hoc statistics in relation to all displayed logs.
If the data source supports it, as is the case with Loki and Elasticsearch, log details will verify whether the field is already included in the current query, indicating an active state for positive filters. This enables you to toggle it off from the query or convert the filter expression from positive to negative as necessary.
Click the **eye icon** to select a subset of fields to visualize in the logs list instead of the complete log line.
Each field has a **stats icon**, which displays ad-hoc statistics in relation to all displayed logs.
#### Links
Grafana offers the functionality of data links or correlations, enabling you to convert any part of a log message into an internal or external link. These links can be used to navigate to related data or external resources, providing a seamless and convenient way to explore further information.
Grafana provides data links or correlations, allowing you to convert any part of a log message into an internal or external link. These links enable you to navigate to related data or external resources, offering a seamless and convenient way to explore additional information.
{{< figure src="/static/img/docs/explore/data-link-9-4.png" max-width="800px" caption="Data link in Explore" >}}
### Log context
Log context is a feature that allows you to display additional lines of context surrounding a log entry that matches a particular search query. This can be helpful in understanding the log entry's context, and is similar to the `-C` parameter in the `grep` command.
Log context is a feature that displays additional lines of context surrounding a log entry that matches a specific search query. This helps in understanding the context of the log entry and is similar to the `-C` parameter in the `grep` command.
You may encounter long lines of text that make it difficult to read and analyze the context around each log entry. This is where the **Wrap lines** toggle can come in handy. By enabling this toggle, Grafana will automatically wrap long lines of text so that they fit within the visible width of the viewer. This can make it easier to read and understand the log entries.
Toggle **Wrap lines** if you encounter long lines of text that make it difficult to read and analyze the context around log entries. By enabling this toggle, Grafana automatically wraps long lines of text to fit within the visible width of the viewer, making the log entries easier to read and understand.
The **Open in split view** button allows you to execute the context query for a log entry in a split screen in the Explore view. Clicking this button will open a new Explore pane with the context query displayed alongside the log entry, making it easier to analyze and understand the surrounding context.
Click **Open in split view** to execute the context query for a log entry in a split screen in the Explore view. Clicking this button opens a new Explore pane with the context query displayed alongside the log entry, making it easier to analyze and understand the surrounding context.
The log context query can also be opened in a new browser tab by pressing the Cmd/Ctrl button while clicking on the button to open the context modal. When opened in a new tab, the previously selected filters are applied as well.
Use Command-click or Ctrl+click to open the log context query in a new browser to view the context model. All previously selected filters get applied.
### Copy log line
You can easily copy the content of a selected log line to your clipboard by clicking on the `Copy log line` button.
Click **Copy log line** to copy the content of a selected log line to the clipboard.
### Copy link to log line
Linking of log lines in Grafana allows you to quickly navigate to specific log entries for precise analysis. By clicking the **Copy shortlink** button for a log line, you can generate and copy a [short URL]({{< relref "../developers/http_api/short_url/" >}}) that provides direct access to the exact log entry within an absolute time range. When you open the link, Grafana will automatically scroll to the corresponding log line and highlight it with a blue background, making it easy to identify and focus on the relevant information.
Linking log lines in Grafana allows you to quickly navigate to specific log entries for detailed and precise analysis. Click **Copy shortlink** to generate and copy a [short URL](/docs/grafana/<GRAFANA_VERSION>/developers/http_api/short_url/) that provides direct access to the exact log entry within an absolute time range. When you open the link, Grafana automatically scrolls to the corresponding log line and highlights it in blue, making it easy to identify and focus on relevant information.
> **Note:** This is currently only supported in Loki and other data sources that provide an `id` field.
{{< admonition type="note" >}}
The short URL feature is currently only supported in Loki and other data sources that provide an `id` field.
{{< /admonition >}}
## Live tailing
To view real-time logs from supported data sources, you can leverage the Live tailing feature in Explore.
Use the **Live tail** feature to view real-time logs from data sources.
1. Click the **Live** button in the Explore toolbar to switch to Live tail view.
2. While in Live tail view, new logs will appear from the bottom of the screen, and they will have a fading contrasting background, allowing you to easily track what's new.
3. If you wish to pause the Live tailing and explore previous logs without any interruptions, you can do so by clicking the **Pause** button or simply scrolling through the logs view.
4. To clear the view and remove all logs from the display, click on the **Clear logs** button. This action will reset the log view and provide you with a clean slate to continue your log analysis.
5. To resume Live tailing and continue viewing real-time logs, click the **Resume** button.
6. If you want to exit Live tailing and return to the standard Explore view, click the **Stop** button.
1. Click **Live** in the Explore toolbar to switch to Live tail view.
1. In **Live tail view**, new logs appear at the bottom of the screen, and have a contrasting background, allowing you to easily track what's new.
1. Click **Pause** to pause live tailing and explore previous logs without interruptions. or simply scroll through the logs view.
1. Click **Clear logs** to remove all displayed logs. This action resets the log view and provides a clean slate to continue your log analysis
1. Click **Resume** to resume live tailing and continue viewing real-time logs.
1. Click **Stop** to exit live tailing and return to the standard Explore view.
Using the Live tailing feature, you can keep a close eye on the latest logs as they come in, making it easier to monitor real-time events and detect issues promptly.
The **Live tailing feature** allows you to monitor the latest logs in real-time, making it easier to track events as they occur and promptly detect issues.
{{< video-embed src="/static/img/docs/v95/explore_live_tailing.mp4" >}}
### Logs sample
If the selected data source implements logs sample, and supports both log and metric queries, then for metric queries you will be able to automatically see samples of log lines that contributed to visualized metrics. This feature is currently supported by Loki data sources.
If the selected data source supports log samples and both log and metric queries, you will automatically see log line samples that contribute to the visualized metrics for metric queries. **This feature is currently only supported by the Loki data source.**
### Switch from metrics to logs
If you are coming from a metrics data source that implements `DataSourceWithQueryExportSupport` (such as Prometheus) to a logging data source that supports `DataSourceWithQueryImportSupport` (such as Loki), then it will keep the labels from your query that exist in the logs and use those to query the log streams.
If you are transitioning from a metrics data source that implements `DataSourceWithQueryExportSupport` (such as Prometheus) to a logging data source that supports `DataSourceWithQueryImportSupport` (such as Loki), Explore retains the labels from your query that exist in the logs and use them to query the log streams.
For example, the following Prometheus query `grafana_alerting_active_alerts{job="grafana"}` after switching to the Loki data source, will change to `{job="grafana"}`. This will return a chunk of logs in the selected time range that can be grepped/text searched.
For example, after switching to the Loki data source, the Prometheus query `grafana_alerting_active_alerts{job="grafana"}` changes to `{job="grafana"}`. This will retrieve a set of logs within the specified time range, which can be searched using grep or text search.

View File

@@ -8,77 +8,87 @@ labels:
- cloud
- enterprise
- oss
title: Query management
title: Query management in Explore
weight: 10
---
# Query management in Explore
To help with debugging queries, Explore allows you to investigate query requests and responses, as well as query statistics, via the Query inspector.
This functionality is similar to the panel inspector tasks [Inspect query performance]({{< relref "../panels-visualizations/panel-inspector/#inspect-query-performance" >}}) and
[Inspect query request and response data]({{< relref "../panels-visualizations/panel-inspector/#inspect-query-request-and-response-data" >}}).
Grafana Explore provides a variety of tools to help manage your queries.
{{< figure src="/static/img/docs/v71/query_inspector_explore.png" class="docs-image--no-shadow" max-width= "550px" caption="Screenshot of the query inspector button in Explore" >}}
{{% admonition type="note" %}}
For help with debugging queries, Explore allows you to investigate query requests and responses, as well as query statistics, via the Query inspector. Refer to [Query inspector in Explore](/docs/grafana/<GRAFANA_VERSION>/explore/explore-inspector/) for more information.
{{% /admonition %}}
## Query history
Query history is a list of queries that you used in Explore. The history is stored in the Grafana database and it is not shared with other users. The retention period for queries in history is two weeks. Queries older than two weeks are automatically deleted. To open and interact with your history, click the **Query history** button in Explore.
Query history contains the list of queries that you created in Explore. This history is stored in the Grafana database and isn't shared with other users. The retention period for a query history is **two weeks**. Queries older than two weeks are automatically deleted.
{{% admonition type="note" %}}
Starred queries are not subject to the two weeks retention period and they are not deleted.
Starred queries aren't subject to the two-week retention period and aren't deleted.
{{% /admonition %}}
### View query history
To view your query history:
Query history lets you view the history of your querying. For each individual query, you can:
1. Go to the Explore page.
1. Click **Query history**.
- Run a query.
The Query history pane opens at the bottom of the page, and contains the following tabs:
- **Query history tab-** Contains a history of all your queries, with options for searching and managing them.
- **Starred tab -** Contains all of your starred queries.
- **Settings tab-** Provides customizable options for your query history.
### Query history tab
The Query history depicts a history of your queries for the past two weeks, unless the query is starred, which means it doesn't get deleted. For each individual query, you can:
- Run and re-run the query.
- Create and/or edit a comment.
- Copy a query to the clipboard.
- Copy a shortened link with the query to the clipboard.
- Delete a query.
- Star a query.
### Manage favorite queries
By default, query history shows you newest queries first. Click the sort box in the upper right to change to **Oldest first** to older queries first. You can search your queries using keywords.
All queries that have been starred in the Query history tab are displayed in the Starred tab. This allows you to access your favorite queries faster and to reuse these queries without typing them from scratch.
### Query history Starred tab
### Sort query history
All starred queries are displayed in the **Starred** tab. This gives quick access to key or favorite queries without having to rewrite them.
By default, query history shows you the most recent queries. You can sort your history by date or by data source name in ascending or descending order.
You also have the option to switch the data source and run a starred query.
1. Click the **Sort queries by** field.
1. Select one of the following options:
- Newest first
- Oldest first
#### Filter query history
### Filter query history
Filter query history in Query history and Starred tab by data source name:
Filter query history in both the **Query history** and **Starred** tabs by data source name:
1. Click the **Filter queries for specific data source(s)** field.
1. Select the data source for which you would like to filter your history. You can select multiple data sources.
1. Select the data source in the dropdown by which you want to filter your history. You can select multiple data sources.
> **Note:** Queries ran using the Mixed data source will appear only when filtering for Mixed and not when filtering by their individual data sources.
{{% admonition type="note" %}}
Queries with the **Mixed** data source appear only when filtering for "Mixed" and not when filtering by individual data source.
{{% /admonition %}}
In **Query history** tab it is also possible to filter queries by date using the slider:
You can also filter queries by date using the vertical slider:
- Use vertical slider to filter queries by date.
- By dragging bottom handle, adjust start date.
- By dragging top handle, adjust end date.
- Drag the bottom circle to adjust the start date.
- Drag the top circle to adjust the end date.
### Search in query history
#### Search in query history
You can search in your history across queries and your comments. Search is possible for queries in the Query history tab and Starred tab.
Use **Search queries** in both the **Query history** and **Starred** tabs to search your query history and comments using keywords.
1. Click the **Search queries** field.
1. Type the term you are searching for into search field.
1. Click in the **Search queries** field.
1. Type the keyword(s) or term you are want to search for in search field.
### Query history settings
### Query history Settings tab
You can customize the query history in the Settings tab. Options are described in the table below.
You can customize your query history in the **Settings** tab.
| Setting | Default value |
| ----------------------------- | ----------------- |
| Change the default active tab | Query history tab |
Toggle **Change the default active tab from "Query history" to "Starred"** to make the **Starred tab** the default active tab.
> **Note:** Query history settings are global, and applied to both panels in split mode.
{{% admonition type="note" %}}
Query history settings are global, and applied to both panels in split mode.
{{% /admonition %}}
<!-- All queries that have been starred in the Query history tab are displayed in the Starred tab. This allows you to access your favorite queries faster and to reuse these queries without typing them from scratch. -->

View File

@@ -1,5 +1,4 @@
---
description: Tracing in Explore
keywords:
- explore
- trace
@@ -8,167 +7,161 @@ labels:
- cloud
- enterprise
- oss
title: Tracing in Explore
title: Traces in Explore
weight: 20
---
# Tracing in Explore
# Traces in Explore
You can use Explore to query and visualize traces from tracing data sources.
You can use Explore to query and visualize traces from tracing data sources. Supported data sources include:
Supported data sources are:
- [Tempo]({{< relref "../datasources/tempo/" >}}) (supported ingestion formats: OpenTelemetry, Jaeger, and Zipkin)
- [Jaeger]({{< relref "../datasources/jaeger/" >}})
- [Zipkin]({{< relref "../datasources/zipkin/" >}})
- [Tempo](/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/)
- [Jaeger](/docs/grafana/<GRAFANA_VERSION>/datasources/jaeger/)
- [Zipkin](/docs/grafana/<GRAFANA_VERSION>/datasources/zipkin/)
- [X-Ray](https://grafana.com/grafana/plugins/grafana-x-ray-datasource)
- [Azure Monitor Application Insights]({{< relref "../datasources/azure-monitor/" >}})
- [Azure Monitor](/docs/grafana/latest/datasources/azure-monitor/)
- [ClickHouse](https://github.com/grafana/clickhouse-datasource)
- [New Relic](https://grafana.com/grafana/plugins/grafana-newrelic-datasource)
- [Infinity](https://grafana.com/grafana/plugins/yesoreyeram-infinity-datasource)
- [New Relic](/docs/plugins/grafana-newrelic-datasource/latest/)
- [Infinity](/docs/plugins/yesoreyeram-infinity-datasource/latest/)
For information on how to configure queries for the data sources listed above, refer to the documentation for specific data source.
Here are some references to learn more about traces and how you can use them:
## Query editor
- [Introduction to tracing](https://grafana.com/docs/tempo/<TEMPO_VERSION>/introduction/)
- [Trace structure](https://grafana.com/docs/tempo/<TEMPO_VERSION>/traceql/trace-structure/#trace-structure)
- [Traces and telemetry](https://grafana.com/docs/tempo/<TEMPO_VERSION>/introduction/telemetry/)
- [Using traces to find solutions to problems](https://grafana.com/docs/tempo/<TEMPO_VERSION>/introduction/solutions-with-traces/)
- [Best practices for tracing](/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/tracing-best-practices/)
You can query and search tracing data using a data source's query editor.
## Query editors
Each data source can have it's own query editor. The query editor for the Tempo data source is slightly different than the query editor for the Jaeger data source.
You can query and search tracing data using a data source's query editor. Note that data sources in Grafana have unique query editors.
For information on querying each data source, refer to their documentation:
- [Tempo query editor]({{< relref "../datasources/tempo/query-editor" >}})
- [Jaeger query editor]({{< relref "../datasources/jaeger/#query-the-data-source" >}})
- [Zipkin query editor]({{< relref "../datasources/zipkin/#query-the-data-source" >}})
- [Azure Monitor Application Insights query editor]({{< relref "../datasources/azure-monitor/query-editor/#query-application-insights-traces" >}})
- [ClickHouse query editor](https://clickhouse.com/docs/en/integrations/grafana/query-builder#traces)
For information on how to use the query editor to create queries for tracing data sources, refer to the documentation for each individual data source.
## Trace view
This section explains the elements of the Trace View.
Grafana's trace view provides an overview of a request as it travels through your system. The following sections provide detail on various elements of the trace view.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view" >}}
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view.png" class="docs-image--no-shadow" max-width= "900px" caption="Trace view" >}}
### Header
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-header.png" class="docs-image--no-shadow" max-width= "750px" caption="Screenshot of the trace view header" >}}
The trace view header includes the following:
- Header title: Shows the name of the root span and trace ID.
- Search: Highlights spans containing the searched text.
- Metadata: Various metadata about the trace.
- **Header title** - Shows the name of the root span and trace ID.
- **Search** - Highlights spans containing the searched text.
- **Metadata** - Various metadata about the trace.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-header.png" class="docs-image--no-shadow" max-width= "750px" caption="Trace view header" >}}
### Minimap
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-minimap.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view minimap" >}}
**Minimap** displays a condensed view of the trace timeline. Drag your mouse over the minimap to zoom into a smaller time range. This also updates the main timeline, making it easier to view shorter spans
When zoomed in, hovering over the minimap displays **Reset selection**, which resets the zoom.
Shows condensed view or the trace timeline. Drag your mouse over the minimap to zoom into smaller time range. Zooming will also update the main timeline, so it is easy to see shorter spans. Hovering over the minimap, when zoomed, will show Reset Selection button which resets the zoom.
### Span filters
![Screenshot of span filtering](/media/docs/tempo/screenshot-grafana-tempo-span-filters-v10-1.png)
Using span filters, you can filter your spans in the trace timeline viewer. The more filters you add, the more specific are the filtered spans.
You can add one or more of the following filters:
- Resource service name
- Span name
- Duration
- Tags (which include tags, process tags, and log fields)
To only show the spans you have matched, you can press the `Show matches only` toggle.
{{< youtube id="VP2XV3IIc80" >}}
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-minimap.png" class="docs-image--no-shadow" max-width= "900px" caption="Trace view minimap example" >}}
### Timeline
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-timeline.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view timeline" >}}
Timeline shows list of spans within the trace. Each span row consists of the following components:
Shows list of spans within the trace. Each span row consists of these components:
- **Expand children** - Expands or collapses all the children spans of the selected span.
- **Service name** - Name of the service logged the span.
- **Operation name** - Name of the operation that this span represents.
- **Span duration bar** - Visual representation of the operation duration within the trace.
- Expand children button: Expands or collapses all the children spans of selected span.
- Service name: Name of the service logged the span.
- Operation name: Name of the operation that this span represents.
- Span duration bar: Visual representation of the operation duration within the trace.
Click anywhere on the span row to reveal span details.
Clicking anywhere on the span row shows span details.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-timeline.png" class="docs-image--no-shadow" max-width= "900px" caption="Trace view timeline" >}}
### Span details
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-span-details.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view span details" >}}
Traces are composed of one or more spans.
A span is a unit of work within a trace that has a start time relative to the beginning of the trace, a duration and an operation name for the unit of work.
It usually has a reference to a parent span, unless its the first span, the root span, in a trace.
It frequently includes key/value attributes that are relevant to the span itself, for example the HTTP method used in the request, as well as other metadata such as the service name, sub-span events, or links to other spans.
- Operation name.
- Span metadata.
- Tags: Any tags associated with this span.
- Process metadata: Metadata about the process that logged this span.
- Logs: List of logs logged by this span and associated key values. In case of Zipkin logs section shows Zipkin annotations.
You can expand any span in a trace and view the details, including the span and resource attributes.
For more information about spans and traces, refer to [Introduction to tracing](https://grafana.com/docs/tempo/latest/introduction/) in the Tempo documentation.
Span details include:
- **Span attributes** - Key/value pairs that provides context for spans. For example, if the span deals with calling another service via HTTP, an attribute could include the HTTP URL (maybe as the span attribute key `http.url`) and the HTTP status code returned (as the span attribute `http.status_code`).
- **Resource attributes** - Key/value pairs that describe the context of how the span was collected.
Refer to [Span and resource attributes](/docs/tempo/<TEMPO_VERSION>/operations/best-practices/#span-and-resource-attributes) for more detail.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-span-details.png" class="docs-image--no-shadow" max-width= "900px" caption="Trace view span details" >}}
### Span filters
Span filters allow you to refine the spans displayed in the trace timeline viewer.
The more filters you add, the more specific the filtered spans become.
Click on a trace to access Span filters.
![Screenshot of span filtering](/media/docs/tempo/screenshot-grafana-tempo-span-filters-v10-1.png)
You can add one or more of the following filters:
- **Service name** - Filter by selecting a service name from the dropdown.
- **Span name** - Filter by selecting a span name from the dropdown.
- **Duration** - Filter by duration. Accepted units include ns, us, ms, s, m, h.
- **Tags** - Filter by tags, process tags, or log fields in your span.
To only show the spans you have matched, toggle **Show matches only**.
Refer to [Span filters](/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/span-filters/) for more in depth information.
Watch the following video to learn more about filtering trace spans in Grafana:
{{< youtube id="VP2XV3IIc80" >}}
### Trace to logs
You can navigate from a span in a trace view directly to logs relevant for that span. This feature is available for Tempo, Jaeger, and Zipkin data sources. Refer to their [relevant documentation](/docs/grafana/latest/datasources/tempo/#trace-to-logs) for configuration instructions.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-trace-to-logs.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view in Explore with icon next to the spans" >}}
You can navigate from a span in a trace view directly to logs relevant for that span.
This feature is available for the Tempo, Jaeger, and Zipkin data sources.
Refer to each individual data source's documentation for configuration instructions.
Click the document icon to open a split view in Explore with the configured data source and query relevant logs for the span.
{{< figure src="/media/docs/tempo/screenshot-grafana-trace-view-trace-to-logs.png" class="docs-image--no-shadow" max-width= "900px" caption="Trace to logs" >}}
### Trace to metrics
{{% admonition type="note" %}}
This feature is currently in beta and behind the `traceToMetrics` feature toggle.
{{% /admonition %}}
You can navigate from a span in a trace view directly to metrics relevant for that span.
This feature is available for the Tempo, Jaeger, and Zipkin data sources.
You can navigate from a span in a trace view directly to metrics relevant for that span. This feature is available for Tempo, Jaeger, and Zipkin data sources. Refer to their [relevant documentation](/docs/grafana/latest/datasources/tempo/configure-tempo-data-source/#trace-to-metrics) for configuration instructions.
Refer to each individual data source's documentation for configuration instructions.
For Tempo, refer to [Trace to metrics configuration](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source/#trace-to-metrics).
### Trace to profiles
Using Trace to profiles, you can use Grafanas ability to correlate different signals by adding the functionality to link between traces and profiles.
Refer to the [relevant documentation](/docs/grafana/latest/datasources/tempo/configure-tempo-data-source#trace-to-profiles) for configuration instructions.
For Tempo refer to [Trace to profiles](/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/configure-tempo-data-source#trace-to-profiles) for configuration instructions.
{{< figure src="/static/img/docs/tempo/profiles/tempo-trace-to-profile.png" max-width="900px" class="docs-image--no-shadow" alt="Selecting a link in the span queries the profile data source" >}}
## Node graph
You can optionally expand the node graph for the displayed trace. Depending on the data source, this can show spans of the trace as nodes in the graph, or as some additional context like service graph based on the current trace.
You can also expand the node graph for a displayed trace. If the data source supports it, this displays spans of the trace as nodes in the graph, or provides additional context, such as a service graph based on the current trace.
{{< figure src="/media/docs/tempo/screenshot-grafana-node-graph.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the node graph" >}}
Refer to [Node graph](/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/node-graph/) for additional information.
## Service Graph
{{< admonition type="note" >}}
The node graph requires data to be returned from the data source in a specific format to display correctly. Refer to [Data API](/docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/node-graph/#data-api), [Nodes data frame structure](/docs/grafana/latest/panels-visualizations/visualizations/node-graph/#nodes-data-frame-structure) and [Node graph data requirements](/docs/grafana/latest/panels-visualizations/visualizations/node-graph/#data-requirements) for additional information and configuration instructions.
{{< /admonition >}}
The Service Graph visualizes the span metrics (traces data for rates, error rates, and durations (RED)) and service graphs.
Once the requirements are set up, this pre-configured view is immediately available.
{{< figure src="/media/docs/tempo/screenshot-grafana-node-graph.png" class="docs-image--no-shadow" max-width= "900px" caption="Node graph" >}}
For more information, refer to the [Service Graph view section]({{< relref "../datasources/tempo/#open-the-service-graph-view" >}}) of the Tempo data source page and the [service graph view page](/docs/tempo/latest/metrics-generator/service-graph-view/) in the Tempo documentation.
## Service graph
{{< figure src="/static/img/docs/grafana-cloud/apm-overview.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the Service Graph view" >}}
A service graph visualizes span metrics, including rates, error rates, and durations (RED), along with service relationships. Once the requirements are configured, this pre-configured view is immediately available.
## Data API
For additional information refer to the following documentation:
This visualization needs a specific shape of the data to be returned from the data source in order to correctly display it.
- [Service Graph and Service Graph view](/docs/grafana/<GRAFANA_VERSION>/datasources/tempo/service-graph/)
- [Service graph view](/docs/tempo/<TEMPO_VERSION>/metrics-generator/service-graph-view/) in Tempo documentation
Data source needs to return data frame and set `frame.meta.preferredVisualisationType = 'trace'`.
### Data frame structure
Required fields:
| Field name | Type | Description |
| ------------ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| traceID | string | Identifier for the entire trace. There should be only one trace in the data frame. |
| spanID | string | Identifier for the current span. SpanIDs should be unique per trace. |
| parentSpanID | string | SpanID of the parent span to create child parent relationship in the trace view. Can be `undefined` for root span without a parent. |
| serviceName | string | Name of the service this span is part of. |
| serviceTags | TraceKeyValuePair[] | List of tags relevant for the service. |
| startTime | number | Start time of the span in millisecond epoch time. |
| duration | number | Duration of the span in milliseconds. |
Optional fields:
| Field name | Type | Description |
| -------------- | ------------------- | ------------------------------------------------------------------ |
| logs | TraceLog[] | List of logs associated with the current span. |
| tags | TraceKeyValuePair[] | List of tags associated with the current span. |
| warnings | string[] | List of warnings associated with the current span. |
| stackTraces | string[] | List of stack traces associated with the current span. |
| errorIconColor | string | Color of the error icon in case span is tagged with `error: true`. |
For details about the types see [TraceSpanRow](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L28), [TraceKeyValuePair](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L4) and [TraceLog](https://github.com/grafana/grafana/blob/main/packages/grafana-data/src/types/trace.ts#L12).
{{< figure src="/static/img/docs/grafana-cloud/apm-overview.png" class="docs-image--no-shadow" max-width= "900px" caption="Service graph view" >}}

View File

@@ -106,17 +106,17 @@ The following image shows the two metrics associated with the endpoint. The HELP
The 'MyApp' metrics are available in an HTTP endpoint, but how do they get to Grafana, and subsequently, into a dashboard? The process of recording and transmitting the readings of an application or piece of infrastructure is known as _telemetry_. Telemetry is critical to observability because it helps you understand exactly what's going on in your infrastructure. The metrics introduced previously, for example, `MyAppnodejs_active_requests_total`, are telemetry data.
To get metrics into Grafana, you can use either the Prometheus software or [Grafana Agent](/docs/agent/latest/) to scrape metrics. Grafana Agent collects and forwards the telemetry data to open-source deployments of the Grafana Stack, Grafana Cloud, or Grafana Enterprise, where your data can be analyzed. For example, you can configure Grafana Agent to pull the data from 'MyApp' every five seconds and send the results to Grafana Cloud.
To get metrics into Grafana, you can use either the Prometheus software or [Grafana Alloy](https://grafana.com/docs/alloy/latest/) to scrape metrics. Grafana Alloy collects and forwards the telemetry data to open-source deployments of the Grafana Stack, Grafana Cloud, or Grafana Enterprise, where your data can be analyzed. For example, you can configure Grafana Alloy to pull the data from 'MyApp' every five seconds and send the results to Grafana Cloud.
Metrics data is only one type of telemetry data; the other kinds are logs and traces. Using Grafana Agent can be a great option to send telemetry data because as you scale your observability practices to include logs and traces, which Grafana Agent also supports, you've got a solution already in place.
Metrics data is only one type of telemetry data; the other kinds are logs and traces. Using Grafana Alloy can be a great option to send telemetry data because as you scale your observability practices to include logs and traces, which Grafana Alloy also supports, you've got a solution already in place.
The following image illustrates how Grafana Agent works as an intermediary between 'MyApp' and Grafana Cloud.
The following image illustrates how Grafana Alloy works as an intermediary between 'MyApp' and Grafana Cloud.
{{< figure src="/media/docs/grafana/intro-prometheus/grafana-agent.png" max-width="750px" caption="Grafana Agent" >}}
{{< figure src="/media/docs/alloy/flow-diagram-small-alloy.png" alt="Grafana Alloy" caption="Grafana Alloy" >}}
## Bringing it together
The combination of Prometheus and Grafana Agent gives you control over the metrics you want to report, where they come from, and where theyre going. Once the data is in Grafana, it can be stored in a Grafana Mimir database. Grafana dashboards consist of visualizations populated by data queried from the Prometheus data source. The PromQL query filters and aggregates the data to provide you the insight you need. With those steps, weve gone from raw numbers, generated by software, into Prometheus, delivered to Grafana, queried by PromQL, and visualized by Grafana.
The combination of Prometheus and Grafana Alloy gives you control over the metrics you want to report, where they come from, and where theyre going. Once the data is in Grafana, it can be stored in a Grafana Mimir database. Grafana dashboards consist of visualizations populated by data queried from the Prometheus data source. The PromQL query filters and aggregates the data to provide you the insight you need. With those steps, weve gone from raw numbers, generated by software, into Prometheus, delivered to Grafana, queried by PromQL, and visualized by Grafana.
## Whats next?

View File

@@ -84,7 +84,9 @@ In addition to Grafana, Grafana Labs also provides the following open source pro
**Grafana Beyla:** Grafana Beyla is an eBPF-based application auto-instrumentation tool for application observability. eBPF is used to automatically inspect application executables and the OS networking layer as well as capture basic trace spans related to web transactions and Rate-Errors-Duration (RED) metrics for Linux HTTP/S and gRPC services. All data capture occurs without any modifications to application code or configuration. For more information about Grafana Beyla, refer to [Grafana Beyla documentation](/docs/beyla/latest/).
**Grafana Agent:** Grafana Agent is a vendor-neutral, batteries-included telemetry collector with configuration inspired by Terraform. It is designed to be flexible, performant, and compatible with multiple ecosystems such as Prometheus and OpenTelemetry. For more information about Grafana Agent, refer to [Grafana Agent documentation](/docs/agent/latest/).
**Grafana Alloy:** Grafana Alloy is a flexible, high performance, vendor-neutral distribution of the [OpenTelemetry][] (OTel) Collector.
It's fully compatible with the most popular open source observability standards such as OpenTelemetry (OTel) and Prometheus.
For more information about Grafana Alloy, refer to the [Grafana Alloy documentation](https://grafana.com/docs/alloy/latest/).
**Grafana k6:** Grafana k6 is an open-source load testing tool that makes performance testing easy and productive for engineering teams. For more information about Grafana k6, refer to [Grafana k6 documentation](/docs/k6/latest/).

View File

@@ -19,7 +19,7 @@ To learn more about Grafana Enterprise, refer to [our product page](/enterprise)
## Enterprise features in Grafana Cloud
Many Grafana Enterprise features are also available in [Grafana Cloud](/docs/grafana-cloud) Free, Pro, and Advanced accounts. For details, refer to [the Grafana Cloud features table](/pricing/#featuresTable).
Many Grafana Enterprise features are also available in [Grafana Cloud](/docs/grafana-cloud) Free, Pro, and Advanced accounts. For details, refer to [Grafana Cloud pricing](/pricing/#featuresTable).
To migrate to Grafana Cloud, refer to [Migrate from Grafana Enterprise to Grafana Cloud](/docs/grafana-cloud/account-management/e2c-guide/).
@@ -79,12 +79,10 @@ With a Grafana Enterprise license, you also get access to premium data sources,
- [Azure Devops](/grafana/plugins/grafana-azuredevops-datasource)
- [Databricks](/grafana/plugins/grafana-databricks-datasource)
- [DataDog](/grafana/plugins/grafana-datadog-datasource)
- [Databricks](/grafana/plugins/grafana-databricks-datasource/)
- [Dynatrace](/grafana/plugins/grafana-dynatrace-datasource)
- [Gitlab](/grafana/plugins/grafana-gitlab-datasource)
- [Honeycomb](/grafana/plugins/grafana-honeycomb-datasource)
- [Jira](/grafana/plugins/grafana-jira-datasource)
- [k6 Cloud App](/grafana/plugins/grafana-k6-app)
- [MongoDB](/grafana/plugins/grafana-mongodb-datasource)
- [New Relic](/grafana/plugins/grafana-newrelic-datasource)
- [Oracle Database](/grafana/plugins/grafana-oracle-datasource)

View File

@@ -219,7 +219,6 @@ To access values and labels from other fields use:
| --------------------------------- | ------------------------------------------ |
| `__data.fields[i]` | Value of field `i` (on the same row) |
| `__data.fields["NameOfField"]` | Value of field using name instead of index |
| `__data.fields["NameOfField"]` | Value of field using name instead of index |
| `__data.fields[1].labels.cluster` | Access labels of another field |
### Template variables

View File

@@ -237,6 +237,8 @@ Select one of the following schemes:
| Multiple continuous colors (by value) | Grafana automatically assigns colors based on the percentage of a value relative to the min and the max of the field or series. For some visualizations, you also need to choose if the color is set by the **Last**, **Min**, or **Max** value of the field or series. Select from: **Green-Yellow-Red**, **Red-Yellow-Green**, **Blue-Yellow-Red**, **Yellow-Red**, **Blue-Purple**, and **Yellow-Blue**. |
| Single continuous color (by value) | Grafana automatically assigns shades of one color based on the percentage of a value relative to the min and the max of the field or series. For some visualizations, you also need to choose if the color is set by the **Last**, **Min**, or **Max** value of the field or series. Select from: **Blues**, **Reds**, **Greens**, and **Purples**. |
You can also use the legend to open the color picker by clicking the legend series color icon. Setting color this way automatically creates an override rule that set's a specific color for a specific series.
### No value
Enter what Grafana should display if the field value is empty or null. The default value is a hyphen (-).

View File

@@ -2,7 +2,6 @@
aliases:
- ../dashboards/add-organize-panels/
- ../dashboards/dashboard-create/
- ../features/dashboard/dashboards/
- ../panels/add-panels-dynamically/about-repeating-panels-rows/
- ../panels/add-panels-dynamically/configure-repeating-panels/
- ../panels/add-panels-dynamically/configure-repeating-rows/

View File

@@ -124,7 +124,7 @@ So if you have numbers with labels like `{host=web01}` in `$A` and another numbe
- An item with no labels will join to anything.
- If both `$A` and `$B` each contain only one item (one series, or one number), they will join.
- If labels are exact math they will join.
- If labels are exact match they will join.
- If labels are a subset of the other, for example and item in `$A` is labeled `{host=A,dc=MIA}` and item in `$B` is labeled `{host=A}` they will join.
- Currently, if within a variable such as `$A` there are different tag _keys_ for each item, the join behavior is undefined.

View File

@@ -46,17 +46,12 @@ refs:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/table/#sparkline
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/table/#sparkline
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/table/#sparkline
calculation-types:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/query-transform-data/calculation-types/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/query-transform-data/calculation-types/
heatmap-panel:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/heatmap/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/heatmap/
configuration-file:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#configuration-file-location
@@ -64,9 +59,9 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#configuration-file-location
dashboard-variable:
- pattern: /docs/grafana/
destination: docs/grafana/<GRAFANA_VERSION>/dashboards/variables/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/variables/
- pattern: /docs/grafana-cloud/
destination: docs/grafana/<GRAFANA_VERSION>/dashboards/variables/
destination: /docs/grafana-cloud/visualizations/dashboards/variables/
feature-toggle:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#feature_toggles
@@ -76,12 +71,12 @@ refs:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/table/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/table/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/table/
time-series-panel:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/time-series/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/time-series/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/time-series/
---
# Transform data
@@ -119,7 +114,7 @@ The following steps guide you in adding a transformation to data. This documenta
1. Click the **Transform** tab.
1. Click a transformation.
A transformation row appears where you configure the transformation options. For more information about how to configure a transformation, refer to [Transformation functions](#transformation-functions).
For information about available calculations, refer to [Calculation types](ref:calculation-types).
For information about available calculations, refer to [Calculation types][].
1. To apply another transformation, click **Add transformation**.
This transformation acts on the result set returned by the previous transformation.
{{< figure src="/static/img/docs/transformations/transformations-7-0.png" class="docs-image--no-shadow" max-width= "1100px" alt="Transform tab in the panel editor" >}}
@@ -191,7 +186,7 @@ Use this transformation to add a new field calculated from two other fields. Eac
- **Variance** - Calculates the moving variance.
- **Row index** - Insert a field with the row index.
- **Field name** - Select the names of fields you want to use in the calculation for the new field.
- **Calculation** - If you select **Reduce row** mode, then the **Calculation** field appears. Click in the field to see a list of calculation choices you can use to create the new field. For information about available calculations, refer to [Calculation types](ref:calculation-types).
- **Calculation** - If you select **Reduce row** mode, then the **Calculation** field appears. Click in the field to see a list of calculation choices you can use to create the new field. For information about available calculations, refer to [Calculation types][].
- **Operation** - If you select **Binary operation** or **Unary operation** mode, then the **Operation** fields appear. These fields allow you to apply basic math operations on values in a single row from selected fields. You can also use numerical values for binary operations.
- **As percentile** - If you select **Row index** mode, then the **As percentile** switch appears. This switch allows you to transform the row index as a percentage of the total number of rows.
- **Alias** - (Optional) Enter the name of your new field. If you leave this blank, then the field will be named to match the calculation.
@@ -303,6 +298,9 @@ This transformation has the following options:
- **Numeric** - attempts to make the values numbers
- **String** - will make the values strings
- **Time** - attempts to parse the values as time
- The input will be parsed according to the [Moment.js parsing format](https://momentjs.com/docs/#/parsing/)
- It will parse the numeric input as a Unix epoch timestamp in milliseconds.
You must multiply your input by 1000 if it's in seconds.
- Will show an option to specify a DateFormat as input by a string like yyyy-mm-dd or DD MM YYYY hh:mm:ss
- **Boolean** - will make the values booleans
- **Enum** - will make the values enums
@@ -355,7 +353,7 @@ Consider the following dataset:
| 1636678680000000000 | {"value": 5} |
| 1636678620000000000 | {"value": 12} |
You could prepare the data to be used by a [Time series panel](ref:time-series-panel) with this configuration:
You could prepare the data to be used by a [Time series panel][] with this configuration:
- Source: json_data
- Format: JSON
@@ -536,7 +534,7 @@ Click and uncheck the field names to remove them from the result. Fields that ar
#### Use a dashboard variable
Enable 'From variable' to let you select a dashboard variable that's used to include fields. By setting up a [dashboard variable](ref:dashboard-variable) with multiple choices, the same fields can be displayed across multiple visualizations.
Enable 'From variable' to let you select a dashboard variable that's used to include fields. By setting up a [dashboard variable][] with multiple choices, the same fields can be displayed across multiple visualizations.
{{< figure src="/static/img/docs/transformations/filter-name-table-before-7-0.png" class="docs-image--no-shadow" max-width= "1100px" alt="A table visualization with time, value, Min, and Max columns" >}}
@@ -595,7 +593,7 @@ This transformation lets you tailor the time representation in your visualizatio
### Group by
Use this transformation to group the data by a specified field (column) value and process calculations on each group. Click to see a list of calculation choices. For information about available calculations, refer to [Calculation types](ref:calculation-types).
Use this transformation to group the data by a specified field (column) value and process calculations on each group. Click to see a list of calculation choices. For information about available calculations, refer to [Calculation types][].
Here's an example of original data.
@@ -675,7 +673,7 @@ We can generate a matrix using the values of 'Server Status' as column names, th
Use this transformation to construct a matrix by specifying fields from your query results. The matrix output reflects the relationships between the unique values in these fields. This helps you present complex relationships in a clear and structured matrix format.
### Group to nested table
### Group to nested tables
Use this transformation to group the data by a specified field (column) value and process calculations on each group. Records are generated that share the same grouped field value, to be displayed in a nested table.
@@ -687,7 +685,7 @@ Once **Calculate** has been selected, another selection box will appear next to
{{< figure src="/static/img/docs/transformations/nested-table-select-stat.png" class="docs-image--no-shadow" max-width= "1100px" alt="A select box showing available statistic calculations once the calculate option for the field has been selected." >}}
For information about available calculations, refer to [Calculation types](ref:calculation-types).
For information about available calculations, refer to [Calculation types][].
Here's an example of original data:
@@ -1419,7 +1417,7 @@ This transformation allows you to manipulate and analyze geospatial data, enabli
### Time series to table transform
Use this transformation to convert time series results into a table, transforming a time series data frame into a **Trend** field which can then be used with the [sparkline cell type](ref:sparkline-cell-type). If there are multiple time series queries, each will result in a separate table data frame. These can be joined using join or merge transforms to produce a single table with multiple sparklines per row.
Use this transformation to convert time series results into a table, transforming a time series data frame into a **Trend** field which can then be used with the [sparkline cell type][]. If there are multiple time series queries, each will result in a separate table data frame. These can be joined using join or merge transforms to produce a single table with multiple sparklines per row.
{{< figure src="/static/img/docs/transformations/table-sparklines.png" class="docs-image--no-shadow" max-width= "1100px" alt="A table panel showing multiple values and their corresponding sparklines." >}}
@@ -1427,7 +1425,7 @@ For each generated **Trend** field value, a calculation function can be selected
{{< figure src="/static/img/docs/transformations/timeseries-table-select-stat.png" class="docs-image--no-shadow" max-width= "1100px" alt="A select box showing available statistics that can be calculated." >}}
> **Note:** This transformation is available in Grafana 9.5+ as an opt-in beta feature. Modify the Grafana [configuration file](ref:configuration-file) to use it.
> **Note:** This transformation is available in Grafana 9.5+ as an opt-in beta feature. Modify the Grafana [configuration file][] to use it.
### Regression analysis
@@ -1442,4 +1440,10 @@ There are two different models:
> **Note:** This transformation is currently in public preview. Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available. Enable the `regressionTransformation` feature toggle in Grafana to use this feature. Contact Grafana Support to enable this feature in Grafana Cloud.
[Data frames]: https://grafana.com/developers/plugin-tools/introduction/data-frames/
[Table panel]: ref:table-panel
[Calculation types]: ref:calculation-types
[sparkline cell type]: ref:sparkline-cell-type
[configuration file]: ref:configuration-file
[Time series panel]: ref:time-series-panel
[feature toggle]: ref:feature-toggle
[dashboard variable]: ref:dashboard-variable

View File

@@ -28,12 +28,14 @@ refs:
# Alert list
Alert lists allow you to display a list of important alerts that you want to track. You can configure the alert list to show the current state of your alert, such as firing, pending, or normal. Learn more about alerts in [Grafana Alerting overview][].
Alert lists allow you to display a list of important alerts that you want to track. You can configure the alert list to show the current state of your alert, such as firing, pending, or normal. Learn more about alerts in [Grafana Alerting overview](ref:grafana-alerting-overview).
{{< figure src="/static/img/docs/alert-list-panel/alert-list-panel.png" max-width="850px" alt="An alert list visualization" >}}
On each dashboard load, this visualization queries the alert list, always providing the most up-to-date results.
{{< docs/play title="Alert List" url="https://play.grafana.org/d/bdodlcyou483ke/" >}}
## Configure an alert list
Once youve created a [dashboard](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard/), the following video shows you how to configure an alert list visualization:

View File

@@ -154,6 +154,22 @@ Transparency of the gradient is calculated based on the values on the y-axis. Op
Gradient color is generated based on the hue of the line color.
#### Scheme gradient mode
The **Gradient mode** option located under the **Graph styles** has a mode named **Scheme**. When you enable **Scheme**, the bar receives a gradient color defined from the selected **Color scheme**.
##### From thresholds
If the **Color scheme** is set to **From thresholds (by value)** and **Gradient mode** is set to **Scheme**, then the bar color changes as they cross the defined thresholds.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_thresholds_bars.png" max-width="1200px" caption="Color scheme: From thresholds" >}}
##### Gradient color schemes
The following image shows a bar chart with the **Green-Yellow-Red (by value)** color scheme option selected.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_bars.png" max-width="1200px" caption="Color scheme: Green-Yellow-Red" >}}
## Tooltip options
{{< docs/shared lookup="visualizations/tooltip-options-1.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -24,11 +24,16 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard-url-variables/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/dashboards/build-dashboards/create-dashboard-url-variables/
dashboard:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/dashboards/build-dashboards/create-dashboard/
---
# Dashboard list
Dashboard lists allow you to display dynamic links to other dashboards. The list can be configured to use starred dashboards, recently viewed dashboards, a search query, and dashboard tags.
Dashboard lists allow you to display dynamic links to other dashboards. You can configure the list to use starred dashboards, recently viewed dashboards, a search query, and dashboard tags.
{{< figure src="/static/img/docs/v45/dashboard-list-panels.png" max-width="850px" alt="A dashboard list visualization" >}}
@@ -38,7 +43,7 @@ You can use a dashboard list visualization to display a list of important dashbo
## Configure a dashboard list visualization
Once youve created a [dashboard](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard/), the following video shows you how to configure a dashboard list visualization:
Once youve created a [dashboard](ref:dashboard), the following video shows you how to configure a dashboard list visualization:
{{< youtube id="MserjWGWsh8" >}}
@@ -58,7 +63,7 @@ Select this option to propagate the time range of the current dashboard to the d
### Include current template variable values
Select this option to include template variables currently used as query parameters in a link. When you click the link, any matching templates in the linked dashboard are set to the values from the link. Learn more in [Dashboard URL variables](ref:dashboard-url-variables).
Select this option to include template variables that are being used as query parameters in a link. When you click the link, any matching templates in the linked dashboard are set to the values from the link. Learn more in [Dashboard URL variables](ref:dashboard-url-variables).
### Starred
@@ -70,11 +75,15 @@ Display recently viewed dashboards in alphabetical order.
### Search
Display dashboards by search query or tags. You must enter at least one value in **Query** or **Tags**. For the **Query** and **Tags** fields, variable interpolation is supported. For example, `$my_var` or `${my_var}`.
Display dashboards by search query or tags. You must enter at least one value in **Query** or **Tags**. For the **Query** and **Tags** fields, variable interpolation is supported. For example, `$my_var` or `${my_var}`. Learn more in [Search option](#search-options).
### Show headings
The selected list section (**Starred**, **Recently viewed**, **Search**) is shown as a heading.
The selected list section is shown as a heading:
- **Starred**
- **Recently viewed**
- **Search**
### Max items
@@ -82,11 +91,11 @@ Sets the maximum number of items to list per section. For example, if you leave
## Search options
These options only apply if the **Search** option is selected.
These options only apply if you select the **Search** option.
### Query
Enter the query by which you want to search. Queries are case-insensitive and partial values are accepted.
Use this field to search by dashboard name. Query terms are case-insensitive and partial values are accepted. For example, if you have dashboards called "Indoor Temps" and "Outdoor temp", entering the word "temp" would return both results.
### Folder
@@ -94,6 +103,8 @@ Select the dashboard folders that you want to display.
### Tags
Enter tags by which you want to search. Note that existing tags don't appear as you type, and they _are_ case sensitive.
Enter tags by which you want to search. Note that tags don't appear as you type, and they're case sensitive. Tag search uses an `OR` condition, so if a dashboard has one of the defined tags, it's included in the list.
> **Note:** When multiple tags and strings appear, the dashboard list displays those matching _all_ conditions.
{{< admonition type="note" >}}
When multiple tags and strings appear, the dashboard list displays those matching _all_ conditions.
{{< /admonition >}}

View File

@@ -31,6 +31,10 @@ Gauges are single-value visualizations that can repeat a gauge for every series,
{{< docs/play title="Grafana Gauge Visualization" url="https://play.grafana.org/d/KIhkVD6Gk/" >}}
The following video provides beginner steps for creating gauge panels. You'll learn the data requirements and caveats, special customizations, and much more:
{{< youtube id="QwXj3y_YpnE" >}}
## Panel options
{{< docs/shared lookup="visualizations/panel-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -35,7 +35,7 @@ labels:
title: Geomap
weight: 100
refs:
data-format-supported-by-the-node-graph-visualization:
data-format:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/node-graph/#data-api
- pattern: /docs/grafana-cloud/
@@ -98,6 +98,14 @@ The initial view configures how the geomap renders when the panel is first loade
- **Oceania**
- **Zoom** sets the initial zoom level.
### Share view
The **Share view** option allows you to link the movement and zoom actions of multiple map visualizations within the same dashboard. The map visualizations that have this option enabled act in tandem when one of them is moved or zoomed, leaving the other ones independent.
{{< admonition type="note" >}}
You might need to reload the dashboard for this feature to work.
{{< /admonition >}}
## Map layers
Geomaps support showing multiple layers. Each layer determines how you visualize geospatial data on top of the base map.
@@ -156,9 +164,13 @@ The layer controls allow you to create layers, change their name, reorder and de
You can add multiple layers of data to a single geomap in order to create rich, detailed visualizations.
### Location
### Data
Geomaps need a source of geographical data. This data comes from a database query, and there are four mapping options for your data.
Geomaps need a source of geographical data gathered from a data source query which can return multiple datasets. By default Grafana picks the first dataset, but this drop-down allows you to pick other datasets if the query returns more than one.
### Location mode
There are four options to map the data returned by the selected query:
- **Auto** automatically searches for location data. Use this option when your query is based on one of the following names for data fields.
- geohash: “geohash”
@@ -258,8 +270,9 @@ The markers layer allows you to display data points as different marker shapes s
![Markers Layer](/static/img/docs/geomap-panel/geomap-markers-8-1-0.png)
![Markers Layer Options](/static/img/docs/geomap-panel/geomap-markers-options-8-1-0.png)
{{< figure src="/media/docs/grafana/panels-visualizations/geomap-markers-options-11-1-0.png" max-width="350px" alt="Markers layer options" >}}
- **Data** and **Location mode** configure the data settings for the layer. For more information, refer to [Data](#data) and [Location mode](#location-mode).
- **Size** configures the size of the markers. The default is `Fixed size`, which makes all marker sizes the same regardless of the data; however, there is also an option to size the markers based on data corresponding to a selected field. `Min` and `Max` marker sizes have to be set such that the markers can scale within this range.
- **Symbol** allows you to choose the symbol, icon, or graphic to aid in providing additional visual context to your data. Choose from assets that are included with Grafana such as simple symbols or the Unicon library. You can also specify a URL containing an image asset. The image must be a scalable vector graphic (SVG).
- **Symbol Vertical Align** configures the vertical alignment of the symbol relative to the data point. Note that the symbol's rotation angle is applied first around the data point, then the vertical alignment is applied relative to the rotation of the symbol.
@@ -282,8 +295,9 @@ Similar to `Markers`, you are prompted with various options to determine which d
![Heatmap Layer](/static/img/docs/geomap-panel/geomap-heatmap-8-1-0.png)
![Heatmap Layer Options](/static/img/docs/geomap-panel/geomap-heatmap-options-8-1-0.png)
{{< figure src="/media/docs/grafana/panels-visualizations/geomap-heatmap-options-11-1-0.png" max-width="350px" alt="Heatmap layer options" >}}
- **Data** and **Location mode** configure the data settings for the layer. For more information, refer to [Data](#data) and [Location mode](#location-mode).
- **Weight values** configure the intensity of the heatmap clusters. `Fixed value` keeps a constant weight value throughout all data points. This value should be in the range of 0~1. Similar to Markers, there is an alternate option in the drop-down to automatically scale the weight values depending on data values.
- **Radius** configures the size of the heatmap clusters.
- **Blur** configures the amount of blur on each cluster.
@@ -333,6 +347,7 @@ The Night / Day layer displays night and day regions based on the current time r
### Options
- **Data** configures the data set for the layer. For more information, refer to [Data](#data).
- **Show** toggles the time source from panel time range.
- **Night region color** picks the color for the night region.
- **Display sun** toggles the sun icon.
@@ -357,6 +372,7 @@ The Route layer renders data points as a route.
### Options
- **Data** and **Location mode** configure the data settings for the layer. For more information, refer to [Data](#data) and [Location mode](#location-mode).
- **Size** sets the route thickness. Fixed value by default. When field data is selected you can set the Min and Max range in which field data can scale.
- **Color** sets the route color. Set to `Fixed color` by default. You can also tie the color to field data.
- **Fill opacity** configures the opacity of the route.
@@ -385,6 +401,7 @@ The Photos layer renders a photo at each data point.
### Options
- **Data** and **Location mode** configure the data settings for the layer. For more information, refer to [Data](#data) and [Location mode](#location-mode).
- **Image Source field** allows you to select a string field containing image data in either of the following formats:
- **Image URLs**
- **Base64 encoded** - Image binary ("data:image/png;base64,...")
@@ -412,13 +429,14 @@ The Photos layer renders a photo at each data point.
The Network layer is currently in [public preview](/docs/release-life-cycle/). Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available.
{{% /admonition %}}
The Network layer renders a network graph. This layer supports the same [data format supported by the node graph visualization](ref:data-format-supported-by-the-node-graph-visualization) with the addition of [geospatial data]({{< relref "#location">}}) included in the nodes data. The geospatial data is used to locate and render the nodes on the map.
The Network layer renders a network graph. This layer supports the same [data format supported by the node graph visualization](ref:data-format) with the addition of [geospatial data](#location-mode) included in the nodes data. The geospatial data is used to locate and render the nodes on the map.
{{< figure src="/media/docs/grafana/screenshot-grafana-10-1-geomap-network-layer-v2.png" max-width="750px" caption="Geomap network layer" >}}
{{< video-embed src="/media/docs/grafana/screen-recording-10-1-geomap-network-layer-from-node-graph.mp4" max-width="750px" caption="Node graph to Geomap network layer" >}}
### Options
- **Data** and **Location mode** configure the data settings for the layer. For more information, refer to [Data](#data) and [Location mode](#location-mode).
- **Arrow** sets the arrow direction to display for each edge, with forward meaning source to target. Choose from:
- **None**
- **Forward**

View File

@@ -54,10 +54,6 @@ For logs where a **level** label is specified, we use the value of the label to
Each log row has an extendable area with its labels and detected fields, for more robust interaction. Each field or label has a stats icon to display ad-hoc statistics in relation to all displayed logs.
### Data links
By using data links, you can turn any part of a log message into an internal or external link. The created link is visible as a button in the **Links** section inside the **Log details** view.
### Display options
Use these settings to refine your visualization:
@@ -68,5 +64,5 @@ Use these settings to refine your visualization:
- **Wrap lines -** Toggle line wrapping.
- **Prettify JSON -** Set this to `true` to pretty print all JSON logs. This setting does not affect logs in any format other than JSON.
- **Enable log details -** Toggle option to see the log details view for each log row. The default setting is true.
- **Deduplication -** Hides log messages that are duplicates of others shown according to criteria such as exact match, or those that only differ by numbers such as IPs or latencies.
- **Deduplication -** Hides log messages that are duplicates of others shown according to your selected criteria. Choose from: **Exact** (ignoring ISO datetimes), **Numerical** (ignoring only those that differ by numbers such as IPs or latencies), or **Signatures** (removing successive lines with identical punctuation and white space).
- **Order -** Display results in descending or ascending time order. The default is **Descending**, showing the newest logs first. Set to **Ascending** to show the oldest log lines first.

View File

@@ -30,6 +30,8 @@ In version 8.5, we discontinued the "Use Proxy" option for Grafana news visualiz
You can use the news visualization to provide regular news and updates to your users.
{{< docs/play title="News Panel" url="https://play.grafana.org/d/cdodkwspaaa68b/" >}}
## Configure a news visualization
Once youve created a [dashboard](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/dashboards/build-dashboards/create-dashboard/), enter the URL of an RSS in the [URL](#url) field in the **News** section. This visualization type doesn't accept any other queries, and you shouldn't expect to be able to filter or query the RSS feed data in any way using this visualization.

View File

@@ -25,6 +25,37 @@ Node graphs can visualize directed graphs or networks. They use a directed force
![Node graph visualization](/static/img/docs/node-graph/node-graph-8-0.png 'Node graph')
## Configure a node graph visualization
The following video provides beginner steps for creating node panel visualizations. You'll learn the data requirements and caveats, special customizations, and much more:
{{< youtube id="VrvsMkRwoKw" >}}
{{< docs/play title="Node graph panel" url="https://play.grafana.org/d/bdodfbi3d57uoe/" >}}
## Panel options
{{< docs/shared lookup="visualizations/panel-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Nodes options
The **Nodes** options section provides configurations for node behaviors.
- **Main stat unit** - Choose which unit the main stat displays in the graph's nodes.
- **Secondary stat unit** - Choose which unit the secondary stat displays in the graph's nodes.
- **Arc sections** - Configure which fields define the size of the colored circle around the node and select a color for each. You can add multiple fields.
{{< admonition type="note" >}}
Defining arc sections overrides the automatic detection of `arc__*` and `color` fields described in the **Optional fields** section of [Nodes data frame structure](#nodes-data-frame-structure).
{{< /admonition >}}
## Edges options
The **Edges** options section provides configurations for node edges behaviors.
- **Main stat unit** - Choose which unit the main stat displays in the graph's edges.
- **Secondary stat unit** - Choose which unit the secondary stat displays in the graph's edges.
## Data requirements
A node graph requires a specific shape of the data to be able to display its nodes and edges. This means not every data source or query can be visualized with this graph. If you want to use this as a data source developer see the section about data API.
@@ -142,7 +173,3 @@ Optional fields:
| icon | string | Name of the icon to show inside the node instead of the default stats. Only Grafana built in icons are allowed (see the available icons [here](https://developers.grafana.com/ui/latest/index.html?path=/story/docs-overview-icon--icons-overview)). |
| nodeRadius | number | Radius value in pixels. Used to manage node size. |
| highlighted | boolean | Sets whether the node should be highlighted. Useful for example to represent a specific path in the graph by highlighting several nodes and edges. Default: `false` |
## Panel options
{{< docs/shared lookup="visualizations/panel-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -27,6 +27,12 @@ refs:
Pie charts display reduced series, or values in a series, from one or more queries, as they relate to each other, in the form of slices of a pie. The arc length, area and central angle of a slice are all proportional to the slices value, as it relates to the sum of all values. This type of chart is best used when you want a quick comparison of a small set of values in an aesthetically pleasing form.
## Configure a pie chart visualization
The following video guides you through the creation steps and common customizations of pie chart visualizations and is great for beginners:
{{< youtube id="A_lDhM9w4_g" >}}
{{< docs/play title="Grafana Bar Charts and Pie Charts" url="https://play.grafana.org/d/ktMs4D6Mk/" >}}
## Panel options

View File

@@ -27,9 +27,9 @@ refs:
# Stat
{{% admonition type="note" %}}
{{< admonition type="note" >}}
This visualization replaces the Singlestat visualization, which was deprecated in Grafana 7.0 and removed in Grafana 8.0.
{{% /admonition %}}
{{< /admonition >}}
A stat visualization displays your data in single values of interest&mdash;such as the latest or current value of a series&mdash;with an optional graph sparkline. A graph sparkline, which is only available in stat visualizations, is a small time-series graph shown in the background of each value in the visualization.
@@ -157,9 +157,9 @@ Set whether wide layout is enabled or not. Wide layout is enabled by default.
- **On -** Wide layout is enabled.
- **Off -** Wide layout is disabled.
{{% admonition type="note" %}}
{{< admonition type="note" >}}
This option is only applicable when **Text mode** is set to **Value and name**. When wide layout is enabled, the value and name are displayed side-by-side with the value on the right, if the panel is wide enough. When wide layout is disabled, the value is always rendered underneath the name.
{{% /admonition %}}
{{< /admonition >}}
### Color mode
@@ -188,19 +188,17 @@ Choose an alignment mode.
Set whether percent change is displayed or not. Disabled by default.
{{% admonition type="note" %}}
{{< admonition type="note" >}}
This option is not applicable when the **Show** setting, under **Value options**, is set to **All values**.
{{% /admonition %}}
{{< /admonition >}}
### Percent change color mode
- **Standard** -- Green if the percent change is positive, red if the percent change is negative.
- **Inverted** -- Red if the percent change is positive, green if the percent change is negative.
- **Same as Value** -- Use the same color as the value.
This option is only displayed when **Show percent change** is enabled. Choose from:
{{% admonition type="note" %}}
This option only appears when **Show percent change** is enabled.
{{% /admonition %}}
- **Standard -** Green if the percent change is positive, red if the percent change is negative.
- **Inverted -** Red if the percent change is positive, green if the percent change is negative.
- **Same as Value -** Use the same color as the value.
## Text size

View File

@@ -49,11 +49,16 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#configuration-file-location
- pattern: /docs/grafana-cloud/
destination: /docs/grafana/<GRAFANA_VERSION>/setup-grafana/configure-grafana/#configuration-file-location
field-override:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/configure-overrides/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-overrides/
---
# Table
Tables are very flexible, supporting multiple modes for time series and for tables, annotation, and raw JSON data. This visualization also provides date formatting, value formatting, and coloring options. In addition to formatting and coloring options, Grafana also provides a variety of _Cell types_ which you can use to display gauges, sparklines, and other rich data displays.
Tables are a highly flexible visualization designed to display data in columns and rows. They support various data types, including tables, time series, annotations, and raw JSON data. The table visualization can even take multiple data sets and provide the option to switch between them. With this versatility, it's the preferred visualization for viewing multiple data types, aiding in your data analysis needs.
{{< figure src="/static/img/docs/tables/table_visualization.png" max-width="1200px" lightbox="true" caption="Table visualization" >}}
@@ -63,9 +68,9 @@ The following video provides a visual walkthrough of the options you can set in
{{< docs/play title="Table Visualizations in Grafana" url="https://play.grafana.org/d/OhR1ID6Mk/" >}}
## Annotation and alert support
Annotations and alerts are not currently supported in tables.
{{< admonition type="note" >}}
Annotations and alerts are not currently supported for tables.
{{< /admonition >}}
## Sort column
@@ -73,6 +78,12 @@ Click a column title to change the sort order from default to descending to asce
![Sort descending](/static/img/docs/tables/sort-descending.png 'Sort descending')
## Data set selector
If the data queried contains multiple data sets, a table displays a drop-down list at the bottom, so you can select the data set you want to visualize.
![Table visualization with multiple data sets](/media/docs/grafana/panels-visualizations/TablePanelMultiSet.png)
## Panel options
{{< docs/shared lookup="visualizations/panel-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
@@ -87,13 +98,13 @@ If you are using a table created before Grafana 7.0, then you need to migrate to
Show or hide column names imported from your data source.
## Column width
### Column width
By default, Grafana automatically calculates the column width based on the table size and the minimum column width. This field option can override the setting and define the width for all columns in pixels.
For example, if you enter `100` in the field, then when you click outside the field, all the columns will be set to 100 pixels wide.
## Minimum column width
### Minimum column width
By default, the minimum width of the table column is 150 pixels. This field option can override that default and will define the new minimum column width for the table in pixels.
@@ -101,7 +112,7 @@ For example, if you enter `75` in the field, then when you click outside the fie
For small-screen devices, such as smartphones or tablets, reduce the default `150` pixel value to`50` to allow table-based panels to render correctly in dashboards.
## Column alignment
### Column alignment
Choose how Grafana should align cell contents:
@@ -110,7 +121,17 @@ Choose how Grafana should align cell contents:
- Center
- Right
## Cell type
### Column filter
You can temporarily change how column data is displayed. For example, you can order values from highest to lowest or hide specific values. For more information, refer to [Filter table columns](#filter-table-columns).
### Pagination
Use this option to enable or disable pagination. It is a front-end option that does not affect queries. When enabled, the page size automatically adjusts to the height of the table.
## Cell options
### Cell type
By default, Grafana automatically chooses display settings. You can override the settings by choosing one of the following options to set the default for all fields. Additional configuration is available for some cell types.
@@ -118,21 +139,17 @@ By default, Grafana automatically chooses display settings. You can override the
If you set these in the Field tab, then the type will apply to all fields, including the time field. Many options will work best if you set them in the Override tab so that they can be restricted to one or more fields.
{{% /admonition %}}
### Auto
#### Auto
The Auto cell type will automatically display values with sensible defaults applied.
The **Auto** cell type automatically displays values, with sensible defaults applied.
Toggle the **Wrap text** switch, to wrap text in the cell with the longest content or the matched field in the case of field overrides.
### Color text
#### Color text
If thresholds are set, then the field text is displayed in the appropriate threshold color.
{{< figure src="/static/img/docs/tables/color-text.png" max-width="500px" caption="Color text" class="docs-image--no-shadow" >}}
Toggle the **Wrap text** switch, to wrap text in the cell with the longest content or the matched field in the case of field overrides.
### Color background (gradient or solid)
#### Color background (gradient or solid)
If thresholds are set, then the field background is displayed in the appropriate threshold color.
@@ -142,31 +159,33 @@ Toggle the **Apply to entire row** switch, to apply the background color that's
{{< figure src="/static/img/docs/tables/colored-rows.png" max-width="500px" alt="Colored row background" class="docs-image--no-shadow" >}}
Toggle the **Wrap text** switch, to wrap text in the cell with the longest content or the matched field in the case of field overrides.
### Gauge
#### Gauge
Cells can be displayed as a graphical gauge, with several different presentation types.
#### Basic
{{< admonition type="note" >}}
The maximum and minimum values of the gauges are configured automatically from the smallest and largest values in your whole data set. If you don't want the max/min values to be pulled from the whole data set, you can configure them for each column with field overrides.
{{< /admonition >}}
##### Basic
The basic mode will show a simple gauge with the threshold levels defining the color of gauge.
{{< figure src="/static/img/docs/tables/basic-gauge.png" max-width="500px" caption="Gradient gauge" class="docs-image--no-shadow" >}}
#### Gradient
##### Gradient
The threshold levels define a gradient.
{{< figure src="/static/img/docs/tables/gradient-gauge.png" max-width="500px" caption="Gradient gauge" class="docs-image--no-shadow" >}}
#### LCD
##### LCD
The gauge is split up in small cells that are lit or unlit.
{{< figure src="/static/img/docs/tables/lcd-gauge.png" max-width="500px" caption="LCD gauge" class="docs-image--no-shadow" >}}
#### Label Options
##### Label Options
Additionally, labels displayed alongside of the gauges can be set to be colored by value, match the theme text color, or be hidden.
@@ -182,17 +201,17 @@ Additionally, labels displayed alongside of the gauges can be set to be colored
{{< figure src="/static/img/docs/tables/hidden-mode.png" max-width="500px" caption="Hide Label" class="docs-image--no-shadow" >}}
### Data links
#### Data links
If you've configured data links, when the cell type is **Auto** mode, the cell text becomes clickable. If you change the cell type to **Data links**, the cell text reflects the titles of the configured data links. To control the application of data link text more granularly use a **Cell option > Cell type > Data links** field override.
### JSON view
#### JSON view
Shows value formatted as code. If a value is an object the JSON view allowing browsing the JSON object will appear on hover.
{{< figure src="/static/img/docs/tables/json-view.png" max-width="500px" caption="JSON view" class="docs-image--no-shadow" >}}
### Image
#### Image
> Only available in Grafana 7.3+
@@ -200,7 +219,7 @@ If you have a field value that is an image URL or a base64 encoded image you can
{{< figure src="/static/img/docs/v73/table_hover.gif" max-width="900px" caption="Table hover" >}}
### Sparkline
#### Sparkline
Shows values rendered as a sparkline. You can show sparklines using the [Time series to table transformation](ref:time-series-to-table-transformation) on data with multiple time series to process it into a format the table can show.
@@ -208,7 +227,15 @@ Shows values rendered as a sparkline. You can show sparklines using the [Time se
You can be customize sparklines with many of the same options as the [Time series panel](ref:time-series-panel) including line width, fill opacity, and more. You can also change the color of the sparkline by updating the [color scheme](ref:color-scheme) in the _Standard options_ section of the panel configuration.
## Cell value inspect
### Wrap text
{{< admonition type="note" >}}
Text wrapping is in [public preview](https://grafana.com/docs/release-life-cycle/#public-preview), however, its available to use by default. Wed love hear from you about how this new feature is working. To provide feedback, you can open an issue in the [Grafana GitHub repository](https://github.com/grafana/grafana).
{{< /admonition >}}
Toggle the **Wrap text** switch to wrap text in the cell with the longest content in your table. To wrap the text in a specific column only, use the Wrap Text option in a [field override](ref:field-override).
### Cell value inspect
Enables value inspection from table cell. The raw value is presented in a modal window.
@@ -216,19 +243,7 @@ Enables value inspection from table cell. The raw value is presented in a modal
Cell value inspection is only available when cell display mode is set to Auto, Color text, Color background or JSON View.
{{% /admonition %}}
## Column filter
You can temporarily change how column data is displayed. For example, you can order values from highest to lowest or hide specific values. For more information, refer to [Filter table columns](#filter-table-columns).
## Pagination
Use this option to enable or disable pagination. It is a front-end option that does not affect queries. When enabled, the page size automatically adjusts to the height of the table.
## Filter table columns
If you turn on the **Column filter**, then you can filter table options.
### Turn on column filtering
## Turn on column filtering
1. In Grafana, navigate to the dashboard with the table with the columns that you want to filter.
1. On the table panel you want to filter, open the panel editor.

View File

@@ -31,6 +31,7 @@ labels:
- oss
description: Configure options for Grafana's time series visualization
title: Time series
menuTitle: Time series
weight: 10
refs:
configure-standard-options:
@@ -43,10 +44,6 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/configure-standard-options/#color-scheme
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-standard-options/#color-scheme
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/configure-standard-options/#color-scheme
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-standard-options/#color-scheme
add-a-field-override:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/configure-overrides/#add-a-field-override
@@ -57,147 +54,225 @@ refs:
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/configure-overrides/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-overrides/
alert-list:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/visualizations/alert-list/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/alert-list/
link-alert:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-grafana-managed-rule/
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/alerting-and-irm/alerting/alerting-rules/create-grafana-managed-rule/
panel-editor-alerts:
- pattern: /docs/grafana/
destination: /docs/grafana/<GRAFANA_VERSION>/panels-visualizations/panel-editor-overview/#data-section
- pattern: /docs/grafana-cloud/
destination: /docs/grafana-cloud/visualizations/panels-visualizations/panel-editor-overview/#data-section
---
# Time series
{{< figure src="/static/img/docs/time-series-panel/time_series_small_example.png" max-width="1200px" caption="Time series" >}}
Time series visualizations are the default way to visualize data points over intervals of time, as a graph. They can render series as lines, points, or bars and are versatile enough to display almost any time-series data.
Time series visualizations are the default and primary way to visualize time series data as a graph. They can render series as lines, points, or bars. They're versatile enough to display almost any time-series data.
{{< figure src="/static/img/docs/time-series-panel/time_series_small_example.png" max-width="1200px" alt="Time series" >}}
{{% admonition type="note" %}}
You can [link alert rules](ref:link-alert) to time series visualization to observe when alerts fire and are resolved in the form of annotations. In addition, you can create alert rules from the Alert tab within the panel options.
At the moment, alerts are only supported in the time series and [alert list](ref:alert-list) visualizations.
{{% /admonition %}}
{{< admonition type="note" >}}
You can migrate from the legacy Graph visualization to the time series visualization. To migrate, open the panel and click the **Migrate** button in the side pane.
{{< /admonition >}}
{{% admonition type="note" %}}
You can migrate from the old Graph visualization to the new time series visualization. To migrate, open the panel and click the **Migrate** button in the side pane.
{{% /admonition %}}
## Configure a time series visualization
The following video guides you through the creation steps and common customizations of time series visualizations and is great for beginners:
The following video guides you through the creation steps and common customizations of time series visualizations, and is great for beginners:
{{< youtube id="RKtW87cPxsw" >}}
{{< docs/play title="Time Series Visualizations in Grafana" url="https://play.grafana.org/d/000000016/" >}}
## Panel options
## Supported data formats
Time series visualizations require time-series data&mdash;a sequence of measurements, ordered in time, and formatted as a table&mdash;where every row in the table represents one individual measurement at a specific time. Learn more about [time-series data](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/fundamentals/timeseries/).
## Alert rules
You can [link alert rules](ref:link-alert) to time series visualizations in the form of annotations to observe when alerts fire and are resolved. In addition, you can create alert rules from the **Alert** tab within the [panel editor](ref:panel-editor-alerts).
## Special overrides
The following overrides help you further refine a time series visualization.
### Transform override property
Use the **Graph styles > Transform** [override property](#field-overrides) to transform series values without affecting the values shown in the tooltip, context menu, or legend. Choose from the following transform options:
- **Constant** - Show the first value as a constant line.
- **Negative Y transform** - Flip the results to negative values on the y-axis.
### Fill below to override property
The **Graph styles > Fill below to** [override property](#field-overrides) fills the area between two series. When you configure the property, select the series for which you want the fill to stop.
The following example shows three series: Min, Max, and Value. The Min and Max series have **Line width** set to 0. Max has a **Fill below to** override set to Min, which fills the area between Max and Min with the Max line color.
{{< figure src="/static/img/docs/time-series-panel/fill-below-to-7-4.png" max-width="600px" alt="Fill below to example" >}}
{{< docs/shared lookup="visualizations/multiple-y-axes.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+2" >}}
## Configuration options
{{< docs/shared lookup="visualizations/config-options-intro.md" source="grafana" version="<GRAFANA_VERSION>" >}}
### Panel options
{{< docs/shared lookup="visualizations/panel-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Tooltip options
### Tooltip options
{{< docs/shared lookup="visualizations/tooltip-options-2.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{< docs/shared lookup="visualizations/tooltip-options-2.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1">}}
## Legend options
### Legend options
{{< docs/shared lookup="visualizations/legend-options-1.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{< docs/shared lookup="visualizations/legend-options-1.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1" >}}
## Graph styles
### Axis options
Use this option to define how to display your time series data. You can use overrides to combine multiple styles in the same graph.
Options under the **Axis** section control how the x- and y-axes are rendered. Some options don't take effect until you click outside of the field option box you're editing. You can also press `Enter`.
- Lines
- Bars
- Points
| Option | Description |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Time zone | Set the desired time zones to display along the x-axis. |
| [Placement](#placement) | Select the placement of the y-axis. |
| Label | Set a y-axis text label. If you have more than one y-axis, then you can assign different labels using an override. |
| Width | Set a fixed width of the axis. By default, Grafana dynamically calculates the width of an axis. By setting the width of the axis, data with different axes types can share the same display proportions. This setting makes it easier for you to compare more than one graphs worth of data because the axes aren't shifted or stretched within visual proximity to each other. |
| Show grid lines | Set the axis grid line visibility.<br> |
| Color | Set the color of the axis. |
| Show border | Set the axis border visibility. |
| Scale | Set the y-axis values scale.<br> |
| Centered zero | Set the y-axis so it's centered on zero. |
| [Soft min](#soft-min-and-soft-max) | Set a soft min to better control the y-axis limits. zero. |
| [Soft max](#soft-min-and-soft-max) | Set a soft max to better control the y-axis limits. zero. |
#### Placement
Select the placement of the y-axis. Choose from the following:
- **Auto** - Automatically assigns the y-axis to the series. When there are two or more series with different units, Grafana assigns the left axis to the first unit and the right axis to the units that follow.
- **Left** - Display all y-axes on the left side.
- **Right** - Display all y-axes on the right side.
- **Hidden** - Hide all axes. To selectively hide axes, [Add a field override](ref:add-a-field-override) that targets specific fields.
#### Soft min and soft max
Set a **Soft min** or **soft max** option for better control of y-axis limits. By default, Grafana sets the range for the y-axis automatically based on the dataset.
**Soft min** and **soft max** settings can prevent small variations in the data from being magnified when it's mostly flat. In contrast, hard min and max values help prevent obscuring useful detail in the data by clipping intermittent spikes past a specific point.
To define hard limits of the y-axis, set standard min/max options. For more information, refer to [Configure standard options](ref:configure-standard-options).
![Label example](/static/img/docs/time-series-panel/axis-soft-min-max-7-4.png)
### Graph styles options
The options under the **Graph styles** section let you control the general appearance of the graph, excluding [color](#standard-options).
| Option | Description |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Style](#style) | Choose whether to display your time-series data as lines, bars, or points. |
| [Line interpolation](#line-interpolation) | Choose how the graph interpolates the series line. |
| Line width | Set the thickness of the series lines or the outline for bars using the **Line width** slider. |
| [Fill opacity](#fill-opacity) | Set the series area fill color using the **Fill opacity** slider. |
| [Gradient mode](#gradient-mode) | Choose a gradient mode to control the gradient fill, which is based on the series color. |
| [Line style](#line-style) | Choose a solid, dashed, or dotted line style. |
| [Connect null values](#connect-null-values) | Choose how null values, which are gaps in the data, appear on the graph. |
| [Disconnect values](#disconnect-values) | Choose whether to set a threshold above which values in the data should be disconnected. |
| [Show points](#show-points) | Set whether to show data points to lines or bars. |
| Point size | Set the size of the points, from 1 to 40 pixels in diameter. |
| [Stack series](#stack-series) | Set whether Grafana displays series on top of each other. |
| [Bar alignment](#bar-alignment) | Set the position of the bar relative to a data point. |
| Bar width factor | Set the width of the bar relative to minimum space between data points. A factor of 0.5 means that the bars take up half of the available space between data points. A factor of 1.0 means that the bars take up all available space. |
#### Style
Choose whether to display your time-series data as lines, bars, or points. You can use overrides to combine multiple styles in the same graph. Choose from the following:
![Style modes](/static/img/docs/time-series-panel/style-modes-v9.png)
### Bar alignment
#### Line interpolation
Set the position of the bar relative to a data point. In the examples below, **Show points** is set to **Always** which makes it easier to see the difference this setting makes. The points do not change; the bars change in relationship to the points.
Choose how the graph interpolates the series line:
- **Before** ![Bar alignment before icon](/static/img/docs/time-series-panel/bar-alignment-before.png)
The bar is drawn before the point. The point is placed on the trailing corner of the bar.
- **Center** ![Bar alignment center icon](/static/img/docs/time-series-panel/bar-alignment-center.png)
The bar is drawn around the point. The point is placed in the center of the bar. This is the default.
- **After** ![Bar alignment after icon](/static/img/docs/time-series-panel/bar-alignment-after.png)
The bar is drawn after the point. The point is placed on the leading corner of the bar.
- **Linear** - Points are joined by straight lines.
- **Smooth** - Points are joined by curved lines that smooths transitions between points.
- **Step before** - The line is displayed as steps between points. Points are rendered at the end of the step.
- **Step after** - The line is displayed as steps between points. Points are rendered at the beginning of the step.
### Line width
#### Line width
Line width is a slider that controls the thickness for series lines or the outline for bars.
Set the thickness of the series lines or the outline for bars using the **Line width** slider.
![Line thickness 5 example](/static/img/docs/time-series-panel/line-width-5.png)
#### Fill opacity
### Fill opacity
Use opacity to specify the series area fill color.
Set the series area fill color using the **Fill opacity** slider.
![Fill opacity examples](/static/img/docs/time-series-panel/fill-opacity.png)
### Gradient mode
#### Gradient mode
Gradient mode specifies the gradient fill, which is based on the series color. To change the color, use the standard color scheme field option. For more information, refer to [Color scheme](ref:color-scheme).
Choose a gradient mode to control the gradient fill, which is based on the series color. To change the color, use the standard color scheme field option. For more information, refer to [Color scheme](ref:color-scheme).
- **None:** No gradient fill. This is the default setting.
- **Opacity:** An opacity gradient where the opacity of the fill increases as y-axis values increase.
- **Hue:** A subtle gradient that is based on the hue of the series color.
- **Scheme:** A color gradient defined by your [Color scheme](ref:color-scheme). This setting is used for the fill area and line. For more information about scheme, refer to [Scheme gradient mode](#scheme-gradient-mode).
- **None** - No gradient fill. This is the default setting.
- **Opacity** - An opacity gradient where the opacity of the fill increases as y-axis values increase.
- **Hue** - A subtle gradient that's based on the hue of the series color.
- **Scheme** - A color gradient defined by your [Color scheme](ref:color-scheme). This setting is used for the fill area and line. For more information about scheme, refer to [Scheme gradient mode](#scheme-gradient-mode).
Gradient appearance is influenced by the **Fill opacity** setting. The following image show, the **Fill opacity** is set to 50.
Gradient appearance is influenced by the **Fill opacity** setting. The following image shows the **Fill opacity** set to 50.
![Gradient mode examples](/static/img/docs/time-series-panel/gradient-modes-v9.png)
### Show points
##### Scheme gradient mode
You can configure your visualization to add points to lines or bars.
The **Gradient mode** option located under the **Graph styles** section has a mode called **Scheme**. When you enable **Scheme**, the line or bar receives a gradient color defined from the selected **Color scheme**.
- **Auto:** Grafana determines to show or not to show points based on the density of the data. If the density is low, then points appear.
- **Always:** Show the points regardless of how dense the data set is.
- **Never:** Do not show points.
###### From thresholds
### Point size
If the **Color scheme** is set to **From thresholds (by value)** and **Gradient mode** is set to **Scheme**, then the line or bar color changes as it crosses the defined thresholds.
Set the size of the points, from 1 to 40 pixels in diameter.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_thresholds_line.png" max-width="1200px" alt="Colors scheme: From thresholds" >}}
### Line interpolation
###### Gradient color schemes
This option controls how the graph interpolates the series line.
The following image shows a line chart with the **Green-Yellow-Red (by value)** color scheme option selected.
![Line interpolation option](/static/img/docs/time-series-panel/line-interpolation-option.png)
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_line.png" max-width="1200px" alt="Color scheme: Green-Yellow-Red" >}}
- **Linear:** Points are joined by straight lines.
- **Smooth:** Points are joined by curved lines that smooths transitions between points.
- **Step before:** The line is displayed as steps between points. Points are rendered at the end of the step.
- **Step after:** The line is displayed as steps between points. Points are rendered at the beginning of the step.
#### Line style
### Line style
Choose a solid, dashed, or dotted line style:
Set the style of the line. To change the color, use the standard [color scheme](ref:color-scheme) field option.
![Line style option](/static/img/docs/time-series-panel/line-style-option-v9.png)
- **Solid:** Display a solid line. This is the default setting.
- **Dash:** Display a dashed line. When you choose this option, a list appears for you to select the length and gap (length, gap) for the line dashes. Dash spacing set to 10, 10 (default).
- **Dots:** Display dotted lines. When you choose this option, a list appears for you to select the gap (length = 0, gap) for the dot spacing. Dot spacing set to 0, 10 (default)
- **Solid** - Display a solid line. This is the default setting.
- **Dash** - Display a dashed line. When you choose this option, a list appears for you to select the length and gap (length, gap) for the line dashes. Dash spacing is 10, 10 by default.
- **Dots** - Display dotted lines. When you choose this option, a list appears for you to select the gap (length = 0, gap) for the dot spacing. Dot spacing is 0, 10 by default.
![Line styles examples](/static/img/docs/time-series-panel/line-styles-examples-v9.png)
{{< docs/shared lookup="visualizations/connect-null-values.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{< docs/shared lookup="visualizations/connect-null-values.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1" >}}
{{< docs/shared lookup="visualizations/disconnect-values.md" source="grafana" version="<GRAFANA_VERSION>" >}}
{{< docs/shared lookup="visualizations/disconnect-values.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+1" >}}
### Stack series
To change the color, use the standard [color scheme](ref:color-scheme) field option.
_Stacking_ allows Grafana to display series on top of each other. Be cautious when using stacking in the visualization as it can easily create misleading graphs. To read more about why stacking might not be the best approach, refer to [The issue with stacking](https://www.data-to-viz.com/caveat/stacking.html).
#### Show points
![Stack option](/static/img/docs/time-series-panel/stack-option-v9.png)
Set whether to show data points as lines or bars. Choose from the following:
- **Off:** Turns off series stacking. When **Off**, all series share the same space in the visualization.
- **Normal:** Stacks series on top of each other.
- **100%:** Stack by percentage where all series add up to 100%.
- **Auto** - Grafana determines a point's visibility based on the density of the data. If the density is low, then points appear.
- **Always** - Show the points regardless of how dense the data set is.
- **Never** - Don't show points.
#### Stack series in groups
#### Stack series
Set whether Grafana stacks or displays series on top of each other. Be cautious when using stacking because it can create misleading graphs. To read more about why stacking might not be the best approach, refer to [The issue with stacking](https://www.data-to-viz.com/caveat/stacking.html). Choose from the following:
- **Off** - Turns off series stacking. When **Off**, all series share the same space in the visualization.
- **Normal** - Stacks series on top of each other.
- **100%** - Stack by percentage where all series add up to 100%.
##### Stack series in groups
The stacking group option is only available as an override. For more information about creating an override, refer to [Configure field overrides](ref:configure-field-overrides).
@@ -208,159 +283,33 @@ The stacking group option is only available as an override. For more information
The stacking group name option is only available when you create an override.
### Fill below to
#### Bar alignment
The **Fill below to** option fills the area between two series. This option is only available as a series/field override.
Set the position of the bar relative to a data point. In the examples below, **Show points** is set to **Always** which makes it easier to see the difference this setting makes. The points don't change, but the bars change in relationship to the points. Choose from the following:
1. Edit the panel and click **Overrides**.
1. Select the fields to fill below.
1. In **Add override property**, select **Fill below to**.
1. Select the series for which you want the fill to stop.
- **Before** ![Bar alignment before icon](/static/img/docs/time-series-panel/bar-alignment-before.png)
The bar is drawn before the point. The point is placed on the trailing corner of the bar.
- **Center** ![Bar alignment center icon](/static/img/docs/time-series-panel/bar-alignment-center.png)
The bar is drawn around the point. The point is placed in the center of the bar. This is the default.
- **After** ![Bar alignment after icon](/static/img/docs/time-series-panel/bar-alignment-after.png)
The bar is drawn after the point. The point is placed on the leading corner of the bar.
The following example shows three series: Min, Max, and Value. The Min and Max series have **Line width** set to 0. Max has a **Fill below to** override set to Min, which fills the area between Max and Min with the Max line color.
{{< figure src="/static/img/docs/time-series-panel/fill-below-to-7-4.png" max-width="600px" caption="Fill below to example" >}}
## Axis options
Options under the axis category change how the x- and y-axes are rendered. Some options do not take effect until you click outside of the field option box you are editing. You can also or press `Enter`.
### Time zone
Set the desired time zone(s) to display along the x-axis.
### Placement
Select the placement of the y-axis.
- **Auto:** Automatically assigns the y-axis to the series. When there are two or more series with different units, Grafana assigns the left axis to the first unit and the right axis to the units that follow.
- **Left:** Display all y-axes on the left side.
- **Right:** Display all y-axes on the right side.
- **Hidden:** Hide all axes.
To selectively hide axes, [Add a field override](ref:add-a-field-override) that targets specific fields.
### Label
Set a y-axis text label. If you have more than one y-axis, then you can assign different labels using an override.
### Width
Set a fixed width of the axis. By default, Grafana dynamically calculates the width of an axis.
By setting the width of the axis, data with different axes types can share the same display proportions. This setting makes it easier for you to compare more than one graphs worth of data because the axes are not shifted or stretched within visual proximity to each other.
### Show grid lines
Set the axis grid line visibility.
- **Auto:** Automatically show grid lines based on the density of the data.
- **On:** Always show grid lines.
- **Off:** Never show grid lines.
### Color
Set the color of the axis.
- **Text:** Set the color based on theme text color.
- **Series:** Set the color based on the series color.
### Show border
Set the axis border visibility.
### Scale
Set the y-axis values scale.
- **Linear:** Divides the scale into equal parts.
- **Logarithmic:** Use a logarithmic scale. When you select this option, a list appears for you to choose a binary (base 2) or common (base 10) logarithmic scale.
- **Symlog:** Use a symmetrical logarithmic scale. When you select this option, a list appears for you to choose a binary (base 2) or common (base 10) logarithmic scale. The linear threshold option allows you to set the threshold at which the scale changes from linear to logarithmic.
### Centered zero
Set the y-axis to be centered on zero.
### Soft min and soft max
Set a **Soft min** or **soft max** option for better control of y-axis limits. By default, Grafana sets the range for the y-axis automatically based on the dataset.
**Soft min** and **soft max** settings can prevent small variations in the data from being magnified when it's mostly flat. In contrast, hard min and max values help prevent obscuring useful detail in the data by clipping intermittent spikes past a specific point.
To define hard limits of the y-axis, set standard min/max options. For more information, refer to [Configure standard options](ref:configure-standard-options).
![Label example](/static/img/docs/time-series-panel/axis-soft-min-max-7-4.png)
### Transform
Use this option to transform the series values without affecting the values shown in the tooltip, context menu, or legend.
- **Negative Y transform:** Flip the results to negative values on the Y axis.
- **Constant:** Show the first value as a constant line.
{{% admonition type="note" %}}
The transform option is only available as an override.
{{% /admonition %}}
{{< docs/shared lookup="visualizations/multiple-y-axes.md" source="grafana" version="<GRAFANA_VERSION>" leveloffset="+2" >}}
## Color options
By default, the graph uses the standard [Color scheme](ref:color-scheme) option to assign series colors. You can also use the legend to open the color picker by clicking the legend series color icon. Setting
color this way automatically creates an override rule that set's a specific color for a specific series.
### Classic palette
The most common setup is to use the **Classic palette** for graphs. This scheme automatically assigns a color for each field or series based on its order. If the order of a field changes in your query, the color also changes. You can manually configure a color for a specific field using an override rule.
### Single color
Use this mode to specify a color. You can also click the colored line icon next to each series in the Legend to open the color picker. This automatically creates a new override that sets the color scheme to single color and the selected color.
### By value color schemes
If you select a by value color scheme like **From thresholds (by value)** or **Green-Yellow-Red (by value)**, the **Color series by** option appears. This option controls which value (Last, Min, Max) to use to assign the series its color.
### Scheme gradient mode
The **Gradient mode** option located under the **Graph styles** has a mode named **Scheme**. When you enable **Scheme**, the line or bar receives a gradient color defined from the selected **Color scheme**.
#### From thresholds
If the **Color scheme** is set to **From thresholds (by value)** and **Gradient mode** is set to **Scheme**, then the line or bar color changes as they cross the defined thresholds.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_thresholds_line.png" max-width="1200px" caption="Colors scheme: From thresholds" >}}
The following image shows bars mode enabled.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_thresholds_bars.png" max-width="1200px" caption="Color scheme: From thresholds" >}}
#### Gradient color schemes
The following image shows a line chart with the **Green-Yellow-Red (by value)** color scheme option selected.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_line.png" max-width="1200px" caption="Color scheme: Green-Yellow-Red" >}}
The following image shows a bar chart with the **Green-Yellow-Red (by value)** color scheme option selected.
{{< figure src="/static/img/docs/time-series-panel/gradient_mode_scheme_bars.png" max-width="1200px" caption="Color scheme: Green-Yellow-Red" >}}
## Standard options
### Standard options
{{< docs/shared lookup="visualizations/standard-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Data links
### Data links
{{< docs/shared lookup="visualizations/datalink-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Value mappings
### Value mappings
{{< docs/shared lookup="visualizations/value-mappings-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Thresholds
### Thresholds
{{< docs/shared lookup="visualizations/thresholds-options-1.md" source="grafana" version="<GRAFANA_VERSION>" >}}
## Field overrides
### Field overrides
{{< docs/shared lookup="visualizations/overrides-options.md" source="grafana" version="<GRAFANA_VERSION>" >}}

View File

@@ -65,6 +65,8 @@ For more information about traces and how to use them, refer to the following do
{{< figure src="/static/img/docs/explore/trace-view-9-4.png" class="docs-image--no-shadow" max-width= "900px" caption="Screenshot of the trace view" >}}
{{< docs/play title="Traces Panel" url="https://play.grafana.org/d/edodkfmj0tce8f/" >}}
## Add a panel with tracing visualizations
Once you have tracing data available in your Grafana stack, you can add tracing panels to your Grafana dashboards.

View File

@@ -59,6 +59,10 @@ refs:
# XY chart
{{< admonition type="note">}}
To use xy charts, enable the `autoMigrateXYChartPanel` [feature toggle](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/feature-toggles/).
{{< /admonition >}}
XY charts provide a way to visualize arbitrary x and y values in a graph so that you can easily show the relationship between two variables. XY charts are typically used to create scatter plots. You can also use them to create bubble charts where field values determine the size of each bubble:
![An xy chart showing height weight distribution](/media/docs/grafana/panels-visualizations/screenshot-xy-charts-v11.0.png)

View File

@@ -1552,7 +1552,7 @@ Sets a global limit on number of correlations that can be created. Default is -1
## [unified_alerting]
For more information about the Grafana alerts, refer to [About Grafana Alerting]({{< relref "../../alerting" >}}).
For more information about the Grafana alerts, refer to [Grafana Alerting]({{< relref "../../alerting" >}}).
### enabled
@@ -1580,6 +1580,10 @@ The interval string is a possibly signed sequence of decimal numbers, followed b
The Redis server address that should be connected to.
{{< admonition type="note" >}}
For more information on Redis, refer to [Enable alerting high availability using Redis](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/alerting/set-up/configure-high-availability/#enable-alerting-high-availability-using-redis).
{{< /admonition >}}
### ha_redis_username
The username that should be used to authenticate with the Redis server.
@@ -1982,7 +1986,7 @@ Depending on the value of `sampler_type`, the sampler configuration parameter ca
When `sampler_type` is `remote`, this specifies the URL of the sampling server. This can be used by all tracing providers.
Use a sampling server that supports the Jaeger remote sampling API, such as jaeger-agent, jaeger-collector, opentelemetry-collector-contrib, or [Grafana Agent](/oss/agent/).
Use a sampling server that supports the Jaeger remote sampling API, such as jaeger-agent, jaeger-collector, opentelemetry-collector-contrib, or [Grafana Alloy](https://grafana.com/oss/alloy-opentelemetry-collector/).
<hr>

View File

@@ -221,7 +221,6 @@ To run the latest stable version of Grafana using Docker Compose, complete the f
For example:
```bash
version: "3.8"
services:
grafana:
image: grafana/grafana-enterprise
@@ -279,7 +278,6 @@ To use Docker volumes for persistent storage, complete the following steps:
1. Add the following code into the `docker-compose.yaml` file.
```yaml
version: '3.8'
services:
grafana:
image: grafana/grafana-enterprise
@@ -324,7 +322,6 @@ To use bind mounts, complete the following steps:
1. Now, add the following code into the `docker-compose.yaml` file.
```yaml
version: '3.8'
services:
grafana:
image: grafana/grafana-enterprise
@@ -351,7 +348,6 @@ To use bind mounts, complete the following steps:
The following example runs the latest stable version of Grafana, listening on port 3000, with the container named `grafana`, persistent storage in the `grafana-storage` docker volume, the server root URL set, and the official [clock panel](/grafana/plugins/grafana-clock-panel/) plugin installed.
```bash
version: "3.8"
services:
grafana:
image: grafana/grafana-enterprise

View File

@@ -51,7 +51,10 @@ Enable port `3000` in your network environment, as this is the Grafana default p
## Deploy Grafana OSS on Kubernetes
This section explains how to install Grafana OSS using Kubernetes. If you want to install Grafana Enterprise on Kubernetes, refer to [Deploy Grafana Enterprise on Kubernetes](#deploy-grafana-enterprise-on-kubernetes).
This section explains how to install Grafana OSS using Kubernetes.
{{% admonition type="note" %}}
If you want to install Grafana Enterprise on Kubernetes, refer to [Deploy Grafana Enterprise on Kubernetes](#deploy-grafana-enterprise-on-kubernetes).
{{% /admonition %}}
If you deploy an application in Kubernetes, it will use the default namespace which may already have other applications running. This can result in conflicts and other issues.

View File

@@ -6,29 +6,15 @@ labels:
title: 'Alerting Provisioning HTTP API '
---
The Alerting provisioning API can be used to create, modify, and delete resources relevant to [Grafana-managed alerts]({{< relref "/docs/grafana/latest/alerting/alerting-rules/create-grafana-managed-rule" >}}). It is the one used by our [Grafana Terraform provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
The Alerting Provisioning HTTP API can be used to create, modify, and delete resources relevant to Grafana-managed alerts. This API is the one used by our [Grafana Terraform provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
To manage resources related to [data source-managed alerts]({{< relref "/docs/grafana/latest/alerting/alerting-rules/create-grafana-managed-rule" >}}), including recording rules, use the [Mimir tool](https://grafana.com/docs/mimir/latest/manage/tools/mimirtool/) and [Cortex tool](https://github.com/grafana/cortex-tools#cortextool).
For more information on the differences between Grafana-managed and data source-managed alerts, refer to [Introduction to alert rules](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/alerting/fundamentals/alert-rules/).
## Information
> If you are running Grafana Enterprise, you need to add specific permissions for some endpoints. For more information, refer to [Role-based access control permissions](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/administration/roles-and-permissions/access-control/custom-role-actions-scopes/).
### Version
## Grafana-managed endpoints
1.1.0
## Content negotiation
### Consumes
- application/json
### Produces
- application/json
- text/yaml
- application/yaml
## All endpoints
Note that the JSON format from most of the following endpoints is not fully compatible with [provisioning via configuration JSON files](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/alerting/set-up/provision-alerting-resources/file-provisioning/).
### Alert rules
@@ -45,13 +31,18 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
| GET | /api/v1/provisioning/alert-rules | [route get alert rules](#route-get-alert-rules) | Get all the alert rules. |
| GET | /api/v1/provisioning/alert-rules/export | [route get alert rules export](#route-get-alert-rules-export) | Export all alert rules in provisioning file format. |
#### Example alert rules template
**Example request for new alert rule:**
```http
POST /api/v1/provisioning/alert-rules
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```json
{
"title": "TEST-API_1",
"ruleGroup": "API",
"folderUID": "FOLDER",
"folderUID": "SET_FOLDER_UID",
"noDataState": "OK",
"execErrState": "OK",
"for": "5m",
@@ -72,7 +63,7 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
"from": 600,
"to": 0
},
"datasourceUid": " XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX",
"datasourceUid": "XXXXXXXXX-XXXXXXXXX-XXXXXXXXXX",
"model": {
"expr": "up",
"hide": false,
@@ -122,6 +113,99 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
}
]
}
```
#### Example Response:
```http
HTTP/1.1 201 Created
Content-Type: application/json
```
### Contact points
| Method | URI | Name | Summary |
| ------ | ------------------------------------------ | ----------------------------------------------------------------- | ------------------------------------------------------ |
| DELETE | /api/v1/provisioning/contact-points/:uid | [route delete contactpoints](#route-delete-contactpoints) | Delete a contact point. |
| GET | /api/v1/provisioning/contact-points | [route get contactpoints](#route-get-contactpoints) | Get all the contact points. |
| POST | /api/v1/provisioning/contact-points | [route post contactpoints](#route-post-contactpoints) | Create a contact point. |
| PUT | /api/v1/provisioning/contact-points/:uid | [route put contactpoint](#route-put-contactpoint) | Update an existing contact point. |
| GET | /api/v1/provisioning/contact-points/export | [route get contactpoints export](#route-get-contactpoints-export) | Export all contact points in provisioning file format. |
**Example Request for all the contact points:**
```http
GET /api/v1/provisioning/contact-points
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Response:**
```http
HTTP/1.1 200 OK
Content-Type: application/json
```
### Notification policies
| Method | URI | Name | Summary |
| ------ | ------------------------------------ | ------------------------------------------------------------- | ---------------------------------------------------------------- |
| DELETE | /api/v1/provisioning/policies | [route reset policy tree](#route-reset-policy-tree) | Clears the notification policy tree. |
| GET | /api/v1/provisioning/policies | [route get policy tree](#route-get-policy-tree) | Get the notification policy tree. |
| PUT | /api/v1/provisioning/policies | [route put policy tree](#route-put-policy-tree) | Sets the notification policy tree. |
| GET | /api/v1/provisioning/policies/export | [route get policy tree export](#route-get-policy-tree-export) | Export the notification policy tree in provisioning file format. |
**Example Request for exporting the notification policy tree in YAML format:**
```http
GET /api/v1/provisioning/policies/export?format=yaml
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Response:**
```http
HTTP/1.1 200 OK
Content-Type: text/yaml
apiVersion: 1
policies:
- orgId: 1
receiver: My Contact Email Point
group_by:
- grafana_folder
- alertname
routes:
- receiver: My Contact Email Point
object_matchers:
- - monitor
- =
- testdata
mute_time_intervals:
- weekends
```
### Mute timings
| Method | URI | Name | Summary |
| ------ | ---------------------------------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
| DELETE | /api/v1/provisioning/mute-timings/:name | [route delete mute timing](#route-delete-mute-timing) | Delete a mute timing. |
| GET | /api/v1/provisioning/mute-timings/:name | [route get mute timing](#route-get-mute-timing) | Get a mute timing. |
| GET | /api/v1/provisioning/mute-timings | [route get mute timings](#route-get-mute-timings) | Get all the mute timings. |
| POST | /api/v1/provisioning/mute-timings | [route post mute timing](#route-post-mute-timing) | Create a new mute timing. |
| PUT | /api/v1/provisioning/mute-timings/:name | [route put mute timing](#route-put-mute-timing) | Replace an existing mute timing. |
| GET | /api/v1/provisioning/mute-timings/export | [route get mute timings export](#route-get-mute-timings-export) | Export all mute timings in provisioning file format. |
| GET | /api/v1/provisioning/mute-timings/:name/export | [route get mute timing export](#route-get-mute-timing-export) | Export a mute timing in provisioning file format. |
**Example Request for all mute timings:**
```http
GET /api/v1/provisioning/mute-timings
Accept: application/json
@@ -134,6 +218,34 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
```http
HTTP/1.1 200 OK
Content-Type: application/json
```
### Templates
| Method | URI | Name | Summary |
| ------ | ------------------------------------ | ----------------------------------------------- | ----------------------------------------- |
| DELETE | /api/v1/provisioning/templates/:name | [route delete template](#route-delete-template) | Delete a template. |
| GET | /api/v1/provisioning/templates/:name | [route get template](#route-get-template) | Get a notification template. |
| GET | /api/v1/provisioning/templates | [route get templates](#route-get-templates) | Get all notification templates. |
| PUT | /api/v1/provisioning/templates/:name | [route put template](#route-put-template) | Create or update a notification template. |
**Example Request for all notification templates:**
```http
GET /api/v1/provisioning/templates
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Response:**
```http
HTTP/1.1 200 OK
Content-Type: application/json
```
### Edit resources in the Grafana UI
@@ -143,6 +255,38 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
- `PUT /api/v1/provisioning/folder/{FolderUID}/rule-groups/{Group}` (calling this endpoint will change provenance for all alert rules within the alert group)
- `POST /api/v1/provisioning/contact-points`
- `POST /api/v1/provisioning/mute-timings`
- `PUT /api/v1/provisioning/policies`
- `PUT /api/v1/provisioning/templates/{name}`
To reset the notification policy tree to the default and unlock it for editing in the Grafana UI, use the `DELETE /api/v1/provisioning/policies` endpoint.
## Data source-managed resources
The Alerting Provisioning HTTP API can only be used to manage Grafana-managed alert resources. To manage resources related to [data source-managed alerts](https://grafana.com/docs/grafana/<GRAFANA_VERSION>/alerting/alerting-rules/create-mimir-loki-managed-rule/), consider the following tools:
- [mimirtool](https://grafana.com/docs/mimir/<GRAFANA_VERSION>/manage/tools/mimirtool/): to interact with the Mimir alertmanager and ruler configuration.
- [cortex-tools](https://github.com/grafana/cortex-tools#cortextool): to interact with the Cortex alertmanager and ruler configuration.
- [lokitool](https://grafana.com/docs/loki/<GRAFANA_VERSION>/alert/#lokitool): to configure the Loki Ruler.
Alternatively, the [Grafana Alerting API](https://editor.swagger.io/?url=https://raw.githubusercontent.com/grafana/grafana/main/pkg/services/ngalert/api/tooling/post.json) can be used to access data from data source-managed alerts. This API is primarily intended for internal usage, with the exception of the `/api/v1/provisioning/` endpoints. It's important to note that internal APIs may undergo changes without prior notice and are not officially supported for user consumption.
For Prometheus, `amtool` can also be used to interact with the [AlertManager API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/prometheus/alertmanager/main/api/v2/openapi.yaml#/).
## Paths
### <span id="route-delete-alert-rule"></span> Delete a specific alert rule by UID. (_RouteDeleteAlertRule_)
```
DELETE /api/v1/provisioning/alert-rules/:uid
```
#### Parameters
{{% responsive-table %}}
| Name | Source | Type | Go type | Separator | Required | Default | Description |
| -------------------------- | -------- | ------ | -------- | --------- | :------: | ------- | --------------------------------------------------------- |
| UID | `path` | string | `string` | | ✓ | | Alert rule UID |
| X-Disable-Provenance: true | `header` | string | `string` | | | | Allows editing of provisioned resources in the Grafana UI |
{{% /responsive-table %}}
@@ -155,6 +299,38 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
#### Responses
##### <span id="route-delete-alert-rule-204"></span> 204 - The alert rule was deleted successfully.
Status: No Content
###### <span id="route-delete-alert-rule-204-schema"></span> Schema
### <span id="route-delete-contactpoints"></span> Delete a contact point. (_RouteDeleteContactpoints_)
```
DELETE /api/v1/provisioning/contact-points/:uid
```
#### Parameters
| Name | Source | Type | Go type | Separator | Required | Default | Description |
| ---- | ------ | ------ | -------- | --------- | :------: | ------- | ------------------------------------------ |
| UID | `path` | string | `string` | | ✓ | | UID is the contact point unique identifier |
#### All responses
| Code | Status | Description | Has headers | Schema |
| -------------------------------------- | ---------- | ------------------------------------------- | :---------: | ------------------------------------------------ |
| [204](#route-delete-contactpoints-204) | No Content | The contact point was deleted successfully. | | [schema](#route-delete-contactpoints-204-schema) |
#### Responses
##### <span id="route-delete-contactpoints-204"></span> 204 - The contact point was deleted successfully.
Status: No Content
###### <span id="route-delete-contactpoints-204-schema"></span> Schema
### <span id="route-delete-mute-timing"></span> Delete a mute timing. (_RouteDeleteMuteTiming_)
```
@@ -164,7 +340,36 @@ To manage resources related to [data source-managed alerts]({{< relref "/docs/gr
#### Parameters
| Name | Source | Type | Go type | Separator | Required | Default | Description |
## Edit resources in the Grafana UI
| ---- | ------ | ------ | -------- | --------- | :------: | ------- | ---------------- |
| name | `path` | string | `string` | | ✓ | | Mute timing name |
#### All responses
| Code | Status | Description | Has headers | Schema |
| ------------------------------------ | ---------- | ----------------------------------------- | :---------: | ---------------------------------------------- |
| [204](#route-delete-mute-timing-204) | No Content | The mute timing was deleted successfully. | | [schema](#route-delete-mute-timing-204-schema) |
#### Responses
##### <span id="route-delete-mute-timing-204"></span> 204 - The mute timing was deleted successfully.
Status: No Content
###### <span id="route-delete-mute-timing-204-schema"></span> Schema
### <span id="route-delete-template"></span> Delete a template. (_RouteDeleteTemplate_)
```
DELETE /api/v1/provisioning/templates/:name
```
#### Parameters
| Name | Source | Type | Go type | Separator | Required | Default | Description |
| ---- | ------ | ------ | -------- | --------- | :------: | ------- | ------------- |
| name | `path` | string | `string` | | ✓ | | Template Name |
#### All responses
| Code | Status | Description | Has headers | Schema |
| --------------------------------- | ---------- | -------------------------------------- | :---------: | ------------------------------------------- |
@@ -177,6 +382,18 @@ By default, you cannot edit API-provisioned alerting resources in Grafana. To en
Status: No Content
###### <span id="route-delete-template-204-schema"></span> Schema
### <span id="route-get-alert-rule"></span> Get a specific alert rule by UID. (_RouteGetAlertRule_)
```
GET /api/v1/provisioning/alert-rules/:uid
```
#### Parameters
| Name | Source | Type | Go type | Separator | Required | Default | Description |
| ---- | ------ | ------ | -------- | --------- | :------: | ------- | -------------- |
| UID | `path` | string | `string` | | ✓ | | Alert rule UID |
#### All responses
@@ -216,10 +433,6 @@ Status: No Content
- text/hcl
#### Parameters
#### Consumes
- application/json
| Name | Source | Type | Go type | Separator | Required | Default | Description |
| -------- | ------- | ------- | -------- | --------- | :------: | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |
@@ -884,10 +1097,6 @@ Status: Not Found
### <span id="route-put-alert-rule"></span> Update an existing alert rule. (_RoutePutAlertRule_)
#### Consumes
- application/json
```
PUT /api/v1/provisioning/alert-rules/:uid
```
@@ -930,10 +1139,6 @@ Status: Bad Request
[ValidationError](#validation-error)
### <span id="route-put-alert-rule-group"></span> Update the interval or alert rules of a rule group. (_RoutePutAlertRuleGroup_)
#### Consumes
- application/json
```
PUT /api/v1/provisioning/folder/:folderUid/rule-groups/:group
@@ -976,10 +1181,6 @@ Status: Bad Request
###### <span id="route-put-alert-rule-group-400-schema"></span> Schema
[ValidationError](#validation-error)
#### Consumes
- application/json
### <span id="route-put-contactpoint"></span> Update an existing contact point. (_RoutePutContactpoint_)
@@ -1022,10 +1223,6 @@ Status: Bad Request
###### <span id="route-put-contactpoint-400-schema"></span> Schema
#### Consumes
- application/json
[ValidationError](#validation-error)
### <span id="route-put-mute-timing"></span> Replace an existing mute timing. (_RoutePutMuteTiming_)
@@ -1069,10 +1266,6 @@ Status: Bad Request
###### <span id="route-put-mute-timing-400-schema"></span> Schema
#### Consumes
- application/json
[ValidationError](#validation-error)
### <span id="route-put-policy-tree"></span> Sets the notification policy tree. (_RoutePutPolicyTree_)
@@ -1117,10 +1310,6 @@ Status: Bad Request
[ValidationError](#validation-error)
#### Consumes
- application/json
### <span id="route-put-template"></span> Create or update a notification template. (_RoutePutTemplate_)
```
@@ -1164,10 +1353,6 @@ Status: Bad Request
[ValidationError](#validation-error)
#### Consumes
- application/json
### <span id="route-reset-policy-tree"></span> Clears the notification policy tree. (_RouteResetPolicyTree_)
```
@@ -1211,10 +1396,6 @@ Status: Bad Request
| refId | string | `string` | | | RefID is the unique identifier of the query, set by the frontend call. | |
| relativeTimeRange | [RelativeTimeRange](#relative-time-range) | `RelativeTimeRange` | | | | |
#### Consumes
- application/json
{{% /responsive-table %}}
### <span id="alert-query-export"></span> AlertQueryExport
@@ -1257,10 +1438,6 @@ Status: Bad Request
{{% /responsive-table %}}
### <span id="alert-rule-group"></span> AlertRuleGroup
#### Consumes
- application/json
**Properties**
@@ -1304,10 +1481,6 @@ Status: Bad Request
| groups | [][AlertRuleGroupExport](#alert-rule-group-export) | `[]*AlertRuleGroupExport` | | | | |
| policies | [][NotificationPolicyExport](#notification-policy-export) | `[]*NotificationPolicyExport` | | | | |
#### Consumes
- application/json
{{% /responsive-table %}}
### <span id="contact-point-export"></span> ContactPointExport
@@ -1740,10 +1913,10 @@ Status: Accepted
{{% responsive-table %}}
| Name | Type | Go type | Required | Default | Description | Example |
| ----------- | ------------------------- | ------- | :------: | ------- | ----------- | ------- |
| EndMinute | int64 (formatted integer) | `int64` | | | | |
| StartMinute | int64 (formatted integer) | `int64` | | | | |
| Name | Type | Go type | Required | Default | Description | Example |
| ---------- | ------ | -------- | :------: | ------- | ----------- | ----------------------- |
| end_time | string | `string` | | | | `"end_time": "24:00"` |
| start_time | string | `string` | | | | `"start_time": "18:00"` |
{{% /responsive-table %}}

View File

@@ -25,7 +25,9 @@ A label matchers consists of 3 distinct parts, the **label**, the **value** and
| `=~` | Select labels that regex-match the value. |
| `!~` | Select labels that do not regex-match the value. |
{{% admonition type="note" %}}
If you are using multiple label matchers, they are combined using the AND logical operator. This means that all matchers must match in order to link a rule to a policy.
{{% /admonition %}}
**Label matching example**

View File

@@ -0,0 +1,20 @@
---
title: Time range URLs
comments: |
This file is used in the following files: dashboards/build-dashboards/create-dashboard-url-variables/index.md, dashboards/use-dashboards/index.md
---
You can control the time range of a dashboard by providing the following query parameters in the dashboard URL:
- `from` - Defines the lower limit of the time range, specified in ms, epoch, or relative time.
- `to` - Defines the upper limit of the time range, specified in ms, epoch, or relative time.
- `time` and `time.window` - Defines a time range from `time-time.window/2` to `time+time.window/2`. Both parameters should be specified in `ms`. For example `?time=1500000000000&time.window=10000` results in a 10-second time range from 1499999995000 to 1500000005000`.
- `timezone` - Defines the time zone. For example `timezone=Europe/Madrid`.
Since these aren't variables, they don't require the `var-` prefix.
The following example shows a dashboard with the time range of the last five minutes:
```
https://${your-domain}/path/to/your/dashboard?from=now-5m&to=now
```

View File

@@ -84,7 +84,7 @@ To use a basic configuration, follow these steps:
If you have configured a Pyroscope data source and no profile data is available or the **Profiles for this span**
button and the embedded flame graph isn't visible, verify that the `pyroscope.profile.id` key-value pair exists in your span tags.
## Configure a custom query
## Configure a custom query {#configure-custom-query-traces-profiles}
To use a custom query with the configuration, follow these steps:

Some files were not shown because too many files have changed in this diff Show More