Compare commits

..

470 Commits

Author SHA1 Message Date
Horst Gutmann
210e06b67a [v8.5.x] Fix environment for linux-package building 2023-03-22 11:09:55 +01:00
Julien Duchesne
77d92fc5ae Drone: Always have image_pull_secrets (#55530)
Having it doesn't prevent pulling any images, so it's easier if it's everywhere
2023-03-22 10:56:50 +01:00
Horst Gutmann
d8ae276209 [v8.5.x] Backporting publish grafana-com command (#820) 2023-03-22 10:34:09 +01:00
ismail simsek
42911348a7 [v8.5.x] Fix xss in Graphite functions tooltip (#808)
Fix xss in Graphite functions tooltip (#804)

(cherry picked from commit 87aad3f11836f810ee1fdfee27827e746ef36055)

Co-authored-by: Ludovic Viaud <ludovic.viaud@gmail.com>
2023-03-16 17:30:45 -05:00
Dimitris Sotirakis
b2d39a1791 CI: Update grabpl for v8.5.x (#64332)
Update grabpl for v8.5.x
2023-03-09 11:54:25 +02:00
Grot (@grafanabot)
59df6f707b Release: Bump version to 8.5.22 (#63885)
"Release: Updated versions in package to 8.5.22"
2023-02-28 17:28:49 +01:00
Horst Gutmann
9043a10dfb [v8.5.x] Changelog: Updated changelog for 8.5.21 (#63882) (#63889)
Changelog: Updated changelog for 8.5.21 (#63882)

* Changelog: Updated changelog for 8.5.21

* Update CHANGELOG.md

---------

Co-authored-by: Horst Gutmann <horst.gutmann@grafana.com>
(cherry picked from commit a393124e73)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2023-02-28 17:24:49 +01:00
Andrej Ocenas
f314f82791 [v8.5.x] TraceView: Add key and url escaping of json tag values (#759) 2023-02-21 07:11:40 +01:00
Drew Slobodnjak
cb97b1bc7b [v8.5.x] Geomap: Sanitize the attribution string (#763)
Apply attribute sanitation to GeomapPanel
2023-02-21 07:11:39 +01:00
nmarrs
a0fdec0209 Apply attribute sanitation to GeomapPanel 2023-02-21 07:11:38 +01:00
Grot (@grafanabot)
d3f81e5f5f [v8.5.x] Update publishing workflows to use organization secret (#63042)
Update publishing workflows to use organization secret (#63001)

The new tokens are managed centrally and have a longer expiry.
Administrators of the grafanabot account will be
notified of the pending expiry and the secret can be rotated centrally
without the need for a repository administrator to update their
secrets.

The existing repository secrets can safely be removed. The tokens for
those secrets will be removed by the end of this week.

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-02-07 12:24:05 -05:00
Grot (@grafanabot)
6d97b7998b [v8.5.x] [v9.0.x] docs: update broken elasticsearch metrics play link (#62729)
[v9.0.x] docs: update broken elasticsearch metrics play link (#62720)

update broken elasticsearch metrics play link

(cherry picked from commit 9d659f0851)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-02-06 09:45:55 +00:00
Kevin Minehart
58261a814a [v8.5.x] CI: backport the rpm and deb packaging to 8.5.x (#62639)
* backport the rpm and deb packaging to 8.5.x

Co-authored-by: Julien Duchesne <julien.duchesne@grafana.com>
2023-02-02 16:22:57 +00:00
Emil Tullstedt
bbe9c1bd2a [v8.5.x] Login: Fix panic when UpsertUser is called without ReqContext (#62539) (#62575)
Login: Fix panic when UpsertUser is called without ReqContext (#62539)

(cherry picked from commit b1151dd118)
2023-01-31 13:23:12 +01:00
Dimitris Sotirakis
d1c4560d6e [v8.5.x] Merge changes from release-8.5.20 branch (#62103)
Update gpg secret name

# Conflicts:
#	.drone.yml
#	scripts/drone/steps/lib.star
2023-01-25 15:35:29 +02:00
Horst Gutmann
e5520833d2 Merge v8.5.x into v8.5.x 2023-01-25 13:55:22 +01:00
Grot (@grafanabot)
56e30b8aff Release: Bump version to 8.5.21 (#62081)
"Release: Updated versions in package to 8.5.21"
2023-01-25 12:06:41 +02:00
Kevin Minehart
623cd8f41c update gpg secret name (#731) 2023-01-24 11:16:21 -06:00
Horst Gutmann
3b8707ddb4 [v8.5.x] Remove duplicate code change (#719) 2023-01-24 09:01:21 +01:00
Nathan Marrs
5f3fef7789 [v8.5.x] SVG: Add dompurify preprocessor step (#707)
* SVG: Add dompurify preprocessor step (#698)

* add sanitized SVG component

(cherry picked from commit dbbe819368f507b9493b7a3cf6e080a5dd752b3e)

* Remove unused import to fix build

* Fix lint issues

* Remove additional class handling as not needed

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-01-24 09:01:20 +01:00
kay delaney
990cac09b9 Snapshots: Fix originalUrl spoof security issue (#671) 2023-01-24 09:01:19 +01:00
Misi
13acd134c8 [v8.5.x] Update grafana/saml library (#687)
SAML: update grafana/saml

Co-authored: Jo <joao.guerreiro@grafana.com>

Co-authored-by: linoman <2051016+linoman@users.noreply.github.com>
2023-01-24 09:01:18 +01:00
Kevin Minehart
18426f19d6 [v8.5.x] Packaging: Use base64 key (#61821)
backport

Co-authored-by: Julien Duchesne <julien.duchesne@grafana.com>
2023-01-19 22:49:21 +00:00
Kevin Minehart
40831fa5a1 [v8.5.x] Use new GPG key when publishing (#61790)
update .drone.yml

Co-authored-by: Julien Duchesne <julien.duchesne@grafana.com>
2023-01-19 19:56:56 +00:00
Levente Balogh
9a39ce480a Levitate: Only run against the main branch (#61401) (#61460)
chore: only run Levitate against the main branch
(cherry picked from commit b8aaf85fdc)
2023-01-13 09:50:52 +00:00
linoman
d2012e4623 Add reference to Google OAuth docs (#61146) 2023-01-11 14:32:11 +01:00
Grot (@grafanabot)
98bd3e89b2 [v8.5.x] Update publishing workflows to use PATs with fine-grained access control (#61265)
Update publishing workflows to use PATs with fine-grained access control (#61098)

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

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-01-11 11:11:10 +00:00
Esteban Beltran
f5301859e0 Docs: Add source code url field description in publish a plugin documentation (#61080) (#61138) 2023-01-09 10:50:41 +01:00
Jack Baldry
4cacab01f4 [v8.5.x] Use relative aliases for all non-current Grafana aliases and remove current page latest aliases (#60062) (#61032)
* Use relative aliases for all non-current Grafana aliases

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

* Remove all current page aliases

find docs/sources -type f -name '*.md' -exec sed -z -i 's#\n *- /docs/grafana/latest/[^\n]*\n#\n#' {} \;
find docs/sources -type f -name '*.md' -exec sed -Ez -i 's#\n((aliases:\n *-)|aliases:\n)#\n\2#' {} \;

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

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2023-01-05 14:29:40 +00:00
Grot (@grafanabot)
246b9cc82c [v8.5.x] Remove packages path from branch filter (#60944)
Remove packages path from branch filter (#60128)

That directory is no longer used in published docs and causes this
workflow to fail when changes only affect the packages directory.

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

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-01-04 10:40:59 +00:00
Emil Tullstedt
df7504737a [v8.5.x] Chore: Upgrade Go to 1.19.4 (#60794) (#60824) 2022-12-30 11:50:37 +01:00
Grot (@grafanabot)
aaa4698064 [v8.5.x] Add copyright notice (#60659)
* Add copyright notice (#60658)

* Create copyright

* add copyright notice

(cherry picked from commit c7671b6d1d)

* yarn run prettier:write

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

Co-authored-by: Eve Meelan <81647476+Eve832@users.noreply.github.com>
Co-authored-by: dsotirakis <dimitrios.sotirakis@grafana.com>
2022-12-23 10:01:31 +00:00
Dominik Prokop
7880990c5f [v8.5.x] Snapshots: Build snapshot originalUrl on the backend (#60232) (#60245)
Co-authored-by: kay delaney <kay@grafana.com>
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
2022-12-13 17:43:42 +01:00
Grot (@grafanabot)
b8f9d46328 [v8.5.x] Fix branch filter for release workflows (#60120)
Fix branch filter for release workflows (#59963)

Ensures the workflow is run on every push to all version branches.

This was thought to be working because it was tested with a manual
dispatch, however, that trigger does not consider filters and was not
an accurate test.

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

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2022-12-09 15:39:48 -04:00
Grot (@grafanabot)
669ff8909a [v8.5.x] Restrict workflow to grafana/grafana repository (#59753)
Restrict workflow to grafana/grafana repository (#59740)

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

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2022-12-02 17:29:38 -04:00
Grot (@grafanabot)
f954b4c03d [v8.5.x] Automate docs publishing steps (#59563)
* Automate docs publishing steps (#59550)

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

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

* Remove dependency on test job (#59575)

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

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

* Fix release_branch_regexp (#59590)

Apparently the non-capturing group was incorrect.

I verified the logic in a branch in grafana-github-actions:
https://github.com/grafana/grafana-github-actions/compare/jdb/2022-11-prove-grafana-regexp-behaves-correctly?expand=1

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

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

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2022-11-30 15:04:33 -04:00
Emil Tullstedt
14273c598c [v8.5.x] Chore: Upgrade go-sqlite3 to v1.14.16 (#58696)
Chore: Upgrade go-sqlite3 to v1.14.16
2022-11-22 10:50:12 +00:00
Jo
4e4f4218d1 Fix: Email and username trimming and invitation validation (#58449)
* Trim leading and trailing whitespaces from email and username on signup

* Check whether the provided email address is the same as where the invitation sent

Co-authored-by: Mihaly Gyongyosi <mgyongyosi@users.noreply.github.com>
2022-11-14 13:13:06 +01:00
Garrett Guillotte
5facdc6510 [v8.5.x] Docs: Add document for jsondata field alertmanagerUid (#57118)
* Add document for jsondata field `alertmanagerUid` (#52895)

alertmanagerUid can be used to specify Alert Manager for a particular Prometheus/Loki data source.

Co-authored-by: Garrett Guillotte <garrett.guillotte@grafana.com>

* Docs: Fix provisioning table formatting (#57042)

Co-authored-by: Vũ Quốc Phong <phong.vq.198@gmail.com>
2022-11-14 10:55:43 +01:00
Karl Persson
4cfb76b4bc [v8.5.x] Omit error from http response (#58453) 2022-11-14 09:42:58 +01:00
Will Browne
d25246ca15 resolve conflicts (#58466)
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-11-08 12:42:56 -05:00
Grot (@grafanabot)
f31ba9a34f "Release: Updated versions in package to 8.5.16" (#58457) 2022-11-08 10:53:13 -05:00
Emil Tullstedt
62c41e99b8 Chore: Upgrade Go to 1.19.3 (#58070) 2022-11-07 15:07:24 +01:00
Karl Persson
360994050c [v8.5.x] Login email before username (#57408)
* Add test for username/login field conflict

* Swap order of login fields

Co-authored-by: linoman <2051016+linoman@users.noreply.github.com>
2022-10-21 14:14:00 +02:00
Emil Tullstedt
656e270bd9 Chore: Upgrade Go to 1.19.2 (#56857)
We also need to upgrade the linter together with the Go version, all the changes should relate to either fixing linting problems or upgrading the Go version used to build Grafana.
2022-10-13 14:53:51 +02:00
Grot (@grafanabot)
9e70696f09 "Release: Updated versions in package to 8.5.15" (#56707) 2022-10-11 09:07:29 -04:00
Sofia Papagiannaki
58b7ae14ce [v8.5.x] Chore: Release 8.5.14 (#56698)
* remove support for v1

(cherry picked from commit 8630a7a991af74edc4030f57d37a4bc263202fde)

* Security: Make proxy endpoints not leak sensitive HTTP headers

Fixes CVE-2022-31130

(cherry picked from commit 2974574a53ab6d26be7b706e76271173a91fea3a)

* Security: Fix do not forward login cookie in outgoing requests

(cherry picked from commit 54a32fc83b233f5910495b5fcca0b4f881221538)

* Add test for username/login field conflict

(cherry picked from commit 7aabcf2694)

* Swap order of login fields

(cherry picked from commit 5ec176cada)

* "Release: Updated versions in package to 8.5.14" (#547)

Co-authored-by: Will Browne <will.browne@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: linoman <2051016+linoman@users.noreply.github.com>
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-10-11 15:25:10 +03:00
Grot (@grafanabot)
811b6c06b0 Docs: Fix caching.memcached setting name (#56606) (#56672)
(cherry picked from commit ef17f12c23)

Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
2022-10-11 05:07:45 -04:00
Grot (@grafanabot)
de78d1880b Dashboard: Single right-aligned y axis loses gridlines (#54206) (#55536)
Co-authored-by: gitstart <gitstart@gitstart.com>
Co-authored-by: gitstart <gitstart@users.noreply.github.com>
Co-authored-by: Nitesh Singh <nitesh.singh@gitstart.dev>
Co-authored-by: Murilo Amaral <87545137+MuriloAmarals@users.noreply.github.com>
Co-authored-by: Matheus Benini Ferreira <88898100+MatheusBeniniF@users.noreply.github.com>
Co-authored-by: Rafael Toledo <87545086+Toledodev@users.noreply.github.com>
Co-authored-by: Rubens Rafael <70234898+RubensRafael@users.noreply.github.com>
Co-authored-by: Júlio Piubello da Silva Cabral <julio.piubello@gitstart.dev>
Co-authored-by: Thiago Nascimbeni <tnascimbeni@gmail.com>

Co-authored-by: gitstart <gitstart@users.noreply.github.com>
Co-authored-by: gitstart <gitstart@gitstart.com>
Co-authored-by: Nitesh Singh <nitesh.singh@gitstart.dev>
Co-authored-by: Murilo Amaral <87545137+MuriloAmarals@users.noreply.github.com>
Co-authored-by: Matheus Benini Ferreira <88898100+MatheusBeniniF@users.noreply.github.com>
Co-authored-by: Rafael Toledo <87545086+Toledodev@users.noreply.github.com>
Co-authored-by: Rubens Rafael <70234898+RubensRafael@users.noreply.github.com>
Co-authored-by: Júlio Piubello da Silva Cabral <julio.piubello@gitstart.dev>
Co-authored-by: Thiago Nascimbeni <tnascimbeni@gmail.com>
(cherry picked from commit 667993eae7)

Co-authored-by: GitStart <1501599+gitstart@users.noreply.github.com>
2022-09-23 17:10:36 -05:00
Ieva
992ea8b765 Access Control: Allow org admins to invite new users (#55585)
* backport change to allow org admins to invite new users to org

* remove docs from backport
2022-09-21 11:19:06 -04:00
Ieva
0e5b1a7c5d resolve merge conflicts (#55508)
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-09-20 12:26:45 -04:00
Grot (@grafanabot)
8df7f5b1d4 "Release: Updated versions in package to 8.5.13" (#55501) 2022-09-20 12:01:34 -04:00
Ieva
3282afc648 V8.5.12 security patch (#486) (#55495)
* Data source: prevent from using auth proxy header as custom data source header (#477)

* apply security changes for auth proxy permission escalation

* add links to CVE

* remove duplicate check

* apply security fix for admin only folder migration (#484)

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2022-09-20 16:40:52 +01:00
Grot (@grafanabot)
8806b8fc1b Plugins: Expose emotion/react to plugins to prevent load failures (#55297) (#55398)
(cherry picked from commit db17a88193)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-09-19 17:36:36 +02:00
kay delaney
9e7d9fd123 [v8.5.x] Chore: Update slate and related packages (#54566) (#54800)
* Chore: Update slate and related packages (#54566)
2022-09-14 15:21:53 +01:00
Gilles De Mey
157cc68501 Manual back-port of #52399 (#55035) 2022-09-12 10:36:09 -04:00
Grot (@grafanabot)
b3f4a71c77 API: Do not expose user input in datasource error responses (#53483) (#54707)
(cherry picked from commit 950715b255)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2022-09-05 09:24:08 -04:00
Grot (@grafanabot)
46bbc0d3ab AppRootPage: Fixes issue navigating between two app plugin pages (#54519) (#54527)
* AppRootPage: Fixes issue where it was not possible to navigate to another plugin

* Externalize react-router

* fixing test

(cherry picked from commit e5fba788d6)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-08-31 09:48:14 -04:00
Grot (@grafanabot)
3d42e06e35 "Release: Updated versions in package to 8.5.11" (#54457) 2022-08-30 20:11:29 +02:00
Joan López de la Franca Beltran
51fa81c419 Rendering: Add support for renderer token (#54425) (#54438)
(cherry picked from commit a4f75cc0438712c90b02d24740416f8615e3a0cb)
(cherry picked from commit 6ec06f66b9)
2022-08-30 14:05:05 +02:00
Grot (@grafanabot)
d043d12427 Geomap: Local color range for dimensions (#54348) (#54350)
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
(cherry picked from commit 0707d682e0)
2022-08-26 16:58:53 -04:00
Grot (@grafanabot)
390c53a81e [v8.5.x] Build: Use specific nodejs version for levitate pipeline (#54211)
Co-authored-by: Esteban Beltran <academo@users.noreply.github.com>
2022-08-25 05:32:39 -04:00
Grot (@grafanabot)
5260d264fb alerting: redact alertmanagers in scheduler logs (#54183) (#54186)
(cherry picked from commit 438c95892f)

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2022-08-24 17:07:26 -04:00
Grot (@grafanabot)
f997ac8532 Geomap: Fix geohash editor settings #54058 (#54063)
(cherry picked from commit 13aacf3590)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2022-08-22 17:26:58 -04:00
Grot (@grafanabot)
25033280fd TimeSeries: Fix memory leak on viz re-init caused by KeyboardPlugin (#53892)
(cherry picked from commit 329aab7395)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-08-18 08:29:45 -04:00
Grot (@grafanabot)
99d7e7b4f2 Fix small typo in panel doc (#52568) (#52726)
(cherry picked from commit bdcef92e35)

Co-authored-by: Chris Hodges <chris.hodges@gmail.com>
2022-08-16 10:40:22 +02:00
Yuriy Tseretyan
ac565335ff [v8.5.x] Alerting: AlertingProxy to elevate permissions for request forwarded to data proxy when RBAC enabled (#53681)
* use constants from prior to the refactoring
2022-08-12 13:28:19 -04:00
Grot (@grafanabot)
4b2f8a8420 Chore: Panic! in the Logs (#53664) (#53667)
(cherry picked from commit cc777e175e)

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2022-08-12 10:00:36 -04:00
Grot (@grafanabot)
d8583237ea [v8.5.x] Geomap: Revert temporary fix for markers coloring (#53611) (#53630)
(cherry picked from commit 1f93216f1d)

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
2022-08-11 17:57:01 -04:00
Grot (@grafanabot)
b48e5fcc53 Geomap: Set markers color based on selected color field #53493 (#53496)
(cherry picked from commit 45750da667)

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
2022-08-09 19:00:12 -04:00
Jean-Philippe Quéméner
c93f0439db Backport release notes of 8.5.10
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-08-08 09:40:44 -04:00
Grot (@grafanabot)
030d52282f "Release: Updated versions in package to 8.5.10" (#53394) 2022-08-08 15:27:51 +02:00
Sofia Papagiannaki
dc52320fc9 [v8.5.x] API: Fix snapshot responses (#53301)
* API: Fix snapshot responses (#52998)

* API: Fix response status when snapshots are not found

* API: Fix response status when snapshot key is empty

* Apply suggestions from code review

(cherry picked from commit 5fec6cc4f5)
2022-08-04 19:21:39 +03:00
Grot (@grafanabot)
6c8768020e add missing check for root URLs length (#53239) (#53249)
(cherry picked from commit 46b7ca12e1)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-08-03 17:27:16 +02:00
Grot (@grafanabot)
557b044c15 check not empty root urls before setting field (#53135) (#53234)
(cherry picked from commit 5523c00b01)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-08-03 10:20:31 -04:00
Grot (@grafanabot)
ada287544f Plugins: Validate root URLs when signing private plugins via grafana-toolkit (#51968) (#53227)
* validate URLs

* apply PR review feedback

* fix err msg

(cherry picked from commit b32ad993c5)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-08-03 15:48:39 +02:00
Yuriy Tseretyan
af8853d0bf [8.5.x] Alerting: Remove user input from error response (#53147) 2022-08-02 16:51:55 -04:00
Grot (@grafanabot)
2f2e0752ec TimeSeriesPanel: Tooltip works properly when changing modes (#52876) (#53054)
* TimeSeriesPanel: Tooltip works properly when changing modes

* TooltipPlugin respects display mode

* Pass options to TimeSeriesPanel props

(cherry picked from commit 2948bf01dc)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2022-08-01 11:27:28 -04:00
Grot (@grafanabot)
9c779fd805 BarchartPanel: Fix color from thresholds show incorrectly (#52038) (#52968)
Signed-off-by:  Kyle Cunningham <kyle.cunningham@grafana.com>
(cherry picked from commit 11c79cd6da)

Co-authored-by: mingozh <77652617+mingozh@users.noreply.github.com>
2022-08-01 05:00:13 -04:00
MicroOps-cn
1b1076ea2e Variables: Add 'jsonwithoutquote' formatting options for variables, and format of variable supports pipeline. (#51859) 2022-07-29 17:32:48 +01:00
Grot (@grafanabot)
617cf776bd [v8.5.x] API: Do not expose user input in datasource error responses (#52995)
* API: Do not expose user input in datasource error responses (#52992)

(cherry picked from commit 87004cc22d)

* Remove unused import

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2022-07-29 16:18:16 +03:00
Will Browne
efe6c1d1b8 [v8.5.x] Plugins: Add validation for plugin manifest (#52865)
* resolve conflicts

* add plugin data for test
2022-07-27 14:23:00 +02:00
Selene
8ce81019db Add GetDialect function (#52818) 2022-07-27 12:58:41 +02:00
Grot (@grafanabot)
5c51d32098 [v8.5.x] UI/Card: Fix card items always having pointer cursor (#52816)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-07-26 16:44:33 +02:00
Konrad Lalik
804a52b059 [v8.5.x] Alerting: Fix alert panel instance-based rules filtering (#52583) (#52653) 2022-07-26 10:02:18 +02:00
Gabriel MABILLE
393c63e479 RBAC: Fix Anonymous Editors missing dashboard controls (#52649) 2022-07-26 09:19:35 +02:00
Grot (@grafanabot)
3ace91016e Fix anonymous access (#52615) (#52635)
(cherry picked from commit 8d938175f5)

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2022-07-22 11:08:50 +02:00
gotjosh
79c998c760 Alerting: Allow the webhook notifier to support a custom Authorization header (#52515) (#52621)
* Allow the webhook notifier to support a custom Authorization header

Instead of doing something clever of re-using the existing username/password fields of Basic Authentication - I opted for two diffent fields to match the upstream Alertmanager configuration (that in turn is based of the HTTP Basic authentication).

 It'll fail if you have values for both HTTP Basic Authentication and Authorization.

(cherry picked from commit b026f2bc5d)
2022-07-22 09:41:49 +01:00
Grot (@grafanabot)
c04cce903f Docs: Update query caching support (#50706) (#52461)
* Docs: Update query caching support

* Update query-caching.md

(cherry picked from commit 2b7fe7251c)

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
2022-07-19 10:34:15 -04:00
Andreas Christou
75be60cd0a Bump grafana-azure-sdk-go version (#52328) 2022-07-15 14:18:48 +01:00
Matthew Jacobson
6162f12369 Alerting: Fix Teams notifier not failing on 200 response with error (#52254) (#52269)
Team's webhook API does not always use the status code to communicate errors.
There are cases where it returns 200 and an error message in the body.
For example, 429 - Too Many Requests or when the message is too large.
Instead, what we should be looking for is a response body = "1".

https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL#send-messages-using-curl-and-powershell
(cherry picked from commit efa0d90093)
2022-07-14 15:04:17 -04:00
Ieva
47fe0c40be backport changelog (#52258)
* backport changelog

* add 8.5.9 back in

* add date

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-07-14 19:15:21 +01:00
Grot (@grafanabot)
a1a1c00c0f "Release: Updated versions in package to 8.5.9" (#408) 2022-07-14 15:04:41 +01:00
Dimitris Sotirakis
586f9d18d4 [v8.5.x] Merge release-8.5.8 branch (#406)
* "Release: Updated versions in package to 8.5.6" (#370)

* Fix XSS in runbook URL (#379)

(cherry picked from commit ac3f79956d)

* "Release: Updated versions in package to 8.5.7" (#380)

* Fix: Choose Lookup params per auth module

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: Prefer pointer to struct in lookup

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: user email for ldap

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: Use only login for lookup in LDAP

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: use user email for ldap

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

fix remaining test

fix nit picks

(cherry picked from commit 51c83909ebc99017fa0029c1e3f75724f25c5660)

* "Release: Updated versions in package to 8.5.8" (#398)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
Co-authored-by: George Robinson <george.robinson@grafana.com>
Co-authored-by: jguer <joao.guerreiro@grafana.com>
2022-07-14 15:04:41 +01:00
Jguer
b3e1d5cb5d Fix: Choose Lookup params per auth module (#397)
Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: Prefer pointer to struct in lookup

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: user email for ldap

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: Use only login for lookup in LDAP

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

Fix: use user email for ldap

Co-authored-by: Karl Persson <kalle.persson@grafana.com>

fix remaining test

fix nit picks
2022-07-14 15:04:41 +01:00
George Robinson
d647fa61b7 Fix XSS in runbook URL (#379) 2022-07-14 15:04:41 +01:00
Grot (@grafanabot)
6c70574ff1 Alerting: Fix bug where state did not change between Alerting and Error (#52204) (#52208)
This commit fixes a bug where the state did not change from Alerting to Error if the evaluation result returned an error, or from Error to Alerting if evaluations stopped returning errors.

(cherry picked from commit 34d45977ca)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2022-07-14 06:08:27 -04:00
George Robinson
2160b0e9ab Alerting: Backport fix database unavailable removes rules from scheduler (#52140) 2022-07-14 09:45:04 +01:00
Leon Sorokin
702f6860f7 [v8.5.x] GraphNG: uPlot 1.6.22 (#51945) (#51991)
* GraphNG: uPlot 1.6.22 (#51945)

(cherry picked from commit fda7f064ad)

# Conflicts:
#	.betterer.results
#	package.json
#	packages/grafana-data/package.json
#	packages/grafana-data/src/transformations/transformers/joinDataFrames.ts
#	packages/grafana-ui/package.json
#	yarn.lock

* revert changes to isLikelyAscendingVector()

* types
2022-07-13 15:17:30 -07:00
Grot (@grafanabot)
aafcd83761 Plugins: Improved handling of symlinks (#51324) (#52089)
Improves how we handle symlinks in plugin management.

(cherry picked from commit 04df634ef5)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2022-07-12 14:16:38 +02:00
Grot (@grafanabot)
e24416e678 BarChart: fix crash when checking bar value text overlap (#52061) (#52063)
(cherry picked from commit 254159ad69)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-07-11 14:03:03 -04:00
Will Browne
022d7c14d9 [v8.5.x] CLI: Allow relative symlinks in zip archives when installing plugins (#52049)
* resolve conflicts

* fix build issue

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2022-07-11 16:28:56 +02:00
Grot (@grafanabot)
e62f2a7b74 Prometheus datasource: query builder freezes when metrics metadata is undefined (#51929) (#51988)
* add error handling for prom query builder returning undefined metrics metadata

* remove reference to escalation

(cherry picked from commit e51187a474)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2022-07-08 12:22:35 -04:00
Ieva
0ad8a8fc4f backport (#51964) 2022-07-08 16:28:41 +02:00
Grot (@grafanabot)
f1f6feee8b Alerting: Fix RegExp matchers in frontend for Silences and other previews. (#51726) (#51872)
(cherry picked from commit d99a7334d5)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-07-08 10:42:19 +08:00
Grot (@grafanabot)
aa247f5833 Time series panel: Fix an issue with stacks being not complete due to the incorrect data frame length (#51910) (#51914)
* Test failure

* Fix

(cherry picked from commit 5a65a12278)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-07-07 07:45:09 -07:00
Grot (@grafanabot)
11b8cefe09 [v8.5.x] Bar chart: Fix stacking bug when data produces 0 accumulators (#51809)
* Bar chart: Fix stacking bug when data produces 0 accumulators (#51450)

* Don't divide by 0 ...

* Add test panel to gdev dashboard

(cherry picked from commit daf0e3cb4e)

* betterer

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-07-07 02:07:47 -07:00
Grot (@grafanabot)
14e622414b Plugins: Register management endpoints only when external managed is also false (#51802) (#51816)
* Only define plugin install endpoints when catalog enabled

* add external check

(cherry picked from commit 40dff288cd)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-07-07 04:58:51 -04:00
Yuriy Tseretyan
e347be769f Chore: Update ConcreteLogger to implement gokit Logger interface (#51599) (#51647)
# Conflicts:
#	pkg/infra/log/log.go
2022-07-06 11:49:27 -04:00
Grot (@grafanabot)
17b083f861 Histogram: filter nulls, bucket-adaptive xAxis decimals (#51773) (#51822)
(cherry picked from commit 173636aa61)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-07-06 11:29:41 -04:00
Grot (@grafanabot)
a0aba4319f Only define plugin install endpoints when catalog enabled (#51788) (#51789)
(cherry picked from commit ba9fc10a74)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-07-06 11:27:55 +02:00
Grot (@grafanabot)
f2dc6c9330 Graphite: Use TimeRange with applied fiscalYearStartMonth (#51623) (#51774)
* Parse date with fiscalYearStartMonth in graphite ds

* Use precalculated timeranges

* Always use precalculated values

* Modify test

(cherry picked from commit 5b058d617d)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2022-07-06 10:11:09 +03:00
Ieva
8a7fe0f49f Access Control: Allow dashboard admins to query org users (#51695)
* "Release: Updated versions in package to 8.5.6" (#370)

* allow dashboard admins to query org users

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-07-04 14:22:37 +01:00
Grot (@grafanabot)
f7d9c401c2 Access control: role checks before updates (#51449) (#51457)
* add role checks

* linting

(cherry picked from commit 0c0cf36ab8)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-06-28 06:23:17 -04:00
Victor Marin
ddfdc9ee7a Variables: improve performance of transformMetricFindResponse (#49360) (#51435)
* improve performance of transformMetricFindResponse

* use lodash uniqBy for postgres

* use lodash uniqBy for mysql

* use lodash uniqBy for mssql

* hopefully conform to import linting rules

* Added .betterer.results

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Victor Marin <victor.marin@grafana.com>
(cherry picked from commit 683f31f2c6)

Co-authored-by: Nathaniel Saxe <NathanielSaxophone@gmail.com>
2022-06-27 05:02:30 -07:00
Emil Tullstedt
db5dee09d2 Chore: update golang.org/x dependencies (#51430) 2022-06-27 12:35:42 +02:00
Todd Treece
2200c3ca50 Variables: Selectively reload panels on URL update (#51003) (#51396)
(cherry picked from commit 342344bb03)
2022-06-24 21:23:01 +02:00
gotjosh
8356365b0a Alerting: Don't stop the migration when alert rule tags are invalid (#51253) (#51339)
* Alerting: Don't stop the migration when alert rule tags are invalid

As we migrate we expect the `alertRuleTags` on a dashboard alert to be a JSON object. However, it seems this is not really validated by Grafana and an user can change the format to something else that the JSON parser is not able to marshal into a `map[string]string`.

Let's do a bit better by "attempting" to parse the tags and if we can't we'll simple return an empty map. The data is still there so if the user wishes they can go back, fix the data and attemp the migration again.

(cherry picked from commit 90646e7f41)
2022-06-23 12:37:21 -05:00
Grot (@grafanabot)
f60aeb4b5d Fix query parameter template variable (#50023) (#51173)
As documented under [Advanced variable format options – Query parameters](https://grafana.com/docs/grafana/latest/variables/advanced-variable-format-options/#query-parameters), the option is `queryparam`, not `queryparams`.

I have verified in Grafana 8.5.3 that the former works while the latter doesn't.

(cherry picked from commit 1b091454ec)

Co-authored-by: kiwi-oss <71145773+kiwi-oss@users.noreply.github.com>
2022-06-21 15:49:59 +02:00
Grot (@grafanabot)
4b378485cf [v8.5.x] Alerting: Fix alert rule page crashing when datasource contained URL unsafe characters (#51122)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-06-20 15:59:23 +02:00
Victor Marin
87420e15b8 TablePanel: Show filter icon on correct field when other fields are hidden (#50940) (#51090) 2022-06-20 10:27:39 +03:00
Dimitris Sotirakis
f73fa13e58 Update gopkg.in/yaml.v3 dep (#51042) 2022-06-20 10:04:19 +03:00
Grot (@grafanabot)
08c182bf2b Time Series Panel: Add Null Filling and "No Value" Support (#50907) (#51066)
* Use nullInsertThreshold and nullToValue in time series

* Allow for undefined timeRange to support certain candlestick uses of prepareGraphableFields

* Make sure null to value doesn't modify initial data

* Do a shallow values copy and avoid Array.push()

* Clean up null to value transformation.

* Add basic tests

* Remove redunant null threshold application flagging

* set nullThresholdApplied flag even when no null inserts were done

* Include nullThresholdApplied in test snapshot

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
(cherry picked from commit 86b785d039)

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2022-06-17 16:32:15 -05:00
Matthew Jacobson
ca436db452 Alerting: Fix AM config overwrite when SQLite db is locked during sync (#50951) (#51001)
If SQLite is used and the database is locked temporarily (ex. heavy write-load) during periodic
AM config sync, it was possible for your AM config to be overwritten with the default one.

This fixes that by patching a bug in xorm v0.8.2 which was causing SQLITE_BUSY errors to be ignored
in certain cases.

(cherry picked from commit 8f5912b94c)
2022-06-17 12:19:05 -04:00
Grot (@grafanabot)
bdd1b2a6af StateTimeline: make sure we use result of applyNullInsertThreshold() (#50988) (#50993)
Co-authored-by: Kyle Cunningham <kyle@codeincarnate.com>
(cherry picked from commit 406509cdd3)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-06-16 17:46:30 -05:00
Adam Simpson
b03353537d ReleaseNotes: Updated changelog and release notes for 8.5.6 (#50807) (#50830)
(cherry picked from commit 2dd784852c)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-06-16 13:10:00 +00:00
Dimitris Sotirakis
09fe518981 Remove publish.yml for v8.5.x (#50811) 2022-06-14 18:39:33 +02:00
Grot (@grafanabot)
15130a30fb "Release: Updated versions in package to 8.5.6" (#50806) 2022-06-14 16:03:29 +00:00
Agnès Toulet
89466ef3fc Docs: update query caching InfluxDB support (#50662) 2022-06-13 16:03:44 +02:00
Jack Baldry
88f730f062 Add current alias to all files (#48635) (#49102)
* Add aliases to all files

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

* Prettify front matter

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
(cherry picked from commit 51dfcd7)
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2022-06-13 14:09:38 +02:00
Zoltán Bedi
c114e3ff5c [v8.5.x] TimeSeries: Add an option to set legend width (#50549)
* TimeSeries: Add an option to set legend width (#49126)

* Add an option to set legend width

* Add width to the cue file

* Use legendStyle

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
(cherry picked from commit a6693ba62f)

* Add missing migration

Co-authored-by: Ivan Babrou <github@ivan.computer>
2022-06-10 09:55:15 +02:00
Gabriel MABILLE
e9ec97b34c RBAC: Include alert.rules action when setting folder permissions (#49946) (#50510)
* Generate additional actions when setting folder permissions in acl list

* Add migration for managed folder permissions to include alert rule
actions

(cherry picked from commit bdff63d4a8)

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2022-06-09 14:25:04 +02:00
Grot (@grafanabot)
9500c94c98 [v8.5.x] RBAC: drop permissions with folder:create action added by migration (#50493)
* add migrator to drop folder create actions that was set fromt he folder (#49878)

(cherry picked from commit f4f25d911b)

* Add missing const

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
Co-authored-by: gamab <gabi.mabs@gmail.com>
2022-06-09 13:45:29 +02:00
Grot (@grafanabot)
18d37f81d8 Alerting: Improve Unified Alerting Rollback Warning (#50470) (#50471)
After migrating to unified alerting, users must explicitly allow rolling
back to legacy alerting by setting force_migration = true in config.
This updates the panic message to clarify why that's required and what
the consequences of rolling back will be.

Fixes #50469

(cherry picked from commit 30f035ca34)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-06-09 07:48:34 +02:00
lean.dev
7ebae85355 Bumping protobufjs version (#50435) (#50445)
Backport (cherry picked from commit b9cce18f72)
2022-06-08 18:11:46 +02:00
Grot (@grafanabot)
8328d823b8 Security: Fixes javascript security warnings in old vendored libs (#50382) (#50412)
(cherry picked from commit 74608d6480)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-06-08 14:12:16 +02:00
Grot (@grafanabot)
fc324d07cd Dashboard: Fixes random scrolling on time range change (#50379) (#50383)
* Dashboard: Fixes random scrolling on time range change

* fix ts issue

* removed logging

(cherry picked from commit fd408652dc)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-06-08 13:17:00 +02:00
Ezequiel Victorero
b09980dc4f Backport 50340 to v8.5.x (#50355)
* ReleaseNotes: Updated changelog and release notes for 8.5.5 (#50340)

(cherry picked from commit 5f65edff28)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-06-07 14:10:14 -03:00
Grot (@grafanabot)
9fd27abb44 "Release: Updated versions in package to 8.5.5" (#50339) 2022-06-07 12:42:15 -03:00
Grot (@grafanabot)
c95a7911ac State Timeline: Fix Null Value Filling and Value Transformation (#50054) (#50195)
(cherry picked from commit 12ba2d6b8b)

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2022-06-06 11:16:24 -07:00
Grot (@grafanabot)
e4a8c9327e DashboardExport: Fixes issues sharing dashboards where query data source was set wrong (#48410) (#49344)
(cherry picked from commit 6fe28854bc)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-06-06 14:58:12 -03:00
Grot (@grafanabot)
9c0cbda665 AngularSupport: Update description for angular_support_enabled config option (#49569) (#49573)
* AngularSupport: Update description for angular_support_enabled config option

* Update angular deprecration plan doc

* Update

* Update article

* Updated

(cherry picked from commit e1909fe74b)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-06-06 14:56:41 -03:00
Grot (@grafanabot)
0876c647d5 Legend: Use correct unit for percent and count calculations (#49004) (#49151)
(cherry picked from commit cdc6344a96)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-06-06 14:55:27 -03:00
Grot (@grafanabot)
8be62ce2ff Docs: Add documentation for reporting.enabled config option (#46606) (#50129)
Co-authored-by: JitaC <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit d3c6c2ed94)

Co-authored-by: Jesse Weaver <jesse.weaver@grafana.com>
2022-06-06 14:52:46 -03:00
Dimitris Sotirakis
90c79115a3 Update Golang - bump grabpl and build-container (#50253) (#50257)
(cherry picked from commit 7b750cc0f0)
2022-06-06 15:42:41 +01:00
Tania
711ea1c2cb Encryption: Stop decrypting EE encrypted secrets with legacy encryption (#50090) (#50176)
(cherry picked from commit 7a614fd8a1)
2022-06-03 17:35:53 +02:00
Yaelle Chaudy
f037b23f9f [v8.5.x] Cloudwatch: Add template variable query function for listing log grou… (#50161)
* Cloudwatch: Add template variable query function for listing log groups (#50100)

* cloud-datasources mob! :shipit:

* cloud-datasources mob! :shipit:

lastFile:public/app/plugins/datasource/cloudwatch/components/VariableQueryEditor/VariableQueryEditor.tsx

* mob next [ci-skip] [ci skip] [skip ci]

lastFile:public/app/plugins/datasource/cloudwatch/variables.ts

* cloud-datasources mob! 👶

lastFile:public/app/plugins/datasource/cloudwatch/components/VariableQueryEditor/VariableQueryEditor.test.tsx

* cloud-datasources mob! 👶

lastFile:public/app/plugins/datasource/cloudwatch/components/VariableQueryEditor/VariableQueryEditor.test.tsx

* mob next [ci-skip] [ci skip] [skip ci]

lastFile:public/app/plugins/datasource/cloudwatch/components/VariableQueryEditor/VariableQueryEditor.test.tsx

* cloud-datasources mob! :shipit:

lastFile:public/app/plugins/datasource/cloudwatch/variables.test.ts

* cloud-datasources mob! 

* prettier md

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
Co-authored-by: Andres <andres.martinez@grafana.com>
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
Co-authored-by: Adam Simpson <adam@adamsimpson.net>
(cherry picked from commit bcf8320e07)

* Fixed test
2022-06-03 16:58:55 +02:00
Grot (@grafanabot)
450314947b [v8.5.x] Alerting: Fix alert list panel showing firing alerts with no instances (#50094)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-06-02 17:03:45 +02:00
Eric Leijonmarck
f8c6bba2ce merged and backport to 8.5 (#50104)
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2022-06-02 16:44:17 +02:00
Tania
1c2e240995 [v8.5.x]Encryption: Fix decrypting secrets with inactive deks (#50011) 2022-06-02 11:23:41 +02:00
Grot (@grafanabot)
03a44fd689 Azure OAuth: silent fail on getting groups (#49909) (#50021)
(cherry picked from commit 3049534c40)

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
2022-06-02 09:23:25 +02:00
Alexander Weaver
b90006d723 Alerting: Remove double quotes from matchers (#50038) (#50044)
* Alerting: Remove double quotes from matchers

With #38629 a new Alertmanager configuration object was introduced with `object_matchers`, it was meant to circumvent around the fact that Prometheus label names don't support a set of characters that Grafana needs to support for alerts, silences, matchers, etc. (with a common example being elasticsearch's `.`).
This new object does not include the label of sanitzation or validation that its Prometheus equivalent supports in `matchers` and therefore are semantically not equivalent.

This triggered the problem that when the migration is run, we use `matchers` as the object to populate in configuration for routing policies, but when the UI does its first save this object is transformed to `object_matchers`.

Matchers that were previously running just fine would immediately stop working as soon as the configuration is saved.

This problem surfaced with the introduction of #49952 where we stopped stripping double quotes from matchers (not just regex but _all_ of them).

* Add comment explaining rationale and future removal

Co-authored-by: Alex Weaver <weaver.alex.d@gmail.com>
(cherry picked from commit 1a50b0dbb7)

Co-authored-by: gotjosh <josue.abreu@gmail.com>
2022-06-01 16:51:47 -05:00
Grot (@grafanabot)
7d097dc0b8 CloudWatch: Add multi-value template variable support for log group names in logs query builder (#49737) (#50036)
* Add multi-value template variable support for log group names

* add test for multi-value template variable for log group names

* add test

(cherry picked from commit dca0453c2e)

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
2022-06-01 19:43:38 +02:00
Gilles De Mey
577e85b46d Alerting: do not overwrite existing alert rule condition (#49920) (#49991)
(cherry picked from commit 82e9f4e7e7)
2022-06-01 15:14:45 +02:00
Kevin Yu
d9c6d7f220 Azure Monitor: Include datasource ref when interpolating variables (#49543) (#49955) 2022-06-01 05:30:35 -07:00
Ezequiel Victorero
54d31fad81 ReleaseNotes: Updated changelog and release notes for 8.5.4 (#49954) (#49961)
(cherry picked from commit 3e04dcb72c)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2022-05-31 16:46:35 -03:00
Grot (@grafanabot)
db0d1631b0 "Release: Updated versions in package to 8.5.4" (#49953) 2022-05-31 14:34:55 -03:00
Grot (@grafanabot)
b1c222b913 [v8.5.x] Alerting: Add fgac support to alert list panel (#49911)
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-05-31 16:14:27 +02:00
Grot (@grafanabot)
9b942fc8e2 Alerting: fix layout with long words / numbers (#49882) (#49888)
(cherry picked from commit e04f84fd1b)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-05-31 13:39:28 +02:00
Grot (@grafanabot)
5df8a04cd0 Fix typo in curl command (#46729) (#49818)
* Fix typo in curl command

Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

* Fix typo in another curl command

Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
(cherry picked from commit 0a23299878)

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2022-05-30 14:24:10 +02:00
Grot (@grafanabot)
38b4a458ed Dashboards: Remove "delete dashboard" button for new dashboards (#48947) (#48959)
(cherry picked from commit 90b7a76328)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-05-30 09:19:39 +00:00
Isabella Siu
9cb11a3c53 CloudWatch: Use scopedVars in expressions (#49178) (#49769)
* CloudWatch: Use scopedVars in expressions

* fix spec test

(cherry picked from commit b80934617b)
2022-05-30 09:38:15 +02:00
Grot (@grafanabot)
1cee0bee9d [v8.5.x] Timeseries: Fix outside range stale state (#49655)
* Timeseries: fix outside range stale state (#49633)

Co-authored-by: Todd Treece <todd.treece@grafana.com>
(cherry picked from commit df90393057)

* remove typed array

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2022-05-26 19:00:24 +02:00
Jack Baldry
3ea049fcae Convert TOML front matter to YAML (#49724)
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2022-05-26 12:38:05 -04:00
Andreas Christou
1d9d1bd41a AzureMonitor: Ensure original query properties are included unchanged (#49712)
* AzureMonitor: Ensure original query properties are included unchanged (#49642)

* Ensure original query properties are included unchanged

* Remove refId from pseudo datasources

* Include testing for interpolateVariablesInQueries

- Add util function to create template variables
- Update mock query with missing props
- Additional tests on each ds for template variables

* Correct typo and add explicit check for datasource

(cherry picked from commit c8094b33cd)

# Conflicts:
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.test.ts

* Add missing prop
2022-05-26 16:13:46 +01:00
Grot (@grafanabot)
fa9c19b831 loki: better unpack handling (#49074) (#49673)
(cherry picked from commit b54817033a)

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
2022-05-26 11:38:04 +02:00
Grot (@grafanabot)
34ca45c78e Old Graph migration: Preserve null values settings (#49493) (#49578)
* Graph migration: Preserve null values settings

* Review

(cherry picked from commit 30880e6e18)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-05-26 00:47:27 -07:00
Grot (@grafanabot)
f5f022e6ac CloudMonitor: Correctly encode default project response (#49510) (#49611)
* Correctly encode default project response

* Make getGCEDefaultProject a method of Service and add test

* Handle error appropriately

* Update test and function definition

(cherry picked from commit ccb8888055)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2022-05-25 17:46:23 +01:00
Grot (@grafanabot)
525a9d041d show notification tab only to editor (#49624) (#49631)
(cherry picked from commit 307c207a24)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-05-25 18:35:24 +02:00
Karl Persson
e91f044225 AccessControl: Grant data source reader to all users when running oss (#49514) (#49608)
* grant data source reader to all users when running oss or enterprise
without license

* fix asserts in alerting tests

* add oss licensing service for test setup

* fix tests to pass in enterprise

* lint

* fix tests

* set setting.IsEnterprise flag for tests

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
(cherry picked from commit 1796a1d277)
2022-05-25 14:26:25 +02:00
Grot (@grafanabot)
4487842227 Transformations: Add an All Unique Values Reducer (#48653) (#48733)
(cherry picked from commit 570ff074f6)

Co-authored-by: Josiah (Jay) Goodson <josiah.goodson@gmail.com>
2022-05-25 11:52:54 +02:00
Grot (@grafanabot)
c505337dfa Prevent exception when panel has multiple queries (#49368) (#49561)
This fixes the issues that when a panel has multiple queries this throws an exception if source is not part of the current frame

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
(cherry picked from commit eab806620c)

Co-authored-by: Ward Bekker <ward@wardbekker.com>
2022-05-25 09:30:18 +02:00
Sriram
541edd38cc [v8.5.x] InfluxDB: Removing influxDB backend migration feature flag (#49533)
* InfluxDB: Removing influxDB backend migration feature flag (#49531)

Removing the `influxdbBackendMigration` feature toggle default value.

(cherry picked from commit 27c26c30d1)

* Update defaults.ini
2022-05-24 19:59:05 +02:00
Grot (@grafanabot)
e9427f8b64 AzureAD: Fallback to no groups if user does not have permission to query groups from azure (#49506) (#49521)
* If GroupMemver.Read.All permissions is not configured return no groups

* fix log

(cherry picked from commit 624f8ef40d)

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2022-05-24 18:16:31 +02:00
Grot (@grafanabot)
80a3be920c Alerting: Validate alert notification UID length (#45546) (#49512)
* validate alert notification UID length

* simplify-ish

* remove unused field

* whoopsie

* delete newline

* remove check

* apply feedback

(cherry picked from commit 635fa4ab0f)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-05-24 17:22:08 +02:00
Sriram
636cb95bc9 [v8.5.x] InfluxDB: Use backend for influxDB by default via feature toggle (#48453) (#49398)
* InfluxDB: Use backend for influxDB by default via feature toggle (#48453)

(cherry picked from commit 755ec3b469)

* Update defaults.ini
2022-05-24 16:03:06 +01:00
Grot (@grafanabot)
9f9cc64d04 Release: downgrade to centos 7 in verify repo as 8 doesn't have a valid mirror list (#48422) (#48424)
(cherry picked from commit 9688d7d7aa)

Co-authored-by: Leonard Gram <leo@xlson.com>
2022-05-24 16:07:23 +02:00
Grot (@grafanabot)
45b2189993 ReleaseNotes: Updated changelog and release notes for 8.5.3 (#49275) (#49277)
* ReleaseNotes: Updated changelog and release notes for 8.5.3

* Update CHANGELOG.md

Co-authored-by: Leonard Gram <leo@xlson.com>
(cherry picked from commit 3bd6b8a5ae)
2022-05-24 16:06:38 +02:00
Gilles De Mey
4bcb97acef Alerting: Make alertmanager datasource stable (#49485) (#49490)
(cherry picked from commit 86871807d2)
2022-05-24 15:24:22 +02:00
Grot (@grafanabot)
19480aaedf Variables: Fixes issue with data source variables not updating queries with variable (#49478) (#49481)
(cherry picked from commit 04bc482f11)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-05-24 13:30:49 +02:00
Andreas Christou
21a9ccbb3e AzureMonitor: Fix auto-selection of time-grain for metrics. (#49278) (#49420)
* AzureMonitor: Fix auto-selection of time-grain for metrics. (#49278)

* Update query editor to fix auto time-grain selection

* Update new query editor to fix auto time-grain selection

* Remove log and fix lint issues

* Add test for useMetricMetadata

- Add necessary types

* More test updates

- Update old dataHooks test
- Ensure query changes

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
(cherry picked from commit 2780651ea8)

# Conflicts:
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.test.ts
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/dataHooks.ts
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/dataHooks.test.ts
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/dataHooks.ts

* Update mocks appropriately

* Separate asyncState tests

* Fix lint error
2022-05-24 11:16:11 +01:00
Grot (@grafanabot)
f34627b068 AzureMonitor: Do not quote variables when a custom All variable option is used (#49428) (#49474)
(cherry picked from commit b0300d56ac)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2022-05-24 11:42:57 +02:00
Grot (@grafanabot)
fdb949786f DashList: Handle long dashboard titles more gracefully (#49460) (#49464)
(cherry picked from commit a1b709626f)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-05-24 09:42:06 +02:00
Konrad Lalik
46ea845720 [v8.5.x] Alerting: Fix access to alerts for viewer with editor permissions when RBAC is disabled (#49427)
* Alerting: Fix access to alerts for viewer with editor permissions when RBAC is disabled (#49270)

* Add folder edit permission for users with Viewer role
* relax permissions required to create an alert when RBAC is disabled

(cherry picked from commit 3dfafbadef)

* fix backend conflict

* fixup

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-05-24 09:13:43 +02:00
Grot (@grafanabot)
ccab3e7e0f Parse template when validating it (#49282) (#49284)
(cherry picked from commit e8b498fe8b)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-23 17:33:05 -05:00
Grot (@grafanabot)
19cd446f05 Plugins: Fix Azure Devops plugin link and plugins list order (#49394) (#49432)
* Plugins: Fix Azure Devops plugin link and plugins list order

* tests added for plugins sorting

(cherry picked from commit f9d1d8370f)

Co-authored-by: Sriram <yesoreyeram@gmail.com>
2022-05-23 19:18:00 +02:00
Andreas Christou
4ed9a00909 AzureMonitor: Fixes metric definition for Azure Storage queue/file/bl… (#49412)
* AzureMonitor: Fixes metric definition for Azure Storage queue/file/blob/table resources. (#49101)

* Appropriately set metric definition

- Nested storage account resources (queues/blobs/tables/files) require metric definition of Microsoft.Storage/storageAccounts
- Update tests accordingly

* Restructure getResourceNames test

- Add expect on getResource args

* Update to fix issue for new query editor

- Reconstruct resourceUri if the resource is a storage account
- Correctly push storage namespaces as options for metric namespaces
- Filter options appropriately

* Fix duplicate options

* Fix lint issues

* Add comment explaining URI modification

(cherry picked from commit 34fa7b493c)

# Conflicts:
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.test.ts
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/dataHooks.ts

* Fix lint issue
2022-05-23 16:00:51 +01:00
Grot (@grafanabot)
8f87fd9bfe Alerting: Fix notification policies label matchers layout (#49159) (#49164)
(cherry picked from commit 0ae8e3bd4e)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-05-23 11:24:13 +02:00
Grot (@grafanabot)
5136f7de89 Encryption: Add support for decrypting ciphertexts with algorithm metadata (#49312) (#49336)
(cherry picked from commit 15605b6c80)

Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
2022-05-23 07:52:49 +02:00
Yuriy Tseretyan
ce527c4084 Alerting: Fix RBAC actions for notification policies (#49185) (#49348)
* squash actions "alert.notifications:update", "alert.notifications:create", "alert.notifications:delete" to "alert.notifications:write"
* add migration
* update UI to use the write action
* update docs
* changelog

(cherry picked from commit 258b3ab18b)
2022-05-20 19:03:57 -04:00
Grot (@grafanabot)
fc736471ba GrafanaUI: Fix color of links in error Tooltips in light theme (#49327) (#49345)
* GrafanaUI: Fix color of links in input validation errors in light theme

* Change colors

(cherry picked from commit 426ca2999e)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-05-20 19:21:49 +01:00
Grot (@grafanabot)
954fbb0651 Transforms: Labels to fields, fix label picker layout (#49304) (#49343)
(cherry picked from commit c3a5ff1eeb)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-05-20 20:02:06 +02:00
Isabella Siu
4c15f8356e CloudWatch: migrate old variable queries with empty array (#49197) (#49269)
(cherry picked from commit 66220758b3)
2022-05-20 08:59:40 -04:00
Grot (@grafanabot)
7c4c6aa544 Security: fixes CVE-2022-29170 (#49240) (#49254)
* Request interceptor: block redirects

* handle location missing

* Update pkg/infra/httpclient/httpclientprovider/host_redirect_validation_middleware.go

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* Update pkg/infra/httpclient/httpclientprovider/host_redirect_validation_middleware.go

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* linter

* fixes tests

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit aad2983350)

Co-authored-by: Leonard Gram <leo@xlson.com>
2022-05-20 11:16:30 +02:00
Grot (@grafanabot)
03a904c308 OAuth: make oauth case insensitive match for email (#49252) (#49264)
(cherry picked from commit 8919c8b014)

Co-authored-by: Jguer <joao.guerreiro@grafana.com>
2022-05-20 08:53:11 +02:00
Grot (@grafanabot)
f9d50206bd "Release: Updated versions in package to 8.5.3" (#49274) 2022-05-19 18:58:38 +02:00
Yuriy Tseretyan
1547e279b1 Alerting: Fix anonymous access to alerting (#49203) (#49268)
* introduce a fallback handler that checks that role is Viewer.
* update UI nav links to allow alerting tabs for anonymous user
* update rule api to check for Viewer role instead of SignedIn when RBAC is disabled

(cherry picked from commit f7f2253072)
2022-05-19 12:33:29 -04:00
Grot (@grafanabot)
2a8c8280b8 Alerting: Update migration to migrate only alerts that belong to existing org\dashboard (#49192) (#49199)
* Update migration to migrate only alerts that belong to existing org\dashboard

(cherry picked from commit d87fdc1037)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-05-19 12:14:44 -04:00
Grot (@grafanabot)
67323206c4 Alerting: Fix flaky migration test (#48595) (#49190)
* Fix flaky migration test

(cherry picked from commit 5c32a6b6f6)

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2022-05-19 10:43:47 -04:00
Grot (@grafanabot)
8fb2d49982 Templating: Prefix variable picker element IDs (#48405) (#48682)
(cherry picked from commit bb7e556efc)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-05-19 11:32:06 +02:00
Grot (@grafanabot)
209e765ea1 List Azure Devops as an enterprise plugin (#49189) (#49196)
* list azure devops as an enterprise plugin

* change base url to grafana.com/grafana/plugins and remove trailing slashes for consistency

(cherry picked from commit 5b52a1c391)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2022-05-18 15:28:57 -04:00
Grot (@grafanabot)
14bb847de6 Indicate whether templates are provisioned (#49025) (#49194)
(cherry picked from commit 25da759bf2)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-18 14:19:56 -05:00
Alexander Weaver
dfae1f9245 Fix flaky test. Sort records and only test the important fields (#49120) (#49191)
(cherry picked from commit 81e368dbb5)
2022-05-18 19:44:09 +02:00
Grot (@grafanabot)
88df5db710 LibraryPanels: Fix library panels not connecting properly in imported dashboards (#49161) (#49176)
* Use saved dashboard model to create library panel connections when importing

* Rename variables in dashboard import for clarity

(cherry picked from commit 71e1305364)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-05-18 17:02:49 +02:00
Konrad Lalik
f1e390ebf9 Alerting: Fix Loki buildinfo request error (#49073) (#49144)
* Skip buildinfo fetching for Loki data sources

* Fix and add tests

* Fix linter

* Improve typings

* Improve Loki's buildinfo notice

* Fix rename, improve prom app display name

(cherry picked from commit 43ab0c1f95)
2022-05-18 11:32:38 +02:00
Grot (@grafanabot)
e6357db4b0 fetch permissions by uid (#49100) (#49134)
(cherry picked from commit 5c4ebb6f34)

Co-authored-by: Karl Persson <kalle.persson@grafana.com>
2022-05-18 11:25:16 +02:00
Grot (@grafanabot)
c41e87d834 Alerting: Do not serve alerting images from root (#49022) (#49135)
Manually tested with serve_from_sub_path = true and a custom pathUrl

(cherry picked from commit 0a44fbdd42)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-05-18 10:46:32 +02:00
Grot (@grafanabot)
5c1116679d Tooltip: Sort decimals using standard numeric compare (#49084) (#49093)
* Failing test case

* Compare numeric values not using collator

(cherry picked from commit 6a5a0e5770)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-05-18 00:51:50 -07:00
Grot (@grafanabot)
d15da13fca Fix CloudWatch: Add missing ELB metrics #48756 (#48985) (#49114)
* Fix CloudWatch: Add missing ELB metrics #48756

* run go fmt

(cherry picked from commit 78287618ab)

Co-authored-by: qs_pang <qingshuang.pang@gmail.com>
2022-05-17 17:27:48 -04:00
Grot (@grafanabot)
6f5960fffa [v8.5.x] Alerting: Provisioning GET routes for mute timings (#49113)
* Alerting: Provisioning GET routes for mute timings (#49044)

* Define GET routes and run codegen

* Wire up forked and non-generated API

* Implement and wire

* Tests, authorization

* Fix linter error

(cherry picked from commit 9af30f6570)

* ErrorContains -> Error, then Contains

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-17 14:49:12 -05:00
Joan López de la Franca Beltran
86c84261e2 Encryption: Split database transactions within migration/rollback commands (#48394) (#49038)
(cherry picked from commit 6c4eae710f)
2022-05-17 20:03:19 +02:00
Grot (@grafanabot)
8fc8ab1320 [v8.5.x] TimeSeries: Fix detection & rendering of sparse datapoints (#49050)
* TimeSeries: Fix detection & rendering of sparse datapoints (#48841)

(cherry picked from commit 84d4ce51ad)

* revert annotations list datasource

* revert more

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-05-17 00:32:08 -05:00
Grot (@grafanabot)
1af5c67c37 TimeSeries: insert null values at each missing interval (#49036) (#49047)
(cherry picked from commit eecdbebf75)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-05-17 05:27:47 +02:00
Torkel Ödegaard
a7ce681a84 Revert "Transformation: Added variance and standard deviation (#48844) (#48921)" (#48996)
This reverts commit 4597c33c3f.
2022-05-16 17:20:58 +02:00
Gilles De Mey
104c3a3a1c Alerting: Allow disabling override timings for notification policies (#48648) (#49001)
(cherry picked from commit fa37c6c9d3)
2022-05-16 12:57:02 +02:00
Grot (@grafanabot)
cd70ea3310 Expressions: adds inline documentation for the Math expression (#48784) (#48999)
(cherry picked from commit 1a7ca3f0de)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-05-16 11:45:59 +02:00
Grot (@grafanabot)
093b8c7493 Add note to docs: log out / in after plugin add. (#47666) (#48986)
(cherry picked from commit 08268d8713)

Co-authored-by: Dan Roscigno <dan@roscigno.com>
2022-05-15 11:00:12 -04:00
Grot (@grafanabot)
943343f2df Update dashboard-header.md (#46986) (#48987)
Just a tiny typo -> point 4, "homw" to "home"

(cherry picked from commit 6f1f7cdc88)

Co-authored-by: Anind Kiran <53901204+AnindKiran@users.noreply.github.com>
2022-05-15 10:59:54 -04:00
Grot (@grafanabot)
4597c33c3f Transformation: Added variance and standard deviation (#48844) (#48921)
* Transformation: Added variance and standard deviation for sample and population. Modified mean calculation approach

* Transformation: Removed existing mean calculation

* Transformation: Added testcases for variance and Standard deviation

* Update docs/sources/panels/calculation-types.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 906484b809)

Co-authored-by: selvavm <selvavm@hotmail.com>
2022-05-11 17:47:27 -07:00
Joan López de la Franca Beltran
6883e451dc Encryption: Add Prometheus metrics (#48603) (#48888)
* Encryption: Add Prometheus metrics (#48603)

(cherry picked from commit 9826a694a8)

* Conflicts solved from commit 9826a69
2022-05-11 00:47:48 +02:00
Grot (@grafanabot)
939156bc2f Dashboard: Fix dashboard update permission check (#48746) (#48853)
* Change dash permission check for dashboards that are moved to a different folder

(cherry picked from commit 6923b4c6c6)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-05-10 14:10:59 +02:00
Joe Blubaugh
bae2055b0b Alerting: Apply Custom Headers to datasource queries. (#47860) (#48851)
Backport 53a4f39 from #47860
2022-05-10 09:54:18 +08:00
Grot (@grafanabot)
9ee1446de7 chore: update contribution docs (#46942) (#48732)
* add bus deprecation note in contribution docs

(cherry picked from commit dac8abfc2c)

Co-authored-by: Jeff Levin <jeff@levinology.com>
2022-05-09 08:32:13 -07:00
Grot (@grafanabot)
c15d34e273 Put identifier in path (#48831) (#48832)
(cherry picked from commit 99eaa0fc20)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-06 16:55:10 -05:00
Grot (@grafanabot)
37120a96d6 POST routes to PUT routes (#48828) (#48829)
(cherry picked from commit 809aa38103)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-06 14:48:51 -05:00
Grot (@grafanabot)
8917c920ae Alerting: check provenance of alert rules in current API (#48694) (#48827)
(cherry picked from commit 30d9cc81ec)

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-05-06 21:27:51 +02:00
Gilles De Mey
c9b8317352 Alerting: automatically select last expression (#48787) (#48818)
(cherry picked from commit 2d6ab03e4f)
2022-05-06 16:13:04 +02:00
Grot (@grafanabot)
10062348f5 RolePicker: Fix menu position on smaller screens (#48429) (#48809)
* RolePicker: Fix menu position on smaller screens

* RolePicker: Add comment

* Add offset for the bottom position

(cherry picked from commit 25b4aa8d86)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2022-05-06 13:17:35 +02:00
Grot (@grafanabot)
6f5d6426c3 Cloudwatch: Add support for new AWS/RDS EBS* metrics (#48798) (#48801)
Add support for the missing AWS/RDS metrics, EBSIOBalance% and
EBSByteBalance%. Change is based on the official AWS blog post[1]. Those
metrics work on for Nitro instances.

1. https://aws.amazon.com/blogs/compute/improving-application-performance-and-reducing-costs-with-amazon-ebs-optimized-instance-burst-capability/

(cherry picked from commit b6c5f29373)

Co-authored-by: Szymon Szypulski <szymon.szypulski@gmail.com>
2022-05-06 10:53:34 +02:00
Grot (@grafanabot)
bd9073a6b6 fix a bug (#48782) (#48800)
(cherry picked from commit 3c78196d0b)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-05-06 10:52:39 +02:00
Ieva
fe351b308f backport 48171 (#48775) 2022-05-06 09:35:37 +01:00
Grot (@grafanabot)
9a98dba26c Alerting: Fix notification route removal (#48774) (#48799)
* Fix notification route removal

* fix tests

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
(cherry picked from commit ee8e125134)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-05-06 09:56:45 +02:00
Grot (@grafanabot)
f76a5f1796 [v8.5.x] Alerting: Provisioning message templates (#48789)
* Alerting: Provisioning message templates (#48665)

* Generate API for writing templates

* Persist templates app logic layer

* Validate templates

* Extract logic, make set and delete methods

* Drop post route for templates

* Fix response details, wire up remainder of API

* Authorize routes

* Mirror some existing tests on new APIs

* Generate mock for prov store

* Wire up prov store mock, add tests using it

* Cover cases for both storage paths

* Add happy path tests and fix bugs if file contains no template section

* Normalize template content with define statement

* Tests for deletion

* Fix linter error

* Move provenance field to DTO

* empty commit

* ID to name

* Fix in auth too

(cherry picked from commit 0f56462fbe)

* ErrorContains -> Error then Contains

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-06 09:33:33 +02:00
Grot (@grafanabot)
c375e67bf9 Update documentation to explicitly state we should not be putting migrations behind feature flags (#48663) (#48666)
(cherry picked from commit 38fc0c68e4)

Co-authored-by: Jeff Levin <jeff@levinology.com>
2022-05-05 10:12:34 -08:00
Grot (@grafanabot)
6ec7434fde Prometheus: make parsing of Infinity variants case-insensitive (#48660) (#48785)
(cherry picked from commit 6de77283c6)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-05-05 19:54:41 +02:00
Grot (@grafanabot)
59359e512f FileUpload: associate the label with the input (#48766) (#48779)
* FileUpload: associate the label with the input

* generate a unique id and set the correct role

* add a test to prevent regressions

(cherry picked from commit 10db618204)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-05-05 18:19:51 +02:00
Grot (@grafanabot)
8c5026d4cd Tooltip: Make tooltip use secondary background color for legible links (#48748) (#48764)
(cherry picked from commit af57804513)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-05-05 15:08:31 +01:00
Grot (@grafanabot)
86e538c8c2 Alerting: Improved RBAC for Alert managers (#48344) (#48757)
* Initial support for grafana or cloud only alert managers

* Handle missing alert manager

* Refactor code, fix tests

* Fix redirect url

* Bring back the test

* Improve missing alert manager warning, add useAlertManagerSourceName tests

* Fix lint errors

* Rename alert manager hook

* Refactor alert manager label creation

* Improve warnings' messages

* Fix linter

* Fix warning condition in RuleEditor

(cherry picked from commit 65d7d466d7)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-05-05 14:10:16 +02:00
Grot (@grafanabot)
925d5f76b2 Variables: Fixes issue with null variables breaking the dropdown (#48644) (#48702) 2022-05-04 15:28:17 +01:00
Grot (@grafanabot)
ed24f18234 unhide alert rule's data sources during migraiton (#48559) (#48703)
(cherry picked from commit f85e758972)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-05-04 09:52:35 -04:00
Grot (@grafanabot)
8abf427524 Alerting: correctly show all alerts in a folder (#48684) (#48685)
(cherry picked from commit e04d8fca7b)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-05-04 12:13:09 +02:00
Grot (@grafanabot)
3b7ecd1732 TimeRange: Fixes updating time range from url and browser history (#48657) (#48687)
(cherry picked from commit b71aa912c6)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-05-04 12:07:11 +02:00
Grot (@grafanabot)
f53135b93e ReleaseNotes: Updated changelog and release notes for 8.5.2 (#48681) (#48686)
(cherry picked from commit f45dc224d9)
2022-05-04 11:51:28 +02:00
Grot (@grafanabot)
f0c2ae98e4 "Release: Updated versions in package to 8.5.2" (#48680) 2022-05-04 11:30:31 +02:00
Grot (@grafanabot)
3927fa94a6 QueryGroup: More efficient way to scroll to bottom when adding new queries (#48399) (#48457) 2022-05-04 10:13:20 +02:00
Karl Persson
52d2419667 Fix permission query for postgres (#48543) (#48568)
(cherry picked from commit 9622e7457e)
2022-05-04 09:22:37 +02:00
Grot (@grafanabot)
dd2bec5904 Alerting: skip flaky test (#48500) (#48517)
(cherry picked from commit 9e3a01a1be)

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-05-04 07:31:51 +02:00
Will Browne
7f7803ba59 [v8.5.x] Backport 48550 to v8.5.x (#48656)
* resolve conflicts

* update swagger docs
2022-05-03 20:58:02 +02:00
Grot (@grafanabot)
633d598fcd Add new DynamoDB metrics & dimensions (#48551) (#48632)
(cherry picked from commit 7f4b1b767e)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2022-05-03 18:04:09 +01:00
Gábor Farkas
a0ac6c692e loki: backend: use millisecond-timestamps (#48630) 2022-05-03 17:30:15 +02:00
Grot (@grafanabot)
be96c872d1 AzureMonitor: Updates allowed namespaces (#48468) (#48634)
(cherry picked from commit 3ee99821bc)

Co-authored-by: jcolladokuri <jcolladokuri@microsoft.com>
2022-05-03 15:39:09 +02:00
Christopher Moyer
ecdd52dbb1 docs: backport alias fixes (#48464)
* backport alias fixes

* Delete about-rbac.md

* Delete assign-rbac-roles.md

* Delete plan-rbac-rollout-strategy.md

* Delete manage-rbac-roles.md

* revert to 8.5
2022-05-03 08:21:09 -05:00
Andreas Christou
5230178118 Backport 48077 to v8.5.x (#48620)
* AzureMonitor: Add support for not equals and startsWith operators when creating Azure Metrics dimension filters. (#48077)

* Allow dimension operator selection

- Add dimension operators and function to update the operator in the query
- Add logic to ensure the same dimension cannot be selected multiple times (Azure restriction)
- Add selection component

* Update backend logic to default operation and filter to eq '*'

- This must be done as the ne and sw operators do not work with the wildcard filter

* Add tests on dimension operators

* Correct placement of 'and' when building query

* Add comment and simplify filtering logic

* Allow multiSelect for eq and ne operators

- Pass PanelData to DimensionFields component
- Add logic to retrieve labels from PanelData
- Add MultiSelect component for relevant operators
- Update frontend types to allow filter to be an array of strings
- Update backend types to allow filter to be an array of strings
- Update filter string building

* Improve setting of labels

* Update go tests

* Update frontend tests

- Add panelData mock (to be expanded later)
- Update null check in DimensionFields

* Allow custom value and set default

* Add frontend test and fix lint issues

* Improved handling of options for sw operator

* Remove changes related to multiselect

* Add check on refId to ensure dimension labels are correct for query

* Extract custom hook for setting dimension labels

* Add documentation around Azure Monitor metrics dimensions

* Update MetricQueryEditor tests

- Add missing data prop

* Correctly set field values

* Add additional expect for onQueryChange

* Correctly set operators

- Simplify onFilterInputChange

* Ensure no duplicate filters appear

* Ensure that filters are displayed correctly for saved queries

* Update dimension filter test

* Include additional test around changing dimension labels

(cherry picked from commit d7c16e06d2)

# Conflicts:
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/MetricsQueryEditor/MetricsQueryEditor.test.tsx
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/MetricsQueryEditor.test.tsx
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/NewMetricsQueryEditor/MetricsQueryEditor.tsx
#	public/app/plugins/datasource/grafana-azure-monitor-datasource/components/QueryEditor/QueryEditor.tsx

* Update test for older testing-library version
2022-05-03 13:59:44 +01:00
Grot (@grafanabot)
eb60689141 Elasticsearch: Add deprecation notice for < 7.10 versions (#48506) (#48591)
* Elasticsearch: Add deprecation notice for old versions

* Add option to remove notice

* Remove deprecation from editor

* Update

* Update public/app/plugins/datasource/elasticsearch/configuration/ConfigEditor.tsx

* Simplify

* Update documentation

* Update

* Update docs/sources/datasources/elasticsearch.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit da1d34e83d)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2022-05-03 08:05:44 +02:00
achatterjee-grafana
d30443342d add alias to fix 404 error (#48599) (#48601) 2022-05-02 16:37:00 -04:00
Grot (@grafanabot)
d49243bc55 Variables: allow Regex tooltip links to be clickable (#48560) (#48597)
Fixes #48558

I had to rebase in some additional changes from #47907 (specifically 87de4d7)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2022-05-02 19:38:41 +00:00
Isabella Siu
be48ab689f CloudWatch: fix variable query tag migration (#48587) 2022-05-02 14:44:25 -04:00
Grot (@grafanabot)
d466fcac1c Graphite Datasource: add responseType: 'text' to http options to return full list of functions (#47663) (#48594)
* add response type text to graphite datasource http options to return full list of functions

* add comment for adding response type text to call to  graphite /functions endpoint

* Add tests for invalid and valid JSON mocking backendSrv fromFetch

* remove unnecessary code from tests

* remove extra logic for graphite /functions endpoint returning {} #46681

* add graphite functions list logic back in to see why alert test broke

* fix conflict message

* fix conflicts

* fix issues with rebase, add responseType text back in, remove extra graphite functions list logic checks

* add email for license/cla check

(cherry picked from commit 4867a6b15f)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2022-05-02 13:19:47 -04:00
Grot (@grafanabot)
6e8ef91c03 A11y: Fix remaining focus issues with Switch (#48376) (#48584)
* refactor: replace uses of checked prop for <Switch> with value prop

* fix: remove spaces from ids

The ID format is stated as follows([source][1]):

> ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]),
hyphens ("-"), underscores ("_"), colons (":"), and periods (".").

Since `QueryHeaderSwitch` is used in two places I created a new variable that replaces spaces with a dash in the label.

[1]: https://www.w3.org/TR/html401/types.html#type-name

* fix: allow Switch in AlertingSettings to be focused by keyboard

* fix: allow Switch in PromSettings to be focused by keyboard

Fixes #46472

Co-authored-by: Elfo404 <me@giordanoricci.com>
(cherry picked from commit c57924e332)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2022-05-02 16:04:02 +02:00
Grot (@grafanabot)
3b40f18af1 Alerting: add safeguard for migrations that might cause dataloss (#48526) (#48570)
* Alerting: add safeguard for migrations that might cause dataloss

* add test for panic

* add documentation

(cherry picked from commit 0a87ef06af)

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-05-02 11:12:39 +02:00
Grot (@grafanabot)
ae17f58a37 Explore: Fix legend toggling (#47823) (#48441)
(cherry picked from commit f0f3134cb1)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2022-05-02 09:13:05 +02:00
Grot (@grafanabot)
66dfe9386a Chore: do not run husky hooks on backend-only changes (#48439) (#48527)
(cherry picked from commit e9a2a06651)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-29 22:53:41 +02:00
Grot (@grafanabot)
f790be606d Cloudwatch: Update variable query docs (#48307) (#48466)
* Cloudwatch: Update variable query docs

* andres comments

* Apply suggestions from code review

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
(cherry picked from commit ce8becdfe2)

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2022-04-29 16:04:39 -04:00
Grot (@grafanabot)
6fed38226d Alerting: Fix test intermittency caused by port conflicts (#48552) (#48556)
* Get golang to find an open port for us

* Update pkg/tests/api/alerting/api_notification_channel_test.go

Co-authored-by: gotjosh <josue.abreu@gmail.com>

* Fix merge

Co-authored-by: gotjosh <josue.abreu@gmail.com>
(cherry picked from commit a96510d03c)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-29 13:17:37 -05:00
Grot (@grafanabot)
0af09cd081 Service accounts: doc fixes (#48518) (#48539)
* some doc fixes

* Update docs/sources/administration/service-accounts/add-service-account-token.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/add-service-account-token.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* Update create-service-account.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit d828dc0904)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-29 15:07:50 +01:00
Grot (@grafanabot)
92c08f0fb3 Plugins: Ensure catching all appropriate 4xx api/ds/query scenarios (#47565) (#48514)
* catch ds 404s

* catch plugin errs

* go step back

(cherry picked from commit c8a71a2f91)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2022-04-29 12:19:46 +02:00
Grot (@grafanabot)
eb6f9f1e23 Prometheus: Fix disappearing multi values in metric label values (#48127) (#48487)
(cherry picked from commit bd9cec8827)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2022-04-29 11:12:19 +02:00
Grot (@grafanabot)
5e6354d62b Docs: Update axis placement docs (#48163) (#48430)
* Docs: Update axis placement docs

* Update docs/sources/visualizations/bar-chart.md

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

* Update docs/sources/visualizations/time-series/change-axis-display.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 f1082afd1b)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-04-29 01:28:01 -07:00
Grot (@grafanabot)
9ddf010074 Making FileUpload component accessible via keyboard (#47497) (#48482)
(cherry picked from commit 17eca4505c)

Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
2022-04-29 10:06:54 +02:00
Grot (@grafanabot)
d2d2929e8d AzureAd Oauth: Fix strictMode to reject users without an assigned role (#48474) (#48479)
* AzureAd Oauth: Fix strictMode to reject users without an assigned role

Signed-off-by: kyschouv <kyschouv@microsoft.com>

* AzureAd OAuth: Add test for strictMode auth when no role claims are returned

Signed-off-by: kyschouv <kyschouv@microsoft.com>
(cherry picked from commit 7b224adf9f)

Co-authored-by: Kyle Schouviller <kyschouv@microsoft.com>
2022-04-29 08:29:39 +02:00
Jean-Philippe Quéméner
65e55b70a9 Alerting: indicate whether an alertrule is provisioned (#48458) (#48471)
(cherry picked from commit 9e21e4d1c1)
2022-04-29 00:51:41 +02:00
Grot (@grafanabot)
d037b11e47 [v8.5.x] Alerting: Add provisioning GET routes for message templates (#48459)
* Alerting: Add provisioning GET routes for message templates (#48367)

* Template service

* Add GET routes and implement them

* Generate mock for persist layer

* Unit tests for reading templates

* Set up composition root and get integration tests working

* Fix prealloc issue

* Extract setup boilerplate

* Update AuthorizationTest

* Rebase and resolve

* Fix linter error

(cherry picked from commit 735822e48a)

* Avoid latest require features

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-28 14:33:37 -05:00
Grot (@grafanabot)
e8ff3762c6 ReleaseNotes: Updated changelog and release notes for 8.5.1 (#48425) (#48427)
(cherry picked from commit 9fcbfe2c1c)
2022-04-28 15:05:10 +02:00
Grot (@grafanabot)
002eb3f79f "Release: Updated versions in package to 8.5.1" (#48423) 2022-04-28 14:44:12 +02:00
Dimitris Sotirakis
50bf499742 Reorder dependencies for npm release steps (#48403) (#48419)
(cherry picked from commit 67752ad88c)
2022-04-28 14:24:31 +02:00
Dimitris Sotirakis
e654d485f1 CI: Split publish-packages pipeline (#48414) (#48417)
* Split publish packages pipeline

* Small refactoring

(cherry picked from commit a7a5476ac2)
2022-04-28 14:09:29 +02:00
Christopher Moyer
240f5235bc alias update merge (#48379) 2022-04-27 17:03:34 -05:00
achatterjee-grafana
75195cb09e removed file extension from alias (#48375)
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2022-04-27 16:43:51 -04:00
Grot (@grafanabot)
098871e3d8 Extract Route validation from serialization methods so it can be re-used (#47649) (#48374)
* Extract validation and reject invalid policies

* Validation in dedicated file

* Tests for validation

* Extract root route validation

* Update call and drop TODO

* empty commit to kick actions

* Normalization should be idempotent

* Cleaner representation of validation errors, chain errors properly

* Make internal validate unexported

* Fix missed rename

* Genericize error message

* Improve method names

* Rebase, fix

* Update asserts

(cherry picked from commit 60ec10566f)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-27 22:38:39 +02:00
Grot (@grafanabot)
7d5ad1b440 Azure Monitor: Scroll on resource picker fix and general clean up (#48311) (#48368)
* Fix bug where resource picker doesn't open automatically to a previously selected resource.

(cherry picked from commit ebfb70dc12)

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
2022-04-27 16:33:32 -04:00
Grot (@grafanabot)
61b6a61721 use NaN if condition value is nil (#48370) (#48371)
(cherry picked from commit 4b417c8f3e)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-27 16:34:47 -03:00
Jean-Philippe Quéméner
b0cc736f4f Alerting: indicate whether contact point is provisioned (#48323) (#48372)
(cherry picked from commit a3256bafa7)
2022-04-27 21:19:40 +02:00
Grot (@grafanabot)
32d7819894 Docs: clarifies viewer can edit prose (#48352) (#48358)
* clarifies viewer can edit prose

* updates task title

(cherry picked from commit 9d129bde76)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2022-04-27 11:43:37 -05:00
Grot (@grafanabot)
e3bcaa3475 Make clear that the two example templates must be used together (#48305) (#48366)
* make clear that the two templates work in conjunction

* PR review changes

* Update docs/sources/alerting/unified-alerting/message-templating/_index.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* Update docs/sources/alerting/unified-alerting/message-templating/_index.md

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* make numbered steps

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit 9237729c19)

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2022-04-27 11:54:32 -04:00
Grot (@grafanabot)
95c8a9f207 TimeSeries: properly stack series with missing datapoints (#48321) (#48360)
(cherry picked from commit 647f749652)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-27 16:57:38 +02:00
Grot (@grafanabot)
22d94d92ae Unified Alerting: Validate PostableSilence API. (#46892) (#48318)
Invalid PostableSilences could be passed to the Alerting API - if they
are passed all the way down into the alertmanager data layer, they can
cause a panic. This change adds validation to avoid a panic in the
alertmanager.

(cherry picked from commit 103087a1a5)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-04-27 15:00:44 +01:00
Grot (@grafanabot)
be8419b384 Notifications: Hide display of trace ID behind feature flag (#48057) (#48273)
* Notifications: Hide display of trace ID behind feature flag

(cherry picked from commit 3b4d237ade)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-27 14:45:37 +01:00
Grot (@grafanabot)
23062ddab8 Explore Split Logs - use unique IDs and save state vals to unique place (#48300) (#48345)
* Explore Split Logs - use unique IDs and save state vals to unique place

* Remove exploreID from store

(cherry picked from commit a320e942a6)

Co-authored-by: Kristina <kristina.durivage@grafana.com>
2022-04-27 15:01:07 +02:00
Grot (@grafanabot)
012b1bd41a Plugins Catalog: Fix styling of hyperlinks (#48196) (#48341)
Adds some styling (default hyperlink color and underline on hover) to
plugin header and body hyperlinks.

Fixes #48078

(cherry picked from commit 199cacc7b6)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2022-04-27 14:52:14 +02:00
Grot (@grafanabot)
35f60c9aa6 fixes invalid no data alerts in influx datasource (#48295) (#48316)
(cherry picked from commit 7798b08b1e)

Co-authored-by: Sriram <yesoreyeram@gmail.com>
2022-04-27 10:58:05 +01:00
Matthew Jacobson
771ab80b4b Alerting: Create fewer contact points on migration (#47291) (#48301)
* Alerting: Create fewer contact points on migration

Previously a new contact point was created for every unique combination
of channels attached to any legacy alert. This was very hard to maintain,
requiring modifications in every generated contact point.

This change deduplicates the generated contact points to a more
reasonable state. There should now only be one contact point per legacy
channel, and we attached multiple contact points to a route by nesting
them. The sole exception to this is if there were multiple default
legacy channels, in which case we create a redundant contact point
containing all of them used only in the root policy. This allows for a
much simpler notification policy structure.

Co-authored-by: gotjosh <josue.abreu@gmail.com>
(cherry picked from commit 0301d956da)
2022-04-26 14:07:07 -05:00
Grot (@grafanabot)
7e4dbca2fa Service Graph: Display alert if no metrics found (#48214) (#48298)
(cherry picked from commit 0da50294fe)

Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
2022-04-26 20:00:55 +02:00
Grot (@grafanabot)
1473dd1365 Drop ProvenanceOrgAdapter and build into store API instead (#48137) (#48289)
(cherry picked from commit 078a578803)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-26 11:15:38 -05:00
Isabella Siu
8f43240e2c Cloudwatch: fix template variables in variable queries (#48140) (#48203)
(cherry picked from commit 801a2a240a)
2022-04-26 11:35:40 -04:00
Grot (@grafanabot)
b09ce8478e Indicate whether routes are provisioned when GETting Alertmanager configuration (#47857) (#48286)
* Test composition simplification from last PR

* Policies use proper API model everywhere

* Expose policy provenance in API, miss some dep injection

* Complete injection

* fix args

* Tests for provenance value

* Extract test helpers so tests are very readable

* Single source adapter struct that was copied in 3 places

* Drop redundant test

* Resolve merge conflicts on changelog

(cherry picked from commit 8310789ef1)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-26 10:28:10 -05:00
Grot (@grafanabot)
c67e1d37d3 [v8.5.x] Alerting: Refactor GET/POST alerting config routes to be more extensible (#48280)
* Alerting: Refactor GET/POST alerting config routes to be more extensible (#47229)

* Refactor GET am config to be extensible

* Extract post config route

* Fix tests

* Remove temporary duplication

* Fix broken test due to layer shift

* Fix duplicated error message

* Properly return 400 on config rejection

* Revert weird half method extraction

* Move things to notifier package and avoid redundant interface

* Simplify documentation

* Split encryption service and depend on minimal abstractions

* Properly initialize things all the way up to the composition root

* Encryption -> Crypto

* Address misc feedback

* Missing docstring

* Few more simple polish improvements

* Unify on MultiOrgAlertmanager. Discover bug in existing test

* Fix rebase conflicts

* Misc feedback, renames, docs

* Access crypto hanging off MultiOrgAlertmanager rather than having a separate API to initialize

(cherry picked from commit 758364e78b)

* Empty commit to kick PR build

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-26 10:13:18 -05:00
Connor Lindsey
0b52d0d7c3 NodeGraph: Detect dataframes more accurately based on fields (#47213) (#48276)
* NodeGraph: Detect dataframes more accurately based on fields

* Make get fields case insensitive

* Update node graph docs

(cherry picked from commit 939a778111)
2022-04-26 08:57:23 -06:00
Grot (@grafanabot)
de322a6010 Alerting: Fix folder permissions (#48189) (#48277)
(cherry picked from commit 5f594addbf)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-04-26 16:54:24 +02:00
Grot (@grafanabot)
22a78cb1f5 Alerting: use a single move operation for alert rules (#48125) (#48279)
(cherry picked from commit 9b95d77be9)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-26 16:52:57 +02:00
Grot (@grafanabot)
8528e17f7e Tracing: Add string unit to trace search results to prevent Infinity bug (#48206) (#48270)
(cherry picked from commit 4e6c3be7ab)

Co-authored-by: Connor Lindsey <cblindsey3@gmail.com>
2022-04-26 07:36:14 -06:00
Grot (@grafanabot)
a5fd91e492 Table: Fix filter crashes table (#48258) (#48261)
(cherry picked from commit 9df26c7b7c)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2022-04-26 14:04:30 +02:00
kay delaney
b07c7797f3 Dashboard: Refactor panel cleanup (#47323) (#48134)
(cherry picked from commit f10047b708)
2022-04-26 12:44:39 +01:00
Grot (@grafanabot)
7ea5d255c1 TimeSeries: use positive stacks for 0-valued series (#48197) (#48210)
(cherry picked from commit 0ca32f0c61)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-26 13:10:10 +02:00
Grot (@grafanabot)
0aafd4baee CI: Rename main pipelines (#48245) (#48251)
* Rename main pipelines

* Rename dependencies

(cherry picked from commit 430b9ae5cb)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-26 12:56:42 +02:00
Will Browne
fd8af0df29 set base branch to 8.5 release branch (#48241) 2022-04-26 10:40:53 +02:00
Grot (@grafanabot)
bdcfbce889 CloudWatch: prevent log groups from being removed on query change. (#47994) (#48215)
* CloudWatch: prevent log groups from being removed on query change.

Previously when a query was changed the existing log groups for that query were "dropped". The fix is to combine the
new query with the existing query object in memory to preserve the log groups.

fixes #33626

* CloudWatch: fix typos in runWithRetry documentation

* chore: fix eslint issue

(cherry picked from commit 6c0a5b121e)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2022-04-26 09:53:39 +02:00
Grot (@grafanabot)
ec0ccc6b30 TimeSeries: update frame.length when syncing bar widths (#48223) (#48236)
(cherry picked from commit fe7b594bbd)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-26 07:15:56 +02:00
Grot (@grafanabot)
7bf41c7e39 Remove redundant queries in GetAlertRules and GetOrgAlertRules and replace with ListAlertRules (#48108) (#48173)
(cherry picked from commit c5547123bc)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2022-04-26 11:11:19 +08:00
achatterjee-grafana
2539261b57 replaced next with latest (#48198) 2022-04-25 11:16:33 -04:00
Grot (@grafanabot)
88cb70b1cb fix argument ordering (#48124) (#48191)
(cherry picked from commit ea25f7e1ca)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-25 15:43:13 +02:00
Grot (@grafanabot)
899ba5e7da Usage stats: Detect Prometheus flavors (#47942) (#48187)
* Naïve Prometheus flavor detector

* Add concurrency and memoization

* Remove concurrency

* Fix tests

* close response body

* Add tests

(cherry picked from commit d76e5d7c6a)

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2022-04-25 15:27:35 +02:00
Grot (@grafanabot)
1db7ca2056 AzureMonitor: fix the encoding of the metrics query deep link to Azure Portal (#48139) (#48186)
(cherry picked from commit 9829195829)

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
2022-04-25 15:12:17 +02:00
Grot (@grafanabot)
e6b9f65c5c UsageStats: Move stats collection to separate service (#47381) (#47505)
* Remove specific stats from usage stats service

* Create statscollector service

* refactor

* Update and move tests

Mostly equivalent tests to before, but they've been divided over the two
services and removed the behavior driven legacy from GoConvey to
reduce the complexity of the tests.

* Collect featuremgmr metrics (copied over from #47407)

I removed the metrics registration from the feature manager in the merge
and re-add them in this commit. Separated to make things easier to
review.

(cherry picked from commit 3df625e9f4)

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2022-04-25 14:45:34 +02:00
Grot (@grafanabot)
67362d8e25 Chore: Fix e2e selector (#48168) (#48178)
(cherry picked from commit c1c94f478a)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-25 13:39:54 +02:00
Grot (@grafanabot)
525fa7e9e5 AzureMonitor: Remove workaround in Logs editor (#48104) (#48172)
(cherry picked from commit 7cfab77650)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-25 12:59:43 +02:00
Grot (@grafanabot)
a3cbc6a272 Access control: refactor RBAC checks (#48107) (#48164)
* refactor RBAC checks

* fix a test

* another test fix

* and another

(cherry picked from commit 68ca5b2e05)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-25 10:59:26 +02:00
Grot (@grafanabot)
5328f55093 Alerting: Add GetRuleGroups to RuleStore (#48036) (#48075)
This commit adds a new method GetRuleGroups to RuleStore which returns the set of rule groups across all organizations.

(cherry picked from commit d66fc6ed1a)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2022-04-25 13:54:27 +08:00
Grot (@grafanabot)
42dc9c1a57 TimeSeries: sync minimum bar width across all bar series (#48030) (#48147)
(cherry picked from commit 1c977281c8)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-23 02:50:30 +02:00
Grot (@grafanabot)
e37026a059 Update what's new with correct image link (#48133) (#48135)
(cherry picked from commit f915767fdc)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2022-04-22 13:11:33 -04:00
Josh Hunt
bf272ad57d Backport 44959 ESlint import order to v8.5.x (#48126)
* Add and configure eslint-plugin-import

* Fix the lint:ts npm command

* Autofix + prettier bulk files

* Manually fix files

* @ts-ignore

* Move jquery code in jest-setup to external file to safely reorder imports

* betterer

* Resolve issue caused by circular dependencies within Prometheus

* ignore iconBundle.ts
2022-04-22 16:19:02 +01:00
Grot (@grafanabot)
9e0e3bec76 Syntax fix in whats-new-in-v8-5.md (#48111) (#48119)
(cherry picked from commit 147a1600e7)

Co-authored-by: Alexandre de Verteuil <alexandre@grafana.com>
2022-04-22 09:32:43 -04:00
Grot (@grafanabot)
06ea4793bc Alerting: fix alert creation interval layout bug (#48112) (#48113)
(cherry picked from commit 2713de2bd1)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-22 14:50:28 +02:00
Joao Silva
7202de467b Annotations: Fixes data source showing as a uid in annotation settings (#48105) 2022-04-22 12:43:15 +01:00
Grot (@grafanabot)
45eba672c4 Prometheus: Add report interaction for editor modes (#47940) (#48099)
* Prometheus: Add report interaction for editor modes

* Add new query

* Fix test

* Update public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryEditorSelector.tsx

* Add app to feature tracking

* Update

(cherry picked from commit 28665a869b)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2022-04-22 12:45:02 +02:00
Grot (@grafanabot)
25713a853b Explore: prevent direct access to explore if disabled via feature toggle (#47714) (#48096)
* Explore: prevent explore route to be registered if explore is disabled

* add feature toggle page

(cherry picked from commit 6899f23a22)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2022-04-22 09:48:53 +01:00
Grot (@grafanabot)
a91cb6cf6c Docs: resize images in what's news 8.5 (#48082) (#48084)
* Updated image size.

* Few more resizing. Also, added link for signup for beta testing (nav bar).

* Few minor tweaks

* Fixed a typo

(cherry picked from commit 75d528d7bd)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2022-04-21 17:20:27 -04:00
Grot (@grafanabot)
63b7692caf Cloudwatch: Update grafana-aws-sdk (#48039) (#48069)
(cherry picked from commit f50cd90301)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-21 17:32:18 +02:00
Grot (@grafanabot)
0e9b91fb13 Add yarn-install when publishing npm packages (#48061) (#48064)
(cherry picked from commit 412be1f1cf)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-21 16:49:09 +02:00
Grot (@grafanabot)
2e851e2176 ReleaseNotes: Updated changelog and release notes for 8.5.0 (#48060) (#48062)
(cherry picked from commit 3b256afb9e)
2022-04-21 16:36:29 +02:00
Grot (@grafanabot)
79e1ab4d89 "Release: Updated versions in package to 8.5.0" (#48058) 2022-04-21 16:14:16 +02:00
Grot (@grafanabot)
bf5b59c911 Docs: Clarify transformation functions reference docs (#46903) (#48056)
* Docs: Remove 'Reference' prefix from all reference topic filenames: Per issue #46818, prefixing reference topics with "Reference" can damage usability. Remove the prefix from filenames.

* Docs: Remove "Reference:" prefix from titles and ToC headings: Per issue #46818, prefixing reference topics with "Reference" can damage usability. Remove the prefix from titles and ToC headings. H1s retain the prefix to emphasize the nature of the doc without affecting the docs' discoverability.

* Docs: Move Transformation functions reference alongside Transformation docs
* Docs: Update links to reference docs in Transformation docs
* Docs: Update links to reference docs in Panels docs
* Docs: Update links to query options reference across docs
* Docs: Update links to standard field definitions reference across docs
* Docs: Update links to calculation types reference across docs
* Docs: Update links to transformation functions reference across docs
* Docs: Rename apply transformation doc filename to add transformation
* Docs: Rename apply transformation doc to add transformation
* Docs: Update links to add transformation doc across docs
* Docs: Update relrefs in Transformation functions reference

(cherry picked from commit d93bcd547e)

Co-authored-by: Garrett Guillotte <100453168+gguillotte-grafana@users.noreply.github.com>
2022-04-21 09:42:46 -04:00
Grot (@grafanabot)
23a8704b67 Text Panel: Fixes issue with hash anchor links (#47980) (#48055) 2022-04-21 14:33:56 +01:00
Grot (@grafanabot)
93b3d219a2 Hide navbar behind ready check to prevent flicker of navbar on login (#47968) (#48050)
(cherry picked from commit b727c324b8)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-21 14:23:10 +02:00
Grot (@grafanabot)
ad35db8636 Service accounts: rename feature toggle (#48037) (#48040)
* refactor: renaming service-accounts to serviceAccounts

* refactor: renaming service-accounts to serviceAccounts in docs

* tests

(cherry picked from commit 8677552dda)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2022-04-21 11:53:32 +02:00
Grot (@grafanabot)
c75be3bb3e Navigation: Fixes issue with menu closing when hovering back to the trigger (#47992) (#48038) 2022-04-21 10:35:41 +01:00
Grot (@grafanabot)
f368cac796 Prometheus: Highlight operations added in the query builder (#47961) (#48033)
* Highlight newly added operations

* Better diff for the operations change

* Changed the highlight style

(cherry picked from commit ff5aef194c)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2022-04-21 10:39:41 +02:00
Grot (@grafanabot)
a228985d97 Alerting: Add integration test for AddDashAlertMigration (#47730) (#48019)
Adds tests for: 
what circumstances should trigger alert migration from legacy alerting to unified alerting. 
the execution of the migration itself.

Co-authored-by: gotjosh <josue.abreu@gmail.com>
Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2022-04-21 13:38:31 +08:00
Grot (@grafanabot)
feaf32f04c TimeSeries: clamp max bar width to 200px (#48021) (#48024)
(cherry picked from commit 5c3be630f2)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-21 07:22:16 +02:00
Grot (@grafanabot)
447752c00d Docs: Adding What's New for the 8.5 release (#47995) (#48005)
* initial commit

* more changes

* more changes

* run prettier check

(cherry picked from commit b034bd18b5)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2022-04-20 16:20:40 -04:00
Grot (@grafanabot)
d300a27ee7 Comments: fix wrong SQL query generated if Settings are not empty (#47552) (#47999)
(cherry picked from commit ce89d7e874)

Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
2022-04-20 13:00:37 -07:00
Grot (@grafanabot)
301be18d86 Use trialExpiry for determining if a user is on trial (#47975) (#47998)
(cherry picked from commit 6c1994cb86)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2022-04-20 20:54:14 +02:00
Grot (@grafanabot)
644b23aba2 Alerting: Fix navlinks for legacy alerting (#47972) (#47984)
* split building legacy and ng alert nav links.

(cherry picked from commit c1f766a374)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-20 18:26:11 +02:00
Grot (@grafanabot)
da335ce32e Fix: Parse exemplars before parsing heatmap data (#47463) (#47469)
* parse exemplars before parsing the heatmap. Exemplars are overlayed. Not part of the main heatmap

* added tests

(cherry picked from commit 222325c7f1)

Co-authored-by: Stephanie Closson <srclosson@gmail.com>
2022-04-20 12:59:21 -03:00
Grot (@grafanabot)
7065ee20ee Alerting: Update RBAC documentation with information about alerting (#47858) (#47982)
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
(cherry picked from commit c1ec122f75)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-20 11:48:44 -04:00
Grot (@grafanabot)
5c64c3559d Transformations: Support escaped characters in key-value pair parsing (#47901) (#47973)
* Additional logic to handle quoted values

* Simple test with quoted values that include spaces

* Update test description

* Updating logic to account for nested quotes

- Adding additional test for nested quotes

* Strip out line breaks and carriage returns pre-processing

* Fix typo in test result

* Update key-value logic to avoid regexp

- Minor changes to account for null values

* Correct escaping on test

* Additional tests

- Test for null values
- Test for nested separator characters
- Update quoting

(cherry picked from commit d0b41f882e)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2022-04-20 16:37:55 +01:00
Grot (@grafanabot)
e9c13f824c Alerting: Notification URL points to alert view page instead of alert edit page (#47752) (#47960)
Before this change, notifications generated by the Grafana Alertmanager
pointed to '/alerting/:ruleID/edit'. This change instead points them to
the view path '/alerting/grafana/:ruleID/view'. The view page has a
better UX, including timeseries display. It's also where many alert
state improvements will land in the next few versions of Grafana.

Fixes #45301

Signed-off-by: Joe Blubaugh <joe.blubaugh@grafana.com>
(cherry picked from commit 3d91047e6e)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-04-20 17:32:26 +02:00
Grot (@grafanabot)
c0e157300b DashboardPage: Remember scroll position when coming back panel edit / view panel (#47639) (#47792)
* DashboardPage: Remember scroll position when coming back panel edit / view panel

* Use scollElement callback

* Fixed ts issue

(cherry picked from commit a126c07e54)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-04-20 17:25:40 +02:00
Grot (@grafanabot)
9c1c446b44 UserListAdminPage: Reset page when changing filters (#47958) (#47976)
(cherry picked from commit e19e934178)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 16:20:56 +01:00
Grot (@grafanabot)
d2feeb8455 PanelQueryRunner: use refId from results if the key value was not set in the packet (#47598) (#47647)
(cherry picked from commit f80a0d2a9b)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2022-04-20 19:14:57 +04:00
Grot (@grafanabot)
f08c5a796c Modify the Server Error scenario to return frontend errors (#47157) (#47425)
(cherry picked from commit 41642fd5f4)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-04-20 16:11:23 +01:00
Grot (@grafanabot)
690c08b80d Chore: Bump minimist to 1.2.6 (#47401) (#47681)
(cherry picked from commit b8e3c77adb)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-04-20 17:01:52 +02:00
Grot (@grafanabot)
1bd1838363 Alerting: adds variable replacement to panel filters (#47962) (#47967)
(cherry picked from commit 459c64fd44)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-20 16:58:41 +02:00
Grot (@grafanabot)
b37047eadb Chore: Try to fix flaky reverse proxy test (#47957) (#47966)
(cherry picked from commit 0afc542998)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2022-04-20 16:38:41 +02:00
Grot (@grafanabot)
9841f1d488 ReleaseNotes: Updated changelog and release notes for 8.4.7 (#47952) (#47955)
(cherry picked from commit 6eb41f9cb3)
2022-04-20 15:33:16 +02:00
Grot (@grafanabot)
7b7f7facca Folders: Fix flaky test (#47953) (#47954)
(cherry picked from commit db8d85e2f2)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 15:14:25 +02:00
Grot (@grafanabot)
52fe9ba3fe Wrap individual meta items in zIndex: 0 (#47935) (#47941)
(cherry picked from commit e8fc6637ec)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-20 14:38:51 +02:00
Grot (@grafanabot)
f7683af8b5 Prometheus: Remove running of query on raw query toggle (#47938) (#47939)
(cherry picked from commit 5c4459a723)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2022-04-20 14:37:54 +02:00
Grot (@grafanabot)
0508656182 Prometheus: Move count_values from function to aggregation (#47260) (#47645)
* Move count_values from function to aggregation

* Fix typos

* Fix loki operations

* Fix error that change the aggregation variant on blur

* Fix loki ops

(cherry picked from commit 95009995e4)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2022-04-20 14:30:57 +02:00
Grot (@grafanabot)
0a4b6dccfc Feature Highlights: update upgrade components UI (#47885) (#47948)
* Highlights: add action prop

* Highlight team sync for trial users

* Add badges for trial highlights

* Move events to UpgradeBox

* Fix undefined license settings

* Update snapshot

* Update public/app/features/datasources/state/navModel.ts

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>

* Update public/app/features/datasources/state/navModel.ts

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>

* Update public/app/features/datasources/state/navModel.ts

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>

* Update copy and event handling

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
(cherry picked from commit 9c0aa09a85)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2022-04-20 14:24:51 +02:00
Grot (@grafanabot)
f682ad8c60 Prometheus/Loki: Fixes the query type option when multiple queries present (#47846) (#47944)
(cherry picked from commit 68aac0bd90)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-04-20 14:17:38 +02:00
Grot (@grafanabot)
4ea9193696 Alerting: grafana managed group names (#47785) (#47929)
(cherry picked from commit be3f52abb1)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-20 13:12:50 +02:00
Grot (@grafanabot)
ffab9f6587 Library panels: Fix issue where query editor options wouldn't be updated (#47242) (#47421)
Closes #47241

(cherry picked from commit 0cff2d5980)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 11:19:04 +01:00
Grot (@grafanabot)
37b762fe9c Don't set autofocus on logarithmic base select (#47927) (#47933)
(cherry picked from commit 8b4b57a6c6)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-20 12:18:37 +02:00
kay delaney
45d8bbba3a Dashboards: Defer loading of plugin exports until panel is visible (#47361) (#47932)
(cherry picked from commit 8ae5dd74e6)
2022-04-20 11:18:27 +01:00
Grot (@grafanabot)
78659b6814 Explore: minor copy changes (#47922) (#47928)
* Explore: minor copy changes

* fix tests

(cherry picked from commit c1490a464a)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2022-04-20 10:57:36 +01:00
Grot (@grafanabot)
e59f21a22e Frontend: Add notification persistence behind feature flag (#47871) (#47931)
(cherry picked from commit c48d8d1d48)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 11:57:15 +02:00
Grot (@grafanabot)
f62e76b5d5 Export: Explicitly include default datasources in exported dashboard json (#47244) (#47924)
* Export: Explicitly include default datasources in exported dashboard json

(cherry picked from commit f9f4a4cbf6)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 10:48:19 +01:00
Grot (@grafanabot)
5ba2aafa88 Revert "DataLinks: Encode variable params for data link URLs (#46100)" (#47763) (#47926)
This reverts commit b47f5433d7.

(cherry picked from commit ff60f39e96)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-20 11:45:54 +02:00
Grot (@grafanabot)
b53f5675f4 check that the user has RBAC permissions to save dashboard annotation (#47882) (#47920)
(cherry picked from commit 1588cd393a)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-20 10:49:32 +02:00
Grot (@grafanabot)
5de766a202 Update API Keys UI to adjust based on users permissions (#47802) (#47921)
* Update API Keys UI to adjust based on users permissions

Since API Keys support now RBAC we need to ensure that UI
is adjusted based on the user permissions.

* Applying PR suggestions

(cherry picked from commit cbd2d09d70)

Co-authored-by: Vardan Torosyan <vardants@gmail.com>
2022-04-20 10:45:54 +02:00
Grot (@grafanabot)
8888dac836 Alerting: Fix issue with Slack contact point validation (#47559) (#47919)
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
(cherry picked from commit 39d3c8afd7)

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
2022-04-20 10:18:41 +02:00
Grot (@grafanabot)
17c51dcd32 AzureMonitor: Update kusto-monaco package (#47897) (#47916)
(cherry picked from commit 70802447a5)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-20 09:41:15 +02:00
Grot (@grafanabot)
482ca1b0f7 Chore: Update Go version (#47914) (#47915)
* Remove makefile (it's not used anymore)

* Directly download and install nodejs package

The Packages file for deb.nodesource.com/node_16.x doesn't list older
versions, so only the most recent version of nodejs is available. We
don't want to require every update to the build container to have to
update nodejs if a never version is available, so I manually download
the deb and install it with dpkg.

* Update Go version

* Update lib.star

* Generate new .drone.yml

(cherry picked from commit 24038d9985)

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2022-04-20 09:30:59 +02:00
Grot (@grafanabot)
cd66d6cdc4 TimeSeries: always try to detect & fix reverse-sorted time field (#47906) (#47910)
(cherry picked from commit aa98123e72)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-20 06:36:52 +02:00
Grot (@grafanabot)
548145691b Timeseries: add zoom to data button (#47862) (#47908)
(cherry picked from commit f4e285b8b4)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2022-04-19 18:27:13 -07:00
Grot (@grafanabot)
aa5bc10bcf Instrumentation: Proxy status code correction and various improvements (#47473) (#47903)
For a proxied request, e.g. Grafana's datasource or plugin proxy:
If the request is cancelled, e.g. from the browser, the HTTP status code is
now 499 Client closed request instead of 502 Bad gateway.
If the request times out, e.g. takes longer time than allowed, the HTTP status
code is now 504 Gateway timeout instead of 502 Bad gateway.
This also means that request metrics and logs will get their status codes
adjusted according to above.

Fixes #46337
Fixes #46338

(cherry picked from commit 4bc582570e)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2022-04-19 20:41:57 +02:00
Grot (@grafanabot)
39cab9c066 Alerting: FGAC bug bash fixes (#47873) (#47900)
* Improve new alert and new silence buttons permission handling

* Prevent loading alert rules when no sufficient permissions provided

* Improve add and edit rule permissions

* Add new rule CTA button for non-editors

* Update mock

* Fix imports

(cherry picked from commit 785145c045)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-04-19 18:55:25 +02:00
Grot (@grafanabot)
bc9621699b Alerting: Fix nav-links for RBAC and other (#47798) (#47895)
(cherry picked from commit 0c31399e34)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-19 12:12:55 -04:00
Grot (@grafanabot)
2dbe8dfcbc AzureMonitor: Fix Microsoft.ClassicCompute/domainNames namespace (#47877) (#47888)
(cherry picked from commit 2d8d9bc137)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-19 16:36:57 +02:00
Grot (@grafanabot)
73a0da54e4 Alerting: add confirmation modal for deleting notification policies (#47819) (#47886)
(cherry picked from commit 69eb6efd6e)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-19 16:07:05 +02:00
Grot (@grafanabot)
c724639f56 Alerting: Display alert instances instead of alert rules when creating silence (#47396) (#47881)
* modify matchers util for instances

* filter alerts

* change label to include instances

* re add empty case

(cherry picked from commit 4570615afc)

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
2022-04-19 15:28:05 +02:00
Grot (@grafanabot)
1bffc1f4ad prevent horizontal scrollbar on firefox during expand animation (#47758) (#47869)
(cherry picked from commit bb5f77703c)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-19 11:49:03 +02:00
Grot (@grafanabot)
7f4a77fb75 Prometheus: Add documentation for the query builder (#47324) (#47868)
* Update documentation for the query builder

* Review feedback

* Update docs and add pictures

(cherry picked from commit 378ce4f685)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2022-04-19 11:31:26 +02:00
Grot (@grafanabot)
8bb7c88e07 Alerting: Sort StateHistoryItem after fetch instead of on render. (#47842) (#47864)
PR #47674 attempted to sort a read-only managed async array. This change
moves the sort logic to the fetch code so sort happens once on fetch, to
a mutable array, rather than trying on each render for an immutable
array.

Signed-off-by: Joe Blubaugh <joe.blubaugh@grafana.com>
(cherry picked from commit 7d5cb170c6)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-04-19 16:22:35 +08:00
Grot (@grafanabot)
190766fed1 Create fixed roles for reading API Keys and service accounts and fix listing of service account tokens (#47767) (#47777)
* Create fixed roles for reading API Keys and service accounts

* Handle PR comments and fix the listing of token

(cherry picked from commit 782ec05d8c)

Co-authored-by: Vardan Torosyan <vardants@gmail.com>
2022-04-18 20:34:12 +02:00
Grot (@grafanabot)
8dd16fb871 CloudWatch: Run query on blur in logs query field (#47454) (#47855)
* Cloudwatch: add test to ensure RunQuery is fired onBlur of LogQuery

Also remove the `onBlur` prop for the `QueryField` in `LogsQueryField` since `QueryField` is configured to re-run
queries `onBlur` by default.

Co-authored-by: Sarah Zinger <sarah.zinger@grafana.com>
Co-authored-by: Isabella Siu <isabella.siu@grafana.com>
Co-authored-by: Adam Simpson <adam@adamsimpson.net>
(cherry picked from commit 4f26129aa4)

Co-authored-by: Shirley <4163034+fridgepoet@users.noreply.github.com>
2022-04-18 20:22:10 +02:00
Grot (@grafanabot)
2250c245ef Update grabpl (#47824) (#47825)
(cherry picked from commit 4510519941)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-15 16:12:44 +02:00
Grot (@grafanabot)
ee066425ee Docs: Addition of more prominent link to docker conf (#46504) (#47822)
* Docs: Addition of more prominent link to docker conf

Saw a comment on Reddit indicating a lack of information - docs were available, just a little hard to find.

Added a note pointing our community to where they might find docker image configuration help.

* Update docs/sources/installation/docker.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
(cherry picked from commit 67ff5f5815)

Co-authored-by: Petros Kolyvas <code@petros.io>
2022-04-15 09:26:18 -04:00
Grot (@grafanabot)
c8987a040c Navigation: Add shortcut to add new alert rule to alerting section behind feature toggle (#47713) (#47814)
* Add new alert rule to alerting section

* Check access control for ability to create

(cherry picked from commit 7905957ee8)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-15 11:43:55 +02:00
Grot (@grafanabot)
c8aeb049ab CI: Remove unused --github-token flag (#47773) (#47809)
* Remove github token flag

* Minor cleanup

* Update grabpl

(cherry picked from commit 508cc58a63)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-15 11:53:26 +03:00
Grot (@grafanabot)
c2a6188334 Service accounts: RBAC the service account UI (#47788) (#47804)
* WIP

* fix: bug for saving name did not remove edit

* refactor: better error msg

* Display the column Roles even when user can't see the role picker

* Remove spaces when building the search query request

* Disable Edit button and fix token addition and deletion

* Fix the error message text

Co-authored-by: Vardan Torosyan <vardants@gmail.com>
(cherry picked from commit b43e9b50b4)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2022-04-15 00:21:51 +02:00
Grot (@grafanabot)
00e572dc3b Table panel: Fix horizontal scrolling when pagination is enabled (#47776) (#47787) 2022-04-14 19:56:27 +02:00
Grot (@grafanabot)
c8327d04a8 Tracing: Use common traceID context value for opentracing and opentelemetry (#46411) (#47786)
* use common traceID context value for opentracing and opentelemetry

* support sampled trace IDs as well

* inject traceID into NormalResponse on errors

* Finally the test passed

* fix the test

* fix linter

* change the function parameter

Co-authored-by: Ying WANG <ying.wang@grafana.com>
(cherry picked from commit 41012af997)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-14 18:08:51 +02:00
Grot (@grafanabot)
a0ff246fcb Alerting: Add FGAC to alerts tab in panel editor (#47732) (#47771)
* add FGAC for alert panel tab

* add test for panel tabs

* Refactor condition

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
(cherry picked from commit c63086822d)

Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
2022-04-14 15:59:05 +02:00
Grot (@grafanabot)
05fb17c3f3 Prometheus: Query builder UX tweaks and feedback link (#47655) (#47778)
* Prometheus: Query builder UX tweaks and feedback link

* Remove .

* Fixed link

* added option to hide feedback links

* feedback link setting name change

* move config check

* fixed ts issue

(cherry picked from commit 057ff5bcf5)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-04-14 15:40:57 +02:00
Grot (@grafanabot)
2a34264cdd Docs: remove outdated section from Explore docs (#47768) (#47775)
(cherry picked from commit f79e0c68cc)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2022-04-14 09:04:53 -04:00
Grot (@grafanabot)
91f7cd2307 Alerting: unwrap upsert into insert and update function (#47731) (#47772)
* Alerting: unwrap upsert into insert and update function

* add changelog entry

* remove changelog entry

* rename upsertrule to updaterule

* use directly alertrule model for inserts

* add test for updating a rule with a conflicting name

(cherry picked from commit 060ccacbf9)

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-04-14 14:37:54 +02:00
Dimitris Sotirakis
ff6a7b0a7f CI: Remove initialize step (#47622) (#47770)
* Remove initialize step from pr.star

* Remove initialize step from main.star

* Remove initialize step from release.star

* Reorder dependencies

* Re-add identify runner step

* Add enterprise steps

* Remove is_downstream variable from starlark logic (#47715)

* Make init steps depend on init-enterprise for enterprise pipelines

* Exclude shellcheck from enterprise pipelines

* Add init steps to enterprise integration tests pipeline

* Add dependency for windows enterprise step

* Update grabpl version

(cherry picked from commit 90892050d0)
2022-04-14 15:36:16 +03:00
Grot (@grafanabot)
5c41d84f88 Access control: expose SA frontend to users with the right permissions (#47727) (#47766)
* expose frontend to users with permissions

* cover the ui endpoints

* fix permissions

(cherry picked from commit e50bd5cac8)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-14 14:13:30 +02:00
Grot (@grafanabot)
37e5b0fbc7 Alerting: Remove mis-behaving fake and fix masked test failure in AM config API (#47747) (#47751)
* Remove misbehaving fake

* Fix bug and inject logger

(cherry picked from commit c266a4ac81)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-14 02:49:37 +02:00
Yuriy Tseretyan
0e8ba02479 Alerting: Support OK option for Error state (#47670) (#47741)
* support OK state for Error
* add CHANGELOG to ngalert package
2022-04-13 22:39:26 +02:00
Grot (@grafanabot)
21404f4169 Alerting: Provisioning API - Contact points (#47197) (#47743)
(cherry picked from commit 388ecb4037)

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2022-04-13 22:28:20 +02:00
Grot (@grafanabot)
b8039a80b7 Live: collect more usage stats – enabled, ha enabled, num nodes, channels, subs (#47378) (#47738)
(cherry picked from commit e00db6a826)

Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
2022-04-13 13:07:19 -07:00
Grot (@grafanabot)
e8e03d7b1f Alerting: Add check for datasource permission in alert rule read API (#47087) (#47595)
* add check for access to rule's data source in GET APIs

* use more general method GetAlertRules instead of GetNamespaceAlertRules.
* remove unused GetNamespaceAlertRules.

Tests:
* create a method to generate permissions for rules
* extract method to create RuleSrv
* add tests for RouteGetNamespaceRulesConfig

(cherry picked from commit af9353caec)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-13 15:54:24 -04:00
Grot (@grafanabot)
f01f1073b8 Chore: Remove bus.Bus field (#47695) (#47704)
* Chore: Remove bus.Bus field

* fix integration test

(cherry picked from commit e86b6662a1)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-13 19:11:20 +02:00
Grot (@grafanabot)
5332a2db05 fix: bug where disabled didnt disable the use of service account (#47688) (#47725)
(cherry picked from commit 673a2ab49e)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2022-04-13 18:47:08 +02:00
Grot (@grafanabot)
67d42fc51c Access control: service account role check (#47710) (#47724)
* forbid setting role higher than user's role

* change response code

* can assign API key permissions to non-admin users

* add: assign viewer role directly upon creation

* refactor: add AddSATcommand infavor of AddAPIkey

* refactor: frontend fixes for ServiceAccountToken

Co-authored-by: eleijonmarck <eric.leijonmarck@gmail.com>
(cherry picked from commit a245531f0c)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-13 17:27:23 +01:00
Grot (@grafanabot)
a8bfaafeb5 Alerting: FGAC for alert rule view and edit page (#47441) (#47717)
* Add permission check to the find route, add query not accessible warning for the view page

* Hide grafana or mimir rule buttons depending on user's permissions

* Add grafana and cloud read rules checking on the alert rules list view

* Improve missing data source handling, refactor edit and remove permissions handling

* Add tests for rule edit permissions

* PR feedback

(cherry picked from commit a30ab51550)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-04-13 18:09:25 +02:00
Grot (@grafanabot)
7366fa2530 fix terminal format (#47718) (#47721)
(cherry picked from commit f62c261900)

Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
2022-04-13 17:57:20 +02:00
Grot (@grafanabot)
6aa95a6b86 TimeSeries & BarChart: refactor stacking (#47373) (#47720)
Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
(cherry picked from commit dfdfe3f428)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2022-04-13 17:47:04 +02:00
Grot (@grafanabot)
9534cebdc1 Chore: Bump moment to 2.29.2 (#47680) (#47699)
* chore: bump moment to 2.29.2

* chore(yarn): clean up remaining moment nested deps

(cherry picked from commit c3db3121b0)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2022-04-13 16:19:29 +02:00
Grot (@grafanabot)
e8517ecf15 AzureMonitor: Include macros and template variables as suggestions (#47689) (#47708)
(cherry picked from commit a57716f868)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-13 16:13:24 +02:00
Grot (@grafanabot)
59886859c0 Nav: Icon clickable area fills all available space (#47334) (#47706)
Closes #47255

(cherry picked from commit 38809d73c2)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2022-04-13 16:12:57 +02:00
Grot (@grafanabot)
5379941bf9 Alerting: Add permission checking to alert rules in the folders view (#47686) (#47692)
(cherry picked from commit d7516f11b3)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-04-13 15:15:04 +02:00
Grot (@grafanabot)
ba4af4a7f6 Reload permissions cache when adding a datasource (#47658) (#47685)
(cherry picked from commit 463f00b93f)

Co-authored-by: Vardan Torosyan <vardants@gmail.com>
2022-04-13 12:34:36 +02:00
Serge Zaitsev
7729b14da3 Chore: Remove bus (#47511) (#47677)
* Chore: Remove bus

* remove unused const

(cherry picked from commit 18e93c7077)
2022-04-13 11:51:21 +02:00
Dimitris Sotirakis
691e94ebe4 CI: Remove unused downstream build pipelines (#47646) (#47652)
* Remove unused downstream build pipelines

* Prettify

(cherry picked from commit 3e030d137f)
2022-04-13 09:59:38 +01:00
Grot (@grafanabot)
5721ff9689 Chore: Remove bus from contexthandler (#47458) (#47636)
* Chore: remove bus from contexthandler

* remove bus from orgredirect

(cherry picked from commit 2cf88cfec8)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-12 22:31:53 +02:00
Grot (@grafanabot)
d6b166223f Annotation FGAC checks for comments (#47468) (#47654)
* typo

* remove unwanted change

* remove unwanted change

(cherry picked from commit d0abe1bb3d)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-12 18:49:03 +02:00
Grot (@grafanabot)
c7696261fb Temporarily skip a test that is intermittently timing out and causing build failures. (#47637) (#47651)
(cherry picked from commit 7f5e8bb00f)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2022-04-12 17:03:30 +02:00
Grot (@grafanabot)
0cb55ee544 AzureMonitor: Fix Kusto editor schema (#47576) (#47650)
(cherry picked from commit 35f52aee55)

Co-authored-by: Andres Martinez Gotor <andres.mgotor@gmail.com>
2022-04-12 16:54:59 +02:00
Grot (@grafanabot)
73f5ca876f Prometheus: Fix executing query onBlur in Explore (#47561) (#47638)
(cherry picked from commit c449aadc1b)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2022-04-12 16:08:18 +02:00
Grot (@grafanabot)
09d6461ce5 Navigation: Show only + icons in overlay menu for new NavBar (#47347) (#47644)
* Nav: Show overlay icons based on allowed list

* user essentials mob! 🔱

* Navigation: clean up and use new backend prop to show plus icons and
improve visual styling

* Nav: Fix top padding

* refactor to not use showIconInNavbar in NavBarMenuItem

* remove a missed bit

* refactor icon into const

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
(cherry picked from commit 85de0d88c7)

Co-authored-by: Maria Alexandra <239999+axelavargas@users.noreply.github.com>
2022-04-12 17:04:28 +03:00
Grot (@grafanabot)
ef592f1a66 fix: postgresql ipv6 host should not be enclosed in square brackets (#47522) (#47619)
(cherry picked from commit 9024340487)

Co-authored-by: felixdoerre <felixdoerre@users.noreply.github.com>
2022-04-12 13:38:44 +01:00
Grot (@grafanabot)
31f4d88206 Chore: update latest.json (#47627) (#47629)
(cherry picked from commit 3b2ca399e2)

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
2022-04-12 14:30:02 +02:00
Grot (@grafanabot)
ee9807d631 Allow queries import when changing data source type (#47435) (#47630)
* Enable queries import when changing datasource

* Supporting empty imports

* Review applied

(cherry picked from commit 98cbecc4a5)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2022-04-12 14:29:42 +02:00
Grot (@grafanabot)
9af9cd39cd chore: remove all remaining uses of golang.org/x/net/context (#47564) (#47585)
* chore: remove all remaining uses of  golang.org/x/net/context

This PR finishes the work started in #47532, replacing all calls to that package with the stdlib context and using http.NewRequestWithContext to include the context where necessary.

Bonus: small formatting fixes to goimports in these files.

closes #44178

* tweak: use context.Background in favor of TODO for tests

(cherry picked from commit 8f6877e12a)

Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
2022-04-12 08:15:28 -04:00
Grot (@grafanabot)
cce492b246 Chore: Remove bus from alerting rule (#47508) (#47510)
* Chore: Remove bus from alerting rule

* fix alerting tests

* fix provide service

(cherry picked from commit b31c7d3654)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-12 14:05:00 +02:00
Grot (@grafanabot)
be0d1a8d57 Chore: Remove bus from dashboards provisioning (#47495) (#47507)
* Chore: Remove bus from dashboards provisioning

* fix symlink test, make it run on darwin

* remove unused mock

(cherry picked from commit ad432108e6)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-12 14:04:40 +02:00
Grot (@grafanabot)
f438ffacf6 Explore: Allow users to save Explore queries to dashboards (#47083) (#47626)
* Select: Expose AsyncSelectProps interface

* DashboardPicker: Add a generic DashboardPicker component

* Dashboard Service: improve types

* Explore: allow saving explore state in a new panel in an existing dashboard

* Handle saving provisioned dashboards error

* Improve test coverage

* simplify test setup

* Strip base path from url when redirecting to a dashboard

* Keep existing variables when saving to an existing dashboard

* group assertions in test

* SearchCard: handle undefined in meta.updated

* Change required error message

* Add to dashboard alternative

* Add to existing is working

* Add to dashboard form

* remove default add-panel when creating a dashboard from explore

* types cleanup

* remove unneeded BE change

* simplify selector

* Add explore2Dashboard feature toggle

* add tests

* Small refactor & add tests

* small DashboardPicker improvements

* use partial from lodash

* Better error handling

* improve tests & disable button when there are no queries

* rename addPanelToDashboard function

* remove localStorage item if opening tab fails

* UI touchups & tracking

* Fix tests & remove close reporting

* remove echologger debug

* fix adding a panel to an existing dashboard

* Enable explore2Dashboard by default and add docs

* Ensure each panel in dashboards has a valid ID

* force CI restart

Co-authored-by: Elfo404 <me@giordanoricci.com>
(cherry picked from commit 7181efd1cf)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2022-04-12 13:52:45 +02:00
Grot (@grafanabot)
aa412e9678 Unified Alerting: UI explains "match all" case in Notification Policies. (#47574) (#47603)
This change makes it explicit in the UI that a notification policy with no matching labels matches all alerts that it processes. There are visual changes in both the Notification Policy editor, and in the Notification Policy table where matching columns are shown.

It's valid to have a notification policy with no label matchers attached. Such a policy matches all alerts sent to it. It's a common stumbling block for users. Where are all my alerts going?

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
(cherry picked from commit 51c98b182d)

Co-authored-by: Joe Blubaugh <joe.blubaugh@grafana.com>
2022-04-12 13:10:21 +02:00
Grot (@grafanabot)
b477c7eba9 Access-control: documentation for general folder uid restrictions (#47567) (#47620)
* add caveats for general folder

* expand the list of resources covered by fgac

* Update folder.md

remove unneeded comment

(cherry picked from commit a5530d36a7)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-12 12:21:59 +02:00
Grot (@grafanabot)
fb9a67f34d ReleaseNotes: Updated changelog and release notes for 8.4.6 (#47612) (#47617)
* ReleaseNotes: Updated changelog and release notes for 8.4.6

* update changelog and release notes

Co-authored-by: Agnès Toulet <agnes.toulet@gmail.com>
(cherry picked from commit 9a0f626948)
2022-04-12 12:20:32 +02:00
Grot (@grafanabot)
556178c714 Chore: Remove bus from contexthandler (#47374) (#47616)
* Chore: Remove bus from contexthandler

* fix tests

* try different wire binding

* maybe remove a few more dispatches

* fix tests

(cherry picked from commit d153d896c5)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2022-04-12 12:05:27 +02:00
Grot (@grafanabot)
68c6e7514a Storybook: Add store-storybook command (#47557) (#47614)
* Add store-storybook command

* Update grabpl version

(cherry picked from commit cfaf058b20)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-12 11:53:48 +02:00
Grot (@grafanabot)
bd76bd0d0e Fix unmarshal of double pointer (#47586) (#47607)
* Fix unmaarshal of double pointer

* update sdk version

(cherry picked from commit 0bf889e058)

Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
2022-04-12 09:42:56 +02:00
Grot (@grafanabot)
be54ab63cb Explore/Logs: Improve and add descriptions of Explore's Escape newlines feature (#46709) (#47606)
* Explore/Logs: Clarify phrasing of newline escape fix tooltip

Rewrite the tooltip for the smart feature in PR #31352 that
replaces incorrectly escaped newlines in log lines.

-   Clarify the functionality of the feature to emphasize its
    interactivity.
-   Remove language suggesting that the feature is experimental,
    when we intended to suggest reviewing the results manually for
    correctness.

* Docs: Document escape newlines feature

Describe and provide steps for using the "Escape newlines" feature
in Explore added in PR #31352.

* Rewrite topic lead to clarify conditional behavior

* Describe reversion of replacements as a standalone task

Reverting the replacements is a separate action, so it should have
its own task. This also describes the option's transformation and
tightens the task language.

* Remove Grafana 7 version qualifier

* Clarify escape sequence detection lede on task

Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>

* Clarify "Remove escaping" state change

Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>

* Clarify confidence of tooltip content

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

Co-authored-by: Fiona Artiaga <89225282+GrafanaWriter@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit 42431e6ad4)

Co-authored-by: Garrett Guillotte <100453168+gguillotte-grafana@users.noreply.github.com>
2022-04-12 09:40:25 +02:00
Grot (@grafanabot)
abc9678589 Azure Monitor: Bug Fix for for template variables (#47478) (#47599)
(cherry picked from commit 7a8437020d)

Co-authored-by: jcolladokuri <jcolladokuri@microsoft.com>
2022-04-12 09:13:00 +02:00
Grot (@grafanabot)
fd703d9d87 Alerting: reduce database calls in prometheus-comptible rules API (#47080) (#47569)
* move validation at the beginning of method
* remove usage of GetOrgRuleGroups because it is not necessary. All information is already available in memory.
* remove unused method

(cherry picked from commit 48519f9ebb)

Co-authored-by: Yuriy Tseretyan <yuriy.tseretyan@grafana.com>
2022-04-11 13:37:40 -04:00
Grot (@grafanabot)
cb0f520a69 add feature toggle with new format (#47336) (#47581)
* add feature toggle with new format

* fix some comments ❤️

* Update pkg/infra/log/term/terminal_logger.go

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
(cherry picked from commit 03ba91e8a4)

Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
2022-04-11 19:00:34 +02:00
Grot (@grafanabot)
f5dd8de077 Navigation: wrap long items in the menu correctly (#47431) (#47577)
* start implementing wrapping behaviour

* handle more cases

* minWidth > width to preserve mobile behaviour

* Better css

(cherry picked from commit fb0f30e30b)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-11 18:43:34 +02:00
Grot (@grafanabot)
b31aaf444f Add docs for service accounts 8.5 (#46801) (#47568)
* initial doc for service accounts

* service account token calls complete

* service account tasks

* Update docs/sources/http_api/serviceaccount.md

* adding a token to the service account

* removed unused file

* refactor: review comments

* feat: add API key documentation

* fix: spelling

* Update docs/sources/administration/service-accounts/about-service-accounts.md

Co-authored-by: Jguer <joao.guerreiro@grafana.com>

* Update docs/sources/administration/service-accounts/about-service-accounts.md

Co-authored-by: Jguer <joao.guerreiro@grafana.com>

* Update docs/sources/http_api/serviceaccount.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/enable-service-accounts.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/enable-service-accounts.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/enable-service-accounts.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/enable-service-accounts.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/enable-service-accounts.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/api-keys/about-api-keys.md

* refactor: based on review

* removed the permissions for apikeys, as they are not necessary

* Apply suggestions from code review

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Update docs/sources/administration/service-accounts/create-service-account.md

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>

* update based on review

* Fix formatting of bullet points

* formatting

* refcator

Co-authored-by: Jguer <joao.guerreiro@grafana.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Vardan Torosyan <vardants@gmail.com>
(cherry picked from commit 7be8fe027f)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2022-04-11 16:51:03 +02:00
Grot (@grafanabot)
c3f6e1e224 SAML: Allow disabling of SAML signups (#47481) (#47533)
* Add new error message for signup not allowed errors

* Add documentation on new SAML signup option

* Accept documentation feedback

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* Accept documentation feedback

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>

* run prettier:write

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit 4318ffdd46)

Co-authored-by: Michael Mandrus <41969079+mmandrus@users.noreply.github.com>
2022-04-11 09:11:08 -04:00
Grot (@grafanabot)
9597cc68a7 chore: remove golang.org/x/net/context in favor of stdlib (#47532) (#47558)
This PR removes golang.org context imports under pkg/services/* and replaces them with the stdlib context.

Closes #44178

(cherry picked from commit bda3dd24e4)

Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
2022-04-11 09:08:36 -04:00
Grot (@grafanabot)
7a1e09631f Access control: SQL filtering for annotation listing (#47467) (#47555)
* pass in user to attribute scope resolver

* add SQL filter to annotation listing

* check annotation FGAC permissions before exposing them for commenting

* remove the requirement to be able to list all annotations from annotation listing endpoint

* adding tests for annotation listing

* remove changes that got moved to a different PR

* unused var

* Update pkg/services/sqlstore/annotation.go

Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>

* remove unneeded check

* remove unneeded check

* undo accidental change

* undo accidental change

* doc update

* move tests

* redo the approach for passing the user in for scope resolution

* accidental change

* cleanup

* error handling

Co-authored-by: Ezequiel Victorero <evictorero@gmail.com>
(cherry picked from commit ef4c2672b3)

Co-authored-by: Ieva <ieva.vasiljeva@grafana.com>
2022-04-11 14:29:54 +02:00
Grot (@grafanabot)
9c5e459f0b bugfix: fix proper type of setting maxConcurrentShardRequests (#47120) (#47548)
(cherry picked from commit c0104db72d)

Co-authored-by: Aleksandr Stepanov <alexandrst88@gmail.com>
2022-04-11 10:45:04 +02:00
Grot (@grafanabot)
dd2663352c Service accounts: UI polish improvements (#47461) (#47526)
* ui polishes

* change icon

(cherry picked from commit 883ce5ad30)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2022-04-08 17:35:35 +01:00
Grot (@grafanabot)
58f27b980d GrafanaUI: Change chevron directions for open/closed state (#47386) (#47529)
(cherry picked from commit e3b123c3fc)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-04-08 17:49:48 +02:00
Grot (@grafanabot)
283b93bc15 Alerting: fix collapsable toggle text regression (#47517) (#47524)
(cherry picked from commit 7e844064a4)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-08 17:25:39 +02:00
Grot (@grafanabot)
cb0093d27f fixed dashboard spelling (#47515) (#47520)
(cherry picked from commit 1a88612e82)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2022-04-08 16:23:38 +02:00
Grot (@grafanabot)
056ff9cf32 fix: don't allow editing rule types for existing rules (#47512) (#47516)
(cherry picked from commit c530100d45)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2022-04-08 15:45:42 +02:00
Grot (@grafanabot)
df94aa979c Routing: Fix links to different port from being treated as internal links (#45192) (#47498)
* Add some failing tests that trigger the bug

* start at refactor of stripBaseFromUrl

(cherry picked from commit 416da59c43)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-04-08 13:37:08 +01:00
Grot (@grafanabot)
776d2cc03e Alerting: FGAC for alert rules page (#47418) (#47503)
* Apply FGAC on the alert rules list page

* Add tests for edit, delete and silence buttons

* Unify access-control helpers

* Fix import

* Add route permissions for alert groups, unify access control helpers

* Improve buttons with data source explore permission

* Fix test

(cherry picked from commit 87383b1c8b)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2022-04-08 13:50:40 +02:00
Grot (@grafanabot)
3fa4ae500a UsageStats: track enabled features (#47407) (#47501)
* #47127: include enabled features in the usage stats reports

* #47127: convert feature names to snake cased metric names

* #47127: remove dead code

* #47127: lint fix

* #47127: convert GetUsageStats to return `map[string]interface{}`

* #47127: fix testssssssss

* #47127: fix testssssssss

(cherry picked from commit f1a1070d41)

Co-authored-by: Artur Wierzbicki <wierzbicki.artur.94@gmail.com>
2022-04-08 13:18:42 +02:00
Grot (@grafanabot)
a8ab8a570b Replace with secret (#47488) (#47489)
(cherry picked from commit ce2a9252c2)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-08 11:32:39 +03:00
Grot (@grafanabot)
99dbf0502a Config: fix buildInfo initialization (#47402) (#47456)
* Config: fix buildInfo initialization

* change default to be parseable

* apply default values for buildInfo

(cherry picked from commit 59388bf546)

Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
2022-04-08 09:20:44 +02:00
Grot (@grafanabot)
c7877e09d0 Temporarily skip intermittent test (#47471) (#47472)
(cherry picked from commit c3ad36ba72)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-04-07 13:22:21 -05:00
Grot (@grafanabot)
993ed70e34 Docs: corrects typos (#47464) (#47466)
(cherry picked from commit 883f9f718f)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2022-04-07 18:37:25 +02:00
Grot (@grafanabot)
0f27624e37 remove the parallele to avoid concurrency (#47447) (#47449)
(cherry picked from commit 29b8d5d295)

Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
2022-04-07 16:02:42 +02:00
Grot (@grafanabot)
ec1ae002ea TestData: Interpolate variables in more fields (#47158) (#47450)
* TestData: Interpolate variables in more fields

* only interpolate variables if the field is set

* Correctly type scenarioId which can be undefined

(cherry picked from commit b857f8339e)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2022-04-07 16:00:18 +02:00
Grot (@grafanabot)
5965a7e479 Update latest json (#47437) (#47440)
(cherry picked from commit 4b8a202232)

Co-authored-by: Tania <yalyna.ts@gmail.com>
2022-04-07 14:32:01 +02:00
Grot (@grafanabot)
b7b2149b76 Navigation: add aria-label to NavBarToggle (#47434) (#47439)
* add aria-label to NavBarToggle

* use open/close instead

(cherry picked from commit d95782845d)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-07 14:31:48 +02:00
Grot (@grafanabot)
b4a0436af8 ReleaseNotes: Updated changelog and release notes for 8.5.0-beta1 (#47433) (#47436)
* ReleaseNotes: Updated changelog and release notes for 8.5.0-beta1

* Update release notes

* Update changelog

Co-authored-by: Tania <yalyna.ts@gmail.com>
(cherry picked from commit af71e77e6c)
2022-04-07 13:54:33 +02:00
Grot (@grafanabot)
1a4ecfde4e "Release: Updated versions in package to 8.5.0-beta.1" (#47432) 2022-04-07 13:33:09 +02:00
Grot (@grafanabot)
52b8e4991c Build: bump gonum library version to fix #46759 (#46997) (#47419)
(cherry picked from commit 460b8e85d7)

Co-authored-by: Martin <mahe@quantentunnel.de>
2022-04-07 11:36:43 +02:00
Grot (@grafanabot)
f3a704de5f Explore: Add explore2Dashboard feature toggle (#47395) (#47420)
(cherry picked from commit ca286a238d)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2022-04-07 09:45:12 +01:00
Grot (@grafanabot)
4dcf1a8464 Make gsutil command don't fail if dir doesn't exist (#47394) (#47416)
(cherry picked from commit 0845ba1abb)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2022-04-07 09:48:33 +03:00
achatterjee-grafana
f497164472 backport changes (#47414) 2022-04-06 16:54:02 -04:00
Grot (@grafanabot)
8280aa5636 Alerting: fgac for notification policies and contact points (#46939) (#47406)
* add FGAC actions for silences table

* redirect users without permissions

* add permissions checks to routes

* add fgac to notifications and contact points

* fgac for notification policies

* fix mute timing authorization

* use consistent naming for checking grafana alertmanager

* tests for fgac in contact points and notification policies

* bump up timeout on rule editor test

* use new permissions util

* break out route evaluation into util

* Remove test timeout

* Change permissions for the alert-notifiers endpoint

* Use signed in handler for alert-notifiers when unified alerting enabled

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
(cherry picked from commit 49505b9a3b)

Co-authored-by: Nathan Rodman <nathanrodman@gmail.com>
2022-04-06 22:34:14 +02:00
Grot (@grafanabot)
50712b5782 Navigation: implement full-width mobile menu (#47383) (#47405)
* navigation: implement proper mobile menu

* Update public/app/core/components/NavBar/Next/NavBarMenu.tsx

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>

* animation feedback

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
(cherry picked from commit 04c037b2cb)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2022-04-06 18:12:24 +02:00
3252 changed files with 73956 additions and 167760 deletions

View File

@@ -8,20 +8,44 @@ exports[`no enzyme tests`] = {
"packages/grafana-ui/src/components/BarGauge/BarGauge.test.tsx:4199795290": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/ColorPicker/NamedColorsPalette.test.tsx:3311646309": [
[0, 31, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/FormField/FormField.test.tsx:3429087660": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Forms/Legacy/Input/Input.test.tsx:3129955645": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Gauge/Gauge.test.tsx:2525939157": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Graph/Graph.test.tsx:1664091255": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Graph/GraphTooltip/MultiModeGraphTooltip.test.tsx:1865444105": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/List/AbstractList.test.tsx:2972876749": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Logs/LogLabels.test.tsx:1029448019": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Logs/LogMessageAnsi.test.tsx:1630730648": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Logs/LogRowContextProvider.test.tsx:2719724375": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/QueryField/QueryField.test.tsx:375894800": [
[0, 19, 13, "RegExp match", "2409514259"]
"packages/grafana-ui/src/components/Logs/LogRows.test.tsx:3121815234": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/QueryField/QueryField.test.tsx:2976628669": [
[0, 26, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Slider/Slider.test.tsx:751112695": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/components/Typeahead/PartialHighlighter.test.tsx:1751923376": [
[0, 31, 13, "RegExp match", "2409514259"]
@@ -29,16 +53,19 @@ exports[`no enzyme tests`] = {
"packages/grafana-ui/src/components/Typeahead/Typeahead.test.tsx:972524250": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/slate-plugins/braces.test.tsx:1440546721": [
"packages/grafana-ui/src/components/Typeahead/TypeaheadInfo.test.tsx:3512289373": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/slate-plugins/braces.test.tsx:1691463920": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/slate-plugins/clear.test.tsx:1085648664": [
"packages/grafana-ui/src/slate-plugins/clear.test.tsx:3927593033": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/slate-plugins/runner.test.tsx:446043290": [
"packages/grafana-ui/src/slate-plugins/runner.test.tsx:1123710822": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"packages/grafana-ui/src/slate-plugins/suggestions.test.tsx:3654981205": [
"packages/grafana-ui/src/slate-plugins/suggestions.test.tsx:2682912140": [
[0, 18, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TracePageHeader/SpanGraph/CanvasSpanGraph.test.js:1974748555": [
@@ -62,12 +89,21 @@ exports[`no enzyme tests`] = {
"packages/jaeger-ui-components/src/TracePageHeader/TracePageHeader.test.js:3242042907": [
[14, 26, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TracePageHeader/TracePageSearchBar.test.js:1062402339": [
"packages/jaeger-ui-components/src/TracePageHeader/TracePageSearchBar.test.js:2807329716": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/ListView/index.test.js:1734982398": [
[14, 26, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/ReferencesButton.test.js:3807792910": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanBar.test.js:1478502145": [
[14, 17, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanBarRow.test.js:3826510429": [
[14, 26, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianKeyValues.test.js:2408389970": [
[14, 19, 13, "RegExp match", "2409514259"]
],
@@ -77,16 +113,22 @@ exports[`no enzyme tests`] = {
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianReferences.test.js:2429764318": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/KeyValuesTable.test.js:3813002651": [
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/AccordianText.test.js:1966455998": [
[14, 17, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/KeyValuesTable.test.js:3568627238": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.test.js:2816619357": [
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/TextList.test.js:3006381933": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetail/index.test.js:3097530078": [
[16, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanDetailRow.test.js:2623922632": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanTreeOffset.test.js:174536706": [
"packages/jaeger-ui-components/src/TraceTimelineViewer/SpanTreeOffset.test.js:1117377794": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/Ticks.test.js:743308415": [
@@ -104,12 +146,15 @@ exports[`no enzyme tests`] = {
"packages/jaeger-ui-components/src/TraceTimelineViewer/TimelineHeaderRow/TimelineViewingLayer.test.js:1423129438": [
[15, 17, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/VirtualizedTraceView.test.js:551014442": [
"packages/jaeger-ui-components/src/TraceTimelineViewer/VirtualizedTraceView.test.js:2326471104": [
[13, 26, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/TraceTimelineViewer/index.test.js:381298544": [
[14, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/common/CopyIcon.test.js:187212136": [
[15, 19, 13, "RegExp match", "2409514259"]
],
"packages/jaeger-ui-components/src/common/NewWindowIcon.test.js:1750458349": [
[14, 19, 13, "RegExp match", "2409514259"]
],
@@ -125,9 +170,12 @@ exports[`no enzyme tests`] = {
"public/app/core/components/QueryOperationRow/QueryOperationAction.test.tsx:3032694716": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/core/components/QueryOperationRow/QueryOperationRow.test.tsx:3743889097": [
"public/app/core/components/QueryOperationRow/QueryOperationRow.test.tsx:2026575657": [
[0, 26, 13, "RegExp match", "2409514259"]
],
"public/app/core/components/Select/FolderPicker.test.tsx:993468764": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/core/components/Select/MetricSelect.test.tsx:3351544014": [
[0, 19, 13, "RegExp match", "2409514259"]
],
@@ -143,6 +191,12 @@ exports[`no enzyme tests`] = {
"public/app/features/dashboard/components/DashboardRow/DashboardRow.test.tsx:1463123173": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardAsForm.test.tsx:1969004590": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/dashboard/components/SaveDashboard/forms/SaveDashboardForm.test.tsx:948029434": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/dashboard/components/ShareModal/ShareLink.test.tsx:2357087833": [
[0, 35, 13, "RegExp match", "2409514259"]
],
@@ -170,6 +224,33 @@ exports[`no enzyme tests`] = {
"public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.test.tsx:4164297658": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/LiveLogs.test.tsx:156663779": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RichHistory/RichHistory.test.tsx:193587232": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RichHistory/RichHistoryCard.test.tsx:4263002507": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RichHistory/RichHistoryQueriesTab.test.tsx:3770907760": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RichHistory/RichHistorySettings.test.tsx:4065084278": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RichHistory/RichHistoryStarredTab.test.tsx:3750328521": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/RunButton.test.tsx:4267530266": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/SecondaryActions.test.tsx:1177396128": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/explore/TimeSyncButton.test.tsx:853739820": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/features/folders/FolderSettingsPage.test.tsx:1109052730": [
[0, 19, 13, "RegExp match", "2409514259"]
],
@@ -182,6 +263,12 @@ exports[`no enzyme tests`] = {
"public/app/features/org/OrgProfile.test.tsx:623809345": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/teams/CreateTeam.test.tsx:1750035593": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/teams/TeamGroupSync.test.tsx:2526985933": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/teams/TeamList.test.tsx:854193970": [
[0, 19, 13, "RegExp match", "2409514259"]
],
@@ -197,7 +284,10 @@ exports[`no enzyme tests`] = {
"public/app/features/teams/TeamSettings.test.tsx:2043271249": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/users/UsersListPage.test.tsx:2518052139": [
"public/app/features/users/UsersActionBar.test.tsx:3740177621": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/users/UsersListPage.test.tsx:3908145117": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/features/users/UsersTable.test.tsx:263958312": [
@@ -206,7 +296,7 @@ exports[`no enzyme tests`] = {
"public/app/plugins/datasource/cloud-monitoring/components/Aggregation.test.tsx:3822406835": [
[1, 19, 13, "RegExp match", "2409514259"]
],
"public/app/plugins/datasource/cloudwatch/components/ConfigEditor.test.tsx:227258837": [
"public/app/plugins/datasource/cloudwatch/components/ConfigEditor.test.tsx:1224072551": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/plugins/datasource/cloudwatch/components/LogsQueryField.test.tsx:1501504663": [
@@ -218,7 +308,10 @@ exports[`no enzyme tests`] = {
"public/app/plugins/datasource/elasticsearch/configuration/DataLinks.test.tsx:248699332": [
[0, 17, 13, "RegExp match", "2409514259"]
],
"public/app/plugins/datasource/influxdb/components/ConfigEditor.test.tsx:57753101": [
"public/app/plugins/datasource/grafana-azure-monitor-datasource/components/deprecated/components/InsightsConfig.test.tsx:1107283234": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/plugins/datasource/influxdb/components/ConfigEditor.test.tsx:3456478975": [
[0, 19, 13, "RegExp match", "2409514259"]
],
"public/app/plugins/datasource/loki/components/LokiExploreQueryEditor.test.tsx:1488067923": [

View File

@@ -1,7 +1,8 @@
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
go 1.17
go 1.19
replace github.com/docker/docker => github.com/docker/engine v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible
require github.com/drone/drone-cli v1.4.0 // drone
require golang.org/x/sys v0.0.0-20221010170243-090e33056c14

View File

@@ -1 +1,3 @@
module _ // Fake go.mod auto-created by 'bingo' for go -moddir compatibility with non-Go projects. Commit this file, together with other .mod files.
module _ // Fake go.mod auto-created by 'bingo' for go -moddir compatibility with non-Go projects. Commit this file, together with other .mod files.
go 1.19

1003
.drone.yml

File diff suppressed because it is too large Load Diff

17
.github/CODEOWNERS vendored
View File

@@ -28,7 +28,6 @@ go.sum @grafana/backend-platform
.drone.yml @grafana/grafana-release-eng
.drone.star @grafana/grafana-release-eng
/scripts/drone/ @grafana/grafana-release-eng
/pkg/build/ @grafana/grafana-release-eng
# Cloud Datasources backend code
/pkg/tsdb/cloudwatch @grafana/cloud-datasources
@@ -58,9 +57,7 @@ go.sum @grafana/backend-platform
/pkg/services/live/ @grafana/grafana-edge-squad
/pkg/services/searchV2/ @grafana/grafana-edge-squad
/pkg/services/store/ @grafana/grafana-edge-squad
/pkg/services/export/ @grafana/grafana-edge-squad
/pkg/infra/filestore/ @grafana/grafana-edge-squad
pkg/tsdb/testdatasource/sims/ @grafana/grafana-edge-squad
# Alerting
/pkg/services/ngalert @grafana/alerting-squad-backend
@@ -167,17 +164,3 @@ lerna.json @grafana/frontend-ops
# Cloud middleware
/grafana-mixin/ @grafana/hosted-grafana-team
# Grafana authentication and authorization
/pkg/services/accesscontrol @grafana/grafana-authnz-team
/pkg/services/auth @grafana/grafana-authnz-team
/pkg/services/dashboards/accesscontrol.go @grafana/grafana-authnz-team
/pkg/services/datasources/permissions @grafana/grafana-authnz-team
/pkg/services/datasources/permissions/accesscontrol.go @grafana/grafana-authnz-team
/pkg/services/guardian @grafana/grafana-authnz-team
/pkg/services/ldap @grafana/grafana-authnz-team
/pkg/services/login @grafana/grafana-authnz-team
/pkg/services/multildap @grafana/grafana-authnz-team
/pkg/services/oauthtoken @grafana/grafana-authnz-team
/pkg/services/teamguardian @grafana/grafana-authnz-team
/pkg/services/serviceaccounts @grafana/grafana-authnz-team

View File

@@ -1,43 +0,0 @@
name: UX design issue
description: Create an issue for delivering wireframes, mockups or other design solutions.
title: "UX: "
labels: ["type/ux"]
body:
- type: textarea
id: background
attributes:
label: "Background / Why we're doing this"
description: Describe the problem and background of the issue. This could include research insights that inform the design changes, unmet user needs, or other usability issues.
placeholder: Add UI improvements to make Grafana Alerting alert creation easier based on usability test results.
validations:
required: true
- type: dropdown
attributes:
label: Is there existing research for this?
description: Please link research results or insights in the Background section if you have any. If no research was conducted, you might want to consider usability testing your design later.
options: [
"Yes, I have linked it",
"No research yet"
]
validations:
required: true
- type: textarea
id: problems-or-tasks
attributes:
label: Problems or tasks
description: Describe problems the new design should solve or tasks the user needs to complete.
placeholder:
value: |
- A problem we're trying to solve
- A task the user needs to accomplish
- …
validations:
required: false
- type: textarea
attributes:
label: Deliverables
description: Add a checklist of deliverables here. You can later add links to each deliverable.
value: |
- Figma mockup
- Miro board
- …

View File

@@ -7,43 +7,12 @@
"failure": "Milestone not set"
},
{
"type": "check-label",
"type": "check-backport",
"title": "Backport Check",
"labels": {
"exists": "Backport enabled",
"notExists": "Backport decision needed",
"matches": [
"backport v*"
]
},
"skip": {
"message": "Backport skipped",
"matches": [
"backport",
"no-backport"
]
},
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#should-the-pull-request-be-backported"
},
{
"type": "check-changelog",
"title": "Changelog Check",
"labels": {
"exists": "Changelog enabled",
"notExists": "Changelog decision needed",
"matches": [
"add to changelog"
]
},
"breakingChangeLabels": [
"breaking change"
],
"skip": {
"message": "Changelog skipped",
"matches": [
"no-changelog"
]
},
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#include-in-changelog-and-release-notes"
"backportEnabled": "Backport enabled",
"backportSkipped": "Backport skipped",
"failure": "Backport decision needed",
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#should-the-pull-request-be-backported",
"skipLabels": [ "backport", "no-backport"]
}
]

View File

@@ -4,12 +4,10 @@
],
"enabledManagers": ["npm"],
"ignoreDeps": [
"@grafana/slate-react", // should be updated when the `slate` package is updated
"@types/systemjs",
"@types/d3-force", // we should bump this once we move to esm modules
"@types/d3-interpolate", // we should bump this once we move to esm modules
"@types/d3-scale-chromatic", // we should bump this once we move to esm modules
"@types/grafana__slate-react", // should be updated when the `slate` package is updated
"@types/react-icons", // jaeger-ui-components is being refactored to use @grafana/ui icons instead
"commander", // we are planning to remove this, so no need to update it
"d3",
@@ -20,15 +18,13 @@
"history", // we should bump this together with react-router-dom
"@mdx-js/react", // storybook peer-depends on it's 1.x version, we should upgrade this when we upgrade storybook
"monaco-editor", // due to us exposing this via @grafana/ui/CodeEditor's props bumping can break plugins
"node-fetch", // we should bump this once we move to esm modules
"react-hook-form", // due to us exposing these hooks via @grafana/ui form components bumping can break plugins
"react-icons", // jaeger-ui-components is being refactored to use @grafana/ui icons instead
"react-router-dom", // we should bump this together with history
"slate",
"slate-plain-serializer",
"systemjs",
"copy-webpack-plugin", // try to upgrade with newer yarn release. Not working with 3.1.1
"ts-loader", // we should remove ts-loader and use babel-loader instead
"typescript", // >4.5.x doesn't seem to work on windows with pnp currently. probably similar to https://github.com/yarnpkg/berry/issues/3722
"ora" // we should bump this once we move to esm modules
],
"ignorePaths": ["packages/grafana-toolkit/package.json", "emails/**", "plugins-bundled/**", "**/mocks/**"],

View File

@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -50,7 +50,7 @@ jobs:
example: 7.4.3 or 7.4.3-beta1"
exit 1
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: Set intermedia variables
id: intermedia
@@ -69,12 +69,12 @@ jobs:
exit 1
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions
ref: main
- uses: actions/setup-node@v3.2.0
- uses: actions/setup-node@v2.5.1
with:
node-version: '16'
- name: Install Actions

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -10,7 +10,7 @@ on:
- 'public/app/plugins/datasource/cloud-monitoring/**'
branches-ignore:
- dependabot/**
- backport-*
- backport-**
jobs:
workflow-call:

View File

@@ -33,7 +33,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -0,0 +1,34 @@
# Workflow for skipping the Levitate detection
# (This is needed because workflows that are skipped due to path filtering will show up as pending in Github.
# As this has the same name as the one in detect-breaking-changes-build.yml it will take over in these cases and succeed quickly.)
name: Levitate / Detect breaking changes
on:
pull_request:
paths-ignore:
- "packages/**"
branches:
- 'main'
jobs:
detect:
name: Detect breaking changes
runs-on: ubuntu-latest
steps:
- name: Skipping
run: echo "No modifications in the public API (packages/), skipping."
# Build and persist output as a JSON (we need to tell the report workflow that the check has been skipped)
- name: Persisting the check output
run: |
mkdir -p ./levitate
echo "{ \"shouldSkip\": true }" > ./levitate/result.json
# Upload artifact (so it can be used in the more privileged "report" workflow)
- name: Upload check output as artifact
uses: actions/upload-artifact@v3
with:
name: levitate
path: levitate/

View File

@@ -1,6 +1,11 @@
name: Levitate / Detect breaking changes
on: pull_request
on:
pull_request:
paths:
- 'packages/**'
branches:
- 'main'
jobs:
buildPR:
@@ -11,10 +16,14 @@ jobs:
working-directory: './pr'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
path: './pr'
- uses: actions/setup-node@v3
with:
node-version: 16.16.0
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
@@ -51,11 +60,15 @@ jobs:
working-directory: './base'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
path: './base'
ref: ${{ github.event.pull_request.base.ref }}
- uses: actions/setup-node@v3
with:
node-version: 16.16.0
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
@@ -92,15 +105,15 @@ jobs:
GITHUB_STEP_NUMBER: 7
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: Get built packages from pr
uses: actions/download-artifact@v3
uses: actions/download-artifact@v2
with:
name: buildPr
- name: Get built packages from base
uses: actions/download-artifact@v3
uses: actions/download-artifact@v2
with:
name: buildBase

View File

@@ -14,7 +14,7 @@ jobs:
ARTIFACT_NAME: 'levitate'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: 'Download artifact'
uses: actions/github-script@v6
@@ -61,7 +61,7 @@ jobs:
const script = require('./.github/workflows/scripts/json-file-to-job-output.js');
await script({ core, filePath });
- name: Check if "levitate breaking change" label exists
- name: Check if "breaking change" label exists
id: does-label-exist
uses: actions/github-script@v6
env:
@@ -74,7 +74,7 @@ jobs:
repo: context.repo.repo,
});
const labels = data.map(({ name }) => name);
const doesExist = labels.includes('levitate breaking change');
const doesExist = labels.includes('breaking change');
return doesExist ? 1 : 0;
@@ -117,7 +117,7 @@ jobs:
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_LEVITATE_WEBHOOK_URL }}
- name: Add "levitate breaking change" label
- name: Add "breaking change" label
if: ${{ steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 }}
uses: actions/github-script@v6
env:
@@ -129,10 +129,10 @@ jobs:
issue_number: process.env.PR_NUMBER,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['levitate breaking change']
labels: ['breaking change']
})
- name: Remove "levitate breaking change" label
- name: Remove "breaking change" label
if: ${{ steps.levitate-run.outputs.exit_code == 0 && steps.does-label-exist.outputs.result == 1 }}
uses: actions/github-script@v6
env:
@@ -144,7 +144,7 @@ jobs:
issue_number: process.env.PR_NUMBER,
owner: context.repo.owner,
repo: context.repo.repo,
name: 'levitate breaking change'
name: 'breaking change'
})
# This is very weird, the actual request goes through (comes back with a 201), but does not assign the team.

View File

@@ -1,26 +0,0 @@
name: Enterprise PR check
on:
pull_request:
branches:
- main
- 'v[0-9]+.[0-9]+.x'
jobs:
dispatch:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Repository Dispatch
uses: ./actions/repository-dispatch
with:
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
repository: grafana/grafana-enterprise
event_type: oss-pull-request
client_payload:
'{"source_branch": "${{ github.head_ref }}", "target_branch": "${{ github.base_ref }}", "pr_number": "${{ github.event.number }}"}'

View File

@@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -5,10 +5,9 @@ on:
- opened
- reopened
- synchronize
- ready_for_review
- ready_for_review
- labeled
- unlabeled
- edited
issues:
types:
- milestoned
@@ -21,7 +20,7 @@ jobs:
if: github.event.pull_request.draft == false
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@@ -15,7 +15,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -0,0 +1,38 @@
name: "publish-technical-documentation-next"
on:
push:
branches:
- "main"
paths:
- "docs/sources/**"
workflow_dispatch:
jobs:
sync:
if: "github.repository == 'grafana/grafana'"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout Grafana repo"
uses: "actions/checkout@v3"
- name: "Clone website-sync Action"
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
# GitHub administrator to update the organization secret.
# The IT helpdesk can update the organization secret.
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
- name: "Publish to website repository (next)"
uses: "./.github/actions/website-sync"
id: "publish-next"
with:
repository: "grafana/website"
branch: "master"
host: "github.com"
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
# GitHub administrator to update the organization secret.
# The IT helpdesk can update the organization secret.
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
source_folder: "docs/sources"
target_folder: "content/docs/grafana/next"

View File

@@ -0,0 +1,68 @@
name: "publish-technical-documentation-release"
on:
push:
branches:
- v[0-9]+.[0-9]+.x
tags:
- v[0-9]+.[0-9]+.[0-9]+
paths:
- "docs/sources/**"
workflow_dispatch:
jobs:
sync:
if: "github.repository == 'grafana/grafana'"
runs-on: "ubuntu-latest"
steps:
- name: "Checkout Grafana repo"
uses: "actions/checkout@v3"
with:
fetch-depth: 0
- name: "Checkout Actions library"
uses: "actions/checkout@v3"
with:
repository: "grafana/grafana-github-actions"
path: "./actions"
- name: "Install Actions from library"
run: "npm install --production --prefix ./actions"
- name: "Determine if there is a matching release tag"
id: "has-matching-release-tag"
uses: "./actions/has-matching-release-tag"
with:
ref_name: "${{ github.ref_name }}"
release_tag_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
release_branch_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.x$"
- name: "Determine technical documentation version"
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
uses: "./actions/docs-target"
id: "target"
with:
ref_name: "${{ github.ref_name }}"
- name: "Clone website-sync Action"
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
# GitHub administrator to update the organization secret.
# The IT helpdesk can update the organization secret.
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
- name: "Publish to website repository (release)"
if: "steps.has-matching-release-tag.outputs.bool == 'true'"
uses: "./.github/actions/website-sync"
id: "publish-release"
with:
repository: "grafana/website"
branch: "master"
host: "github.com"
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
# GitHub administrator to update the organization secret.
# The IT helpdesk can update the organization secret.
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
source_folder: "docs/sources"
target_folder: "content/docs/grafana/${{ steps.target.outputs.target }}"

View File

@@ -1,49 +0,0 @@
name: publish_docs
on:
push:
branches:
- v9.0.x
paths:
- 'docs/sources/**'
- 'packages/grafana-*/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync
- name: generate-packages-docs
uses: actions/setup-node@v3.2.0
id: generate-docs
with:
node-version: '16'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- uses: actions/cache@v2.1.7
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-
- run: yarn install --immutable
- run: ./scripts/ci-reference-docs-build.sh
- name: publish-to-git
uses: ./.github/actions/website-sync
id: publish
with:
repository: grafana/website
branch: master
host: github.com
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
source_folder: docs/sources
target_folder: content/docs/grafana/latest
allow_no_changes: 'true'
- shell: bash
run: |
test -n "${{ steps.publish.outputs.commit_hash }}"
test -n "${{ steps.publish.outputs.working_directory }}"

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

View File

@@ -7,7 +7,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v5
- uses: actions/stale@v4
with:
repo-token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
# Number of days of inactivity before a stale Issue or Pull Request is closed.

View File

@@ -21,7 +21,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
uses: actions/checkout@v2
with:
repository: "grafana/grafana-github-actions"
path: ./actions

2
.gitignore vendored
View File

@@ -59,6 +59,7 @@ public/css/*.min.css
*.sublime-workspace
*.swp
.idea/
.fleet/
*.iml
*.tmp
.DS_Store
@@ -117,6 +118,7 @@ debug.test
/scripts/build/release_publisher/release_publisher
*.patch
!.yarn/patches/*.patch
# Ignoring frontend packages specifics
/packages/**/dist

View File

@@ -21,7 +21,3 @@ vendor
# Auto-generated localisation files
public/locales/_build/
public/locales/**/*.js
# Auto-generated theme files
theme.light.generated.json
theme.dark.generated.json

File diff suppressed because one or more lines are too long

785
.yarn/releases/yarn-3.2.0.cjs vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{
"name": "prettier",
"version": "2.6.0-sdk",
"version": "2.5.1-sdk",
"main": "./index.js",
"type": "commonjs"
}

View File

@@ -61,24 +61,16 @@ const moduleWrapper = tsserver => {
//
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
//
// Update 2021-10-08: VSCode changed their format in 1.61.
// Update Oct 8 2021: VSCode changed their format in 1.61.
// Before | ^zip:/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
// Update 2022-04-06: VSCode changed the format in 1.66.
// Before | ^/zip//c:/foo/bar.zip/package.json
// After | ^/zip/c:/foo/bar.zip/package.json
//
case `vscode <1.61`: {
str = `^zip:${str}`;
} break;
case `vscode <1.66`: {
str = `^/zip/${str}`;
} break;
case `vscode`: {
str = `^/zip${str}`;
str = `^/zip/${str}`;
} break;
// To make "go to definition" work,
@@ -168,12 +160,8 @@ const moduleWrapper = tsserver => {
typeof parsedMessage.arguments.hostInfo === `string`
) {
hostInfo = parsedMessage.arguments.hostInfo;
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
if (/(\/|-)1\.([1-5][0-9]|60)\./.test(process.env.VSCODE_IPC_HOOK)) {
hostInfo += ` <1.61`;
} else if (/(\/|-)1\.(6[1-5])\./.test(process.env.VSCODE_IPC_HOOK)) {
hostInfo += ` <1.66`;
}
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) {
hostInfo += ` <1.61`;
}
}

View File

@@ -61,24 +61,16 @@ const moduleWrapper = tsserver => {
//
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
//
// Update 2021-10-08: VSCode changed their format in 1.61.
// Update Oct 8 2021: VSCode changed their format in 1.61.
// Before | ^zip:/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
// Update 2022-04-06: VSCode changed the format in 1.66.
// Before | ^/zip//c:/foo/bar.zip/package.json
// After | ^/zip/c:/foo/bar.zip/package.json
//
case `vscode <1.61`: {
str = `^zip:${str}`;
} break;
case `vscode <1.66`: {
str = `^/zip/${str}`;
} break;
case `vscode`: {
str = `^/zip${str}`;
str = `^/zip/${str}`;
} break;
// To make "go to definition" work,
@@ -168,12 +160,8 @@ const moduleWrapper = tsserver => {
typeof parsedMessage.arguments.hostInfo === `string`
) {
hostInfo = parsedMessage.arguments.hostInfo;
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
if (/(\/|-)1\.([1-5][0-9]|60)\./.test(process.env.VSCODE_IPC_HOOK)) {
hostInfo += ` <1.61`;
} else if (/(\/|-)1\.(6[1-5])\./.test(process.env.VSCODE_IPC_HOOK)) {
hostInfo += ` <1.66`;
}
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK && process.env.VSCODE_IPC_HOOK.match(/Code\/1\.([1-5][0-9]|60)\./)) {
hostInfo += ` <1.61`;
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "typescript",
"version": "4.6.4-sdk",
"version": "4.4.4-sdk",
"main": "./lib/typescript.js",
"type": "commonjs"
}

View File

@@ -3,40 +3,37 @@ enableTelemetry: false
nodeLinker: pnp
packageExtensions:
"@grafana/slate-react@0.22.10-grafana":
peerDependencies:
slate-react: ">=0.22.0"
"@mdx-js/loader@1.6.22":
'@mdx-js/loader@1.6.22':
peerDependencies:
react: 17.0.1
"@storybook/addon-docs@6.4.21":
'@storybook/addon-docs@6.4.15':
peerDependencies:
"@storybook/manager-webpack5": 6.4.21
"@storybook/addon-essentials@6.4.21":
'@storybook/manager-webpack5': 6.4.15
'@storybook/addon-essentials@6.4.15':
peerDependencies:
"@storybook/components": 6.4.21
"@storybook/core-events": 6.4.21
"@storybook/manager-webpack5": 6.4.21
"@storybook/theming": 6.4.21
"@storybook/core-server@6.4.21":
'@storybook/components': 6.4.15
'@storybook/core-events': 6.4.15
'@storybook/manager-webpack5': 6.4.15
'@storybook/theming': 6.4.15
'@storybook/core-server@6.4.15':
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/core@6.4.21":
'@babel/core': ^7.0.0
'@storybook/core@6.4.15':
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/manager-webpack5": 6.4.21
"@storybook/csf-tools@6.4.21":
'@babel/core': ^7.0.0
'@storybook/manager-webpack5': 6.4.15
'@storybook/csf-tools@6.4.15':
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/react@6.4.21":
'@babel/core': ^7.0.0
'@storybook/react@6.4.15':
peerDependencies:
"@storybook/manager-webpack5": 6.4.21
'@storybook/manager-webpack5': 6.4.15
doctrine@3.0.0:
dependencies:
assert: 2.0.0
moveable@0.29.8:
moveable@0.28.0:
dependencies:
"@daybrush/utils": 1.6.0
'@daybrush/utils': 1.6.0
framework-utils: ^1.1.0
rc-time-picker@3.7.3:
peerDependencies:
@@ -49,11 +46,11 @@ packageExtensions:
react-compat-css-styled@1.0.8:
dependencies:
react-simple-compat: 1.2.1
react-compat-moveable@0.17.8:
react-compat-moveable@0.16.0:
dependencies:
"@egjs/agent": ^2.2.1
"@egjs/children-differ": ^1.0.1
"@scena/matrix": 1.1.1
'@egjs/agent': ^2.2.1
'@egjs/children-differ': ^1.0.1
'@scena/matrix': 1.1.1
css-to-mat: ^1.0.3
gesto: ^1.7.0
overlap-area: ^1.0.0
@@ -65,17 +62,17 @@ packageExtensions:
webpack: 4.41.5
react-icons@2.2.7:
peerDependencies:
prop-types: "*"
prop-types: '*'
react-resizable@3.0.4:
peerDependencies:
react-dom: 17.0.1
plugins:
- path: .yarn/plugins/@yarnpkg/plugin-typescript.cjs
spec: "@yarnpkg/plugin-typescript"
spec: '@yarnpkg/plugin-typescript'
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"
spec: '@yarnpkg/plugin-interactive-tools'
- path: .yarn/plugins/@yarnpkg/plugin-outdated.cjs
spec: "https://mskelton.dev/yarn-outdated/v2"
spec: 'https://mskelton.dev/yarn-outdated/v2'
yarnPath: .yarn/releases/yarn-3.2.1.cjs
yarnPath: .yarn/releases/yarn-3.2.0.cjs

View File

@@ -1,486 +1,112 @@
<!-- 9.0.0 START -->
<!-- 8.5.21 START -->
# 9.0.0 (2022-06-10)
# 8.5.21 (2023-02-28)
<!-- 8.5.21 END -->
<!-- 8.5.20 START -->
# 8.5.20 (2023-01-25)
### Features and enhancements
- **API:** Add GET /api/annotations/:annotationId endpoint. [#47739](https://github.com/grafana/grafana/pull/47739), [@scottbock](https://github.com/scottbock)
- **API:** Add endpoint for updating a data source by its UID. [#49396](https://github.com/grafana/grafana/pull/49396), [@papagian](https://github.com/papagian)
- **AccessControl:** Add enterprise only setting for rbac permission cache. [#49006](https://github.com/grafana/grafana/pull/49006), [@kalleep](https://github.com/kalleep)
- **AccessControl:** Document basic roles changes and provisioning V2. [#48910](https://github.com/grafana/grafana/pull/48910), [@gamab](https://github.com/gamab)
- **AccessControl:** Enable RBAC by default. [#48813](https://github.com/grafana/grafana/pull/48813), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **AddDataSourceConfig:** Remove deprecated checkHealth prop. [#50296](https://github.com/grafana/grafana/pull/50296), [@kaydelaney](https://github.com/kaydelaney)
- **Alerting:** Add Image URLs to Microsoft Teams notifier. [#49385](https://github.com/grafana/grafana/pull/49385), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add RBAC actions and role for provisioning API routes. [#50459](https://github.com/grafana/grafana/pull/50459), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Add Screenshot URLs to Pagerduty Notifier. [#49377](https://github.com/grafana/grafana/pull/49377), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add a "Reason" to Alert Instances to show underlying cause of state. [#49259](https://github.com/grafana/grafana/pull/49259), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add a general screenshot service and alerting-specific image service. [#49293](https://github.com/grafana/grafana/pull/49293), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add image url or file attachment to email notifications. [#49381](https://github.com/grafana/grafana/pull/49381), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add image_urls to OpsGenie notification details. [#49379](https://github.com/grafana/grafana/pull/49379), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Add notification policy flow chart. [#49405](https://github.com/grafana/grafana/pull/49405), [@peterholmberg](https://github.com/peterholmberg)
- **Alerting:** Attach image URL to alerts in Webhook notifier format. [#49378](https://github.com/grafana/grafana/pull/49378), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Attach image URLs or upload files to Discord notifications. [#49439](https://github.com/grafana/grafana/pull/49439), [@alexweav](https://github.com/alexweav)
- **Alerting:** Attach image URLs to Google Chat notifications. [#49445](https://github.com/grafana/grafana/pull/49445), [@alexweav](https://github.com/alexweav)
- **Alerting:** Attach screenshot data to Unified Alerting notifications. [#49374](https://github.com/grafana/grafana/pull/49374), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Create folder for alerting when start from the scratch. [#48866](https://github.com/grafana/grafana/pull/48866), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** Modify alertmanager endpoints for proxying using the datasource UID. [#47978](https://github.com/grafana/grafana/pull/47978), [@papagian](https://github.com/papagian)
- **Alerting:** Modify endpoint for testing a datasource rule using the UID. [#48070](https://github.com/grafana/grafana/pull/48070), [@papagian](https://github.com/papagian)
- **Alerting:** Modify prometheus endpoints for proxying using the datasource UID. [#48052](https://github.com/grafana/grafana/pull/48052), [@papagian](https://github.com/papagian)
- **Alerting:** State Manager takes screenshots. [#49338](https://github.com/grafana/grafana/pull/49338), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Use UID scope for folders authorization. [#48970](https://github.com/grafana/grafana/pull/48970), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Alerting:** modify ruler endpoints for proxying using the datasource UID. [#48046](https://github.com/grafana/grafana/pull/48046), [@papagian](https://github.com/papagian)
- **Angular:** Adds back two angular directives that are still used by remaining angular bits and plugins. [#50380](https://github.com/grafana/grafana/pull/50380), [@torkelo](https://github.com/torkelo)
- **Azure Monitor:** Add Resource Picker to Metrics Queries. [#49029](https://github.com/grafana/grafana/pull/49029), [@sarahzinger](https://github.com/sarahzinger)
- **Azure Monitor:** Add search feature to resource picker. [#48234](https://github.com/grafana/grafana/pull/48234), [@sarahzinger](https://github.com/sarahzinger)
- **AzureMonitor:** Add support for selecting multiple options when using the equals and not equals dimension filters. [#48650](https://github.com/grafana/grafana/pull/48650), [@aangelisc](https://github.com/aangelisc)
- **AzureMonitor:** Remove deprecated code. [#48328](https://github.com/grafana/grafana/pull/48328), [@andresmgot](https://github.com/andresmgot)
- **Build:** Change names to PascalCase to match. [#48949](https://github.com/grafana/grafana/pull/48949), [@zuchka](https://github.com/zuchka)
- **Chore:** Remove deprecated DataSourceAPI methods. [#49313](https://github.com/grafana/grafana/pull/49313), [@ifrost](https://github.com/ifrost)
- **Chore:** Upgrade typescript to 4.6.4. [#49016](https://github.com/grafana/grafana/pull/49016), [@kaydelaney](https://github.com/kaydelaney)
- **Cloud Monitoring:** Use new annotation API. [#49026](https://github.com/grafana/grafana/pull/49026), [@kevinwcyu](https://github.com/kevinwcyu)
- **CloudMonitoring:** Allow to set a custom value or disable graph_period. [#48646](https://github.com/grafana/grafana/pull/48646), [@andresmgot](https://github.com/andresmgot)
- **CloudWatch:** Add generic filter component to variable editor. [#47907](https://github.com/grafana/grafana/pull/47907), [@iwysiu](https://github.com/iwysiu)
- **CloudWatch:** Added missing AWS/AppRunner metrics. [#49174](https://github.com/grafana/grafana/pull/49174), [@Aton-Kish](https://github.com/Aton-Kish)
- **CloudWatch:** Enable support for dynamic labels with migrated alias patterns. [#49173](https://github.com/grafana/grafana/pull/49173), [@sunker](https://github.com/sunker)
- **Cloudwatch:** Pass label in deep link. [#49160](https://github.com/grafana/grafana/pull/49160), [@sunker](https://github.com/sunker)
- **Cloudwatch:** Use new annotation API. [#48102](https://github.com/grafana/grafana/pull/48102), [@sunker](https://github.com/sunker)
- **Dashboard:** Validate dashboards against schema on save. [#48252](https://github.com/grafana/grafana/pull/48252), [@sdboyer](https://github.com/sdboyer)
- **DashboardPickerByID:** Add option to exclude dashboards. [#49211](https://github.com/grafana/grafana/pull/49211), [@Clarity-89](https://github.com/Clarity-89)
- **DashboardPickerById:** Add optionLabel prop. [#47556](https://github.com/grafana/grafana/pull/47556), [@Clarity-89](https://github.com/Clarity-89)
- **Dashboards:** Display values of 0 with the configured decimal places. [#48155](https://github.com/grafana/grafana/pull/48155), [@wx1322](https://github.com/wx1322)
- **Data:** Remove deprecated types and functions from valueMappings. [#50035](https://github.com/grafana/grafana/pull/50035), [@kaydelaney](https://github.com/kaydelaney)
- **Elasticsearch:** Remove browser access mode. [#49014](https://github.com/grafana/grafana/pull/49014), [@gabor](https://github.com/gabor)
- **Elasticsearch:** Remove support for versions after their end of the life (<7.10.0). [#48715](https://github.com/grafana/grafana/pull/48715), [@ivanahuckova](https://github.com/ivanahuckova)
- **Encryption:** Add support for multiple data keys per day. [#47765](https://github.com/grafana/grafana/pull/47765), [@joanlopez](https://github.com/joanlopez)
- **Encryption:** Enable envelope encryption by default. [#49301](https://github.com/grafana/grafana/pull/49301), [@joanlopez](https://github.com/joanlopez)
- **Explore:** Remove support for legacy, compact format URLs. [#49350](https://github.com/grafana/grafana/pull/49350), [@gelicia](https://github.com/gelicia)
- **Explore:** Skip Angular error handling when Angular support is disabled. [#49311](https://github.com/grafana/grafana/pull/49311), [@ifrost](https://github.com/ifrost)
- **Explore:** simplify support for multiple query editors. [#48701](https://github.com/grafana/grafana/pull/48701), [@Elfo404](https://github.com/Elfo404)
- **FeatureToggles:** Support changing feature toggles with URL parameters. [#50275](https://github.com/grafana/grafana/pull/50275), [@ryantxu](https://github.com/ryantxu)
- **FileUpload:** Make component accessible by keyboard navigation. [#47497](https://github.com/grafana/grafana/pull/47497), [@tolzhabayev](https://github.com/tolzhabayev)
- **Formatting:** Make SI number formats more robust. [#50117](https://github.com/grafana/grafana/pull/50117), [@kaydelaney](https://github.com/kaydelaney)
- **Graph:** Deprecate Graph (old) and make it no longer a visualization option for new panels. [#48034](https://github.com/grafana/grafana/pull/48034), [@torkelo](https://github.com/torkelo)
- **IconButton:** IconButtons are now correctly aligned in Safari. [#48759](https://github.com/grafana/grafana/pull/48759), [@ashharrison90](https://github.com/ashharrison90)
- **Logger:** Enable new logging format by default. [#47584](https://github.com/grafana/grafana/pull/47584), [@ying-jeanne](https://github.com/ying-jeanne)
- **Loki:** Add more query patterns. [#50248](https://github.com/grafana/grafana/pull/50248), [@ivanahuckova](https://github.com/ivanahuckova)
- **Loki:** Enable new visual query builder by default. [#48346](https://github.com/grafana/grafana/pull/48346), [@ivanahuckova](https://github.com/ivanahuckova)
- **Loki:** use the same dataframe-format for both live and normal queries. [#47153](https://github.com/grafana/grafana/pull/47153), [@gabor](https://github.com/gabor)
- **OAuth:** Make allowed email domain case insensitive. [#49252](https://github.com/grafana/grafana/pull/49252), [@Jguer](https://github.com/Jguer)
- **Panels:** Use the No value option when showing the no data message. [#47675](https://github.com/grafana/grafana/pull/47675), [@torkelo](https://github.com/torkelo)
- **Plugins:** Remove plugin list panel. [#46914](https://github.com/grafana/grafana/pull/46914), [@tolzhabayev](https://github.com/tolzhabayev)
- **Query History:** Enable new query history by default. [#49407](https://github.com/grafana/grafana/pull/49407), [@ifrost](https://github.com/ifrost)
- **QueryEditorRow:** Show query errors next to query in a consistent way across Grafana. [#47613](https://github.com/grafana/grafana/pull/47613), [@torkelo](https://github.com/torkelo)
- **SAML:** Implement Name Templates for assertion_attribute_name option. [#48022](https://github.com/grafana/grafana/pull/48022), [@mmandrus](https://github.com/mmandrus)
- **Service accounts:** Do not display service accounts assigned to team. [#48995](https://github.com/grafana/grafana/pull/48995), [@eleijonmarck](https://github.com/eleijonmarck)
- **Settings:** Use Grafana Azure SDK to pass Azure env vars for external plugins. [#48954](https://github.com/grafana/grafana/pull/48954), [@kostrse](https://github.com/kostrse)
- **Shortcuts:** Add shortcut to show shortcuts to the list of shortcuts. [#48395](https://github.com/grafana/grafana/pull/48395), [@ivanahuckova](https://github.com/ivanahuckova)
- **Traces Panel:** Add new Traces Panel visualization. [#47534](https://github.com/grafana/grafana/pull/47534), [@joey-grafana](https://github.com/joey-grafana)
- **Traces:** Filter by service/span name and operation in Tempo and Jaeger. [#48209](https://github.com/grafana/grafana/pull/48209), [@joey-grafana](https://github.com/joey-grafana)
- **Transformations:** Allow more complex regex expressions in `Rename by regex`. [#48179](https://github.com/grafana/grafana/pull/48179), [@ashharrison90](https://github.com/ashharrison90)
- **grafana/ui:** Add default type="button" to <Button>. [#48183](https://github.com/grafana/grafana/pull/48183), [@axelavargas](https://github.com/axelavargas)
- **Chore:** Upgrade Go to 1.19.4 [v8.5.x]. [#60824](https://github.com/grafana/grafana/pull/60824), [@sakjur](https://github.com/sakjur)
### Bug fixes
<!-- 8.5.20 END -->
- **Alerting:** Fix database unavailable removes rules from scheduler. [#49874](https://github.com/grafana/grafana/pull/49874), [@grobinson-grafana](https://github.com/grobinson-grafana)
- **AzureMonitor:** Fix auto-selection of time-grain for metrics. [#49278](https://github.com/grafana/grafana/pull/49278), [@aangelisc](https://github.com/aangelisc)
- **DataSources:** Fixes issue with expressions not being queried. [#50446](https://github.com/grafana/grafana/pull/50446), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
- **GraphNG:** Fix thresholds by color not following data update. [#48571](https://github.com/grafana/grafana/pull/48571), [@zoltanbedi](https://github.com/zoltanbedi)
- **Jaeger:** Update operations dropdown. [#49329](https://github.com/grafana/grafana/pull/49329), [@joey-grafana](https://github.com/joey-grafana)
- **Login:** Fix mismatching label on auth_module in user list. [#49177](https://github.com/grafana/grafana/pull/49177), [@Jguer](https://github.com/Jguer)
- **Playlists:** Save button now correctly creates a new playlist. [#50381](https://github.com/grafana/grafana/pull/50381), [@ashharrison90](https://github.com/ashharrison90)
- **RBAC:** Fix migrations running in the wrong order causing inheritance problem in enterprise. [#50452](https://github.com/grafana/grafana/pull/50452), [@gamab](https://github.com/gamab)
- **RBAC:** Fix migrations running into the wrong order. (Enterprise)
- **ServiceAccounts:** Add identifiable token prefix to service account tokens. [#49011](https://github.com/grafana/grafana/pull/49011), [@Jguer](https://github.com/Jguer)
- **Traces:** Fix missing CopyButton on KeyValueTables and overlapping of panels. [#49271](https://github.com/grafana/grafana/pull/49271), [@svennergr](https://github.com/svennergr)
<!-- 8.5.15 START -->
### Breaking changes
The `@grafana/ui` package helper function `selectOptionInTest` used in frontend tests has been removed as it caused testing libraries to be bundled in the production code of Grafana. If you were using this helper function in your tests please update your code accordingly:
```js
// before
import { selectOptionInTest } from '@grafana/ui';
// ...test usage
await selectOptionInTest(selectEl, 'Option 2');
// after
import { select } from 'react-select-event';
// ...test usage
await select(selectEl, 'Option 2', { container: document.body });
```
Issue [#50442](https://github.com/grafana/grafana/issues/50442)
Removed deprecated `checkHealth` prop from the `@grafana/e2e` `addDataSource` config. Previously this value defaulted to `false`, and has not been used in end-to-end tests since Grafana 8.0.3. Issue [#50296](https://github.com/grafana/grafana/issues/50296)
Removes the deprecated `LegacyBaseMap`, `LegacyValueMapping`, `LegacyValueMap`, and `LegacyRangeMap` types, and `getMappedValue` function from grafana-data. Migration is as follows:
| Old | New |
| ------------- | ------------- |
| `LegacyBaseMap` | `MappingType` |
| `LegacyValueMapping` | `ValueMapping` |
| `LegacyValueMap` | `ValueMap` |
| `LegacyRangeMap` | `RangeMap` |
| `getMappedValue` | `getValueMappingResult` | Issue [#50035](https://github.com/grafana/grafana/issues/50035)
This change fixes a bug in Grafana where intermittent failure of database, network between Grafana and the database, or error in querying the database would cause all alert rules to be unscheduled in Grafana. Following this change scheduled alert rules are not updated unless the query is successful.
The `get_alert_rules_duration_seconds` metric has been renamed to `schedule_query_alert_rules_duration_seconds`. Issue [#49874](https://github.com/grafana/grafana/issues/49874)
- Any secret (data sources credential, alert manager credential, etc, etc) created or modified with Grafana v9.0 won't be decryptable from any previous version (by default) because the way encrypted secrets are stored into the database has changed. Although secrets created or modified with previous versions will still be decryptable by Grafana v9.0.
- If required, although generally discouraged, the `disableEnvelopeEncryption` feature toggle can be enabled to keep envelope encryption disabled once updating to Grafana v9.0.
- In case of need to rollback to an earlier version of Grafana (i.e. Grafana v8.x) for any reason, after being created or modified any secret with Grafana v9.0, the `envelopeEncryption` feature toggle will need to be enabled to keep backwards compatibility (only from `v8.3.x` a bit unstable, from `8.5.x` stable).
- As a final attempt to deal with issues related with the aforementioned situations, the `grafana-cli admin secrets-migration rollback` command has been designed to move back all the Grafana secrets encrypted with envelope encryption to legacy encryption. So, after running that command it should be safe to disable envelope encryption and/or roll back to a previous version of Grafana.
- Alternatively or complementarily to all the points above, backing up the Grafana database before updating could be a good idea to prevent disasters (although the risk of getting some secrets corrupted only applies to those updates/created with after updating to Grafana v9.0). Issue [#49301](https://github.com/grafana/grafana/issues/49301)
- According to the dynamic labels documentation, you can use up to five dynamic values per label. Theres currently no such restriction in the alias pattern system, so if more than 5 patterns are being used the GetMetricData API will return an error.
- Dynamic labels only allow ${LABEL} to be used once per query. Theres no such restriction in the alias pattern system, so in case more than 1 is being used the GetMetricData API will return an error.
- When no alias is provided by the user, Grafana will no longer fallback with custom rules for naming the legend.
- In case a search expression is being used and no data is returned, Grafana will no longer expand dimension values, for instance when using a multi-valued template variable or star wildcard `*` in the dimension value field. Ref https://github.com/grafana/grafana/issues/20729
- Time series might be displayed in a different order. Using for example the dynamic label `${PROP('MetricName')}`, might have the consequence that the time series are returned in a different order compared to when the alias pattern `{{metric}}` is used
Issue [#49173](https://github.com/grafana/grafana/issues/49173)
In Elasticsearch, browser access mode was deprecated in grafana 7.4.0 and removed in 9.0.0. If you used this mode, please switch to server access mode on the datasource configuration page. Issue [#49014](https://github.com/grafana/grafana/issues/49014)
Environment variables passed from Grafana to external Azure plugins have been renamed:
- `AZURE_CLOUD` renamed to `GFAZPL_AZURE_CLOUD`
- `AZURE_MANAGED_IDENTITY_ENABLED` renamed to `GFAZPL_MANAGED_IDENTITY_ENABLED`
- `AZURE_MANAGED_IDENTITY_CLIENT_ID` renamed to `GFAZPL_MANAGED_IDENTITY_CLIENT_ID`
There are no known plugins which were relying on these variables. Moving forward plugins should read Azure settings only via Grafana Azure SDK which properly handles old and new environment variables. Issue [#48954](https://github.com/grafana/grafana/issues/48954)
Removes support for for ElasticSearch versions after their end-of-life, currently versions < 7.10.0. To continue to use ElasticSearch data source, upgrade ElasticSearch to version 7.10.0+.
Issue [#48715](https://github.com/grafana/grafana/issues/48715)
Application Insights and Insight Analytics queries in Azure Monitor were deprecated in Grafana 8.0 and finally removed in 9.0. Deprecated queries will no longer be executed. Please refer to the [documentation](https://grafana.com/docs/grafana/latest/datasources/azuremonitor/deprecated-application-insights/) for more information about this change.
Issue [#48328](https://github.com/grafana/grafana/issues/48328)
**grafana/ui: Button now specifies a default type="button"**
The `Button` component provided by @grafana/ui now specifies a default `type="button"` when no type is provided. In previous versions, if the attribute was not specified for buttons associated with a `<form>` the default value was `submit` per the [specification](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#attr-type)
You can preserve the old behavior by explicitly setting the type attribute: `<Button type="submit" />`
[Github Issue #41863](https://github.com/grafana/grafana/issues/41863).
Issue [#48183](https://github.com/grafana/grafana/issues/48183)
The `Rename by regex` transformation has been improved to allow global patterns of the form `/<stringToReplace>/g`. Depending on the regex match used, this may cause some transformations to behave slightly differently. You can guarantee the same behaviour as before by wrapping the `match` string in forward slashes (`/`), e.g. `(.*)` would become `/(.*)/` Issue [#48179](https://github.com/grafana/grafana/issues/48179)
`<Select />` menus will now portal to the document body by default. This is to give more consistent behaviour when positioning and overlaying. If you were setting `menuShouldPortal={true}` before you can safely remove that prop and behaviour will be the same. If you weren't explicitly setting that prop, there should be no visible changes in behaviour but your tests may need updating. Please see the original PR (https://github.com/grafana/grafana/pull/36398) for migration guides. If you were setting `menuShouldPortal={false}` this will continue to prevent the menu from portalling.
Issue [#48176](https://github.com/grafana/grafana/issues/48176)
Grafana alerting endpoint prefixed with `api/v1/rule/test` that tests a rule against a Corte/Loki data source now expects the data source UID as a path parameter instead of the data source numeric identifier. Issue [#48070](https://github.com/grafana/grafana/issues/48070)
Grafana alerting endpoints prefixed with `api/prometheus/` that proxy requests to a Cortex/Loki data source now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue [#48052](https://github.com/grafana/grafana/issues/48052)
Grafana alerting endpoints prefixed with `api/ruler/` that proxy requests to a Cortex/Loki data source now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue [#48046](https://github.com/grafana/grafana/issues/48046)
Grafana alerting endpoints prefixed with `api/alertmanager/` that proxy requests to an Alertmanager now expect the data source UID as a path parameter instead of the data source numeric identifier. Issue [#47978](https://github.com/grafana/grafana/issues/47978)
The format of log messages have been updated, `lvl` is now `level` and `eror`and `dbug` has been replaced with `error` and `debug`. The precision of timestamps has been increased. To smooth the transition, it is possible to opt-out of the new log format by enabling the feature toggle `oldlog`. This option will be removed in a future minor release. Issue [#47584](https://github.com/grafana/grafana/issues/47584)
In the Loki data source, the dataframe format used to represent Loki logs-data has been changed to a more efficient format. The query-result is represented by a single dataframe with a "labels" column, instead of the separate dataframes for every labels-value. When displaying such data in explore, or in a logs-panel in the dashboard will continue to work without changes, but if the data was loaded into a different dashboard-panel, or Transforms were used, adjustments may be necessary. For example, if you used the "labels to fields" transformation with the logs data, please switch to the "extract fields" transformation. Issue [#47153](https://github.com/grafana/grafana/issues/47153)
### Deprecations
`setExploreQueryField`, `setExploreMetricsQueryField` and `setExploreLogsQueryField` are now deprecated and will be removed in a future release. If you need to set a different query editor for Explore, conditionally render based on `props.app` in your regular query editor. Please refer to https://grafana.com/docs/grafana/latest/developers/plugins/add-support-for-explore-queries/ for more information.
Issue [#48701](https://github.com/grafana/grafana/issues/48701)
### Plugin development fixes & changes
- **Chore:** Remove react-testing-lib from bundles. [#50442](https://github.com/grafana/grafana/pull/50442), [@jackw](https://github.com/jackw)
- **Select:** Portal menu by default. [#48176](https://github.com/grafana/grafana/pull/48176), [@ashharrison90](https://github.com/ashharrison90)
<!-- 9.0.0 END -->
<!-- 9.0.0-beta3 START -->
# 9.0.0-beta3 (2022-06-06)
# 8.5.15 (2022-11-08)
### Features and enhancements
- **Alerting:** Add provenance guard to config api. [#50147](https://github.com/grafana/grafana/pull/50147), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
- **Alerting:** Make folder filter clearable in Alert list panel. [#50093](https://github.com/grafana/grafana/pull/50093), [@peterholmberg](https://github.com/peterholmberg)
- **Alerting:** Provisioning API - Alert rules. [#47930](https://github.com/grafana/grafana/pull/47930), [@JohnnyQQQQ](https://github.com/JohnnyQQQQ)
- **Alerting:** Remove Image Upload code from Slack notifier. [#50062](https://github.com/grafana/grafana/pull/50062), [@joeblubaugh](https://github.com/joeblubaugh)
- **Alerting:** Remove double quotes from matchers. [#50038](https://github.com/grafana/grafana/pull/50038), [@gotjosh](https://github.com/gotjosh)
- **Cloudwatch:** Dynamic labels autocomplete. [#49794](https://github.com/grafana/grafana/pull/49794), [@sunker](https://github.com/sunker)
- **Datasource:** Remove deprecated max_idle_connections_per_host setting. [#49948](https://github.com/grafana/grafana/pull/49948), [@marefr](https://github.com/marefr)
- **Datasource:** Remove support for unencrypted passwords. [#49987](https://github.com/grafana/grafana/pull/49987), [@marefr](https://github.com/marefr)
- **Dependencies:** Update to Golang version `1.17.11`. [#50253](https://github.com/grafana/grafana/pull/50253), [@dsotirakis](https://github.com/dsotirakis)
- **Loki:** Run query when pressing Enter on line-filters. [#49913](https://github.com/grafana/grafana/pull/49913), [@svennergr](https://github.com/svennergr)
- **Metrics:** Remove support for using summaries instead of histogram for HTTP instrumentation. [#49985](https://github.com/grafana/grafana/pull/49985), [@bergquist](https://github.com/bergquist)
- **Plugins:** Remove deprecated /api/tsdb/query metrics endpoint. [#49916](https://github.com/grafana/grafana/pull/49916), [@wbrowne](https://github.com/wbrowne)
- **Plugins:** Support headers field for check health. [#49930](https://github.com/grafana/grafana/pull/49930), [@marefr](https://github.com/marefr)
- **Prometheus/Loki:** Add raw query and syntax highlight in explain mode. [#50070](https://github.com/grafana/grafana/pull/50070), [@aocenas](https://github.com/aocenas)
- **Prometheus:** Migrate metadata queries to use resource calls. [#49921](https://github.com/grafana/grafana/pull/49921), [@srclosson](https://github.com/srclosson)
- **RBAC:** Make RBAC action names more consistent. [#49730](https://github.com/grafana/grafana/pull/49730), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
- **RBAC:** Make RBAC action names more consistent. (Enterprise)
- **Settings:** Sunset non-duration based login lifetime config. [#49944](https://github.com/grafana/grafana/pull/49944), [@sakjur](https://github.com/sakjur)
- **[9.0.x] Alerting:** Update alert rule diff to not see difference between nil and empty map. [#50198](https://github.com/grafana/grafana/pull/50198), [@yuri-tceretian](https://github.com/yuri-tceretian)
- **Chore:** Upgrade Go to 1.19.2. [#56857](https://github.com/grafana/grafana/pull/56857), [@sakjur](https://github.com/sakjur)
### Bug fixes
<!-- 8.5.15 END -->
- **Alerting:** Fix alert list panel showing firing alerts with no instances. [#50069](https://github.com/grafana/grafana/pull/50069), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Fix notification policy "Override grouping" form save. [#50031](https://github.com/grafana/grafana/pull/50031), [@JacobsonMT](https://github.com/JacobsonMT)
- **Alerting:** Remove double quotes from matchers. [#50046](https://github.com/grafana/grafana/pull/50046), [@alexweav](https://github.com/alexweav)
- **Alerting:** Use correct permission scope for external AM updates. [#50159](https://github.com/grafana/grafana/pull/50159), [@gillesdemey](https://github.com/gillesdemey)
- **Datasource:** Fix allowed cookies to be forwarded as header to backend datasources. [#49541](https://github.com/grafana/grafana/pull/49541), [@marefr](https://github.com/marefr)
- **Licensing:** Fix trial expiration warning. (Enterprise)
- **Loki:** Fix uncaught errors if `labelKey` contains special characters. [#49887](https://github.com/grafana/grafana/pull/49887), [@svennergr](https://github.com/svennergr)
- **Prometheus:** Fix aligning of labels of exemplars after backend migration. [#49924](https://github.com/grafana/grafana/pull/49924), [@aocenas](https://github.com/aocenas)
- **SharePDF:** Fix repeated datasource variables in PDF. (Enterprise)
- **State Timeline:** Fix Null Value Filling and Value Transformation. [#50054](https://github.com/grafana/grafana/pull/50054), [@codeincarnate](https://github.com/codeincarnate)
- **Usage stats:** Divide collection into multiple functions to isolate failures. [#49928](https://github.com/grafana/grafana/pull/49928), [@sakjur](https://github.com/sakjur)
<!-- 8.5.14 START -->
### Breaking changes
Removes support for storing/using datasource `password` and `basicAuthPassword` unencrypted which was [deprecated in Grafana v8.1.0](https://grafana.com/docs/grafana/latest/installation/upgrading/#use-of-unencrypted-passwords-for-data-sources-no-longer-supported). Please use `secureJsonData.password` and `secureJsonData.basicAuthPassword`. Issue [#49987](https://github.com/grafana/grafana/issues/49987)
Removes the option to instrument HTTP request in Grafana using summaries instead of histograms. Issue [#49985](https://github.com/grafana/grafana/issues/49985)
Removes support for deprecated dataproxy.max_idle_connections_per_host setting. Please use max_idle_connections instead. Issue [#49948](https://github.com/grafana/grafana/issues/49948)
Removes the deprecated `getFormStyles` function from grafana-ui.
Prefer using `GrafanaTheme2` and the `useStyles2` hook. Issue [#49945](https://github.com/grafana/grafana/issues/49945)
The configuration options `auth.login_maximum_inactive_lifetime_days` and `auth.login_maximum_lifetime_days` were deprecated in Grafana v7.2.0 and have now been removed. Use `login_maximum_inactive_lifetime_duration` and `login_maximum_lifetime_duration` to customize the maximum lifetime of a login session. Issue [#49944](https://github.com/grafana/grafana/issues/49944)
Removed the deprecated `isFocused` and `isInvalid` props from the `InlineLabel` component. These props haven't done anything for a while, so migration is just a matter of removing the props. Issue [#49929](https://github.com/grafana/grafana/issues/49929)
Removed the deprecated `onColorChange` prop from `ColorPicker`. Moving forward the `onChange` prop should be used. Issue [#49923](https://github.com/grafana/grafana/issues/49923)
`/api/tsdb/query` API has been removed. Use [/api/ds/query](https://grafana.com/docs/grafana/latest/http_api/data_source/#query-a-data-source) instead.
Issue [#49916](https://github.com/grafana/grafana/issues/49916)
`onClipboardCopy` and `onClipboardError` APIs have been changed such that the callback's argument is just the text that's been copied rather than the old `ClipboardEvent` interface.
Migration should just be a matter of going from
```tsx
<ClipboardButton
{/*other props... */}
onClipboardCopy={(e) => {
console.log(`Text "${e.text}" was copied!`);
}}
/>
```
to
````tsx
<ClipboardButton
{/* other props... */}
onClipboardCopy={(copiedText) => {
console.log(`Text "${copiedText}" was copied!`);
}}
/>
``` Issue [#49847](https://github.com/grafana/grafana/issues/49847)
The following RBAC action renames have been carried out:
* `users.authtoken:update` -> `users.authtoken:write`;
* `users.password:update` -> `users.password:write`;
* `users.permissions:update` -> `users.permissions:write`;
* `users.quotas:update` -> `users.quotas:write`;
* `org.users.role:update` -> `org.users:write`;
* `alert.instances:update` -> `alert.instances:write`;
* `alert.rules:update` -> `alert.rules:write`;
* `users.authtoken:list` -> `users.authtoken:read`;
* `users.quotas:list` -> `users.quotas:read`;
* `users.teams:read` -> replaced by `users.read` + `teams:read`
We've added a migration from the old action names to the new names and have updated our documentation. But you will have to update any scripts and provisioning files that are using the old action names. Issue [#49730](https://github.com/grafana/grafana/issues/49730)
The following RBAC action renames have been carried out:
* `reports.admin:write` -> `reports:write`;
* `reports.admin:create` -> `reports:create`;
* `licensing:update` -> `licensing:write`;
* `roles:list` -> `roles:read`;
* `teams.roles:list` -> `teams.roles:read`;
* `users.roles:list` -> `users.roles:read`;
* `users.permissions:list` -> `users.permissions:read`
We've added a migration from the old action names to the new names and have updated our documentation. But you will have to update any scripts and provisioning files that are using the old action names. Issue [#3372](https://github.com/grafana/grafana/issues/3372)
### Plugin development fixes & changes
- **UI:** Remove deprecated getFormStyles function. [#49945](https://github.com/grafana/grafana/pull/49945), [@kaydelaney](https://github.com/kaydelaney)
- **InlineLabel:** Remove deprecated props. [#49929](https://github.com/grafana/grafana/pull/49929), [@kaydelaney](https://github.com/kaydelaney)
- **ColorPicker:** Remove deprecated onColorChange prop. [#49923](https://github.com/grafana/grafana/pull/49923), [@kaydelaney](https://github.com/kaydelaney)
- **ClipboardButton:** Simplify callbacks. [#49847](https://github.com/grafana/grafana/pull/49847), [@kaydelaney](https://github.com/kaydelaney)
<!-- 9.0.0-beta3 END -->
<!-- 9.0.0-beta2 START -->
# 9.0.0-beta2 (2022-05-31)
# 8.5.14 (2022-10-11)
### Features and enhancements
- **Alerting:** Add legacy indicator to navbar. [#49511](https://github.com/grafana/grafana/pull/49511), [@peterholmberg](https://github.com/peterholmberg)
- **Alerting:** Add templated subject config to email notifier. [#49742](https://github.com/grafana/grafana/pull/49742), [@JacobsonMT](https://github.com/JacobsonMT)
- **Alerting:** Enable Unified Alerting for open source and enterprise. [#49834](https://github.com/grafana/grafana/pull/49834), [@grobinson-grafana](https://github.com/grobinson-grafana)
- **Alerting:** Make alertmanager datasource stable. [#49485](https://github.com/grafana/grafana/pull/49485), [@gillesdemey](https://github.com/gillesdemey)
- **Angular:** Remove deprecated angular modal support and libs. [#49781](https://github.com/grafana/grafana/pull/49781), [@torkelo](https://github.com/torkelo)
- **AuthProxy:** Remove deprecated ldap_sync_ttl setting. [#49902](https://github.com/grafana/grafana/pull/49902), [@kalleep](https://github.com/kalleep)
- **Build:** Enable long term caching for frontend assets. [#47625](https://github.com/grafana/grafana/pull/47625), [@jackw](https://github.com/jackw)
- **Chore:** Remove deprecated TextDisplayOptions export. [#49705](https://github.com/grafana/grafana/pull/49705), [@kaydelaney](https://github.com/kaydelaney)
- **Chore:** Remove deprecated `surface` prop from IconButton. [#49715](https://github.com/grafana/grafana/pull/49715), [@kaydelaney](https://github.com/kaydelaney)
- **Chore:** Remove usage of deprecated getColorForTheme function. [#49519](https://github.com/grafana/grafana/pull/49519), [@kaydelaney](https://github.com/kaydelaney)
- **DatePicker:** Add minDate prop. [#49503](https://github.com/grafana/grafana/pull/49503), [@alexanderzobnin](https://github.com/alexanderzobnin)
- **Notification history:** Enable by default. [#49502](https://github.com/grafana/grafana/pull/49502), [@ashharrison90](https://github.com/ashharrison90)
- **Prometheus:** Add pluginVersion to query. [#49414](https://github.com/grafana/grafana/pull/49414), [@toddtreece](https://github.com/toddtreece)
- **Prometheus:** Enable prometheusStreamingJSONParser by default. [#49475](https://github.com/grafana/grafana/pull/49475), [@toddtreece](https://github.com/toddtreece)
- **Prometheus:** Predefined scopes for Azure authentication. [#49557](https://github.com/grafana/grafana/pull/49557), [@kostrse](https://github.com/kostrse)
- **Prometheus:** Streaming JSON parser performance improvements. [#48792](https://github.com/grafana/grafana/pull/48792), [@toddtreece](https://github.com/toddtreece)
- **ValueMapping:** Add support for regex replacement over multiple lines. [#49607](https://github.com/grafana/grafana/pull/49607), [@ashharrison90](https://github.com/ashharrison90)
- **Access Control:** Allow org admins to invite new users. [#55585](https://github.com/grafana/grafana/pull/55585), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
### Bug fixes
<!-- 8.5.14 END -->
- **Accessibility:** Pressing escape in a Modal or DashboardSettings correctly closes the overlay. [#49500](https://github.com/grafana/grafana/pull/49500), [@ashharrison90](https://github.com/ashharrison90)
- **Alerting:** Validate alert notification UID length. [#45546](https://github.com/grafana/grafana/pull/45546), [@wbrowne](https://github.com/wbrowne)
- **BackendSrv:** Throw an error when fetching an invalid JSON. [#47493](https://github.com/grafana/grafana/pull/47493), [@leventebalogh](https://github.com/leventebalogh)
- **Fix:** Timeseries migration regex override. [#49629](https://github.com/grafana/grafana/pull/49629), [@zoltanbedi](https://github.com/zoltanbedi)
- **Loki:** Fix unwrap parsing in query builder. [#49732](https://github.com/grafana/grafana/pull/49732), [@ivanahuckova](https://github.com/ivanahuckova)
- **Navigation:** Position hamburger menu correctly in mobile view. [#49603](https://github.com/grafana/grafana/pull/49603), [@ashharrison90](https://github.com/ashharrison90)
- **PanelEditor:** Fixes issue with Table view and multi data frames. [#49854](https://github.com/grafana/grafana/pull/49854), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
- **Preferences:** Fix updating of preferences for Navbar and Query History. [#49677](https://github.com/grafana/grafana/pull/49677), [@ivanahuckova](https://github.com/ivanahuckova)
- **TimeRange:** Fixes issue when zooming out on a timerange with timespan 0. [#49622](https://github.com/grafana/grafana/pull/49622), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
- **Variables:** Fixes DS variables not being correctly used in panel queries. [#49323](https://github.com/grafana/grafana/pull/49323), [@JoaoSilvaGrafana](https://github.com/JoaoSilvaGrafana)
<!-- 8.5.13 START -->
### Breaking changes
Drop support for deprecated setting ldap_sync_ttl under [auth.proxy]
Only sync_ttl will work from now on Issue [#49902](https://github.com/grafana/grafana/issues/49902)
Removes support for deprecated `heading` and `description` props. Moving forward, the `Card.Heading` and `Card.Description` components should be used. Issue [#49885](https://github.com/grafana/grafana/issues/49885)
Removes the deprecated `link` variant from the `Button` component.
To migrate, replace any usage of `variant="link"` with `fill="text"`. Issue [#49843](https://github.com/grafana/grafana/issues/49843)
Removes the deprecated `surface` prop from the `IconButton` component. This prop hasn't actually done anything for a while, so it should be safe to just remove any instances of its usage.
Issue [#49715](https://github.com/grafana/grafana/issues/49715)
Removes the deprecated `TextDisplayOptions` export from `@grafana/data` in favor of `VizTextDisplayOptions` from `@grafana/schema`. To migrate, just replace usage of `TextDisplayOptions` with `VizTextDisplayOptions`. Issue [#49705](https://github.com/grafana/grafana/issues/49705)
Removed support for the deprecated `getColorForTheme(color: string, theme: GrafanaTheme)` function in favor of the
`theme.visualization.getColorByName(color: string)` method. The output of this method is identical to the removed function, so migration should just be a matter of rewriting calls of `getColorForTheme(myColor, myTheme)` to `myTheme.visualization.getColorByName(myColor)`.
Issue [#49519](https://github.com/grafana/grafana/issues/49519)
In the Prometheus data source, for consistency and performance reasons, we changed how we represent `NaN` (not a number) values received from Prometheus. In the past versions, we converted these to `null` in the frontend (for dashboard and explore), and kept as `NaN` in the alerting path. Starting with this version, we will always keep it as `NaN`. This change should be mostly invisible for the users. Issue [#49475](https://github.com/grafana/grafana/issues/49475)
Plugins using custom Webpack configs could potentially break due to the changes between webpack@4 and webpack@5. Please refer to the [official migration guide](https://webpack.js.org/migrate/5/) for assistance.
Webpack 5 does not include polyfills for node.js core modules by default (e.g. `buffer`, `stream`, `os`). This can result in failed builds for plugins. If polyfills are required it is recommended to create a custom webpack config in the root of the plugin repo and add the required fallbacks:
```js
// webpack.config.js
module.exports.getWebpackConfig = (config, options) => ({
...config,
resolve: {
...config.resolve,
fallback: {
os: require.resolve('os-browserify/browser'),
stream: require.resolve('stream-browserify'),
timers: require.resolve('timers-browserify'),
},
},
});
````
Please refer to the webpack build error messages or the [official migration guide](https://webpack.js.org/migrate/5/) for assistance with fallbacks.
**Which issue(s) this PR fixes**:
<!--
- Automatically closes linked issue when the Pull Request is merged.
Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)"
-->
Fixes #
**Special notes for your reviewer**:
It does not bump the following dependencies to the very latest due to the latest versions being ES modules:
- ora
- globby
- execa
- chalk
Issue [#47826](https://github.com/grafana/grafana/issues/47826)
We have changed the internals of `backendSrv.fetch()` to throw an error when the response is an incorrect JSON.
```javascript
// PREVIOUSLY: this was returning with an empty object {} - in case the response is an invalid JSON
return await getBackendSrv().post(`${API_ROOT}/${id}/install`);
// AFTER THIS CHANGE: the following will throw an error - in case the response is an invalid JSON
return await getBackendSrv().post(`${API_ROOT}/${id}/install`);
```
**When is the response handled as JSON?**
- If the response has the `"Content-Type: application/json"` header, OR
- If the backendSrv options ([`BackendSrvRequest`](https://github.com/grafana/grafana/blob/e237ff20a996c7313632b2e28f38032012f0e340/packages/grafana-runtime/src/services/backendSrv.ts#L8)) specify the response as JSON: `{ responseType: 'json' }`
**How does it work after this change?**
- In case it is recognised as a JSON response and the response is empty, it returns an empty object `{}`
- In case it is recognised as a JSON response and it has formatting errors, it throws an error
**How to migrate?**
Make sure to handle possible errors on the callsite where using `backendSrv.fetch()` (or any other `backendSrv` methods). Issue [#47493](https://github.com/grafana/grafana/issues/47493)
### Plugin development fixes & changes
- **UI/Card:** Remove deprecated props. [#49885](https://github.com/grafana/grafana/pull/49885), [@kaydelaney](https://github.com/kaydelaney)
- **UI/Button:** Remove deprecated "link" variant. [#49843](https://github.com/grafana/grafana/pull/49843), [@kaydelaney](https://github.com/kaydelaney)
- **Toolkit:** Bump dependencies. [#47826](https://github.com/grafana/grafana/pull/47826), [@jackw](https://github.com/jackw)
<!-- 9.0.0-beta2 END -->
<!-- 9.0.0-beta1 START -->
# 9.0.0-beta1 (2022-05-24)
# 8.5.13 (2022-09-20)
### Features and enhancements
- **AccessControl:** Add setting for permission cache. (Enterprise)
- **AccessControl:** Check dashboard permissions for reports. (Enterprise)
- **Auth:** Remove grafana ui dependency to the aws sdk. [#43559](https://github.com/grafana/grafana/pull/43559), [@sunker](https://github.com/sunker)
- **BasicRoles:** Add API endpoint to reset basic roles permissions to factory. (Enterprise)
- **LDAP Mapping:** Allow Grafana Admin mapping without org role. [#37189](https://github.com/grafana/grafana/pull/37189), [@krzysdabro](https://github.com/krzysdabro)
- **Licensing:** Only enforce total number of users. (Enterprise)
- **Loki:** do not convert NaN to null. [#45389](https://github.com/grafana/grafana/pull/45389), [@gabor](https://github.com/gabor)
- **Report:** API support for multiple dashboards. (Enterprise)
- **Report:** Support sending embedded image in the report email. (Enterprise)
- **Report:** UI for multiple dashboards. (Enterprise)
- **Reporting:** Remove redundant empty attachment when export to CSV is enabled. (Enterprise)
- **SAML:** Implement Name Templates for assertion_attribute_name option. (Enterprise)
- **SSE/Alerting:** Support prom instant vector responses. [#44865](https://github.com/grafana/grafana/pull/44865), [@kylebrandt](https://github.com/kylebrandt)
- **Tracing:** Add trace to metrics config behind feature toggle. [#46298](https://github.com/grafana/grafana/pull/46298), [@connorlindsey](https://github.com/connorlindsey)
- **Plugins:** Expose @emotion/react to plugins to prevent load failures. [#55297](https://github.com/grafana/grafana/pull/55297), [@jackw](https://github.com/jackw)
### Bug fixes
- **Fix:** Prevent automatic parsing of string data types to numbers. [#46035](https://github.com/grafana/grafana/pull/46035), [@joshhunt](https://github.com/joshhunt)
- **Prometheus:** Fix inconsistent labels in exemplars resulting in marshal json error. [#46135](https://github.com/grafana/grafana/pull/46135), [@hanjm](https://github.com/hanjm)
- **AuthNZ:** Security fixes for CVE-2022-35957 and CVE-2022-36062. [#55495](https://github.com/grafana/grafana/pull/55495), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
### Breaking changes
<!-- 8.5.13 END -->
In the Loki data source, for consistency and performance reasons, we changed how we represent `NaN` (not a number) values received from Loki. In the past versions, we converted these to `null` in the frontend (for dashboard and explore), and kept as `NaN` in the alerting path. Starting with this version, we will always keep it as `NaN`. This change should be mostly invisible for the users. Issue [#45389](https://github.com/grafana/grafana/issues/45389)
<!-- 8.5.11 START -->
The dependency to [grafana/aws-sdk](https://github.com/grafana/grafana-aws-sdk-react) is moved from [grafana/ui](https://github.com/grafana/grafana/blob/main/packages/grafana-ui/package.json) to the plugin. This means that any plugin that use SIGV4 auth need to pass a SIGV4 editor component as a prop to the `DataSourceHttpSettings` component. Issue [#43559](https://github.com/grafana/grafana/issues/43559)
# 8.5.11 (2022-08-30)
### Features and enhancements
- **Rendering:** Add support for renderer token (#54425). [#54438](https://github.com/grafana/grafana/pull/54438), [@joanlopez](https://github.com/joanlopez)
- **Alerting:** AlertingProxy to elevate permissions for request forwarded to data proxy when RBAC enabled. [#53681](https://github.com/grafana/grafana/pull/53681), [@yuri-tceretian](https://github.com/yuri-tceretian)
<!-- 8.5.11 END -->
<!-- 8.5.10 START -->
# 8.5.10 (2022-08-08)
### Bug fixes
- **RBAC:** Fix Anonymous Editors missing dashboard controls. [#52649](https://github.com/grafana/grafana/pull/52649), [@gamab](https://github.com/gamab)
<!-- 8.5.10 END -->
<!-- 8.5.9 START -->
# 8.5.9 (2022-07-14)
### Bug fixes
- **Security:** Fixes for CVE-2022-31107 and CVE-2022-31097. [#52238](https://github.com/grafana/grafana/pull/52238), [@xlson](https://github.com/xlson)
<!-- 8.5.9 END -->
<!-- 8.5.6 START -->
# 8.5.6 (2022-06-14)
### Bug fixes
- **Dashboard:** Fixes random scrolling on time range change. [#50379](https://github.com/grafana/grafana/pull/50379), [@torkelo](https://github.com/torkelo)
- **Security:** Fixes minor code scanning security warnings in old vendored javascript libs. [#50382](https://github.com/grafana/grafana/pull/50382), [@torkelo](https://github.com/torkelo)
<!-- 8.5.6 END -->
<!-- 8.5.5 START -->
# 8.5.5 (2022-06-06)
### Features and enhancements
- **Azure Monitor:** Include datasource ref when interpolating variables. [#49543](https://github.com/grafana/grafana/pull/49543), [@kevinwcyu](https://github.com/kevinwcyu)
- **CloudWatch:** Add multi-value template variable support for log group names in logs query builder. [#49737](https://github.com/grafana/grafana/pull/49737), [@kevinwcyu](https://github.com/kevinwcyu)
- **Cloudwatch:** Add template variable query function for listing log groups. [#50100](https://github.com/grafana/grafana/pull/50100), [@yaelleC](https://github.com/yaelleC)
### Bug fixes
- **Alerting:** Do not overwrite existing alert rule condition. [#49920](https://github.com/grafana/grafana/pull/49920), [@gillesdemey](https://github.com/gillesdemey)
- **Alerting:** Remove double quotes from matchers. [#50044](https://github.com/grafana/grafana/pull/50044), [@alexweav](https://github.com/alexweav)
<!-- 8.5.5 END -->
<!-- 9.0.0-beta1 END -->
<!-- 8.5.4 START -->
# 8.5.4 (2022-05-30)
@@ -692,6 +318,26 @@ When user is using Github OAuth, GitHub login is showed as both Grafana login an
The meaning of the default data source has now changed from being a persisted property in a panel. Before when you selected the default data source for a panel and later changed the default data source to another data source it would change all panels who were configured to use the default data source. From now on the default data source is just the default for new panels and changing the default will not impact any currently saved dashboards. Issue [#45132](https://github.com/grafana/grafana/issues/45132)
<!-- 8.4.11 START -->
# 8.4.11 (2022-08-30)
### Features and enhancements
- **Rendering:** Add support for renderer token (#54425). [#54437](https://github.com/grafana/grafana/pull/54437), [@joanlopez](https://github.com/joanlopez)
<!-- 8.4.11 END -->
<!-- 8.4.10 START -->
# 8.4.10 (2022-07-14)
### Bug fixes
- **Security:** Fixes for CVE-2022-31107 and CVE-2022-31097. [#52218](https://github.com/grafana/grafana/pull/52218), [@IevaVasiljeva](https://github.com/IevaVasiljeva)
<!-- 8.4.10 END -->
<!-- 8.4.7 START -->
# 8.4.7 (2022-04-19)
@@ -879,6 +525,16 @@ AngularJS plugin support is now in a deprecated state, meaning it will be remove
- **News:** Reload feed when changing the time range or refreshing. [#42217](https://github.com/grafana/grafana/pull/42217), [@ashharrison90](https://github.com/ashharrison90)
- **UI/Plot:** Implement keyboard controls for plot cursor. [#42244](https://github.com/grafana/grafana/pull/42244), [@kaydelaney](https://github.com/kaydelaney)
<!-- 8.3.11 START -->
# 8.3.11 (2022-08-30)
### Features and enhancements
- **Rendering:** Add support for renderer token (#54425). [#54436](https://github.com/grafana/grafana/pull/54436), [@joanlopez](https://github.com/joanlopez)
<!-- 8.3.11 END -->
<!-- 8.3.7 START -->
# 8.3.7 (2022-03-01)

View File

@@ -20,7 +20,7 @@ COPY emails emails
ENV NODE_ENV production
RUN yarn build
FROM golang:1.17.11-alpine3.15 as go-builder
FROM golang:1.19.4-alpine3.15 as go-builder
RUN apk add --no-cache gcc g++ make

View File

@@ -21,7 +21,7 @@ COPY emails emails
ENV NODE_ENV production
RUN yarn build
FROM golang:1.17.11 AS go-builder
FROM golang:1.19.4 AS go-builder
WORKDIR /src/grafana

View File

@@ -80,6 +80,7 @@ The current team members are:
- Emil Tullstedt ([Grafana Labs](https://grafana.com/))
- Erik Sundell ([Grafana Labs](https://grafana.com/))
- Fredrik Enestad ([Embark Studios](https://www.embark-studios.com/))
- Hugo Häggmark ([Grafana Labs](https://grafana.com/))
- Ivana Huckova ([Grafana Labs](https://grafana.com/))
- Jeroen Op 't Eynde ([Grafana Labs](https://grafana.com/))
- Jessica Müller ([Grafana Labs](https://grafana.com/))

View File

@@ -1,5 +0,0 @@
# Hall of fame
List of previous team members that have had a big impact on the company or the product and contributed during a long period of time.
- Hugo Häggmark ([School of applied technology](https://salt.study))

View File

@@ -17,8 +17,6 @@ packages/grafana-toolkit/
packages/grafana-ui/
packages/jaeger-ui-components/
packaging/
pkg/coremodel/
pkg/framework/coremodel/
grafana-mixin/
cue/
```

View File

@@ -35,7 +35,7 @@ node_modules: package.json yarn.lock ## Install node modules.
##@ Swagger
SPEC_TARGET = public/api-spec.json
MERGED_SPEC_TARGET := public/api-merged.json
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/post.json
$(SPEC_TARGET): $(API_DEFINITION_FILES) ## Generate API spec
docker run --rm -it \
@@ -50,13 +50,13 @@ $(SPEC_TARGET): $(API_DEFINITION_FILES) ## Generate API spec
-x "github.com/prometheus/alertmanager" \
-i /grafana/pkg/api/docs/tags.json
swagger-api-spec: gen-go $(SPEC_TARGET) $(MERGED_SPEC_TARGET) validate-api-spec
swagger-api-spec: gen-go $(SPEC_TARGET) $(MERGED_SPEC_TARGET)
$(NGALERT_SPEC_TARGET):
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
+$(MAKE) -C pkg/services/ngalert/api/tooling post.json
$(MERGED_SPEC_TARGET): $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) ## Merge generated and ngalert API specs
go run pkg/api/docs/merge/merge_specs.go -o=public/api-merged.json $(<) pkg/services/ngalert/api/tooling/api.json
go run pkg/api/docs/merge/merge_specs.go -o=public/api-merged.json $(<) pkg/services/ngalert/api/tooling/post.json
ensure_go-swagger_mac:
@hash swagger &>/dev/null || (brew tap go-swagger/go-swagger && brew install go-swagger)
@@ -67,7 +67,7 @@ ensure_go-swagger_mac:
-x "github.com/prometheus/alertmanager" \
-i pkg/api/docs/tags.json
swagger-api-spec-mac: gen-go --swagger-api-spec-mac $(MERGED_SPEC_TARGET) validate-api-spec
swagger-api-spec-mac: gen-go --swagger-api-spec-mac $(MERGED_SPEC_TARGET)
validate-api-spec: $(MERGED_SPEC_TARGET) ## Validate API spec
docker run --rm -it \

View File

@@ -477,8 +477,6 @@ token_url = https://gitlab.com/oauth/token
api_url = https://gitlab.com/api/v4
allowed_domains =
allowed_groups =
role_attribute_path =
role_attribute_strict = false
#################################### Google Auth #########################
[auth.google]
@@ -584,6 +582,8 @@ enabled = false
header_name = X-WEBAUTH-USER
header_property = username
auto_sign_up = true
# Deprecated, use sync_ttl instead
ldap_sync_ttl = 60
sync_ttl = 60
whitelist =
headers =
@@ -611,7 +611,7 @@ allow_sign_up = true
# LDAP background sync (Enterprise only)
# At 1 am every day
sync_cron = "0 1 * * *"
sync_cron = "0 0 1 * * *"
active_sync_enabled = true
#################################### AWS ###########################
@@ -643,12 +643,6 @@ managed_identity_enabled = false
# Should be set for user-assigned identity and should be empty for system-assigned identity
managed_identity_client_id =
#################################### Role-based Access Control ###########
[rbac]
enabled = true
# If enabled, cache permissions in a in memory cache (Enterprise only)
permission_cache = true
#################################### SMTP / Emailing #####################
[smtp]
enabled = false
@@ -841,22 +835,6 @@ max_attempts = 3
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
min_interval = 10s
[unified_alerting.screenshots]
# Enable screenshots in notifications. This option requires a remote HTTP image rendering service. Please
# see [rendering] for further configuration options.
capture = false
# The maximum number of screenshots that can be taken at the same time. This option is different from
# concurrent_render_request_limit as max_concurrent_screenshots sets the number of concurrent screenshots
# that can be taken at the same time for all firing alerts where as concurrent_render_request_limit sets
# the total number of concurrent screenshots across all Grafana services.
max_concurrent_screenshots = 5
# Uploads screenshots to the local Grafana server or remote storage such as Azure, S3 and GCS. Please
# see [external_image_storage] for further configuration options. If this option is false then
# screenshots will be persisted to disk for up to temp_data_lifetime.
upload_external_image_storage = false
#################################### Alerting ############################
[alerting]
# Enable the legacy alerting sub-system and interface. If Unified Alerting is already enabled and you try to go back to legacy alerting, all data that is part of Unified Alerting will be deleted. When this configuration section and flag are not defined, the state is defined at runtime. See the documentation for more details.
@@ -938,7 +916,7 @@ enabled = true
#################################### Query History #############################
[query_history]
# Enable the Query history
enabled = true
enabled = false
#################################### Internal Grafana Metrics ############
# Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId
@@ -972,7 +950,6 @@ url = https://grafana.com
url = https://grafana.com
#################################### Distributed tracing ############
# Opentracing is deprecated use opentelemetry instead
[tracing.jaeger]
# jaeger destination (ex localhost:6831)
address =
@@ -999,15 +976,6 @@ disable_shared_zipkin_spans = false
[tracing.opentelemetry.jaeger]
# jaeger destination (ex http://localhost:14268/api/traces)
address =
# Propagation specifies the text map propagation format: w3c, jaeger
propagation =
# This is a configuration for OTLP exporter with GRPC protocol
[tracing.opentelemetry.otlp]
# otlp destination (ex localhost:4317)
address =
# Propagation specifies the text map propagation format: w3c, jaeger
propagation =
#################################### External Image Storage ##############
[external_image_storage]
@@ -1052,6 +1020,8 @@ container_name =
server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
callback_url =
# An auth token that will be sent to and verified by the renderer. The renderer will deny any request without an auth token matching the one configured on the renderer side.
renderer_token = -
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
concurrent_render_request_limit = 30
@@ -1172,18 +1142,9 @@ enable =
# The new prometheus visual query builder
promQueryBuilder = true
# The new loki visual query builder
lokiQueryBuilder = true
# Experimental Explore to Dashboard workflow
explore2Dashboard = true
# Experimental Command Palette
commandPalette = true
# Use dynamic labels in CloudWatch datasource
cloudWatchDynamicLabels = true
# feature1 = true
# feature2 = false
@@ -1217,22 +1178,3 @@ default_baselayer_config =
# Enable or disable loading other base map layers
enable_custom_baselayers = true
#################################### Dashboard previews #####################################
[dashboard_previews.crawler]
# Number of dashboards rendered in parallel. Default is 6.
thread_count =
# Timeout passed down to the Image Renderer plugin. It is used in two separate places within a single rendering request:
# First during the initial navigation to the dashboard and then when waiting for all the panels to load. Default is 20s.
# This setting should be expressed as a duration. Examples: 10s (seconds), 1m (minutes).
rendering_timeout =
# Maximum duration of a single crawl. Default is 1h.
# This setting should be expressed as a duration. Examples: 10s (seconds), 1m (minutes).
max_crawl_duration =
# Minimum interval between two subsequent scheduler runs. Default is 12h.
# This setting should be expressed as a duration. Examples: 10s (seconds), 1m (minutes).
scheduler_interval =

View File

@@ -1,68 +1,76 @@
# ---
# # config file version
# apiVersion: 2
# apiVersion: 1
# # <list> list of roles to insert/update/delete
# roles:
# # <string, required> name of the role you want to create or update. Required.
# - name: 'custom:users:writer'
# # <string> uid of the role. Has to be unique for all orgs.
# uid: customuserswriter1
# # <string> description of the role, informative purpose only.
# description: 'Create, read, write users'
# # <int> version of the role, Grafana will update the role when increased.
# version: 2
# # <int> org id. Defaults to Grafana's default if not specified.
# # list of default built-in role assignments that should be removed
# removeDefaultAssignments:
# # <string>, must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`
# - builtInRole: "Grafana Admin"
# # <string>, must be one of the existing fixed roles
# fixedRole: "fixed:permissions:admin"
# # list of default built-in role assignments that should be added back
# addDefaultAssignments:
# # <string>, must be one of the Organization roles (`Viewer`, `Editor`, `Admin`) or `Grafana Admin`
# - builtInRole: "Admin"
# # <string>, must be one of the existing fixed roles
# fixedRole: "fixed:reporting:admin:read"
# # list of roles that should be deleted
# deleteRoles:
# # <string> name of the role you want to create. Required if no uid is set
# - name: "custom:reports:editor"
# # <string> uid of the role. Required if no name
# uid: "customreportseditor1"
# # <int> org id. will default to Grafana's default if not specified
# orgId: 1
# # <list> list of the permissions granted by this role.
# permissions:
# # <string, required> action allowed.
# - action: 'users:read'
# #<string> scope it applies to.
# scope: 'users:*'
# - action: 'users:write'
# scope: 'users:*'
# - action: 'users:create'
# - name: 'custom:global:users:reader'
# # <bool> overwrite org id and creates a global role.
# global: true
# # <string> state of the role. Defaults to 'present'. If 'absent', role will be deleted.
# state: 'absent'
# # <bool> force deletion revoking all grants of the role.
# # <bool> force deletion revoking all grants of the role
# force: true
# - uid: 'basic_editor'
# version: 2
# - name: "custom:global:reports:reader"
# uid: "customglobalreportsreader1"
# # <bool> overwrite org id and removes a global role
# global: true
# # <list> list of roles to copy permissions from.
# from:
# - uid: 'basic_editor'
# global: true
# - name: 'fixed:users:writer'
# global: true
# # <list> list of the permissions to add/remove on top of the copied ones.
# permissions:
# - action: 'users:read'
# scope: 'users:*'
# - action: 'users:write'
# scope: 'users:*'
# # <string> state of the permission. Defaults to 'present'. If 'absent', the permission will be removed.
# state: absent
# force: true
# # <list> list role assignments to teams to create or remove.
# teams:
# # <string, required> name of the team you want to assign roles to. Required.
# - name: 'Users writers'
# # <int> org id. Will default to Grafana's default if not specified.
# orgId: 1
# # <list> list of roles to assign to the team
# roles:
# # <string> uid of the role you want to assign to the team.
# - uid: 'customuserswriter1'
# # <int> org id. Will default to Grafana's default if not specified.
# orgId: 1
# # <string> name of the role you want to assign to the team.
# - name: 'fixed:users:writer'
# # <bool> overwrite org id to specify the role is global.
# # list of roles to insert/update depending on what is available in the database
# roles:
# # <string, required> name of the role you want to create. Required
# - name: "custom:users:editor"
# # <string> uid of the role. Has to be unique for all orgs.
# uid: customuserseditor1
# # <string> description of the role, informative purpose only.
# description: "Role for our custom user editors"
# # <int> version of the role, Grafana will update the role when increased
# version: 2
# # <int> org id. will default to Grafana's default if not specified
# orgId: 1
# # <list> list of the permissions granted by this role
# permissions:
# # <string, required> action allowed
# - action: "users:read"
# #<string> scope it applies to
# scope: "users:*"
# - action: "users:write"
# scope: "users:*"
# - action: "users:create"
# scope: "users:*"
# # <list> list of builtIn roles the role should be assigned to
# builtInRoles:
# # <string, required> name of the builtin role you want to assign the role to
# - name: "Editor"
# # <int> org id. will default to the role org id
# orgId: 1
# - name: "custom:global:users:reader"
# uid: "customglobalusersreader1"
# description: "Global Role for custom user readers"
# version: 1
# # <bool> overwrite org id and creates a global role
# global: true
# permissions:
# - action: "users:read"
# scope: "users:*"
# builtInRoles:
# - name: "Viewer"
# orgId: 1
# - name: "Editor"
# # <bool> overwrite org id and assign role globally
# global: true
# # <string> state of the assignment. Defaults to 'present'. If 'absent', the assignment will be revoked.
# state: absent

View File

@@ -19,6 +19,8 @@ apiVersion: 1
# orgId: 1
# # <string> url
# url: http://localhost:8080
# # <string> database password, if used
# password:
# # <string> database user, if used
# user:
# # <string> database name, if used
@@ -27,6 +29,8 @@ apiVersion: 1
# basicAuth:
# # <string> basic auth username
# basicAuthUser:
# # <string> basic auth password
# basicAuthPassword:
# # <bool> enable/disable with credentials headers
# withCredentials:
# # <bool> mark as default datasource. Max one per org

View File

@@ -594,7 +594,7 @@
# LDAP background sync (Enterprise only)
# At 1 am every day
;sync_cron = "0 1 * * *"
;sync_cron = "0 0 1 * * *"
;active_sync_enabled = true
#################################### AWS ###########################
@@ -623,11 +623,6 @@
# Should be set for user-assigned identity and should be empty for system-assigned identity
;managed_identity_client_id =
#################################### Role-based Access Control ###########
[rbac]
;enabled = true
# If enabled, cache permissions in a in memory cache (Enterprise only)
;permission_cache = true
#################################### SMTP / Emailing ##########################
[smtp]
;enabled = false
@@ -903,7 +898,7 @@
#################################### Query History #############################
[query_history]
# Enable the Query history
;enabled = true
;enabled = false
#################################### Internal Grafana Metrics ##########################
# Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId
@@ -937,7 +932,6 @@
;url = https://grafana.com
#################################### Distributed tracing ############
# Opentracing is deprecated use opentelemetry instead
[tracing.jaeger]
# Enable by setting the address sending traces to jaeger (ex localhost:6831)
;address = localhost:6831
@@ -964,15 +958,6 @@
[tracing.opentelemetry.jaeger]
# jaeger destination (ex http://localhost:14268/api/traces)
; address = http://localhost:14268/api/traces
# Propagation specifies the text map propagation format: w3c, jaeger
; propagation = jaeger
# This is a configuration for OTLP exporter with GRPC protocol
[tracing.opentelemetry.otlp]
# otlp destination (ex localhost:4317)
; address = localhost:4317
# Propagation specifies the text map propagation format: w3c, jaeger
; propagation = w3c
#################################### External image storage ##########################
[external_image_storage]
@@ -1014,6 +999,8 @@
;server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
;callback_url =
# An auth token that will be sent to and verified by the renderer. The renderer will deny any request without an auth token matching the one configured on the renderer side.
;renderer_token = -
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
;concurrent_render_request_limit = 30

View File

@@ -117,14 +117,11 @@ If you're unsure, see the existing [changelog](https://github.com/grafana/grafan
### Pull request titles
The pull request title should be formatted according to `<Area>: <Summary>` (Both "Area" and "Summary" should start with a capital letter).
The Grafana team _squashes_ all commits into one when we accept a pull request. The title of the pull request becomes the subject line of the squashed commit message. We still encourage contributors to write informative commit messages, as they becomes a part of the Git commit body.
We use the pull request title when we generate change logs for releases. As such, we strive to make the title as informative as possible.
**Example:**
`Docs: Change url to URL in all documentation files`
Make sure that the title for your pull request uses the same format as the subject line in the commit message.
## Configuration changes

View File

@@ -136,23 +136,17 @@ Running the backend tests on Windows currently needs some tweaking, so use the b
go run build.go test
```
### Run SQLLite, PostgreSQL and MySQL integration tests
### Run PostgreSQL and MySQL integration tests
By default, Grafana runs SQLite to run tests with SQLite.
To run PostgreSQL and MySQL integration tests locally, you need to start the docker blocks for MySQL and/or PostgreSQL test data sources by running `make devenv sources=mysql_tests,postgres_tests`. When your test data sources are running, you can execute integration tests by running:
```bash
go test -covermode=atomic -tags=integration ./pkg/...
```
To run PostgreSQL and MySQL integration tests locally, start the Docker blocks for MySQL and/or PostgreSQL test data sources by running `make devenv sources=mysql_tests,postgres_tests`. When your test data sources are running, you can execute integration tests by running:
```bash
GRAFANA_TEST_DB=mysql go test -covermode=atomic -tags=integration ./pkg/...
```
and/or
```bash
```
GRAFANA_TEST_DB=postgres go test -covermode=atomic -tags=integration ./pkg/...
```

View File

@@ -1,194 +0,0 @@
# Localisation
Grafana uses the [LinguiJS](https://github.com/lingui/js-lingui) framework for managing translating phrases in the Grafana frontend.
## tl;dr
- Use `<Trans id="search-results.panel-link">Go to {panel.title}</Trans>` in code to add a translatable phrase
- Translations are stored in .po files in `public/locales/{locale}/messages.po`
- If a particular phrase is not available in the a language then it will fall back to English
## How to add a new translation phrase
1. Use one of `@lingui/macro`'s React components with the `id`, ensuring it conforms to the guidelines below, with the default english translation. e.g.
```jsx
import { Trans } from @lingui/macro
const SearchTitle = ({term}) => (
<Trans id="search-page.results-title">
Results for {term}
</Trans>
);
```
Prefer using the JSX components (compared to the plain javascript functions, see below) where possible for phrases. Many props can (and probably should) be changed to accept the `React.ReactNode` instead of `string` for phrases put into the DOM.
Note that Lingui must be able to statically analyse the code to extract the phrase, so the `id` can not be dynamic. e.g. the following will not work:
```jsx
const ErrorMessage = ({ id, message }) => <Trans id={`errors.${id}`}>There was an error: {message}</Trans>;
```
2. Upon reload, the default English phrase will appear on the page.
3. Before submitting your PR, run the `yarn i18n:extract` command to extract the messages you added into the `messages.po` file and make them available for translation.
## How translations work in Grafana
Grafana uses the [LinguiJS](https://github.com/lingui/js-lingui) framework for managing translating phrases in the Grafana frontend. It:
- Marks up phrases within our code for extraction
- Extracts phrases into messages catalogues for translating in external systems
- "Compiles" the catalogues to a format that can be used in the website
- Manages the user's locale and putting the translated phrases in the UI
### Phrase ID naming convention
We set explicit IDs for phrases to make it easier to identify phrases out of context, and to track where they're used. IDs follow a naming scheme that includes _where_ the phrase is used. The exception is the rare case of single reoccuring words like "Cancel", but default to using a feature/phrase specific phrase.
Message IDs are made of _up to_ three segments in the format `feature.area.phrase`. For example:
- `dashboard.header.refresh-label`
- `explore.toolbar.share-tooltip`
For components used all over the site, use just two segments:
- `footer.update`
- `navigation.home`
### Top-level provider
In [AppWrapper.tsx](/public/app/AppWrapper.tsx) the app is wrapped with `I18nProvider` from `public/app/core/localisation.tsx` where the Lingui instance is created with the user's preferred locale. This sets the appropriate context and allows any component from `@lingui/macro` to use the translations for the user's preferred locale.
### Message format
Lingui uses the [ICU MessageFormat](https://unicode-org.github.io/icu/userguide/format_parse/messages/) for the phrases in the .po catalogues. ICU has special syntax especially for describing plurals across multiple languages. For more details see the [Lingui docs](https://lingui.js.org/ref/message-format.html).
### Plain JS usage
See [Lingui Docs](https://lingui.js.org/ref/macro.html#t) for more details.
Sometimes you may need to translate a string cannot be represented in JSX, such as `placeholder` props. Use the `t` macro for this.
```jsx
import { t } from "@lingui/macro"
const placeholder = t({
id: 'form.username-placeholder',
message: `Username`
});
return <input type="value" placeholder={placeholder}>
```
While the `t` macro can technically be used outside of React functions (e.g, in actions/reducers), aim to keep all UI phrases within the React UI functions.
## Examples
See the [Lingui docs](https://lingui.js.org/ref/macro.html#usage) for more details.
### Basic usage
For fixed phrases:
```jsx
import { Trans } from '@lingui/macro';
<Trans id="page.greeting">Hello user!</Trans>;
```
You can include variables, just like regular JSX. Prefer using "simple" variables to make the extracted phrase easier to read for translators
```jsx
import { Trans } from '@lingui/macro';
// Bad - translators will see: Hello {0}
<Trans id="page.greeting">Hello {user.name}!</Trans>;
// Good - translators will see: Hello {userName}
const userName = user.name;
<Trans id="page.greeting">Hello {userName}!</Trans>;
```
Variables must be strings (or, must support calling `.toString()`, which we almost never want).
```jsx
import { Trans } from '@lingui/macro';
// This will not work
const userName = <strong>user.name</strong>;
<Trans id="page.greeting">Hello {userName}!</Trans>;
// Instead, put the JSX inside the phrase directly
const userName = user.name;
<Trans id="page.greeting">
Hello <strong>{userName}</strong>!
</Trans>;
```
### React components and HTML tags
Both HTML tags and React components can be included in a phase. The Lingui macro will replace them with placeholder tags for the translators
```js
import { Trans } from "@lingui/macro"
const randomVariable = "variable"
<Trans id="page.explainer">
Click <button>here</button> to <a href="https://grafana.com">learn more.</a>
</Trans>
// ↓ is transformed by macros into ↓
<Trans
id="page.explainer"
defaults="Click <0>here</0> to <1>learn more</1>"
components={[
<button />,
<Text />
]}
/>
// ↓ is in the messages.po file like ↓
msgid "page.explainer"
msgstr "Click <0>here</0> to <1>learn more</1>"
```
### Plurals
See the [Lingui docs](https://lingui.js.org/ref/macro.html#id1) for more details.
Plurals require special handling to make sure they can be translating according to the rules of each locale (which may be more complex that you think!). Use the `<Plural />` component and specify the plural forms for the default language (English). The message will be extracted into a form where translators can extend it with rules for other locales.
```js
import { Plural } from "@lingui/macro"
<Plural
id="sharing.shared-with"
value={sharedCount}
none="Not shared with anyone"
one="Shared with one person"
other="Shared with # people"
/>
// ↓ is transformed by macros into ↓
<Trans
id="example.plurals"
values={{ sharedCount }}
defaults="{sharedCount, plural, none {Not shared with anyone}, one {Shared with one person}, other {Shared with # people}"
/>
// sharedCount = 0 -> Not shared with anyone
// sharedCount = 1 -> Shared with one person
// sharedCount = 3 -> Shared with # people
```
### Date and time
[Lingui has functions](https://lingui.js.org/ref/core.html#I18n.date) to format dates and times according to the convention to the user's preferred locale, based on the browser [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) API. However, as displaying dates and times is fundamental to Grafana, guidelines have not been established for this yet.
## Documentation
[Grafana's documentation](https://grafana.com/docs/grafana/latest/) is not yet open for translation and should be authored in English only.

View File

@@ -27,15 +27,10 @@ Before you can merge a pull request, it must have a review approval, and all the
### Format the pull request title
The pull request title should be formatted according to `<Area>: <Summary>` (Both "Area" and "Summary" should start with a capital letter).
Keep the summary short and understandable for the community as a whole.
The pull request title should be formatted according to `<Area>: <Summary>`. Keep the summary short and understandable for the community as a whole.
All commits in a pull request are squashed when merged and the pull request title will be the default subject line of the squashed commit message. It's also used for [changelog/release notes](#include-in-changelog-and-release-notes).
**Example:**
`Docs: Change url to URL in all documentation files`
See [formatting guidelines](create-pull-request.md#formatting-guidelines) for more information.
### Assign a milestone
@@ -48,31 +43,11 @@ This makes it easier to track what changes go into a certain release. Without th
At Grafana we generate the [changelog](https://github.com/grafana/grafana/blob/main/CHANGELOG.md) and [release notes](https://grafana.com/docs/grafana/latest/release-notes/) based on merged pull requests. Including changes in the changelog/release notes is very important to provide a somewhat complete picture of what changes a Grafana release actually includes.
Exactly what changes should be added to the changelog is hard to answer but some general guidance would be any change that you think would be interesting for the community as a whole. Use your best judgement and/or ask other maintainers for advice.
There's a GitHub action available in the repository named [Update changelog](https://github.com/grafana/grafana/blob/main/.github/workflows/update-changelog.yml) that can manually be triggered to re-generate the changelog and release notes for any release.
Exactly what changes should be added to the changelog is hard to answer but here's some general guidance:
- Include any bug fix in general.
- Include any change that you think would be interesting for the community as a whole.
- Skip larger features divided in multiple pull requests since they might go into the release blog post/What's New article.
- Use your best judgement and/or ask other maintainers for advice.
- Including a change in error rather than skipping one that should have been there is better.
- Always keep [Format the pull request title](#format-the-pull-request-title) in mind.
An active decision to include change in changelog/release notes needs to be taken for every pull request. There's a pull request check named **Changelog Check** that will enforce this. By adding/removing labels on the pull request or updating the pull request title/description the check will be re-evaluated.
#### Skip changelog
If you don't want to include your change in changelog/release notes you need to add a label named **no-changelog** to the pull request.
#### Include in changelog/release notes
To include a pull request in the changelog/release notes you need to add a label named `add to changelog` to the pull request. Then additional validation rules is checked:
- Title need to be formatted according to [Format the pull request title](#format-the-pull-request-title)
- Description needs to include a breaking change notice if change is labeled to be a breaking change, see Breaking changes below for more information.
Not complying with above rules can make the **Changelog Check** fail with validation errors.
To include a pull request in the changelog/release notes the general rule of thumb is that a milestone should be assigned and labeled with `add to changelog`.
The changelog/release notes are divided into sections and here's a description of how you make a pull request show up in a certain section.

View File

@@ -7,15 +7,6 @@ deleteDatasources:
- name: gdev-influxdb2-influxql
- name: gdev-loki-0.3
- name: gdev-loki-0.4
- name: gdev-elasticsearch-v2-metrics
- name: gdev-elasticsearch-v2-logs
- name: gdev-elasticsearch-v5-metrics
- name: gdev-elasticsearch-v5-logs
- name: gdev-elasticsearch-v56-metrics
- name: gdev-elasticsearch-v56-logs
- name: gdev-elasticsearch-v6-metrics
- name: gdev-elasticsearch-v6-logs
- name: gdev-elasticsearch-v6-filebeat
datasources:
- name: gdev-graphite
@@ -39,21 +30,12 @@ datasources:
jsonData:
graphiteVersion: "0.9"
- name: gdev-alertmanager
type: alertmanager
uid: gdev-alertmanager
access: proxy
url: http://localhost:9093
jsonData:
implementation: prometheus
- name: gdev-prometheus
type: prometheus
access: proxy
url: http://localhost:9090
jsonData:
manageAlerts: true
alertmanagerUid: gdev-alertmanager
manageAlerts: false
- name: gdev-slow-prometheus
type: prometheus
@@ -114,7 +96,17 @@ datasources:
tsdbResolution: 1
tsdbVersion: 3
- name: gdev-elasticsearch
- name: gdev-elasticsearch-v2-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://localhost:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 2
- name: gdev-elasticsearch-v2-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
@@ -122,9 +114,77 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
logLevelField: level
logMessageField: line
esVersion: 8.0.0
esVersion: 2
- name: gdev-elasticsearch-v5-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://localhost:10200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 5
- name: gdev-elasticsearch-v5-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://localhost:10200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 5
- name: gdev-elasticsearch-v56-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://localhost:13200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 56
- name: gdev-elasticsearch-v56-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://localhost:13200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 56
- name: gdev-elasticsearch-v6-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://localhost:11200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v6-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://localhost:11200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v6-filebeat
type: elasticsearch
access: proxy
database: "[filebeat-]YYYY.MM.DD"
url: http://localhost:11200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v7-metrics
type: elasticsearch

View File

@@ -374,6 +374,17 @@
"title": "Dashboard list",
"type": "dashlist"
},
{
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 29
},
"id": 30,
"title": "Panel list",
"type": "pluginlist"
},
{
"gridPos": {
"h": 8,

View File

@@ -1,6 +0,0 @@
package dev_dashboards
import "embed"
//go:embed *.json */*.json
var DevDashboardFS embed.FS

View File

@@ -1,84 +0,0 @@
package dev_dashboards
import (
"encoding/json"
"io"
"io/fs"
"path/filepath"
"strings"
"testing"
"cuelang.org/go/cue/errors"
"github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/coremodel/dashboard"
"github.com/grafana/grafana/pkg/cuectx"
)
func TestDevenvDashboardValidity(t *testing.T) {
m, err := themaTestableDashboards()
require.NoError(t, err)
cm, err := dashboard.ProvideCoremodel(cuectx.ProvideThemaLibrary())
require.NoError(t, err)
for path, b := range m {
t.Run(path, func(t *testing.T) {
// The path arg here only matters for error output
cv, err := cuectx.JSONtoCUE(path, b)
require.NoError(t, err, "error while decoding dashboard JSON into a CUE value")
_, err = cm.CurrentSchema().Validate(cv)
if err != nil {
// Testify trims errors to short length. We want the full text
errstr := errors.Details(err, nil)
t.Log(errstr)
if strings.Contains(errstr, "null") {
t.Log("validation failure appears to involve nulls - see if scripts/stripnulls.sh has any effect?")
}
t.FailNow()
}
})
}
}
func themaTestableDashboards() (map[string][]byte, error) {
m := make(map[string][]byte)
in := DevDashboardFS
err := fs.WalkDir(in, ".", func(path string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
if d.IsDir() || filepath.Ext(d.Name()) != ".json" {
return nil
}
// nolint:gosec
f, err := in.Open(path)
if err != nil {
return err
}
defer f.Close() // nolint: errcheck
b, err := io.ReadAll(f)
if err != nil {
return err
}
jtree := make(map[string]interface{})
json.Unmarshal(b, &jtree)
if oldschemav, has := jtree["schemaVersion"]; !has || !(oldschemav.(float64) > dashboard.HandoffSchemaVersion-1) {
return nil
}
m[path] = b
return nil
})
if err != nil {
return nil, err
}
return m, nil
}

View File

@@ -0,0 +1,736 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "Elastic 5 Logs",
"enable": false,
"iconColor": "rgba(255, 96, 96, 1)",
"limit": 100,
"name": "test",
"query": "",
"showIn": 0,
"textField": "description",
"type": "alert"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1591027568655,
"links": [
{
"asDropdown": true,
"icon": "external link",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"title": "Dashboards",
"type": "dashboards"
}
],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v2-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": false,
"max": true,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "3",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "1",
"size": "5"
},
"type": "terms"
},
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "max"
}
],
"query": "*",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Top 5 servers",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v2-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 7
},
"hiddenSeries": false,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "5m",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {
"percents": [25, 50, 75, 95, 99]
},
"type": "percentiles"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Percentiles & Metric filter",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v2-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 7
},
"hiddenSeries": false,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {
"std_deviation_bounds_lower": true,
"std_deviation_bounds_upper": true
},
"settings": {},
"type": "extended_stats"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Standard dev",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"columns": [
{
"text": "@hostname",
"value": "@hostname"
},
{
"text": "Average",
"value": "Average"
},
{
"text": "Max",
"value": "Max"
},
{
"text": "Sum",
"value": "Sum"
}
],
"datasource": "gdev-elasticsearch-v2-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 13
},
"id": 6,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
},
{
"align": "auto",
"colorMode": null,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "2",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "_term",
"size": "0"
},
"type": "terms"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
},
{
"field": "@value",
"id": "3",
"meta": {},
"settings": {},
"type": "max"
},
{
"field": "@value",
"id": "4",
"meta": {},
"settings": {},
"type": "sum"
}
],
"refId": "B",
"timeField": "@timestamp"
}
],
"title": "ES Metrics",
"transform": "table",
"type": "table-old"
},
{
"columns": [
{
"text": "@timestamp",
"value": "@timestamp"
},
{
"text": "@message",
"value": "@message"
},
{
"text": "tags",
"value": "tags"
},
{
"text": "description",
"value": "description"
}
],
"datasource": "gdev-elasticsearch-v2-logs",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 20
},
"id": 5,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
}
],
"targets": [
{
"bucketAggs": [],
"dsType": "elasticsearch",
"metrics": [
{
"field": "select field",
"id": "1",
"meta": {},
"settings": {
"size": 500
},
"type": "raw_document"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"title": "ES Log query",
"transform": "json",
"type": "table-old"
},
{
"circleMaxSize": 30,
"circleMinSize": 2,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"datasource": "gdev-elasticsearch-v2-metrics",
"decimals": 0,
"esGeoPoint": "@location",
"esMetric": "Average",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 12,
"w": 24,
"x": 0,
"y": 27
},
"hideEmpty": false,
"hideZero": false,
"id": 8,
"initialZoom": 1,
"links": [],
"locationData": "geohash",
"mapCenter": "(0°, 0°)",
"mapCenterLatitude": 0,
"mapCenterLongitude": 0,
"maxDataPoints": 1,
"mouseWheelZoom": false,
"showLegend": true,
"stickyLabels": false,
"tableQueryOptions": {
"geohashField": "geohash",
"latitudeField": "latitude",
"longitudeField": "longitude",
"metricField": "metric",
"queryType": "geohash"
},
"targets": [
{
"bucketAggs": [
{
"fake": true,
"field": "@location",
"id": "3",
"settings": {
"precision": 2
},
"type": "geohash_grid"
}
],
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": "0,10",
"title": "World map panel",
"type": "grafana-worldmap-panel",
"unitPlural": "",
"unitSingle": "",
"valueName": "total"
}
],
"schemaVersion": 25,
"style": "dark",
"tags": ["elasticsearch", "gdev", "datasource-test"],
"templating": {
"list": [
{
"datasource": "gdev-elasticsearch-v2-metrics",
"filters": [],
"hide": 0,
"label": "",
"name": "Filters",
"skipUrlSync": false,
"type": "adhoc"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"collapse": false,
"enable": true,
"notice": false,
"now": true,
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"status": "Stable",
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"],
"type": "timepicker"
},
"timezone": "browser",
"title": "Datasource tests - Elasticsearch v2",
"uid": "RlqLq2fiz",
"version": 1
}

View File

@@ -0,0 +1,737 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "Elastic 5 Logs",
"enable": false,
"iconColor": "rgba(255, 96, 96, 1)",
"limit": 100,
"name": "test",
"query": "",
"showIn": 0,
"textField": "description",
"type": "alert"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1591027589702,
"links": [
{
"asDropdown": true,
"icon": "external link",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"title": "Dashboards",
"type": "dashboards"
}
],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v5-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": false,
"max": true,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "3",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "1",
"size": "5"
},
"type": "terms"
},
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "max"
}
],
"query": "*",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Top 5 servers",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v5-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 7
},
"hiddenSeries": false,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "5m",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {
"percents": [25, 50, 75, 95, 99]
},
"type": "percentiles"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Percentiles & Metric filter",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v5-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 7
},
"hiddenSeries": false,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {
"std_deviation_bounds_lower": true,
"std_deviation_bounds_upper": true
},
"settings": {},
"type": "extended_stats"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Standard dev",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"columns": [
{
"text": "@hostname",
"value": "@hostname"
},
{
"text": "Average",
"value": "Average"
},
{
"text": "Max",
"value": "Max"
},
{
"text": "Sum",
"value": "Sum"
}
],
"datasource": "gdev-elasticsearch-v5-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 13
},
"id": 6,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
},
{
"align": "auto",
"colorMode": null,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "2",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "_term",
"size": "0"
},
"type": "terms"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
},
{
"field": "@value",
"id": "3",
"meta": {},
"settings": {},
"type": "max"
},
{
"field": "@value",
"id": "4",
"meta": {},
"settings": {},
"type": "sum"
}
],
"refId": "B",
"timeField": "@timestamp"
}
],
"title": "ES Metrics",
"transform": "table",
"type": "table-old"
},
{
"columns": [
{
"text": "@timestamp",
"value": "@timestamp"
},
{
"text": "@message",
"value": "@message"
},
{
"text": "tags",
"value": "tags"
},
{
"text": "description",
"value": "description"
}
],
"datasource": "gdev-elasticsearch-v5-logs",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 20
},
"id": 5,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
}
],
"targets": [
{
"bucketAggs": [],
"dsType": "elasticsearch",
"metrics": [
{
"field": "select field",
"id": "1",
"meta": {},
"settings": {
"size": 500
},
"type": "raw_document"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"title": "ES Log query",
"transform": "json",
"type": "table-old"
},
{
"circleMaxSize": 30,
"circleMinSize": 2,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"datasource": "gdev-elasticsearch-v5-metrics",
"decimals": 0,
"esGeoPoint": "@location",
"esLocationName": "",
"esMetric": "Average",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 12,
"w": 24,
"x": 0,
"y": 27
},
"hideEmpty": false,
"hideZero": false,
"id": 8,
"initialZoom": 1,
"links": [],
"locationData": "geohash",
"mapCenter": "(0°, 0°)",
"mapCenterLatitude": 0,
"mapCenterLongitude": 0,
"maxDataPoints": 1,
"mouseWheelZoom": false,
"showLegend": true,
"stickyLabels": false,
"tableQueryOptions": {
"geohashField": "geohash",
"latitudeField": "latitude",
"longitudeField": "longitude",
"metricField": "metric",
"queryType": "geohash"
},
"targets": [
{
"bucketAggs": [
{
"fake": true,
"field": "@location",
"id": "3",
"settings": {
"precision": 2
},
"type": "geohash_grid"
}
],
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": "0,10",
"title": "World map panel",
"type": "grafana-worldmap-panel",
"unitPlural": "",
"unitSingle": "",
"valueName": "total"
}
],
"schemaVersion": 25,
"style": "dark",
"tags": ["elasticsearch", "gdev", "datasource-test"],
"templating": {
"list": [
{
"datasource": "gdev-elasticsearch-v5-metrics",
"filters": [],
"hide": 0,
"label": "",
"name": "Filters",
"skipUrlSync": false,
"type": "adhoc"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"collapse": false,
"enable": true,
"notice": false,
"now": true,
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"status": "Stable",
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"],
"type": "timepicker"
},
"timezone": "browser",
"title": "Datasource tests - Elasticsearch v5",
"uid": "8HjT32Bmz",
"version": 1
}

View File

@@ -0,0 +1,737 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "Elastic 5 Logs",
"enable": false,
"iconColor": "rgba(255, 96, 96, 1)",
"limit": 100,
"name": "test",
"query": "",
"showIn": 0,
"textField": "description",
"type": "alert"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1591027589702,
"links": [
{
"asDropdown": true,
"icon": "external link",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"title": "Dashboards",
"type": "dashboards"
}
],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v5-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": false,
"max": true,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "3",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "1",
"size": "5"
},
"type": "terms"
},
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "max"
}
],
"query": "*",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Top 5 servers",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v56-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 7
},
"hiddenSeries": false,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "5m",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {
"percents": [25, 50, 75, 95, 99]
},
"type": "percentiles"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Percentiles & Metric filter",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v56-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 7
},
"hiddenSeries": false,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {
"std_deviation_bounds_lower": true,
"std_deviation_bounds_upper": true
},
"settings": {},
"type": "extended_stats"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Standard dev",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"columns": [
{
"text": "@hostname",
"value": "@hostname"
},
{
"text": "Average",
"value": "Average"
},
{
"text": "Max",
"value": "Max"
},
{
"text": "Sum",
"value": "Sum"
}
],
"datasource": "gdev-elasticsearch-v56-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 13
},
"id": 6,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
},
{
"align": "auto",
"colorMode": null,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "2",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "_term",
"size": "0"
},
"type": "terms"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
},
{
"field": "@value",
"id": "3",
"meta": {},
"settings": {},
"type": "max"
},
{
"field": "@value",
"id": "4",
"meta": {},
"settings": {},
"type": "sum"
}
],
"refId": "B",
"timeField": "@timestamp"
}
],
"title": "ES Metrics",
"transform": "table",
"type": "table-old"
},
{
"columns": [
{
"text": "@timestamp",
"value": "@timestamp"
},
{
"text": "@message",
"value": "@message"
},
{
"text": "tags",
"value": "tags"
},
{
"text": "description",
"value": "description"
}
],
"datasource": "gdev-elasticsearch-v56-logs",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 20
},
"id": 5,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
}
],
"targets": [
{
"bucketAggs": [],
"dsType": "elasticsearch",
"metrics": [
{
"field": "select field",
"id": "1",
"meta": {},
"settings": {
"size": 500
},
"type": "raw_document"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"title": "ES Log query",
"transform": "json",
"type": "table-old"
},
{
"circleMaxSize": 30,
"circleMinSize": 2,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"datasource": "gdev-elasticsearch-v56-metrics",
"decimals": 0,
"esGeoPoint": "@location",
"esLocationName": "",
"esMetric": "Average",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 12,
"w": 24,
"x": 0,
"y": 27
},
"hideEmpty": false,
"hideZero": false,
"id": 8,
"initialZoom": 1,
"links": [],
"locationData": "geohash",
"mapCenter": "(0°, 0°)",
"mapCenterLatitude": 0,
"mapCenterLongitude": 0,
"maxDataPoints": 1,
"mouseWheelZoom": false,
"showLegend": true,
"stickyLabels": false,
"tableQueryOptions": {
"geohashField": "geohash",
"latitudeField": "latitude",
"longitudeField": "longitude",
"metricField": "metric",
"queryType": "geohash"
},
"targets": [
{
"bucketAggs": [
{
"fake": true,
"field": "@location",
"id": "3",
"settings": {
"precision": 2
},
"type": "geohash_grid"
}
],
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": "0,10",
"title": "World map panel",
"type": "grafana-worldmap-panel",
"unitPlural": "",
"unitSingle": "",
"valueName": "total"
}
],
"schemaVersion": 25,
"style": "dark",
"tags": ["elasticsearch", "gdev", "datasource-test"],
"templating": {
"list": [
{
"datasource": "gdev-elasticsearch-v56-metrics",
"filters": [],
"hide": 0,
"label": "",
"name": "Filters",
"skipUrlSync": false,
"type": "adhoc"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"collapse": false,
"enable": true,
"notice": false,
"now": true,
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"status": "Stable",
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"],
"type": "timepicker"
},
"timezone": "browser",
"title": "Datasource tests - Elasticsearch v56",
"uid": "8HjT32BmO",
"version": 1
}

View File

@@ -0,0 +1,737 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "gdev-elasticsearch-v6-logs",
"enable": false,
"iconColor": "rgba(255, 96, 96, 1)",
"limit": 100,
"name": "test",
"query": "",
"showIn": 0,
"textField": "description",
"type": "alert"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1591027529668,
"links": [
{
"asDropdown": true,
"icon": "external link",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"title": "Dashboards",
"type": "dashboards"
}
],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v6-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 1,
"legend": {
"alignAsTable": true,
"avg": false,
"current": false,
"max": true,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "3",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "1",
"size": "5"
},
"type": "terms"
},
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "max"
}
],
"query": "*",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Top 5 servers",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v6-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 7
},
"hiddenSeries": false,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "5m",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {
"percents": [25, 50, 75, 95, 99]
},
"type": "percentiles"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Percentiles & Metric filter",
"tooltip": {
"msResolution": false,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {
"Count": "#6ED0E0"
},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v6-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"grid": {},
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 7
},
"hiddenSeries": false,
"id": 3,
"legend": {
"alignAsTable": true,
"avg": true,
"current": false,
"max": false,
"min": false,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"lines": true,
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [
{
"alias": "Count",
"lines": false,
"yaxis": 2,
"zindex": -1
}
],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "{{metric}}",
"bucketAggs": [
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {
"std_deviation_bounds_lower": true,
"std_deviation_bounds_upper": true
},
"settings": {},
"type": "extended_stats"
}
],
"query": "@metric:cpu",
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Standard dev",
"tooltip": {
"msResolution": true,
"shared": true,
"sort": 0,
"value_type": "cumulative"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"columns": [
{
"text": "@hostname",
"value": "@hostname"
},
{
"text": "Average",
"value": "Average"
},
{
"text": "Max",
"value": "Max"
},
{
"text": "Sum",
"value": "Sum"
}
],
"datasource": "gdev-elasticsearch-v6-metrics",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 13
},
"id": 6,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
},
{
"align": "auto",
"colorMode": null,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"bucketAggs": [
{
"field": "@hostname",
"id": "2",
"settings": {
"min_doc_count": 1,
"order": "asc",
"orderBy": "_term",
"size": "0"
},
"type": "terms"
}
],
"dsType": "elasticsearch",
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
},
{
"field": "@value",
"id": "3",
"meta": {},
"settings": {},
"type": "max"
},
{
"field": "@value",
"id": "4",
"meta": {},
"settings": {},
"type": "sum"
}
],
"refId": "B",
"timeField": "@timestamp"
}
],
"title": "ES Metrics",
"transform": "table",
"type": "table-old"
},
{
"columns": [
{
"text": "@timestamp",
"value": "@timestamp"
},
{
"text": "@message",
"value": "@message"
},
{
"text": "tags",
"value": "tags"
},
{
"text": "description",
"value": "description"
}
],
"datasource": "gdev-elasticsearch-v6-logs",
"editable": true,
"error": false,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fontSize": "100%",
"gridPos": {
"h": 7,
"w": 24,
"x": 0,
"y": 20
},
"id": 5,
"links": [],
"pageSize": null,
"scroll": true,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "@timestamp",
"type": "date"
}
],
"targets": [
{
"bucketAggs": [],
"dsType": "elasticsearch",
"metrics": [
{
"field": "select field",
"id": "1",
"meta": {},
"settings": {
"size": 500
},
"type": "raw_document"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"title": "ES Log query",
"transform": "json",
"type": "table-old"
},
{
"circleMaxSize": 30,
"circleMinSize": 2,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"datasource": "gdev-elasticsearch-v6-metrics",
"decimals": 0,
"esGeoPoint": "@location",
"esMetric": "Average",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 12,
"w": 24,
"x": 0,
"y": 27
},
"hideEmpty": false,
"hideZero": false,
"id": 8,
"initialZoom": "1",
"links": [],
"locationData": "geohash",
"mapCenter": "(0°, 0°)",
"mapCenterLatitude": 0,
"mapCenterLongitude": 0,
"maxDataPoints": 1,
"mouseWheelZoom": false,
"showLegend": true,
"stickyLabels": false,
"tableQueryOptions": {
"geohashField": "geohash",
"latitudeField": "latitude",
"longitudeField": "longitude",
"metricField": "metric",
"queryType": "geohash"
},
"targets": [
{
"bucketAggs": [
{
"fake": true,
"field": "@location",
"id": "3",
"settings": {
"precision": 2
},
"type": "geohash_grid"
}
],
"metrics": [
{
"field": "@value",
"id": "1",
"meta": {},
"settings": {},
"type": "avg"
}
],
"refId": "A",
"target": "",
"timeField": "@timestamp"
}
],
"thresholds": "0,10",
"title": "World map panel",
"type": "grafana-worldmap-panel",
"unitPlural": "",
"unitSingle": "",
"valueName": "total"
}
],
"refresh": false,
"schemaVersion": 25,
"style": "dark",
"tags": ["elasticsearch", "gdev", "datasource-test"],
"templating": {
"list": [
{
"datasource": "gdev-elasticsearch-v6-metrics",
"filters": [],
"hide": 0,
"label": "",
"name": "Filters",
"skipUrlSync": false,
"type": "adhoc"
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"collapse": false,
"enable": true,
"notice": false,
"now": true,
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"status": "Stable",
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"],
"type": "timepicker"
},
"timezone": "browser",
"title": "Datasource tests - Elasticsearch v6",
"uid": "NF8Pq2Biz",
"version": 1
}

View File

@@ -0,0 +1,241 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1591027621672,
"links": [
{
"asDropdown": true,
"icon": "external link",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"title": "Dashboards",
"type": "dashboards"
}
],
"panels": [
{
"aliasColors": {
"error": "red"
},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-elasticsearch-v6-filebeat",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 5,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": false,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": true,
"steppedLine": false,
"targets": [
{
"bucketAggs": [
{
"fake": true,
"field": "fields.level",
"id": "3",
"settings": {
"min_doc_count": 1,
"order": "desc",
"orderBy": "_term",
"size": "10"
},
"type": "terms"
},
{
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "5m",
"min_doc_count": 1,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"metrics": [
{
"field": "select field",
"id": "1",
"type": "count"
}
],
"query": "fields.app:grafana",
"refId": "A",
"timeField": "@timestamp"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Panel Title",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"datasource": "gdev-elasticsearch-v6-filebeat",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 22,
"w": 24,
"x": 0,
"y": 5
},
"id": 2,
"links": [],
"options": {
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"bucketAggs": [
{
"$$hashKey": "object:394",
"field": "@timestamp",
"id": "2",
"settings": {
"interval": "auto",
"min_doc_count": 0,
"trimEdges": 0
},
"type": "date_histogram"
}
],
"metrics": [
{
"$$hashKey": "object:359",
"field": "select field",
"id": "1",
"meta": {},
"settings": {},
"type": "logs"
}
],
"query": "fields.app:grafana",
"refId": "A",
"timeField": "@timestamp"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "logs"
}
],
"schemaVersion": 25,
"style": "dark",
"tags": ["gdev", "elasticsearch", "datasource-test"],
"templating": {
"list": [
{
"datasource": "gdev-elasticsearch-v6-filebeat",
"filters": [],
"hide": 0,
"label": "",
"name": "Filters",
"skipUrlSync": false,
"type": "adhoc"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
},
"timezone": "",
"title": "Datasource tests - Elasticsearch v6 Filebeat",
"uid": "06tPt4gZz",
"version": 1
}

View File

@@ -36,7 +36,7 @@
"id": 2,
"panels": [],
"repeat": "row",
"title": "Row $row",
"title": "Row title $row",
"type": "row"
},
{
@@ -111,7 +111,7 @@
"sort": "none"
}
},
"title": "Row $row non-repeating panel",
"title": "Panel Title",
"type": "timeseries"
},
{
@@ -188,7 +188,7 @@
},
"repeat": "horizontal",
"repeatDirection": "h",
"title": "Row $row repeating panel $horizontal",
"title": "Horizontal repeating $horizontal",
"type": "timeseries"
}
],

View File

@@ -3,10 +3,7 @@
"list": [
{
"builtIn": 1,
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
@@ -22,7 +19,6 @@
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [
{
@@ -36,7 +32,6 @@
"type": "dashboards"
}
],
"liveNow": false,
"panels": [
{
"datasource": {
@@ -1344,6 +1339,5 @@
"timezone": "",
"title": "Panel Tests - Graph NG - Gaps and Connected",
"uid": "8mmCAF1Mz",
"version": 1,
"weekStart": ""
"version": 2
}

View File

@@ -71,7 +71,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -177,7 +178,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -264,7 +266,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -351,7 +354,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -481,7 +485,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -568,7 +573,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -655,7 +661,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -785,7 +792,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -885,7 +893,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -973,7 +982,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1059,7 +1069,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1144,7 +1155,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1241,7 +1253,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1341,7 +1354,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1441,7 +1455,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1540,7 +1555,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1676,7 +1692,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1783,7 +1800,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1891,7 +1909,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2021,7 +2040,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2108,7 +2128,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2219,7 +2240,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2334,7 +2356,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2437,7 +2460,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2540,7 +2564,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2676,7 +2701,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2812,7 +2838,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -3382,10 +3409,94 @@
],
"title": "'undefined' join artifacts (lines)",
"type": "timeseries"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"axisSoftMin": 0,
"fillOpacity": 80,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineWidth": 1,
"scaleDistribution": {
"type": "linear"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 65
},
"id": 39,
"options": {
"barRadius": 0,
"barWidth": 0.97,
"groupWidth": 0.7,
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"orientation": "auto",
"showValue": "auto",
"stacking": "percent",
"tooltip": {
"mode": "single",
"sort": "none"
},
"xTickLabelRotation": 0,
"xTickLabelSpacing": 0
},
"pluginVersion": "9.1.0-pre",
"targets": [
{
"csvContent": "name, number, number2, number3, number4\nName1, 40, 5, 20, 10\nName2, 0,0,0,0\nName3, 6, 3, 5, 1\nName4, 1, 1, 1, 2",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_content"
}
],
"title": "Bar chart stack with 0 only series",
"type": "barchart"
}
],
"refresh": false,
"schemaVersion": 36,
"schemaVersion": 32,
"style": "dark",
"tags": [
"gdev",
@@ -3405,4 +3516,4 @@
"uid": "1KxMUdE7k",
"version": 5,
"weekStart": ""
}
}

View File

@@ -1,553 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"target": {
"limit": 100,
"matchAny": false,
"tags": [],
"type": "dashboard"
},
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 1,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "points",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 2,
"scaleDistribution": {
"log": 2,
"type": "log"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 0,
"y": 0
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom"
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"max": 500000,
"min": 0.01,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 2,
"spread": 1000,
"startValue": 0.01
}
],
"title": "Time series",
"type": "timeseries"
},
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 8,
"y": 0
},
"id": 6,
"options": {
"bucket": {
"layout": "auto"
},
"calculate": true,
"calculation": {
"yBuckets": {
"scale": {
"log": 2,
"type": "log"
}
}
},
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"scale": "exponential",
"scheme": "Spectral",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"mode": "calculate",
"tooltip": {
"show": true,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false
},
"yAxisLabels": "auto",
"yAxisReverse": false
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"panelId": 3,
"refId": "A"
}
],
"title": "log2",
"type": "heatmap-new"
},
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 16,
"y": 0
},
"id": 7,
"options": {
"bucket": {
"layout": "auto"
},
"calculate": true,
"calculation": {
"yBuckets": {
"scale": {
"log": 2,
"type": "log"
},
"value": "2"
}
},
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"scale": "exponential",
"scheme": "Spectral",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"mode": "calculate",
"tooltip": {
"show": true,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false
},
"yAxisLabels": "auto",
"yAxisReverse": false
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"panelId": 3,
"refId": "A"
}
],
"title": "log2 split 2",
"type": "heatmap-new"
},
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 0,
"y": 14
},
"id": 4,
"options": {
"bucket": {
"layout": "auto"
},
"calculate": true,
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"scale": "exponential",
"scheme": "Spectral",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"mode": "calculate",
"tooltip": {
"show": true,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false
},
"yAxisLabels": "auto",
"yAxisReverse": false
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"panelId": 3,
"refId": "A"
}
],
"title": "linear",
"type": "heatmap-new"
},
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 8,
"y": 14
},
"id": 5,
"options": {
"bucket": {
"layout": "auto"
},
"calculate": true,
"calculation": {
"yBuckets": {
"scale": {
"log": 10,
"type": "log"
}
}
},
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"scale": "exponential",
"scheme": "Spectral",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"mode": "calculate",
"tooltip": {
"show": true,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false
},
"yAxisLabels": "auto",
"yAxisReverse": false
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"panelId": 3,
"refId": "A"
}
],
"title": "log10",
"type": "heatmap-new"
},
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"fieldConfig": {
"defaults": {
"custom": {
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"scaleDistribution": {
"type": "linear"
}
}
},
"overrides": []
},
"gridPos": {
"h": 14,
"w": 8,
"x": 16,
"y": 14
},
"id": 8,
"options": {
"bucket": {
"layout": "auto"
},
"calculate": true,
"calculation": {
"yBuckets": {
"scale": {
"log": 10,
"type": "log"
},
"value": "2"
}
},
"cellGap": 1,
"color": {
"exponent": 0.5,
"fill": "dark-orange",
"mode": "scheme",
"scale": "exponential",
"scheme": "Spectral",
"steps": 64
},
"exemplars": {
"color": "rgba(255,0,255,0.7)"
},
"filterValues": {
"le": 1e-9
},
"legend": {
"show": true
},
"mode": "calculate",
"tooltip": {
"show": true,
"yHistogram": false
},
"yAxis": {
"axisPlacement": "left",
"reverse": false
},
"yAxisLabels": "auto",
"yAxisReverse": false
},
"pluginVersion": "9.0.0-pre",
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "-- Dashboard --"
},
"panelId": 3,
"refId": "A"
}
],
"title": "log10 split 2",
"type": "heatmap-new"
}
],
"schemaVersion": 36,
"style": "dark",
"tags": ["gdev", "panel-tests", "graph-ng"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Heatmap calculate (log)",
"uid": "ZXYQTA97ZZ",
"version": 1,
"weekStart": ""
}

View File

@@ -2,6 +2,6 @@
FROM golang:latest
ADD main.go /
WORKDIR /
RUN go mod init alert_webhook_listener && go build -o main .
RUN go build -o main .
EXPOSE 3010
ENTRYPOINT ["/main"]

View File

@@ -1,4 +1,5 @@
alert_webhook_listener:
build: docker/blocks/alert_webhook_listener
network_mode: host
ports:
- "3010:3010"

View File

@@ -3,7 +3,7 @@ package main
import (
"fmt"
"io"
"io/ioutil"
"io/ioutil" //nolint:staticcheck // No need to change in v8.
"log"
"net/http"
"strings"
@@ -25,5 +25,6 @@ func hello(w http.ResponseWriter, r *http.Request) {
func main() {
http.HandleFunc("/", hello)
//nolint:gosec
log.Fatal(http.ListenAndServe(":3010", nil))
}

View File

@@ -1 +0,0 @@
elastic_version=8.2.0

View File

@@ -1,3 +0,0 @@
FROM node:16-alpine
COPY data.js /home/node/data.js

View File

@@ -1,137 +0,0 @@
const http = require('http');
if (process.argv.length !== 3) {
throw new Error('invalid command line: use node sendLogs.js ELASTIC_BASE_URL');
}
const ELASTIC_BASE_URL = process.argv[2];
// helper function, do a http request
async function jsonRequest(data, method, url, expectedStatusCode) {
return new Promise((resolve, reject) => {
const req = http.request(
{
protocol: url.protocol,
host: url.hostname,
port: url.port,
path: `${url.pathname}${url.search}`,
method,
headers: { 'content-type': 'application/json' },
},
(res) => {
if (res.statusCode !== expectedStatusCode) {
reject(new Error(`Invalid response: ${res.statusCode}`));
} else {
resolve();
}
}
);
req.on('error', (err) => reject(err));
req.write(JSON.stringify(data));
req.end();
});
}
// helper function, choose a random element from an array
function chooseRandomElement(items) {
const index = Math.trunc(Math.random() * items.length);
return items[index];
}
// helper function, sleep for a duration
async function sleep(duration) {
return new Promise((resolve) => {
setTimeout(resolve, duration);
});
}
async function elasticSendLogItem(timestamp, item) {
// we need the YYYY.MM.DD format
const timestampText = timestamp.toISOString().slice(0, 10).replace(/-/g, '.');
const url = new URL(ELASTIC_BASE_URL);
url.pathname = `/logs-${timestampText}/_doc`;
await jsonRequest(item, 'POST', url, 201);
console.log(`posted to ${url.toString()}`);
}
async function elasticSetupIndexTemplate() {
const data = {
index_patterns: ['logs-*'],
template: {
mappings: {
properties: {
'@timestamp': {
type: 'date',
},
counter: {
type: 'integer',
},
float: {
type: 'float',
},
level: {
type: 'keyword',
},
label: {
type: 'keyword',
},
location: {
type: 'geo_point',
},
},
},
},
};
const url = new URL(ELASTIC_BASE_URL);
url.pathname = '/_index_template/gdev';
await jsonRequest(data, 'PUT', url, 200);
}
function makeRandomPoint() {
const angle = Math.random() * 2 * Math.PI;
const x = 45 * Math.sin(angle);
const y = 45 * Math.cos(angle);
return y + ', ' + x;
}
function getRandomLogItem(counter, timestamp) {
const randomText = `${Math.trunc(Math.random() * 1000 * 1000 * 1000)}`;
const maybeAnsiText = Math.random() < 0.5 ? 'with ANSI \u001b[31mpart of the text\u001b[0m' : '';
return {
'@timestamp': timestamp.toISOString(),
line: `log text ${maybeAnsiText} [${randomText}]`,
counter: counter.toString(),
float: 100 * Math.random().toString(),
label: chooseRandomElement(['val1', 'val2', 'val3']),
level: chooseRandomElement(['info', 'info', 'error']),
// location: chooseRandomElement(LOCATIONS),
location: makeRandomPoint(),
};
}
async function main() {
await elasticSetupIndexTemplate();
const SLEEP_ANGLE_STEP = Math.PI / 200;
let sleepAngle = 0;
function getNextSineWaveSleepDuration() {
sleepAngle += SLEEP_ANGLE_STEP;
return Math.trunc(1000 * Math.abs(Math.sin(sleepAngle)));
}
for (let step = 0; step < 300; step++) {
await sleep(getNextSineWaveSleepDuration());
const timestamp = new Date();
const item = getRandomLogItem(step + 1, timestamp);
elasticSendLogItem(timestamp, item);
}
}
// when running in docker, we catch the needed stop-signal, to shutdown fast
process.on('SIGTERM', () => {
console.log('shutdown requested');
process.exit(0);
});
main();

View File

@@ -1,24 +1,22 @@
# You need to run 'sysctl -w vm.max_map_count=262144' on the host machine
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:${elastic_version}
elasticsearch-latest:
image: docker.elastic.co/elasticsearch/elasticsearch:8.0.0-beta1
command: elasticsearch
environment:
- "discovery.type=single-node"
- "xpack.license.self_generated.type=basic"
- "xpack.security.enabled=false"
ports:
- "9200:9200"
- "14200:9200"
- "14300:9300"
data:
build: docker/blocks/elastic/data
command: node /home/node/data.js http://elasticsearch:9200
depends_on:
- elasticsearch
# elastic starts slowly, the first couple start of data.js
# might fail, so we auto-restart it on failure.
deploy:
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 20 # should be enough
# TODO: uncomment when https://github.com/grafana/fake-data-gen/pull/20 is merged
# fake-elastic-latest-data:
# image: grafana/fake-data-gen
# links:
# - elasticsearch-latest
# environment:
# FD_SERVER: elasticsearch-latest
# FD_DATASOURCE: elasticsearch8
# FD_PORT: 9200

View File

@@ -0,0 +1,15 @@
elasticsearch2:
image: elasticsearch:2.4.1
command: elasticsearch -Des.network.host=0.0.0.0
ports:
- "9200:9200"
- "9300:9300"
volumes:
- ./docker/blocks/elastic2/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
fake-elastic-data:
image: grafana/fake-data-gen
environment:
FD_SERVER: elasticsearch2
FD_DATASOURCE: elasticsearch
FD_PORT: 9200

View File

@@ -0,0 +1,2 @@
script.inline: on
script.indexed: on

View File

@@ -0,0 +1,15 @@
elasticsearch5:
image: elasticsearch:5.0.2
command: elasticsearch
ports:
- '10200:9200'
- '10300:9300'
fake-elastic5-data:
image: grafana/fake-data-gen
links:
- elasticsearch5
environment:
FD_SERVER: elasticsearch5
FD_DATASOURCE: elasticsearch
FD_PORT: 9200

View File

@@ -0,0 +1,15 @@
elasticsearch56:
image: elasticsearch:5.6.16
command: elasticsearch
ports:
- '13200:9200'
- '13300:9300'
fake-elastic56-data:
image: grafana/fake-data-gen
links:
- elasticsearch56
environment:
FD_SERVER: elasticsearch56
FD_DATASOURCE: elasticsearch
FD_PORT: 9200

View File

@@ -0,0 +1,25 @@
# You need to run 'sysctl -w vm.max_map_count=262144' on the host machine
elasticsearch6:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.7.1
command: elasticsearch
ports:
- "11200:9200"
- "11300:9300"
fake-elastic6-data:
image: grafana/fake-data-gen
links:
- elasticsearch6
environment:
FD_SERVER: elasticsearch6
FD_DATASOURCE: elasticsearch6
FD_PORT: 9200
filebeat6:
image: docker.elastic.co/beats/filebeat-oss:6.7.1
command: filebeat -e -strict.perms=false
volumes:
- ./docker/blocks/elastic6/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/log:/var/log:ro
- ../data/log:/var/log/grafana:ro

View File

@@ -0,0 +1,2 @@
script.inline: on
script.indexed: on

File diff suppressed because it is too large Load Diff

View File

@@ -47,5 +47,6 @@ func main() {
proxy.ServeHTTP(w, r)
})
//nolint:gosec
log.Fatal(http.ListenAndServe(":3011", nil))
}

View File

@@ -57,7 +57,7 @@ export default (data) => {
requests.push({ method: 'GET', url: '/api/annotations?from=1580825186534&to=1580846786535' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/ds/query', body: payload });
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);

View File

@@ -62,7 +62,7 @@ export default (data) => {
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/ds/query', body: payload });
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);

View File

@@ -59,7 +59,7 @@ export default (data) => {
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/ds/query', body: payload });
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);

View File

@@ -58,7 +58,7 @@ export default (data) => {
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/ds/query', body: payload });
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);

47
docs/sources/_index.md Normal file → Executable file
View File

@@ -1,9 +1,8 @@
---
aliases:
- /docs/grafana/latest/
- /docs/grafana/latest/guides/reference/admin/
- /docs/grafana/v1.1/
- /docs/grafana/v3.1/
- guides/reference/admin/
description: Guides, Installation and Feature Documentation
keywords:
- grafana
@@ -17,22 +16,22 @@ title: Grafana documentation
## Installing Grafana
<div class="nav-cards">
<a href="{{< relref "setup-grafana/installation/debian/" >}}" class="nav-cards__item nav-cards__item--install">
<a href="{{< relref "installation/debian.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-linux">
</div>
<h5>Install on Linux</h5>
</a>
<a href="{{< relref "setup-grafana/installation/mac/" >}}" class="nav-cards__item nav-cards__item--install">
<a href="{{< relref "installation/mac.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-apple">
</div>
<h5>Install on macOS</h5>
</a>
<a href="{{< relref "setup-grafana/installation/windows/" >}}" class="nav-cards__item nav-cards__item--install">
<a href="{{< relref "installation/windows.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-windows">
</div>
<h5>Install on Windows</h5>
</a>
<a href="{{< relref "setup-grafana/installation/docker/" >}}" class="nav-cards__item nav-cards__item--install">
<a href="{{< relref "installation/docker.md" >}}" class="nav-cards__item nav-cards__item--install">
<img src="/static/img/logos/logo-docker.svg">
<h5>Run Docker image</h5>
</a>
@@ -51,27 +50,27 @@ title: Grafana documentation
## Guides
<div class="nav-cards">
<a href="{{< relref "getting-started/build-first-dashboard/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "getting-started/getting-started.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Getting started</h4>
<p>Learn the basics of using Grafana.</p>
</a>
<a href="{{< relref "basics/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "basics/_index.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Grafana basics</h4>
<p>Learn basic observability.</p>
</a>
<a href="{{< relref "setup-grafana/configure-grafana/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "administration/configuration.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Configure Grafana</h4>
<p>Review the configuration and setup options.</p>
</a>
<a href="{{< relref "basics/timeseries/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "basics/timeseries.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Intro to time series</h4>
<p>Learn about time series data.</p>
</a>
<a href="{{< relref "administration/provisioning/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "administration/provisioning.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Provisioning</h4>
<p>Learn how to automate your Grafana configuration.</p>
</a>
<a href="{{< relref "whatsnew/whats-new-in-v8-0/" >}}" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "whatsnew/whats-new-in-v8-0.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What's new in v8.0</h4>
<p>Explore the features and enhancements in the latest release.</p>
</a>
@@ -81,51 +80,51 @@ title: Grafana documentation
## Data source guides
<div class="nav-cards">
<a href="{{< relref "datasources/graphite/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/graphite.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_graphite.svg" >
<h5>Graphite</h5>
</a>
<a href="{{< relref "datasources/elasticsearch/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/elasticsearch.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_elasticsearch.svg" >
<h5>Elasticsearch</h5>
</a>
<a href="{{< relref "datasources/influxdb/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/influxdb/_index.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_influxdb.svg" >
<h5>InfluxDB</h5>
</a>
<a href="{{< relref "datasources/prometheus/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/prometheus.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_prometheus.svg" >
<h5>Prometheus</h5>
</a>
<a href="{{< relref "datasources/google-cloud-monitoring/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/google-cloud-monitoring/_index.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_cloudmonitoring.svg">
<h5>Google Cloud Monitoring</h5>
</a>
<a href="{{< relref "datasources/aws-cloudwatch/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/aws-cloudwatch/_index.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_cloudwatch.svg">
<h5>AWS CloudWatch</h5>
</a>
<a href="{{< relref "datasources/azuremonitor/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/azuremonitor/_index.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_azure_monitor.jpg">
<h5>Azure Monitor</h5>
</a>
<a href="{{< relref "datasources/loki/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/loki.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_loki.svg">
<h5>Loki</h5>
</a>
<a href="{{< relref "datasources/mysql/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/mysql.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_mysql.png" >
<h5>MySQL</h5>
</a>
<a href="{{< relref "datasources/postgres/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/postgres.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_postgres.svg" >
<h5>Postgres</h5>
</a>
<a href="{{< relref "datasources/mssql/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/mssql.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/sql_server_logo.svg">
<h5>Microsoft SQL Server</h5>
</a>
<a href="{{< relref "datasources/opentsdb/" >}}" class="nav-cards__item nav-cards__item--ds">
<a href="{{< relref "datasources/opentsdb.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/static/img/docs/logos/icon_opentsdb.png" >
<h5>OpenTSDB</h5>
</a>

View File

@@ -1,6 +1,4 @@
---
aliases:
- /docs/grafana/latest/administration/
description: Administration
title: Administration
weight: 40
@@ -10,4 +8,8 @@ weight: 40
This section includes information for Grafana administrators, team administrators, and users performing administrative tasks:
{{< section >}}
- [Change Preferences]({{< relref "preferences" >}})
- [Configuration]({{< relref "configuration" >}})
- [Configure Docker image]({{< relref "configure-docker" >}})
- [Security]({{< relref "security" >}})
- [Service accounts]({{< relref "service-accounts" >}})

View File

@@ -1,52 +1,17 @@
---
aliases:
- /docs/grafana/latest/administration/api-keys/about-api-keys/
- /docs/grafana/latest/administration/api-keys/
- /docs/grafana/latest/administration/api-keys/create-api-key/
description: This section contains information about API keys in Grafana
keywords:
- API keys
- Service accounts
menuTitle: API keys
title: API keys
weight: 700
title: API keys in Grafana
weight: 300
---
# API keys
# API keys in Grafana
API keys can be used to interact with Grafana HTTP APIs.
API Keys can be used to interact with Grafana HTTP APIs.
We recommend using service accounts instead of API keys if you are on Grafana 8.5+, for more information refer to [About service accounts]({{< relref "../service-accounts/about-service-accounts/#" >}}).
We recommend using service accounts instead of API keys if you are on Grafana 8.5+, for more information refer to [About service accounts]({{< relref "../service-accounts/about-service-accounts.md#">}}).
{{< section >}}
## About API keys
An API key is a randomly generated string that external systems use to interact with Grafana HTTP APIs.
When you create an API key, you specify a **Role** that determines the permissions associated with the API key. Role permissions control that actions the API key can perform on Grafana resources. For more information about creating API keys, refer to [Create an API key]({{< relref "create-api-key/#" >}}).
## Create an API key
Create an API key when you want to manage your computed workload with a user.
For more information about API keys, refer to [About API keys in Grafana]({{< relref "about-api-keys/" >}}).
This topic shows you how to create an API key using the Grafana UI. You can also create an API key using the Grafana HTTP API. For more information about creating API keys via the API, refer to [Create API key via API]({{< relref "../../developers/http_api/create-api-tokens-for-org/#how-to-create-a-new-organization-and-an-api-token" >}}).
### Before you begin:
- Ensure you have permission to create and edit API keys. For more information about permissions, refer to [About users and permissions]({{< relref "../roles-and-permissions/#" >}}).
**To create an API key:**
1. Sign in to Grafana, hover your cursor over **Configuration** (the gear icon), and click **API Keys**.
1. Click **New API key**.
1. Enter a unique name for the key.
1. In the **Role** field, select one of the following access levels you want to assign to the key.
- **Admin**: Enables a user to use APIs at the broadest, most powerful administrative level.
- **Editor** or **Viewer** to limit the key's users to those levels of power.
1. In the **Time to live** field, specify how long you want the key to be valid.
- The maximum length of time is 30 days (one month). You enter a number and a letter. Valid letters include `s` for seconds,`m` for minutes, `h` for hours, `d `for days, `w` for weeks, and `M `for month. For example, `12h` is 12 hours and `1M` is 1 month (30 days).
- If you are unsure about how long an API key should be valid, we recommend that you choose a short duration, such as a few hours. This approach limits the risk of having API keys that are valid for a long time.
1. Click **Add**.

View File

@@ -0,0 +1,12 @@
---
description: Learn about using API keys in Grafana
menuTitle: About API keys
title: About API keys in Grafana
weight: 30
---
# About API keys in Grafana
An API key is a randomly generated string that external systems use to interact with Grafana HTTP APIs.
When you create an API key, you specify a **Role** that determines the permissions associated with the API key. Role permissions control that actions the API key can perform on Grafana resources. For more information about creating API keys, refer to [Create an API key]({{< relref "./create-api-key.md#">}}).

View File

@@ -0,0 +1,34 @@
---
description: How to create an API key in Grafana
keywords:
- API keys
- Service accounts
menuTitle: Create an API key
title: Create an API key in Grafana
weight: 50
---
# Create an API key in Grafana
Create an API key when you want to manage your computed workload with a user.
For more information about API keys, refer to [About API keys in Grafana]({{< relref "./about-api-keys.md">}}).
This topic shows you how to create an API key using the Grafana UI. You can also create an API key using the Grafana HTTP API. For more information about creating API keys via the API, refer to [Create API key via API]({{< relref "../../http_api/create-api-tokens-for-org.md#how-to-create-a-new-organization-and-an-api-token">}}).
## Before you begin:
- Ensure you have permission to create and edit API keys. For more information about permissions, refer to [About users and permissions]({{< relref "../manage-users-and-permissions/about-users-and-permissions.md#">}}).
**To create an API key:**
1. Sign in to Grafana, hover your cursor over **Configuration** (the gear icon), and click **API Keys**.
1. Click **New API key**.
1. Enter a unique name for the key.
1. In the **Role** field, select one of the following access levels you want to assign to the key.
- **Admin**: Enables a user to use APIs at the broadest, most powerful administrative level.
- **Editor** or **Viewer** to limit the key's users to those levels of power.
1. In the **Time to live** field, specify how long you want the key to be valid.
- The maximum length of time is 30 days (one month). You enter a number and a letter. Valid letters include `s` for seconds,`m` for minutes, `h` for hours, `d `for days, `w` for weeks, and `M `for month. For example, `12h` is 12 hours and `1M` is 1 month (30 days).
- If you are unsure about how long an API key should be valid, we recommend that you choose a short duration, such as a few hours. This approach limits the risk of having API keys that are valid for a long time.
1. Click **Add**.

View File

@@ -1,6 +1,4 @@
---
aliases:
- /docs/grafana/latest/administration/cli/
description: Guide to using grafana-cli
keywords:
- grafana
@@ -137,7 +135,7 @@ grafana-cli --homepath "/usr/share/grafana" admin reset-admin-password <new pass
### Override config file
`--config value` overrides the default location where Grafana expects the configuration file. Refer to [Configuration]({{< relref "../administration/setup-grafana/configure-grafana/" >}}) for more information about configuring Grafana and default configuration file locations.
`--config value` overrides the default location where Grafana expects the configuration file. Refer to [Configuration]({{< relref "../administration/configuration.md" >}}) for more information about configuring Grafana and default configuration file locations.
**Example:**
@@ -147,7 +145,7 @@ grafana-cli --config "/etc/configuration/" admin reset-admin-password mynewpassw
## Plugins commands
Grafana CLI allows you to install, upgrade, and manage your Grafana plugins. For more information about installing plugins, refer to [plugins page]({{< relref "../administration/plugin-management/" >}}).
Grafana CLI allows you to install, upgrade, and manage your Grafana plugins. For more information about installing plugins, refer to [plugins page]({{< relref "../plugins/installation.md" >}}).
All listed commands apply to the Grafana default repositories and directories. You can override the defaults with [Global Options](#global-options).
@@ -219,7 +217,7 @@ grafana-cli --homepath "/usr/share/grafana" admin reset-admin-password <new pass
If you have not lost the admin password, we recommend that you change the user password either in the User Preferences or in the Server Admin > User tab.
If you need to set the password in a script, then you can use the [Grafana User API]({{< relref "../administration/developers/http_api/user/#change-password" >}}).
If you need to set the password in a script, then you can use the [Grafana User API]({{< relref "../http_api/user.md#change-password" >}}).
### Migrate data and encrypt passwords

View File

@@ -1,16 +1,18 @@
---
aliases:
- /docs/grafana/latest/administration/configuration/
- /docs/grafana/latest/installation/configuration/
- /docs/grafana/latest/setup-grafana/configure-grafana/
- ../installation/configuration/
description: Configuration documentation
title: Configure Grafana
weight: 200
keywords:
- grafana
- configuration
- documentation
title: Configuration
weight: 150
---
# Configure Grafana
# Configuration
Grafana has default and custom configuration files. You can customize your Grafana instance by modifying the custom configuration file or by using environment variables. To see the list of settings for a Grafana instance, refer to [View server settings]({{< relref "../../administration/view-server/view-server-settings/" >}}).
Grafana has default and custom configuration files. You can customize your Grafana instance by modifying the custom configuration file or by using environment variables. To see the list of settings for a Grafana instance, refer to [View server settings]({{< relref "view-server/view-server-settings.md" >}}).
> **Note:** After you add custom options, [uncomment](#remove-comments-in-the-ini-files) the relevant sections of the configuration file. Restart Grafana for your changes to take effect.
@@ -26,7 +28,7 @@ If you installed Grafana using the `deb` or `rpm` packages, then your configurat
### Docker
Refer to [Configure a Grafana Docker image]({{< relref "../configure-docker/" >}}) for information about environmental variables, persistent storage, and building custom Docker images.
Refer to [Configure a Grafana Docker image]({{< relref "configure-docker.md" >}}) for information about environmental variables, persistent storage, and building custom Docker images.
### Windows
@@ -124,7 +126,7 @@ password = $__file{/etc/secrets/gf_sql_password}
The `vault` provider allows you to manage your secrets with [Hashicorp Vault](https://www.hashicorp.com/products/vault).
> Vault provider is only available in Grafana Enterprise v7.1+. For more information, refer to [Vault integration]({{< relref "../configure-security/configure-database-encryption/integrate-with-hashicorp-vault/" >}}) in [Grafana Enterprise]({{< relref "../../enterprise/" >}}).
> Vault provider is only available in Grafana Enterprise v7.1+. For more information, refer to [Vault integration]({{< relref "../enterprise/vault.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}).
<hr />
@@ -170,13 +172,13 @@ Override log path using the command line argument `cfg:default.paths.logs`:
### plugins
Directory where Grafana automatically scans and looks for plugins. For information about manually or automatically installing plugins, refer to [Install Grafana plugins]({{< relref "../../administration/plugins/installation/" >}}).
Directory where Grafana automatically scans and looks for plugins. For information about manually or automatically installing plugins, refer to [Install Grafana plugins]({{< relref "../plugins/installation.md" >}}).
**macOS:** By default, the Mac plugin location is: `/usr/local/var/lib/grafana/plugins`.
### provisioning
Folder that contains [provisioning]({{< relref "../../administration/provisioning/" >}}) config files that Grafana will apply on startup. Dashboards will be reloaded when the json files changes.
Folder that contains [provisioning]({{< relref "provisioning.md" >}}) config files that Grafana will apply on startup. Dashboards will be reloaded when the json files changes.
<hr />
@@ -369,7 +371,7 @@ Defaults to `private`.
## [remote_cache]
Caches authentication details and session information in the configured database, Redis or Memcached. This setting does not configure [Query Caching in Grafana Enterprise]({{< relref "../../enterprise/query-caching/" >}}).
Caches authentication details and session information in the configured database, Redis or Memcached. This setting does not configure [Query Caching in Grafana Enterprise]({{< relref "../enterprise/query-caching.md" >}}).
### type
@@ -431,6 +433,12 @@ For more details check the [Transport.MaxConnsPerHost](https://golang.org/pkg/ne
The maximum number of idle connections that Grafana will maintain. Default is `100`. For more details check the [Transport.MaxIdleConns](https://golang.org/pkg/net/http/#Transport.MaxIdleConns) documentation.
### max_idle_connections_per_host
[Deprecated - use max_idle_connections instead]
The maximum number of idle connections per host that Grafana will maintain. Default is `2`. For more details check the [Transport.MaxIdleConnsPerHost](https://golang.org/pkg/net/http/#Transport.MaxIdleConnsPerHost) documentation.
### idle_conn_timeout_seconds
The length of time that Grafana maintains idle connections before closing them. Default is `90` seconds. For more details check the [Transport.IdleConnTimeout](https://golang.org/pkg/net/http/#Transport.IdleConnTimeout) documentation.
@@ -664,7 +672,7 @@ Path to the default home dashboard. If this value is empty, then Grafana uses St
Set to `false` to prohibit users from being able to sign up / create
user accounts. Default is `false`. The admin user can still create
users. For more information about creating a user, refer to [Add a user]({{< relref "../../administration/manage-users-and-permissions/manage-server-users/add-user/" >}}).
users. For more information about creating a user, refer to [Add a user]({{< relref "../administration/manage-users-and-permissions/manage-server-users/add-user.md" >}}).
### allow_org_create
@@ -717,7 +725,7 @@ If you manage users externally you can replace the user invite button for organi
### viewers_can_edit
Viewers can access and use [Explore]({{< relref "../../explore/" >}}) and perform temporary edits on panels in dashboards they have access to. They cannot save their changes. Default is `false`.
Viewers can access and use [Explore]({{< relref "../explore/_index.md" >}}) and perform temporary edits on panels in dashboards they have access to. They cannot save their changes. Default is `false`.
### editors_can_admin
@@ -738,7 +746,7 @@ This is a comma-separated list of usernames. Users specified here are hidden in
## [auth]
Grafana provides many ways to authenticate users. Refer to the Grafana [Authentication overview]({{< relref "../configure-security/configure-authentication/" >}}) and other authentication documentation for detailed instructions on how to set up and configure authentication.
Grafana provides many ways to authenticate users. Refer to the Grafana [Authentication overview]({{< relref "../auth/overview.md" >}}) and other authentication documentation for detailed instructions on how to set up and configure authentication.
### login_cookie_name
@@ -806,25 +814,25 @@ Set to `true` to enable verbose request signature logging when AWS Signature Ver
## [auth.anonymous]
Refer to [Anonymous authentication]({{< relref "../configure-security/configure-authentication/grafana/#anonymous-authentication" >}}) for detailed instructions.
Refer to [Anonymous authentication]({{< relref "../auth/grafana.md/#anonymous-authentication" >}}) for detailed instructions.
<hr />
## [auth.github]
Refer to [GitHub OAuth2 authentication]({{< relref "../configure-security/configure-authentication/github/" >}}) for detailed instructions.
Refer to [GitHub OAuth2 authentication]({{< relref "../auth/github.md" >}}) for detailed instructions.
<hr />
## [auth.gitlab]
Refer to [Gitlab OAuth2 authentication]({{< relref "../configure-security/configure-authentication/gitlab/" >}}) for detailed instructions.
Refer to [Gitlab OAuth2 authentication]({{< relref "../auth/gitlab.md" >}}) for detailed instructions.
<hr />
## [auth.google]
Refer to [Google OAuth2 authentication]({{< relref "../configure-security/configure-authentication/google/" >}}) for detailed instructions.
Refer to [Google OAuth2 authentication]({{< relref "../auth/google.md" >}}) for detailed instructions.
<hr />
@@ -842,37 +850,37 @@ Legacy key names, still in the config file so they work in env variables.
## [auth.azuread]
Refer to [Azure AD OAuth2 authentication]({{< relref "../configure-security/configure-authentication/azuread/" >}}) for detailed instructions.
Refer to [Azure AD OAuth2 authentication]({{< relref "../auth/azuread.md" >}}) for detailed instructions.
<hr />
## [auth.okta]
Refer to [Okta OAuth2 authentication]({{< relref "../configure-security/configure-authentication/okta/" >}}) for detailed instructions.
Refer to [Okta OAuth2 authentication]({{< relref "../auth/okta.md" >}}) for detailed instructions.
<hr />
## [auth.generic_oauth]
Refer to [Generic OAuth authentication]({{< relref "../configure-security/configure-authentication/generic-oauth/" >}}) for detailed instructions.
Refer to [Generic OAuth authentication]({{< relref "../auth/generic-oauth.md" >}}) for detailed instructions.
<hr />
## [auth.basic]
Refer to [Basic authentication]({{< relref "../configure-security/configure-authentication/#basic-authentication" >}}) for detailed instructions.
Refer to [Basic authentication]({{< relref "../auth/overview.md#basic-authentication" >}}) for detailed instructions.
<hr />
## [auth.proxy]
Refer to [Auth proxy authentication]({{< relref "../configure-security/configure-authentication/auth-proxy/" >}}) for detailed instructions.
Refer to [Auth proxy authentication]({{< relref "../auth/auth-proxy.md" >}}) for detailed instructions.
<hr />
## [auth.ldap]
Refer to [LDAP authentication]({{< relref "../configure-security/configure-authentication/ldap/" >}}) for detailed instructions.
Refer to [LDAP authentication]({{< relref "../auth/ldap.md" >}}) for detailed instructions.
## [aws]
@@ -923,7 +931,7 @@ Should be set for user-assigned identity and should be empty for system-assigned
## [auth.jwt]
Refer to [JWT authentication]({{< relref "../configure-security/configure-authentication/jwt/" >}}) for more information.
Refer to [JWT authentication]({{< relref "../auth/jwt.md" >}}) for more information.
<hr />
@@ -1177,7 +1185,7 @@ Sets a global limit on number of alert rules 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 [Unified Alerting]({{< relref "../alerting/unified-alerting/_index.md" >}}).
### enabled
@@ -1259,27 +1267,9 @@ The interval string is a possibly signed sequence of decimal numbers, followed b
<hr>
## [unified_alerting.screenshots]
For more information about screenshots, refer to [Images in notifications]({{< relref "../../alerting/images-in-notifications/" >}}).
### capture
Enable screenshots in notifications. This option requires a remote HTTP image rendering service. Please see `[rendering]` for further configuration options.
### max_concurrent_screenshots
The maximum number of screenshots that can be taken at the same time. This option is different from `concurrent_render_request_limit` as `max_concurrent_screenshots` sets the number of concurrent screenshots that can be taken at the same time for all firing alerts where as concurrent_render_request_limit sets the total number of concurrent screenshots across all Grafana services.
### upload_external_image_storage
Uploads screenshots to the local Grafana server or remote storage such as Azure, S3 and GCS. Please see `[external_image_storage]` for further configuration options. If this option is false then screenshots will be persisted to disk for up to `temp_data_lifetime`.
<hr>
## [alerting]
For more information about the legacy dashboard alerting feature in Grafana, refer to [Alerts overview]({{< relref "../../alerting/" >}}).
For more information about the legacy dashboard alerting feature in Grafana, refer to [Alerts overview]({{< relref "../alerting/_index.md" >}}).
### enabled
@@ -1367,7 +1357,7 @@ Configures max number of API annotations that Grafana keeps. Default value is 0,
## [explore]
For more information about this feature, refer to [Explore]({{< relref "../../explore/" >}}).
For more information about this feature, refer to [Explore]({{< relref "../explore/_index.md" >}}).
### enabled
@@ -1389,17 +1379,9 @@ Configures the Profile section.
Enable or disable the Profile section. Default is `enabled`.
## [query_history]
Configures Query history in Explore.
### enabled
Enable or disable the Query history. Default is `enabled`.
## [metrics]
For detailed instructions, refer to [Internal Grafana metrics]({{< relref "../set-up-grafana-monitoring/" >}}).
For detailed instructions, refer to [Internal Grafana metrics]({{< relref "view-server/internal-metrics.md" >}}).
### enabled
@@ -1460,8 +1442,6 @@ Default is https://grafana.com.
## [tracing.jaeger]
[Deprecated - use tracing.opentelemetry.jaeger or tracing.opentelemetry.otlp instead]
Configure Grafana's Jaeger client for distributed tracing.
You can also use the standard `JAEGER_*` environment variables to configure
@@ -1525,34 +1505,6 @@ Setting this to `true` turns off shared RPC spans. Leaving this available is the
<hr>
## [tracing.opentelemetry.jaeger]
Configure Grafana's Jaeger client for distributed tracing.
### address
The host:port destination for reporting spans. (ex: `localhost:14268/api/traces`)
### propagation
The propagation specifies the text map propagation format.(ex: jaeger, w3c)
<hr>
## [tracing.opentelemetry.otlp]
Configure Grafana's OLTP client for distributed tracing.
### address
The host:port destination for reporting spans. (ex: `localhost:4317`)
### propagation
The propagation specifies the text map propagation format.(ex: jaeger, w3c)
<hr>
## [external_image_storage]
These options control how images should be made public so they can be shared on services like Slack or email message.
@@ -1714,13 +1666,13 @@ Set to `true` if you want to test alpha plugins that are not yet ready for gener
Enter a comma-separated list of plugin identifiers to identify plugins to load even if they are unsigned. Plugins with modified signatures are never loaded.
We do _not_ recommend using this option. For more information, refer to [Plugin signatures]({{< relref "../../administration/plugin-management/" >}}).
We do _not_ recommend using this option. For more information, refer to [Plugin signatures]({{< relref "../plugins/plugin-signatures.md" >}}).
### plugin_admin_enabled
Available to Grafana administrators only, enables installing / uninstalling / updating plugins directly from the Grafana UI. Set to `true` by default. Setting it to `false` will hide the install / uninstall / update controls.
For more information, refer to [Plugin catalog]({{< relref "../../administration/plugins/catalog/" >}}).
For more information, refer to [Plugin catalog]({{< relref "../plugins/catalog.md" >}}).
### plugin_admin_external_manage_enabled
@@ -1744,7 +1696,7 @@ Enter a comma-separated list of plugin identifiers to hide in the plugin catalog
The `max_connections` option specifies the maximum number of connections to the Grafana Live WebSocket endpoint per Grafana server instance. Default is `100`.
Refer to [Grafana Live configuration documentation]({{< relref "../set-up-grafana-live/" >}}) if you specify a number higher than default since this can require some operating system and infrastructure tuning.
Refer to [Grafana Live configuration documentation]({{< relref "../live/configure-grafana-live.md" >}}) if you specify a number higher than default since this can require some operating system and infrastructure tuning.
0 disables Grafana Live, -1 means unlimited connections.
@@ -1773,7 +1725,7 @@ allowed_origins = "https://*.example.com"
The high availability (HA) engine name for Grafana Live. By default, it's not set. The only possible value is "redis".
For more information, refer to the [Configure Grafana Live HA setup]({{< relref "../set-up-grafana-live/#configure-grafana-live-ha-setup" >}}).
For more information, refer to [Configure Grafana Live HA setup]({{< relref "../live/live-ha-setup.md" >}}).
### ha_engine_address
@@ -1885,7 +1837,7 @@ Change the listening port of the gRPC server. Default port is `0` and will autom
## [enterprise]
For more information about Grafana Enterprise, refer to [Grafana Enterprise]({{< relref "../../enterprise/" >}}).
For more information about Grafana Enterprise, refer to [Grafana Enterprise]({{< relref "../enterprise/_index.md" >}}).
<hr>
@@ -1965,31 +1917,3 @@ default_baselayer_config = `{
### enable_custom_baselayers
Set this to `true` to disable loading other custom base maps and hide them in the Grafana UI. Default is `false`.
## [dashboard_previews]
### [crawler]
> **Note:** This feature is available in Grafana v9.0 and later versions.
#### thread_count
Number of dashboards rendered in parallel. Default is 6
#### rendering_timeout
Timeout passed down to the Image Renderer plugin. It is used in two separate places within a single rendering request - during the initial navigation to the dashboard, and when waiting for all the panels to load. Default is 20s.
#### max_crawl_duration
Maximum duration of a single crawl. Default is 1h.
#### scheduler_interval
Minimum interval between two subsequent scheduler runs. Default is 12h.
Refer to the [dashboards previews]({{< relref "../../dashboards/previews/" >}}) documentation for detailed instructions.
## [rbac]
Refer to [Role-based access control]({{< relref "../../administration/roles-and-permissions/access-control/about-rbac/" >}}) for more information.

View File

@@ -1,20 +1,19 @@
---
aliases:
- /docs/grafana/latest/administration/configure-docker/
- /docs/grafana/latest/installation/configure-docker/
- ../installation/configure-docker/
description: Guide for configuring the Grafana Docker image
keywords:
- grafana
- configuration
- documentation
- docker
title: Configure Docker image
weight: 1800
title: Configure Grafana Docker image
weight: 200
---
# Configure a Grafana Docker image
If you are running Grafana in a Docker image, then you configure Grafana using [environment variables]({{< relref "../../administration/setup-grafana/configure-grafana/#configure-with-environment-variables" >}}) rather than directly editing the configuration file. If you want to save your data, then you also need to designate persistent storage or bind mounts for the Grafana container.
If you are running Grafana in a Docker image, then you configure Grafana using [environment variables]({{< relref "../administration/configuration.md#configure-with-environment-variables" >}}) rather than directly editing the configuration file. If you want to save your data, then you also need to designate persistent storage or bind mounts for the Grafana container.
> **Note:** These examples use the Grafana Enterprise docker image. You can use the Grafana Open Source edition by changing the docker image to `grafana/grafana-oss`.
@@ -59,7 +58,7 @@ The following settings are hard-coded when launching the Grafana Docker containe
## Logging
Logs in the Docker container go to standard out by default, as is common in the Docker world. Change this by setting a different [log mode]({{< relref "../../administration/setup-grafana/configure-grafana/#mode" >}}).
Logs in the Docker container go to standard out by default, as is common in the Docker world. Change this by setting a different [log mode]({{< relref "../administration/configuration.md#mode" >}}).
Example:

View File

@@ -1,98 +0,0 @@
---
aliases:
- /docs/grafana/latest/datasources/add-a-data-source/
- /docs/grafana/latest/features/datasources/add-a-data-source/
- /docs/grafana/latest/enterprise/datasource_permissions/
- /docs/sources/permissions/datasource_permissions/
title: Data source management
weight: 100
---
# Data source management
Grafana supports many different storage backends for your time series data (data source). Refer to [data sources]({{< relref "../../datasources/" >}}) for more information about using data sources in Grafana. Only users with the organization admin role can add data sources.
## Add a data source
Before you can create your first dashboard, you need to add your data source.
> **Note:** Only users with the organization Admin role can add data sources.
To add a data source:
1. Move your cursor to the cog icon on the side menu which will show the configuration options.
{{< figure src="/static/img/docs/v75/sidemenu-datasource-7-5.png" max-width="150px" class="docs-image--no-shadow">}}
1. Click on **Data sources**. The data sources page opens showing a list of previously configured data sources for the Grafana instance.
1. Click **Add data source** to see a list of all supported data sources.
{{< figure src="/static/img/docs/v75/add-data-source-7-5.png" max-width="600px" class="docs-image--no-shadow">}}
1. Search for a specific data source by entering the name in the search dialog. Or you can scroll through supported data sources grouped into time series, logging, tracing and other categories.
1. Move the cursor over the data source you want to add.
{{< figure src="/static/img/docs/v75/select-data-source-7-5.png" max-width="700px" class="docs-image--no-shadow">}}
1. Click **Select**. The data source configuration page opens.
1. Configure the data source following instructions specific to that data source. See [Data sources]({{< relref "/" >}}) for links to configuration instructions for all supported data sources.
## Data source permissions
Data source permissions allow you to restrict access for users to query a data source. For each data source there is a permission page that allows you to enable permissions and restrict query permissions to specific **Users** and **Teams**.
> **Note:** Available in [Grafana Enterprise]({{< relref "../enterprise/" >}}) and [Grafana Cloud Pro and Advanced]({{< ref "/docs/grafana-cloud" >}}).
### Enable data source permissions
{{< figure src="/static/img/docs/enterprise/datasource_permissions_enable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_enable.gif" >}}
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just
queries that exist on dashboards they have access to.
When permissions are enabled for a data source in an organization, the user who created the datasource can edit the datasource and in addition, viewers can query the datasource.
**Enable permissions for a data source:**
1. Navigate to **Configuration > Data Sources**.
1. Select the data source you want to enable permissions for.
1. On the Permissions tab, click **Enable**.
<div class="clearfix"></div>
> **Caution:** Enabling permissions for the default data source makes users not listed in the permissions unable to invoke queries. Panels using default data source will return `Access denied to data source` error for those users.
### Allow users and teams to query a data source
{{< figure src="/static/img/docs/enterprise/datasource_permissions_add_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_add.gif" >}}
After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.
**Assign query permission to users and teams:**
1. Navigate to **Configuration > Data Sources**.
1. Select the data source you want to assign query permissions for.
1. On the Permissions tab, click **Add Permission**.
1. Select **Team** or **User**.
1. Select the entity you want to allow query access and then click **Save**.
<div class="clearfix"></div>
### Disable data source permissions
{{< figure src="/static/img/docs/enterprise/datasource_permissions_disable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_disable.gif" >}}
If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.
Note that _all_ existing permissions created for the data source will be deleted.
**Disable permissions for a data source:**
1. Navigate to **Configuration > Data Sources**.
1. Select the data source you want to disable permissions for.
1. On the Permissions tab, click **Disable Permissions**.
<div class="clearfix"></div>

View File

@@ -0,0 +1,39 @@
---
description: Grafana database encryption
keywords:
- grafana
- database
- encryption
- envelope encryption
- documentation
title: Database encryption
weight: 450
---
# Grafana database encryption
Grafanas database contains secrets, which are used to query data sources, send alert notifications and perform other functions within Grafana.
Grafana encrypts these secrets before they are written to the database, by using a symmetric-key encryption algorithm called Advanced Encryption Standard (AES), and using a [secret key]({{< relref "../administration/configuration/#secret_key" >}}) that you can change when you configure a new Grafana instance.
You can choose to use [envelope encryption](#envelope-encryption), which adds a layer of indirection to the encryption process.
> **Note:** In Grafana Enterprise, you can also choose to [encrypt secrets in AES-GCM mode]({{< relref "../enterprise/enterprise-encryption/#changing-your-encryption-mode-to-aes-gcm" >}}) instead of AES-CFB.
# Envelope encryption
In Grafana, you can choose to use envelope encryption. Instead of
encrypting all secrets with a single key, Grafana uses a set of keys
called data encryption keys (DEKs) to encrypt them. These data
encryption keys are themselves encrypted with a single key encryption
key (KEK).
To turn on envelope encryption, add the term `envelopeEncryption` to the list of feature toggles in your [Grafana configuration]({{< relref "../administration/configuration/#feature_toggles" >}}).
> **Note:** Avoid turning off envelope encryption once you have turned it on, and back up your database before turning it on for the first time. If you turn envelope encryption on, create new secrets or update your existing secrets (for example, by creating a new data source or alert notification channel), and then turn envelope encryption off, then those data sources, alert notification channels, and other resources using envelope encryption will stop working and you will experience errors. This is because the secrets encrypted with envelope encryption cannot be decrypted or used by Grafana when envelope encryption is turned off.
# KMS integration
With KMS integrations, you can choose to encrypt secrets stored in the Grafana database using a key from a KMS, which is a secure central storage location that is designed to help you to create and manage cryptographic keys and control their use across many services.
> **Note:** KMS integration is available in Grafana Enterprise. For more information, refer to [Enterprise Encryption]({{< relref "../enterprise/enterprise-encryption/_index.md" >}}) in Grafana Enterprise.

View File

@@ -1,245 +0,0 @@
---
aliases:
- /docs/grafana/latest/enterprise/license/
- /docs/grafana/latest/enterprise/activate-license/
- /docs/grafana/latest/enterprise/license/activate-license/
- /docs/grafana/latest/enterprise/license-expiration/
- /docs/grafana/latest/enterprise/license/license-expiration/
- /docs/grafana/latest/enterprise/license-restrictions/
- /docs/grafana/latest/enterprise/license/license-restrictions/
description: Activate and manage a Grafana Enterprise license
keywords:
- grafana
- licensing
- enterprise
title: Enterprise licensing
weight: 500
---
# Grafana Enterprise license
When you become a Grafana Enterprise customer, you gain access to Grafana's premium observability features, including enterprise data source plugins, reporting, and role-based access control. In order to use these [enhanced features of Grafana Enterprise]({{< relref "../enterprise/" >}}), you must purchase and activate a Grafana Enterprise license.
To purchase a license directly from Grafana Labs, [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise). To activate an Enterprise license purchased from Grafana Labs, refer to [Activate an Enterprise license]({{< relref "../server-administration/enterprise-licensing/activate-license/" >}}).
You can also purchase a Grafana Enterprise license through the AWS Marketplace. To learn more about activating a license purchased through AWS, refer to [Activate a Grafana Enterprise license purchased through AWS Marketplace]({{< relref "activate-aws-marketplace-license/" >}}).
{{< section >}}
## Activate an Enterprise license
Follow these steps to activate your Grafana Enterprise license:
### Step 1. Download your license file
To download your Grafana Enterprise license:
1. Sign in to your [Grafana Cloud](https://grafana.com) account.
1. Go to **My Account** and select an organization from the drop-down menu at the top left of the page. On the Overview page for each organization, you can see a section for Grafana Enterprise licenses. Click **Details** next to a license.
1. At the bottom of the license details page, select **Download token** to download the `license.jwt` file that contains your license.
### Step 2. Add your license to a Grafana instance
There is more than one way to add the license to a Grafana instance:
#### Upload the license file via the Grafana server administrator page
This is the preferred option for single instance installations of Grafana Enterprise.
1. Sign in as a Grafana server administrator.
1. Navigate to **Server Admin > Upgrade** within Grafana.
1. Click **Upload license token file**.
1. Select your license file, and upload it.
#### Put the `license.jwt` file into the data directory of Grafana
On Linux systems, the data directory is usually at `/var/lib/grafana`.
You can also configure a custom location for the license file using the grafana.ini setting:
```bash
[enterprise]
license_path = /company/secrets/license.jwt
```
This setting can also be set with an environment variable, which is useful if you're running Grafana with Docker and have a custom volume where you have placed the license file. In this case, set the environment variable `GF_ENTERPRISE_LICENSE_PATH` to point to the location of your license file.
#### Set the content of the license file as a configuration option
You can add a license by pasting the content of the `license.jwt`
to the grafana.ini configuration file:
```bash
[enterprise]
license_text = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0aGlzIjoiaXMiLCJub3QiOiJhIiwidmFsaWQiOiJsaWNlbnNlIn0.bxDzxIoJlYMwiEYKYT_l2s42z0Y30tY-6KKoyz9RuLE
```
This option can be set using the `GF_ENTERPRISE_LICENSE_TEXT`
environment variable.
### Step 3. Ensure that the license file's root URL matches the root_url configuration option
Update the [`root_url`]({{< relref "../../enterprise/setup-grafana/configure-grafana/#root-url" >}}) in your configuration. It should be the URL that users type in their browsers to access the frontend, not the node hostname(s).
This is important, because as part of the validation checks at startup, Grafana compares the license URL to the [`root_url`]({{< relref "../../enterprise/setup-grafana/configure-grafana/#root-url" >}}) in your configuration.
In your configuration file:
```
[server]
root_url = https://grafana.example.com/
```
Or with an environment variable:
```
GF_SERVER_ROOT_URL=https://grafana.example.com/
```
### Step 4. Restart Grafana
To finalize the installation of Grafana Enterprise, restart Grafana to enable all Grafana Enterprise features. Refer to [restart Grafana]({{< relref "../../enterprise/setup-grafana/restart-grafana/" >}}) for more information.
## License expiration
If your license has expired, most of Grafana keeps working as normal. Some enterprise functionality stops or runs with reduced functionality and Grafana displays a banner informing the users that Grafana is running on an expired license. Your Grafana admin needs to upload a new license file to restore full functionality.
> Replace your license as soon as possible. Running Grafana Enterprise with an expired license is unsupported and can lead to unexpected consequences.
### Update your license
1. Locate your current `license.jwt` file. In a standard installation it is stored inside the Grafana data directory, which on a typical Linux installation is in `/var/lib/grafana/data`. This location might be overridden in the ini file [Configuration]({{< relref "../../enterprise/setup-grafana/configure-grafana/" >}}).
```ini
[enterprise]
license_path = /path/to/your/license.jwt
```
The configuration file's location may also be overridden by the `GF_ENTERPRISE_LICENSE_PATH` environment variable.
2. Log in to your [Grafana Cloud Account](https://grafana.com/login) and make sure you're in the correct organization in the dropdown at the top of the page.
3. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
4. Replace the current `license.jwt`-file with the one you've just downloaded.
5. [Restart Grafana]({{< relref "../../enterprise/setup-grafana/restart-grafana/" >}}).
### If your license expires
If your Grafana Enterprise license expires, you can expect the following changes in feature behavior.
#### Data source permissions
Your current data source permissions will keep working as expected, but you'll be unable to add new data source permissions until the license has been renewed.
#### LDAP authentication
- LDAP synchronization is not affected by an expired license.
- Team sync debugging is unavailable.
#### SAML authentication
SAML authentication is not affected by an expired license.
#### Role-based access control (RBAC)
- Creating, updating and deleting custom roles is not available.
- Modifying permissions for custom roles is not available.
#### Reporting
- You're unable to configure new reports or generate previews.
- Existing reports continue to be sent.
#### Enterprise plugins
Enterprise plugins might stop working.
#### White labeling
The white labeling feature is turned off, meaning that any white labeling options will not have any effect.
#### Usage insights
Exporting usage insights logs to Loki will be turned off for licenses expired for more than 7 days.
All the other usage insights features are turned off as soon as the license expires, meaning that you will not be able to see dashboard usage, presence indicators, or use improved search. Grafana continues to collect usage data and you will have access to it as soon as you update your license.
#### Vault integration
Vault integration is not affected by an expired license.
#### Auditing
Auditing is not affected by an expired license.
#### License restrictions
The concurrent session limit remains active for seven days after the expiration date, after which it will be turned off.
The active users limit is turned off immediately.
#### Settings updates at runtime
Settings updates at runtime are not affected by an expired license.
## Grafana Enterprise license restrictions
When you become a Grafana Enterprise customer, you receive a license that governs your use of Grafana Enterprise.
### Active users limit
Your Grafana license includes a maximum number of active users.
- An _active user_ is a user who has signed in to Grafana within the last 30 days. This is a rolling window that is updated daily.
- When you reach the maximum number of active users, only currently active users (users who have signed in over the past 30 days) can sign in. When a new user or a previously-inactive user tries to sign in, the user will see an error message indicating that Grafana has reached its license limit.
- The user's role, number of dashboards that a user can view or edit, and the number of organizations that they can access does not affect the active user count.
- A license limit banner appears to administrators when Grafana reaches its active user limit; editors and viewers do not see the banner.
#### Determine the number of active users
To determine the number of active users:
1. Sign in to Grafana Enterprise as a System Administrator.
1. Click **Server Admin** (the shield icon).
1. Click **Statistics and licensing**.
1. Review the utilization count on the **Utilization** panel.
### Tiered licensing (deprecated)
A tiered license defines dashboard viewers, and dashboard editors and administrators, as two distinct user types that each have their own user limit.
As of Grafana Enterprise version 9.0, Grafana only counts and enforces the _total_ number of active users in your Grafana instance. For example, if you purchase 150 active users, you can have 20 admins, 70 editors, and 60 viewers, or you can have 150 admins. Grafana will enforce the total number of active users even if you use a license that grants a specific number of admins or editors and a certain number of viewers. This is a more permissive policy than before, which gives you the flexibility to change users' roles.
If you are running a pre-9.0 version of Grafana Enterprise, please refer to the documentation for that version to learn more about license enforcement in your current version.
### Additional license restrictions
Your license is controlled by the following rules:
**License expiration date:** The license includes an expiration date, which is the date when a license becomes inactive.
As the license expiration date approaches, you will see a banner in Grafana that encourages you to renew. To learn about how to renew your license and what happens in Grafana when a license expires, refer to [License expiration]({{< relref "../../enterprise/license/license-restrictions/license-expiration/" >}}).
**Grafana License URL:** Your license does not work with an instance of Grafana with a different root URL.
The License URL is the complete URL of your Grafana instance, for example `https://grafana.your-company.com/`. It is defined in the [root_url]({{< relref "../../enterprise/setup-grafana/configure-grafana/#root_url" >}}) configuration setting.
**Concurrent sessions limit**: As of Grafana Enterprise 7.5, users can initiate up to three concurrent sessions of Grafana.
The system creates a session when a user signs in to Grafana from a new device, a different browser, or an incognito window. If a user signs in to Grafana from another tab or window within the same browser, only one session is used.
When a user reaches the session limit, the fourth connection succeeds and the longest inactive session is signed out.
### Request usage billing
You can request Grafana Labs to activate usage billing which allows an unlimited number of active users. When usage billing is enabled, Grafana does not enforce active user limits or display warning banners. Instead, you are charged for active users that exceed the limit, according to your customer contract.
Usage billing involves a contractual agreement between you and Grafana Labs, and it is only available if Grafana Enterprise is configured to [automatically refresh its license token]({{< relref "../../enterprise/setup-grafana/configure-grafana/enterprise-configuration/#auto_refresh_license" >}}).
### Request a change to your license
To increase the number of licensed users within Grafana, extend a license, or change your licensed URL, contact [Grafana support](https://grafana.com/profile/org#support) or your Grafana Labs account team. They will update your license, which you can activate from within Grafana.
For instructions about how to activate your license after it is updated, refer to [Activate an Enterprise license]({{< relref "../../enterprise/license/license-restrictions/activate-license/" >}}).

View File

@@ -0,0 +1,19 @@
---
description: Jaeger traces emitted and propagation by Grafana
keywords:
- grafana
- jaeger
- tracing
title: Jaeger instrumentation
weight: 900
---
# Jaeger instrumentation
Grafana supports [Jaeger tracing](https://www.jaegertracing.io/).
Grafana can emit Jaeger traces for its HTTP API endpoints and propagate Jaeger trace information to data sources.
All HTTP endpoints are logged evenly (annotations, dashboard, tags, and so on).
When a trace ID is propagated, it is reported with operation 'HTTP /datasources/proxy/:id/\*'.
Refer to [Configuration]({{< relref "configuration.md#tracing-jaeger" >}}) for information about enabling Jaeger tracing.

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