Compare commits

..

450 Commits

Author SHA1 Message Date
Grot (@grafanabot)
37ee25ba46 Release: Bump version to 9.4.12 (#882)
"Release: Updated versions in package to 9.4.12"
2023-05-22 10:58:05 -05:00
Grot (@grafanabot)
cf7d07d18b [v9.4.x] Prevent crash while executing concurrent mixed queries (#876)
Prevent crash while executing concurrent mixed queries (#874)

limit parallel query execution to 1 at a time

(cherry picked from commit 96579a60e19e2a9f2d6bdaeba64e0e702211eb73)

Co-authored-by: Michael Mandrus <41969079+mmandrus@users.noreply.github.com>
2023-05-22 10:30:44 -05:00
George Robinson
157004db28 [v9.4.x] Require alert.notifications:write permissions to test receivers and templates (#868)
Require alert.notifications:write permissions to test receivers and templates (#865)

(cherry picked from commit 3c21ab70075256d4ba8e4fbfdcb15f5a394161fa)
2023-05-22 10:30:44 -05:00
Dimitris Sotirakis
3b6ed3340d [v9.4.x] CI: Run trigger-test-release only on PRs against main (#68794) (#68811)
CI: Run `trigger-test-release` only on PRs against main (#68794)

Run trigger-test-release only on PRs against main

(cherry picked from commit 623c014cda)

# Conflicts:
#	.drone.yml
2023-05-22 15:09:55 +02:00
Dimitris Sotirakis
bba6777982 [v9.4.x] Docker images: Don't fail if a PR comes from a fork (#68765) (#68782)
Docker images: Don't fail if a PR comes from a fork (#68765)

* Update grabpl

* Allow publish images to fail for PRs

(cherry picked from commit 04e2d9055d)

# Conflicts:
#	.drone.yml
2023-05-22 12:04:59 +02:00
Grot (@grafanabot)
1c1be82eb9 [v9.4.x] RBAC: Remove legacy AC editor and admin role on new dashboard route (#68775)
RBAC: Remove legacy AC editor and admin role on new dashboard route (#68762)

remove legacy AC editor and admin role on new dashboard route

(cherry picked from commit 94283f5039)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2023-05-22 10:37:43 +01:00
Dimitris Sotirakis
409cec2e41 [v9.4.x] G10: Post docker pull commands for local testing (#67489) (#68684)
* G10: Post `docker pull` commands for local testing (#67489)

* Add grabpl publish images

Update grabpl - add github pr token

* Replace github_pr_token with gh app

# Conflicts:
#	.drone.yml
#	scripts/drone/vault.star

# Conflicts:
#	.drone.yml

# Conflicts:
#	.drone.yml

* Lint starlark

Add forgotten secrets

Lint starlark

Change secrets

* Update grabpl to v3.0.35

* Lint starlark

* Remove unnecessary secrets

(cherry picked from commit 26bacf6d4c)

# Conflicts:
#	.drone.yml

* Update grabpl to v3.0.36
2023-05-22 09:48:24 +02:00
Grot (@grafanabot)
55e05cc833 [v9.4.x] Clarify Graphite version and type to set if using Grafana Cloud (#68719)
Clarify Graphite version and type to set if using Grafana Cloud (#68239)

* Clarify Graphite version and type to set if using Grafana Cloud

* Update _index.md

(cherry picked from commit 9f7f82c3cc)

Co-authored-by: Fiona Liao <fiona.y.liao@gmail.com>
2023-05-18 18:14:53 +02:00
Grot (@grafanabot)
0fb2bd25d3 [v9.4.x] Revert: Allow editors to access GET /datasources (#68653)
Revert: Allow editors to access GET /datasources (#68632)

Revert "Allow editors to access GET /datasources"

This reverts commit 5a830c43c0.

(cherry picked from commit 6a2bcba078)

Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
2023-05-17 19:18:07 +01:00
Ivan Ortega Alba
c0ca04e9a3 [v9.4.x] Dashboards: Remove no-datasource screen (#68574) (#68646)
Dashboards: Remove no-datasource screen (#68574)

* Dashboards: Remove non-ds configured landing page

* Remove `datasourceOnboarding` feature toggle

(cherry picked from commit 1505a188eb)
2023-05-17 19:26:52 +03:00
Grot (@grafanabot)
bcf4e758dc [v9.4.x] Explore: Remove data source onboarding page (#68642)
Explore: Remove data source onboarding page (#68131)

* Remove EmptyStateWrapper

(cherry picked from commit cee838c8a8)

Co-authored-by: Haris Rozajac <58232930+harisrozajac@users.noreply.github.com>
2023-05-17 09:55:07 -06:00
Andreas Christou
c8077a982e [v9.4.x] AzureMonitor: Fix Log Analytics portal links (#65482) (#68523)
AzureMonitor: Fix Log Analytics portal links (#65482)

* Fix and update Log Analytics portal links

- Build portal URL in backend
- Correctly set multiple resource value
- Move AddConfigLinks util function
- Add necessary types
- Remove unused functions

* Fix lint issue

* Remove unused cache variable

(cherry picked from commit e27cb67776)

# Conflicts:
#	.betterer.results
2023-05-16 17:12:01 +00:00
Christopher Moyer
53d8071192 [v9.4 backport] Docs: Plugin doc review for chunk 1-A (#67070) (#68134)
Docs: Plugin doc review for chunk 1-A (#67070)

* Plugin doc review for chunk 1-A

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Group of fixes in response to review comments

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Updates for review comments

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Fixed extra space

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Additional doc fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* More doc fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Fixes from doc review

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Doc review fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* More changes from doc review

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Fix links and relrefs using doc-validator advice

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

* Publishing criteria update

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Markdown fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Testing

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Testing

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Testing

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Link fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Prettier

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Fix to publishing criteria

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Doc fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Doc fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Doc fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/build-a-logs-data-source-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/build-a-streaming-data-source-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/get-started-with-plugins/_index.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/publish-a-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/publish-a-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/publish-a-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Update docs/sources/developers/plugins/sign-a-plugin.md

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>

* Prettier

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

---------

Signed-off-by: Joe Perez <joseph.perez@grafana.com>
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
(cherry picked from commit 13be068919)

Co-authored-by: Joseph Perez <45749060+josmperez@users.noreply.github.com>
2023-05-15 12:48:52 -05:00
Dimitris Sotirakis
b31c0b7897 [v9.4.x] CI: Add delivery bot secrets to publish images step (#68467) (#68471)
CI: Add delivery bot secrets to publish images step (#68467)

Add delivery bot secrets

(cherry picked from commit 55622615de)

# Conflicts:
#	.drone.yml
#	scripts/drone/vault.star
2023-05-15 18:18:09 +03:00
Horst Gutmann
cd2ea25f54 [v9.4.x] CI: Update grabpl to 3.0.34 (#68456) (#68466)
* CI: Port of init-enterprise fix from 9.4.10

* CI: Update grabpl to 3.0.34

(cherry picked from commit 35ccfa6131)

Backport of https://github.com/grafana/grafana/pull/68456
2023-05-15 17:53:13 +03:00
ismail simsek
fb9429b1f7 [v9.4.x] Prometheus: Fix fallback http method when no http method specified in jsonData (#68434)
Prometheus: Fix fallback http method when no http method specified in jsonData (#65229)

Use POST as default if no http method specified in jsonData

(cherry picked from commit 959349d191)
2023-05-14 15:52:31 +02:00
Grot (@grafanabot)
f5da579af9 [v9.4.x] Alerting: Migration to not fail if alert_configuration table is not empty (#68404)
Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2023-05-12 22:30:27 +03:00
Grot (@grafanabot)
ec973b648a [v9.4.x] Plugins doc review chunk 2 (#68411)
Plugins doc review chunk 2 (#67691)

* Doc style edit for 7 topics

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Proofread topics

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Prettier

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Doc fix

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Update docs/sources/developers/plugins/add-query-editor-help.md

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

* Doc fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Changes from doc review

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Incorporate review feedback

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* More fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* More doc fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

---------

Signed-off-by: Joe Perez <joseph.perez@grafana.com>
Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
(cherry picked from commit 49a18bc8e2)

Co-authored-by: Joseph Perez <45749060+josmperez@users.noreply.github.com>
2023-05-12 14:00:40 -05:00
Grot (@grafanabot)
b3b956b01e [v9.4.x] Wording changes to improve clarity. (#68399)
Wording changes to improve clarity. (#66045)

* Wording changes to improve clarity.

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

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

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

* Update docs/sources/setup-grafana/set-up-for-high-availability.md

* ran doc validator, make corrections

---------

Co-authored-by: Eve Meelan <81647476+Eve832@users.noreply.github.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit fd83b17b7f)

Co-authored-by: colinedwardwood <colin.wood@grafana.com>
2023-05-12 11:20:07 -05:00
Grot (@grafanabot)
9fa0ec2047 [v9.4.x] CloudMonitor: Show template variables by default (#68382)
CloudMonitor: Show template variables by default (#68331)

CloudMonitor: show template variables by default
(cherry picked from commit 9503f22f53)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2023-05-12 14:03:14 +00:00
Dimitris Sotirakis
eacc0bafea [v9.4.x] CI: Add .drone.yml in pathschanged trigger for lint_backend pipeline (#68348) (#68367)
CI: Add `.drone.yml` in pathschanged trigger for `lint_backend` pipeline (#68348)

Add .drone.yml in pathschanged for lint_backend

(cherry picked from commit b7b13067a5)

# Conflicts:
#	.drone.yml
2023-05-12 13:25:08 +01:00
Grot (@grafanabot)
11b98de351 [v9.4.x] Docs: Correct capitalization of openSUSE (#68335)
Docs: Correct capitalization of openSUSE (#67567)

Correct capitalization of openSUSE

(cherry picked from commit 7e0031ec36)

Co-authored-by: Clayton Cornell <131809008+clayton-cornell@users.noreply.github.com>
2023-05-11 15:28:03 -05:00
Adam Simpson
4a07a2dc5d Google Cloud Monitor: Fix mem usage for dropdown (#67683) (#67950)
Previously the Metric name dropdown would attempt to load _all_ the
available metric names into the Select which would eventually crash the
browser if the dataset was large enough.

We can fix this by using AsyncSelect and making another query once a
Service is selected _and_ the user types a few characters.

* fix: update tests for AsyncSelect

* fix lint

* fix: add subset of metrics on initial load
2023-05-11 19:26:51 +00:00
Andreas Christou
9cb76776af AzureMonitor: Add health check retry logic (#68120) (#68198)
AzureMonitor: Bump credential wait time (#68120)

Bump credential wait time as 15s seems too short

(cherry picked from commit 0d3a78d86d)

# Conflicts:
#	e2e/cloud-plugins-suite/azure-monitor.spec.ts
2023-05-11 11:22:41 -05:00
Grot (@grafanabot)
a0be1550eb Release: Bump version to 9.4.11 (#68272)
"Release: Updated versions in package to 9.4.11"
2023-05-10 17:03:29 -05:00
Ricky Whitaker
9daf1363df [9.4.x] Changelog: Updated changelog for 9.4.10 (#68267) (#68270)
* Changelog: Updated changelog for 9.4.10 (#68267)

(cherry picked from commit 2dbdebaae9)

* Update CHANGELOG.md

Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>

---------

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2023-05-10 16:45:11 -05:00
Horst Gutmann
93af60149d [v9.4.x] CI: Move windows-tests into promotion pipeline (#68218) (#68233)
(cherry picked from commit acd02e8a48)

Backport of https://github.com/grafana/grafana/pull/68218
2023-05-10 17:53:09 +03:00
Jack Baldry
203becbf33 [v9.4.x] Use expected types for admonition (#68179)
All types are declared lowercased.


(cherry picked from commit 356eabc24c)

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2023-05-10 14:12:26 +01:00
Grot (@grafanabot)
896f2ce04f [v9.4.x] updated screenshots, links and some wording (#68144)
updated screenshots, links and some wording (#67864)

(cherry picked from commit c9e5c229ec)

Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com>
2023-05-09 14:28:18 -07:00
Grot (@grafanabot)
2ea3929354 [v9.4.x] Fix Enterprise Datasources link on Grafana Enterprise page (#68116)
Fix Enterprise Datasources link on Grafana Enterprise page (#67962)

fix-enterprise-datasources-link

(cherry picked from commit 18d4fda613)

Co-authored-by: Andriy <andriy.urbanas@grafana.com>
2023-05-09 10:34:24 -05:00
Adam Simpson
126426e15e AzureMonitor: Correct series name accounting for dimensions (#67050) (#68033)
Correct displayName accounting for dimensions

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-05-09 13:06:36 +00:00
Dimitris Sotirakis
ef6fdcd710 [v9.4.x] CI: Remove custom enterprise2 pipelines (#68056) (#68059)
CI: Remove custom enterprise2 pipelines (#68056)

Remove custom enterprise2 pipelines

(cherry picked from commit 6ae952c7c5)
2023-05-09 12:07:01 +03:00
Galen Kistler
a2fea9af76 [v9.4.x] Prometheus: bug in creating autocomplete queries with labels (#68031)
* Prometheus: bug in creating autocomplete queries with labels (#68003)
(cherry picked from commit a1bc1bd368)
2023-05-08 21:40:50 +03:00
Horst Gutmann
d12a747a5d [v9.4.x] CI: Add Windows backend tests in more places (#66438) (#68008)
* CI: Add Windows backend tests in more places

* CI: Add promotion pipeline for publishing new windows-test-images

* CI: Ignore windows backend-test failures for now

* CI: Fix linting issue in ci_images.star file

(cherry picked from commit b2fc285a5d)

Backport of https://github.com/grafana/grafana/pull/66438
2023-05-08 17:04:37 +03:00
Grot (@grafanabot)
bcdc8cd5ab [v9.4.x] AzureMonitor: Fix logs query multi-resource and timespan values (#67931)
AzureMonitor: Fix logs query multi-resource and timespan values (#67914)

* Update TimeGrain interface methods

- Make them util functions because it's simpler

* Update logs ds to appropiately set resources and timespan

* Set timespan using RCF times

* Update tests

(cherry picked from commit 9d16718acc)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-05-05 20:19:04 +03:00
Isabel
1b2f5a3798 [v9.4.x] docs: fix create dashboard steps (#67865)
fixed merge conflict for backport
2023-05-04 13:07:27 -04:00
Grot (@grafanabot)
eafc315dc1 [v9.4.x] Docs: updates Grafana installation for Red Hat, Fedora, RHEL, SUSE, and OpenSUSE (#67773)
Docs: updates Grafana installation for Red Hat, Fedora, RHEL, SUSE, and OpenSUSE (#65232)

* removes references to CentOS

* starts reorg

* complete restructure

* updates alias

* Update docs/sources/setup-grafana/installation/rpm/index.md

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* incorporates review feedback

* adds install on suse/opensuse

* updates aliases

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* removes start server content from both topics; adds link to start server docs in Next steps

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* incorporates review feedback

* Apply suggestions from code review

* typo fix

---------

Co-authored-by: Dan Cech <dcech@grafana.com>
(cherry picked from commit fcdbb7a86f)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-05-04 12:04:01 -05:00
Grot (@grafanabot)
2760aa808d [v9.4.x] Docs/updates install landing page (#67774)
Docs/updates install landing page (#64809)

* copy edit

* copy edits plus some restructuring

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

---------

Co-authored-by: Dan Cech <dcech@grafana.com>
(cherry picked from commit 3b37135b5b)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-05-04 11:59:14 -05:00
Christopher Moyer
9b77be4a08 [Docs v9.4x] Manual backport - Link to config exemplars leads goes to top of page (#67687) (#67856)
Link to config exemplars leads goes to top of page (#67687)

* Link to config exemplars leads goes to top of page

The link to the configure exemplars in a Prometheus datasource leads to the top of the page.  I have referenced the correct link that would take it to the right section.

https://grafana.com/docs/grafana/latest/datasources/prometheus/#configure-exemplars

* Update docs/sources/fundamentals/exemplars/index.md

---------

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

Co-authored-by: samu6851 <samuel.oswalt@grafana.com>
2023-05-04 11:53:07 -05:00
Grot (@grafanabot)
2ca13f2b57 [v9.4.x] docs: updates windows/mac install topics (#67775)
docs: updates windows/mac install topics (#64740)

* updates windows/mac install topics

* corrects typo

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* tweaks

---------

Co-authored-by: Dan Cech <dcech@grafana.com>
(cherry picked from commit d67ad9efc4)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-05-04 11:46:49 -05:00
Grot (@grafanabot)
fbb48cb826 [v9.4.x] docs: Updates installation instruction for Debian/Ubuntu (#67776)
docs: Updates installation instruction for Debian/Ubuntu (#64232)

* draft changes

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* reworks debian/ubuntu instructions, updates start server topic

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* incorporates feedback; restructures to align with writers toolkit guidelines

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* tweaks structure of server topic; renames directory, corrects relrefs

* corrects spelling

* Apply suggestions from code review

Co-authored-by: Dan Cech <dcech@grafana.com>

* removed web parameter

* removes unnecessary word

* incorporates feedback from internal reviewer

* updates alias

* updates alias

* adjust alias

---------

Co-authored-by: Dan Cech <dcech@grafana.com>
(cherry picked from commit 13af5afaf3)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-05-04 11:30:33 -05:00
Grot (@grafanabot)
a567819719 [v9.4.x] InfluxDB: Fix adding FROM statement when the measurement is an empty string (#67834)
InfluxDB: Fix adding FROM statement when the measurement is an empty string (#67827)

* If the measurement empty don't add FROM statement

* Add comment line

(cherry picked from commit 764f87b485)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-05-04 17:09:17 +03:00
Sofia Papagiannaki
ff88bb0102 [v9.4.x] Chore: Upgrade Go to 1.20.4 (#67760)
Chore: Upgrade Go to 1.20.4
2023-05-04 10:53:16 +03:00
Grot (@grafanabot)
6a80a658b8 [v9.4.x] docs: add semi relative time ranges (#67753)
docs: add semi relative time ranges (#67559)

* add semi-relative time range section

* added second example and reworded

* formatting fixes

* added alerting note and fixed formatting

* wording fix

(cherry picked from commit 0271a1d094)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-05-03 11:55:43 -04:00
Grot (@grafanabot)
30504b6857 [v9.4.x] Update index.md (#67727)
Update index.md (#67172)

Clarified some of the intro text and added JSON outer element to make the samples clearer

(cherry picked from commit 66ad704292)

Co-authored-by: Nabeel Saad <saadnabs@hotmail.com>
2023-05-03 08:46:51 -05:00
Grot (@grafanabot)
be58e9f116 [v9.4.x] InfluxDB: Fix querying retention policies on flux mode (#67724)
InfluxDB: Fix querying retention policies on flux mode (#67722)

Query retention policies only on InfluxQL mode

(cherry picked from commit 373e4cab9a)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-05-03 16:11:03 +03:00
Grot (@grafanabot)
ad4357b07e [v9.4.x] docs: move misplaced Configure legend page (#67670)
docs: move misplaced Configure legend page (#67597)

* move configure legend page and add alias

* updated page weight and tried fixing alias

* fixed alias

* add preemptive alias for current page location

* apply suggestion from review

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

* apply suggestions from review

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

* apply suggestions from review

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

---------

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

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-05-02 11:51:44 -04:00
Grot (@grafanabot)
04d7c5f790 [v9.4.x] Theme: Fix wrong code segment in theme.md (#65438)
Theme: Fix wrong code segment in theme.md (#62488)

* fix wrong markdown

* fix prettier

(cherry picked from commit 3335d46c5f)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-05-02 12:16:26 +00:00
Isabel
ee278fe3b9 [9.4.x] docs: reverse what's new order in TOC (#67605)
fixed merge conflict for backport
2023-05-01 17:37:34 -04:00
Grot (@grafanabot)
101927cf04 [v9.4.x] Add Grafana Free as supporting Enterprise features (#67600)
Add Grafana Free as supporting Enterprise features (#67568)

Per https://docs.google.com/document/d/14aOVLPq0FNqQKN4axTTEvjraY_OafhiDM_2NYSHF33A/edit#heading=h.lo4c6e71q7vo Grafana Cloud Free will include all the features of Grafana Advanced in Q2

(cherry picked from commit 999a2ce92d)

Co-authored-by: Ron D <106610617+rgnvldr@users.noreply.github.com>
2023-05-01 15:11:14 -05:00
Leon Sorokin
9ec538568a [v9.4.x] TimeSeries: Fix leading null-fill for missing intervals (#67572)
* TimeSeries: Fix leading null-fill for missing intervals (#67570)

(cherry picked from commit e5aeb7c322)

# Conflicts:
#	packages/grafana-ui/src/components/GraphNG/nullInsertThreshold.ts

* fix jest
2023-04-29 04:15:14 -06:00
Isabel
63ecb1c359 [v9.4.x] docs: fixing merge conflict for backport (#67564)
fixing merge conflict for backport

Co-authored-by: sarah-spang <86264026+sarah-spang@users.noreply.github.com>
2023-04-28 17:03:34 -04:00
Grot (@grafanabot)
885057c4d2 [v9.4.x] Grafana Cloud: Put cloud artifacts to */release dir (#67530)
Grafana Cloud: Put cloud artifacts to `*/release` dir (#66168)

Put cloud artifacts to */release dir

(cherry picked from commit a2634495e5)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-04-28 18:23:20 +03:00
Grot (@grafanabot)
8f169dc42d [v9.4.x] Grafana Cloud: Add VariantLinuxAmd64 in build variants (#67527)
Grafana Cloud: Add `VariantLinuxAmd64` in build variants (#66167)

Add VariantLinuxAmd64 in build variants

(cherry picked from commit 8dd87a79f7)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-04-28 18:22:13 +03:00
Grot (@grafanabot)
1e7a0c9738 [v9.4.x] Influxdb: Handle legacy Influxdb influxql annotations with target in migration (#67503)
Influxdb: Handle legacy Influxdb influxql annotations with target in migration (#63225)

* handle legacy influxdb annotations with target in migration

* add types

* don't check tags that are empty strings and give annotation a type

(cherry picked from commit 7a3f7e26ce)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2023-04-28 08:55:26 -04:00
Grot (@grafanabot)
82f3e6f5a7 [v9.4.x] docs: update dashboard settings page (#67430)
docs: update dashboard settings page (#67359)

Update index.md

(cherry picked from commit 55c36b04ca)

Co-authored-by: MattiasSegerdahl <102952046+MattiasSegerdahl@users.noreply.github.com>
2023-04-27 13:49:22 -04:00
Christopher Moyer
f5f29e203b [Docs 9.4x] Update configure tracing (#67163) (#67414)
Update configure tracing (#67163)

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

Co-authored-by: MattiasSegerdahl <102952046+MattiasSegerdahl@users.noreply.github.com>
2023-04-27 11:53:06 -05:00
Grot (@grafanabot)
59898b231c [v9.4.x] Docs: Fix broken links to section on Variable syntax page (#67409)
Docs: Fix broken links to section on Variable syntax page (#67340)

These links have a trailing slash which don't work when linking to a
specific element.

(cherry picked from commit 278a8fccc9)

Co-authored-by: Eric Wang <2069450+ericdwang@users.noreply.github.com>
2023-04-27 12:09:24 -04:00
Horst Gutmann
0fdb063576 [v9.4.x] Chore: Update SAML lib (#828)
Update SAML lib
2023-04-27 14:36:34 +03:00
Horst Gutmann
6d1b00c745 AuthJWT: Fix JWT query param leak (CVE-2023-1387) [9.4.x] (#823)
* fix JWT query param leak

Co-authored-by: Gabriel MABILLE <gamab@users.noreply.github.com>
Co-authored-by: Kalle Persson <kalle.persson@grafana.com>
(cherry picked from commit 9e205a0)

* skip broken test

(cherry picked from commit 58e235a)
2023-04-27 14:36:34 +03:00
Grot (@grafanabot)
44c3c5f269 [v9.4.x] Alerting: Fix misleading status code in provisioning API (#67357)
Alerting: Fix misleading status code in provisioning API (#67331)

Fixes #66249

(cherry picked from commit dfc99cdd19)

Co-authored-by: Uwe Sommerlatt <uwe.sommerlatt@gmail.com>
2023-04-27 11:41:38 +03:00
Grot (@grafanabot)
ded351dc79 [v9.4.x] Azure Monitor: Fix bug that was not showing resources for certain locations (#66617)
Azure Monitor: Fix bug that was not showing resources for certain locations (#66502)

(cherry picked from commit d43482a463)

Co-authored-by: Alyssa Bull <58453566+alyssabull@users.noreply.github.com>
2023-04-26 15:38:46 +03:00
Grot (@grafanabot)
2a6ac647d2 [v9.4.x] Changelog: Updated changelog for 9.4.9 (#67265)
Changelog: Updated changelog for 9.4.9 (#67264)

(cherry picked from commit d5bad429dd)
2023-04-26 12:22:47 +03:00
Grot (@grafanabot)
ac8fd7966a Release: Bump version to 9.4.9 (#67261)
"Release: Updated versions in package to 9.4.9"
2023-04-26 12:09:29 +03:00
Grot (@grafanabot)
eb2d0db641 [v9.4.x] Doc: Fix typo (#67242)
Doc: Fix typo (#66929)

Update index.md

(cherry picked from commit ff61772218)

Co-authored-by: oneoneonepig <oneoneonepig@users.noreply.github.com>
2023-04-25 14:28:10 -05:00
Grot (@grafanabot)
46232f03bb [v9.4.x] docs: Update Screenshot (#67235)
Update Screenshot (#67233)

(cherry picked from commit ad964a0e1d)

Co-authored-by: Stefan Dunkler <stefan.dun@gmail.com>
2023-04-25 14:47:38 -04:00
Grot (@grafanabot)
ffe711cb14 [v9.4.x] Expressions/threshold: Fix incorrect thresholds args length (#66925)
Expressions/threshold: Fix incorrect thresholds args length (#66859)

(cherry picked from commit 350de3f3bf)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-04-20 13:16:54 +02:00
Grot (@grafanabot)
63347e0da2 [v9.4.x] Docs: adds legacy wording to api docs (#66941)
Docs: adds legacy wording to api docs (#66937)

adds legacy wording to api docs

(cherry picked from commit 9b529ef0cd)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-04-20 11:13:24 +00:00
Gilles De Mey
647edf7f58 Alerting: Fix share URL for Prometheus rules on subpath (#66752) (#66802) 2023-04-20 11:29:37 +02:00
Grot (@grafanabot)
4a7153cabe [v9.4.x] AzureMonitor: Ensure dimension labels are consistent (#66873)
AzureMonitor: Ensure dimension labels are consistent (#66783)

Ensure dimension labels are consistent

(cherry picked from commit c161b28f29)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-04-19 19:17:52 +03:00
Grot (@grafanabot)
1f415749a0 [v9.4.x] [docs] remove auth/saml alias from team sync page (#66855)
[docs] remove auth/saml alias from team sync page (#66796)

removed auth/saml alias from team sync page

(cherry picked from commit 60e6ff1038)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-04-19 10:00:55 -04:00
Emil Tullstedt
e37bbc7178 Chore: Upgrade Go to 1.20.3 (#66836)
Backport of #66264.
2023-04-19 14:00:22 +02:00
Grot (@grafanabot)
50d9084d35 [v9.4.x] CloudMonitor: Correctly re-render VisualMetricQueryEditor on TimeRange updates (#66786)
CloudMonitor: Correctly re-render `VisualMetricQueryEditor` on `TimeRange` updates (#66756)

Compare string value rather than object

(cherry picked from commit adf12d0e90)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-04-18 16:34:55 +00:00
Grot (@grafanabot)
f650293066 [v9.4.x] Update index.md (#66717)
Update index.md (#66698)

The useful links were down as they were using /docs/grafana/next/ instead of /docs/grafana/latest/ in the path

(cherry picked from commit 58e3b3a90e)

Co-authored-by: Sébastien Dauphin <dauphin.sebastien@gmail.com>
2023-04-18 14:02:35 +02:00
Grot (@grafanabot)
a7ac9d0b3b [v9.4.x] Trace View: Update the queryType to traceql for checking if same trace when clicking span link (#66670)
Trace View: Update the queryType to traceql for checking if same trace when clicking span link (#66645)

* TraceView: update the queryType to traceql for checking if same trace when clicking span link

* TraceView: linting

* TraceView: remove traceid check completely

(cherry picked from commit 6462c81f81)

Co-authored-by: Eric Mustin <mustin.eric@gmail.com>
2023-04-18 01:01:36 +01:00
Grot (@grafanabot)
36470ebcf3 [v9.4.x] docs: add missing alias (#66675)
docs: add missing alias (#66621)

added missing alias

(cherry picked from commit 2b7f41f4df)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-04-17 10:09:14 -04:00
Grot (@grafanabot)
5d2034188b [v9.4.x] removed duplicate query data source section (#66681)
removed duplicate query data source section (#66605)

(cherry picked from commit 1e53b29eee)

Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com>
2023-04-17 06:50:16 -07:00
Grot (@grafanabot)
b4d141ed1c [v9.4.x] Alerting: Update migration to put alerts to the default folder if dashboard folder is missing (#66593)
Alerting: Update migration to put alerts to the default folder if dashboard folder is missing (#65577)

* extract function

* use context logger

* put alert to general folder if folder is missing

* move folderHelper init

* add test

* Update pkg/services/sqlstore/migrations/ualert/ualert.go

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>

---------

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
(cherry picked from commit 7b2f44762e)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2023-04-15 08:08:57 +02:00
Isabel
8f761197a4 [v9.4.x] docs: put the numbers before dashboard elements (#66614)
resolving merge conflict for backport PR

Co-authored-by: samu6851 <samuel.oswalt@grafana.com>
2023-04-14 16:12:26 -04:00
Grot (@grafanabot)
d6785c9223 [v9.4.x] Google Cloud Monitoring: Fix project variable (#66602)
Google Cloud Monitoring: Fix project variable (#66524)

Google Cloud Monitoring: fix project variable

Also fix typo found while debugging

(cherry picked from commit 02951e8a26)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2023-04-14 15:29:30 +00:00
Grot (@grafanabot)
6286cba8ee [v9.4.x] InfluxDB: Fix querying with hardcoded retention policy (#66587)
InfluxDB: Fix querying with hardcoded retention policy (#66466)

* Use default retention policy instead of hardcoded retention policy

* Load retention policies for the editor

* Fix the typo

* Add more comment line

* Update comment

* Better error message

* Put back getTagKeys and getTagValues

* Fix unit test

(cherry picked from commit 6d53c87862)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-04-14 16:18:37 +03:00
lwandz13
0ec31973de [v9.4.x]docs:remove duplicate exemplars section (#66398) (#66421)
remove duplicate exemplars section (#66398)

(cherry picked from commit 5197fca70c)
Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2023-04-13 06:53:35 -07:00
Grot (@grafanabot)
cd8cd0f246 [v9.4.x] Auth: Remove the session cookie only if it's invalid or revoked (#66430)
Auth: Remove the session cookie only if it's invalid or revoked (#65984)

Remove the cookie if it's invalid or revoked

(cherry picked from commit 4cac95d1c2)

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
2023-04-13 09:53:31 +02:00
Grot (@grafanabot)
21e2f26688 [v9.4.x] InfluxDB: Fix Interpolation when querying variables (#66393)
InfluxDB: Fix Interpolation when querying variables (#65875)

Interpolate variables with InfluxQueryModel

(cherry picked from commit 4e71c91cfd)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-04-12 18:01:15 +03:00
Grot (@grafanabot)
49680128cd [v9.4.x] Expressions: Fix expression load with legacy UID -100 (#66387)
Expressions: Fix expression load with legacy UID -100 (#65950)

* Fix expressions instance settings loading

* Introduce a new method to get name or uid

* Update public/app/features/plugins/datasource_srv.ts

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>

* Move getNameOrUid method outside the class

---------

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

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-04-12 16:53:09 +02:00
Grot (@grafanabot)
edae149230 [v9.4.x] AccessControl: Allow editors to access GET /api/datasources (#66375)
AccessControl: Allow editors to access GET /api/datasources (#66343)

Allow editors to access GET /datasources

(cherry picked from commit 2c21090931)

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
2023-04-12 15:55:33 +02:00
Dimitris Sotirakis
0366e6f469 [v9.4.x] CI: Split /bin/build artifacts * subcommand (#66005) (#66344)
CI: Split `/bin/build artifacts *` subcommand (#66005)

* Split go files

* Modify publishartifacts.go

* Split main

* FIXME: Temp add GCSCopy to gcloud/storage

* Fix lint

* Exported flags

* Update starlark - make drone

* Further backend lint fixes

* Add fallback_test.go

* Fix go imports order

* make drone

* Remove GCSCopy from static assets

* Remove GCSCopy from storybook

* Fix lint

* Remove GCSCopy

* Remove success logline

* drone yaml cleanup

* Add artifacts-editions flag

* Fix starlark

* Add default sting slice in artifacts packages command

(cherry picked from commit 24d348f804)

# Conflicts:
#	.drone.yml
2023-04-12 12:36:33 +03:00
Isabel
0a2401f393 [v9.4] docs: update broken link (#66321)
fixed merge conflict
2023-04-11 16:22:51 -04:00
Grot (@grafanabot)
bca5541355 [v9.4.x] Remove "Open source" label from all "RBAC" pages (#66247)
Remove "Open source" label from all "RBAC" pages (#66129)

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-04-11 11:39:52 +03:00
Grot (@grafanabot)
a5b8b383e6 [v9.4.x] Remove "Open source" label from "Recorded queries" page (#66251)
Remove "Open source" label from "Recorded queries" page (#66127)

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-04-11 11:38:44 +03:00
Grot (@grafanabot)
19cc5aae59 [v9.4.x] fixed broken links (#66178)
fixed broken links (#66153)

(cherry picked from commit ce00465d9b)

Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com>
2023-04-07 19:06:30 +03:00
Grot (@grafanabot)
2a3f141ca5 [v9.4.x] Alerting: Fix explore link in alert detail view (#66165)
Alerting: Fix explore link in alert detail view (#66106)

(cherry picked from commit cb8a5b2c96)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-04-07 14:35:19 +02:00
Grot (@grafanabot)
bfb21e7621 [v9.4.x] Alerting: Fix docs link when creating or editing rules (#66163)
Alerting: Fix docs link when creating or editing rules (#66019)

(cherry picked from commit 3e12b72f58)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-04-07 14:41:38 +03:00
Grot (@grafanabot)
cd323622b7 [v9.4.x] CloudMonitoring: Add project selector for MQL editor[fix] (#65844)
CloudMonitoring: Add project selector for MQL editor[fix] (#65567)

(cherry picked from commit 81cb84d098)

Co-authored-by: Alyssa Bull <58453566+alyssabull@users.noreply.github.com>
2023-04-06 20:10:29 +00:00
Grot (@grafanabot)
b0c69c9eec [v9.4.x] Docs: Small fixes for Template Variables Doc (#66138)
Docs: Small fixes for Template Variables Doc (#65947)

* Docs: Small fixes for Template Variables Doc

* Docs: Minor fix to Variables Docs

- Added missing word

* Update docs/sources/dashboards/variables/add-template-variables/index.md

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>

* empty commit to trigger linting

* small change to trigger linting

---------

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

Co-authored-by: sarah-spang <86264026+sarah-spang@users.noreply.github.com>
2023-04-06 14:35:33 -05:00
Grot (@grafanabot)
0c3bf3f0e9 [v9.4.x] Docs: Add content to what's new 9.4 (#66122)
Docs: Add content to what's new 9.4 (#65895)

* Docs: Add content to what's new 9.4

* Update docs/sources/whatsnew/whats-new-in-v9-4.md

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

* Update docs/sources/whatsnew/whats-new-in-v9-4.md

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 75f5cb061e)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2023-04-06 07:50:58 -05:00
Grot (@grafanabot)
b40bf8b3f5 [v9.4.x] docs: fixes link (#66068)
docs: fixes link (#66051)

* fixes link

* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md

Co-authored-by: melGL <81323402+melgl@users.noreply.github.com>

---------

Co-authored-by: melGL <81323402+melgl@users.noreply.github.com>
(cherry picked from commit 421b911c45)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-04-06 07:21:24 -05:00
Grot (@grafanabot)
876f6e8727 [v9.4.x] Docs: Add example to extract a specific label value (#66018)
Docs: Add the index function

(cherry picked from commit a39190b613)

Co-authored-by: Simon Crute <simonc6372@users.noreply.github.com>
2023-04-05 15:15:53 +01:00
Grot (@grafanabot)
1148da45d3 [v9.4.x] Docs: Updated Grafana OSS Introduction (#66024)
Docs: Updated Grafana OSS Introduction (#66004)

* Added Phlare and added static data sources to intro instead of it just being TSDB sources

* Update docs/sources/introduction/_index.md

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

* Update docs/sources/introduction/_index.md

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 e8813916c9)

Co-authored-by: Alex Close <alex.kirtley-close@grafana.com>
2023-04-05 08:23:53 -05:00
Eric Leijonmarck
d37fa06f05 [v9.4.x] Auth: Fix orgrole picker disabled if isSynced user (#65553)
Auth: Fix orgrole picker disabled if isSynced user (#64033)

* fix: disable orgrolepicker if externaluser is synced

* add disable to role picker

* just took me 2 hours to center the icon

* wip

* fix: check externallySyncedUser for API call

* remove check from store

* add: tests

* refactor authproxy and made tests run

* add: feature toggle

* set feature toggle for tests

* add: IsProviderEnabled

* refactor: featuretoggle name

* IsProviderEnabled tests

* add specific tests for isProviderEnabled

* fix: org_user tests

* add: owner to featuretoggle

* add missing authlabels

* remove fmt

* feature toggle

* change config

* add test for a different authmodule

* test refactor

* gen feature toggle again

* fix basic auth user able to change the org role

* test for basic auth role

* make err.base to error

* lowered lvl of log and input mesg

(cherry picked from commit 3cd952b8ba)
2023-04-05 09:55:43 +01:00
Grot (@grafanabot)
f9f0dd8b1b [v9.4.x] Build: Add CloudMode to build versions (#65987)
Build: Add CloudMode to build versions (#65651)

* Add CloudMode to build versions

* Use linux-amd64 variant without musl for cloud mode

* Add cloud mode to version folder on package upload

* Use musl variant for CloudMode

* Only sign rpm packages if there's any to sign

* Remove trailing whitespace

(cherry picked from commit 8f282b8a6e)

Co-authored-by: Guilherme Caulada <guilherme.caulada@grafana.com>
2023-04-05 11:37:03 +03:00
Grot (@grafanabot)
1daa365107 [v9.4.x] Docs: Added note to contact Support (#65958)
Docs: Added note to contact Support (#65235)

* Added note to contact Support

* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md

* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md

* makes prettier

* Apply suggestions from code review

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 445734888b)

Co-authored-by: melGL <81323402+melgl@users.noreply.github.com>
2023-04-04 21:42:47 +03:00
Konrad Lalik
cd4cb967a5 [v9.4.x] Alerting: Disable alerting incompatible panels in the dashboard picke… (#65780)
* Alerting: Disable alerting incompatible panels in the dashboard picker (#65341)

* Hide dashboard hint when dashboard already selected

* Disable panels of types other than graph and timeseries

* Add a test checking disabled panels

* Make all panels selectable

* Fix tests

(cherry picked from commit bde77e4f79)

* Skip flakey test
2023-04-04 09:54:01 +02:00
Dimitris Sotirakis
285d5809c5 [v9.4.x] Backport #65797 and #65806 to v9.4.x (#65857)
* CI: Make `init-enterprise` depend on `grabpl` (#65797)

Make init-enterprise depend on grabpl

# Conflicts:
#	.drone.yml

(cherry picked from commit 821633c796)

# Conflicts:
#	.drone.yml
#	scripts/drone/pipelines/test_frontend.star

* CI: Exclude cloud related tags from tag events  (#65806)

* Exclude cloud related tags

* Fix starlark lint errors

(cherry picked from commit a18ea77aac)

# Conflicts:
#	.drone.yml
2023-04-04 08:36:57 +02:00
Grot (@grafanabot)
7d7751d5b0 [v9.4.x] update enhanced-ldap (#65867)
update enhanced-ldap (#65687)

* update enhanced-ldap

documenting a potential issue with ldap active sync, when search filter and username attributes do not match.

* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md

* formats example

* Update docs/sources/setup-grafana/configure-security/configure-authentication/enhanced-ldap/index.md

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 99ac39f0d2)

Co-authored-by: annelaurefroment <49911675+annelaurefroment@users.noreply.github.com>
2023-04-03 11:24:08 -05:00
Grot (@grafanabot)
53d2e59cff [v9.4.x] Docs: Add transformations doc link for What's New v9.2 (#65850)
Docs: Add transformations doc link for What's New v9.2 (#65673)

* Add transformations doc link

Add transformations doc link to `Transformations: INNER JOINs` section.

Related issue: https://github.com/grafana/grafana/issues/65671

* Apply suggestions from code review

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>

---------

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

Co-authored-by: Christine Wang <wang.christiney@gmail.com>
2023-04-03 11:17:54 -05:00
Horst Gutmann
bf3f1368a7 [v9.4.x] CI: Move release integration pipeline to standalone promotion pipeline (#65787) (#65800)
CI: Move release integration pipeline to standalone promotion pipeline (#65787)

(cherry picked from commit e9aef20eb4)
2023-04-03 14:08:05 +03:00
Grot (@grafanabot)
8500eb1c18 [v9.4.x] Alerting: Fix integration test for creating silences (#65790)
Alerting: Fix integration test for creating silences (#65722)

* fix integration test for creating silences

to create correct silence with endsAt in the future

* Update api_alertmanager_test.go

(cherry picked from commit ed8628e39d)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2023-04-03 12:45:19 +03:00
Grot (@grafanabot)
f13eff4287 [v9.4.x] Angular: Prevent angular from loading when disabled (#65777)
* Angular: Prevent angular from loading when disabled (#65755)

* Angular: Prevent angular from loading when disabled

* remove stuff

(cherry picked from commit 093498a03b)

* Update

---------

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2023-04-03 12:10:06 +03:00
Sofia Papagiannaki
ecaeafd4f3 [9.4.x]: API: Fix "Updated by" Column in dashboard versions table (#65626)
* API: Fix  "Updated by" Column in dashboard versions table (#65351)

* API: Fix dashboard versions created by field

* Add tests

* Update OpenAPI specs

* Apply suggestion from code review

(cherry picked from commit 3cd3bb00ec)

* Fix guardian call
2023-03-31 11:56:36 +02:00
Alexander Weaver
e9d53761fb Alerting: Introduce proper feature toggles for common state history backend combinations (#65650)
* Alerting: Introduce proper feature toggles for common state history backend combinations (#65497)

* define 3 feature toggles for rollout phases

* Pass feature toggles along

* Implement first feature toggle

* Try a different strategy with fall-throughs to specific configurations

* Apply toggle overrides once outside of backend composition

* Emit log messages when we coerce backends

* Run code generator for feature toggle files

* Improve wording in flag descs

* Re-run generator

* Use code-generated constants instead of plain strings

* Use converted enum values rather than strings for pre-parsing

(cherry picked from commit b2abb63286)

* Remove generated file that is only present in future versions
2023-03-30 14:29:43 -05:00
Grot (@grafanabot)
66e3f8dc23 [v9.4.x] Docs: Fix markup for URL (#65649)
Docs: Fix markup for URL (#65576)

* Docs: Fix markup for URL

* updates absolute URL to a relref

---------

Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 940768cf76)

Co-authored-by: sarah-spang <86264026+sarah-spang@users.noreply.github.com>
2023-03-30 21:59:14 +03:00
Grot (@grafanabot)
fc6b8f9c6c [v9.4.x] Give more detail and context on http_addr in grafana.ini (#65644)
Give more detail and context on http_addr in grafana.ini (#65187)

* Give more detail and context on http_addr in grafana.ini

This particular configuration item is misleadingly named (it's about networking addresses rather than HTTP) and there are a bunch of ways users can misread, misconfigure, and create a situation where grafana won't start due to a bind error.

I'm trying to outline a couple of extra things about what this covers and provide good default advice, leaving room for specialists who know what they're doing to still use this, with more clarity.

* Update _index.md

* Apply suggestions from code review

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

* Update _index.md

removed recommendation note about http_addr

* makes prettier

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 765073a776)

Co-authored-by: David Allen <david.allen@grafana.com>
2023-03-30 12:34:10 -05:00
Alexander Weaver
76c3e1863b Alerting: Fix and re-enable filters instance labels in log line test (#65622)
Alerting: Fix and re-enable `filters instance labels in log line` test (#65618)

Fix and reenable test

(cherry picked from commit 5e87ea745d)
2023-03-30 09:44:48 -05:00
Grot (@grafanabot)
a3ef453ff6 [v9.4.x] Docs: updates type to integration (#65592)
Docs: updates type to integration (#65591)

* Docs: updates type to integration

* fixes link

* fixes links

(cherry picked from commit c77aa11545)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-03-30 10:27:49 +02:00
Grot (@grafanabot)
37f2a0aa32 [v9.4.x] Docs: Fix Nightly Builds URL (#65570)
Docs: Fix Nightly Builds URL (#65552)

Update _index.md

URL for Nightly Builds leads to standard download page.
- Updated to direct to correct Nightly Downloads page: https://grafana.com/grafana/download/nightly?edition=oss

(cherry picked from commit 8717cd0761)

Co-authored-by: sarah-spang <86264026+sarah-spang@users.noreply.github.com>
2023-03-29 16:39:37 -05:00
Grot (@grafanabot)
1b9abfeec8 [v9.4.x] Docs: Update version for "What's New" section (#65571)
Docs: Update version for "What's New" section (#65554)

(cherry picked from commit 906086c91b)

Co-authored-by: sarah-spang <86264026+sarah-spang@users.noreply.github.com>
2023-03-29 16:39:17 -05:00
Alexander Weaver
3bf0352fbb Alerting: No longer index state history log streams by instance labels (#65563)
Alerting: No longer index state history log streams by instance labels (#65474)

* Remove private labels

* No longer index by instance labels

* Labels are now invariant, only build them once

* Remove bucketing since everything is in a single stream

* Refactor statesToStreams to only return a single unified log stream

* Don't query on labels that no longer exist

* Move selector logic to loki layer, genericize client to work in terms of straight logQL

* Add support for line-level label filters in query

* Combine existing selector tests for better parallelism

* Tests for logQL construction

* Underscore instead of dot for unwrapping labels in logql

(cherry picked from commit a416100abc)
2023-03-29 16:11:12 -05:00
ismail simsek
132900fe2e [v9.4.x] InfluxDB: Fix sending retention policy with InfluxQL queries (#65532)
InfluxDB: Fix sending retention policy with InfluxQL queries (#63820)

* Send retention policy if that is specified

* Define the type

* Update default retention policy name

* Update unit tests

* fix unit tests

* fix unit tests again

* Load retention policies at first

* Fix tests

* Fix Editor tests

* Remove unused code

* A simpler approach

* Even simpler

* Even simpler

(cherry picked from commit 0aee7338ad)
2023-03-29 21:57:44 +03:00
Grot (@grafanabot)
009fa712c2 [v9.4.x] configure HTTPS documentation (#65560)
configure HTTPS documentation  (#65271)

* configure HTTPS settings for grafana

* Apply suggestions from code review

* Apply suggestions from code review

* rewrites and restructures content

* Apply suggestions from code review

* PR feedback review; https docs

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* Update docs/sources/setup-grafana/set-up-https.md

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

* errata

* make prettier

* Apply suggestions from code review

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 4839f1543a)

Co-authored-by: David Allen <david.allen@grafana.com>
2023-03-29 13:23:49 -05:00
Yuri Tseretyan
413ac1ec7d Chore: Update alerting to commit 518e63bb07c5 (#65488)
* update alerting module to 518e63bb07c5
* update slack test to cover json and text response content-type cases
2023-03-29 13:07:06 -04:00
Grot (@grafanabot)
266a7407f6 [v9.4.x] Dashboards: Evaluate provisioned dashboard titles in a backwards compatible way (#65440)
Backport from #65184 using github.com/xorcare/pointer instead of the newer util.Pointer.

(cherry picked from commit b210a39cb7)

---------

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2023-03-29 11:25:44 +02:00
Grot (@grafanabot)
90db06d65b [v9.4.x] docs: fix enhanced ldap alias (#65485)
docs: fix enhanced ldap alias (#65478)

fixed alias

(cherry picked from commit 4b29b1d741)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-03-28 14:43:42 -05:00
Grot (@grafanabot)
a080d453b4 [v9.4.x] docs: update elasticsearch grafana play link (#65480)
docs: update elasticsearch grafana play link (#65280)

(cherry picked from commit 0d3e0e7cc4)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-03-28 14:30:33 -05:00
Grot (@grafanabot)
8374ef84df [v9.4.x] Remove redundant content or delete this page entirely (#65473)
Remove redundant content or delete this page entirely (#65446)

* Remove redundant content or delete this page entirely

The top of the page has redundant content pitching Grafana Cloud.

"You can also configure the MS SQL Server data source on a Grafana Cloud instance without having to host Grafana yourself."  Which is directly under the highlighted area explaining the same thing.  The same content is floating in the right side of all the pages as well.

Removed "> **Note:** You must install Grafana 5.1+ in order to use the integrated MS SQL data source."

Wait, why does this page exist if the data source page has the relevant updated content?  https://grafana.com/docs/grafana/latest/datasources/mssql/

* makes prettier

---------

Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 2b73f8cfd5)

Co-authored-by: mallettjared <110853992+mallettjared@users.noreply.github.com>
2023-03-28 12:58:52 -05:00
Gilles De Mey
ef6476d92b Alerting: Use displayNameFromDS if available in preview (#65342) (#65445) 2023-03-28 18:15:52 +02:00
Grot (@grafanabot)
144efd25b8 [v9.4.x] MegaMenu: Fixes mega menu showing scroll indicator when it shouldn't (#65465)
MegaMenu: Fixes mega menu showing scroll indicator when it shouldn't (#65452)

* MegaMenu: Fixes mega menu showing scroll indicator when it shouldn't

* fixing css

(cherry picked from commit 273e05a9a2)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2023-03-28 18:55:09 +03:00
Grot (@grafanabot)
cb5c92a375 [v9.4.x] CI: Allow overwriting of existing GitHub release assets (#65459)
CI: Allow overwriting of existing GitHub release assets (#65127)

* CI: Allow overwriting of existing GitHub release assets

This closes #63698

* Use c for *cli.Context in publishgithub.go

(cherry picked from commit 4ab3bd6f7e)

Co-authored-by: Horst Gutmann <horst.gutmann@grafana.com>
2023-03-28 17:31:14 +02:00
Gilles De Mey
6a73b2b726 Email: Mark HTML comments as "safe" in email templates (#64546) (#65443) 2023-03-28 17:26:15 +02:00
Grot (@grafanabot)
d3c37d28ed [v9.4.x] Alerting: Add alert instance labels to Loki log lines in addition to stream labels (#65454)
Alerting: Add alert instance labels to Loki log lines in addition to stream labels (#65403)

Add instance labels to log line

(cherry picked from commit de1637afe5)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-28 17:11:43 +03:00
Grot (@grafanabot)
1b8d220d96 [v9.4.x] Alerting: Add "backend" label to state history writes metrics (#65453)
Alerting: Add "backend" label to state history writes metrics (#65395)

* Add backend label to state history writes metrics

* Update test expectations

(cherry picked from commit dd04757fc9)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-28 17:06:57 +03:00
Grot (@grafanabot)
8fad42fa6f [v9.4.x] DateTimePicker: Can now select time correctly (#65431) 2023-03-28 13:11:52 +02:00
Grot (@grafanabot)
9d00d07a6a [v9.4.x] Alerting: Fix wrong text in step4 (#65348)
Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
Fix wrong text in step4 (#65279)
2023-03-28 13:04:32 +02:00
Grot (@grafanabot)
7b874aa327 [v9.4.x] Increase coverage of 'Grafana Cloud' labels (#64752)
Increase coverage of 'Grafana Cloud' labels (#64646)

* Add 'Grafana Cloud' label to content

All pages are applicable to both 'Open source' and 'Grafana Cloud'

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

* Add 'Grafana Cloud' label to administration content with some exceptions

- Enterprise licensing is 'Open source' and 'Enterprise'.
- 'Manage Organizations', 'Provision Grafana', and 'Stats and License' are 'Open source' only.

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

* Remove OSS from enterprise-licensing content

* Apply suggestions from code review

---------

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-28 11:51:36 +01:00
Will Browne
0d7efc076c [v9.4.x] Plugins: Markdown fetch retry with lowercase (#65388)
cherry pick
2023-03-28 12:19:20 +02:00
Grot (@grafanabot)
d14faf3cc0 [v9.4.x] Docs: Add 'tenant_id' for Loki clients (Auditing & Analytics) (#65401)
Docs: Add 'tenant_id' for Loki clients (Auditing & Analytics) (#63098)

* Docs: Add 'tenant_id' for Loki clients (Auditing & Analytics)

* Apply suggestions from code review

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

* Apply suggestions from code review

Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>

---------

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

Co-authored-by: Joan López de la Franca Beltran <5459617+joanlopez@users.noreply.github.com>
2023-03-27 23:49:19 +03:00
Sofia Papagiannaki
67dd929f5e [v9.4.x]: Upgrade golang.org/x/net to 0.7.0 (#65337)
* go mod tidy

* go get golang.org/x/net@v0.7.0
2023-03-27 17:57:49 +03:00
Grot (@grafanabot)
72dad41413 [v9.4.x] Navigation: Sanitize homeUrl (#65365)
Navigation: Sanitize homeUrl (#65293)

sanitize homeUrl

(cherry picked from commit f948482386)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-27 15:41:32 +01:00
Dimitris Sotirakis
84e9267612 [v9.4.x] CI: Cleanup unnecessary grabpl dependencies (#65330) (#65347)
CI: Cleanup unnecessary `grabpl` dependencies (#65330)

* Remove unnecessary grabpl dependencies

* Revert test-frontend change

(cherry picked from commit 89d642e001)

# Conflicts:
#	.drone.yml
2023-03-27 16:41:23 +03:00
Virginia Cepeda
9bafdcb72a Alerting: Improve showing nextEvaluationDate for rules (#65205) (#65227)
* Improve showing nextEvaluationDate for rules

Co-Authored-By: Konrad Lalik <konradlalik@gmail.com>

* Improve imports and comments

---------

Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
(cherry picked from commit b90aed4fd7)
2023-03-27 10:32:20 -03:00
Grot (@grafanabot)
bb3e08a0a1 [v9.4.x] Alerting: Fix stats that display alert count when using unified alerting (#64951)
* Alerting: Fix stats that display alert count when using unified alerting (#64852)

* Alerting: Fix stats when using unified alerting

(cherry picked from commit 02a8f62021)

* bundle services is not needed for 9.4.x

---------

Co-authored-by: gotjosh <josue.abreu@gmail.com>
2023-03-27 14:30:27 +01:00
Grot (@grafanabot)
0680231781 [v9.4.x] Database: Don't sleep 10ms before every request (#65334)
Database: Don't sleep 10ms before every request (#64832)

Previously every DB operation would wait 10ms before even trying.
Now we try first, and defer creating the ticker until we need it.

(cherry picked from commit f4a5f91496)

Co-authored-by: Bryan Boreham <bjboreham@gmail.com>
2023-03-27 12:30:50 +03:00
Grot (@grafanabot)
8288d962ef [v9.4.x] Docs: Use correct function in labels and annotations docs (#65253)
Docs: Use correct function in labels and annotations docs (#65032)

Use correct function in labels and annotations docs

(cherry picked from commit 0464aebc8e)

Co-authored-by: Martin Beentjes <martinbeentjes@users.noreply.github.com>
2023-03-27 11:10:12 +02:00
Dimitris Sotirakis
bd37c60b50 [v9.4.x] CI: Remove grabpl dependency from publish-packages steps (#65329) (#65333)
CI: Remove `grabpl` dependency from `publish-packages` steps (#65329)

Remove grabpl dependency from publish packages

(cherry picked from commit 3b00d2c273)

# Conflicts:
#	.drone.yml
2023-03-27 11:29:02 +03:00
Jack Baldry
e37fb197b2 [v9.4.x] Add @imatwawana to CODEOWNERS for her area of responsibility (#65158)
Add @imatwawana to CODEOWNERS for her area of responsibility (#64963)


(cherry picked from commit 8941ca813c)

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-26 10:42:44 +01:00
Grot (@grafanabot)
0f87c31a2c [v9.4.x] Changelog: Updated changelog for 9.4.7 (#65296)
Changelog: Updated changelog for 9.4.7 (#65292)

(cherry picked from commit a02a28f229)
2023-03-23 12:52:45 -05:00
Grot (@grafanabot)
97fc76da27 [v9.4.x] Docs/updates amazon cloudwatch (#65282)
Docs/updates amazon cloudwatch (#64987)

* updated AWS to Amazon in the index file

* edited query editor index file -AWS with Amazon

(cherry picked from commit 0975e53fc0)

Co-authored-by: lwandz13 <126723338+lwandz13@users.noreply.github.com>
2023-03-23 08:50:55 -07:00
Gilles De Mey
54fe185e80 Alerting: Paginate result previews (#65257) (#65273)
Co-authored-by: konrad147 <konradlalik@gmail.com>
Co-authored-by: Sonia Aguilar <soniaaguilarpeiron@gmail.com>
2023-03-23 16:01:52 +01:00
Grot (@grafanabot)
96d1d9981d [v9.4.x] Changelog: Updated changelog for 9.4.7 (#65269)
Changelog: Updated changelog for 9.4.7 (#65268)

(cherry picked from commit da97139489)
2023-03-23 14:28:25 +01:00
Grot (@grafanabot)
f54cf0865a [v9.4.x] Expressions: More robust expression check (#65177)
Expressions: More robust expression check (#65006)

More robust expression check

(cherry picked from commit 1328878ace)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-03-22 20:57:17 +01:00
Dimitris Sotirakis
ffe9b71a27 [v9.4.x] CD: Remove fetch-images dependency from AWS marketplace automation (#65173) (#65197)
CD: Remove `fetch-images` dependency from AWS marketplace automation (#65173)

* Remove fetch-images dependency

* Fix starlark link

(cherry picked from commit d0be9610f0)

# Conflicts:
#	.drone.yml
2023-03-22 18:56:03 +02:00
Grot (@grafanabot)
4a825cad7b [v9.4.x] Changelog: Updated changelog for 9.4.7 (#65209)
Changelog: Updated changelog for 9.4.7 (#65208)

(cherry picked from commit adcdf190bb)
2023-03-22 17:47:28 +01:00
ismail simsek
ca91072d5b [v9.4.x] Fix xss in Graphite functions tooltip (#805)
Fix xss in Graphite functions tooltip (#804)

(cherry picked from commit 87aad3f11836f810ee1fdfee27827e746ef36055)

Co-authored-by: Ludovic Viaud <ludovic.viaud@gmail.com>
2023-03-22 17:41:54 +01:00
Grot (@grafanabot)
b1c73a9984 [v9.4.x] SQL Datasources: Prevent Call Stack Overflows with Large Numbers of Values for Variable (#65182)
SQL Datasources: Prevent Call Stack Overflows with Large Numbers of Values for Variable (#64937)

* Push values with every map call to avoid hitting the maximum call stack size.

* Add test and refactor to for of

* Use native fill instead of lodash

---------

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

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2023-03-22 15:17:47 +01:00
Konrad Lalik
721605af13 Alerting: Prometheus-compatible Alertmanager timings editor (#64526) (#65124)
* Alerting: Prometheus-compatible Alertmanager timings editor (#64526)

* Change Alertmanager timings editor

* Update timing inputs for default policy editor

* Switch prom duration inputs in notification policy form

* Fix a11y issues

* Fix validation

* Add timings forms tests

* Fix default policy form and add more tests

* Add notification policy form tests

* Add todo item

* Remove unused code

* Use default timings object to fill placeholder values

(cherry picked from commit d8e32cc929)

* Adjust code and tests to v.9.4 codebase

* Remove unused code, remove TODO item
2023-03-22 13:26:14 +01:00
Grot (@grafanabot)
950b15d0aa [v9.4.x] Alerting: Fix attachment of external labels to Loki state history log streams (#65142)
Alerting: Fix attachment of external labels to Loki state history log streams (#65140)

Fix attachment of external labels, add tests

(cherry picked from commit 07368dec74)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-22 09:15:44 +02:00
Alexander Weaver
788dc25416 Alerting: Switch to snappy-compressed-protobuf for outgoing push requests to Loki (#65137)
* Alerting: Switch to snappy-compressed-protobuf for outgoing push requests to Loki (#65077)

* Encode with snappy, always

* JSON encoder type

* Headers

* Copy labels formatter from promtail

* Implement snappy-proto encoding

* Create encoder interface, test both encoders, choose snappy-proto by default

* Make encoder configurable at the LokiCfg level

* Export both encoders

* Touch up comment and tests

* Drop unnecessary conversions after move to plain strings to appease linter

(cherry picked from commit bf54f2672e)

* Sample fields got renamed between 9.4 and main
2023-03-21 16:42:01 -05:00
Alexander Weaver
744c1164e7 Alerting: Fix ambiguous handling of equals in labels when bucketing Loki state history streams (#65135)
Alerting: Fix ambiguous handling of equals in labels when bucketing Loki state history streams (#65013)

* Use JSON instead of data.Labels string format as label repr

* Drop debug log line

(cherry picked from commit cc7e5ce62e)
2023-03-21 19:59:57 +02:00
Brendan O'Handley
2c6ad8867f Prometheus: Feedback link for metric encyclopedia plus performance im… (#64773)
Prometheus: Feedback link for metric encyclopedia plus performance improvements (#64576)

* add filtered results

* add feedback link

* correctly debounce fuzzy search thank you leon

* reduce calls to filterMetrics()in letter search

* clean up the alphabet type

* bug fix, filter type should be subtractive

* each filter is don;t explicitly, subtracting from the results of each

* Revert "each filter is don;t explicitly, subtracting from the results of each"

This reverts commit 5648788451.

* each filter is filtered explicitly, one after the other, subtracting from the results of each

(cherry picked from commit 2e4b134743)
2023-03-21 11:56:49 -04:00
Grot (@grafanabot)
4b6a015256 [v9.4.x] Alerting: Elide requests to Loki if nothing should be recorded (#65118)
Alerting: Elide requests to Loki if nothing should be recorded (#65011)

Exit early if no log streams or annotations

(cherry picked from commit e39d7f44c9)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-21 16:50:47 +02:00
Grot (@grafanabot)
4452c15714 [v9.4.x] Fix x-value being formatted as time when not necessary (#65114)
Fix x-value being formatted as time when not necessary (#65095)

(cherry picked from commit 24ecc7d0dc)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2023-03-21 16:13:14 +02:00
Grot (@grafanabot)
4b95a36e82 [v9.4.x] Docs: fix numbering and rename topic (#65107)
Docs: fix numbering and rename topic (#65093)

* Docs: fix numbering and rename topic

* fixes typo

* removes full stops

* deletes :

(cherry picked from commit 89c65e22d3)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-03-21 14:14:04 +01:00
Dimitris Sotirakis
612edc2665 [v9.4.x] CI: Update grabpl to 3.0.30 (#65028) (#65091)
CI: Update `grabpl` to `3.0.30` (#65028)

Update grabpl

(cherry picked from commit 4a80233bed)

# Conflicts:
#	.drone.yml
2023-03-21 12:14:17 +02:00
Grot (@grafanabot)
fa2a8b2bd5 [v9.4.x] Docs: Add documentation on how to debug backend plugins (#65088)
Docs: Add documentation on how to debug backend plugins (#64814)

* Docs: Add documentation on how to debug backend plugins

* Changes from PR reviews

* PR review changes

(cherry picked from commit 41b0c17aae)

Co-authored-by: Giuseppe Guerra <giuseppe.guerra@grafana.com>
2023-03-21 10:43:03 +01:00
Horst Gutmann
29d69eb16f [v9.4.x] Update CODEOWNERship for grafana-delivery team (#64973) (#65018)
Update CODEOWNERship for grafana-delivery team (#64973)

(cherry picked from commit 2897ee37bf)
2023-03-21 11:27:45 +02:00
Grot (@grafanabot)
553b90d1e7 [v9.4.x] CloudWatch Logs: Revert "Queries in an expression should run synchronously (#64443)" (#65067)
CloudWatch Logs: Revert "Queries in an expression should run synchronously (#64443)" (#65036)

Revert "CloudWatch Logs: Queries in an expression should run synchronously (#64443)"

This reverts commit 74436d31de.

(cherry picked from commit 972e611f76)

Co-authored-by: Shirley <4163034+fridgepoet@users.noreply.github.com>
2023-03-20 19:51:38 +01:00
Grot (@grafanabot)
50952f0a7a [v9.4.x] [Docs] - Add Warning about Version Downgrade and Alerting to Grafana … (#65062)
[Docs] - Add Warning about Version Downgrade and Alerting to Grafana … (#64896)

* [Docs] - Add Warning about Version Downgrade and Alerting to Grafana v9.4 Upgrade Instructions

Add Warning about Version Downgrade and Alerting to Grafana v9.4 Upgrade Instructions

* Update docs/sources/upgrade-guide/upgrade-v9.4/index.md

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

* Update docs/sources/upgrade-guide/upgrade-v9.4/index.md

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

* makes prettier

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
Co-authored-by: Chris Moyer <chris.moyer@grafana.com>
(cherry picked from commit 661e44ae6d)

Co-authored-by: SeamusGrafana <102023327+SeamusGrafana@users.noreply.github.com>
2023-03-20 13:03:28 -05:00
Grot (@grafanabot)
bc4e9e3215 [v9.4.x] Information about SQLite limitations (#65066)
Information about SQLite limitations (#64990)

* Update _index.md

I am creating this PR to add more content about the SQLite (the default database for Grafana) limitations. SQLite is fine for small environments but not suitable when monitoring many Dashboards and sending lots of alerts frequently.

For e.g. this issue is just from this week and then got followed up by 3-4 more similar issues (all related to SQLite and are linked with this issue)

Closes #64664

By adding more information, will have less frequency of such issues reported by users.

Also, once this PR get submitted, will also create a new PR about the possible workaround to not get the error message "database locked" while using SQLite.

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

Thank you. Also, can you please add this link to the High Availablity text as hyperlink.

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

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

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

---------

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

Co-authored-by: Usman Ahmad <69509548+usmangt@users.noreply.github.com>
2023-03-20 12:06:09 -05:00
Grot (@grafanabot)
6a1d736f03 [v9.4.x] KVStore: Include database field in migration (#65037)
KVStore: Include database field in migration (#62790)

(cherry picked from commit b0213a4877)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2023-03-20 12:44:03 +01:00
Konrad Lalik
bf3422740b Alerting: Fix notification policies matcher filter (#64967) 2023-03-20 07:55:50 +01:00
Grot (@grafanabot)
231cb2b835 [v9.4.x] AzureMonitor: Fix query variable migration (#64982)
AzureMonitor: Fix query variable migration (#63991)

* AzureMonitor: Fix query variable migration

Somehow the query object becomes "unwriteable" post 9.4. To workaround
this I clone the query object before doing any migrations which removes
the immutability and allows the migrations to function as they did.

Fixes #63943

* refactor deepClone out to keep object the same

(cherry picked from commit 3498785184)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2023-03-18 21:21:40 +02:00
Grot (@grafanabot)
a440178397 [v9.4.x] Vendor errors.Join from Go standard library to avoid version incompatibilities (#64986)
Vendor errors.Join from Go standard library to avoid version incompatibilities (#64985)

Vendor errors.Join from std lib

(cherry picked from commit 40c5713cbd)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-17 14:42:31 -05:00
Grot (@grafanabot)
85c794d932 [v9.4.x] Alerting: Create new state history "fanout" backend that dispatches to multiple other backends at once (#64983)
Alerting: Create new state history "fanout" backend that dispatches to multiple other backends at once (#64774)

* Rename RecordStatesAsync to Record

* Rename QueryStates to Query

* Implement fanout writes

* Implement primary queries

* Simplify error joining

* Add test for query path

* Add tests for writes and error propagation

* Allow fanout backend to be configured

* Touch up log messages and config validation

* Consistent documentation for all backend structs

* Parse and normalize backend names more consistently against an enum

* Touch-ups to documentation

* Improve clarity around multi-record blocking

* Keep primary and secondaries more distinct

* Rename fanout backend to multiple backend

* Simplify config keys for multi backend mode

(cherry picked from commit a31672fa40)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-17 20:13:12 +02:00
Grot (@grafanabot)
1f498f9ff7 [v9.4.x] AzureMonitor: Increase wait for credentials to be ready in E2E test (#64980)
AzureMonitor: Increase wait for credentials to be ready in E2E test (#64969)

Increase wait for credentials to be ready

(cherry picked from commit edc47964b6)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-03-17 16:56:12 +00:00
Grot (@grafanabot)
7e5e3d78d0 [v9.4.x] SQLStore: Fix setting query retries for integration tests (#64972)
SQLStore: Fix setting query tries for integration tests (#64944)

* SQLStore: Pass testinfra database configuration to the test database

* Add test

* Bypass gocyclo check for initTestDB

(cherry picked from commit f5cb8c660e)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2023-03-17 18:05:30 +02:00
Grot (@grafanabot)
c5f4ef6c3e [v9.4.x] Alerting: Handful of small adjustments to log levels and parameters (#64954)
Alerting: Handful of small adjustments to log levels and parameters (#64572)

Calculate duration earlier in scheduler

(cherry picked from commit 9bcf8819d3)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-17 14:33:55 +02:00
Grot (@grafanabot)
69a7d5d6a6 [v9.4.x] SQLStore: Fix SQLite error propagation if query retries are disabled (#64948)
SQLStore: Fix SQLite error propagation if query retries are disabled (#64904)

* SQLStore: Add test when query retrying is disabled

* Fix condition

* Add test cases for sqlite3.ErrLocked

(cherry picked from commit 41843464d1)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2023-03-17 13:33:37 +02:00
Grot (@grafanabot)
3d1085c6ad [v9.4.x] Navigation: handle case when there is no alerting node at all (#64950)
Navigation: handle case when there is no alerting node at all (#64941)

* handle case when there is no alerting node at all

* update backend tests

(cherry picked from commit f4c62a5c5d)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-17 13:27:40 +02:00
Grot (@grafanabot)
5d6a6677a2 [v9.4.x] Alerting: QoL improvements to the unified alerting multi-replica devenv (#64939)
Alerting: QoL improvements to the unified alerting multi-replica devenv (#64907)

(cherry picked from commit 406431df4e)

Co-authored-by: gotjosh <josue.abreu@gmail.com>
2023-03-17 10:59:13 +00:00
Grot (@grafanabot)
b5c092f03e [v9.4.x] Navigation: Correctly create Alerts and incidents section when using legacy alerting (#64926)
Navigation: Correctly create `Alerts and incidents` section when using legacy alerting (#64924)

check for legacy alerting node as well

(cherry picked from commit 54dd8943ca)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-16 20:17:48 +02:00
Grot (@grafanabot)
46030b3b69 [v9.4.x] LogContext: Fix height of upper group when using logsContextDatasourceUi (#64617)
LogContext: Fix height of upper group when using `logsContextDatasourceUi` (#64602)

fix wrong height being set

(cherry picked from commit 7cde6acbef)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-03-16 08:09:01 -07:00
Grot (@grafanabot)
0e11822954 [v9.4.x] Fix broken link in "Publish a plugin" page and lint the page with doc-validator (#64895)
Fix broken link in "Publish a plugin" page and lint the page with doc-validator (#64881)

* Use one sentence per line for better line based diffing

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

* Add missing and required description front matter

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

* Fix heading hierarchy

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

* Fix doc-validator linting errors

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

* Add doc-validator make target

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

* Fix nested lists

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

---------

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-16 12:22:47 +00:00
Grot (@grafanabot)
bf832c93e7 [v9.4.x] Fix website build errors both for Grafana and content mounted in Grafana Cloud (#64836)
Fix website build errors both for Grafana and content mounted in Grafana Cloud (#64794)

* Fix reference to Grafana CLI

- Make relref for relative permalink
- Use relative path for unambiguous resolution

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

* Fix alerting relref anchor format

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

* Avoid ambiguous relref lookups by forcing relative resolution

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

* Remove reference to non-existent shared page

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

* Fix links broken in Grafana Cloud using absolute relrefs

By resolving the relref absolutely, it refers to the same location
regardless of mounted directory.

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

* Remove trailing slash for bundle independent resolution

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

* Fix typo

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

* For now, avoid Hugo checking cross repository /docs/grafana-cloud link

The path is unlikely to change in the short term and this makes CI
completely green for now.

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

* No need to specify path for in page anchors

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

* Fix prose

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

---------

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
(cherry picked from commit ebb54aea8d)

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-16 08:33:28 +00:00
ismail simsek
412f1c1cc6 Influxdb: Re-introduce backend migration feature toggle (#64842)
* Put feature toggle back

* Influxdb: Re-introduce backend migration feature toggle (#64829)

* Revert "Influxdb: Remove backend migration feature toggle (#61308)"

This reverts commit 67c02f66

* Put feature toggle back

(cherry picked from commit 0823672fce)
2023-03-15 19:15:55 +01:00
Yuri Tseretyan
10a2245f93 Alerting: Update scheduler to receive rule updates only from database (#64780)
Alerting: Update scheduler to get updates only from database (#64635)

* stop using the scheduler's Update and Delete methods all communication must be via the database
* update scheduler's registry to calculate diff before re-setting the cache
* update fetcher to return the diff generated by registry
* update processTick to update rule eval routine if the rule was updated and it is not going to be evaluated at this tick.
* remove references to the scheduler from api package
* remove unused methods in the scheduler

(cherry picked from commit 85a954cd81)

# Conflicts:
#	pkg/services/ngalert/schedule/schedule.go
#	pkg/services/ngalert/schedule/schedule_unit_test.go
2023-03-14 19:44:34 -04:00
Virginia Cepeda
12013e9aa4 Alerting: Display last & next rule eval date plus eval duration (#64767) (#64772)
* Display last & next rule eval date plus eval duration

* Show next evaluation date in a humanized format

Full date still visible on hover

* Only show next evaluation column is group has an interval

(cherry picked from commit 6b95b3f8aa)
2023-03-14 22:49:25 +01:00
Grot (@grafanabot)
56d1dcc9b3 [v9.4.x] Packaging: Dockerfile copy local folder (#64768)
Packaging: Dockerfile copy local folder (#64766)

Dockerfile copy local folder

(cherry picked from commit dfee4249e8)

Co-authored-by: Kevin Minehart <kmineh0151@gmail.com>
2023-03-14 15:11:08 -05:00
Grot (@grafanabot)
b5a274f392 [v9.4.x] CloudWatch Logs: Queries in an expression should run synchronously (#64707)
CloudWatch Logs: Queries in an expression should run synchronously (#64443)

(cherry picked from commit 74436d31de)

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2023-03-14 08:49:40 -04:00
Marco Schaefer
08acfafffd Upgrade faro-core and faro-web-sdk to 1.0.2 (#64407) (#64695)
* chore: upgrade faro-core and faro-web-sdk to 1.0.2 (#64407)

With v1.0.2 Faro explicitly closes fetch requests.
This fixes an issue were (headless) chrome browser
still considers those requests as open  which lead to timeouts.

(cherry picked from commit d8a497ee6e)

* fix: add missing setView and getView mocks
2023-03-14 11:05:10 +02:00
Grot (@grafanabot)
fc8002d9ab [v9.4.x] Alerting: Log error but don't fail initialization if state history connection test fails (#64719)
Alerting: Log error but don't fail initialization if state history connection test fails (#64699)

Don't return init error if ping fails, add tests

(cherry picked from commit faef3a8258)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-13 23:59:21 +02:00
Grot (@grafanabot)
75a44af935 [v9.4.x] Dashboards: Filter out expressions when going to Explore (#64684)
Dashboards: Filter out expressions when going to Explore (#64654)

* Filter out expressions when going from dashboard to explore

* Move expression UID constant to types

(cherry picked from commit c363a81806)

Co-authored-by: Kristina <kristina.durivage@grafana.com>
2023-03-13 08:23:53 -05:00
Grot (@grafanabot)
53a06bf65f [v9.4.x] Frontend: Fix broken links in /plugins when pathname has a trailing slash (#64608)
Frontend: Fix broken links in /plugins when pathname has a trailing slash (#64348)

Fix broken links in /plugins when pathname has a trailing slash

(cherry picked from commit a05cb1e78e)

Co-authored-by: William Assis <35489495+gassiss@users.noreply.github.com>
2023-03-13 13:53:13 +01:00
Grot (@grafanabot)
7a26957f87 [v9.4.x] Navigation: Remove duplicate header on user invite page (#64678)
Navigation: Remove duplicate header on user invite page (#64677)

remove duplicated header in old navigation

(cherry picked from commit caf98101e7)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-13 13:53:54 +02:00
Grot (@grafanabot)
d75b8c13ef [v9.4.x] TimeSeries: fix time comparer not comparing date strings properly (#64674)
TimeSeries: fix time comparer not comparing date strings properly (#64622)

* fix time comparer not comparing times properly

* move isDateTime last as it's probably the most expensive check

(cherry picked from commit 3a1862f37f)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-13 05:43:31 -04:00
Grot (@grafanabot)
01917df71a [v9.4.x] InfluxDB: Fix type assertion panics for interface conversion: interface {} is nil (#64623)
InfluxDB: Fix type assertion panics for interface conversion: interface {} is nil (#64556)

* fix type assertions

* fix chk

* add nil and fix tests

* add test for null bool and strings in the JSON response to be parsed as nil in Go

* reduce complexity

* reduce complexity

* reduce complexity again

* switch case for valTypes

(cherry picked from commit 50ef183208)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2023-03-10 14:51:52 -05:00
Grot (@grafanabot)
b7ff4d1661 [v9.4.x] Cloudwatch Logs: Fix log group names not interpolating with multiple variables (#64631)
Cloudwatch Logs: Fix log group names not interpolating with multiple variables (#64567)

* Cloudwatch Logs: Fix log group names not interpolating with multiple variables

* fix test

(cherry picked from commit 75f89e67af)

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
2023-03-10 14:12:28 -05:00
Timur Olzhabayev
eaace4fc45 [v9.4.x] Docs: Minor wording changes for plugin signing docs (#64615) (#64624)
Docs: Minor wording changes for plugin signing docs (#64615)

Minor wording changes

(cherry picked from commit f9b9041ad8)
2023-03-10 09:51:13 -08:00
Grot (@grafanabot)
039d9c379c [v9.4.x] Update page labels to better reflect contents (#64626)
Update page labels to better reflect contents (#64606)

* Set correct products labels on Grafana Cloud and Enterprise pages

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

* Add cloud label to all alerting docs

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

---------

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-10 17:47:45 +00:00
Grot (@grafanabot)
6bce4d516d [v9.4.x] Docs: Changes to angular deprecation announcement (#64619)
Docs: Changes to angular deprecation announcement (#63928)

Adjusting the content to reflect latest discussions. This page can now be used as reference for all things about angular deprecation.

(cherry picked from commit 9ca53d9596)

Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
2023-03-10 17:47:45 +01:00
Grot (@grafanabot)
332e870086 [v9.4.x] Cloudwatch: Add expression field to interpolate variables in Metrics Code Builder (#64508)
Cloudwatch: Add expression field to interpolate variables in Metrics Code Builder (#64288)

(cherry picked from commit 1c8ad04f8d)

Co-authored-by: Ida Štambuk <ida.stambuk@grafana.com>
2023-03-10 15:02:07 +01:00
Grot (@grafanabot)
6f22584d26 [v9.4.x] Alerting: fix users call 403 by calling /user instead of /users/{id} (#64607)
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
fix users call 403 by calling /user instead of /users/{id} (#64544)
2023-03-10 14:29:43 +01:00
Grot (@grafanabot)
961446e7e1 [v9.4.x] Docs: Remove Alertmanager configuration rollback from What's New (#64588)
Docs: Remove Alertmanager configuration rollback from What's New (#64564)

* Docs: Remove Alertmanager configuration rollback from What's New

* Trigger Build

---------

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

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2023-03-10 10:04:15 -03:00
Grot (@grafanabot)
419e8d782c [v9.4.x] Alerting: Fix contact point name being URL-encoded in the title (#64596)
Alerting: Fix contact point name being URL-encoded in the title (#64590)

Fix contact point name being encoded in the title text

(cherry picked from commit 4c8855ed2d)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-03-10 06:29:52 -05:00
Ashley Harrison
aa09499343 Backport 62658 to v9.4.x (#64545)
* Navigation: Fix Home logo always going to `/login` (#62658)

* only redirect to /login when anonymous access is disabled

* only search for dashboards when not logged in if anon access is enabled

* fix go logic

* add unit tests

(cherry picked from commit 3336327306)

* remove file i accidentally left in :/

* import correct method
2023-03-10 04:59:06 -05:00
Grot (@grafanabot)
cf3f234a54 [v9.4.x] Docs: Add a note on uploading report branding logos (#64539)
Docs: Add a note on uploading report branding logos (#64532)

* Docs: Add a note on uploading report branding logos

* Fix wording

(cherry picked from commit 6f67529a0a)

Co-authored-by: Tania <yalyna.ts@gmail.com>
2023-03-09 10:53:37 -05:00
Grot (@grafanabot)
de7d18d4e0 [v9.4.x] CI: Add PrereleaseBucket field in versions.go (#64524)
CI: Add `PrereleaseBucket` field in `versions.go` (#64519)

Add PrereleaseBucket in versions.go

(cherry picked from commit 29b3f3fbf4)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-03-09 17:49:59 +02:00
Horst Gutmann
7f6c61f0bd [9.4.x] CI: Move some build settings (#64491) (#64513)
CI: Move some build settings (#64491)

* Move some build settings to Vault

* CI: Remove reference to DOWNSTREAM_REPO as it isn't used

(cherry picked from commit 4b241804b4)
2023-03-09 08:33:15 -05:00
Grot (@grafanabot)
47e1860e34 [v9.4.x] OptionsPicker: Correctly highlight template variable value when filtering (#64394)
OptionsPicker: Correctly highlight template variable value when filtering (#63495)

* VariablePicker: Correctly highlight items when filtering

* Change interactions for selecting values in variable options picker

* Review

(cherry picked from commit e4d591fc01)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2023-03-09 04:21:16 -08:00
Grot (@grafanabot)
db9dfc7aef [v9.4.x] Loki: Fix labels in LabelBrowser being wrongly cached (#64496)
Loki: Fix labels in LabelBrowser being wrongly cached  (#64482)

* remove label cache from label browser

* fix spelling

Co-authored-by: Gareth Dawson <gareth.dawson@grafana.com>

---------

Co-authored-by: Gareth Dawson <gareth.dawson@grafana.com>
(cherry picked from commit 976568a337)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-03-09 05:43:50 -05:00
George Robinson
0d561b6c24 [v9.4.x] Docs: Updates default template link (#64495)
Docs: Updates default template link (#64485)

Updates default template link

(cherry picked from commit 14208c4c42)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-03-09 05:21:48 -05:00
Grot (@grafanabot)
9bccf165be [v9.4.x] Docs: Last iteration on docs for images in notifications (#64494)
Docs: Last iteration on docs for images in notifications (#64392)

This commit includes some minor rephrasing to the Requirements and
Limitations of the Images in notification feature.

(cherry picked from commit 1898e76dd6)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-03-09 05:03:44 -05:00
Grot (@grafanabot)
936e72f1e6 [v9.4.x] CloudWatch Logs: Fix interpolation of scoped variables in queryString (#64405)
* CloudWatch Logs: Fix interpolation of scoped variables in queryString (#64267)

(cherry picked from commit af9a0dbe39)

* fix typecheck

---------

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2023-03-08 19:56:07 -05:00
Brendan O'Handley
b66e903439 Prometheus: Metric encyclopedia (#63423) (#64455)
* add metric encyclopedia feature toggle and component

* remove unused button

* move file, add test file

* add tests

* add pagination and tests

* test with 10,000,000 metrics

* remove unused import

* add filter by type

* search alphabetically and add switch to exclude metrics with no metadata

* add suggested functions and filter for functions

* allow user to select variables in encyclopedia

* fix style and tests

* add fuzzy search by either metric name or all metadata

* if missing metadata, remove metadata fuzzy search option, exclude metadata, and filter by type

* add encyclopedia feature tracking

* indicate that metrics are filtered by labels

* handle metric singular or plural

* add tooltips and fix language

* add filtering tests

* change 'search' to 'browse'

* remove functions filter and tests as not part of work flow

* add m.e. button and selected metric is a tag

* fix hanging search and update styles, padding, labels, and groupings

* small performance improvements

* fix tests

* add backend metrics query option

* add loading spinner for start load and backend search

* autofocus search input

* Update docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md

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

* run prettier

* run prettier

* fix text for feature toggle

* for license check since https://cla-assistant.io/check/grafana/grafana?pullRequest=<PR#> is not working

* fixing tests

* fix feature toggle docs

* fix feature toggle

* fix feature toggle

* add owner to feature toggle

---------

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
(cherry picked from commit 9b6e531549)
2023-03-08 13:47:05 -05:00
Grot (@grafanabot)
2911eec518 [v9.4.x] Plugins: Fix bug with copying grafanaData (#64454)
Plugins: Fix bug with copying grafanaData (#64446)

(cherry picked from commit 39a4634ae9)

Co-authored-by: Stephanie Hingtgen <stephanie.hingtgen@grafana.com>
2023-03-08 13:40:21 -05:00
Grot (@grafanabot)
ea660e188e [v9.4.x] Snapshots: Fix deleting snapshot with non existent dashboard ID (#64371)
Snapshots: Fix deleting snapshot with non existent dashboard ID (#64345)

* Add test for deleting snapshot for non existent dashboard

* Add test for failure to fetch guardian other than ErrDashboardNotFound

* Fix dashboard snapshot delete

(cherry picked from commit 43095d84e4)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2023-03-08 03:33:23 -05:00
Grot (@grafanabot)
3b523c13a7 [v9.4.x] OpenTSDB: Allow metric autocomplete to use suggest api on every input (#64361)
OpenTSDB: Allow metric autocomplete to use suggest api on every input (#62045)

* allow metric autocomplete by suggest api

* debounce sugggest metrics

* debounce sugggest metrics with debounce-promise

* commit for tests

(cherry picked from commit 70c1850888)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2023-03-07 18:02:26 -05:00
Grot (@grafanabot)
4474649869 [v9.4.x] Cloudwatch Logs: Make mixed type fields fallback to being strings (#64359)
Cloudwatch Logs: Make mixed type fields fallback to being strings (#63981)

* Cloudwatch Logs: make mixed type fields fallback to being strings

* addressing pr comments

(cherry picked from commit 70f600db10)

Co-authored-by: Kevin Yu <kevinwcyu@users.noreply.github.com>
2023-03-07 17:57:12 -05:00
Grot (@grafanabot)
772eb4b58a [v9.4.x] Alerting: Fix intermittency when seeding database in rule store tests (#64326)
Alerting: Fix intermittency when seeding database in rule store tests (#64322)

Force unique IDs when seeding database

(cherry picked from commit 4a1c18abf6)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-07 11:00:50 -05:00
Grot (@grafanabot)
9e0cb259ee [v9.4.x] Logs sample: Fix scrolling for unwrapped log lines (#64291)
Logs sample: Fix scrolling for unwrapped log lines (#64163)

Fix scrolling for logs sample

(cherry picked from commit 7b01668729)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2023-03-07 12:34:38 +01:00
Grot (@grafanabot)
e272ce8274 [v9.4.x] Docs: Update Images in notifications docs to be more readable and instructive (#64294)
Docs: Update Images in notifications docs to be more readable and instructive (#64227)

(cherry picked from commit 9d9421154e)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-03-07 10:58:29 +00:00
Will Browne
2d0324ec70 [v9.4.x] Plugins: Fix Cache-Control header response for public/plugins/* assets API (#64255)
resolve conflicts
2023-03-06 19:20:54 +01:00
Galen Kistler
5a6471c01f TimeSeries: Fix overflowing exemplar modals causing content shifts (#… (#64254)
TimeSeries: Fix overflowing exemplar modals causing content shifts (#64037)

*  fix overflowing exemplar modals causing content shifts

(cherry picked from commit b9ebd5757a)
2023-03-06 12:18:05 -06:00
Grot (@grafanabot)
0d2a01f03f [v9.4.x] Alerting: Fix Classic Conditions $values variable (#64249)
Alerting: Fix Classic Conditions $values variable (#64243)

This commit fixes a bug in the $values variable in notification
templates when using Classic Conditions. Since Classic Conditions
are not multi-dimensional, the values of each series that exceeded
the condition should be available as a RefID and offset. For example,
B0, B1, etc. However, this bug meant that instead just a single
condition would be printed as B, not B0.

(cherry picked from commit ed71012ced)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-03-06 12:33:30 -05:00
Alexander Weaver
4c38e25ecd Alerting: Expose Prometheus metrics for persisting state history (#64246)
Alerting: Expose Prometheus metrics for persisting state history (#63157)

* Create historian metrics and dependency inject

* Record counter for total number of state transitions logged

* Track write failures

* Track current number of active write goroutines

* Record histogram of how long it takes to write history data

* Don't copy the registerer

* Adjust naming of write failures metric

* Introduce WritesTotal to complement WritesFailedTotal

* Measure TransitionsFailedTotal to complement TransitionsTotal

* Rename all to state_history

* Remove redundant Total suffix

* Increment totals all the time, not just on success

* Drop ActiveWriteGoroutines

* Drop PersistDuration in favor of WriteDuration

* Drop unused gauge

* Make writes and writesFailed per org

* Add metric indicating backend and a spot for future metadata

* Drop _batch_ from names and update help

* Add metric for bytes written

* Better pairing of total + failure metric updates

* Few tweaks to wording and naming

* Record info metric during composition

* Create fakeRequester and simple happy path test using it

* Blocking test for the full historian and test for happy path metrics

* Add tests for failure case metrics

* Smoke test for full annotation persistence

* Create test for metrics on annotation persistence, both happy and failing paths

* Address linter complaints

* More linter complaints

* Remove unnecessary whitespace

* Consistency improvements to help texts

* Update tests to match new descs

(cherry picked from commit 19d01dff91)
2023-03-06 12:10:11 -05:00
Grot (@grafanabot)
52288b87aa [v9.4.x] LokiContextUi: Add loading indicator (#64244)
LokiContextUi: Add loading indicator (#64167)

add loading indicator to LokiContextUi

(cherry picked from commit 5db0d14606)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-03-06 17:38:35 +01:00
Grot (@grafanabot)
84e358660a [v9.4.x] Revert "Alerting: Fix alert form broken coming from panel (#64148)" (#64241)
Revert "Alerting: Fix alert form broken coming from panel (#64148)" (#64240)

(cherry picked from commit 282d021c53)

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-03-06 10:39:46 -05:00
Grot (@grafanabot)
269ae0d7be [v9.4.x] Alerting: Fix queries not being previewed in detail view (#64235)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Fix queries not being previewed in detail view (#64198)
2023-03-06 09:58:52 -05:00
Grot (@grafanabot)
24e46f3ae7 [v9.4.x] Alerting: Disable "Declare Incident" button for open-source editions (#64234)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-03-06 09:58:48 -05:00
Grot (@grafanabot)
232cbed853 [v9.4.x] GrafanaUI: reset ConfirmModal disabled state on re-open (#64207)
GrafanaUI: reset ConfirmModal disabled state on re-open (#63452)

(cherry picked from commit 88231c7cb8)

Co-authored-by: Uladzimir Dzmitračkoŭ <3773351+going-confetti@users.noreply.github.com>
2023-03-06 13:33:44 +01:00
Grot (@grafanabot)
c5583207ee [v9.4.x] Fix scenario where tooltip shows wrong value (#64199)
Fix scenario where tooltip shows wrong value (#64025)

* Fix scenario where tooltip shows wrong value

* refactor

(cherry picked from commit 211a999a2a)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2023-03-06 11:54:25 +00:00
Giordano Ricci
c48ca77815 [v9.4.x] Explore: Avoid changing queries twice when importing a query in mixed mode (#64206)
Explore: Avoid changing queries twice when importing a query in mixed mode (#63804)

* Explore: avoid changing queries twice when importing a query in mixed mode

* move logic to thunk

* add tests

* improve tests

(cherry picked from commit 24a4a24a89)
2023-03-06 11:33:39 +00:00
Dimitris Sotirakis
5fb2986aa5 [v9.4.x] Chore: Bump alpine version to 3.17.1 (#63252) (#63264)
Chore: Bump alpine version to `3.17.1` (#63252)

Bump alpine version to 3.17.1

(cherry picked from commit 24c60486f6)

# Conflicts:
#	.drone.yml
2023-03-06 04:40:47 -05:00
Sonia Aguilar
6772c060d8 Alerting: Fix alert form broken coming from panel (#64148) (#64200)
Fix alert form broken coming from panel

(cherry picked from commit a669b72641)
2023-03-06 04:14:33 -05:00
Grot (@grafanabot)
f918b3bf9d [v9.4.x] Alerting: Prevent resetting the form on evaluation group interval change (#63794)
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-03-06 10:00:00 +01:00
Grot (@grafanabot)
49ef18b2b7 [v9.4.x] Docs: Adding angular support deprecation to our plugin submission FAQ (#64201)
Docs: Adding angular support deprecation to our plugin submission FAQ (#64006)

Adding angular support deprecation to our faq

(cherry picked from commit 43e281271b)

Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
2023-03-06 03:57:18 -05:00
Grot (@grafanabot)
f80239c21a [v9.4.x] update data source permissions instructions to match modern UI (#64181)
update data source permissions instructions to match modern UI (#63405)

* update data source permissions instructions to match modern UI

* Apply suggestions from code review

---------

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

Co-authored-by: chrisharbro <102977229+chrisharbro@users.noreply.github.com>
2023-03-03 16:26:27 -06:00
Grot (@grafanabot)
bf6e7d2abe [v9.4.x] Clarify that LDAP will create Grafana users by default when they log in for the first time (#64180)
Clarify that LDAP will create Grafana users by default when they log in for the first time (#63391)

* Clarify that enabling LDAP will create users by default when they log in

This proposed change to the doc was requested by a user in support ticket `79860`, as it was not clear to them that the OOTB behavior was for user accounts to be provisioned automatically in Grafana when signing in for the first time via LDAP.

* Update docs/sources/setup-grafana/configure-security/configure-authentication/ldap/index.md

Thanks!

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

* fix boolean

Woops, `true` should be `false`

---------

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

Co-authored-by: chrisharbro <102977229+chrisharbro@users.noreply.github.com>
2023-03-03 16:26:04 -06:00
Jack Baldry
ddf5363aa6 [v9.4.x] Replace ambiguous relrefs with partial URIs to prevent 404s (#62468) (#64114)
* Replace ambiguous relrefs with partial URIs to prevent 404s



* Fix local builds that depend on latest content



* Fix broken relref



---------


(cherry picked from commit 66b54e2dbd)

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-03 18:59:09 +00:00
Grot (@grafanabot)
a9faf4b9f1 [v9.4.x] Influxdb: Fix missing columns with raw query (#64173)
Influxdb: Fix missing columns with raw query (#64058)

* add selected columns to table when select object is not in query model because of rawQuery

* handle * and SHOW raw queries

* handle metricFindQuery

* Update public/app/plugins/datasource/influxdb/response_parser.ts

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

* Update public/app/plugins/datasource/influxdb/response_parser.ts

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

* Update public/app/plugins/datasource/influxdb/response_parser.ts

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>

---------

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
(cherry picked from commit aed020d9b5)

Co-authored-by: Brendan O'Handley <brendan.ohandley@grafana.com>
2023-03-03 13:40:39 -05:00
Sofia Papagiannaki
8c12f75b0b [v9.4.x] Chore: Remove CreateUserForTests() (#64125) (#64165)
Chore: Remove CreateUserForTests() (#64125)

* Chore: Remove CreateUserForTests

* Apply suggestion from code review

(cherry picked from commit e6e8351ee9)
2023-03-03 18:43:10 +02:00
Grot (@grafanabot)
5014df0521 [v9.4.x] fix: create temp user no longer sets ID to 0 for all users (#64160)
fix: create temp user no longer sets ID to 0 for all users (#64149)

* fix: create temp user no longer sets ID to 0 for all users

The xorm tag added to the tempuser ID field caused xorm to create all temp users with ID 0. Removing that tag allows xorm to set the ID based on the database result instead. I also added a test which was failing before this.

Fixes #63995

(cherry picked from commit dbb72f2c6e)

Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
2023-03-03 11:24:21 -05:00
Grot (@grafanabot)
5ccddbe071 [v9.4.x] Changelog: Updated changelog for 9.4.0 (#63983)
Changelog: Updated changelog for 9.4.0 (#63978)

* Changelog: Updated changelog for 9.4.0

* Revert release date manually

---------

Co-authored-by: Michael Mandrus <41969079+mmandrus@users.noreply.github.com>
(cherry picked from commit 682a186676)
2023-03-03 11:14:08 -05:00
Grot (@grafanabot)
6d0beaedaf [v9.4.x] build: fix corss build (#63261)
build: fix corss build (#61121)

* build: fix corss build

* fix lint

(cherry picked from commit 37baae3699)

Co-authored-by: Jimmie Han <hanjinming@outlook.com>
2023-03-03 10:04:12 -06:00
Grot (@grafanabot)
8c1d16c879 [v9.4.x] Logs: Log samples not being ordered correctly (#64147)
Logs: Log samples not being ordered correctly (#64097)

* fix log samples being unsorted and multiple results when chunking

* use `SortDirection` enum

* changed to `sortDataFrame` to support other datasources than loki

* update tests

* change capitalization

(cherry picked from commit 2076282064)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-03-03 10:09:50 -05:00
Ashley Harrison
4ee064da11 Chore: Pass signed user_hash to Intercom via Rudderstack (#63921) (#64145)
* move analytics identifiers to backend

* implement hash function

* grab secret from env

* expose and retrieve intercom secret from config

* concat email with appUrl to ensure uniqueness

* revert to just using email

* Revert "revert to just using email"

This reverts commit 8f10f9b1bc.

* add docstring

(cherry picked from commit d61bcdf4ca)
2023-03-03 10:06:13 -05:00
Grot (@grafanabot)
1548edc40e [v9.4.x] Docs: Meta-monitoring docs for Grafana and Mimir (#64142)
Docs: Meta-monitoring docs for Grafana and Mimir (#63752)

* Docs: (WIP) Meta-monitoring docs for Grafana and Mimir

* Update metrics for Grafana Managed Alerts

* Fix spelling mistake

* Add docs for Alertamanager, including high-availability mode

* Comment undefined metrics

---------

Co-authored-by: Armand Grillet <2117580+armandgrillet@users.noreply.github.com>
(cherry picked from commit fed59b1d43)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-03-03 15:46:19 +01:00
Grot (@grafanabot)
aad839e5b9 [v9.4.x] Alerting: Fix client to external Alertmanager to correctly build URL for Mimir Alertmanager (#63684)
Alerting: Fix client to external Alertmanager to correctly build URL for Mimir Alertmanager (#63676)

(cherry picked from commit 98e1aeaebd)

Co-authored-by: Yuri Tseretyan <yuriy.tseretyan@grafana.com>
2023-03-03 09:14:33 -05:00
Grot (@grafanabot)
aa60a45f6b [v9.4.x] Docs: Pinning to latest for grafana plugin tools (#64141)
Docs: Pinning to latest for grafana plugin tools (#64140)

Pinning to latest for grafana plugin tools

(cherry picked from commit 92ee03db78)

Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
2023-03-03 09:11:31 -05:00
Giordano Ricci
bdf8b7531b [9.4.x] Correlations: Fix flaky integration tests (#64004) (#64139)
Correlations: Fix flaky integration tests (#64004)

* Correlations: Fix flaky integration tests

* set explore-squad as correlations tests code owners

(cherry picked from commit 4a7fbea7a4)
2023-03-03 14:06:59 +00:00
Grot (@grafanabot)
9ef2e8d7da [v9.4.x] Alerting: Allow downloading alert rules from subpath (#64138)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-03-03 08:44:03 -05:00
Grot (@grafanabot)
79fb770ca5 [v9.4.x] Alerting: Fix UI crashing when selecting custom grouping in alert panel (#64128)
Alerting: Fix UI crashing when selecting custom grouping in alert panel (#64124)

Fix UI crashing when selecting custom grouping in alert panel

(cherry picked from commit 9765c98b3d)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-03-03 07:08:12 -05:00
Grot (@grafanabot)
b733b4fd5c [v9.4.x] Docker Build: Use tonistiigi/binfmt image for cross compilation (#64117)
Docker Build: Use `tonistiigi/binfmt` image for cross compilation (#64108)

* Change docker image used for cross-compilation

* Replace fmt.Println with log.Println

* Add specific tag for docker image

(cherry picked from commit b42fd92fad)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-03-03 13:19:00 +02:00
Grot (@grafanabot)
a2b984cd7e [v9.4.x] docs: Prevent internal docs on setting up plugin spellcheck from appearing on public website (#64118)
docs: Prevent internal docs on setting up plugin spellcheck from appearing on public website (#64113)

(cherry picked from commit ab512fcf88)

Co-authored-by: Andriy <andriy.urbanas@grafana.com>
2023-03-03 10:55:31 +01:00
Grot (@grafanabot)
0d7de2bbda Release: Bump version to 9.4.4 (#64101)
"Release: Updated versions in package to 9.4.4"
2023-03-03 03:17:28 -05:00
Grot (@grafanabot)
1ad9362310 [v9.4.x] Changelog: Updated changelog for 9.4.3 (#64100)
Changelog: Updated changelog for 9.4.3 (#64099)

(cherry picked from commit a7a658ed1b)
2023-03-03 09:10:08 +01:00
Grot (@grafanabot)
8861a8a977 [v9.4.x] SQLStore: Enable clientFoundRows for MySQL connections (#64083)
SQLStore: Enable clientFoundRows for MySQL connections (#64070)

Enable clientFoundRows for MySQL connections

(cherry picked from commit 8ea71d37c2)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-03-02 17:49:33 -06:00
Grot (@grafanabot)
f8df798afd [v9.4.x] NPM: Stop using the folder path before the name path (#64071)
NPM: Stop using the folder path before the name path (#63851)

Stop using the folder path before the name path

(cherry picked from commit 177aa254c5)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-03-02 14:28:45 -06:00
Yuri Tseretyan
25c31c2c7c [v9.4.x] Alerting: Use background context for maintenance function (#64066)
Alerting: Use background context for maintenance function (#64065)

(cherry picked from commit e760f22402)

# Conflicts:
#	pkg/services/ngalert/notifier/alertmanager.go
2023-03-02 14:45:27 -05:00
Grot (@grafanabot)
3fe53ab222 [v9.4.x] StatPanel: Fix issue where sparkline chart was not being shown on resize (#64012) 2023-03-02 12:58:48 +01:00
Emil Tullstedt
4e687dfb6f [v9.4.x] Chore: Upgrade Go to 1.20.1 and Alpine to 3.17 (#63891) 2023-03-02 11:53:45 +01:00
Grot (@grafanabot)
eab26273d6 [v9.4.x] Docs [Search] update _index.md by replacing dashboardPreviews for panelTitleSearch feature toggle (#64003)
Co-authored-by: beateguia <70489000+beateguia@users.noreply.github.com>
2023-03-02 11:21:56 +01:00
Grot (@grafanabot)
35fe167f0d Release: Bump version to 9.4.3 (#64002)
"Release: Updated versions in package to 9.4.3"
2023-03-02 11:05:48 +01:00
Grot (@grafanabot)
5e48a1ad06 [v9.4.x] Changelog: Updated changelog for 9.4.2 (#64001)
Changelog: Updated changelog for 9.4.2 (#64000)

(cherry picked from commit ae90f73b78)
2023-03-02 10:54:28 +01:00
Grot (@grafanabot)
225128a5d9 [v9.4.x] Fix redirect from /setup-grafana/upgrade-grafana/ to /upgrade-guide/ (#63999)
Fix redirect from /setup-grafana/upgrade-grafana/ to /upgrade-guide/ (#63914)

Additionally fix redirect from `/installation/upgrading/` to
`/setup-grafana/upgrade-grafana/`.

The alias proposed in
https://github.com/grafana/grafana/pull/62402#discussion_r1090526464
was incorrect. It used the `../installation/upgrading/` alias as
reference but I did not check the redirect. As this page itself has
moved from `/setup-grafana/upgrade-grafana/` to `/upgrade-guide/` the
relative alias needed updating also.

To verify that this alias is working as expected:

1. Checkout this branch.
2. Run `make docs`
3. Browse to
http://localhost:3002/docs/grafana/latest/setup-grafana/upgrade-grafana/
4. Verify that you have been redirected to
http://localhost:3002/docs/grafana/latest/upgrade-guide/
5. Browse to
http://localhost:3002/docs/grafana/latest/installation/upgrading/
6. Verify that you have been redirected to
http://localhost:3002/docs/grafana/latest/upgrade-guide/

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-03-02 04:13:05 -05:00
Grot (@grafanabot)
64412b1195 [v9.4.x] BarChart: Only apply radius to topmost bar segment when stacking (#63986)
BarChart: Only apply radius to topmost bar segment when stacking (#63906)

(cherry picked from commit 9314fe1056)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2023-03-01 18:28:14 -05:00
Grot (@grafanabot)
0299b18b88 [v9.4.x] Reqcontext: Use err status code instead of always fallback (#63977)
Reqcontext: Use err status code instead of always fallback (#63974)

(cherry picked from commit 8bd4e2cb25)

Co-authored-by: Ezequiel Victorero <ezequiel.victorero@grafana.com>
2023-03-01 18:48:33 -03:00
Grot (@grafanabot)
8c483cca31 [v9.4.x] Alerting: Fix migration pauses all alert rules on PostgreSQL (#63968)
Alerting: Fix migration pauses all alert rules on PostgreSQL (#63951)

This commit fixes a serious bug in Grafana 9.4.1 where on upgrade
a migration would pause all existing alert rules and change the
default value of the column to true.

(cherry picked from commit 030f6c948f)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-03-01 18:00:08 +00:00
Grot (@grafanabot)
4c22a2b8fb [v9.4.x] Alerting: Fix boolean default in migration from false to 0 (#63963)
Alerting: Fix boolean default in migration from false to 0 (#63952)

Fix boolean default in migration from false to 0

(cherry picked from commit a05bf41ff9)

Co-authored-by: Alex Moreno <alexander.moreno@grafana.com>
2023-03-01 17:34:53 +00:00
Grot (@grafanabot)
0de3ceb47c [v9.4.x] TimeSeries: Ignore invalid, user-defined log-y-axis min/max limits (#63967)
TimeSeries: Ignore invalid, user-defined log-y-axis min/max limits (#59758)

(cherry picked from commit 5510fdc3ce)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2023-03-01 12:25:54 -05:00
Grot (@grafanabot)
bb25297a9d [v9.4.x] Profile: Fix session table overflowing page layout in mobile (#63965)
Profile: Fix session table overflowing page layout in mobile (#63858)

handle table overflowing in mobile layout

(cherry picked from commit 4f01d55a3c)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-01 12:16:59 -05:00
Ashley Harrison
b5135d8144 Command Palette: Sign out link now works correctly (#63742) (#63960)
* pass target to command palette urls so sign out link works correctly

* improve types

(cherry picked from commit a534119c44)
2023-03-01 12:00:22 -05:00
Grot (@grafanabot)
1b0d442ca2 [v9.4.x] Navigation: Fix broken layout at 544px (#63950)
Navigation: Fix broken layout at 544px (#63793)

* ensure media queries transition properly

* fix unit tests

(cherry picked from commit 8e9ccfc66e)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-03-01 10:40:42 -05:00
Grot (@grafanabot)
38b5dd4486 [v9.4.x] Fix wrong texts in titles when cloning templates (#63944)
Fix wrong texts in titles when cloning templates (#63930)

(cherry picked from commit fa35ed8141)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-03-01 09:47:52 -05:00
Grot (@grafanabot)
66b94cd468 [v9.4.x] [DOC] Change APM dashboard to Service Graph view (#63903)
[DOC] Change APM dashboard to Service Graph view (#63818)

* Change APM dashboard to Service View graph

* Apply suggestions from code review

* Update docs/sources/explore/trace-integration.md

* Update docs/sources/explore/trace-integration.md

(cherry picked from commit ac5dbf2632)

Co-authored-by: Kim Nylander <104772500+knylander-grafana@users.noreply.github.com>
2023-02-28 16:37:53 -05:00
Grot (@grafanabot)
a7c1598ca6 [v9.4.x] Navigation: reserve horizontal space for img in SectionNavItem to avoid layout shift (#63865)
Navigation: reserve horizontal space for img in SectionNavItem to avoid layout shift (#63722)

(cherry picked from commit 429d693a4a)

Co-authored-by: Uladzimir Dzmitračkoŭ <3773351+going-confetti@users.noreply.github.com>
2023-02-28 16:04:35 +01:00
Grot (@grafanabot)
437cf15105 [v9.4.x] TimeSeries: Fix legend and tooltip colors changing after data refreshes (#63871)
TimeSeries: Fix legend and tooltip colors changing after data refreshes (#63823)

(cherry picked from commit b2c0175777)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2023-02-28 09:24:51 -05:00
Grot (@grafanabot)
6cab7f956c [v9.4.x] Alerting: Fix width in alerts table columns on EditGroupModal (#63849)
Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
Fix width in alerts table columns on EditGroupModal (#63845)
2023-02-28 08:48:50 -05:00
Grot (@grafanabot)
b23f3964e9 Release: Bump version to 9.4.2 (#63844)
"Release: Updated versions in package to 9.4.2"
2023-02-28 05:44:19 -05:00
Grot (@grafanabot)
0b98b4d241 [v9.4.x] Changelog: Updated changelog for 9.4.1 (#63843)
Changelog: Updated changelog for 9.4.1 (#63841)

* Changelog: Updated changelog for 9.4.1

---------

Co-authored-by: Horst Gutmann <horst.gutmann@grafana.com>
(cherry picked from commit 71d64f95da)
2023-02-28 05:32:43 -05:00
Grot (@grafanabot)
04a4774d4c [v9.4.x] Changelog: Updated changelog for 9.4.0 (#63839)
Changelog: Updated changelog for 9.4.0 (#63838)

(cherry picked from commit 321e4c0f99)
2023-02-28 11:20:23 +01:00
Grot (@grafanabot)
3c58b2c176 [v9.4.x] TraceView: Add key and url escaping of json tag values (#761)
TraceView: Add key and url escaping of json tag values (#751)

(cherry picked from commit 8b53b448bc24fbfc4492ce1f4e2b1708218f70b7)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2023-02-28 11:02:22 +01:00
Grot (@grafanabot)
a1bceeb1d3 [v9.4.x] Geomap: Sanitize the attribution string (#755)
Geomap: Sanitize the attribution string (#745)

* SAML: Update grafana/saml library (#691)

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

* SVG: Add dompurify preprocessor step (#698)

* add sanitized SVG component

* add sanitize

* Fix frontend build

* Remove unnecessary yarn.lock changes

* Fix formatting

* Re-add yarn.lock message as I guess it is needed

---------

Co-authored-by: dsotirakis <dimitrios.sotirakis@grafana.com>
Co-authored-by: jguer <joao.guerreiro@grafana.com>
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
(cherry picked from commit 37b4af7ffacfc24d5f24d190356a9ef32d99aa6f)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-02-28 11:02:18 +01:00
Grot (@grafanabot)
bb7a485dbf [v9.4.x] Alerting: Fix AlertLabelDropdown to be case sensitive (#63832)
Alerting: Fix AlertLabelDropdown to be case sensitive (#63787)

Fix AlertLabelDropdown to be case sensitive

(cherry picked from commit 526cac60e5)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-28 04:05:09 -05:00
Grot (@grafanabot)
b3682d498c [v9.4.x] Alerting: Improve Alertmanager data source docs (#63721)
Alerting: Improve Alertmanager data source docs (#63611)

Improve Alertmanager data source docs

(cherry picked from commit 6e39b7403d)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2023-02-28 08:29:17 +01:00
Timur Olzhabayev
183f9317c5 fix(dashboard version service): add DashboardUID to query and respons… (#63821)
fix(dashboard version service): add DashboardUID to query and responses (#60800)

* fix(dashboard version service): add DashboardUID to query and responses

The DashboardUID was not populated in the response from Get and ListDashboardVersions. This adds the DashboardUID to the Get query (it was already in List) and populated the DashboardUID in the returned DashboardVersionDTOs.

(cherry picked from commit 42be0e106f)

Co-authored-by: Kristin Laemmert <mildwonkey@users.noreply.github.com>
2023-02-27 23:01:48 +01:00
Grot (@grafanabot)
194dbead83 [v9.4.x] Alerting: Fix available labels in the alert panel groupby dropdown (#63799)
Alerting: Fix available labels in the alert panel groupby dropdown (#63573)

(cherry picked from commit 5f35995cd4)

Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2023-02-27 17:58:52 +01:00
Grot (@grafanabot)
53b5cf5288 [v9.4.x] AzureMonitor: Fix template variables in ARG subscription field (#63758)
AzureMonitor: Fix template variables in ARG subscription field (#63731)

Add support for template variables in sub field

(cherry picked from commit 823aaaeb7c)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-02-27 05:56:15 -05:00
Jo
7900e795f1 [9.4.x] Users: Fix org user always getting org id = 1 (#63759)
Users: Fix org user always getting org id = 1 on auto assign false (#63708)

* fix org user always getting org id = 1 on auto assign false

* make tests explicit

* use correct cfg in service accounts

* fix api tests

* fix database test of ac

* fix InsertOrgUser returning affected rows as orgID

(cherry picked from commit c8db771939)
2023-02-27 10:31:53 +01:00
Jack Baldry
0f1f842015 [v9.4.x] fix link to explore with logs and headings (#63665) (#63701)
* [v9.4.x] Logs: Rename dedup to deduplication (#62944)

* fix: rename dedup with deduplication

* docs: update documentation

* fix: update names

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

* [v9.4.x] fix link to explore with logs and headings (#63665)

fixed links and eadings

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

---------

Co-authored-by: Gareth Dawson <gareth.dawson@grafana.com>
Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-02-25 07:26:22 +00:00
Alexander Weaver
7e017790d2 Alerting: Instrument outgoing state history requests using weaveworks/common (#63689)
* Alerting: Instrument outgoing state history requests using weaveworks/common (#63600)

* Loki backend and client depend on a requester

* Instrument all requests to loki using weaveworks TimedClient

* Construct collector in metrics package

(cherry picked from commit e77621649d)

* Revert all changes to gomod and gosum
2023-02-24 15:49:36 -06:00
Grot (@grafanabot)
3531683e87 [v9.4.x] CloudMonitor: Add missing logger to TimeSeriesQuery (#63132)
CloudMonitor: Add missing logger to TimeSeriesQuery (#63110)

(cherry picked from commit ac9639daf8)

Co-authored-by: Alyssa Bull <58453566+alyssabull@users.noreply.github.com>
2023-02-24 21:32:06 +00:00
Grot (@grafanabot)
b5747d397d [v9.4.x] CloudMonitoring: Fix crash when inspecting data for MQL queries (#63756)
CloudMonitoring: Fix crash when inspecting data for MQL queries (#63747)

CloudMonitoring: Fix missing Field name

This happened for MQL queries that used an [aggregate function][1], e.g.
`sum`.

[1]: https://cloud.google.com/monitoring/mql/reference#aggr-function-group

(cherry picked from commit 3672e44c1c)

Co-authored-by: Adam Simpson <adam@adamsimpson.net>
2023-02-24 13:30:38 -05:00
Grot (@grafanabot)
f8120e9152 [v9.4.x] Bump coverage versions (#63757)
Bump coverage versions (#63755)

- Includes a fix to ensure only ts/tsx files have coverage generated

(cherry picked from commit 0a7474ac5c)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-02-24 13:27:31 -05:00
Grot (@grafanabot)
ae94a60981 [v9.4.x] Plugins: Fix plugins CDN not working when plugins are not in domain's root path (#63729)
Plugins: Fix plugins CDN not working when plugins are not in domain's root path (#63202)

* Plugins CDN: Add support for different CDN root path

* Plugins CDN: Make frontendsettings return the correct CDN base path

* Update comments

* Fix version detection

* Undo frontend changes

* Fix system.js asset path construction

* fix(plugins): translate all plugin css asset paths loaded via cdn

* refactor(plugins): rename extractPluginNameVersionFromUrl and add comments

* Fix typo in comment

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>

* Hardcode CDN URL structure

/{id}/{version}/public/plugins/{id}/{assetPath} is not required anymore in the cdn url template config

---------

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
(cherry picked from commit 966bcd3545)

Co-authored-by: Giuseppe Guerra <giuseppe.guerra@grafana.com>
2023-02-24 08:50:29 -05:00
Grot (@grafanabot)
65c2b4fea2 [v9.4.x] TestData: Fix bug when selecting "Log" streaming (#63725)
TestData: Fix bug when selecting "Log" streaming (#63190)

* fix wrong fields getting populated

* fix bug not being able to select another streaming type

* add correct arg type

* remove unused import

(cherry picked from commit b3c0e7e977)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-02-24 08:21:25 -05:00
Grot (@grafanabot)
f18c84af5a [v9.4.x] Alerting: Fix changing datasource and creating new query not using defaults. (#63720)
Alerting: Fix changing datasource and creating new query not  using defaults. (#63092)

* Set default query when changing data source or adding new alert query

* Set default query when creating new alert rule

* Set fefault query for cloud and recording rules

* Create hook for getting defaults in AlertRuleForm

* fixing tests

* Use conditionals with 'if' for more clarity and rename lazy to async

* Add loading indicator for default queries

* Fix tests

* Make newModel a sync method and fix tests error

* Use useAsync instead of useEffect for an async call

(cherry picked from commit b42f973a7a)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-24 07:52:46 -05:00
Grot (@grafanabot)
c10b18d06e [v9.4.x] Datasource Onboarding: Prevent flickering of onboarding page after first load (#63715)
Datasource Onboarding: Prevent flickering of onboarding page after first load (#63360)

* Datasource Onboarding: Prevent flickering of onboarding page after first load

* add loading state to loadDatasources & refactor

* fix test

* avoid loading state when loading datasources on add

* fix test

* add explainer on why fetching datasources is needed

(cherry picked from commit c136ad1f16)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2023-02-24 12:00:25 +00:00
Grot (@grafanabot)
a3b692e1c5 [v9.4.x] Loki ds: Interpolation breaks in Loki queries when no scoped vars (#63700)
Loki ds: Interpolation breaks in Loki queries when no scoped vars (#63694)

(cherry picked from commit 14e29451cf)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2023-02-24 10:28:34 +01:00
Grot (@grafanabot)
30f3f63bd6 [v9.4.x] InfluxDB datasource: Query variable breaks trying to interpolate __interval (#63685)
InfluxDB ds: Query variable breaks trying to interpolate `__interval` (#63682)

(cherry picked from commit ca4cd85504)

Co-authored-by: Ivan Ortega Alba <ivanortegaalba@gmail.com>
2023-02-23 14:42:20 -05:00
Grot (@grafanabot)
758783a2e2 [v9.4.x] Docs: Disambiguate auto_assign_org_role configuration option descriptions (#63681)
Docs: Disambiguate auto_assign_org_role configuration option descriptions (#61827)

(cherry picked from commit 5687d23b52)

Co-authored-by: zsrv <95176387+zsrv@users.noreply.github.com>
2023-02-23 13:41:49 -05:00
Grot (@grafanabot)
5585dc0ba1 [v9.4.x] Docs: Fix of typo and delete of unnecessary sentence in 'Sign a plugin' doc (#63683)
Docs: Fix of typo and delete of unnecessary sentence in 'Sign a plugin' doc (#63538)

* Typo fix, minor edit

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

* Prettier fixes

Signed-off-by: Joe Perez <joseph.perez@grafana.com>

---------

Signed-off-by: Joe Perez <joseph.perez@grafana.com>
(cherry picked from commit dd5b115164)

Co-authored-by: Joseph Perez <45749060+josmperez@users.noreply.github.com>
2023-02-23 13:33:31 -05:00
Grot (@grafanabot)
2012cd7954 [v9.4.x] Docs: Update old default values for configuration options (#63678)
Docs: Update old default values for configuration options (#61826)

(cherry picked from commit 0481c12bd5)

Co-authored-by: zsrv <95176387+zsrv@users.noreply.github.com>
2023-02-23 13:01:24 -05:00
Grot (@grafanabot)
77263b8e65 [v9.4.x] Docs: Update default value for geomaps enable_custom_baselayers option (#63675)
Docs: Update default value for geomaps enable_custom_baselayers option (#61880)

Docs: Update default value for geomaps disable_custom_baselayers option

The `disable_custom_baselayers` configuration option name and default
value were inverted in commit e604e69d93,
but the update to the description in the documentation was missed.

(cherry picked from commit 22f51602ba)

Co-authored-by: zsrv <95176387+zsrv@users.noreply.github.com>
2023-02-23 17:46:01 +00:00
Grot (@grafanabot)
3e30c2024c [v9.4.x] InfluxDB: Fix getting empty response when querying fields with retention policy (#63671)
InfluxDB: Fix getting empty response when querying fields with retention policy (#63669)

Revert "InfluxDB: Send retention policy with InfluxQL queries if its been specified. (#62149)"

This reverts commit a5a85e0398.

(cherry picked from commit ffed779879)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-02-23 12:28:43 -05:00
Grot (@grafanabot)
cb13b75c6b [v9.4.x] Docs: Clarify command palette changes are not behind feature flag (#63667)
Docs: Clarify command palette changes are not behind feature flag (#63576)

(cherry picked from commit 63ae343ba9)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2023-02-23 17:08:09 +00:00
Grot (@grafanabot)
242e05f448 [v9.4.x] CloudWatch Logs: Fix query editor freezing (#63666)
CloudWatch Logs: Fix query editor freezing (#63661)

(cherry picked from commit 22537bec2e)

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2023-02-23 12:06:34 -05:00
Grot (@grafanabot)
7f6319393d [v9.4.x] Navigation: Add plugin upgrade guide to docs (#63616)
Navigation: Add plugin upgrade guide to docs (#63449)

* initial attempt at plugin upgrade guide

* fix link

* small tweaks based on feedback

* add basic skeleton for tabs documentation

(cherry picked from commit f6e92da402)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-23 05:15:05 -05:00
Grot (@grafanabot)
57ecd3d3d3 [v9.4.x] TimeRangeInput: Fix positioning of dropdown menu (#63612)
TimeRangeInput: Fix positioning of dropdown menu (#63472)

fix TimeRangeInput positioning

(cherry picked from commit bcaf4dc0b1)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-23 05:01:03 -05:00
Grot (@grafanabot)
edd755b834 [v9.4.x] Docs: Improved docs for templating labels and annotations (#63606)
Docs: Improved docs for templating labels and annotations (#63539)

(cherry picked from commit c9497dc533)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-23 03:58:52 -05:00
Grot (@grafanabot)
db978cd48a [v9.4.x] MSSQL Datasource: Revert functions within macros change (#63598)
MSSQL Datasource: Revert functions within macros change (#63592)

* Revert functions within macros change
* Add tests for function and macro for mssql
* Remove macro support tests

---------

Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
(cherry picked from commit 356e2e1933)

Co-authored-by: Kyle Cunningham <codeincarnate@users.noreply.github.com>
2023-02-22 16:23:47 -05:00
Grot (@grafanabot)
6162e6f823 [v9.4.x] Docs: Fix numbering in templating docs (#63587)
Docs: Fix numbering in templating docs (#63577)

(cherry picked from commit 18fec707fd)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-22 12:38:28 -05:00
Grot (@grafanabot)
8e4fa99ec7 [v9.4.x] Authn: Add separate context for session tagging (#63571)
Authn: Add separate context for session tagging  (#63561)

add context

(cherry picked from commit 635a456fa4)

Co-authored-by: Jo <joao.guerreiro@grafana.com>
2023-02-22 17:17:44 +01:00
Grot (@grafanabot)
8aaca53a32 [v9.4.x] Docs: fix typo in 9.4 what's new (#63580)
Docs: fix typo in 9.4 what's new (#63545)

provides -> providers

(cherry picked from commit 33277fccde)

Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2023-02-22 09:15:51 -06:00
Grot (@grafanabot)
9eefd2e42a [v9.4.x] Prometheus: Handle annotation query with empty fields (#63574)
Prometheus: Handle annotation query with empty fields (#63560)

Handle annotation query with empty fields

(cherry picked from commit 3d75dbc31e)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-02-22 08:57:47 -05:00
Grot (@grafanabot)
045aff4009 [v9.4.x] Add --init to all podman invocations to ensure ^C works on MacOS (#63552)
[v9.4.x] Add --init to all podman invocations to ensure ^C works on MacOS (#61745)

(cherry picked from commit 5f5f51b3bf)

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-02-22 11:19:05 +00:00
Grot (@grafanabot)
e9b269a5b8 [v9.4.x] Docs: Delete old templating notifications docs page (#63549)
Docs: Delete old templating notifications docs page (#63547)

(cherry picked from commit 740bcf64ce)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-22 05:16:21 -05:00
Grot (@grafanabot)
fcc6c7c486 [v9.4.x] CloudWatch: Remove error for multi-value variable in logs runner (#63546)
CloudWatch: Remove error for multi-value variable in logs runner (#63522)

Remove error for multi template variable in CW logs runner

(cherry picked from commit 3a57304ef0)

Co-authored-by: Shirley <4163034+fridgepoet@users.noreply.github.com>
2023-02-22 04:43:44 -05:00
Jo
92ac380621 [v9.4.x] Authn: Anon session service (#63520)
* Authn: Anon session service (#63052)

* add anon sessions package

* add usage stat fn

* implement count for cache

* add anonservice to authn broker

* lint

* add tests for remote cache count

* move anon service to services

* wrap tagging in goroutine

* make func used

(cherry picked from commit ff78103a24)

* add local cache to protect multiple writes to DB cache

(cherry picked from commit bdb084736b)
2023-02-22 09:55:17 +01:00
Grot (@grafanabot)
98489d5f81 [v9.4.x] Geomap: Fix default opacity for layers (#63526) 2023-02-21 22:04:03 +02:00
Grot (@grafanabot)
60e88ffcb7 [v9.4.x] CloudMonitor: Fix query migration (#63519)
CloudMonitor: Fix query migration (#63491)

* Update query and set required fields for explore queries

* Update test case

- Validate onChange is called with the new query

(cherry picked from commit 20591cc42b)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-02-21 17:11:00 +00:00
Grot (@grafanabot)
249c5b013e [v9.4.x] Alerting: Fix incorrect comment in eval.go (#63513)
Alerting: Fix incorrect comment in eval.go (#63510)

This commit fixes an incorrect comment in the Result struct in eval.go
that I had written some time ago. The comment now documents the
actual behaviour and content of this field.

(cherry picked from commit f93a9c794d)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-21 11:15:55 -05:00
Jo
4ddc76f73e Authn: Stat registration [9.4.x] (#63504)
Authn: Stat registration (#62934)

* reorganize auth usage stats

* usage stat privilege elevators

* stat count of modified role

* cfg related info

* add authn anon client

* kv store

* ensure anon enabled is collected even if client is not registered

* fix usage stats test

(cherry picked from commit 14a78b58e9)
2023-02-21 16:21:09 +01:00
Grot (@grafanabot)
b6dc902ec0 [v9.4.x] Alerting: Get alert rules on faults (#61248) (#63505)
Alerting: Get alert rules on faults (#61248) (#63051)

* Alerting: get alert rules on faults (#61248)

Two functions used to fetch alert rules from DB are updated:
- GetAlertRulesForScheduling
- ListAlertRules
Rows are scanned one by one so good ones are returned.
Common Error is logged with indication how many
rules failed on deserialization.

Resolved: #61248

* updates from review comments

(cherry picked from commit 56c8661929)

Co-authored-by: bla2ej <123992384+bla2ej@users.noreply.github.com>
2023-02-21 10:15:40 -05:00
Grot (@grafanabot)
479360e6bf [v9.4.x] Update navigationAppConfig to use new k6 plugin id (#63459)
Update navigationAppConfig to use new k6 plugin id (#63002)

(cherry picked from commit f9f80cff89)

Co-authored-by: Simon <simon.legander@gmail.com>
2023-02-21 09:30:34 +01:00
Grot (@grafanabot)
f9845a6d70 [v9.4.x] Docs: Remove duplicate docs on images in notifications (#63475)
Docs: Remove duplicate docs on images in notifications (#63474)

(cherry picked from commit 85457156e3)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-20 18:01:28 +00:00
Grot (@grafanabot)
96121adda2 [v9.4.x] Docs: Uploading images from disk supported in Slack (#63473)
Docs: Uploading images from disk supported in Slack (#63443)

(cherry picked from commit 0e9201c522)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-20 12:43:02 -05:00
Grot (@grafanabot)
56b478f84d [v9.4.x] Docs: Upload images from disk supported in Telegram (#63471)
Docs: Upload images from disk supported in Telegram (#63442)

(cherry picked from commit 92248fe977)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-20 12:37:20 -05:00
Grot (@grafanabot)
7451db3f26 [v9.4.x] Prometheus: Fix missing abs operation to query builder (#63462)
Prometheus: Fix missing abs operation to query builder (#63139)

Add abs operator to prometheus query builder

(cherry picked from commit 80292d3d1e)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-02-20 09:58:23 -05:00
Grot (@grafanabot)
0bddceb24c [v9.4.x] Alerting: Fix confusing comment about screenshots in default.ini and docs (#63440)
Alerting: Fix confusing comment about screenshots in default.ini and docs (#63346)

(cherry picked from commit 005f5ca1df)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-20 05:25:36 -05:00
Yuri Tseretyan
65de5b497b Chore: update alerting package to head of 9.4.x (508391225cd4) (#63210)
update alerting package to 9.4.x 508391225cd4
2023-02-10 17:41:10 +01:00
Grot (@grafanabot)
edd529c2cf [v9.4.x] Loki Context UI: Do not disable last label (#63253)
Loki Context UI: Do not disable last label (#62866)

* improved text

* prevent all labels removed

* use `structuredClone` instead of lodash

* update test

* get `structuredClone` in test?

* fix using structuredClone

(cherry picked from commit 00edc1c6b1)

Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
2023-02-10 08:35:00 -05:00
Grot (@grafanabot)
17605f97af [v9.4.x] PanelChrome: Make loading animation speed the same across panels (#63242)
PanelChrome: Make loading animation speed the same across panels  (#62997)

Revert devenv dashboard change

(cherry picked from commit ed626427de)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2023-02-10 10:20:35 +01:00
Grot (@grafanabot)
e5d80f21e9 [v9.4.x] Alerting: Fix a bug taking screenshots with Dashboard UID (#63222)
Alerting: Fix a bug taking screenshots with Dashboard UID (#63220)

This commit fixes a bug where Grafana would fail to take a screenshot if
the same Dashboard UID was present across two or more different orgs.

(cherry picked from commit 1f984409a2)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-09 21:24:05 +00:00
Grot (@grafanabot)
f69374abbd [v9.4.x] Docs: Fix redaction error in notification policies docs (#63140)
Docs: Fix redaction error in notification policies docs (#63112)

fix redaction error in notification policies docs

(cherry picked from commit f43993d43f)

Co-authored-by: Santiago <santiagohernandez.1997@gmail.com>
2023-02-09 13:03:59 -03:00
Grot (@grafanabot)
ec2082c172 [v9.4.x] docs: adds what's new video (#63207)
docs: adds what's new video (#63206)

adds what's new video

(cherry picked from commit 52cc6a8651)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-09 09:56:38 -06:00
Horst Gutmann
3574fa5996 [9.4.x] Add missing PRs to 9.4.0-beta1 changelog (#62596) (#62600)
Add missing PRs to 9.4.0-beta1 changelog (#62596)

(cherry picked from commit addfd1b5cf)
2023-02-09 15:31:22 +01:00
Grot (@grafanabot)
982624f7b1 [v9.4.x] Provisioning: Parse boolean and numeric values from environment variables (#63192)
Provisioning: Parse boolean and numeric values from environment variables (#63085)

(cherry picked from commit a33e316f40)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-02-09 09:04:33 -05:00
Grot (@grafanabot)
69453133e7 [v9.4.x] Fix MSSQL queries failing because of bad interpolation (#63172)
Fix MSSQL queries failing because of bad interpolation (#63167)

fix failing mssql queries

(cherry picked from commit 62b078e4e4)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2023-02-09 03:32:11 -05:00
Grot (@grafanabot)
8a489712cc [v9.4.x] docs: comments out video (#63152)
docs: comments out video (#63150)

comments out video

(cherry picked from commit bc93f45e9d)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-08 14:43:40 -06:00
Grot (@grafanabot)
87f6fef9d7 [v9.4.x] docs: fixes video link in what's new 9.4 (#63146)
docs: fixes video link in what's new 9.4 (#63145)

fixes video link

(cherry picked from commit b405874166)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-08 13:51:02 -06:00
Grot (@grafanabot)
371149fa02 [v9.4.x] fix broken envelope encryption link (#63143)
fix broken envelope encryption link (#63135)

(cherry picked from commit 72ca7fe7fe)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-02-08 11:41:47 -08:00
Grot (@grafanabot)
845b797b5b [v9.4.x] What's New in v9.4 (#63137)
What's New in v9.4 (#59614)

* What's New in v9.4

* moves alert email templating to v9.4 release

* Add whats new for SAT (#61151)

* Add whats new for SAT

* Logs: Add logdetails redesign to "whats new" (#61361)

* update whats new

* update text and add image

* change `logline` to `log line`

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>

* add: skip org role sync

* add note about oncall rbac to whats new 9.4 docs

* Loki Datasource: Add query validation to What's new (#62012)

Loki Datasource: add query validation to what's new

* Add note about SAML auto login (#61926)

* Add note about SAML auto login

* Apply suggestions from code review

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>

* run prettier

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

* What's New: Add image for the Loki Query Validation feature (#62358)

* What's new 9.4: add image for Loki query validation

* What's new 9.4: update image path

* Docs: Add logs sample to whats new in 9.4 (#62354)

* Add logs sample to whats new in 9.4

* Update path to image

* Update docs/sources/whatsnew/whats-new-in-v9-4.md

Co-authored-by: Matias Chomicki <matyax@gmail.com>

---------

Co-authored-by: Matias Chomicki <matyax@gmail.com>

* Add datasource connection page to whatsnew

* Update datasource connection whats new 9.4

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>

* Update datasource connection whats-new-in-v9-4.md

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>

* Update whats-new-in-v9-4.md

Enterprise features add on

* Added command palette, navigation

* Update whats-new-in-v9-4.md

* Update whats-new-in-v9-4.md

* enterprise updates

* add panel header redesign content

* Adds alerting content to whats new

* Fix typo

Nav navigation -> New Navigation

* adds image to pause alerts

* Updated cmd palette screenshot

* Update docs/sources/whatsnew/whats-new-in-v9-4.md

* Update docs/sources/whatsnew/whats-new-in-v9-4.md

* adds alerting screenshots

* reorder and begin adding availability

Re-ordered updates into groups, and added availability descriptions to the first few updates.

* Updated command palette availability

* fix capitalization

* copy edit

* add before you upgrade section

* add docs relref links

* makes prettier

* added before you begin boilerplate

* Add Enterprise Datasource updates / highlights

* Add what's new section on updates to the canvas panel

* Update canvas demo vid src to correct location

* Canvas: add small shoutout for new server element in whats new

* copy edit final contributions

---------

Co-authored-by: linoman <2051016+linoman@users.noreply.github.com>
Co-authored-by: Sven Grossmann <sven.grossmann@grafana.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Eric Leijonmarck <eric.leijonmarck@gmail.com>
Co-authored-by: Joey Orlando <joseph.t.orlando@gmail.com>
Co-authored-by: Matias Chomicki <matyax@gmail.com>
Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: natellium <natalia.bernarte@grafana.com>
Co-authored-by: Natalia Bernarte Oses <74534993+natellium@users.noreply.github.com>
Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Fabrizia Rossano <117294258+frossano-grafana@users.noreply.github.com>
Co-authored-by: Zsofia <zsofia.komaromi@gmail.com>
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
Co-authored-by: Mitchel Seaman <mitchel.seaman@gmail.com>
Co-authored-by: josiahg <jay@grafana.com>
Co-authored-by: nmarrs <nathanielmarrs@gmail.com>
(cherry picked from commit 4dba927b3a)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-08 14:16:20 -05:00
Grot (@grafanabot)
45dd9f9a9f [v9.4.x] Navigation: add a link to starred dashboards in the megamenu (#63106)
Navigation: add a link to starred dashboards in the megamenu (#62685)

add a link to starred dashboards in the megamenu

(cherry picked from commit fc2f7f90f8)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-08 15:41:10 +00:00
Grot (@grafanabot)
8a8180c44d [v9.4.x] Docs: incorporates feedback from PR #62402 (#63101)
Docs: incorporates feedback from PR #62402 (#63065)

incorporates feedback from original PR

(cherry picked from commit a7ae05285c)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-08 09:36:07 -06:00
Ashley Harrison
532fc8dd2c Navigation: Backport 61103 to v9.4.x (#63097)
Navigation: Ensure command palette is correctly translated (#61103)

* Navigation: Translate nav tree in store

* Remove usage of getNavTitle

* properly translate children

* add pubdash translation

* remove extraneous calls to translation in PageHeader

* empty commit

* correctly allow subtitle to be overrwitten (thank you tests!)

---------

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

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2023-02-08 13:41:37 +00:00
Horst Gutmann
0d648ea977 [9.4.x] CI: Do not clone repo in artifact-page step (#63077) (#63087)
CI: Do not clone repo in artifact-page step (#63077)

(cherry picked from commit 470be140dc)
2023-02-08 15:19:53 +02:00
Horst Gutmann
23ac2de4d3 [9.4.x] CI: Running Redis integration tests without grabpl (#63028) (#63074)
This restores some changes from
https://github.com/grafana/grafana/pull/61920 that were accidentally
deleted.

(cherry picked from commit 2804acd264)
2023-02-08 04:35:40 -05:00
Grot (@grafanabot)
87497a1afc [v9.4.x] Prometheus: Table format throwing error on empty result (#63062)
Prometheus: Table format throwing error on empty result (#63053)

* fix bug in prometheus table view which is throwing error when a query returns no results

(cherry picked from commit 79b750a4b2)

Co-authored-by: Galen Kistler <109082771+gtk-grafana@users.noreply.github.com>
2023-02-07 16:10:00 -05:00
Grot (@grafanabot)
3c7cfecf50 [v9.4.x] CommandPalette: Move quick add actions to top level (#63049)
CommandPalette: Move quick add actions to top level (#62900)

* Move quick actions to top level

* Change quick action verb to "Create"

* create to 'new'

* fix comment

* update translations

* undo changing alerting

(cherry picked from commit 5564b93e2f)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2023-02-07 16:21:49 +00:00
Grot (@grafanabot)
63f1d95ed6 [v9.4.x] Update publishing workflows to use organization secret (#63046)
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 10:22:49 -05:00
Grot (@grafanabot)
238f51fb73 [v9.4.x] Docs: fix typo (#63038)
Docs: fix typo (#63032)

(cherry picked from commit c4909a6c2b)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-02-07 16:06:00 +01:00
Grot (@grafanabot)
88e8d97ad3 [v9.4.x] Search: Switch to list view when filtering by tags (#63017)
Search: Switch to list view when filtering by tags (#63004)

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

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2023-02-07 07:12:56 -05:00
Marcus Efraimsson
bd14abb309 [v9.4.x] Docs: Fix 404 links in build a plugin page (#63006) (#63010)
Docs: Fix 404 links in build a plugin page (#63006)

(cherry picked from commit a2f8dd7f1f)
2023-02-07 12:22:12 +01:00
Dimitris Sotirakis
96fa91e113 [v9.4.x] CI: Remove variants arg from package step (#62858) (#62999)
CI: Remove variants arg from `package` step (#62858)

* Remove variants arg from package step

* Fix starlark lint

* Default to releaseModeConfig.Variants

* Check for empty variants arg

(cherry picked from commit e5c48ac945)
2023-02-07 11:19:05 +02:00
Grot (@grafanabot)
0ca7d1e210 [v9.4.x] docs: upgrade guide refactor organizes releases into their own pages; moves upgrade guide to the root (#62987)
docs: upgrade guide refactor organizes releases into their own pages; moves upgrade guide to the root (#62402)

* organizes releases into their own pages; moves upgrade guide to the root

* adds and removes aliases

* Update docs/sources/upgrade-guide/upgrade-v8.0/index.md

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

* Update docs/sources/upgrade-guide/upgrade-v8.0/index.md

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

* Update docs/sources/upgrade-guide/upgrade-v8.0/index.md

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

* Update docs/sources/upgrade-guide/upgrade-v9.3/index.md

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

* Update docs/sources/shared/upgrade/upgrade-common-tasks.md

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

* Update docs/sources/shared/upgrade/upgrade-common-tasks.md

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

* Update docs/sources/shared/upgrade/upgrade-common-tasks.md

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

* corrects relrefs

---------

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

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-06 17:10:49 -06:00
Grot (@grafanabot)
200c94c722 [v9.4.x] Add canonical URL to all HTTP API docs (#62971)
Add canonical URL to all HTTP API docs (#62957)

Facilitates mounting these docs in the Grafana Cloud documentation set
without affecting SEO.

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-02-06 17:21:50 +00:00
Grot (@grafanabot)
7589dbe784 [v9.4.x] docs: fix broken annotations link (#62968)
docs: fix broken annotations link (#62834)

* docs: fix broken annotations link

Link to annotations section is broken because the section was never added. A placeholder for it was removed on this commit, but the link wasn't. This seems like the best place to point to.

* fix relref formatting

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

* removed TODOs from tables

* prettier linting

---------

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

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-02-06 10:53:14 -06:00
Grot (@grafanabot)
005fb9586c [v9.4.x] Alerting: fix "policy" typo (#62955)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-02-06 16:58:22 +01:00
Grot (@grafanabot)
cb898dfe66 [v9.4.x] Docs: corrects typo (#62961)
Docs: corrects typo (#62954)

corrects typo

(cherry picked from commit cf272186fb)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-06 09:42:26 -06:00
Grot (@grafanabot)
3dffe4099b [v9.4.x] Refactor: Use data source UID rather than ID (#62937)
Refactor: Use data source UID rather than ID (#62781)

(cherry picked from commit 9893408af9)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-02-06 05:36:00 -05:00
Grot (@grafanabot)
d9710139e1 [v9.4.x] Prometheus: Refactor. Use data source UID rather than the deprecated ID (#62936)
Prometheus: Refactor. Use data source UID rather than the deprecated ID (#62795)

(cherry picked from commit 32e6af966f)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-02-06 11:12:24 +01:00
Grot (@grafanabot)
8e9fb8cf93 [v9.4.x] SAML: Update library (fix single logout) (#62933)
SAML: Update library (fix single logout) (#62880)

* SAML: update library (fix single logout)

* Run go mod tidy

(cherry picked from commit 5205cfb11c)

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2023-02-06 03:36:51 -05:00
Grot (@grafanabot)
fba376b347 [v9.4.x] Docs: removes Grafana Cloud CTA (#62905)
Docs: removes Grafana Cloud CTA (#62827)

removes Grafana Cloud CTA

(cherry picked from commit ebe54629e7)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-03 12:39:30 -06:00
Grot (@grafanabot)
6895e75f70 [v9.4.x] Canvas: Support color themes for arrows (#62896)
Canvas: Support color themes for arrows (#62829)

(cherry picked from commit db953c9a9c)

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2023-02-03 12:47:27 -05:00
Grot (@grafanabot)
4f826bc76c [v9.4.x] Canvas: Improve anchor UX (#62898)
Canvas: Improve anchor UX (#62409)

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

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2023-02-03 12:09:51 -05:00
Grot (@grafanabot)
efaf4f5e09 [v9.4.x] Canvas: Update server element design (#62897)
Canvas: Update server element design (#62832)

(cherry picked from commit 43ce077133)

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2023-02-03 12:07:29 -05:00
Grot (@grafanabot)
907381ed5c [v9.4.x] MSSQL: Add support for macro function calls (#62890)
MSSQL: Add support for macro function calls (#62742)

* MSSQL: Add support for macro function calls

* Add tests

(cherry picked from commit 9fc3b360a4)

Co-authored-by: Victor Marin <36818606+mdvictor@users.noreply.github.com>
2023-02-03 11:03:24 -05:00
Grot (@grafanabot)
8c9cb8e839 [v9.4.x] PanelChrome: Implement hover header (#62875)
PanelChrome: Implement hover header (#61774)

Closes #59078

Co-authored-by: polinaboneva <polina.boneva@grafana.com>
Co-authored-by: Ivan Ortega <ivanortegaalba@gmail.com>
Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
(cherry picked from commit 40ec4ef5b8)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2023-02-03 15:30:08 +00:00
Grot (@grafanabot)
028cc7e72b [v9.4.x] Navigation: move Connections plugin to be just after apps (#62871)
Navigation: move Connections plugin to be just after apps (#62801)

move connections plugin to be just after apps

(cherry picked from commit c819e95687)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-03 09:06:18 -05:00
Grot (@grafanabot)
00555606d5 [v9.4.x] Search: Fix not being able to clear sort value (#62869)
Search: Fix not being able to clear sort value (#62557)

* user essentials mob! 🔱

lastFile:public/app/features/search/state/SearchStateManager.ts

* user essentials mob! 🔱

lastFile:public/app/features/search/page/components/ActionRow.tsx

* user essentials mob! 🔱

* remove searchSort state from localStorage when cleared

---------

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
Co-authored-by: Joao Silva <joao.silva@grafana.com>
(cherry picked from commit f8809eef59)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2023-02-03 08:51:47 -05:00
Grot (@grafanabot)
9cf5b4eb9e [v9.4.x] Tempo: Fix span name being dropped from the query (#62846)
Tempo: Fix span name being dropped from the query (#62257)

(cherry picked from commit c3b476e1dc)

Co-authored-by: Hamas Shafiq <hamas.shafiq@grafana.com>
2023-02-03 05:34:09 -05:00
Grot (@grafanabot)
8637518540 [v9.4.x] Added pageZoomLevel option to image renderer setup documentation (#62842)
Added pageZoomLevel option to image renderer setup documentation (#59472)

* Added pageZoomLevel option to image renderer setup

* Update _index.md

* Update docs/sources/setup-grafana/image-rendering/_index.md

* chore: prettier run in docs

---------

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

Co-authored-by: Gabriel Goller <gabrielgoller123@gmail.com>
2023-02-03 10:25:14 +01:00
Grot (@grafanabot)
0c27df8b8c [v9.4.x] Alerting docs: updates to alert rules docs for 9.4 (#62810)
Alerting docs: updates to alert rules docs for 9.4 (#62744)

* Alerting docs: updates to alert rules docs for 9.4

* Adds updates to oncall contact point and pause alerts

* Adds view read-only query update 9.4

(cherry picked from commit d19803a0f0)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-02-03 07:17:00 +00:00
Grot (@grafanabot)
8fd1547edb [v9.4.x] Alerting: Add label query parameters to state history endpoint (#62835)
Alerting: Add label query parameters to state history endpoint (#62831)

* Allow equality-only matching of arbitrary labels via query params

* Pre-initialize map

(cherry picked from commit 9eeea8f5ea)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-02-02 23:14:16 +00:00
Alexander Weaver
21f204d35a Alerting: implement loki query for alert state history (#62833)
Alerting: implement loki query for alert state history (#61992)

* Alerting: implement loki query for alert state history

* extract selector building

* add unit tests for selector creation

* backup

* give selectors their own type

* build dataframe

* add some tests

* small changes after manual testing

* use struct client

* golint

* more golint

* Make RuleUID optional for Loki implementation

* Drop initial assumption that we only have one series

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

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

* Include state history label filter

* Remove dead code

---------

Co-authored-by: Jean-Philippe Quéméner <JohnnyQQQQ@users.noreply.github.com>
2023-02-02 16:56:26 -06:00
Grot (@grafanabot)
84da688400 [v9.4.x] Alerting: Pause dash alerts on migration (#62830)
Alerting: Pause dash alerts on migration (#62798)

* Alerting: Pause dash alerts on migration

(cherry picked from commit f49efa6e27)

Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-02-02 22:07:06 +00:00
Grot (@grafanabot)
b742567ade [v9.4.x] Alerting: Fix template validation in provisioning api (#62825)
Alerting: Fix template validation in provisioning api (#62530)

* Alerting: Fix template validation in provisioning api

Fix issue where provisioning API accepts a malformed template having extra
text outside of definition block and template name matching definition name.

(cherry picked from commit f9ec16e74f)

Co-authored-by: Matthew Jacobson <matthew.jacobson@grafana.com>
2023-02-02 20:45:21 +00:00
Grot (@grafanabot)
385b15bf69 [v9.4.x] Alerting: Add static label to all state history entries (#62819)
Alerting: Add static label to all state history entries (#62817)

* Add static label to all state history entries

* Separate label and value visually

(cherry picked from commit 647f73ddc5)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-02-02 14:00:09 -06:00
Grot (@grafanabot)
94ec932d29 [v9.4.x] Docs: corrects incorrect redirect and fixes link (#62820)
Docs: corrects incorrect redirect and fixes link (#62815)

corrects incorrect redirect and fixes link

(cherry picked from commit 060e0a4d18)

Co-authored-by: Christopher Moyer <35463610+chri2547@users.noreply.github.com>
2023-02-02 13:52:26 -06:00
Grot (@grafanabot)
2525b30803 [v9.4.x] Alerting: Add endpoint for querying state history (#62813)
Alerting: Add endpoint for querying state history (#62166)

* Define endpoint and generate

* Wire up and register endpoint

* Cleanup, define authorization

* Forgot the leading slash

* Wire up query and SignedInUser

* Wire up timerange query params

* Add todo for label queries

* Drop comment

* Update path to rules subtree

(cherry picked from commit 6ad1cfef38)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-02-02 12:32:30 -06:00
Grot (@grafanabot)
324964b86b [v9.4.x] Alerting: Usability adjustments to Loki representation of state history values (#62811)
Alerting: Usability adjustments to Loki representation of state history values (#62643)

* Extract label merge, add test file

* Extract error/NoData to first class fields, remove a layer from values

* Include dashUID and panelID as line-level fields

* Drop unnecessary object receiver

* Add tests for stream building

* Drop NoData field from log lines

(cherry picked from commit 9fa28c11c5)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-02-02 11:15:51 -06:00
Grot (@grafanabot)
d31f932800 [v9.4.x] Auth: Rotate token patch (#62782)
Auth: Rotate token patch (#62676)

* Use singleflight.Group

* Align tests

* Cleanup

(cherry picked from commit 7c1d9769ca)

Co-authored-by: Misi <mgyongyosi@users.noreply.github.com>
2023-02-02 18:05:38 +01:00
Grot (@grafanabot)
363171b182 [v9.4.x] Alerting: Pass yaml as a query param in export request (#62806)
Alerting: Pass yaml as a query param in export request (#62751)

* Set YAML as default value for exporting alert rules

* use YAML format for rule list export

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>

* lint

* Add new format query param to swagger+docs

* Fix broken test

---------

Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: Matt Jacobson <matthew.jacobson@grafana.com>
(cherry picked from commit 753c84f825)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-02 17:29:21 +01:00
Alexander Weaver
32e3cd7cbc Alerting: Refactor away a layer of indirection around the goroutine in Loki state history (#62802)
Alerting: Refactor away a layer of indirection around the goroutine in Loki state history (#62644)

Inline recordStreamsAsync in loki backend
2023-02-02 10:14:47 -06:00
Grot (@grafanabot)
2a223cbea2 [v9.4.x] Tempo: TraceQL syntax highlighting improvements (#62803)
Tempo: TraceQL syntax highlighting improvements (#62349)

* Better syntax highlighting for durations, floats and right-hand-side tags

* Remove hex rule in TraceQL syntax highlighting

(cherry picked from commit 60f2433a0f)

Co-authored-by: Andre Pereira <adrapereira@gmail.com>
2023-02-02 16:03:25 +00:00
Grot (@grafanabot)
c7a182e9d5 [v9.4.x] Tempo: Trace to logs update image (#62804)
Tempo: Trace to logs update image (#62796)

(cherry picked from commit 99a16d27c1)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2023-02-02 17:02:43 +01:00
Grot (@grafanabot)
d8f757cb8c [v9.4.x] Tempo: Inject status and status.code for tags autocomplete (#62800)
Tempo: Inject status and status.code for tags autocomplete (#62794)

* Tempo: Inject status for v2 and status.code for v1 in the tags list for autocomplete

* Small comment fix

(cherry picked from commit b78af0b0f0)

Co-authored-by: Andre Pereira <adrapereira@gmail.com>
2023-02-02 15:53:17 +00:00
Grot (@grafanabot)
bfe6b520d7 [v9.4.x] Tempo: Update docs for trace to logs functionality (#62793)
Tempo: Update docs for trace to logs functionality (#62338)

(cherry picked from commit 1aae808723)

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2023-02-02 16:52:24 +01:00
Grot (@grafanabot)
190c3aad58 [v9.4.x] Plugins: Prefer to use the data source UID when querying (#62789)
Plugins: Prefer to use the data source UID when querying (#62776)

(cherry picked from commit 68862ce3e8)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-02-02 15:02:06 +00:00
Grot (@grafanabot)
022abcb47d [v9.4.x] SQLStore: Fix folder migration for MySQL < 5.7 (#62786)
SQLStore: Fix folder migration for MySQL < 5.7 (#62521)

* Nested folders: Do not skip integration tests

* SQLStore: Fix folder migration

It reduces the length of the title column to be equal with the respective
dashboard column.

(cherry picked from commit 4eaff63eda)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2023-02-02 14:40:51 +00:00
Horst Gutmann
5b305cb696 [9.4.x] CI: Allow other modules to register build sub-commands (PR #62741) (#62774)
CI: Allow other modules to register build sub-commands (#62741)

* Allow other modules to register build sub-commands

* CI: Fix retries on artifacts-page clone

* Fix linting errors

* Fix golint issues

* Update to grabpl 3.0.21

(cherry picked from commit 312ea59e6d)
2023-02-02 15:14:41 +01:00
Grot (@grafanabot)
a03069fb08 [v9.4.x] Alerting: Set YAML as default value for exporting alert rules (#62770)
Alerting: Set YAML as default value for exporting alert rules (#62760)

Set YAML as default value for exporting alert rules

(cherry picked from commit 517e614661)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-02 13:42:44 +01:00
Grot (@grafanabot)
0413fea8d2 [v9.4.x] Heatmap: Support heatmap rows with non-timeseries X axis (#62733)
Heatmap: Support heatmap rows with non-timeseries X axis (#60929)

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

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-02-02 12:27:09 +01:00
Grot (@grafanabot)
30081ca04b [v9.4.x] Nested Folder: Fix for SQLite not to overwrite the parent on restarts (#62756)
Nested Folder: Fix for SQLite not to overwrite the parent on restarts (#62709)

Nested Folder: Fix for SQLite not to overwrite the arent on restarts

(cherry picked from commit adaf82ffb7)

Co-authored-by: Sofia Papagiannaki <1632407+papagian@users.noreply.github.com>
2023-02-02 10:26:55 +00:00
Grot (@grafanabot)
53a1e5b7e6 [v9.4.x] Fix/60084/save and test (#62750)
Fix: Save and test error message does not persist across datasource instance settings anymore

(cherry picked from commit ce50168b70)

Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
2023-02-02 09:01:07 +00:00
Grot (@grafanabot)
29cc5f9c62 [v9.4.x] Elasticsearch: Fix consistent label order in alerting (#62743)
Elasticsearch: Fix consistent label order in alerting (#62497)

elasticsearch: backend: sort label-values
(cherry picked from commit d9fd807375)

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
2023-02-02 08:22:56 +00:00
Grot (@grafanabot)
b485d1cde9 [v9.4.x] Cloudwatch: Fix log group variable interpolation (#62713)
Cloudwatch: Fix log group variable interpolation (#62640)

(cherry picked from commit 1f09508d8c)

Co-authored-by: Isabella Siu <Isabella.siu@grafana.com>
2023-02-01 13:52:52 -05:00
Grot (@grafanabot)
045c2d4e59 [v9.4.x] docs: fix broken elasticsearch metrics play link (#62719)
docs: fix broken elasticsearch metrics play link (#62715)

fix broken elastic search play link

(cherry picked from commit 1225e8d6d8)

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
2023-02-01 12:05:00 -06:00
Grot (@grafanabot)
654af9a48d [v9.4.x] Explore: Fix graph not updating when changing config (#62706)
Explore: Fix graph not updating when changing config (#62473)

* Explore: Fix graph not updating when changing config

* move useStructureRev to a seprate hook and add specific tests

(cherry picked from commit 6b6b733229)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2023-02-01 17:02:20 +00:00
Grot (@grafanabot)
5bb58c5172 [v9.4.x] Alerting docs: adds declare incident (#62710)
Alerting docs: adds declare incident (#62681)

* Alerting docs: adds declare incident

* adds alert detail view option

(cherry picked from commit 9d07b77532)

Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
2023-02-01 16:59:26 +00:00
Grot (@grafanabot)
42b9c898bf [v9.4.x] Search: Fix alignment of checkbox in folder view (#62708) 2023-02-01 16:44:11 +00:00
Grot (@grafanabot)
795c86b045 [v9.4.x] Tempo: Remove tempoApmTable feature flag (#62702)
Tempo: Remove tempoApmTable feature flag (#62499)

Remove tempoApmTable feature flag

(cherry picked from commit 5e1506dea0)

Co-authored-by: Andre Pereira <adrapereira@gmail.com>
2023-02-01 16:15:58 +00:00
Grot (@grafanabot)
5d5e7f97e9 [v9.4.x] Navigation: wrap dashboard settings actions in ToolbarButtonRow for responsiveness (#62692)
Navigation: wrap dashboard settings actions in `ToolbarButtonRow` for responsiveness (#62475)

wrap dashboard actions in toolbarbuttonrow for responsiveness

(cherry picked from commit 0a780d978e)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-01 15:14:49 +00:00
Grot (@grafanabot)
c8cf18d8f6 [v9.4.x] Alerting: hide "silence" button for external AM setups (#62691)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-02-01 15:10:51 +00:00
Grot (@grafanabot)
70e4499f83 [v9.4.x] Loki: Fix label filter expression treating int as string (#62687)
Loki: Fix label filter expression treating int as string (#62496)

* fix: label filter expression treats int as string

* refactor: labelFilterRenderer

* test: add tests to labelFilterRenderer

* refactor: use backticks based on the operator not the value

* test: labelFilterRenderer uses the correct value type based on the operator

* test: use it.every rather than having multiple repetitive tests

(cherry picked from commit 42f8f5a9ea)

Co-authored-by: Gareth Dawson <gareth.dawson@grafana.com>
2023-02-01 14:52:46 +00:00
Grot (@grafanabot)
2e251a2b20 [v9.4.x] Alerting: Add support for "normal" as state filter in rule search (#62679)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-02-01 15:05:51 +01:00
Grot (@grafanabot)
cdec4eb6ab [v9.4.x] Alerting: Add Copy action to templates table (#62683)
Alerting: Add Copy action to templates table (#62135)

* Add duplicate action to templates table

Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>

* Move duplicate icon, and remove provenance when rendering TemplateForm

* Create generic generateCopiedName method to avoid duplication and use it also in the CloneRuleEditor

* Use 'Copy' for duplicating templates and cloning alert rules

* Improve updating the template content with new unique define values when copying

Co-authored-by: Konrad Lalik <konradlalik@gmail.com>

* Fix typo

---------

Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
Co-authored-by: Konrad Lalik <konradlalik@gmail.com>
(cherry picked from commit 151e57df70)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-01 14:57:12 +01:00
Grot (@grafanabot)
71a18da270 [v9.4.x] Command palette: section styling tweaks (#62682)
Command palette: section styling tweaks (#62671)

section styling tweaks

(cherry picked from commit 8d7e7693f2)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-02-01 13:12:55 +00:00
Grot (@grafanabot)
40354c6b40 [v9.4.x] Alerting: Allow alert rule pausing from API (#62675)
Alerting: Allow alert rule pausing from API (#62326)

* Add is_paused attr to the POST alert rule group endpoint

* Add is_paused to alerting API POST alert rule group

* Fixed tests

* Add is_paused to alerting gettable endpoints

* Fix integration tests

* Alerting: allow to pause existing rules (#62401)

* Display Pause Rule switch in Editing Rule form

* add isPaused property to form interface and dto

* map isPaused prop with is_paused value from DTO

Also update test snapshots

* Append '(Paused)' text on alert list state column when appropriate

* Change Switch styles according to discussion with UX

Also adding a tooltip with info what this means

* Adjust styles

* Fix alignment and isPaused type definition

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>

* Fix test

* Fix test

* Fix RuleList test

---------

Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>

* wip

* Fix tests and add comments to clarify AlertRuleWithOptionals

* Fix one more test

* Fix tests

* Fix typo in comment

* Fix alert rule(s) cannot be paused via API

* Add integration tests for alerting api pausing flow

* Remove duplicated integration test

---------

Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
Co-authored-by: George Robinson <george.robinson@grafana.com>
(cherry picked from commit 53945afedf)

Co-authored-by: Alex Moreno <alexander.moreno@grafana.com>
2023-02-01 12:33:24 +00:00
Grot (@grafanabot)
68fb4da24a [v9.4.x] Alerting: Show 'start typing' message in evaluation group folder in case of empty options. (#62665)
Alerting: Show 'start typing' message in evaluation group folder in case of empty options. (#62611)

Show start typing message in evaluation group folder in case of empty options

(cherry picked from commit c0865c863d)

Co-authored-by: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com>
2023-02-01 11:30:55 +00:00
Grot (@grafanabot)
89f9081658 [v9.4.x] CI: Replace grafana/grafana-oss with grafana-oss when publishing to dockerhub repo (#62653)
CI: Replace `grafana/grafana-oss` with `grafana-oss` when publishing to dockerhub repo (#62651)

Replace grafana/grafana-oss with grafana-oss

(cherry picked from commit 1a5b54cff3)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-02-01 12:26:17 +02:00
Grot (@grafanabot)
84d2814f7c [v9.4.x] PanelChrome: Adds display mode to support transparent option (#62654)
PanelChrome: Adds display mode to support transparent option (#62647)

* PanelChrome: Add transparent displayMode

* Remove comment

* Fixes to storybook and new example

* no background on TitleItem

---------

Co-authored-by: polinaboneva <polina.boneva@grafana.com>
(cherry picked from commit 533c8e4b7a)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2023-02-01 10:05:53 +00:00
Andreas Christou
193b671246 [v9.4.x] TemplateVariables: Fix custom variable function support (#62509) (#62573)
TemplateVariables: Fix custom variable function support (#62509)

Validate query values

(cherry picked from commit 3ac97dd396)

# Conflicts:
#	public/app/features/query/state/runRequest.ts
2023-02-01 10:25:03 +01:00
Grot (@grafanabot)
2bb672a7de [v9.4.x] Geomap: Ensure options work while in table view (#62635)
Geomap: Ensure options work while in table view (#62632)

(cherry picked from commit cf6952a963)

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2023-01-31 15:31:54 -08:00
Grot (@grafanabot)
c156621981 [v9.4.x] Transforms: Fix schema definition (#62623)
Transforms: Fix schema definition (#62619)

(cherry picked from commit 4186871390)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-01-31 15:31:28 -08:00
Grot (@grafanabot)
9a8983e8e9 [v9.4.x] Alerting: Fix handling of special floating-point cases when writing observed values to annotations (#62637)
Alerting: Fix handling of special floating-point cases when writing observed values to annotations (#61074)

* Fix json serialization of state values

* Simplify two of the tests

* Fix linter complaint

* Don't return error if we fail to look up dashboard, just log it and move on

* Address linter complaint

(cherry picked from commit 03f3fbec0d)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-01-31 21:51:52 +00:00
Grot (@grafanabot)
4bdfc2d926 [v9.4.x] Expressions: Fixes the issue showing expressions editor (#62622)
Expressions: Fixes the issue showing expressions editor (#62510)

* Use suggested value for uid

* update the snapshot

* use __expr__

* replace all -100 with __expr__

* update snapshot

* more changes

* revert redundant change

* Use expr.DatasourceUID where it's possible

* generate files

(cherry picked from commit 91221bc436)

Co-authored-by: ismail simsek <ismailsimsek09@gmail.com>
2023-01-31 18:10:13 +00:00
Grot (@grafanabot)
bd9707e8f3 [v9.4.x] Use requires_buildifier build tag to avoid needing buildifier locally (#62621)
Use requires_buildifier build tag to avoid needing buildifier locally (#62597)

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

Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-01-31 18:03:03 +00:00
Grot (@grafanabot)
3023a43d4f [v9.4.x] TestData: Remove references to TestData "DB" (#62613)
TestData: Remove references to TestData "DB" (#62603)

* remove refs testdatadb

* fix trailing semi-colon

* remove pluginName completely

(cherry picked from commit e7bfc4e749)

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2023-01-31 18:02:42 +00:00
Grot (@grafanabot)
41b0393140 [v9.4.x] Transformations: Selectively apply transformation to queries (#62615)
Transformations: Selectively apply transformation to queries (#61735)

(cherry picked from commit bba80b6c7a)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2023-01-31 09:48:18 -08:00
Grot (@grafanabot)
90a4c84bc2 [v9.4.x] MySQL: Quote identifiers that include special characters (#62618)
MySQL: Quote identifiers that include special characters (#61135)

* SQL: toRawSQL required and escape table

* Fix autocomplete for MySQL

* Change the way we escape for builder

* Rework escape ident to be smart instead

* Fix A11y for alias

* Add first e2e test

* Add test for code editor

* Add doc

* Review comments

* Move functions to sqlUtil

(cherry picked from commit 62c30dea4d)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2023-01-31 17:26:44 +00:00
Grot (@grafanabot)
6749e8667d [v9.4.x] TopNav: Fix right padding on signin link (#62606)
TopNav: Fix right padding on signin link (#62537)

* TopNav: Fix right padding on signin link

* revert yarn lock

* Update package.json

* Update

(cherry picked from commit c0f0c3d485)

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2023-01-31 16:31:45 +00:00
Grot (@grafanabot)
9727346e63 [v9.4.x] CI: Add artifacts publish build command (#62503)
CI: Add `artifacts publish` build command (#62445)

* CI: Add `artifacts publish` build command

* Lint release.star

(cherry picked from commit f23be415c5)

Co-authored-by: Horst Gutmann <horst.gutmann@grafana.com>
2023-01-31 16:29:34 +01:00
Grot (@grafanabot)
3683b7a5ff [v9.4.x] Alerting: Validate that tags are 100 characters or less (#62593)
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
Co-authored-by: George Robinson <george.robinson@grafana.com>
2023-01-31 14:41:06 +00:00
Grot (@grafanabot)
f9ca726290 [v9.4.x] Navigation: add event tracking for dashboard save as events (#62588)
Navigation: add event tracking for dashboard save as events (#62568)

* add event tracking for dashboard save as events

* emit a grafana_dashboard_copied event instead

(cherry picked from commit 029253d5f6)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-01-31 14:01:08 +00:00
Grot (@grafanabot)
15ec06b593 [v9.4.x] Azure Monitor: Return query error for metrics (#62577)
Azure Monitor: Return query error for metrics (#62570)

(cherry picked from commit 13f8ea2656)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-01-31 14:41:21 +01:00
Grot (@grafanabot)
953d9db30d [v9.4.x] Azure Monitor: Fix selection when using a search term (#62572)
Azure Monitor: Fix selection when using a search term (#62562)

(cherry picked from commit a0c3dcb8c6)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-01-31 13:29:59 +00:00
Grot (@grafanabot)
a7b9dcdce8 [v9.4.x] Navigation: add event tracking for navigation elements (#62583)
Navigation: add event tracking for navigation elements (#62563)

add user tracking for navigation elements

(cherry picked from commit 77a186879d)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-01-31 13:13:34 +00:00
Grot (@grafanabot)
76f3ed3c3f [v9.4.x] AzureMonitor: Fix dimension migration (#62579)
AzureMonitor: Fix dimension migration (#62485)

Remove unneeded properties post migration

(cherry picked from commit f77853f91e)

Co-authored-by: Andreas Christou <andreas.christou@grafana.com>
2023-01-31 13:11:18 +00:00
Grot (@grafanabot)
2ad87ce213 [v9.4.x] Plugins: Fix circular reference in customOptions leading to MarshalJSON errors (#62565)
Plugins: Fix circular reference in customOptions leading to MarshalJSON errors (#62328)

* Plugins: test ds.JsonData.MarshalJSON()

* CustomOptions: copy to avoid cyclic marshal

(cherry picked from commit c41f97029e)

Co-authored-by: Yasir Ekinci <ekinci.yasir@gmail.com>
2023-01-31 13:29:23 +01:00
Grot (@grafanabot)
cc5b3c11c4 [v9.4.x] Login: Fix panic when UpsertUser is called without ReqContext (#62555)
Login: Fix panic when UpsertUser is called without ReqContext (#62539)

(cherry picked from commit b1151dd118)

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2023-01-31 12:25:11 +01:00
Grot (@grafanabot)
20731672ed [v9.4.x] Chore: Update latest.json to 9.4.0-beta1 (#62560)
Chore: Update latest.json to 9.4.0-beta1 (#62556)

Chore: update latest.json to 9.4.0-beta1
(cherry picked from commit ef7716d6b3)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2023-01-31 13:00:57 +02:00
Grot (@grafanabot)
f9ec04bbb7 [v9.4.x] PanelChrome: Styling issues (#62550)
PanelChrome: Styling issues  (#62466)

* all panel icons are 16x16 in size; allow ToolbarButton to have its icon size set from outside;

* use TitleItem for streaming too, so that the style of focus-visible is the same

* allow menu icon to be visible when panel is focused

* remove some styling of title icons in panel header

* panel alert notices are too big

* PanelHeaderNotice: Fix styling issue with background and hover when
feature toggle is not enable

---------

Co-authored-by: Alexandra Vargas <alexa1866@gmail.com>
(cherry picked from commit d48a8fd227)

Co-authored-by: Polina Boneva <13227501+polibb@users.noreply.github.com>
2023-01-31 12:39:56 +02:00
Grot (@grafanabot)
0e6d038934 Release: Bump version to 9.4.0 (#62554)
"Release: Updated versions in package to 9.4.0"
2023-01-31 12:07:54 +02:00
Grot (@grafanabot)
b8c6ff611d [v9.4.x] Plugins: Update migration guide for 9.4/forwarded headers (#62549)
Plugins: Update migration guide for 9.4/forwarded headers (#62505)

Update plugin migration guide in regards to v9.4 and forwarding
of headers in grafana-plugin-sdk-go.

(cherry picked from commit 6c02c7079f)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2023-01-31 10:55:56 +01:00
Grot (@grafanabot)
ecfd92ed30 [v9.4.x] Navigation: Sign in button now works correctly when served under a sub path (#62548)
Navigation: Sign in button now works correctly when served under a sub path (#62504)

make sure getUrlForPartial always includes the basePath + unit tests

(cherry picked from commit fd2641a542)

Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
2023-01-31 09:36:37 +00:00
Grot (@grafanabot)
8eb9971797 [v9.4.x] Azure Monitor: Docs update for multiple resources (#62543)
Azure Monitor: Docs update for multiple resources (#62454)

(cherry picked from commit d3897b612f)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-01-31 09:56:45 +01:00
Grot (@grafanabot)
c567e690ad [v9.4.x] Alerting: Clarify PagerDuty integrationKey format (#62513)
Alerting: Clarify PagerDuty integrationKey format (#62463)

**What is this feature?**

Simply a documentation update.

**Why do we need this feature?**

Clarify the doc, so people don't waste time integrating the wrong key,
e.g. #8979, #9036, https://community.librenms.org/t/19013

**Who is this feature for?**

Developers doing a PagerDuty integration.

(cherry picked from commit a7c4872bcd)

Co-authored-by: Andre Miras <AndreMiras@users.noreply.github.com>
2023-01-31 08:56:14 +00:00
Grot (@grafanabot)
acf1b1285b [v9.4.x] Canvas: Update connection info on element rename (#62536) 2023-01-31 04:44:52 +00:00
Grot (@grafanabot)
3d65500a4f [v9.4.x] Alerting: Allow separate read and write path URLs for Loki state history (#62528)
Alerting: Allow separate read and write path URLs for Loki state history (#62268)

Extract config parsing and add tests

(cherry picked from commit e7ace4ed62)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-01-30 17:01:53 -06:00
Grot (@grafanabot)
589284778a [v9.4.x] Canvas: Connections positioning ux improvements (#62525)
Canvas: Connections positioning ux improvements (#62516)

(cherry picked from commit a92c081a33)

Co-authored-by: Adela Almasan <88068998+adela-almasan@users.noreply.github.com>
2023-01-30 13:59:51 -08:00
Grot (@grafanabot)
b9e989cbf2 [v9.4.x] Geomap: Maintain consistent control styling (#62522)
Geomap: Maintain consistent control styling (#62518)

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

Co-authored-by: Drew Slobodnjak <60050885+drew08t@users.noreply.github.com>
2023-01-30 13:35:54 -08:00
Grot (@grafanabot)
f39c46a1b5 [v9.4.x] Alerting: Configurable externalLabels for Loki state history (#62517)
Alerting: Configurable externalLabels for Loki state history (#62404)

* Add config option for external labels

* Remove redundant nilcheck

(cherry picked from commit b4682fe3cb)

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2023-01-30 15:34:40 -06:00
Grot (@grafanabot)
48bd8ebe92 [v9.4.x] Consider y coord when determining bottom collision (#62506)
Consider y coord when determining bottom collision (#62403)

(cherry picked from commit b6f477ae03)

Co-authored-by: Kristina <kristina.durivage@grafana.com>
2023-01-30 17:01:53 +00:00
Grot (@grafanabot)
34524d6dfa [v9.4.x] Azure Monitor: Enable multiple resource queries (#62502)
Azure Monitor: Enable multiple resource queries (#62467)

(cherry picked from commit 6d230d95eb)

Co-authored-by: Andres Martinez Gotor <andres.martinez@grafana.com>
2023-01-30 17:55:06 +01:00
Grot (@grafanabot)
6e861b19fa [v9.4.x] Alerting: allow to pause existing rules (#62491)
Co-authored-by: gillesdemey <gilles.de.mey@gmail.com>
Co-authored-by: Virginia Cepeda <virginia.cepeda@grafana.com>
2023-01-30 17:21:27 +01:00
Grot (@grafanabot)
26f7b8ee65 [v9.4.x] Alerting: Add Rule UID and Clone button to the rule details page (#62487)
Co-authored-by: Konrad Lalik <konrad.lalik@grafana.com>
2023-01-30 11:16:47 -05:00
Grot (@grafanabot)
04dd4e7f7c [v9.4.x] Alerting: Allow pausing alerts from provisioning (#62492)
Alerting: Allow pausing alerts from provisioning (#62263)

* Allow pausing alerts from provisioning

* Update swagger

* Add IsPaused to provision export endpoints

* Add pause field in sample.yml

* Add exception for reset state in first loop iteration of scheduler if rule is paused

* Update provision definition and swagger docs

* Fix provisioning export tests

* Suggestion: Simplify if condition

* Add more context to a comment

(cherry picked from commit 7a465f42a6)

Co-authored-by: Alex Moreno <alexander.moreno@grafana.com>
2023-01-30 17:01:37 +01:00
Grot (@grafanabot)
992e5d72ff [v9.4.x] Docs: Update wording / text and copy (#62490)
Co-authored-by: brendamuir <100768211+brendamuir@users.noreply.github.com>
Co-authored-by: Gilles De Mey <gilles.de.mey@gmail.com>
2023-01-30 15:46:25 +00:00
Grot (@grafanabot)
1b0f5f0a81 Release: Bump version to 9.4.0-beta1 (#62465)
"Release: Updated versions in package to 9.4.0-beta1"
2023-01-30 14:47:22 +02:00
3832 changed files with 103342 additions and 114528 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,32 +1,35 @@
import { BettererFileTest } from '@betterer/betterer';
import { promises as fs } from 'fs';
import { ESLint, Linter } from 'eslint';
import { existsSync } from 'fs';
import path from 'path';
import glob from 'glob';
export default {
'better eslint': () =>
countEslintErrors()
.include('**/*.{ts,tsx}')
.exclude(/public\/app\/angular/),
'better eslint': () => countEslintErrors().include('**/*.{ts,tsx}'),
'no undocumented stories': () => countUndocumentedStories().include('**/*.story.tsx'),
};
function countUndocumentedStories() {
return new BettererFileTest(async (filePaths, fileTestResult) => {
await Promise.all(
filePaths.map(async (filePath) => {
// look for .mdx import in the story file
const regex = new RegExp("^import.*.mdx';$", 'gm');
const fileText = await fs.readFile(filePath, 'utf8');
if (!regex.test(fileText)) {
// In this case the file contents don't matter:
const file = fileTestResult.addFile(filePath, '');
// Add the issue to the first character of the file:
file.addIssue(0, 0, 'No undocumented stories are allowed, please add an .mdx file with some documentation');
}
})
);
filePaths.forEach((filePath) => {
if (!existsSync(filePath.replace(/\.story.tsx$/, '.mdx'))) {
// In this case the file contents don't matter:
const file = fileTestResult.addFile(filePath, '');
// Add the issue to the first character of the file:
file.addIssue(0, 0, 'No undocumented stories are allowed, please add an .mdx file with some documentation');
}
});
});
}
async function findEslintConfigFiles(): Promise<string[]> {
return new Promise((resolve, reject) => {
glob('**/.eslintrc', (err, files) => {
if (err) {
reject(err);
}
resolve(files);
});
});
}
@@ -35,7 +38,7 @@ function countEslintErrors() {
const { baseDirectory } = resolver;
const cli = new ESLint({ cwd: baseDirectory });
const eslintConfigFiles = await glob('**/.eslintrc');
const eslintConfigFiles = await findEslintConfigFiles();
const eslintConfigMainPaths = eslintConfigFiles.map((file) => path.resolve(path.dirname(file)));
const baseRules: Partial<Linter.RulesRecord> = {

View File

@@ -1,5 +1,5 @@
module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
go 1.20
go 1.19
require github.com/golangci/golangci-lint v1.51.2 // cmd/golangci-lint

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,8 @@
[run]
init_cmds = [
["GO_BUILD_DEV=1", "make", "build-go"],
["make", "gen-go"],
["make", "gen-jsonnet"],
["GO_BUILD_DEV=1", "make", "build-go"],
["./bin/grafana", "server", "-packaging=dev", "cfg:app_mode=development"]
]
watch_all = true
@@ -16,7 +17,8 @@ watch_exts = [".go", ".ini", ".toml", ".template.html"]
ignore_files = [".*_gen.go"]
build_delay = 1500
cmds = [
["GO_BUILD_DEV=1", "make", "build-go"],
["make", "gen-go"],
["make", "gen-jsonnet"],
["GO_BUILD_DEV=1", "make", "build-go"],
["./bin/grafana", "server", "-packaging=dev", "cfg:app_mode=development"]
]

View File

@@ -1,4 +0,0 @@
aks
eror
iam
wan

View File

@@ -7,51 +7,62 @@
This module returns a Drone configuration including pipelines and secrets.
"""
load("scripts/drone/events/cron.star", "cronjobs")
load("scripts/drone/events/main.star", "main_pipelines")
load("scripts/drone/events/pr.star", "pr_pipelines")
load("scripts/drone/events/main.star", "main_pipelines")
load(
"scripts/drone/events/release.star",
"artifacts_page_pipeline",
"enterprise2_pipelines",
"enterprise_pipelines",
"integration_test_pipelines",
"oss_pipelines",
"publish_artifacts_pipelines",
"publish_npm_pipelines",
"publish_packages_pipeline",
)
load(
"scripts/drone/pipelines/ci_images.star",
"publish_ci_build_container_image_pipeline",
"publish_ci_windows_test_image_pipeline",
)
load(
"scripts/drone/pipelines/publish_images.star",
"publish_image_pipelines_public",
"publish_image_pipelines_security",
)
load(
"scripts/drone/pipelines/ci_images.star",
"publish_ci_windows_test_image_pipeline",
)
load("scripts/drone/pipelines/github.star", "publish_github_pipeline")
load("scripts/drone/pipelines/aws_marketplace.star", "publish_aws_marketplace_pipeline")
load(
"scripts/drone/pipelines/windows.star",
"windows_test_backend",
)
load(
"scripts/drone/rgm.star",
"rgm",
)
load("scripts/drone/version.star", "version_branch_pipelines")
load("scripts/drone/events/cron.star", "cronjobs")
load("scripts/drone/vault.star", "secrets")
def main(_ctx):
return (
pr_pipelines() +
main_pipelines() +
oss_pipelines() +
enterprise_pipelines() +
enterprise2_pipelines() +
publish_image_pipelines_public() +
publish_image_pipelines_security() +
publish_github_pipeline("public") +
publish_github_pipeline("security") +
publish_aws_marketplace_pipeline("public") +
publish_artifacts_pipelines("security") +
publish_artifacts_pipelines("public") +
publish_npm_pipelines() +
publish_packages_pipeline() +
rgm() +
[windows_test_backend({
"event": ["promote"],
"target": ["test-windows"],
}, "oss", "testing")] +
artifacts_page_pipeline() +
version_branch_pipelines() +
integration_test_pipelines() +
publish_ci_windows_test_image_pipeline() +
publish_ci_build_container_image_pipeline() +
cronjobs() +
secrets()
)

6363
.drone.yml

File diff suppressed because it is too large Load Diff

263
.github/CODEOWNERS vendored
View File

@@ -12,25 +12,27 @@
# This should make it easy to add new rules without breaking existing ones.
# Documentation
/.changelog-archive @grafana/docs-grafana
/CHANGELOG.md @grafana/docs-grafana
/CODE_OF_CONDUCT.md @grafana/docs-grafana
/CONTRIBUTING.md @grafana/docs-grafana
/GOVERNANCE.md @RichiH
/HALL_OF_FAME.md @grafana/docs-grafana
/ISSUE_TRIAGE.md @grafana/grafana-community-support
/LICENSE @torkelo
/LICENSING.md @torkelo
/MAINTAINERS.md @RichiH
/NOTICE.md @torkelo
/README.md @grafana/docs-grafana
/ROADMAP.md @torkelo
/SECURITY.md @grafana/security-team
/SUPPORT.md @torkelo
/UPGRADING_DEPENDENCIES.md @grafana/docs-grafana
/WORKFLOW.md @torkelo
/docs/ @grafana/docs-grafana
/contribute/ @grafana/docs-grafana
/devenv/README.md @grafana/docs-grafana
/docs/sources/developers/plugins/ @grafana/docs-grafana @grafana/plugins-platform-frontend @grafana/plugins-platform-backend
/docs/sources/developers/plugins/backend/ @grafana/docs-grafana @grafana/plugins-platform-backend
/.changelog-archive @grafana/docs-grafana
CHANGELOG.md @grafana/docs-grafana
CODE_OF_CONDUCT.md @grafana/docs-grafana
CONTRIBUTING.md @grafana/docs-grafana
GOVERNANCE.md @RichiH
HALL_OF_FAME.md @grafana/docs-grafana
ISSUE_TRIAGE.md @grafana/grafana-community-support
LICENSE @torkelo
LICENSING.md @torkelo
MAINTAINERS.md @RichiH
NOTICE.md @torkelo
README.md @grafana/docs-grafana
ROADMAP.md @torkelo
SECURITY.md @grafana/security-team
SUPPORT.md @torkelo
UPGRADING_DEPENDENCIES.md @grafana/docs-grafana
WORKFLOW.md @torkelo
# Technical documentation
/docs/ @Eve832 @jdbaldry
@@ -66,7 +68,7 @@
/pkg/bus/ @grafana/backend-platform
/pkg/cmd/ @grafana/backend-platform
/pkg/components/apikeygen/ @grafana/grafana-authnz-team
/pkg/components/satokengen/ @grafana/grafana-authnz-team
/pkg/components/apikeygenprefixed/ @grafana/grafana-authnz-team
/pkg/components/dashdiffs/ @grafana/backend-platform
/pkg/components/imguploader/ @grafana/backend-platform
/pkg/components/loki/ @grafana/backend-platform
@@ -83,7 +85,6 @@
/pkg/infra/metrics/ @grafana/backend-platform
/pkg/infra/network/ @grafana/backend-platform
/pkg/infra/process/ @grafana/backend-platform
/pkg/infra/proxy/ @grafana/hosted-grafana-team
/pkg/infra/remotecache/ @grafana/backend-platform
/pkg/infra/serverlock/ @grafana/backend-platform
/pkg/infra/slugify/ @grafana/backend-platform
@@ -96,6 +97,7 @@
/pkg/services/annotations/ @grafana/backend-platform
/pkg/services/apikey/ @grafana/backend-platform
/pkg/services/cleanup/ @grafana/backend-platform
/pkg/services/comments/ @grafana/backend-platform
/pkg/services/contexthandler/ @grafana/backend-platform
/pkg/services/correlations/ @grafana/backend-platform
/pkg/services/dashboardimport/ @grafana/backend-platform
@@ -113,6 +115,7 @@
/pkg/services/org/ @grafana/backend-platform
/pkg/services/playlist/ @grafana/backend-platform
/pkg/services/plugindashboards/ @grafana/backend-platform
/pkg/services/pluginsettings/ @grafana/backend-platform
/pkg/services/preference/ @grafana/backend-platform
/pkg/services/provisioning/ @grafana/backend-platform
/pkg/services/publicdashboards/ @grafana/dashboards-squad
@@ -159,6 +162,9 @@
/devenv/docker/blocks/loki* @grafana/observability-logs
/devenv/docker/blocks/elastic* @grafana/observability-logs
# Performance tests
/devenv/docker/loadtest-ts/ @grafana/multitenancy-squad
/devenv/bulk-dashboards/ @grafana/dashboards-squad
/devenv/bulk_alerting_dashboards/ @grafana/alerting-squad-backend
/devenv/create_docker_compose.sh @grafana/backend-platform
@@ -207,7 +213,7 @@
/devenv/docker/ha_test/ @grafana/backend-platform
/devenv/docker/loadtest/ @grafana/backend-platform
/devenv/docker/rpmtest/ @grafana/backend-platform
/devenv/jsonnet/ @grafana/dataviz-squad
/devenv/jsonnet/ @grafana/grafana-edge-squad
/devenv/local-npm/ @grafana/frontend-ops
/devenv/vscode/ @grafana/frontend-ops
/devenv/setup.sh @grafana/backend-platform
@@ -228,10 +234,9 @@
/Dockerfile @grafana/grafana-delivery
/Makefile @grafana/grafana-delivery
/scripts/build/ @grafana/grafana-delivery
/scripts/list-release-artifacts.sh @grafana/grafana-delivery
# OSS Plugin Partnerships backend code
/pkg/tsdb/cloudwatch/ @grafana/aws-datasources
/pkg/tsdb/cloudwatch/ @grafana/aws-plugins
/pkg/tsdb/azuremonitor/ @grafana/partner-plugins
/pkg/tsdb/cloudmonitoring/ @grafana/partner-plugins
@@ -254,14 +259,14 @@
/pkg/services/sqlstore/migrations/ @grafana/backend-platform @grafana/hosted-grafana-team
*_mig.go @grafana/backend-platform @grafana/hosted-grafana-team
# Grafana app platform
/pkg/services/live/ @grafana/grafana-app-platform-squad
/pkg/services/searchV2/ @grafana/grafana-app-platform-squad
/pkg/services/store/ @grafana/grafana-app-platform-squad
/pkg/infra/filestorage/ @grafana/grafana-app-platform-squad
/pkg/util/converter/ @grafana/grafana-app-platform-squad
/pkg/modules/ @grafana/grafana-app-platform-squad
/pkg/kindsysreport/ @grafana/grafana-app-platform-squad
# Grafana multitenancy
/pkg/services/live/ @grafana/multitenancy-squad
/pkg/services/searchV2/ @grafana/multitenancy-squad
/pkg/services/store/ @grafana/multitenancy-squad
/pkg/services/querylibrary/ @grafana/multitenancy-squad
/pkg/services/export/ @grafana/multitenancy-squad
/pkg/infra/filestorage/ @grafana/multitenancy-squad
/pkg/util/converter/ @grafana/multitenancy-squad
# Alerting
/pkg/services/ngalert/ @grafana/alerting-squad-backend
@@ -271,8 +276,8 @@
/public/app/features/alerting/ @grafana/alerting-squad-frontend
# Library Services
/pkg/services/libraryelements/ @grafana/grafana-frontend-platform
/pkg/services/librarypanels/ @grafana/grafana-frontend-platform
/pkg/services/libraryelements/ @grafana/user-essentials
/pkg/services/librarypanels/ @grafana/user-essentials
# Plugins
/pkg/api/pluginproxy/ @grafana/plugins-platform-backend
@@ -283,32 +288,30 @@
/pkg/services/pluginsintegration/ @grafana/plugins-platform-backend
/pkg/plugins/pfs/ @grafana/plugins-platform-backend @grafana/grafana-as-code
/pkg/tsdb/testdatasource/ @grafana/plugins-platform-backend
/pkg/services/pluginsintegration/pluginsettings/ @grafana/plugins-platform-backend
# Dashboard previews / crawler (behind feature flag)
/pkg/services/thumbs/ @grafana/grafana-app-platform-squad
/pkg/services/thumbs/ @grafana/multitenancy-squad
# Backend code docs
/contribute/backend/ @grafana/backend-platform
/crowdin.yml @grafana/grafana-frontend-platform
/public/locales/ @grafana/grafana-frontend-platform
/public/app/core/internationalization/ @grafana/grafana-frontend-platform
/e2e/ @grafana/grafana-frontend-platform
/crowdin.yml @grafana/user-essentials
/public/locales/ @grafana/user-essentials
/public/app/core/internationalization/ @grafana/user-essentials
/e2e/ @grafana/user-essentials
/e2e/cloud-plugins-suite/ @grafana/partner-plugins
/packages/ @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/dataviz-squad
/packages/grafana-e2e-selectors/ @grafana/grafana-frontend-platform
/packages/grafana-e2e/ @grafana/grafana-frontend-platform
/packages/ @grafana/user-essentials @grafana/plugins-platform-frontend @grafana/grafana-bi-squad
/packages/grafana-e2e-selectors/ @grafana/user-essentials
/packages/grafana-e2e/ @grafana/user-essentials
/packages/grafana-toolkit/ @grafana/plugins-platform-frontend
/packages/grafana-ui/.storybook/ @grafana/plugins-platform-frontend
/packages/grafana-ui/src/components/ @grafana/grafana-frontend-platform
/packages/grafana-ui/src/components/DateTimePickers/ @grafana/grafana-frontend-platform
/packages/grafana-ui/src/components/GraphNG/ @grafana/dataviz-squad
/packages/grafana-ui/src/components/DateTimePickers/ @grafana/user-essentials
/packages/grafana-ui/src/components/GraphNG/ @grafana/grafana-bi-squad
/packages/grafana-ui/src/components/Logs/ @grafana/observability-logs
/packages/grafana-ui/src/components/Table/ @grafana/grafana-bi-squad
/packages/grafana-ui/src/components/TimeSeries/ @grafana/dataviz-squad
/packages/grafana-ui/src/components/uPlot/ @grafana/dataviz-squad
/packages/grafana-ui/src/components/TimeSeries/ @grafana/grafana-bi-squad
/packages/grafana-ui/src/components/uPlot/ @grafana/grafana-bi-squad
/packages/grafana-ui/src/utils/storybook/ @grafana/plugins-platform-frontend
/packages/grafana-data/src/**/*logs* @grafana/observability-logs
/plugins-bundled/ @grafana/plugins-platform-frontend
@@ -328,7 +331,7 @@ tsconfig.json @grafana/frontend-ops
/.yarn @grafana/frontend-ops
/.yarnrc.yml @grafana/frontend-ops
/yarn.lock @grafana/frontend-ops
/.linguirc @grafana/grafana-frontend-platform
/.linguirc @grafana/user-essentials
/babel.config.json @grafana/frontend-ops
lerna.json @grafana/frontend-ops
/.prettierrc.js @grafana/frontend-ops
@@ -342,100 +345,99 @@ lerna.json @grafana/frontend-ops
# public folder
/public/app/core/ @grafana/grafana-frontend-platform
/public/app/core/components/TimePicker/ @grafana/grafana-frontend-platform
/public/app/core/components/Layers/ @grafana/dataviz-squad
/public/app/features/all.ts @grafana/grafana-frontend-platform
/public/app/core/ @grafana/user-essentials
/public/app/core/components/TimePicker/ @grafana/user-essentials
/public/app/core/components/Layers/ @grafana/grafana-edge-squad
/public/app/features/all.ts @grafana/user-essentials
/public/app/features/admin/ @grafana/grafana-authnz-team
/public/app/features/annotations/ @grafana/grafana-frontend-platform
/public/app/features/api-keys/ @grafana/grafana-frontend-platform
/public/app/features/canvas/ @grafana/dataviz-squad
/public/app/features/commandPalette/ @grafana/grafana-frontend-platform
/public/app/features/annotations/ @grafana/user-essentials
/public/app/features/api-keys/ @grafana/user-essentials
/public/app/features/canvas/ @grafana/grafana-edge-squad
/public/app/features/commandPalette/ @grafana/user-essentials
/public/app/features/comments/ @grafana/grafana-edge-squad
/public/app/features/connections/ @grafana/plugins-platform-frontend
/public/app/features/correlations/ @grafana/explore-squad
/public/app/features/dashboard/ @grafana/dashboards-squad
/public/app/features/datasources/ @grafana/plugins-platform-frontend
/public/app/features/dimensions/ @grafana/dataviz-squad
/public/app/features/dataframe-import/ @grafana/grafana-bi-squad
/public/app/features/datasource-drawer/ @grafana/grafana-bi-squad
/public/app/features/datasources/ @grafana/user-essentials
/public/app/features/dimensions/ @grafana/grafana-edge-squad
/public/app/features/explore/ @grafana/explore-squad
/public/app/features/expressions/ @grafana/observability-metrics
/public/app/features/folders/ @grafana/grafana-frontend-platform
/public/app/features/inspector/ @grafana/grafana-frontend-platform
/public/app/features/invites/ @grafana/grafana-frontend-platform
/public/app/features/geo/ @grafana/dataviz-squad
/public/app/features/library-panels/ @grafana/grafana-frontend-platform
/public/app/features/folders/ @grafana/user-essentials
/public/app/features/inspector/ @grafana/user-essentials
/public/app/features/invites/ @grafana/user-essentials
/public/app/features/geo/ @grafana/grafana-edge-squad
/public/app/features/library-panels/ @grafana/user-essentials
/public/app/features/logs/ @grafana/observability-logs
/public/app/features/live/ @grafana/grafana-app-platform-squad
/public/app/features/live/ @grafana/multitenancy-squad
/public/app/features/manage-dashboards/ @grafana/dashboards-squad
/public/app/features/notifications/ @grafana/grafana-frontend-platform
/public/app/features/org/ @grafana/grafana-frontend-platform
/public/app/features/panel/ @grafana/grafana-frontend-platform
/public/app/features/notifications/ @grafana/user-essentials
/public/app/features/org/ @grafana/user-essentials
/public/app/features/panel/ @grafana/user-essentials
/public/app/features/playlist/ @grafana/dashboards-squad
/public/app/features/plugins/ @grafana/plugins-platform-frontend
/public/app/features/profile/ @grafana/grafana-frontend-platform
/public/app/features/profile/ @grafana/user-essentials
/public/app/features/runtime/ @ryantxu
/public/app/features/query/ @grafana/dashboards-squad
/public/app/features/sandbox/ @grafana/grafana-frontend-platform
/public/app/features/query-library/ @grafana/grafana-edge-squad
/public/app/features/sandbox/ @grafana/user-essentials
/public/app/features/scenes/ @grafana/dashboards-squad
/public/app/features/search/ @grafana/grafana-frontend-platform
/public/app/features/search/ @grafana/user-essentials
/public/app/features/serviceaccounts/ @grafana/grafana-authnz-team
/public/app/features/storage/ @grafana/grafana-app-platform-squad
/public/app/features/storage/ @grafana/multitenancy-squad
/public/app/features/teams/ @grafana/grafana-authnz-team
/public/app/features/templating/ @grafana/dashboards-squad
/public/app/features/transformers/ @grafana/dataviz-squad
/public/app/features/transformers/ @grafana/grafana-edge-squad
/public/app/features/users/ @grafana/grafana-authnz-team
/public/app/features/variables/ @grafana/dashboards-squad
/public/app/plugins/panel/alertGroups/ @grafana/alerting-squad-frontend
/public/app/plugins/panel/alertlist/ @grafana/alerting-squad-frontend
/public/app/plugins/panel/annolist/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/barchart/ @grafana/dataviz-squad
/public/app/plugins/panel/bargauge/ @grafana/grafana-bi-squad
/public/app/plugins/panel/dashlist/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/annolist/ @grafana/user-essentials
/public/app/plugins/panel/barchart/ @grafana/grafana-bi-squad
/public/app/plugins/panel/bargauge/ @grafana/user-essentials
/public/app/plugins/panel/dashlist/ @grafana/user-essentials
/public/app/plugins/panel/debug/ @ryantxu
/public/app/plugins/panel/gauge/ @grafana/grafana-bi-squad
/public/app/plugins/panel/gettingstarted/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/graph/ @grafana/dataviz-squad
/public/app/plugins/panel/heatmap/ @grafana/dataviz-squad
/public/app/plugins/panel/histogram/ @grafana/dataviz-squad
/public/app/plugins/panel/gauge/ @grafana/user-essentials
/public/app/plugins/panel/gettingstarted/ @grafana/user-essentials
/public/app/plugins/panel/graph/ @grafana/user-essentials
/public/app/plugins/panel/heatmap/ @grafana/grafana-bi-squad
/public/app/plugins/panel/histogram/ @grafana/grafana-bi-squad
/public/app/plugins/panel/logs/ @grafana/observability-logs
/public/app/plugins/panel/nodeGraph/ @grafana/observability-traces-and-profiling
/public/app/plugins/panel/traces/ @grafana/observability-traces-and-profiling
/public/app/plugins/panel/flamegraph/ @grafana/observability-traces-and-profiling
/public/app/plugins/panel/piechart/ @grafana/grafana-bi-squad
/public/app/plugins/panel/state-timeline/ @grafana/dataviz-squad
/public/app/plugins/panel/status-history/ @grafana/dataviz-squad
/public/app/plugins/panel/state-timeline/ @grafana/grafana-bi-squad
/public/app/plugins/panel/status-history/ @grafana/grafana-bi-squad
/public/app/plugins/panel/table/ @grafana/grafana-bi-squad
/public/app/plugins/panel/table-old/ @grafana/grafana-bi-squad
/public/app/plugins/panel/timeseries/ @grafana/dataviz-squad
/public/app/plugins/panel/geomap/ @grafana/dataviz-squad
/public/app/plugins/panel/canvas/ @grafana/dataviz-squad
/public/app/plugins/panel/candlestick/ @grafana/dataviz-squad
/public/app/plugins/panel/icon/ @grafana/dataviz-squad
/public/app/plugins/panel/live/ @grafana/grafana-app-platform-squad
/public/app/plugins/panel/news/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/stat/ @grafana/grafana-bi-squad
/public/app/plugins/panel/text/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/welcome/ @grafana/grafana-frontend-platform
/public/app/plugins/panel/xychart/ @grafana/dataviz-squad
/public/app/plugins/panel/timeseries/ @grafana/grafana-bi-squad
/public/app/plugins/panel/geomap/ @grafana/grafana-edge-squad
/public/app/plugins/panel/canvas/ @grafana/grafana-edge-squad
/public/app/plugins/panel/candlestick/ @grafana/grafana-edge-squad
/public/app/plugins/panel/icon/ @grafana/grafana-edge-squad
/public/app/plugins/panel/live/ @grafana/multitenancy-squad
/public/app/plugins/panel/news/ @grafana/user-essentials
/public/app/plugins/panel/stat/ @grafana/user-essentials
/public/app/plugins/panel/text/ @grafana/user-essentials
/public/app/plugins/panel/welcome/ @grafana/user-essentials
/public/app/plugins/panel/xychart/ @grafana/grafana-bi-squad
/public/app/plugins/sdk.ts @grafana/plugins-platform-frontend
/public/app/polyfills/old-mediaquerylist.ts @grafana/grafana-frontend-platform
/public/app/routes/ @grafana/grafana-frontend-platform
/public/app/store/ @grafana/grafana-frontend-platform
/public/app/types/ @grafana/grafana-frontend-platform
/public/app/polyfills/old-mediaquerylist.ts @grafana/user-essentials
/public/app/routes/ @grafana/user-essentials
/public/app/store/ @grafana/user-essentials
/public/app/types/ @grafana/user-essentials
/public/dashboards/ @grafana/dashboards-squad
/public/fonts/ @grafana/alerting-squad-frontend
/public/emails/ @grafana/grafana-frontend-platform
/public/emails/ @grafana/user-essentials
/public/gazetteer/ @ryantxu
/public/img/ @grafana/grafana-frontend-platform
/public/lib/ @grafana/grafana-frontend-platform
/public/lib/monaco-languages/kusto.ts @grafana/partner-datasources
/public/img/ @grafana/user-essentials
/public/lib/ @grafana/user-essentials
/public/maps/ @ryantxu
/public/robots.txt @grafana/frontend-ops
/public/sass/ @grafana/grafana-frontend-platform
/public/test/ @grafana/grafana-frontend-platform
/public/testdata/ @grafana/grafana-frontend-platform
/public/views/ @grafana/grafana-frontend-platform
/public/sass/ @grafana/user-essentials
/public/test/ @grafana/user-essentials
/public/testdata/ @grafana/user-essentials
/public/views/ @grafana/user-essentials
/public/app/features/explore/Logs.tsx @grafana/observability-logs
/public/app/features/explore/LogsContainer.tsx @grafana/observability-logs
@@ -443,13 +445,14 @@ lerna.json @grafana/frontend-ops
/public/app/features/explore/TraceView/ @grafana/observability-traces-and-profiling
/public/api-merged.json @grafana/backend-platform
/public/api-spec.json @grafana/backend-platform
/public/openapi3.json @grafana/backend-platform
/public/app/angular/ @torkelo
/public/app/app.ts @grafana/frontend-ops
/public/app/dev.ts @grafana/frontend-ops
/public/app/index.ts @grafana/frontend-ops
/public/app/AppWrapper.tsx @grafana/frontend-ops
/public/app/partials/ @grafana/grafana-frontend-platform
/public/app/partials/ @grafana/user-essentials
@@ -458,14 +461,14 @@ lerna.json @grafana/frontend-ops
/scripts/check-breaking-changes.sh @grafana/plugins-platform-frontend
/scripts/ci-* @grafana/grafana-delivery
/scripts/circle-* @grafana/grafana-delivery
/scripts/ci-frontend-metrics.sh @grafana/grafana-frontend-platform @grafana/plugins-platform-frontend @grafana/grafana-bi-squad
/scripts/cli/ @grafana/grafana-frontend-platform
/scripts/ci-frontend-metrics.sh @grafana/user-essentials @grafana/plugins-platform-frontend @grafana/grafana-bi-squad
/scripts/cli/ @grafana/user-essentials
/scripts/clean-git-or-error.sh @grafana/grafana-as-code
/scripts/grafana-server/ @grafana/grafana-frontend-platform
/scripts/grafana-server/ @grafana/user-essentials
/scripts/helpers/ @grafana/grafana-delivery
/scripts/import_many_dashboards.sh @torkelo
/scripts/mixin-check.sh @bergquist
/scripts/openapi3/ @grafana/grafana-operator-experience-squad
/scripts/openapi3/ @grafana/grafana-partnerships-team
/scripts/prepare-packagejson.js @grafana/frontend-ops
/scripts/protobuf-check.sh @grafana/plugins-platform-backend
/scripts/stripnulls.sh @grafana/grafana-as-code
@@ -477,9 +480,9 @@ lerna.json @grafana/frontend-ops
/scripts/verify-repo-update/ @grafana/grafana-delivery
/scripts/webpack/ @grafana/frontend-ops
/scripts/generate-a11y-report.sh @grafana/grafana-frontend-platform
.pa11yci.conf.js @grafana/grafana-frontend-platform
.pa11yci-pr.conf.js @grafana/grafana-frontend-platform
/scripts/generate-a11y-report.sh @grafana/user-essentials
.pa11yci.conf.js @grafana/user-essentials
.pa11yci-pr.conf.js @grafana/user-essentials
.betterer.results @joshhunt
.betterer.ts @joshhunt
@@ -491,11 +494,11 @@ lerna.json @grafana/frontend-ops
# Core datasources
/public/app/plugins/datasource/dashboard/ @grafana/dashboards-squad
/public/app/plugins/datasource/cloudwatch/ @grafana/aws-datasources
/public/app/plugins/datasource/cloudwatch/ @grafana/aws-plugins
/public/app/plugins/datasource/elasticsearch/ @grafana/observability-logs
/public/app/plugins/datasource/grafana/ @grafana/grafana-frontend-platform
/public/app/plugins/datasource/grafana/ @grafana/user-essentials
/public/app/plugins/datasource/testdata/ @grafana/plugins-platform-frontend
/public/app/plugins/datasource/azuremonitor/ @grafana/partner-plugins
/public/app/plugins/datasource/grafana-azure-monitor-datasource/ @grafana/partner-plugins
/public/app/plugins/datasource/graphite/ @grafana/observability-metrics
/public/app/plugins/datasource/influxdb/ @grafana/observability-metrics
/public/app/plugins/datasource/jaeger/ @grafana/observability-traces-and-profiling
@@ -530,6 +533,7 @@ lerna.json @grafana/frontend-ops
/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/loginattempt/ @grafana/grafana-authnz-team
/pkg/services/oauthtoken/ @grafana/grafana-authnz-team
/pkg/services/serviceaccounts/ @grafana/grafana-authnz-team
@@ -539,9 +543,9 @@ lerna.json @grafana/frontend-ops
/public/app/features/support-bundles/ @grafana/grafana-authnz-team
/pkg/services/supportbundles/ @grafana/grafana-authnz-team
# Grafana Operator Experience Team
/pkg/infra/httpclient/httpclientprovider/sigv4_middleware.go @grafana/grafana-operator-experience-squad
/pkg/infra/httpclient/httpclientprovider/sigv4_middleware_test.go @grafana/grafana-operator-experience-squad
# Grafana Partnerships Team
/pkg/infra/httpclient/httpclientprovider/sigv4_middleware.go @grafana/grafana-partnerships-team
/pkg/infra/httpclient/httpclientprovider/sigv4_middleware_test.go @grafana/grafana-partnerships-team
# Kind definitions
/kinds/dashboard @grafana/dashboards-squad
@@ -553,6 +557,8 @@ embed.go @grafana/grafana-as-code
/pkg/cuectx/ @grafana/grafana-as-code
/pkg/registry/ @grafana/grafana-as-code
/pkg/codegen/ @grafana/grafana-as-code
/pkg/kindsys/ @grafana/grafana-as-code
/pkg/kindsys/kindcat_custom.cue @grafana/apps-platform-core
/pkg/kinds/*/*_gen.go @grafana/grafana-as-code
/pkg/registry/corekind/ @grafana/grafana-as-code
/public/app/plugins/*gen.go @grafana/grafana-as-code
@@ -565,26 +571,24 @@ embed.go @grafana/grafana-as-code
/.github/bot.md @torkelo
/.github/commands.json @torkelo
/.github/dependabot.yml @grafana/frontend-ops
/.github/issue-opened.json @grafana/grafana-community-support
/.github/metrics-collector.json @torkelo
/.github/pr-checks.json @marefr
/.github/pr-commands.json @marefr
/.github/renovate.json5 @grafana/frontend-ops
/.github/teams.yml @armandgrillet
/.github/workflows/auto-milestone.yml @grafana/grafana-delivery
/.github/workflows/backport.yml @grafana/grafana-delivery
/.github/workflows/bump-version.yml @grafana/grafana-delivery
/.github/workflows/close-milestone.yml @grafana/grafana-delivery
/.github/workflows/cloud-data-sources-code-coverage.yml @grafana/partner-plugins @grafana/aws-datasources
/.github/workflows/cloud-data-sources-code-coverage.yml @grafana/partner-plugins @grafana/aws-plugins
/.github/workflows/codeowners-validator.yml @tolzhabayev
/.github/workflows/codeql-analysis.yml @DanCech
/.github/workflows/commands.yml @torkelo
/.github/workflows/detect-breaking-changes-* @grafana/plugins-platform-frontend
/.github/workflows/doc-validator.yml @grafana/docs-grafana
/.github/workflows/enterprise-pr-check.yml @grafana/grafana-release-eng
/.github/workflows/epic-add-to-platform-ux-parent-project.yml @meanmina
/.github/workflows/github-release.yml @torkelo
/.github/workflows/issue-labeled.yml @armandgrillet
/.github/workflows/issue-opened.yml @grafana/grafana-community-support
/.github/workflows/metrics-collector.yml @torkelo
/.github/workflows/milestone.yml @marefr
/.github/workflows/ox-code-coverage.yml @grafana/explore-squad
@@ -594,18 +598,15 @@ embed.go @grafana/grafana-as-code
/.github/workflows/pr-codeql-analysis-python.yml @DanCech
/.github/workflows/pr-commands-closed.yml @tolzhabayev
/.github/workflows/pr-commands.yml @marefr
/.github/workflows/pr-patch-check.yml @grafana/grafana-delivery
/.github/workflows/sync-mirror.yml @grafana/grafana-delivery
/.github/workflows/publish-technical-documentation-next.yml @grafana/docs-grafana
/.github/workflows/publish-technical-documentation-release.yml @grafana/docs-grafana
/.github/workflows/remove-milestone.yml @grafana/grafana-frontend-platform
/.github/workflows/remove-milestone.yml @grafana/user-essentials
/.github/workflows/sbom-report.yml @grafana/security-team
/.github/workflows/scripts/json-file-to-job-output.js @grafana/plugins-platform-frontend
/.github/workflows/scripts/pr-get-job-link.js @grafana/plugins-platform-frontend
/.github/workflows/stale.yml @grafana/grafana-frontend-platform
/.github/workflows/stale.yml @grafana/user-essentials
/.github/workflows/update-changelog.yml @grafana/grafana-delivery
/.github/workflows/snyk.yml @grafana/security-team
/.github/workflows/create-security-patch-from-security-mirror.yml @grafana/grafana-delivery
# Conf
/conf/defaults.ini @torkelo

View File

@@ -1,17 +0,0 @@
---
name: Chore
about: Create an issue for a chore needing completion
labels: 'type: chore'
---
<!--
Please use this template to create your chore issue. You can use this template if you spot an out-of-date README, discover a misspelling, or happen upon a deeply nested 7-layer for-loop that could be better handled another way. Please use this template for your non-bug related fixes/updates/refactors.
- Questions should be posted to: https://community.grafana.com
- Use query inspector to troubleshoot issues: https://bit.ly/2XNF6YS
- How to record and attach gif: https://bit.ly/2Mi8T6K
-->
**What is the chore?**:
**Is there anything else we need to know?**:

View File

@@ -2,7 +2,7 @@ blank_issues_enabled: false
contact_links:
- name: Feature Request
url: https://github.com/grafana/grafana/discussions/new
about: Discuss ideas for new features or enhancements
about: Discuss ideas for new features of changes
- name: Questions & Help
url: https://community.grafana.com
about: Please ask and answer questions here.

View File

@@ -42,9 +42,5 @@ Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)"
Fixes #
**Special notes for your reviewer:**
**Special notes for your reviewer**:
Please check that:
- [ ] It works as expected from a user's perspective.
- [ ] If this is a pre-GA feature, it is behind a feature toggle.
- [ ] The docs are updated, and if this is a [notable improvement](https://grafana.com/docs/writers-toolkit/writing-guide/contribute-release-notes/#how-to-determine-if-content-belongs-in-a-whats-new-document), it's added to our [What's New](https://grafana.com/docs/writers-toolkit/writing-guide/contribute-release-notes/) doc.

View File

@@ -11,7 +11,7 @@
"type":"comment",
"name":"duplicate",
"allowUsers":[],
"action":"close",
"action":"updateLabels",
"addLabel":"type/duplicate"
},
{
@@ -221,10 +221,10 @@
},
{
"type": "label",
"name": "team/operator-experience",
"name": "team/grafana-partners",
"action": "addToProject",
"addToProject": {
"url": "https://github.com/orgs/grafana/projects/336"
"url": "https://github.com/orgs/grafana/projects/87"
}
},
{

View File

@@ -1,9 +0,0 @@
[
{
"type": "author",
"memberOf": { "org": "grafana" },
"noLabels": true,
"addLabel": "internal",
"comment": " please add one or more appropriate labels. Here are some tips:\r\n\r\n- if you are making an issue, TODO, or reminder for yourself or your team, please add one label that best describes the product or feature area. Please also add the issue to your project board. :rocket:\r\n\r\n- if you are making an issue for any other reason (docs typo, you found a bug, etc), please add at least one label that best describes the product or feature that you are discussing (e.g. `area/alerting`, `datasource/loki`, `type/docs`, `type/bug`, etc). [Our issue triage](https://github.com/grafana/grafana/blob/main/ISSUE_TRIAGE.md#3-categorizing-an-issue) doc also provides additional guidance on labeling. :rocket:\r\n\r\n Thank you! :heart:"
}
]

View File

@@ -2,23 +2,23 @@
"queries": [
{
"name": "type_bug",
"query": "label:\"type/bug\" is:issue is:open"
"query": "label:\"type/bug\" is:open"
},
{
"name": "type_docs",
"query": "label:\"type/docs\" is:issue is:open"
"query": "label:\"type/docs\" is:open"
},
{
"name": "needs_investigation",
"query": "label:\"needs investigation\" is:issue is:open"
"query": "label:\"needs investigation\" is:open"
},
{
"name": "needs_more_info",
"query": "label:\"needs more info\" is:issue is:open"
"query": "label:\"needs more info\" is:open"
},
{
"name": "triage_needs_confirmation",
"query": "label:\"triage/needs-confirmation\" is:issue is:open"
"query": "label:\"triage/needs-confirmation\" is:open"
},
{
"name": "unlabeled",
@@ -26,7 +26,7 @@
},
{
"name": "open_prs",
"query": "is:open is:pull-request"
"query": "is:open is:pr"
}
]
}

View File

@@ -46,4 +46,4 @@
},
"targetUrl": "https://github.com/grafana/grafana/blob/main/contribute/merge-pull-request.md#include-in-changelog-and-release-notes"
}
]
]

View File

@@ -83,7 +83,7 @@
},
{
"type": "changedfiles",
"matches": [ "public/app/plugins/datasource/azuremonitor/**/*", "pkg/tsdb/azuremonitor/**/*"],
"matches": [ "public/app/plugins/datasource/grafana-azure-monitor-datasource/**/*", "pkg/tsdb/azuremonitor/**/*"],
"action": "updateLabel",
"addLabel": "datasource/Azure"
},
@@ -190,13 +190,5 @@
"ignoreList": ["renovate[bot]","dependabot[bot]"],
"action": "updateLabel",
"addLabel": "pr/external"
},
{
"type":"label",
"name":"type/docs",
"action":"addToProject",
"addToProject":{
"url":"https://github.com/orgs/grafana/projects/69"
}
}
]

View File

@@ -10,10 +10,12 @@
"history", // we should bump this together with react-router-dom
"@mdx-js/react", // storybook peer-depends on its 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-redux", // react-beautiful-dnd depends on react-redux 7.x, we need to update that one first
"react-router-dom", // we should bump this together with history
"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
"ora", // we should bump this once we move to esm modules
@@ -24,7 +26,6 @@
"@sentry/utils",
// dep updates blocked by React 18
"@testing-library/dom",
"@testing-library/react",
"@types/react",
"@types/react-dom",
@@ -83,15 +84,7 @@
"matchPackagePrefixes": [
"@visx/"
]
},
{
"groupName": "uLibraries",
"matchPackageNames": [
"@leeoniya/ufuzzy",
"uplot"
],
"reviewers": ["leeoniya"],
},
}
],
"pin": {
"enabled": false

View File

@@ -1,24 +0,0 @@
name: Auto-milestone
on:
pull_request:
types:
- opened
- reopened
- closed
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run auto-milestone
uses: grafana/grafana-github-actions-go/auto-milestone@main
with:
pr: ${{ github.event.pull_request.number }}
token: ${{ steps.generate_token.outputs.token }}

View File

@@ -17,16 +17,10 @@ jobs:
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run backport
uses: ./actions/backport
with:
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
token: ${{ steps.generate_token.outputs.token }}
token: ${{secrets.GH_BOT_ACCESS_TOKEN}}
labelsToAdd: "backport,no-changelog"
title: "[{{base}}] {{originalTitle}}"

View File

@@ -6,12 +6,12 @@ on:
description: 'Needs to match, exactly, the name of a milestone. The version to be released please respect: major.minor.patch or major.minor.patch-beta<number> format. example: 7.4.3 or 7.4.3-beta1'
required: true
env:
YARN_ENABLE_IMMUTABLE_INSTALLS: false
YARN_ENABLE_IMMUTABLE_INSTALLS: false
jobs:
main:
runs-on: ubuntu-latest
steps:
# This is a basic workflow to help you get started with Actions
# This is a basic workflow to help you get started with Actions
- uses: actions-ecosystem/action-regex-match@v2.0.2
if: ${{ github.event.inputs.version != '' }}
id: regex-match
@@ -68,14 +68,8 @@ jobs:
node-version: '16'
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run bump version (manually invoked)
- name: Run bump version (manually invoked)
uses: ./actions/bump-version
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}

View File

@@ -11,7 +11,9 @@ on:
description: Needs to match, exactly, the name of a milestone
required: true
type: string
secrets:
token:
required: true
jobs:
main:
runs-on: ubuntu-latest
@@ -24,20 +26,14 @@ jobs:
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Close milestone (manually invoked)
if: ${{ github.event.inputs.version != '' }}
uses: ./actions/close-milestone
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
- name: Close milestone (workflow invoked)
if: ${{ inputs.version_call != '' }}
uses: ./actions/close-milestone
with:
version_call: ${{ inputs.version_call }}
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.token }}

View File

@@ -5,7 +5,7 @@ on:
- 'pkg/tsdb/azuremonitor/**'
- 'pkg/tsdb/cloudwatch/**'
- 'pkg/tsdb/cloudmonitoring/**'
- 'public/app/plugins/datasource/azuremonitor/**'
- 'public/app/plugins/datasource/grafana-azure-monitor-datasource/**'
- 'public/app/plugins/datasource/cloudwatch/**'
- 'public/app/plugins/datasource/cloud-monitoring/**'
branches-ignore:
@@ -16,5 +16,5 @@ jobs:
workflow-call:
uses: grafana/code-coverage/.github/workflows/code-coverage.yml@v0.1.18
with:
frontend-path-regexp: public\/app\/plugins\/datasource\/(azuremonitor|cloud-monitoring|cloudwatch)
frontend-path-regexp: public\/app\/plugins\/datasource\/(grafana-azure-monitor-datasource|cloud-monitoring|cloudwatch)
backend-path-regexp: pkg\/tsdb\/(azuremonitor|cloudmonitoring|cloudwatch)

View File

@@ -44,7 +44,7 @@ jobs:
name: Set go version
uses: actions/setup-go@v3
with:
go-version: '1.20.10'
go-version: '1.19.2'
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@@ -22,5 +22,5 @@ jobs:
uses: ./actions/commands
with:
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
token: ${{secrets.ISSUE_COMMANDS_TOKEN}}
token: ${{secrets.GH_BOT_ACCESS_TOKEN}}
configPath: commands

View File

@@ -1,28 +0,0 @@
# Owned by grafana-delivery-squad
# Intended to be dropped into the base repo (Ex: grafana/grafana) for use in the security mirror.
name: Create security patch
run-name: create-security-patch
on:
pull_request:
types:
- opened
- reopened
- synchronize
branches:
- "main"
- "v*.*.*"
# This is run before the pull request has been merged, so we'll run against the src branch
jobs:
trigger_downstream_create_security_patch:
concurrency: create-patch-${{ github.ref_name }}
uses: grafana/security-patch-actions/.github/workflows/create-patch.yml@main
if: github.repository == 'grafana/grafana-security-mirror'
with:
repo: "${{ github.repository }}"
src_ref: "${{ github.head_ref }}" # this is the source branch name, Ex: "feature/newthing"
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
patch_repo: "grafana/grafana-security-patches"
patch_prefix: "${{ github.event.pull_request.number }}"
secrets: inherit

View File

@@ -31,7 +31,7 @@ jobs:
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Restore yarn cache
uses: actions/cache@v3.3.1
uses: actions/cache@v3.0.11
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
@@ -79,7 +79,7 @@ jobs:
run: echo "dir=$(yarn config get cacheFolder)" >> $GITHUB_OUTPUT
- name: Restore yarn cache
uses: actions/cache@v3.3.1
uses: actions/cache@v3.0.11
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}

View File

@@ -0,0 +1,26 @@
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_sha": "${{ github.event.pull_request.head.sha }}", "source_branch": "${{ github.head_ref }}", "target_branch": "${{ github.base_ref }}", "pr_number": "${{ github.event.number }}"}'

View File

@@ -19,7 +19,6 @@ concurrency:
group: issue-add-to-parent-project-${{ github.event.number }}
jobs:
main:
if: contains(github.event.issue.labels.*.name, 'type/epic')
runs-on: ubuntu-latest
steps:
- name: Check if issue is in child or parent projects

View File

@@ -3,7 +3,7 @@ on:
workflow_dispatch:
inputs:
version:
required: true
required: true
description: Needs to match, exactly, the name of a milestone (NO v prefix)
jobs:
main:
@@ -14,17 +14,11 @@ jobs:
with:
repository: "grafana/grafana-github-actions"
path: ./actions
ref: main
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run github release action
uses: ./actions/github-release
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{secrets.GH_BOT_ACCESS_TOKEN}}
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}

View File

@@ -39,7 +39,7 @@ jobs:
- name: "Add to GitHub board"
if: ${{ env.BOARD != 'null' }}
uses: leonsteinhaeuser/project-beta-automations@v2.1.0
uses: leonsteinhaeuser/project-beta-automations@v1.3.0
with:
project_id: ${{ env.BOARD }}
organization: grafana

View File

@@ -1,28 +0,0 @@
name: Run commands when issues are opened
on:
issues:
types: [opened]
concurrency:
group: issue-opened-${{ github.event.issue.number }}
jobs:
main:
runs-on: ubuntu-latest
steps:
- name: Checkout Actions
uses: actions/checkout@v3
with:
repository: "grafana/grafana-github-actions"
path: ./actions
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
# give issue-openers a chance to add labels after submit
- name: Sleep for 2 minutes
run: sleep 2m
shell: bash
- name: Run Commands
uses: ./actions/commands
with:
metricsWriteAPIKey: ${{secrets.GRAFANA_MISC_STATS_API_KEY}}
token: ${{secrets.ISSUE_COMMANDS_TOKEN}}
configPath: "issue-opened"

View File

@@ -10,10 +10,12 @@ jobs:
uses: grafana/grafana/.github/workflows/remove-milestone.yml@main
with:
version_call: ${{ github.event.inputs.version_input }}
secrets: inherit
secrets:
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
call-close-milestone:
uses: grafana/grafana/.github/workflows/close-milestone.yml@main
with:
version_call: ${{ github.event.inputs.version_input }}
secrets: inherit
needs: call-remove-milestone
secrets:
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
needs: call-remove-milestone

View File

@@ -23,7 +23,7 @@ jobs:
- name: Set go version
uses: actions/setup-go@v3
with:
go-version: '1.20.10'
go-version: '1.19.2'
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL

View File

@@ -2,7 +2,6 @@ name: PR automation
on:
pull_request_target:
types:
- labeled
- opened
- synchronize
concurrency:

View File

@@ -1,26 +0,0 @@
# Owned by grafana-delivery-squad
# Intended to be dropped into the base repo Ex: grafana/grafana
name: Check for patch conflicts
run-name: check-patch-conflicts-${{ github.base_ref }}-${{ github.head_ref }}
on:
pull_request:
types:
- opened
- reopened
- synchronize
branches:
- "main"
- "v*.*.*"
- "release-*"
# Since this is run on a pull request, we want to apply the patches intended for the
# target branch onto the source branch, to verify compatibility before merging.
jobs:
trigger_downstream_patch_check:
uses: grafana/security-patch-actions/.github/workflows/test-patches.yml@main
with:
src_repo: "${{ github.repository }}"
src_ref: "${{ github.head_ref }}" # this is the source branch name, Ex: "feature/newthing"
patch_repo: "${{ github.repository }}-security-patches"
patch_ref: "${{ github.base_ref }}" # this is the target branch name, Ex: "main"
secrets: inherit

View File

@@ -11,7 +11,9 @@ on:
description: Needs to match, exactly, the name of a milestone
required: true
type: string
secrets:
token:
required: true
jobs:
main:
runs-on: ubuntu-latest
@@ -24,20 +26,14 @@ jobs:
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Remove milestone from open issues (manually invoked)
if: ${{ github.event.inputs.version != '' }}
uses: ./actions/remove-milestone
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
- name: Remove milestone from open issues (workflow invoked)
if: ${{ inputs.version_call != '' }}
uses: ./actions/remove-milestone
with:
version_call: ${{ inputs.version_call }}
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.token }}

View File

@@ -1,14 +0,0 @@
name: Snyk Monitor Scanning
on:
release:
types: [published]
push:
branches:
- 'main'
workflow_dispatch:
jobs:
snyk-scan-ci:
uses: 'grafana/security-github-actions/.github/workflows/snyk_monitor.yml@main'
secrets:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

View File

@@ -1,25 +0,0 @@
# Owned by grafana-delivery-squad
# Intended to be dropped into the base repo, Ex: grafana/grafana
name: Sync to mirror
run-name: sync-to-mirror-${{ github.ref_name }}
on:
workflow_dispatch:
push:
branches:
- "main"
- "v*.*.*"
- "release-*"
# This is run after the pull request has been merged, so we'll run against the target branch
jobs:
trigger_downstream_patch_mirror:
concurrency: patch-mirror-${{ github.ref_name }}
uses: grafana/security-patch-actions/.github/workflows/mirror-branch-and-apply-patches.yml@main
if: github.repository == 'grafana/grafana'
with:
ref: "${{ github.ref_name }}" # this is the target branch name, Ex: "main"
src_repo: "${{ github.repository }}"
dest_repo: "${{ github.repository }}-security-mirror"
patch_repo: "${{ github.repository }}-security-patches"
secrets: inherit

View File

@@ -17,15 +17,8 @@ jobs:
ref: main
- name: Install Actions
run: npm install --production --prefix ./actions
- name: "Generate token"
id: generate_token
uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92
- name: Run update changelog (manually invoked)
uses: ./actions/update-changelog
with:
app_id: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_ID }}
private_key: ${{ secrets.GRAFANA_DELIVERY_BOT_APP_PEM }}
- name: Run update changelog (manually invoked)
uses: grafana/grafana-github-actions-go/update-changelog@main
with:
token: ${{ steps.generate_token.outputs.token }}
token: ${{ secrets.GH_BOT_ACCESS_TOKEN }}
metricsWriteAPIKey: ${{ secrets.GRAFANA_MISC_STATS_API_KEY }}
grafanabotForumKey: ${{ secrets.GRAFANABOT_FORUM_KEY }}

8
.gitignore vendored
View File

@@ -96,8 +96,6 @@ profile.cov
/pkg/cmd/grafana-server/grafana-server
/pkg/cmd/grafana-server/debug
/pkg/extensions/*
/pkg/build/cmd/artifactspage.go
/pkg/build/cmd/artifactspage.tmpl.html
/pkg/server/wireexts_enterprise.go
/pkg/cmd/grafana-cli/runner/wireexts_enterprise.go
!/pkg/extensions/main.go
@@ -185,12 +183,6 @@ public/locales/_build/
public/locales/*/*.js
public/locales/*/grafana_old.json
# Auto-generated swagger intermediate file
public/api-spec.json
deployment_tools_config.json
.betterer.cache
# Temporary file for backporting PRs
.pr-body.txt

View File

@@ -20,9 +20,6 @@ packages = ["io/ioutil"]
[[linters-settings.depguard.packages-with-error-message]]
"io/ioutil" = "Deprecated: As of Go 1.16, the same functionality is now provided by package io or package os, and those implementations should be preferred in new code. See the specific function documentation for details."
"gopkg.in/yaml.v2" = "Grafana packages are not allowed to depend on gopkg.in/yaml.v2 as gopkg.in/yaml.v3 is now available"
"github.com/pkg/errors" = "Deprecated: Go 1.13 supports the functionality provided by pkg/errors in the standard library."
"github.com/xorcare/pointer" = "Use pkg/util.Pointer instead, which is a generic one-liner alternative"
"github.com/gofrs/uuid" = "Use github.com/google/uuid instead, which we already depend on."
[linters-settings.gocritic]
enabled-checks = ["ruleguard"]

View File

@@ -80,7 +80,7 @@ var config = {
{
url: '${HOST}/?orgId=1',
wait: 500,
threshold: 3,
threshold: 0,
},
{
url: '${HOST}/d/O6f11TZWk/panel-tests-bar-gauge',
@@ -93,7 +93,7 @@ var config = {
url: '${HOST}/?orgId=1&search=open',
wait: 500,
rootElement: '.main-view',
threshold: 3,
threshold: 0,
},
{
url: '${HOST}/alerting/list',
@@ -107,7 +107,7 @@ var config = {
url: '${HOST}/datasources',
wait: 500,
rootElement: '.main-view',
threshold: 3,
threshold: 1,
},
{
url: '${HOST}/org/users',
@@ -125,7 +125,7 @@ var config = {
url: '${HOST}/plugins',
wait: 500,
rootElement: '.main-view',
threshold: 3,
threshold: 1,
},
{
url: '${HOST}/org',

View File

@@ -27,6 +27,7 @@ theme.light.generated.json
theme.dark.generated.json
# Generated Swagger API specs
public/api-spec.json
public/api-merged.json
public/openapi3.json

Binary file not shown.

807
.yarn/releases/yarn-3.3.0.cjs vendored Executable 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": "eslint",
"version": "8.34.0-sdk",
"version": "8.32.0-sdk",
"main": "./lib/api.js",
"type": "commonjs"
}

View File

@@ -2,5 +2,5 @@
# Manual changes might be lost!
integrations:
- vscode
- vim
- vscode

View File

@@ -3,33 +3,33 @@ enableTelemetry: false
nodeLinker: pnp
packageExtensions:
'@storybook/addon-docs@6.5.16':
'@storybook/addon-docs@6.5.12':
peerDependencies:
'@babel/core': ^7.0.0
'@storybook/manager-webpack5': 6.5.16
'@storybook/manager-webpack5': 6.5.12
'webpack': 5.74.0
'@storybook/addon-essentials@6.5.16':
'@storybook/addon-essentials@6.5.12':
peerDependencies:
'@storybook/components': 6.5.16
'@storybook/core-events': 6.5.16
'@storybook/manager-webpack5': 6.5.16
'@storybook/theming': 6.5.16
'@storybook/core-server@6.5.16':
'@storybook/components': 6.5.12
'@storybook/core-events': 6.5.12
'@storybook/manager-webpack5': 6.5.12
'@storybook/theming': 6.5.12
'@storybook/core-server@6.5.12':
peerDependencies:
'@babel/core': ^7.0.0
'@storybook/core@6.5.16':
'@storybook/core@6.5.12':
peerDependencies:
'@babel/core': ^7.0.0
'@storybook/manager-webpack5': 6.5.16
'@storybook/csf-tools@6.5.16':
'@storybook/manager-webpack5': 6.5.12
'@storybook/csf-tools@6.5.12':
peerDependencies:
'@babel/core': ^7.0.0
'@storybook/mdx2-csf@0.0.3':
dependencies:
'@babel/types': ^7.14.8
'@storybook/react@6.5.16':
'@storybook/react@6.5.12':
peerDependencies:
'@storybook/manager-webpack5': 6.5.16
'@storybook/manager-webpack5': 6.5.12
doctrine@3.0.0:
dependencies:
assert: 2.0.0
@@ -59,7 +59,7 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-outdated.cjs
spec: 'https://mskelton.dev/yarn-outdated/v2'
yarnPath: .yarn/releases/yarn-3.4.1.cjs
yarnPath: .yarn/releases/yarn-3.3.0.cjs
# Uncomment the following lines if you want to use Verdaccio local npm registry. Read more at packages/README.md
# npmScopes:
# grafana:

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,13 @@
# syntax=docker/dockerfile:1
ARG BASE_IMAGE=alpine:3.18.3
ARG JS_IMAGE=node:18-alpine3.18
ARG JS_PLATFORM=linux/amd64
ARG GO_IMAGE=golang:1.20.10-alpine3.18
ARG BASE_IMAGE=alpine:3.17
ARG JS_IMAGE=node:18-alpine3.17
ARG GO_IMAGE=golang:1.20.4-alpine3.17
ARG GO_SRC=go-builder
ARG JS_SRC=js-builder
FROM --platform=${JS_PLATFORM} ${JS_IMAGE} as js-builder
FROM ${JS_IMAGE} as js-builder
ENV NODE_OPTIONS=--max_old_space_size=8000
@@ -19,7 +18,7 @@ COPY .yarn .yarn
COPY packages packages
COPY plugins-bundled plugins-bundled
RUN yarn install --immutable
RUN yarn install
COPY tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js babel.config.json .linguirc ./
COPY public public
@@ -31,15 +30,9 @@ RUN yarn build
FROM ${GO_IMAGE} as go-builder
ARG COMMIT_SHA=""
ARG BUILD_BRANCH=""
ARG GO_BUILD_TAGS="oss"
ARG WIRE_TAGS="oss"
ARG BINGO="true"
# Install build dependencies
RUN if grep -i -q alpine /etc/issue; then \
apk add --no-cache gcc g++ make git; \
apk add --no-cache gcc g++ make; \
fi
WORKDIR /tmp/grafana
@@ -47,11 +40,9 @@ WORKDIR /tmp/grafana
COPY go.* ./
COPY .bingo .bingo
RUN go mod download
RUN if [[ "$BINGO" = "true" ]]; then \
go install github.com/bwplotka/bingo@latest && \
bingo get -v; \
fi
RUN go mod download && \
go install github.com/bwplotka/bingo@latest && \
bingo get
COPY embed.go Makefile build.go package.json ./
COPY cue.mod cue.mod
@@ -59,17 +50,13 @@ COPY kinds kinds
COPY local local
COPY packages/grafana-schema packages/grafana-schema
COPY public/app/plugins public/app/plugins
COPY public/api-merged.json public/api-merged.json
COPY public/api-spec.json public/api-spec.json
COPY pkg pkg
COPY scripts scripts
COPY conf conf
COPY .github .github
COPY LICENSE ./
ENV COMMIT_SHA=${COMMIT_SHA}
ENV BUILD_BRANCH=${BUILD_BRANCH}
RUN make build-go GO_BUILD_TAGS=${GO_BUILD_TAGS} WIRE_TAGS=${WIRE_TAGS}
RUN make build-go
FROM ${BASE_IMAGE} as tgz-builder
@@ -106,12 +93,12 @@ WORKDIR $GF_PATHS_HOME
# Install dependencies
RUN if grep -i -q alpine /etc/issue; then \
apk add --no-cache ca-certificates bash curl tzdata musl-utils && \
apk add --no-cache ca-certificates bash tzdata musl-utils && \
apk info -vv | sort; \
elif grep -i -q ubuntu /etc/issue; then \
DEBIAN_FRONTEND=noninteractive && \
apt-get update && \
apt-get install -y ca-certificates curl tzdata musl && \
apt-get install -y ca-certificates curl tzdata && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*; \
else \
@@ -166,7 +153,6 @@ RUN if [ ! $(getent group "$GF_GID") ]; then \
COPY --from=go-src /tmp/grafana/bin/grafana* /tmp/grafana/bin/*/grafana* ./bin/
COPY --from=js-src /tmp/grafana/public ./public
COPY --from=go-src /tmp/grafana/LICENSE ./
EXPOSE 3000

View File

@@ -99,7 +99,7 @@ The current team members are:
- Ryan McKinley ([Grafana Labs](https://grafana.com/))
- Sofia Papagiannaki ([Grafana Labs](https://grafana.com/))
- Stephanie Closson ([Grafana Labs](https://grafana.com/))
- Tobias Skarhed ([Grafana Labs](https://grafana.com/))
- Tobias Skarhed ([CERN](https://home.web.cern.ch/))
- Torkel Ödegaard ([Grafana Labs](https://grafana.com/))
- Utkarsh Bhatnagar ([Tinder](https://www.tinder.com/))
- Will Browne ([Grafana Labs](https://grafana.com/))

130
Makefile
View File

@@ -13,12 +13,9 @@ GO = go
GO_FILES ?= ./pkg/...
SH_FILES ?= $(shell find ./scripts -name *.sh)
GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev)
GO_BUILD_FLAGS += $(if $(GO_BUILD_DEV),-dev)
GO_BUILD_FLAGS += $(if $(GO_BUILD_TAGS),-build-tags=$(GO_BUILD_TAGS))
targets := $(shell echo '$(sources)' | tr "," " ")
GO_INTEGRATION_TESTS := $(shell find ./pkg -type f -name '*_test.go' -exec grep -l '^func TestIntegration' '{}' '+' | grep -o '\(.*\)/' | sort -u)
all: deps build
##@ Dependencies
@@ -36,68 +33,35 @@ node_modules: package.json yarn.lock ## Install node modules.
##@ Swagger
SPEC_TARGET = public/api-spec.json
ENTERPRISE_SPEC_TARGET = public/api-enterprise-spec.json
MERGED_SPEC_TARGET = public/api-merged.json
MERGED_SPEC_TARGET := public/api-merged.json
NGALERT_SPEC_TARGET = pkg/services/ngalert/api/tooling/api.json
$(NGALERT_SPEC_TARGET):
+$(MAKE) -C pkg/services/ngalert/api/tooling api.json
$(MERGED_SPEC_TARGET): swagger-oss-gen swagger-enterprise-gen $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs
$(MERGED_SPEC_TARGET): $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) $(SWAGGER) ## Merge generated and ngalert API specs
# known conflicts DsPermissionType, AddApiKeyCommand, Json, Duration (identical models referenced by both specs)
$(SWAGGER) mixin $(SPEC_TARGET) $(ENTERPRISE_SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
$(SWAGGER) mixin $(SPEC_TARGET) $(NGALERT_SPEC_TARGET) --ignore-conflicts -o $(MERGED_SPEC_TARGET)
swagger-oss-gen: $(SWAGGER) ## Generate API Swagger specification
@echo "re-generating swagger for OSS"
rm -f $(SPEC_TARGET)
$(SPEC_TARGET): $(SWAGGER) ## Generate API Swagger specification
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(SPEC_TARGET) \
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
-x "github.com/prometheus/alertmanager" \
-i pkg/api/swagger_tags.json \
--exclude-tag=alpha \
--exclude-tag=enterprise
--exclude-tag=alpha
# this file only exists if enterprise is enabled
ENTERPRISE_EXT_FILE = pkg/extensions/ext.go
ifeq ("$(wildcard $(ENTERPRISE_EXT_FILE))","") ## if enterprise is not enabled
swagger-enterprise-gen:
@echo "skipping re-generating swagger for enterprise: not enabled"
else
swagger-enterprise-gen: $(SWAGGER) ## Generate API Swagger specification
@echo "re-generating swagger for enterprise"
rm -f $(ENTERPRISE_SPEC_TARGET)
SWAGGER_GENERATE_EXTENSION=false $(SWAGGER) generate spec -m -w pkg/server -o $(ENTERPRISE_SPEC_TARGET) \
-x "github.com/grafana/grafana/pkg/services/ngalert/api/tooling/definitions" \
-x "github.com/prometheus/alertmanager" \
-i pkg/api/swagger_tags.json \
--exclude-tag=alpha \
--include-tag=enterprise
endif
swagger-api-spec: gen-go $(SPEC_TARGET) $(MERGED_SPEC_TARGET) validate-api-spec
swagger-gen: gen-go $(MERGED_SPEC_TARGET) swagger-validate
swagger-validate: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec
validate-api-spec: $(MERGED_SPEC_TARGET) $(SWAGGER) ## Validate API spec
$(SWAGGER) validate $(<)
swagger-clean:
rm -f $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
.PHONY: cleanup-old-git-hooks
cleanup-old-git-hooks:
./scripts/cleanup-husky.sh
.PHONY: lefthook-install
lefthook-install: cleanup-old-git-hooks $(LEFTHOOK) # install lefthook for pre-commit hooks
$(LEFTHOOK) install -f
.PHONY: lefthook-uninstall
lefthook-uninstall: $(LEFTHOOK)
$(LEFTHOOK) uninstall
clean-api-spec:
rm $(SPEC_TARGET) $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
##@ OpenAPI 3
OAPI_SPEC_TARGET = public/openapi3.json
openapi3-gen: swagger-gen ## Generates OpenApi 3 specs from the Swagger 2 already generated
openapi3-gen: swagger-api-spec ## Generates OpenApi 3 specs from the Swagger 2 already generated
$(GO) run scripts/openapi3/openapi3conv.go $(MERGED_SPEC_TARGET) $(OAPI_SPEC_TARGET)
##@ Building
@@ -108,9 +72,9 @@ gen-cue: ## Do all CUE/Thema code generation
go generate ./public/app/plugins/gen.go
go generate ./pkg/kindsys/report.go
gen-go: $(WIRE)
gen-go: $(WIRE) gen-cue
@echo "generate go files"
$(WIRE) gen -tags $(WIRE_TAGS) ./pkg/server
$(WIRE) gen -tags $(WIRE_TAGS) ./pkg/server ./pkg/cmd/grafana-cli/runner
fix-cue: $(CUE)
@echo "formatting cue files"
@@ -120,7 +84,7 @@ fix-cue: $(CUE)
gen-jsonnet:
go generate ./devenv/jsonnet
build-go: gen-go ## Build all Go binaries.
build-go: $(MERGED_SPEC_TARGET) gen-go ## Build all Go binaries.
@echo "build go files"
$(GO) run build.go $(GO_BUILD_FLAGS) build
@@ -162,39 +126,19 @@ test-go-unit: ## Run unit tests for backend with flags.
.PHONY: test-go-integration
test-go-integration: ## Run integration tests for backend with flags.
@echo "test backend integration tests"
$(GO) test -count=1 -run "^TestIntegration" -covermode=atomic -timeout=5m $(GO_INTEGRATION_TESTS)
.PHONY: test-go-integration-alertmanager
test-go-integration-alertmanager: ## Run integration tests for the remote alertmanager (config taken from the mimir_backend block).
@echo "test remote alertmanager integration tests"
$(GO) clean -testcache
AM_URL=http://localhost:8080 AM_TENANT_ID=test AM_PASSWORD=test \
$(GO) test -count=1 -run "^TestIntegrationRemoteAlertmanager" -covermode=atomic -timeout=5m ./pkg/services/ngalert/notifier/...
$(GO) test -run Integration -covermode=atomic -timeout=30m ./pkg/...
.PHONY: test-go-integration-postgres
test-go-integration-postgres: devenv-postgres ## Run integration tests for postgres backend with flags.
@echo "test backend integration postgres tests"
$(GO) clean -testcache
GRAFANA_TEST_DB=postgres \
$(GO) test -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m $(GO_INTEGRATION_TESTS)
$(GO) list './pkg/...' | xargs -I {} sh -c 'GRAFANA_TEST_DB=postgres go test -run Integration -covermode=atomic -timeout=2m {}'
.PHONY: test-go-integration-mysql
test-go-integration-mysql: devenv-mysql ## Run integration tests for mysql backend with flags.
@echo "test backend integration mysql tests"
GRAFANA_TEST_DB=mysql \
$(GO) test -p=1 -count=1 -run "^TestIntegration" -covermode=atomic -timeout=10m $(GO_INTEGRATION_TESTS)
.PHONY: test-go-integration-redis
test-go-integration-redis: ## Run integration tests for redis cache.
@echo "test backend integration redis tests"
$(GO) clean -testcache
REDIS_URL=localhost:6379 $(GO) test -run IntegrationRedis -covermode=atomic -timeout=2m $(GO_INTEGRATION_TESTS)
.PHONY: test-go-integration-memcached
test-go-integration-memcached: ## Run integration tests for memcached cache.
@echo "test backend integration memcached tests"
$(GO) clean -testcache
MEMCACHED_HOSTS=localhost:11211 $(GO) test -run IntegrationMemcached -covermode=atomic -timeout=2m $(GO_INTEGRATION_TESTS)
$(GO) list './pkg/...' | xargs -I {} sh -c 'GRAFANA_TEST_DB=mysql go test -run Integration -covermode=atomic -timeout=2m {}'
test-js: ## Run tests for frontend.
@echo "test frontend"
@@ -218,36 +162,19 @@ shellcheck: $(SH_FILES) ## Run checks for shell scripts.
##@ Docker
TAG_SUFFIX=$(if $(WIRE_TAGS)!=oss,-$(WIRE_TAGS))
PLATFORM=linux/amd64
build-docker-full: ## Build Docker image for development.
@echo "build docker container"
tar -ch . | \
docker buildx build - \
--platform $(PLATFORM) \
--build-arg BINGO=false \
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
--tag grafana/grafana$(TAG_SUFFIX):dev \
$(DOCKER_BUILD_ARGS)
DOCKER_BUILDKIT=1 \
docker build \
--tag grafana/grafana:dev .
build-docker-full-ubuntu: ## Build Docker image based on Ubuntu for development.
@echo "build docker container"
tar -ch . | \
docker buildx build - \
--platform $(PLATFORM) \
--build-arg BINGO=false \
--build-arg GO_BUILD_TAGS=$(GO_BUILD_TAGS) \
--build-arg WIRE_TAGS=$(WIRE_TAGS) \
--build-arg COMMIT_SHA=$$(git rev-parse HEAD) \
--build-arg BUILD_BRANCH=$$(git rev-parse --abbrev-ref HEAD) \
--build-arg BASE_IMAGE=ubuntu:22.04 \
--build-arg GO_IMAGE=golang:1.20.10 \
--tag grafana/grafana$(TAG_SUFFIX):dev-ubuntu \
$(DOCKER_BUILD_ARGS)
DOCKER_BUILDKIT=1 \
docker build \
--build-arg BASE_IMAGE=ubuntu:20.04 \
--build-arg GO_IMAGE=golang:1.20.4 \
--tag grafana/grafana:dev-ubuntu .
##@ Services
@@ -258,6 +185,8 @@ devenv:
@printf 'You have to define sources for this command \nexample: make devenv sources=postgres,openldap\n'
else
devenv: devenv-down ## Start optional services, e.g. postgres, prometheus, and elasticsearch.
$(eval targets := $(shell echo '$(sources)' | tr "," " "))
@cd devenv; \
./create_docker_compose.sh $(targets) || \
(rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1)
@@ -290,9 +219,6 @@ devenv-mysql:
protobuf: ## Compile protobuf definitions
bash scripts/protobuf-check.sh
bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh
bash pkg/plugins/backendplugin/secretsmanagerplugin/generate.sh
bash pkg/services/store/entity/generate.sh
bash pkg/infra/grn/generate.sh
clean: ## Clean up intermediate build artifacts.
@echo "cleaning"
@@ -318,7 +244,7 @@ scripts/drone/TAGS: $(shell find scripts/drone -name '*.star')
etags --lang none --regex="/def \(\w+\)[^:]+:/\1/" --regex="/\s*\(\w+\) =/\1/" $^ -o $@
format-drone:
buildifier --lint=fix -r scripts/drone
buildifier -r scripts/drone
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

View File

@@ -90,14 +90,6 @@ read_timeout = 0
#exampleHeader1 = exampleValue1
#exampleHeader2 = exampleValue2
#################################### GRPC Server #########################
[grpc_server]
network = "tcp"
address = "127.0.0.1:10000"
use_tls = false
cert_file =
key_file =
#################################### Database ############################
[database]
# You can configure the database connection by specifying type, host, name, user and password
@@ -221,9 +213,6 @@ response_limit = 0
# Limits the number of rows that Grafana will process from SQL data sources.
row_limit = 1000000
# Sets a custom value for the `User-Agent` header for outgoing data proxy requests. If empty, the default value is `Grafana/<BuildVersion>` (for example `Grafana/9.0.0`).
user_agent =
#################################### Analytics ###########################
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
@@ -413,21 +402,6 @@ default_home_dashboard_path =
# Upper limit of data sources that Grafana will return. This limit is a temporary configuration and it will be deprecated when pagination will be introduced on the list data sources API.
datasource_limit = 5000
################################### SQL Data Sources #####################
[sql_datasources]
# Default maximum number of open connections maintained in the connection pool
# when connecting to SQL based data sources
max_open_conns_default = 100
# Default maximum number of idle connections maintained in the connection pool
# when connecting to SQL based data sources
max_idle_conns_default = 100
# Default maximum connection lifetime used when connecting
# to SQL based data sources.
max_conn_lifetime_default = 14400
#################################### Users ###############################
[users]
# disable user signup / registration
@@ -516,7 +490,6 @@ oauth_auto_login = false
oauth_state_cookie_max_age = 600
# Skip forced assignment of OrgID 1 or 'auto_assign_org_id' for social logins
# Deprecated, use skip_org_role_sync option for specific provider instead.
oauth_skip_org_role_update_sync = false
# limit of api_key seconds to live before expiration
@@ -531,9 +504,6 @@ sigv4_verbose_logging = false
# Set to true to enable Azure authentication option for HTTP-based datasources
azure_auth_enabled = false
# Use email lookup in addition to the unique ID provided by the IdP
oauth_allow_insecure_email_lookup = false
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
@@ -550,8 +520,6 @@ hide_version = false
#################################### GitHub Auth #########################
[auth.github]
name = GitHub
icon = github
enabled = false
allow_sign_up = true
auto_login = false
@@ -567,13 +535,9 @@ allowed_organizations =
role_attribute_path =
role_attribute_strict = false
allow_assign_grafana_admin = false
skip_org_role_sync = false
tls_skip_verify_insecure = false
#################################### GitLab Auth #########################
[auth.gitlab]
name = GitLab
icon = gitlab
enabled = false
allow_sign_up = true
auto_login = false
@@ -589,12 +553,9 @@ role_attribute_path =
role_attribute_strict = false
allow_assign_grafana_admin = false
skip_org_role_sync = false
tls_skip_verify_insecure = false
#################################### Google Auth #########################
[auth.google]
name = Google
icon = google
enabled = false
allow_sign_up = true
auto_login = false
@@ -607,7 +568,6 @@ api_url = https://www.googleapis.com/oauth2/v1/userinfo
allowed_domains =
hosted_domain =
skip_org_role_sync = false
tls_skip_verify_insecure = false
#################################### Grafana.com Auth ####################
# legacy key names (so they work in env variables)
@@ -620,8 +580,6 @@ scopes = user:email
allowed_organizations =
[auth.grafana_com]
name = Grafana.com
icon = grafana
enabled = false
allow_sign_up = true
auto_login = false
@@ -633,8 +591,7 @@ skip_org_role_sync = false
#################################### Azure AD OAuth #######################
[auth.azuread]
name = Microsoft
icon = microsoft
name = Azure AD
enabled = false
allow_sign_up = true
auto_login = false
@@ -648,7 +605,6 @@ allowed_groups =
role_attribute_strict = false
allow_assign_grafana_admin = false
force_use_graph_api = false
tls_skip_verify_insecure = false
#################################### Okta OAuth #######################
[auth.okta]
@@ -669,7 +625,6 @@ role_attribute_path =
role_attribute_strict = false
allow_assign_grafana_admin = false
skip_org_role_sync = false
tls_skip_verify_insecure = false
#################################### Generic OAuth #######################
[auth.generic_oauth]
@@ -705,7 +660,6 @@ tls_client_ca =
use_pkce = false
auth_style =
allow_assign_grafana_admin = false
skip_org_role_sync = false
#################################### Basic Auth ##########################
[auth.basic]
@@ -783,24 +737,6 @@ managed_identity_enabled = false
# Should be set for user-assigned identity and should be empty for system-assigned identity
managed_identity_client_id =
# Specifies whether Azure AD Workload Identity authentication should be enabled in datasources that support it
# For more documentation on Azure AD Workload Identity, review this documentation:
# https://azure.github.io/azure-workload-identity/docs/
# Disabled by default, needs to be explicitly enabled
workload_identity_enabled = false
# Tenant ID of the Azure AD Workload Identity
# Allows to override default tenant ID of the Azure AD identity associated with the Kubernetes service account
workload_identity_tenant_id =
# Client ID of the Azure AD Workload Identity
# Allows to override default client ID of the Azure AD identity associated with the Kubernetes service account
workload_identity_client_id =
# Custom path to token file for the Azure AD Workload Identity
# Allows to set a custom path to the projected service account token file
workload_identity_token_file =
#################################### Role-based Access Control ###########
[rbac]
# If enabled, cache permissions in a in memory cache
@@ -965,9 +901,6 @@ global_alert_rule = -1
# global limit of files uploaded to the SQL DB
global_file = 1000
# global limit of correlations
global_correlations = -1
#################################### Unified Alerting ####################
[unified_alerting]
# Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed when switching. When this configuration section and flag are not defined, the state is defined at runtime. See the documentation for more details.
@@ -1023,11 +956,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
# This is an experimental option to add parallelization to saving alert states in the database.
# It configures the maximum number of concurrent queries per rule evaluated. The default value is 1
# (concurrent queries per rule disabled).
max_state_save_concurrency = 1
[unified_alerting.screenshots]
# Enable screenshots in notifications. You must have either installed the Grafana image rendering
# plugin, or set up Grafana to use a remote rendering service.
@@ -1293,8 +1221,6 @@ plugin_admin_external_manage_enabled = false
plugin_catalog_url = https://grafana.com/grafana/plugins/
# Enter a comma-separated list of plugin identifiers to hide in the plugin catalog.
plugin_catalog_hidden_plugins =
# Log all backend requests for core and external plugins.
log_backend_requests = false
#################################### Grafana Live ##########################################
[live]
@@ -1450,14 +1376,6 @@ max_crawl_duration =
# This setting should be expressed as a duration. Examples: 10s (seconds), 1m (minutes).
scheduler_interval =
#################################### Support Bundles #####################################
[support_bundles]
# Enable support bundle creation (default: true)
enabled = true
# Only server admins can generate and view support bundles (default: true)
server_admin_only = true
# If set, bundles will be encrypted with the provided public keys separated by whitespace
public_keys = ""
#################################### Storage ################################################

View File

@@ -11,11 +11,6 @@ port = 389
use_ssl = false
# If set to true, use LDAP with STARTTLS instead of LDAPS
start_tls = false
# The value of an accepted TLS cipher. By default, this value is empty. Example value: ["TLS_AES_256_GCM_SHA384"])
# For a complete list of supported ciphers and TLS versions, refer to: https://go.dev/src/crypto/tls/cipher_suites.go
tls_ciphers = []
# This is the minimum TLS version allowed. By default, this value is empty. Accepted values are: TLS1.1, TLS1.2, TLS1.3.
min_tls_version = ""
# set to true if you want to skip ssl cert validation
ssl_skip_verify = false
# set to the path to your root CA certificate or leave unset to use system defaults

View File

@@ -91,14 +91,6 @@
#exampleHeader1 = exampleValue1
#exampleHeader2 = exampleValue2
#################################### GRPC Server #########################
;[grpc_server]
;network = "tcp"
;address = "127.0.0.1:10000"
;use_tls = false
;cert_file =
;key_file =
#################################### Database ####################################
[database]
# You can configure the database connection by specifying type, host, name, user and password
@@ -228,9 +220,6 @@
# Limits the number of rows that Grafana will process from SQL data sources.
;row_limit = 1000000
# Sets a custom value for the `User-Agent` header for outgoing data proxy requests. If empty, the default value is `Grafana/<BuildVersion>` (for example `Grafana/9.0.0`).
;user_agent =
#################################### Analytics ####################################
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
@@ -502,7 +491,6 @@
;oauth_state_cookie_max_age = 600
# Skip forced assignment of OrgID 1 or 'auto_assign_org_id' for social logins
# Deprecated, use skip_org_role_sync option for specific provider instead.
;oauth_skip_org_role_update_sync = false
# limit of api_key seconds to live before expiration
@@ -520,9 +508,6 @@
# Set to skip the organization role from JWT login and use system's role assignment instead.
; skip_org_role_sync = false
# Use email lookup in addition to the unique ID provided by the IdP
;oauth_allow_insecure_email_lookup = false
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
@@ -539,8 +524,6 @@
#################################### GitHub Auth ##########################
[auth.github]
;name = GitHub
;icon = github
;enabled = false
;allow_sign_up = true
;auto_login = false
@@ -556,12 +539,9 @@
;role_attribute_path =
;role_attribute_strict = false
;allow_assign_grafana_admin = false
;skip_org_role_sync = false
#################################### GitLab Auth #########################
[auth.gitlab]
;name = GitLab
;icon = gitlab
;enabled = false
;allow_sign_up = true
;auto_login = false
@@ -580,8 +560,6 @@
#################################### Google Auth ##########################
[auth.google]
;name = Google
;icon = google
;enabled = false
;allow_sign_up = true
;auto_login = false
@@ -597,8 +575,6 @@
#################################### Grafana.com Auth ####################
[auth.grafana_com]
;name = Grafana.com
;icon = grafana
;enabled = false
;allow_sign_up = true
;auto_login = false
@@ -610,8 +586,7 @@
#################################### Azure AD OAuth #######################
[auth.azuread]
;name = Microsoft
;icon = microsoft
;name = Azure AD
;enabled = false
;allow_sign_up = true
;auto_login = false
@@ -754,24 +729,6 @@
# Should be set for user-assigned identity and should be empty for system-assigned identity
;managed_identity_client_id =
# Specifies whether Azure AD Workload Identity authentication should be enabled in datasources that support it
# For more documentation on Azure AD Workload Identity, review this documentation:
# https://azure.github.io/azure-workload-identity/docs/
# Disabled by default, needs to be explicitly enabled
;workload_identity_enabled = false
# Tenant ID of the Azure AD Workload Identity
# Allows to override default tenant ID of the Azure AD identity associated with the Kubernetes service account
;workload_identity_tenant_id =
# Client ID of the Azure AD Workload Identity
# Allows to override default client ID of the Azure AD identity associated with the Kubernetes service account
;workload_identity_client_id =
# Custom path to token file for the Azure AD Workload Identity
# Allows to set a custom path to the projected service account token file
;workload_identity_token_file =
#################################### Role-based Access Control ###########
[rbac]
;permission_cache = true
@@ -934,9 +891,6 @@
# global limit of alerts
;global_alert_rule = -1
# global limit of correlations
; global_correlations = -1
#################################### Unified Alerting ####################
[unified_alerting]
#Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed.```
@@ -1225,8 +1179,6 @@
;plugin_catalog_url = https://grafana.com/grafana/plugins/
# Enter a comma-separated list of plugin identifiers to hide in the plugin catalog.
;plugin_catalog_hidden_plugins =
# Log all backend requests for core and external plugins.
;log_backend_requests = false
#################################### Grafana Live ##########################################
[live]
@@ -1311,14 +1263,6 @@
;grpc_host =
;grpc_port =
[support_bundles]
# Enable support bundle creation (default: true)
#enabled = true
# Only server admins can generate and view support bundles (default: true)
#server_admin_only = true
# If set, bundles will be encrypted with the provided public keys separated by whitespace
#public_keys = ""
[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =

View File

@@ -1,24 +1,98 @@
# Backend
First read the [backend style guide](/contribute/backend/style-guide.md)
to get a sense for how we work to ensure that the Grafana codebase is
consistent and accessible. The rest of the backend contributor
documentation is more relevant to reviewers and contributors looking to
make larger changes.
This document gives an overview of the directory structure, and ongoing refactorings.
For anyone reviewing code for Grafana's backend, a basic understanding
of content of the following files is expected:
For more information on developing for the backend:
- [Currently recommended practices](/contribute/backend/recommended-practices.md)
- [Services](/contribute/backend/services.md)
- [Communication](/contribute/backend/communication.md)
- [Database](/contribute/backend/database.md)
- [HTTP API](/pkg/api/README.md)
- [Backend style guide](/contribute/backend/style-guide.md)
- [Architecture](/contribute/architecture)
Reviewers who review large changes should additionally make a habit out
of familiarizing themselves with the content of
[/contribute/backend](/contribute/backend) from time to time.
## Central folders of Grafana's backend
| folder | description |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| /pkg/api | HTTP handlers and routing. Almost all handler funcs are global which is something we would like to improve in the future. Handlers should be associated with a struct that refers to all dependencies. |
| /pkg/cmd | The binaries that we build: grafana-server and grafana-cli. |
| /pkg/components | A mix of third-party packages and packages we have implemented ourselves. Includes our packages that have out-grown the util package and don't naturally belong somewhere else. |
| /pkg/infra | Packages in infra should be packages that are used in multiple places in Grafana without knowing anything about the Grafana domain. |
| /pkg/services | Packages in services are responsible for persisting domain objects and manage the relationship between domain objects. Services should communicate with each other using DI when possible. Most of Grafana's codebase still relies on global state for this. Any new features going forward should use DI. |
| /pkg/tsdb | All backend implementations of the data sources in Grafana. Used by both Grafana's frontend and alerting. |
| /pkg/util | Small helper functions that are used in multiple parts of the codebase. Many functions are placed directly in the util folders which is something we want to avoid. Its better to give the util function a more descriptive package name. Ex `errutil`. |
## Central components of Grafana's backend
| package | description |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| /pkg/bus | The bus is described in more details under [Communication](/contribute/backend/communication.md) |
| /pkg/models | This is where we keep our domain model. This package should not depend on any package outside standard library. It does contain some references within Grafana but that is something we should avoid going forward. |
| /pkg/registry | Package for managing services. |
| /pkg/services/alerting | Grafana's alerting services. The alerting engine runs in a separate goroutine and shouldn't depend on anything else within Grafana. |
| /pkg/services/sqlstore | Currently where the database logic resides. |
| /pkg/setting | Anything related to Grafana global configuration should be dealt with in this package. |
## Dependency management
Refer to [UPGRADING_DEPENDENCIES.md](https://github.com/grafana/grafana/blob/main/UPGRADING_DEPENDENCIES.md).
## Ongoing refactoring
These issues are not something we want to address all at once but something we will improve incrementally. Since Grafana is released at a regular schedule the preferred approach is to do this in batches. Not only is it easier to review, but it also reduces the risk of conflicts when cherry-picking fixes from main to release branches. Please try to submit changes that span multiple locations at the end of the release cycle. We prefer to wait until the end because we make fewer patch releases at the end of the release cycle, so there are fewer opportunities for complications.
### Global state
Global state makes testing and debugging software harder and it's something we want to avoid when possible. Unfortunately, there is quite a lot of global state in Grafana.
We want to migrate away from this by using the `inject` package to wire up all dependencies either in `pkg/cmd/grafana-server/main.go` or self-registering using `registry.RegisterService` ex https://github.com/grafana/grafana/blob/main/pkg/services/cleanup/cleanup.go#L25.
### Limit the use of the init() function
Only use the init() function to register services/implementations.
### Settings refactoring
The plan is to move all settings to from package level vars in settings package to the [setting.Cfg](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210) struct. To access the settings, services and components can inject this setting.Cfg struct:
[Cfg struct](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210)
[Injection example](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/services/cleanup/cleanup.go#L20)
### Reduce the use of GoConvey
We want to migrate away from using GoConvey. Instead, we want to use stdlib testing, because it's the most common approach in the Go community and we think it will be easier for new contributors. Read more about how we want to write tests in the [style guide](/contribute/backend/style-guide.md).
### Refactor SqlStore
The `sqlstore` handlers all use a global xorm engine variable. Refactor them to use the `SqlStore` instance.
### Avoid global HTTP handler functions
Refactor HTTP handlers so that the handler methods are on the HttpServer instance or a more detailed handler struct. E.g (AuthHandler). This ensures they get access to HttpServer service dependencies (and Cfg object) and can avoid global state.
### Date comparison
Store newly introduced date columns in the database as epochs if they require date comparison. This permits a unified approach for comparing dates against all the supported databases instead of handling dates differently for each database. Also, by comparing epochs, we no longer need error pruning transformations to and from other time zones.
### Avoid use of the simplejson package
Use of the `simplejson` package (`pkg/components/simplejson`) in place of types (Go structs) results in code that is difficult to maintain. Instead, create types for objects and use the Go standard library's [`encoding/json`](https://golang.org/pkg/encoding/json/) package.
### Provisionable\*
All new features that require state should be possible to configure using config files. For example:
- [Data sources](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/datasources)
- [Alert notifiers](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/notifiers)
- [Dashboards](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/dashboards)
Today its only possible to provision data sources and dashboards but this is something we want to support all over Grafana.
### Use context.Context "everywhere"
The package [context](https://golang.org/pkg/context/) should be used and propagated through all the layers of the code. For example the `context.Context` of an incoming API request should be propagated to any other layers being used such as the bus, service and database layers. Utility functions/methods normally doesn't need `context.Context` To follow best practices, any function/method that receives a context.Context argument should receive it as its first argument.
To be able to solve certain problems and/or implement and support certain features making sure that `context.Context` is passed down through all layers of the code is vital. Being able to provide contextual information for the full life-cycle of an API request allows us to use contextual logging, provide contextual information about the authenticated user, create multiple spans for a distributed trace of service calls and database queries etc.
Code should use `context.TODO` when it's unclear which Context to use or it is not yet available (because the surrounding function has not yet been extended to accept a `context.Context` argument).
More details in [Services](/contribute/backend/services.md), [Communication](/contribute/backend/communication.md) and [Database](/contribute/backend/database.md).
[Original design doc](https://docs.google.com/document/d/1ebUhUVXU8FlShezsN-C64T0dOoo-DaC9_r-c8gB2XEU/edit#).

View File

@@ -1,7 +1,6 @@
# Communication
Grafana use dependency injection and method calls on Go interfaces to
communicate between different parts of the backend.
Grafana uses a _bus_ to pass messages between different parts of the application. All communication over the bus happens synchronously.
## Commands and queries

View File

@@ -1,169 +0,0 @@
# Currently recommended practices
We occasionally identify patterns that are either useful or harmful that
we'll want to introduce or remove from the codebase. When the complexity
or importance of introducing or removing such a pattern is sufficiently
high, we'll document it here to provide an addressable local
'currently recommended practice'. By collecting these practices in a
single place, we're able to reference them and make it easier to have a
shared understanding of how to write idiomatic code for the Grafana
backend.
Large-scale refactoring based on a new recommended practice is a
delicate matter, and most of the time it's better to introduce the new
way incrementally over multiple releases and over time to balance the
want to introduce new useful patterns and the need to keep Grafana
stable. It's also easier to review and revert smaller chunks of changes,
reducing the risk of complications.
| State | Description |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Proposed | The practice has been proposed and been positively received by the Grafana team. Following the proposal is a discretionary choice for developers. |
| Ongoing, active | The practice is actively being worked on. New code should adhere to the practice where at all possible. |
| Ongoing, passive | There is no immediate active work on refactoring old code. New code should adhere to the practice where at all possible. |
| Completed | The work has been done and there is no, or negligible, legacy code left that need refactoring. New code must adhere to the practice. |
| Abandoned | The practice has no longer any active ongoing work and new code don't need to comply with the practice described. |
## 1 - Idiomatic Grafana code should be idiomatic Go code
**Status:** Ongoing, passive.
It'll be easier for contributors to start contributing to Grafana if our
code is easily understandable. When there isn't a more specific Grafana
recommended practice, we recommend following the practices as put forth
by the Go project for development of Go code or the Go compiler itself
when applicable.
The first resource we recommend everyone developing Grafana's backend to
skim is "[Effective Go](https://golang.org/doc/effective_go.html)",
which isn't updated to reflect more recent changes since Go was
initially released but remain a good source for understanding the
general differences between Go and other languages.
Secondly, the guidelines for [Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
for the Go compiler can mostly be applied directly to the Grafana
codebase. There are idiosyncrasies in Grafana such as interfaces living
closer to its declaration than to its users for services and don't
enforce documentation of public declarations (prioritize high coverage
of documentation aimed at end-users over documenting internals in the
backend).
- [Effective Go](https://golang.org/doc/effective_go.html)
- [Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
## 100 - Global state
**State:** Ongoing, passive.
Global state makes testing and debugging software harder, and it's something we want to avoid when possible. Unfortunately, there is quite a lot of global state in Grafana.
We want to migrate away from this by using
[Wire](https://github.com/google/wire) and dependency injection to pack
## 101 - Limit the use of the init() function
**State:** Ongoing, passive.
Only use the init() function to register services/implementations.
## 102 - Settings refactoring
**State:** Ongoing, passive.
The plan is to move all settings to from package level vars in settings package to the [setting.Cfg](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210) struct. To access the settings, services and components can inject this setting.Cfg struct:
- [Cfg struct](https://github.com/grafana/grafana/blob/df917663e6f358a076ed3daa9b199412e95c11f4/pkg/setting/setting.go#L210)
- [Injection example](https://github.com/grafana/grafana/blob/c9773e55b234b7637ea97b671161cd856a1d3d69/pkg/services/cleanup/cleanup.go#L34)
## 103 - Reduce the use of GoConvey
**State:** Completed.
We want to migrate away from using GoConvey. Instead, we want to use
stdlib testing with [testify](https://github.com/stretchr/testify),
because it's the most common approach in the Go community, and we think
it will be easier for new contributors. Read more about how we want to
write tests in the [style guide](/contribute/backend/style-guide.md).
## 104 - Refactor SqlStore
**State:** Completed.
The `sqlstore` handlers all use a global xorm engine variable. Refactor them to use the `SqlStore` instance.
## 105 - Avoid global HTTP handler functions
**State:** Ongoing, passive.
Refactor HTTP handlers so that the handler methods are on the HttpServer instance or a more detailed handler struct. E.g (AuthHandler). This ensures they get access to HttpServer service dependencies (and Cfg object) and can avoid global state.
## 106 - Date comparison
**State:** Ongoing, passive.
Store newly introduced date columns in the database as epoch based
integers (i.e. unix timestamps) if they require date comparison. This
permits a unified approach for comparing dates against all the supported
databases instead of handling dates differently for each database. Also,
by comparing epoch based integers, we no longer need error pruning
transformations to and from other time zones.
## 107 - Avoid use of the simplejson package
**State:** Ongoing, passive
Use of the `simplejson` package (`pkg/components/simplejson`) in place
of types (Go structs) results in code that is difficult to maintain.
Instead, create types for objects and use the Go standard library's
[`encoding/json`](https://golang.org/pkg/encoding/json/) package.
## 108 - Provisionable\*
**State:** Abandoned: Grafana's file based refactoring is limited to work natively only on on-premise installations of Grafana. We're looking at enhancing the use of the API to enable provisioning for all Grafana instances.
All new features that require state should be possible to configure using config files. For example:
- [Data sources](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/datasources)
- [Alert notifiers](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/notifiers)
- [Dashboards](https://github.com/grafana/grafana/tree/main/pkg/services/provisioning/dashboards)
Today it's only possible to provision data sources and dashboards but this is something we want to support all over Grafana.
### 109 - Use context.Context "everywhere"
**State:** Completed.
The package [context](https://golang.org/pkg/context/) should be used
and propagated through all the layers of the code. For example the
`context.Context` of an incoming API request should be propagated to any
other layers being used such as the bus, service and database layers.
Utility functions/methods normally doesn't need `context.Context`.
To follow Go best practices, any function/method that receives a
[`context.Context` argument should receive it as its first parameter](https://github.com/golang/go/wiki/CodeReviewComments#contexts).
To be able to solve certain problems and/or implement and support
certain features making sure that `context.Context` is passed down
through all layers of the code is vital. Being able to provide
contextual information for the full life-cycle of an API request allows
us to use contextual logging, provide contextual information about the
authenticated user, create multiple spans for a distributed trace of
service calls and database queries etc.
Code should use `context.TODO` when it's unclear which Context to use,
or it is not yet available (because the surrounding function has not yet
been extended to accept a `context.Context` argument).
More details in [Services](/contribute/backend/services.md), [Communication](/contribute/backend/communication.md) and [Database](/contribute/backend/database.md).
[Original design doc](https://docs.google.com/document/d/1ebUhUVXU8FlShezsN-C64T0dOoo-DaC9_r-c8gB2XEU/edit#).
## 110 - Move API error handling to service layer
**State:** Ongoing, passive.
All errors returned from Grafana's services should carry a status and
the information necessary to provide a structured end-user facing
message that the frontend can display and internationalize for
end-users.
More details in [Errors](/contribute/backend/errors.md).

View File

@@ -10,12 +10,19 @@ Unless stated otherwise, use the guidelines listed in the following articles:
## Linting and formatting
To ensure consistency across the Go codebase, we require all code to
pass a number of linter checks.
To ensure consistency across the Go codebase, we require all code to pass a number of linter checks.
We use [GolangCI-Lint](https://github.com/golangci/golangci-lint) with a
custom configuration [.golangci.toml](/.golangci.toml) to run these
checks.
We use the standard following linters:
- [gofmt](https://golang.org/cmd/gofmt/)
- [golint](https://github.com/golang/lint)
- [go vet](https://golang.org/cmd/vet/)
In addition to the standard linters, we also use:
- [revive](https://revive.run/) with a [custom config](https://github.com/grafana/grafana/blob/main/conf/revive.toml)
- [GolangCI-Lint](https://github.com/golangci/golangci-lint)
- [gosec](https://github.com/securego/gosec)
To run all linters, use the `lint-go` Makefile target:
@@ -29,6 +36,10 @@ We value clean and readable code, that is loosely coupled and covered by unit te
Tests must use the standard library, `testing`. For assertions, prefer using [testify](https://github.com/stretchr/testify).
The majority of our tests uses [GoConvey](http://goconvey.co/) but that's something we want to avoid going forward.
In the `sqlstore` package we do database operations in tests and while some might say that's not suited for unit tests. We think they are fast enough and provide a lot of value.
### Integration Tests
We run unit and integration tests separately, to help keep our CI pipeline running smoothly and provide a better developer experience.
@@ -44,8 +55,7 @@ func TestIntegrationFoo(t *testing.T) {
}
```
> Warning
> If you do not follow this convention, your integration test may be run twice or not run at all.
If you do not follow this convention, your integration test may be run twice or not run at all.
### Assertions
@@ -62,7 +72,8 @@ code, plus lets you run each test case in isolation when debugging. Don't use `t
### Cleanup
Use [`t.Cleanup`](https://golang.org/pkg/testing/#T.Cleanup) to clean up resources in tests. It's a preferable to `defer`, as it can be called from helper functions. It will always execute after the test is over in reverse call order (last `t.Cleanup` first, same as `defer`).
Use [`t.Cleanup`](https://golang.org/pkg/testing/#T.Cleanup) to clean up resources in tests. It's a less fragile choice than `defer`, since it's independent of which
function you call it in. It will always execute after the test is over in reverse call order (last `t.Cleanup` first, same as `defer`).
### Mock
@@ -190,14 +201,11 @@ for context.
If a column, or column combination, should be unique, add a corresponding uniqueness constraint through a migration.
### Usage of XORM Session.Insert() and Session.InsertOne()
The [Session.Insert()](https://pkg.go.dev/github.com/go-xorm/xorm#Session.Insert) and [Session.InsertOne()](https://pkg.go.dev/github.com/go-xorm/xorm#Session.InsertOne) are poorly documented and return the number of affected rows contrary to a common mistake that they return the newly introduced primary key. Therefore, contributors should be extra cautious when using them.
The same applies for the respective [Engine.Insert()](https://pkg.go.dev/github.com/go-xorm/xorm#Engine.Insert) and [Engine.InsertOne()](https://pkg.go.dev/github.com/go-xorm/xorm#Engine.InsertOne)
## JSON
The simplejson package is used a lot throughout the backend codebase,
but it's legacy, so if at all possible avoid using it in new code.
Use [encoding/json](https://golang.org/pkg/encoding/json/) instead.
The simplejson package is used a lot throughout the backend codebase, but it's legacy, so if at all possible
avoid using it in new code. Use [json-iterator](https://github.com/json-iterator/go) instead, which is a more performant
drop-in alternative to the standard [encoding/json](https://golang.org/pkg/encoding/json/) package. While encoding/json
is a fine choice, profiling shows that json-iterator may be 3-4 times more efficient for encoding. We haven't profiled
its parsing performance yet, but according to json-iterator's own benchmarks, it appears even more superior in this
department.

View File

@@ -1,82 +0,0 @@
# Support bundles
Support bundles are a way to collect all the information needed to debug a problem.
They are generated from the support bundle menu in the UI under the Help section.
The support bundle is an archive that contains one file per collector selected by
the user.
Collectors are functions in the backend that collect information about the service they are running in.
Services can register collectors during their initialization.
## Adding a new support bundle collector
To add a new support bundle collector, you need to follow these steps,
we'll use the usage stats service as an example:
1. Import the support bundles registry in the service's `ProvideService` function:
```go
type UsageStats struct {
...
}
func ProvideService(
...
bundleRegistry supportbundles.Service, // Bundle registry
) (*UsageStats, error)
```
2. `make gen-go` will then be able to wire the registry to the service.
3. Implement the collector
```go
func (uss *UsageStats) supportBundleCollector() supportbundles.Collector {
return supportbundles.Collector{
UID: "usage-stats", // unique ID for the collector
DisplayName: "Usage statistics", // display name for the collector in the UI
Description: "Usage statistics of the Grafana instance", // description for the collector in the UI
IncludedByDefault: false, // whether the collector is included by default in the support bundle and can't be deselected. Most times you want this to be false.
Default: false, // whether the collector is selected by default in the support bundle. User can still deselect it.
// Function that will actually collect the file during the support bundle generation.
Fn: func(ctx context.Context) (*supportbundles.SupportItem, error) {
// Add your service's logic to collect the information you need
// In this example we are collecting the usage stats and marshalling them to JSON
// This helps us get information about the usage of the Grafana instance
report, err := uss.GetUsageReport(context.Background())
if err != nil {
return nil, err
}
data, err := json.Marshal(report)
if err != nil {
return nil, err
}
return &supportbundles.SupportItem{
// filename of the file in the archive
// can be any extension. (most common is .json and .md)
Filename: "usage-stats.json",
FileBytes: data, // []byte of the file
}, nil
},
}
}
```
4. Register the collector in the service's `ProvideService` function:
```go
func ProvideService(
...
) (*UsageStats, error) {
s := &UsageStats{
// ...
}
bundleRegistry.RegisterSupportItemCollector(s.supportBundleCollector())
return s, nil
}
```

View File

@@ -4,7 +4,7 @@ Grafana uses the [i18next](https://www.i18next.com/) framework for managing tran
## tl;dr
**Please note:** We do not currently accept contributions for translations. Please do not submit pull requests translating grafana.json files - they will be rejected. We do accept contributions to mark up phrases for translation.
**Please note:** We do not currently accept contributions for translations. Please do not submit pull requests for grafana.json files - they will be rejected.
- Use `<Trans i18nKey="search-results.panel-link">Go to {{ pageTitle }}</Trans>` in code to add a translatable phrase
- Translations are stored in JSON files in `public/locales/{locale}/grafana.json`

View File

@@ -13,6 +13,7 @@ The following checklist/summary should give you a quick overview of what to ask/
- Reviewed and approved?
- All checks passed?
- Proper pull request title?
- Milestone assigned?
- Add to changelog/release notes?
- Needs backporting?
@@ -39,18 +40,10 @@ See [formatting guidelines](create-pull-request.md#formatting-guidelines) for mo
### Assign a milestone
Several things in the Grafana release process requires at least pull requests to be in a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
A milestone **should** be added to every pull request. Several things in the Grafana release process requires at least pull requests to be in a milestone, for example [generating changelog/release notes](#include-in-changelog-and-release-notes).
This makes it easier to track what changes go into a certain release. Without this information, release managers have to go through git commits which is not an efficient process.
That being said, _you don't have to assign a milestone manually_ to a pull request.
Instead, when it is merged & closed then a bot will look for the most appropriate miletone and assign it to the pull request.
That milestone should always reflect the branch that the pull request is merged into.
For every major and minor release there is a milestone ending with `.x` (e.g. `10.0.x` for the 10.0.x releases).
Pull requests targetting `main` should use the `.x` milestone of the next minor (or major) version (you can find that version number inside the `package.json` file).
Backport pull requestss should use the version of the target branch (e.g. `9.4.x` for the `v9.4.x` branch).
### Include in changelog and release notes?
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.
@@ -85,15 +78,15 @@ The changelog/release notes are divided into sections and here's a description o
**Features and enhancements:**
Labeled with `add to changelog` and any of the other section rules don't apply.
Milestone assigned and labeled with `add to changelog` and any of the other section rules don't apply.
**Bug fixes:**
Labeled with `add to changelog` and either labeled with `type/bug` or the pull request title contains `fix` or `fixes`.
Milestone assigned and labeled with `add to changelog` and either labeled with `type/bug` or the pull request title contains `fix` or `fixes`.
**Plugin development fixes & changes:**
Labeled with `area/grafana/toolkit`, `area/grafana/ui` or `area/grafana/runtime`.
Milestone assigned and labeled with `area/grafana/toolkit`, `area/grafana/ui` or `area/grafana/runtime`.
**Deprecations:**

View File

@@ -353,26 +353,12 @@ static defaultProps: Partial<Props> = { ... }
### How to declare functional components
We prefer using function declarations over function expressions when creating a new react functional component.
We recommend using named regular functions when creating a new react functional component.
```typescript
// bad
export const Component = (props: Props) => { ... }
// bad
export const Component: React.FC<Props> = (props) => { ... }
// good
export function Component(props: Props) { ... }
```
Some interesting readings on the topic:
- [Create React App: Remove React.FC from typescript template](https://github.com/facebook/create-react-app/pull/8177)
- [Kent C. Dodds: How to write a React Component in Typescript](https://kentcdodds.com/blog/how-to-write-a-react-component-in-typescript)
- [Kent C. Dodds: Function forms](https://kentcdodds.com/blog/function-forms)
- [Sam Hendrickx: Why you probably shouldn't use React.FC?](https://medium.com/raccoons-group/why-you-probably-shouldnt-use-react-fc-to-type-your-react-components-37ca1243dd13)
## State management
- Don't mutate state in reducers or thunks.

View File

@@ -13,12 +13,12 @@ To access the theme in your styles, use the `useStyles` hook. It provides basic
> Please remember to put `getStyles` function at the end of the file!
```tsx
import React from 'react';
import React, { FC } from 'react';
import { GrafanaTheme2 } from '@grafana/data';
import { useStyles2 } from '@grafana/ui';
import { css } from '@emotion/css';
const Foo = (props: FooProps) => {
const Foo: FC<FooProps> = () => {
const styles = useStyles2(getStyles);
// Use styles with classNames
@@ -48,7 +48,7 @@ interface ComponentAProps {
isActive: boolean;
}
const ComponentA = ({ isActive }: ComponentAProps) => {
const ComponentA: React.FC<ComponentAProps> = ({ isActive }) => {
const theme = useTheme();
const styles = useStyles2(theme);

View File

@@ -76,12 +76,11 @@ datasources:
- name: gdev-influxdb1-influxql
type: influxdb
access: proxy
database: site
user: grafana
url: http://localhost:8087
secureJsonData:
password: grafana
jsonData:
dbName: site
- name: gdev-influxdb-flux
type: influxdb
@@ -99,9 +98,9 @@ datasources:
- name: gdev-influxdb-influxql
type: influxdb
access: proxy
database: mybucket
url: http://localhost:8086
jsonData:
dbName: mybucket
httpHeaderName1: "Authorization"
secureJsonData:
httpHeaderValue1: "Token mytoken"
@@ -132,6 +131,7 @@ datasources:
timeField: "@timestamp"
logLevelField: level
logMessageField: line
esVersion: 8.1.4
- name: gdev-elasticsearch-filebeat
type: elasticsearch
@@ -141,6 +141,7 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 8.1.4
timeInterval: "10s"
logMessageField: message
logLevelField: fields.level
@@ -153,6 +154,7 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 8.1.4
timeInterval: "10s"
- name: gdev-mysql

View File

@@ -32,12 +32,11 @@ datasources:
- name: gdev-influxdb1-influxql
type: influxdb
access: proxy
database: site
user: grafana
url: http://influxdb1:8086
secureJsonData:
password: grafana
jsonData:
dbName: site
- name: gdev-influxdb-flux
type: influxdb
@@ -53,9 +52,9 @@ datasources:
- name: gdev-influxdb-influxql
type: influxdb
access: proxy
database: mybucket
url: http://influxdb:8086
jsonData:
dbName: mybucket
httpHeaderName1: "Authorization"
secureJsonData:
httpHeaderValue1: "Token mytoken"
@@ -76,6 +75,7 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 8.1.4
- name: gdev-elasticsearch-filebeat
type: elasticsearch
@@ -85,6 +85,7 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 8.1.4
timeInterval: "10s"
logMessageField: message
logLevelField: fields.level
@@ -97,6 +98,7 @@ datasources:
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 8.1.4
timeInterval: "10s"
- name: gdev-mysql

View File

@@ -1629,6 +1629,7 @@
}
],
"refresh": false,
"revision": 8,
"schemaVersion": 16,
"style": "dark",
"tags": ["gdev", "panel-tests"],

View File

@@ -1775,10 +1775,6 @@
"text": "ops/min (opm)",
"value": "opm"
},
{
"text": "requests/min (rpm)",
"value": "reqpm"
},
{
"text": "reads/min (rpm)",
"value": "rpm"

View File

@@ -1,871 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"id": 1267,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 3,
"w": 24,
"x": 0,
"y": 0
},
"id": 8,
"options": {
"code": {
"language": "plaintext",
"showLineNumbers": false,
"showMiniMap": false
},
"content": "* `__all_variables`=${__all_variables}\n* `__url_time_range`=${__url_time_range}",
"mode": "markdown"
},
"pluginVersion": "9.5.0-pre",
"title": "Panel Title",
"type": "text"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"links": [
{
"targetBlank": true,
"title": "value=${__value.raw}&time=${__value.time}&__value:percentencode=${__value:percentencode}&text=${__value.text}",
"url": "value=${__value.raw}&time=${__value.time}justvalue=${__value:percentencode}&text=${__value.text}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 3
},
"id": 2,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"title": "DataLink: with __value.raw=&__value.time=&__value:percentencode=",
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"links": [
{
"targetBlank": true,
"title": "Value link",
"url": "value=${__value.raw}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 3
},
"id": 3,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 5
}
],
"title": "Stat panel with __value.raw ",
"type": "stat"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "continuous-GrYlRd"
},
"links": [
{
"title": "${__value.raw}",
"url": "${__value.raw}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 10
},
"id": 6,
"options": {
"displayMode": "basic",
"minVizHeight": 10,
"minVizWidth": 0,
"orientation": "horizontal",
"reduceOptions": {
"calcs": [],
"fields": "",
"values": true
},
"showUnfilled": true,
"valueMode": "color"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"csvFileName": "browser_marketshare.csv",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_file"
}
],
"title": "data link __value.raw",
"transformations": [
{
"id": "limit",
"options": {
"limitField": 5
}
}
],
"type": "bargauge"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"description": "Since this is using getFrameDisplayName it works kind badly (especially with testdata) and only returns the `Series (refId)`. \n\nSo this should show:\n* Series (Query1)\n* Series (Query2)",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"displayName": "${__series.name}",
"links": [
{
"targetBlank": true,
"title": "Value link",
"url": "value=${__calc}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 10
},
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "auto"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"alias": "",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "Query1",
"scenarioId": "random_walk",
"seriesCount": 1
},
{
"alias": "",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"hide": false,
"refId": "Query2",
"scenarioId": "random_walk",
"seriesCount": 1
}
],
"title": "${series.name} in display name",
"type": "stat"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"links": [
{
"title": "__data.refId=${__data.refId}&__data.fields[0]=${__data.fields[0]}&cluster=${__field.labels.cluster}",
"url": "refId=${__data.refId}&__data.fields[0]=${__data.fields[0]}&cluster=${__field.labels.cluster}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 17
},
"id": 11,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"labels": "cluster=US",
"refId": "A",
"scenarioId": "random_walk"
}
],
"title": "DataLink: refId=${__data.refId}&__data.fields[0]=${__data.fields[0]}&cluster=${__field.labels.cluster}",
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"links": [
{
"title": "${__value.raw}",
"url": "${__value.raw}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 17
},
"id": 10,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"alias": "10,20,30,40",
"csvContent": "Time, value, test\n\"2023-03-24T17:12:12.347Z\", 10,hello\n\"2023-03-24T17:22:12.347Z\", 20,asd\n\"2023-03-24T17:32:12.347Z\", 30,asd2\n\"2023-03-24T17:42:12.347Z\", 40,as34\n",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_content"
},
{
"alias": "5,6,7",
"csvContent": "Time, value, test\n\"2023-03-24T17:12:12.347Z\", 5,hello\n\"2023-03-24T17:22:12.347Z\", 6,asd\n\"2023-03-24T17:42:12.347Z\", 7,as34\n",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "B",
"scenarioId": "csv_content"
}
],
"title": "Data links with ${__value.raw}",
"transformations": [
{
"id": "joinByField",
"options": {}
}
],
"type": "timeseries"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"links": [
{
"title": "__field.name=${__field.name}&__field.labels.cluster=${__field.labels.cluster}",
"url": "__field.name=${__field.name}&__field.labels.cluster=${__field.labels.cluster}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
},
"unit": "percent"
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 24
},
"id": 13,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"labels": "cluster=US",
"refId": "A",
"scenarioId": "random_walk"
}
],
"title": "DataLink: __field.name=&__field.labels.cluster",
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"description": "The stat display names should be \n* Stockholm = Bad\n* New York = Good \n",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"displayName": "$__cell_0 = $__cell_2",
"links": [],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 24
},
"id": 14,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"textMode": "auto"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"alias": "",
"csvContent": "name, value, name2\nStockholm, 10, Good\nNew York, 15, Bad",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_content"
}
],
"title": "DisplayName with __cell_0 = __cell_2",
"type": "stat"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"description": "The stat display names should be \n* Stockholm = Bad\n* New York = Good \n",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"displayName": "${__field.name}",
"links": [
{
"targetBlank": true,
"title": "Value link",
"url": "value=${__calc}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 0,
"y": 31
},
"id": 15,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"alias": "",
"csvContent": "name, value, name2\nStockholm, 10, Good\nNew York, 15, Bad",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_content"
}
],
"title": "DisplayName: __field.name",
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"description": "The stat display names should be \n* Stockholm = Bad\n* New York = Good \n",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"displayName": "${__data.fields[0]} = ${__data.fields[2]}",
"links": [
{
"targetBlank": true,
"title": "__data.fields[0] = ${__data.fields[0]} = __value.raw = ${__value.raw}",
"url": "__data.fields[0] = ${__data.fields[0]} = __value.raw = ${__value.raw}"
}
],
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 7,
"w": 12,
"x": 12,
"y": 31
},
"id": 16,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": true
},
"textMode": "auto"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"alias": "",
"csvContent": "name, value, name2\nStockholm, 10, Good\nNew York, 15, Bad",
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "csv_content"
}
],
"title": "$__data.fields[0] = $__data.fields[2] with datalinks",
"type": "stat"
}
],
"refresh": "",
"schemaVersion": 38,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"current": {
"selected": false,
"text": "A",
"value": "A"
},
"hide": 0,
"includeAll": false,
"multi": false,
"name": "customVar",
"options": [
{
"selected": true,
"text": "A",
"value": "A"
},
{
"selected": false,
"text": "B",
"value": "B"
},
{
"selected": false,
"text": "C",
"value": "C"
}
],
"query": "A,B,C",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
}
]
},
"time": {
"from": "2023-03-24T17:12:12.347Z",
"to": "2023-03-24T17:42:12.347Z"
},
"timepicker": {},
"timezone": "",
"title": "Templating - Macros",
"uid": "e7c29343-6d1e-4167-9c13-803fe5be8c46",
"version": 48,
"weekStart": ""
}

View File

@@ -1,585 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [
{
"asDropdown": false,
"icon": "dashboard",
"includeVars": false,
"keepTime": false,
"tags": [],
"targetBlank": true,
"title": "Auto migrate (TRUE)",
"tooltip": "",
"type": "link",
"url": "/d/cdd412c4/?__feature.autoMigrateOldPanels=true"
},
{
"asDropdown": false,
"icon": "external link",
"includeVars": false,
"keepTime": false,
"tags": [],
"targetBlank": true,
"title": "Auto migrate (FALSE)",
"tooltip": "",
"type": "link",
"url": "/d/cdd412c4/?__feature.autoMigrateOldPanels=false"
},
{
"asDropdown": false,
"icon": "dashboard",
"includeVars": false,
"keepTime": false,
"tags": [],
"targetBlank": true,
"title": "Disable angular (TRUE)",
"tooltip": "",
"type": "link",
"url": "/d/cdd412c4/?__feature.disableAngular=true"
},
{
"asDropdown": false,
"icon": "external link",
"includeVars": false,
"keepTime": false,
"tags": [],
"targetBlank": true,
"title": "Disable angular (FALSE)",
"tooltip": "",
"type": "link",
"url": "/d/cdd412c4/?__feature.disableAngular=false"
}
],
"liveNow": false,
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 10,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "never",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"unit": "short"
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 11,
"w": 16,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true,
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"percentage": false,
"pluginVersion": "9.5.0-pre",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 3
}
],
"thresholds": [],
"timeRegions": [],
"title": "Flot graph",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "timeseries",
"xaxis": {
"mode": "time",
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"logBase": 1,
"show": true
},
{
"format": "short",
"logBase": 1,
"show": true
}
],
"yaxis": {
"align": false
}
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 11,
"w": 8,
"x": 16,
"y": 0
},
"id": 6,
"options": {
"code": {
"language": "plaintext",
"showLineNumbers": false,
"showMiniMap": false
},
"content": "# Graph panel >> Timeseries panel\n\nKnown issues:\n* hiding null/empty series\n* time regions",
"mode": "markdown"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A"
}
],
"title": "Status + Notes",
"type": "text"
},
{
"columns": [],
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fontSize": "100%",
"gridPos": {
"h": 10,
"w": 16,
"x": 0,
"y": 11
},
"id": 2,
"options": {
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"alias": "Time",
"align": "auto",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "Time",
"type": "date"
},
{
"alias": "",
"align": "right",
"colors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "random_walk_table"
}
],
"title": "Table (old)",
"transform": "table",
"transformations": [
{
"id": "merge",
"options": {
"reducers": []
}
}
],
"type": "table-old"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 10,
"w": 8,
"x": 16,
"y": 11
},
"id": 7,
"options": {
"code": {
"language": "plaintext",
"showLineNumbers": false,
"showMiniMap": false
},
"content": "# Table (old) >> Table\n\nKnown issues:\n* wrapping text\n* style changes",
"mode": "markdown"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A"
}
],
"title": "Status + Notes",
"type": "text"
},
{
"colorBackground": false,
"colorValue": true,
"colors": [
"#299c46",
"rgba(237, 129, 40, 0.89)",
"#d44a3a"
],
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"format": "areaF2",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 21
},
"id": 9,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"postfix": "b",
"postfixFontSize": "50%",
"prefix": "a",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": true
},
"tableColumn": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A"
}
],
"thresholds": "",
"title": "grafana-singlestat-panel",
"type": "grafana-singlestat-panel",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg"
},
{
"colorBackground": false,
"colorValue": true,
"colors": [
"#299c46",
"#73BF69",
"#d44a3a"
],
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"format": "ms",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 21
},
"id": 23,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"pluginVersion": "6.2.0-pre",
"postfix": "",
"postfixFontSize": "50%",
"prefix": "p95",
"prefixFontSize": "80%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": true
},
"tableColumn": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A"
}
],
"thresholds": "",
"title": "singlestat (old, internal. Migrated if schema < 28)",
"type": "singlestat",
"valueFontSize": "120%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 21
},
"id": 10,
"options": {
"code": {
"language": "plaintext",
"showLineNumbers": false,
"showMiniMap": false
},
"content": "# Singlestat >> Stat\n\nKnown issues:\n* limited options",
"mode": "markdown"
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A"
}
],
"title": "Status + Notes",
"type": "text"
}
],
"refresh": "",
"schemaVersion": 34,
"style": "dark",
"tags": [
"gdev",
"migrations",
"angular"
],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Devenv - Panel migrations",
"uid": "cdd412c4",
"version": 6,
"weekStart": ""
}

File diff suppressed because it is too large Load Diff

View File

@@ -108,7 +108,7 @@
"fixed": "transparent"
},
"image": {
"fixed": "https://dl.grafana.com/files/temp/ryan/landscape_2x.jpg"
"fixed": "https://grafana-plugin-resources.s3.us-west-2.amazonaws.com/ryan/landscape_2x.jpg"
},
"size": "original"
},

View File

@@ -1629,6 +1629,7 @@
}
],
"refresh": false,
"revision": 8,
"schemaVersion": 16,
"style": "dark",
"tags": ["gdev", "panel-tests", "graph"],

View File

@@ -305,6 +305,7 @@
"type": "heatmap"
}
],
"revision": 1,
"schemaVersion": 37,
"style": "dark",
"tags": [],

View File

@@ -748,6 +748,7 @@
"type": "histogram"
}
],
"revision": 1,
"schemaVersion": 37,
"style": "dark",
"tags": [

View File

@@ -2866,10 +2866,6 @@
"text": "ops/min (opm)",
"value": "opm"
},
{
"text": "requests/min (rpm)",
"value": "reqpm"
},
{
"text": "reads/min (rpm)",
"value": "rpm"

View File

@@ -430,6 +430,7 @@
}
],
"refresh": false,
"revision": 8,
"schemaVersion": 16,
"style": "dark",
"tags": ["gdev", "panel-tests"],

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)",
@@ -16,16 +13,12 @@
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"gnetId": null,
"graphTooltip": 0,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"datasource": null,
"gridPos": {
"h": 1,
"w": 24,
@@ -33,23 +26,11 @@
"y": 0
},
"id": 7,
"targets": [
{
"datasource": {
"type": "datasource",
"uid": "grafana"
},
"refId": "A"
}
],
"title": "Cell styles",
"type": "row"
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"datasource": "gdev-testdata",
"fieldConfig": {
"defaults": {
"color": {
@@ -57,19 +38,16 @@
},
"custom": {
"align": "center",
"cellOptions": {
"mode": "gradient",
"type": "color-background"
},
"filterable": false,
"inspect": false
"displayMode": "color-background",
"filterable": false
},
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "blue",
@@ -146,17 +124,7 @@
},
"id": 4,
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false,
"sortBy": [
{
"desc": true,
@@ -164,19 +132,17 @@
}
]
},
"pluginVersion": "9.5.0-pre",
"pluginVersion": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 15,
"stringInput": ""
}
],
"timeFrom": null,
"timeShift": null,
"title": "Colored background",
"transformations": [
{
@@ -193,29 +159,23 @@
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"datasource": "gdev-testdata",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "center",
"cellOptions": {
"type": "auto"
},
"filterable": false,
"inspect": false
"align": null,
"filterable": false
},
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "orange"
"color": "orange",
"value": null
},
{
"color": "red",
@@ -228,51 +188,60 @@
{
"matcher": {
"id": "byName",
"options": "Basic "
"options": "A"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"mode": "basic",
"type": "gauge"
}
},
{
"id": "custom.inspect",
"value": false
"id": "custom.displayMode",
"value": "gradient-gauge"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Gradient text color value"
"options": "Info"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"mode": "gradient",
"type": "gauge",
"valueMode": "text"
}
"id": "custom.width",
"value": 92
}
]
},
{
"matcher": {
"id": "byName",
"options": "LCD hidden value"
"options": "Min"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"mode": "lcd",
"type": "gauge",
"valueMode": "hidden"
}
"id": "custom.width",
"value": 76
}
]
},
{
"matcher": {
"id": "byName",
"options": "Max"
},
"properties": [
{
"id": "custom.width",
"value": 89
}
]
},
{
"matcher": {
"id": "byName",
"options": "Time"
},
"properties": [
{
"id": "custom.width",
"value": 165
}
]
}
@@ -280,22 +249,13 @@
},
"gridPos": {
"h": 16,
"w": 17,
"w": 8,
"x": 7,
"y": 1
},
"id": 2,
"options": {
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false,
"sortBy": [
{
"desc": false,
@@ -303,25 +263,22 @@
}
]
},
"pluginVersion": "9.5.0-pre",
"pluginVersion": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"refId": "A",
"scenarioId": "random_walk_table",
"stringInput": ""
}
],
"timeFrom": null,
"timeShift": null,
"title": "Bar gauge cells",
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Info": true,
"Time": true
},
"indexByName": {
@@ -331,43 +288,35 @@
"Time": 0,
"Value": 4
},
"renameByName": {
"A": "LCD hidden value",
"Max": "Gradient text color value",
"Min": "Basic "
}
"renameByName": {}
}
}
],
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"datasource": "gdev-testdata",
"description": "",
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
"align": null,
"filterable": false
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"mode": "percentage",
"steps": [
{
"color": "green"
"color": "blue",
"value": null
},
{
"color": "red",
"value": 80
"color": "green",
"value": 50
}
]
}
@@ -376,329 +325,82 @@
{
"matcher": {
"id": "byName",
"options": "rate"
"options": "A"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"fillOpacity": 29,
"gradientMode": "opacity",
"lineWidth": 1,
"type": "sparkline"
}
"id": "custom.displayMode",
"value": "lcd-gauge"
},
{
"id": "color",
"value": {
"mode": "continuous-GrYlRd"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "cluster"
},
"properties": [
{
"id": "custom.width",
"value": 120
}
]
},
{
"matcher": {
"id": "byName",
"options": "service"
},
"properties": [
{
"id": "custom.width",
"value": 120
"id": "custom.align",
"value": "center"
}
]
}
]
},
"gridPos": {
"h": 7,
"h": 16,
"w": 9,
"x": 0,
"y": 17
"x": 15,
"y": 1
},
"id": 14,
"maxDataPoints": 50,
"id": 5,
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false,
"sortBy": []
},
"pluginVersion": "9.5.0-pre",
"pluginVersion": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"labels": "cluster=eu,service=checkout",
"min": 0.1,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 3
"scenarioId": "random_walk_table",
"stringInput": ""
}
],
"title": "Sparkline cell",
"timeFrom": null,
"timeShift": null,
"title": "Retro LCD cell",
"transformations": [
{
"id": "timeSeriesTable",
"options": {}
},
{
"id": "organize",
"options": {
"excludeByName": {},
"indexByName": {},
"renameByName": {
"Trend": "rate"
}
}
}
],
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "PD8C576611E62080A"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "rate"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"drawStyle": "bars",
"fillOpacity": 100,
"gradientMode": "hue",
"lineWidth": 0,
"showPoints": "auto",
"type": "sparkline"
}
},
{
"id": "color",
"value": {
"mode": "continuous-GrYlRd"
}
},
{
"id": "color",
"value": {
"fixedColor": "red",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "latency"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"fillOpacity": 40,
"gradientMode": "opacity",
"lineInterpolation": "stepBefore",
"lineWidth": 1,
"type": "sparkline"
}
},
{
"id": "color",
"value": {
"fixedColor": "purple",
"mode": "fixed"
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "service"
},
"properties": [
{
"id": "custom.width",
"value": 120
}
]
},
{
"matcher": {
"id": "byName",
"options": "cluster"
},
"properties": [
{
"id": "custom.width",
"value": 120
}
]
}
]
},
"gridPos": {
"h": 7,
"w": 15,
"x": 9,
"y": 17
},
"id": 15,
"maxDataPoints": 30,
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"labels": "cluster=eu,service=checkout",
"min": 0.1,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 3
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"hide": false,
"labels": "cluster=eu,service=checkout",
"min": 0.1,
"refId": "B",
"scenarioId": "random_walk",
"seriesCount": 3
}
],
"title": "Multiple sparkline cells per row",
"transformations": [
{
"id": "timeSeriesTable",
"options": {}
},
{
"id": "joinByField",
"options": {
"byField": "service",
"mode": "outer"
}
},
{
"id": "organize",
"options": {
"excludeByName": {
"cluster 2": true
"Info": false,
"Max": true,
"Min": true,
"Time": false
},
"indexByName": {},
"renameByName": {
"Trend": "rate",
"Trend #A": "rate",
"Trend #B": "latency",
"cluster 1": "cluster"
}
"indexByName": {
"Info": 1,
"Max": 3,
"Min": 2,
"Time": 0,
"Value": 4
},
"renameByName": {}
}
}
],
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"collapsed": false,
"datasource": "gdev-testdata",
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 24
"y": 17
},
"id": 9,
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"refId": "A"
}
],
"panels": [],
"title": "Data links",
"type": "row"
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"datasource": "gdev-testdata",
"fieldConfig": {
"defaults": {
"color": {
@@ -706,11 +408,8 @@
},
"custom": {
"align": "center",
"cellOptions": {
"type": "color-text"
},
"filterable": false,
"inspect": false
"displayMode": "color-text",
"filterable": false
},
"decimals": 2,
"mappings": [],
@@ -718,7 +417,8 @@
"mode": "percentage",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "blue",
@@ -744,7 +444,8 @@
},
"properties": [
{
"id": "custom.align"
"id": "custom.align",
"value": null
}
]
},
@@ -771,30 +472,17 @@
"h": 8,
"w": 12,
"x": 0,
"y": 25
"y": 18
},
"id": 3,
"maxDataPoints": "10",
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": true,
"showRowNums": false
"showHeader": true
},
"pluginVersion": "9.5.0-pre",
"pluginVersion": "",
"targets": [
{
"alias": "S1",
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"labels": "server=A",
"refId": "A",
"scenarioId": "random_walk",
@@ -803,10 +491,6 @@
},
{
"alias": "S2",
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"labels": "server=B",
"refId": "B",
"scenarioId": "random_walk",
@@ -815,10 +499,6 @@
},
{
"alias": "S3",
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"labels": "server=C",
"refId": "C",
"scenarioId": "random_walk",
@@ -826,6 +506,8 @@
"stringInput": ""
}
],
"timeFrom": null,
"timeShift": null,
"title": "Data link with labels and numeric value",
"transformations": [
{
@@ -836,10 +518,7 @@
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"datasource": "gdev-testdata",
"fieldConfig": {
"defaults": {
"color": {
@@ -847,18 +526,16 @@
},
"custom": {
"align": "center",
"cellOptions": {
"type": "auto"
},
"filterable": false,
"inspect": false
"displayMode": "auto",
"filterable": false
},
"mappings": [],
"thresholds": {
"mode": "percentage",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "blue",
@@ -882,21 +559,11 @@
"h": 8,
"w": 5,
"x": 12,
"y": 25
"y": 18
},
"id": 10,
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"fields": "",
"reducer": [
"sum"
],
"show": false
},
"showHeader": false,
"showRowNums": false,
"sortBy": [
{
"desc": true,
@@ -904,19 +571,17 @@
}
]
},
"pluginVersion": "9.5.0-pre",
"pluginVersion": "",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"refId": "A",
"scenarioId": "random_walk_table",
"seriesCount": 5,
"stringInput": ""
}
],
"timeFrom": null,
"timeShift": null,
"title": "No header",
"transformations": [
{
@@ -941,10 +606,7 @@
"type": "table"
},
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"datasource": "gdev-testdata",
"fieldConfig": {
"defaults": {
"color": {
@@ -952,17 +614,15 @@
},
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
"displayMode": "auto"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": 0
},
{
"color": "red",
@@ -977,39 +637,25 @@
"h": 8,
"w": 12,
"x": 0,
"y": 33
"y": 26
},
"id": 12,
"options": {
"cellHeight": "md",
"footer": {
"countRows": false,
"show": true,
"fields": "",
"reducer": [
"sum"
],
"show": true
]
},
"showHeader": true,
"showRowNums": false
"showHeader": true
},
"pluginVersion": "9.5.0-pre",
"targets": [
{
"datasource": {
"type": "testdata",
"uid": "gdev-testdata"
},
"refId": "A"
}
],
"pluginVersion": "",
"title": "Footer",
"type": "table"
}
],
"refresh": "",
"revision": 1,
"schemaVersion": 38,
"schemaVersion": 27,
"style": "dark",
"tags": [
"gdev",
@@ -1038,6 +684,5 @@
"timezone": "",
"title": "Panel Tests - React Table",
"uid": "U_bZIMRMk",
"version": 7,
"weekStart": ""
"version": 6
}

View File

@@ -736,6 +736,7 @@
}
],
"refresh": false,
"revision": 1,
"schemaVersion": 38,
"style": "dark",
"tags": [

View File

@@ -1343,6 +1343,7 @@
}
],
"refresh": "",
"revision": 1,
"schemaVersion": 38,
"style": "dark",
"tags": [

View File

@@ -8,7 +8,7 @@ Useful for testing a second implementation
- [x] LDAP
- [x] SAML
- [x] OAuth
- [ ] OAuth
## Deployment
@@ -71,23 +71,6 @@ allow_idp_initiated = true
org_mapping = admin:1:Admin, editor:1:Editor, viewer:1:Viewer
```
# OAuth Setup
```ini
[auth.generic_oauth]
name = authentik
enabled = true
client_id = 43e8d2746fe2e508325a23cdf816d6ddd12e94f1
client_secret = e50440f14a010fd69dfed85bc6c071653f22c73e2c6c8d7ba96a936937d92040936b7e5a4bcc1bf40d5cf1dc019b1db327a1a00e2183c53471fb7530d4a09d7e
scopes = openid email profile
auth_url = http://localhost:9000/application/o/authorize/
token_url = http://localhost:9000/application/o/token/
api_url = http://localhost:9000/application/o/userinfo/
role_attribute_path = contains(groups[*], 'admin') && 'Admin' || contains(groups[*], 'editor') && 'Editor' || 'Viewer'
[auth]
signout_redirect_url = http://localhost:9000/application/o/grafana-oidc/end-session/
```
## Available users and groups

File diff suppressed because it is too large Load Diff

View File

@@ -39,7 +39,7 @@
- "authentik:authentik"
authentik:
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2023.2.3}
image: ${AUTHENTIK_IMAGE:-ghcr.io/goauthentik/server}:${AUTHENTIK_TAG:-2022.12.1}
restart: unless-stopped
container_name: authentik
command: server

View File

@@ -53,6 +53,7 @@ async function elasticSendLogItem(timestamp, item) {
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() {

View File

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

View File

@@ -47,7 +47,10 @@ async function sleep(duration) {
});
}
async function lokiSendLogLine(timestampNs, line, tags) {
async function lokiSendLogLine(timestampMs, line, tags) {
// we keep nanosecond-timestamp in a string because
// as a number it would be too large
const timestampNs = `${timestampMs}000000`;
const data = {
streams: [
{
@@ -110,60 +113,21 @@ function logFmtLine(item) {
return parts.join(' ');
}
const DAYS = 7;
const POINTS_PER_DAY = 1000;
// it's important to have good "delays" between
// log-line-timestamps, because the "density" of log-lines
// is what gives the loki metric queries shape.
function calculateDelays(pointsCount) {
const delays = [];
for(let i=0;i<pointsCount; i+=1) {
const delay = Math.random();
delays.push(delay);
}
// now, i want to normalize the delays-array, so that the sum of
// all it's items adds up to `1`.
const allDelays = delays.reduce((acc, current) => acc + current, 0);
for(let i=0;i<delays.length; i++) {
delays[i] = delays[i] / allDelays
}
return delays;
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)));
}
function getRandomNanosecPart() {
// we want to have cases with milliseconds-only, with microsec and nanosec.
const mode = Math.random();
if (mode < 0.333) {
// only milisec precision
return '000000';
}
if (mode < 0.666) {
// microsec precision
return Math.trunc(Math.random()*1000).toString().padStart(3, '0') + '000'
}
// nanosec precision
return Math.trunc(Math.random()*1000000).toString().padStart(6, '0')
}
async function main() {
const delays = calculateDelays(DAYS * POINTS_PER_DAY);
const timeRange = DAYS * 24 * 60 * 60 * 1000;
let timestampMs = new Date().getTime() - timeRange;
for(let i =0; i < delays.length; i++ ) { // i cannot do a forEach because of the `await` inside
const delay = delays[i];
timestampMs += Math.trunc(delay * timeRange);
const timestampNs = `${timestampMs}${getRandomNanosecPart()}`;
const item = getRandomLogItem(i + 1)
await lokiSendLogLine(timestampNs, JSON.stringify(item), {place:'moon', source: 'data', instance: 'server\\1', job: '"grafana/data"'});
await lokiSendLogLine(timestampNs, logFmtLine(item), {place:'luna', source: 'data', instance: 'server\\2', job: '"grafana/data"'});
};
for (let step = 0; step < 300; step++) {
await sleep(getNextSineWaveSleepDuration());
const timestampMs = new Date().getTime();
const item = getRandomLogItem(step + 1)
lokiSendLogLine(timestampMs, JSON.stringify(item), {place:'moon', source: 'data', instance: 'server\\1', job: '"grafana/data"'});
lokiSendLogLine(timestampMs, logFmtLine(item), {place:'luna', source: 'data', instance: 'server\\2', job: '"grafana/data"'});
}
}
// when running in docker, we catch the needed stop-signal, to shutdown fast

View File

@@ -3,4 +3,5 @@ This devenv docker-compose.yaml will allow you to;
- view traces
- upload/download trace JSON files
- view service graphs
- view the APM table
- search traces via Loki

View File

@@ -81,7 +81,7 @@ services:
- "4318:4318" # otlp http
prometheus:
image: prom/prometheus:latest
image: prom/prometheus:main
command:
- --config.file=/etc/prometheus.yaml
- --web.enable-remote-write-receiver

View File

@@ -0,0 +1,10 @@
{
"presets": [
"@babel/env",
"@babel/typescript"
],
"plugins": [
"@babel/proposal-class-properties",
"@babel/proposal-object-rest-spread"
]
}

3
devenv/docker/loadtest-ts/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
scripts/tmp
dist/
.yarn

View File

@@ -0,0 +1,14 @@
# Grafana load tests written in typescript - EXPERIMENTAL
Runs load tests written in typescript and checks Grafana's performance using [k6](https://k6.io/)
This is **experimental** - please consider adding new tests to devenv/docker/loadtest while we are testing the typescript approach!
# How to run
```
yarn install
GRPC_TOKEN={REPLACE_WITH_SERVICE_ACCOUNT_ADMIN_TOKEN} ./run.sh test=object-store-test grpcAddress=127.0.0.1:10000 execution=local
```

View File

@@ -0,0 +1,28 @@
{
"private": true,
"license": "Apache-2.0",
"name": "@grafana/perf-tests",
"version": "9.4.0-pre",
"devDependencies": {
"@babel/core": "7.19.6",
"@babel/plugin-proposal-class-properties": "7.18.6",
"@babel/plugin-proposal-object-rest-spread": "7.19.4",
"@babel/preset-env": "7.19.4",
"@babel/preset-typescript": "7.18.6",
"@types/k6": "0.41.0",
"@types/shortid": "0.0.29",
"@types/webpack": "5.28.0",
"babel-loader": "9.1.0",
"shortid": "2.2.16",
"ts-node": "10.9.1",
"typescript": "4.8.4",
"webpack": "5.74.0",
"webpack-cli": "4.10.0",
"webpack-glob-entries": "1.0.1"
},
"scripts": {
"build": "webpack",
"prepare-testdata": "yarn run prepare-testdata:object-store-test",
"prepare-testdata:object-store-test": "ts-node scripts/prepareDashboardFileNames.ts ../../dev-dashboards ./scripts/tmp/filenames.json"
}
}

View File

@@ -0,0 +1,64 @@
#!/usr/bin/env bash
if ((BASH_VERSINFO[0] < 4)); then
echo "Bash ver >= 4 is needed to run this script"
echo "Please upgrade your bash - run 'brew install bash' if you use Homebrew on MacOS"
exit 1;
fi
declare -A cfg=(
[grpcToken]=$GRPC_TOKEN
[grpcAddress]="127.0.0.1:10000"
[execution]="local"
[test]="object-store-test"
[k6CloudToken]=$K6_CLOUD_TOKEN
)
for ARGUMENT in "$@"
do
KEY=$(echo $ARGUMENT | cut -f1 -d=)
KEY_LENGTH=${#KEY}
VALUE="${ARGUMENT:$KEY_LENGTH+1}"
cfg["$KEY"]="$VALUE"
done
function usage() {
echo "$0 grpcAddress= grpcToken= execution= k6CloudToken= test=
- 'grpcAddress' is the address of Grafana gRPC server. 127.0.0.1:10000 is the default.
- 'grpcToken' is the service account admin token used for Grafana gRPC server authentication.
- 'execution' is the test execution mode; one of 'local', 'cloud-output', 'cloud'. 'local' is the default.
- 'k6CloudToken' is the k6 cloud token required for 'cloud-output' and 'cloud' execution modes.
- 'test' is the filepath of the test to execute relative to ./src, without the extension. example 'object-store-test'"
exit 0
}
if [ "${cfg[grpcToken]}" == "" ]; then
usage
fi
if [ "${cfg[execution]}" == "cloud" ]; then
echo "cloud execution mode is not yet implemented"
exit 0
elif [ "${cfg[execution]}" == "cloud-output" ]; then
if [ "${cfg[k6CloudToken]}" == "" ]; then
usage
fi
elif [ "${cfg[execution]}" != "local" ]; then
usage
fi
yarn run build
yarn run prepare-testdata
TEST_PATH="./dist/${cfg[test]}.js"
echo "$(date '+%Y-%m-%d %H:%M:%S'): Executing test ${TEST_PATH} in ${cfg[execution]} mode"
if [ "${cfg[execution]}" == "cloud-output" ]; then
GRPC_TOKEN="${cfg[grpcToken]}" GRPC_ADDRESS="${cfg[grpcAddress]}" K6_CLOUD_TOKEN="${cfg[k6CloudToken]}" k6 run --out cloud "$TEST_PATH"
elif [ "${cfg[execution]}" == "local" ]; then
GRPC_TOKEN="${cfg[grpcToken]}" GRPC_ADDRESS="${cfg[grpcAddress]}" k6 run "$TEST_PATH"
fi

View File

@@ -0,0 +1,24 @@
import { readdirSync, writeFileSync, mkdirSync } from 'fs';
import { dirname, resolve } from 'path';
const args = process.argv.slice(2);
if (args.length !== 2) {
throw new Error('expected dev dashboards dir and the output file path');
}
const devDashboardsDir = args[0];
const outputFilePath = args[1];
const getFiles = (dirPath: string, ext?: string): string[] =>
readdirSync(dirPath, { withFileTypes: true })
.flatMap((dirEntry) => {
const res = resolve(dirPath, dirEntry.name);
return dirEntry.isDirectory() ? getFiles(res) : res;
})
.filter((path) => (ext?.length ? path.endsWith(ext) : true));
const files = getFiles(devDashboardsDir, '.json');
mkdirSync(dirname(outputFilePath), { recursive: true });
writeFileSync(outputFilePath, JSON.stringify(files, null, 2));

View File

@@ -0,0 +1,116 @@
const testDash = {
annotations: { list: [] },
editable: true,
fiscalYearStartMonth: 0,
graphTooltip: 0,
id: 100,
links: [],
liveNow: false,
panels: [
{
datasource: {
type: 'testdata',
uid: 'testdata',
},
fieldConfig: {
defaults: {
color: {
mode: 'thresholds',
},
custom: {
align: 'auto',
displayMode: 'auto',
inspect: false,
},
mappings: [],
thresholds: {
mode: 'absolute',
steps: [
{
color: 'green',
value: null,
},
{
color: 'red',
value: 80,
},
],
},
},
overrides: [],
},
gridPos: {
h: 9,
w: 12,
x: 0,
y: 0,
},
id: 2,
options: {
footer: {
fields: '',
reducer: ['sum'],
show: false,
},
showHeader: true,
},
pluginVersion: '9.4.0-pre',
targets: [
{
csvContent: '',
datasource: {
type: 'testdata',
uid: 'PD8C576611E62080A',
},
refId: 'A',
scenarioId: 'csv_content',
},
],
title: 'Panel Title',
type: 'table',
},
],
schemaVersion: 37,
style: 'dark',
tags: [],
templating: {
list: [],
},
time: {
from: 'now-6h',
to: 'now',
},
timepicker: {},
timezone: '',
title: 'New dashboard',
uid: '5v6e5VH4z',
version: 1,
weekStart: '',
} as const;
const getCsvContent = (lengthInKb: number): string => {
const lines: string[] = ['id,name'];
for (let i = 0; i < lengthInKb; i++) {
const prefix = `${i},`;
lines.push(prefix + 'a'.repeat(1024 - prefix.length));
}
return lines.join('\n');
};
export const prepareDashboard = (lengthInKb: number): Record<string, unknown> => {
const firstPanel = testDash.panels[0];
return {
...testDash,
panels: [
{
...firstPanel,
targets: [
{
...firstPanel.targets[0],
csvContent: getCsvContent(lengthInKb),
},
],
},
],
};
};

View File

@@ -0,0 +1,214 @@
import { check } from 'k6';
import { b64encode } from 'k6/encoding';
import grpc from 'k6/net/grpc';
import { Object } from './prepare-data';
enum GRPCMethods {
ServerHealth = 'grpc.health.v1.Health/Check',
ObjectWrite = 'object.ObjectStore/Write',
ObjectDelete = 'object.ObjectStore/Delete',
ObjectRead = 'object.ObjectStore/Read',
}
export class GRPCObjectStoreClient {
private connected = false;
constructor(private client: grpc.Client, private grpcAddress: string, private grpcToken: string) {}
connect = () => {
if (!this.connected) {
this.client.connect(this.grpcAddress, { plaintext: true, reflect: true });
this.connected = true;
}
};
grpcRequestParams = () => {
return {
metadata: {
authorization: `Bearer ${this.grpcToken}`,
},
};
};
healthCheck = (): boolean => {
this.connect();
const response = this.client.invoke(GRPCMethods.ServerHealth, {});
return check(response, {
'server is healthy': (r) => {
const statusOK = r && r.status === grpc.StatusOK;
if (!statusOK) {
return false;
}
const body = r.message;
// @ts-ignore
return 'status' in body && body.status === 'SERVING';
},
});
};
deleteObject = (uid: string, kind: string, _?: {}) => {
this.connect();
const response = this.client.invoke(
GRPCMethods.ObjectDelete,
{
kind: kind,
UID: uid,
},
this.grpcRequestParams()
);
check(response, {
'object was deleted': (r) => {
const statusOK = r && r.status === grpc.StatusOK;
if (!statusOK) {
return false;
}
if (!isDeleteObjectResponse(r.message)) {
console.log(
JSON.stringify({
type: 'invalid_delete_response',
uid: uid,
kind: kind,
resp: r,
})
);
return false;
}
return true;
},
});
};
readObject = (uid: string, kind: string, _?: {}) => {
this.connect();
const response = this.client.invoke(
GRPCMethods.ObjectRead,
{
kind: kind,
UID: uid,
with_body: true,
with_summary: true,
},
this.grpcRequestParams()
);
check(response, {
'object exists': (r) => {
const statusOK = r && r.status === grpc.StatusOK;
if (!statusOK) {
return false;
}
const respBody = r.message;
if (!isReadObjectResponse(respBody)) {
console.log(
JSON.stringify({
type: 'invalid_read_response',
uid: uid,
kind: kind,
resp: r,
})
);
return false;
}
return typeof respBody.object.body === 'string';
},
});
};
writeObject = (object: Object, opts?: { randomizeData?: boolean; checkCreatedOrUpdated?: boolean }) => {
this.connect();
const data = opts?.randomizeData
? {
...object.data,
__random: `${Date.now() - Math.random()}`,
}
: object.data;
const response = this.client.invoke(
GRPCMethods.ObjectWrite,
{
body: b64encode(JSON.stringify(data)),
comment: '',
kind: object.kind,
UID: object.uid,
},
this.grpcRequestParams()
);
const checkName = opts?.checkCreatedOrUpdated ? 'object was created or updated' : 'object was created';
check(response, {
[checkName]: (r) => {
const statusOK = r && r.status === grpc.StatusOK;
if (!statusOK) {
return false;
}
const respBody = r.message;
if (!isWriteObjectResponse(respBody)) {
console.log(
JSON.stringify({
type: 'invalid_write_response',
uid: object.uid,
kind: object.kind,
resp: r,
})
);
return false;
}
return opts?.checkCreatedOrUpdated
? respBody.status === WriteObjectResponseStatus.UPDATED ||
respBody.status === WriteObjectResponseStatus.CREATED
: respBody.status === WriteObjectResponseStatus.CREATED;
},
});
};
}
type DeleteObjectResponse = {
OK: boolean;
};
const isDeleteObjectResponse = (resp: object): resp is DeleteObjectResponse => {
return resp.hasOwnProperty('OK');
};
enum WriteObjectResponseStatus {
CREATED = 'CREATED',
UPDATED = 'UPDATED',
}
type WriteObjectResponse = {
status: WriteObjectResponseStatus;
};
const isWriteObjectResponse = (resp: object): resp is WriteObjectResponse => {
return resp.hasOwnProperty('status');
};
type ReadObjectResponse = {
object: {
UID: string;
kind: string;
body: string;
};
};
const isReadObjectResponse = (resp: object): resp is ReadObjectResponse => {
if (!resp.hasOwnProperty('object')) {
return false;
}
// @ts-ignore
const object = resp.object;
return Boolean(object && typeof object === 'object' && object.hasOwnProperty('body'));
};

View File

@@ -0,0 +1,145 @@
import { SharedArray } from 'k6/data';
import execution from 'k6/execution';
import grpc from 'k6/net/grpc';
import { GRPCObjectStoreClient } from './object-store-client';
import { Data, prepareData } from './prepare-data';
const grpcToken = __ENV.GRPC_TOKEN;
const grpcAddress = __ENV.GRPC_ADDRESS;
if (typeof grpcToken !== 'string' || !grpcToken.length) {
throw new Error('GRPC_TOKEN env variable is missing');
}
if (typeof grpcAddress !== 'string' || !grpcAddress.length) {
throw new Error('GRPC_ADDRESS env variable is missing');
}
const client = new grpc.Client();
const objectStoreClient = new GRPCObjectStoreClient(client, grpcAddress, grpcToken);
const data: Data = new SharedArray('data', () => {
return [prepareData(JSON.parse(open('../scripts/tmp/filenames.json')), 50)];
})[0];
const scenarioDuration = '2m';
export const options = {
setupTimeout: '5m',
teardownTimeout: '5m',
noConnectionReuse: true,
scenarios: {
writer: {
exec: 'writer',
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '2s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 1,
},
reader: {
exec: 'reader',
executor: 'constant-arrival-rate',
rate: 10,
timeUnit: '2s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 10,
},
writer1mb: {
exec: 'writer1mb',
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '20s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 5,
},
reader1mb: {
startTime: '2s',
exec: 'reader1mb',
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '1s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 5,
},
writer4mb: {
exec: 'writer4mb',
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '30s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 5,
},
reader4mb: {
startTime: '3s',
exec: 'reader4mb',
executor: 'constant-arrival-rate',
rate: 1,
timeUnit: '5s',
duration: scenarioDuration,
preAllocatedVUs: 1,
maxVUs: 5,
},
},
// thresholds: { http_req_duration: ['avg<100', 'p(95)<200'] },
};
export function setup() {
if (!objectStoreClient.healthCheck()) {
execution.test.abort('server should be healthy');
}
console.log('inserting base objects');
for (let i = 0; i < data.base.length; i++) {
if (i % 100 === 0) {
console.log(`inserted ${i} / ${data.base.length}`);
}
objectStoreClient.writeObject(data.base[i], { randomizeData: false, checkCreatedOrUpdated: false });
}
}
export function teardown() {
const toDelete = [...data.base, ...data.toWrite, data.size1mb, data.size4mb, data.size100kb];
console.log('deleting base objects');
for (let i = 0; i < toDelete.length; i++) {
if (i % 100 === 0) {
console.log(`deleted ${i} / ${data.base.length}`);
}
objectStoreClient.deleteObject(toDelete[i].uid, toDelete[i].kind);
}
}
export function reader() {
const item = data.base[execution.scenario.iterationInTest % data.base.length];
objectStoreClient.readObject(item.uid, item.kind);
}
export function writer() {
const item = data.toWrite[execution.scenario.iterationInTest % data.toWrite.length];
objectStoreClient.writeObject(item, { randomizeData: true, checkCreatedOrUpdated: true });
}
export function writer1mb() {
objectStoreClient.writeObject(data.size1mb, { randomizeData: true, checkCreatedOrUpdated: true });
}
export function reader1mb() {
const item = data.size1mb;
objectStoreClient.readObject(item.uid, item.kind);
}
export function writer4mb() {
objectStoreClient.writeObject(data.size4mb, { randomizeData: true, checkCreatedOrUpdated: true });
}
export function reader4mb() {
const item = data.size4mb;
objectStoreClient.readObject(item.uid, item.kind);
}

View File

@@ -0,0 +1,57 @@
import shortid from 'shortid';
import { prepareDashboard } from './get-large-dashboard';
export type Object = {
data: Record<string, unknown>;
kind: string;
uid: string;
};
export type Data = {
base: Object[]; // objects that are inserted in the test setup and removed only in the teardown
toWrite: Object[]; // objects that are inserted by scenarios and removed after a short period of time: Object;
size100kb: Object;
size1mb: Object;
size4mb: Object;
};
export const readAsObjects = (paths: string[], kind: string): Object[] => {
return paths.map((p) => ({
data: JSON.parse(open(p)),
uid: shortid.generate(),
kind,
}));
};
export const getBase = (uniqueObjects: Object[], no: number): Object[] => {
const base = new Array<Object>(no);
for (let i = 0; i < no; i++) {
const obj = uniqueObjects[Math.floor(i % uniqueObjects.length)];
base[i] = {
...obj,
uid: `${obj.uid}-${Math.floor(i / uniqueObjects.length)}`,
};
}
return base;
};
const prepareObject = (lengthInKb: number): Object => {
return {
data: prepareDashboard(lengthInKb),
kind: 'dashboard',
uid: shortid(),
};
};
export const prepareData = (dashboardFilePaths: string[], baseNumber: number): Data => {
const objects = readAsObjects(dashboardFilePaths, 'dashboard');
return {
base: getBase(objects, baseNumber),
toWrite: objects,
size100kb: prepareObject(100),
size1mb: prepareObject(1000),
size4mb: prepareObject(4000),
};
};

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