Compare commits

..

332 Commits

Author SHA1 Message Date
Grot (@grafanabot)
d32ae18909 "Release: Updated versions in package to 8.5.5" (#362) 2022-06-06 15:50:28 -03:00
Grot (@grafanabot)
c95a7911ac State Timeline: Fix Null Value Filling and Value Transformation (#50054) (#50195)
(cherry picked from commit 12ba2d6b8b)

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

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

* Update angular deprecration plan doc

* Update

* Update article

* Updated

(cherry picked from commit e1909fe74b)

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

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

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

* cloud-datasources mob! :shipit:

* cloud-datasources mob! :shipit:

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

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

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

* cloud-datasources mob! 👶

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

* cloud-datasources mob! 👶

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

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

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

* cloud-datasources mob! :shipit:

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

* cloud-datasources mob! 

* prettier md

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

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

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

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

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

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

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

* Add comment explaining rationale and future removal

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

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

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

* add test

(cherry picked from commit dca0453c2e)

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

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

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

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

* Fix typo in another curl command

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

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

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

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

* fix spec test

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

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

* remove typed array

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

* Ensure original query properties are included unchanged

* Remove refId from pseudo datasources

* Include testing for interpolateVariablesInQueries

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

* Correct typo and add explicit check for datasource

(cherry picked from commit c8094b33cd)

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

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

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

* Review

(cherry picked from commit 30880e6e18)

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

* Make getGCEDefaultProject a method of Service and add test

* Handle error appropriately

* Update test and function definition

(cherry picked from commit ccb8888055)

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

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

* fix asserts in alerting tests

* add oss licensing service for test setup

* fix tests to pass in enterprise

* lint

* fix tests

* set setting.IsEnterprise flag for tests

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

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

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

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

Removing the `influxdbBackendMigration` feature toggle default value.

(cherry picked from commit 27c26c30d1)

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

* fix log

(cherry picked from commit 624f8ef40d)

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

* simplify-ish

* remove unused field

* whoopsie

* delete newline

* remove check

* apply feedback

(cherry picked from commit 635fa4ab0f)

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

(cherry picked from commit 755ec3b469)

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

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

* Update CHANGELOG.md

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

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

* Update query editor to fix auto time-grain selection

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

* Remove log and fix lint issues

* Add test for useMetricMetadata

- Add necessary types

* More test updates

- Update old dataHooks test
- Ensure query changes

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

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

* Update mocks appropriately

* Separate asyncState tests

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

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

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

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

(cherry picked from commit 3dfafbadef)

* fix backend conflict

* fixup

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

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

* tests added for plugins sorting

(cherry picked from commit f9d1d8370f)

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

* Appropriately set metric definition

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

* Restructure getResourceNames test

- Add expect on getResource args

* Update to fix issue for new query editor

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

* Fix duplicate options

* Fix lint issues

* Add comment explaining URI modification

(cherry picked from commit 34fa7b493c)

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

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

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

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

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

* Change colors

(cherry picked from commit 426ca2999e)

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

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

* handle location missing

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

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

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

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

* linter

* fixes tests

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

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

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

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

(cherry picked from commit d87fdc1037)

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

(cherry picked from commit 5c32a6b6f6)

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

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

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

(cherry picked from commit 5b52a1c391)

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

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

* Rename variables in dashboard import for clarity

(cherry picked from commit 71e1305364)

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

* Fix and add tests

* Fix linter

* Improve typings

* Improve Loki's buildinfo notice

* Fix rename, improve prom app display name

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

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

(cherry picked from commit 0a44fbdd42)

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

* Compare numeric values not using collator

(cherry picked from commit 6a5a0e5770)

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

* run go fmt

(cherry picked from commit 78287618ab)

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

* Define GET routes and run codegen

* Wire up forked and non-generated API

* Implement and wire

* Tests, authorization

* Fix linter error

(cherry picked from commit 9af30f6570)

* ErrorContains -> Error, then Contains

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

(cherry picked from commit 84d4ce51ad)

* revert annotations list datasource

* revert more

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

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

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

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

(cherry picked from commit 6f1f7cdc88)

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

* Transformation: Removed existing mean calculation

* Transformation: Added testcases for variance and Standard deviation

* Update docs/sources/panels/calculation-types.md

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

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

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

(cherry picked from commit 9826a694a8)

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

(cherry picked from commit 6923b4c6c6)

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

(cherry picked from commit dac8abfc2c)

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

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

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

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

* RolePicker: Add comment

* Add offset for the bottom position

(cherry picked from commit 25b4aa8d86)

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

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

(cherry picked from commit b6c5f29373)

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

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

* fix tests

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

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

* Generate API for writing templates

* Persist templates app logic layer

* Validate templates

* Extract logic, make set and delete methods

* Drop post route for templates

* Fix response details, wire up remainder of API

* Authorize routes

* Mirror some existing tests on new APIs

* Generate mock for prov store

* Wire up prov store mock, add tests using it

* Cover cases for both storage paths

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

* Normalize template content with define statement

* Tests for deletion

* Fix linter error

* Move provenance field to DTO

* empty commit

* ID to name

* Fix in auth too

(cherry picked from commit 0f56462fbe)

* ErrorContains -> Error then Contains

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

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

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

* generate a unique id and set the correct role

* add a test to prevent regressions

(cherry picked from commit 10db618204)

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

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

* Handle missing alert manager

* Refactor code, fix tests

* Fix redirect url

* Bring back the test

* Improve missing alert manager warning, add useAlertManagerSourceName tests

* Fix lint errors

* Rename alert manager hook

* Refactor alert manager label creation

* Improve warnings' messages

* Fix linter

* Fix warning condition in RuleEditor

(cherry picked from commit 65d7d466d7)

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

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

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

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

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

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

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

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

* Delete about-rbac.md

* Delete assign-rbac-roles.md

* Delete plan-rbac-rollout-strategy.md

* Delete manage-rbac-roles.md

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

* Allow dimension operator selection

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

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

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

* Add tests on dimension operators

* Correct placement of 'and' when building query

* Add comment and simplify filtering logic

* Allow multiSelect for eq and ne operators

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

* Improve setting of labels

* Update go tests

* Update frontend tests

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

* Allow custom value and set default

* Add frontend test and fix lint issues

* Improved handling of options for sw operator

* Remove changes related to multiselect

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

* Extract custom hook for setting dimension labels

* Add documentation around Azure Monitor metrics dimensions

* Update MetricQueryEditor tests

- Add missing data prop

* Correctly set field values

* Add additional expect for onQueryChange

* Correctly set operators

- Simplify onFilterInputChange

* Ensure no duplicate filters appear

* Ensure that filters are displayed correctly for saved queries

* Update dimension filter test

* Include additional test around changing dimension labels

(cherry picked from commit d7c16e06d2)

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

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

* Add option to remove notice

* Remove deprecation from editor

* Update

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

* Simplify

* Update documentation

* Update

* Update docs/sources/datasources/elasticsearch.md

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

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

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

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

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

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

* Add tests for invalid and valid JSON mocking backendSrv fromFetch

* remove unnecessary code from tests

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

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

* fix conflict message

* fix conflicts

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

* add email for license/cla check

(cherry picked from commit 4867a6b15f)

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

* fix: remove spaces from ids

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

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

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

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

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

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

Fixes #46472

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

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

* add test for panic

* add documentation

(cherry picked from commit 0a87ef06af)

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

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

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

* andres comments

* Apply suggestions from code review

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

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

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

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

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

* Fix merge

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

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

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

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

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

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

* Update create-service-account.md

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

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

* catch plugin errs

* go step back

(cherry picked from commit c8a71a2f91)

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

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

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

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

* Update docs/sources/visualizations/time-series/change-axis-display.md

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

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

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

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

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

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

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

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

* Template service

* Add GET routes and implement them

* Generate mock for persist layer

* Unit tests for reading templates

* Set up composition root and get integration tests working

* Fix prealloc issue

* Extract setup boilerplate

* Update AuthorizationTest

* Rebase and resolve

* Fix linter error

(cherry picked from commit 735822e48a)

* Avoid latest require features

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

* Small refactoring

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

* Validation in dedicated file

* Tests for validation

* Extract root route validation

* Update call and drop TODO

* empty commit to kick actions

* Normalization should be idempotent

* Cleaner representation of validation errors, chain errors properly

* Make internal validate unexported

* Fix missed rename

* Genericize error message

* Improve method names

* Rebase, fix

* Update asserts

(cherry picked from commit 60ec10566f)

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

(cherry picked from commit ebfb70dc12)

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

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

* updates task title

(cherry picked from commit 9d129bde76)

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

* PR review changes

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

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

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

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

* make numbered steps

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

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

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

(cherry picked from commit 103087a1a5)

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

(cherry picked from commit 3b4d237ade)

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

* Remove exploreID from store

(cherry picked from commit a320e942a6)

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

Fixes #48078

(cherry picked from commit 199cacc7b6)

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

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

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

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

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

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

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

* Policies use proper API model everywhere

* Expose policy provenance in API, miss some dep injection

* Complete injection

* fix args

* Tests for provenance value

* Extract test helpers so tests are very readable

* Single source adapter struct that was copied in 3 places

* Drop redundant test

* Resolve merge conflicts on changelog

(cherry picked from commit 8310789ef1)

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

* Refactor GET am config to be extensible

* Extract post config route

* Fix tests

* Remove temporary duplication

* Fix broken test due to layer shift

* Fix duplicated error message

* Properly return 400 on config rejection

* Revert weird half method extraction

* Move things to notifier package and avoid redundant interface

* Simplify documentation

* Split encryption service and depend on minimal abstractions

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

* Encryption -> Crypto

* Address misc feedback

* Missing docstring

* Few more simple polish improvements

* Unify on MultiOrgAlertmanager. Discover bug in existing test

* Fix rebase conflicts

* Misc feedback, renames, docs

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

(cherry picked from commit 758364e78b)

* Empty commit to kick PR build

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

* Make get fields case insensitive

* Update node graph docs

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

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

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

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

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

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

* Rename dependencies

(cherry picked from commit 430b9ae5cb)

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

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

fixes #33626

* CloudWatch: fix typos in runWithRetry documentation

* chore: fix eslint issue

(cherry picked from commit 6c0a5b121e)

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

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

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

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

* Add concurrency and memoization

* Remove concurrency

* Fix tests

* close response body

* Add tests

(cherry picked from commit d76e5d7c6a)

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

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

* Create statscollector service

* refactor

* Update and move tests

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

* Collect featuremgmr metrics (copied over from #47407)

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

(cherry picked from commit 3df625e9f4)

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

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

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

* fix a test

* another test fix

* and another

(cherry picked from commit 68ca5b2e05)

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

(cherry picked from commit d66fc6ed1a)

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

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

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

* Fix the lint:ts npm command

* Autofix + prettier bulk files

* Manually fix files

* @ts-ignore

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

* betterer

* Resolve issue caused by circular dependencies within Prometheus

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

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

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

* Add new query

* Fix test

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

* Add app to feature tracking

* Update

(cherry picked from commit 28665a869b)

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

* add feature toggle page

(cherry picked from commit 6899f23a22)

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

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

* Few minor tweaks

* Fixed a typo

(cherry picked from commit 75d528d7bd)

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

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

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

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

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

(cherry picked from commit d93bcd547e)

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

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

* refactor: renaming service-accounts to serviceAccounts in docs

* tests

(cherry picked from commit 8677552dda)

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

* Better diff for the operations change

* Changed the highlight style

(cherry picked from commit ff5aef194c)

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

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

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

* more changes

* more changes

* run prettier check

(cherry picked from commit b034bd18b5)

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

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

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

(cherry picked from commit c1f766a374)

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

* added tests

(cherry picked from commit 222325c7f1)

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

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

* Simple test with quoted values that include spaces

* Update test description

* Updating logic to account for nested quotes

- Adding additional test for nested quotes

* Strip out line breaks and carriage returns pre-processing

* Fix typo in test result

* Update key-value logic to avoid regexp

- Minor changes to account for null values

* Correct escaping on test

* Additional tests

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

(cherry picked from commit d0b41f882e)

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

Fixes #45301

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

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

* Use scollElement callback

* Fixed ts issue

(cherry picked from commit a126c07e54)

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

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

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

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

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

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

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

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

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

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

* Fix typos

* Fix loki operations

* Fix error that change the aggregation variant on blur

* Fix loki ops

(cherry picked from commit 95009995e4)

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

* Highlight team sync for trial users

* Add badges for trial highlights

* Move events to UpgradeBox

* Fix undefined license settings

* Update snapshot

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

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

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

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

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

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

* Update copy and event handling

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

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

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

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

(cherry picked from commit 0cff2d5980)

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

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

* fix tests

(cherry picked from commit c1490a464a)

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

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

(cherry picked from commit f9f4a4cbf6)

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

(cherry picked from commit ff60f39e96)

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

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

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

* Applying PR suggestions

(cherry picked from commit cbd2d09d70)

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

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

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

* Directly download and install nodejs package

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

* Update Go version

* Update lib.star

* Generate new .drone.yml

(cherry picked from commit 24038d9985)

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

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

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

Fixes #46337
Fixes #46338

(cherry picked from commit 4bc582570e)

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

* Prevent loading alert rules when no sufficient permissions provided

* Improve add and edit rule permissions

* Add new rule CTA button for non-editors

* Update mock

* Fix imports

(cherry picked from commit 785145c045)

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

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

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

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

* filter alerts

* change label to include instances

* re add empty case

(cherry picked from commit 4570615afc)

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

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

* Review feedback

* Update docs and add pictures

(cherry picked from commit 378ce4f685)

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

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

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

* Handle PR comments and fix the listing of token

(cherry picked from commit 782ec05d8c)

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

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

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

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

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

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

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

* Update docs/sources/installation/docker.md

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

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

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

* Check access control for ability to create

(cherry picked from commit 7905957ee8)

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

* Minor cleanup

* Update grabpl

(cherry picked from commit 508cc58a63)

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

* fix: bug for saving name did not remove edit

* refactor: better error msg

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

* Remove spaces when building the search query request

* Disable Edit button and fix token addition and deletion

* Fix the error message text

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

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

* support sampled trace IDs as well

* inject traceID into NormalResponse on errors

* Finally the test passed

* fix the test

* fix linter

* change the function parameter

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

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

* add test for panel tabs

* Refactor condition

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

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

* Remove .

* Fixed link

* added option to hide feedback links

* feedback link setting name change

* move config check

* fixed ts issue

(cherry picked from commit 057ff5bcf5)

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

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

* add changelog entry

* remove changelog entry

* rename upsertrule to updaterule

* use directly alertrule model for inserts

* add test for updating a rule with a conflicting name

(cherry picked from commit 060ccacbf9)

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

* Remove initialize step from main.star

* Remove initialize step from release.star

* Reorder dependencies

* Re-add identify runner step

* Add enterprise steps

* Remove is_downstream variable from starlark logic (#47715)

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

* Exclude shellcheck from enterprise pipelines

* Add init steps to enterprise integration tests pipeline

* Add dependency for windows enterprise step

* Update grabpl version

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

* cover the ui endpoints

* fix permissions

(cherry picked from commit e50bd5cac8)

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

* Fix bug and inject logger

(cherry picked from commit c266a4ac81)

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

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

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

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

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

(cherry picked from commit af9353caec)

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

* fix integration test

(cherry picked from commit e86b6662a1)

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

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

* change response code

* can assign API key permissions to non-admin users

* add: assign viewer role directly upon creation

* refactor: add AddSATcommand infavor of AddAPIkey

* refactor: frontend fixes for ServiceAccountToken

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

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

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

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

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

* Add tests for rule edit permissions

* PR feedback

(cherry picked from commit a30ab51550)

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

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

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

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

(cherry picked from commit c3db3121b0)

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

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

(cherry picked from commit 38809d73c2)

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

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

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

* remove unused const

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

* Prettify

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

* remove bus from orgredirect

(cherry picked from commit 2cf88cfec8)

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

* remove unwanted change

* remove unwanted change

(cherry picked from commit d0abe1bb3d)

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

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

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

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

* user essentials mob! 🔱

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

* Nav: Fix top padding

* refactor to not use showIconInNavbar in NavBarMenuItem

* remove a missed bit

* refactor icon into const

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

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

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

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

* Supporting empty imports

* Review applied

(cherry picked from commit 98cbecc4a5)

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

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

Bonus: small formatting fixes to goimports in these files.

closes #44178

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

(cherry picked from commit 8f6877e12a)

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

* fix alerting tests

* fix provide service

(cherry picked from commit b31c7d3654)

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

* fix symlink test, make it run on darwin

* remove unused mock

(cherry picked from commit ad432108e6)

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

* DashboardPicker: Add a generic DashboardPicker component

* Dashboard Service: improve types

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

* Handle saving provisioned dashboards error

* Improve test coverage

* simplify test setup

* Strip base path from url when redirecting to a dashboard

* Keep existing variables when saving to an existing dashboard

* group assertions in test

* SearchCard: handle undefined in meta.updated

* Change required error message

* Add to dashboard alternative

* Add to existing is working

* Add to dashboard form

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

* types cleanup

* remove unneeded BE change

* simplify selector

* Add explore2Dashboard feature toggle

* add tests

* Small refactor & add tests

* small DashboardPicker improvements

* use partial from lodash

* Better error handling

* improve tests & disable button when there are no queries

* rename addPanelToDashboard function

* remove localStorage item if opening tab fails

* UI touchups & tracking

* Fix tests & remove close reporting

* remove echologger debug

* fix adding a panel to an existing dashboard

* Enable explore2Dashboard by default and add docs

* Ensure each panel in dashboards has a valid ID

* force CI restart

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

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

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

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

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

* expand the list of resources covered by fgac

* Update folder.md

remove unneeded comment

(cherry picked from commit a5530d36a7)

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

* update changelog and release notes

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

* fix tests

* try different wire binding

* maybe remove a few more dispatches

* fix tests

(cherry picked from commit d153d896c5)

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

* Update grabpl version

(cherry picked from commit cfaf058b20)

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

* update sdk version

(cherry picked from commit 0bf889e058)

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

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

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

* Docs: Document escape newlines feature

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

* Rewrite topic lead to clarify conditional behavior

* Describe reversion of replacements as a standalone task

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

* Remove Grafana 7 version qualifier

* Clarify escape sequence detection lede on task

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

* Clarify "Remove escaping" state change

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

* Clarify confidence of tooltip content

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

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

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

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

(cherry picked from commit 48519f9ebb)

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

* fix some comments ❤️

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

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

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

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

* handle more cases

* minWidth > width to preserve mobile behaviour

* Better css

(cherry picked from commit fb0f30e30b)

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

* service account token calls complete

* service account tasks

* Update docs/sources/http_api/serviceaccount.md

* adding a token to the service account

* removed unused file

* refactor: review comments

* feat: add API key documentation

* fix: spelling

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

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

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

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

* Update docs/sources/http_api/serviceaccount.md

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

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

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

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

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

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

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

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

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

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

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

* Apply suggestions from code review

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

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

* refactor: based on review

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

* Apply suggestions from code review

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

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

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

* Apply suggestions from code review

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

* update based on review

* Fix formatting of bullet points

* formatting

* refcator

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

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

* Add documentation on new SAML signup option

* Accept documentation feedback

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

* Accept documentation feedback

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

* run prettier:write

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

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

Closes #44178

(cherry picked from commit bda3dd24e4)

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

* add SQL filter to annotation listing

* check annotation FGAC permissions before exposing them for commenting

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

* adding tests for annotation listing

* remove changes that got moved to a different PR

* unused var

* Update pkg/services/sqlstore/annotation.go

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

* remove unneeded check

* remove unneeded check

* undo accidental change

* undo accidental change

* doc update

* move tests

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

* accidental change

* cleanup

* error handling

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

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

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

* change icon

(cherry picked from commit 883ce5ad30)

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

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

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

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

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

* start at refactor of stripBaseFromUrl

(cherry picked from commit 416da59c43)

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

* Add tests for edit, delete and silence buttons

* Unify access-control helpers

* Fix import

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

* Improve buttons with data source explore permission

* Fix test

(cherry picked from commit 87383b1c8b)

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

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

* #47127: remove dead code

* #47127: lint fix

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

* #47127: fix testssssssss

* #47127: fix testssssssss

(cherry picked from commit f1a1070d41)

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

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

* change default to be parseable

* apply default values for buildInfo

(cherry picked from commit 59388bf546)

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

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

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

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

* only interpolate variables if the field is set

* Correctly type scenarioId which can be undefined

(cherry picked from commit b857f8339e)

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

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

* use open/close instead

(cherry picked from commit d95782845d)

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

* Update release notes

* Update changelog

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

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

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

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

* redirect users without permissions

* add permissions checks to routes

* add fgac to notifications and contact points

* fgac for notification policies

* fix mute timing authorization

* use consistent naming for checking grafana alertmanager

* tests for fgac in contact points and notification policies

* bump up timeout on rule editor test

* use new permissions util

* break out route evaluation into util

* Remove test timeout

* Change permissions for the alert-notifiers endpoint

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

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

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

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

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

* animation feedback

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

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

View File

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

View File

@@ -1,72 +1,7 @@
---
depends_on: []
kind: pipeline
name: pr-test-frontend
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
image: alpine:3.15
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.50/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
- commands:
- ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER}
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: gen-version
- commands:
- yarn install --immutable
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: yarn-install
- commands:
- yarn run prettier:check
- yarn run lint
- yarn run i18n:compile
- yarn run typecheck
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: lint-frontend
- commands:
- yarn run ci:test-frontend
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: test-frontend
trigger:
event:
- pull_request
paths:
exclude:
- '*.md'
- docs/**
- latest.json
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
depends_on: []
kind: pipeline
name: pr-test-backend
name: pr-test
node:
type: no-parallel
platform:
@@ -94,6 +29,12 @@ steps:
- make gen-go
image: grafana/build-container:1.5.5
name: wire-install
- commands:
- yarn install --immutable
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: yarn-install
- commands:
- ./bin/grabpl verify-drone
depends_on:
@@ -126,6 +67,17 @@ steps:
CGO_ENABLED: "1"
image: grafana/build-container:1.5.5
name: lint-backend
- commands:
- yarn run prettier:check
- yarn run lint
- yarn run i18n:compile
- yarn run typecheck
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: lint-frontend
- commands:
- ./bin/grabpl test-backend --edition oss
depends_on:
@@ -138,14 +90,20 @@ steps:
- wire-install
image: grafana/build-container:1.5.5
name: test-backend-integration
- commands:
- yarn run ci:test-frontend
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: test-frontend
trigger:
event:
- pull_request
paths:
exclude:
- '*.md'
- docs/**
- latest.json
type: docker
volumes:
- host:
@@ -188,19 +146,6 @@ steps:
- grabpl
image: grafana/build-container:1.5.5
name: yarn-install
- failure: ignore
image: grafana/drone-downstream
name: trigger-enterprise-downstream
settings:
params:
- SOURCE_BUILD_NUMBER=${DRONE_COMMIT}
- SOURCE_COMMIT=${DRONE_COMMIT}
- OSS_PULL_REQUEST=${DRONE_PULL_REQUEST}
repositories:
- grafana/grafana-enterprise@${DRONE_SOURCE_BRANCH}
server: https://drone.grafana.net
token:
from_secret: drone_token
- commands:
- ./bin/grabpl build-backend --jobs 8 --edition oss --build-id ${DRONE_BUILD_NUMBER}
--variants linux-amd64,linux-amd64-musl,darwin-amd64,windows-amd64,armv6
@@ -393,9 +338,7 @@ trigger:
- pull_request
paths:
exclude:
- '*.md'
- docs/**
- latest.json
type: docker
volumes:
- host:
@@ -477,9 +420,7 @@ trigger:
- pull_request
paths:
exclude:
- '*.md'
- docs/**
- latest.json
type: docker
volumes:
- host:
@@ -572,10 +513,8 @@ trigger:
- pull_request
paths:
include:
- '*.md'
- docs/**
- packages/**
- latest.json
type: docker
volumes:
- host:
@@ -669,68 +608,7 @@ volumes:
---
depends_on: []
kind: pipeline
name: main-test-frontend
node:
type: no-parallel
platform:
arch: amd64
os: linux
services: []
steps:
- commands:
- echo $DRONE_RUNNER_NAME
image: alpine:3.15
name: identify-runner
- commands:
- mkdir -p bin
- curl -fL -o bin/grabpl https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v2.9.50/grabpl
- chmod +x bin/grabpl
image: byrnedo/alpine-curl:0.1.8
name: grabpl
- commands:
- ./bin/grabpl gen-version --build-id ${DRONE_BUILD_NUMBER}
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: gen-version
- commands:
- yarn install --immutable
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: yarn-install
- commands:
- yarn run prettier:check
- yarn run lint
- yarn run i18n:compile
- yarn run typecheck
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: lint-frontend
- commands:
- yarn run ci:test-frontend
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: test-frontend
trigger:
branch: main
event:
- push
type: docker
volumes:
- host:
path: /var/run/docker.sock
name: docker
---
depends_on: []
kind: pipeline
name: main-test-backend
name: main-test
node:
type: no-parallel
platform:
@@ -758,6 +636,12 @@ steps:
- make gen-go
image: grafana/build-container:1.5.5
name: wire-install
- commands:
- yarn install --immutable
depends_on:
- grabpl
image: grafana/build-container:1.5.5
name: yarn-install
- commands:
- ./bin/grabpl verify-drone
depends_on:
@@ -790,6 +674,17 @@ steps:
CGO_ENABLED: "1"
image: grafana/build-container:1.5.5
name: lint-backend
- commands:
- yarn run prettier:check
- yarn run lint
- yarn run i18n:compile
- yarn run typecheck
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: lint-frontend
- commands:
- ./bin/grabpl test-backend --edition oss
depends_on:
@@ -802,6 +697,14 @@ steps:
- wire-install
image: grafana/build-container:1.5.5
name: test-backend-integration
- commands:
- yarn run ci:test-frontend
depends_on:
- yarn-install
environment:
TEST_MAX_WORKERS: 50%
image: grafana/build-container:1.5.5
name: test-frontend
trigger:
branch: main
event:
@@ -881,7 +784,6 @@ steps:
params:
- SOURCE_BUILD_NUMBER=${DRONE_COMMIT}
- SOURCE_COMMIT=${DRONE_COMMIT}
- OSS_PULL_REQUEST=${DRONE_PULL_REQUEST}
repositories:
- grafana/grafana-enterprise@main
server: https://drone.grafana.net
@@ -1316,8 +1218,7 @@ volumes:
medium: memory
---
depends_on:
- main-test-frontend
- main-test-backend
- main-test
- main-build-e2e-publish
- main-integration-tests
kind: pipeline
@@ -1406,8 +1307,7 @@ trigger:
type: docker
---
depends_on:
- main-test-frontend
- main-test-backend
- main-test
- main-build-e2e-publish
- main-integration-tests
- main-windows
@@ -1461,8 +1361,7 @@ volumes:
name: docker
---
depends_on:
- main-test-frontend
- main-test-backend
- main-test
- main-build-e2e-publish
- main-integration-tests
- main-windows
@@ -4667,6 +4566,6 @@ kind: secret
name: gcp_upload_artifacts_key
---
kind: signature
hmac: 1a18574b924be58b3568339b9e40a4fc926aa92d748b7e15c95919169e364a9f
hmac: d188e8dfe3fa4b599256de864ee0b6c6d5a05de6ebc3c34aa066c9fa65ea64a3
...

17
.github/CODEOWNERS vendored
View File

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

View File

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

View File

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

View File

@@ -20,7 +20,6 @@
"history", // we should bump this together with react-router-dom
"@mdx-js/react", // storybook peer-depends on it's 1.x version, we should upgrade this when we upgrade storybook
"monaco-editor", // due to us exposing this via @grafana/ui/CodeEditor's props bumping can break plugins
"node-fetch", // we should bump this once we move to esm modules
"react-hook-form", // due to us exposing these hooks via @grafana/ui form components bumping can break plugins
"react-icons", // jaeger-ui-components is being refactored to use @grafana/ui icons instead
"react-router-dom", // we should bump this together with history
@@ -29,6 +28,7 @@
"systemjs",
"copy-webpack-plugin", // try to upgrade with newer yarn release. Not working with 3.1.1
"ts-loader", // we should remove ts-loader and use babel-loader instead
"typescript", // >4.5.x doesn't seem to work on windows with pnp currently. probably similar to https://github.com/yarnpkg/berry/issues/3722
"ora" // we should bump this once we move to esm modules
],
"ignorePaths": ["packages/grafana-toolkit/package.json", "emails/**", "plugins-bundled/**", "**/mocks/**"],

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -11,7 +11,7 @@ jobs:
working-directory: './pr'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
path: './pr'
@@ -51,7 +51,7 @@ jobs:
working-directory: './base'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
path: './base'
ref: ${{ github.event.pull_request.base.ref }}
@@ -92,15 +92,15 @@ jobs:
GITHUB_STEP_NUMBER: 7
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
- name: Get built packages from pr
uses: actions/download-artifact@v3
uses: actions/download-artifact@v2
with:
name: buildPr
- name: Get built packages from base
uses: actions/download-artifact@v3
uses: actions/download-artifact@v2
with:
name: buildBase

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@ name: publish_docs
on:
push:
branches:
- v9.0.x
- v8.5.x
paths:
- 'docs/sources/**'
- 'packages/grafana-*/**'
@@ -14,10 +14,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v1
- run: git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync
- name: generate-packages-docs
uses: actions/setup-node@v3.2.0
uses: actions/setup-node@v2.5.1
id: generate-docs
with:
node-version: '16'

View File

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

View File

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

View File

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

View File

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

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

@@ -9,32 +9,32 @@ packageExtensions:
"@mdx-js/loader@1.6.22":
peerDependencies:
react: 17.0.1
"@storybook/addon-docs@6.4.21":
"@storybook/addon-docs@6.4.15":
peerDependencies:
"@storybook/manager-webpack5": 6.4.21
"@storybook/addon-essentials@6.4.21":
"@storybook/manager-webpack5": 6.4.15
"@storybook/addon-essentials@6.4.15":
peerDependencies:
"@storybook/components": 6.4.21
"@storybook/core-events": 6.4.21
"@storybook/manager-webpack5": 6.4.21
"@storybook/theming": 6.4.21
"@storybook/core-server@6.4.21":
"@storybook/components": 6.4.15
"@storybook/core-events": 6.4.15
"@storybook/manager-webpack5": 6.4.15
"@storybook/theming": 6.4.15
"@storybook/core-server@6.4.15":
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/core@6.4.21":
"@storybook/core@6.4.15":
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/manager-webpack5": 6.4.21
"@storybook/csf-tools@6.4.21":
"@storybook/manager-webpack5": 6.4.15
"@storybook/csf-tools@6.4.15":
peerDependencies:
"@babel/core": ^7.0.0
"@storybook/react@6.4.21":
"@storybook/react@6.4.15":
peerDependencies:
"@storybook/manager-webpack5": 6.4.21
"@storybook/manager-webpack5": 6.4.15
doctrine@3.0.0:
dependencies:
assert: 2.0.0
moveable@0.29.8:
moveable@0.28.0:
dependencies:
"@daybrush/utils": 1.6.0
framework-utils: ^1.1.0
@@ -49,7 +49,7 @@ packageExtensions:
react-compat-css-styled@1.0.8:
dependencies:
react-simple-compat: 1.2.1
react-compat-moveable@0.17.8:
react-compat-moveable@0.16.0:
dependencies:
"@egjs/agent": ^2.2.1
"@egjs/children-differ": ^1.0.1
@@ -78,4 +78,4 @@ plugins:
- path: .yarn/plugins/@yarnpkg/plugin-outdated.cjs
spec: "https://mskelton.dev/yarn-outdated/v2"
yarnPath: .yarn/releases/yarn-3.2.1.cjs
yarnPath: .yarn/releases/yarn-3.2.0.cjs

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -594,7 +594,7 @@
# LDAP background sync (Enterprise only)
# At 1 am every day
;sync_cron = "0 1 * * *"
;sync_cron = "0 0 1 * * *"
;active_sync_enabled = true
#################################### AWS ###########################
@@ -623,11 +623,6 @@
# Should be set for user-assigned identity and should be empty for system-assigned identity
;managed_identity_client_id =
#################################### Role-based Access Control ###########
[rbac]
;enabled = true
# If enabled, cache permissions in a in memory cache (Enterprise only)
;permission_cache = true
#################################### SMTP / Emailing ##########################
[smtp]
;enabled = false
@@ -903,7 +898,7 @@
#################################### Query History #############################
[query_history]
# Enable the Query history
;enabled = true
;enabled = false
#################################### Internal Grafana Metrics ##########################
# Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId
@@ -937,7 +932,6 @@
;url = https://grafana.com
#################################### Distributed tracing ############
# Opentracing is deprecated use opentelemetry instead
[tracing.jaeger]
# Enable by setting the address sending traces to jaeger (ex localhost:6831)
;address = localhost:6831
@@ -964,15 +958,6 @@
[tracing.opentelemetry.jaeger]
# jaeger destination (ex http://localhost:14268/api/traces)
; address = http://localhost:14268/api/traces
# Propagation specifies the text map propagation format: w3c, jaeger
; propagation = jaeger
# This is a configuration for OTLP exporter with GRPC protocol
[tracing.opentelemetry.otlp]
# otlp destination (ex localhost:4317)
; address = localhost:4317
# Propagation specifies the text map propagation format: w3c, jaeger
; propagation = w3c
#################################### External image storage ##########################
[external_image_storage]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -71,7 +71,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -177,7 +178,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -264,7 +266,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -351,7 +354,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -481,7 +485,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -568,7 +573,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -655,7 +661,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -785,7 +792,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -885,7 +893,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -973,7 +982,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1059,7 +1069,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1144,7 +1155,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1241,7 +1253,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1341,7 +1354,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1441,7 +1455,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1540,7 +1555,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1676,7 +1692,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1783,7 +1800,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -1891,7 +1909,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2021,7 +2040,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2108,7 +2128,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2219,7 +2240,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2334,7 +2356,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2437,7 +2460,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2540,7 +2564,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2676,7 +2701,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -2812,7 +2838,8 @@
"mode": "absolute",
"steps": [
{
"color": "green"
"color": "green",
"value": null
},
{
"color": "red",
@@ -3385,7 +3412,7 @@
}
],
"refresh": false,
"schemaVersion": 36,
"schemaVersion": 32,
"style": "dark",
"tags": [
"gdev",
@@ -3405,4 +3432,4 @@
"uid": "1KxMUdE7k",
"version": 5,
"weekStart": ""
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

@@ -1,6 +1,4 @@
---
aliases:
- /docs/grafana/latest/administration/api-keys/
description: This section contains information about API keys in Grafana
keywords:
- API keys
@@ -14,6 +12,6 @@ weight: 300
API Keys can be used to interact with Grafana HTTP APIs.
We recommend using service accounts instead of API keys if you are on Grafana 8.5+, for more information refer to [About service accounts]({{< relref "../service-accounts/about-service-accounts/#" >}}).
We recommend using service accounts instead of API keys if you are on Grafana 8.5+, for more information refer to [About service accounts]({{< relref "../service-accounts/about-service-accounts.md#">}}).
{{< section >}}

View File

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

View File

@@ -1,6 +1,4 @@
---
aliases:
- /docs/grafana/latest/administration/api-keys/create-api-key/
description: How to create an API key in Grafana
keywords:
- API keys
@@ -14,13 +12,13 @@ weight: 50
Create an API key when you want to manage your computed workload with a user.
For more information about API keys, refer to [About API keys in Grafana]({{< relref "about-api-keys/" >}}).
For more information about API keys, refer to [About API keys in Grafana]({{< relref "./about-api-keys.md">}}).
This topic shows you how to create an API key using the Grafana UI. You can also create an API key using the Grafana HTTP API. For more information about creating API keys via the API, refer to [Create API key via API]({{< relref "../../developers/http_api/create-api-tokens-for-org/#how-to-create-a-new-organization-and-an-api-token" >}}).
This topic shows you how to create an API key using the Grafana UI. You can also create an API key using the Grafana HTTP API. For more information about creating API keys via the API, refer to [Create API key via API]({{< relref "../../http_api/create-api-tokens-for-org.md#how-to-create-a-new-organization-and-an-api-token">}}).
## Before you begin:
- Ensure you have permission to create and edit API keys. For more information about permissions, refer to [About users and permissions]({{< relref "../manage-users-and-permissions/about-users-and-permissions/#" >}}).
- Ensure you have permission to create and edit API keys. For more information about permissions, refer to [About users and permissions]({{< relref "../manage-users-and-permissions/about-users-and-permissions.md#">}}).
**To create an API key:**

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,5 @@
---
aliases:
- /docs/grafana/latest/administration/manage-organizations/
- /docs/grafana/latest/manage-users/server-admin/
- /docs/grafana/latest/manage-users/server-admin/server-admin-manage-orgs/
description: Describes how to use organizations to isolate dashboard to users and
@@ -42,7 +41,7 @@ The following table summarizes the resources you can share and/or isolate using
The member of one organization cannot view dashboards assigned to another organization. However, a user can belong to multiple organizations.
Grafana Server Administrators are responsible for creating organizations. For more information about the Grafana Server Administrator role, refer to [Grafana server administrators]({{< relref "../manage-users-and-permissions/about-users-and-permissions/#Grafana server administrators" >}}).
Grafana Server Administrators are responsible for creating organizations. For more information about the Grafana Server Administrator role, refer to [Grafana server administrators]({{< relref "../manage-users-and-permissions/about-users-and-permissions.md#Grafana server administrators" >}}).
## View a list of organizations
@@ -80,9 +79,9 @@ Create an organization when you want to isolate dashboards and other resources f
1. On the **Preferences** tab, select a home dashboard, time zone, and week start.
For more information about preferences, refer to [Preferences]({{< relref "../preferences/" >}}).
For more information about preferences, refer to [Preferences]({{< relref "../preferences/_index.md" >}}).
For more information about adding users to an organization, refer to [Add a user to an organization]({{< relref "../manage-users-and-permissions/manage-server-users/add-remove-user-to-org/" >}}).
For more information about adding users to an organization, refer to [Add a user to an organization]({{< relref "../manage-users-and-permissions/manage-server-users/add-remove-user-to-org.md" >}}).
## Delete an organization

View File

@@ -22,7 +22,7 @@ You can also view important information about your account, such as the organiza
You can change your Grafana password at any time.
> **Note**: If your Grafana instance uses an <!--[external authentication provider]({{< relref "../../setup-grafana/configure-security/configure-authentication/" >}})--> external authentication provider, then you might not be able to change your password in Grafana. Contact your Grafana administrator for more information.
> **Note**: If your Grafana instance uses an <!--[external authentication provider]({{< relref "../../auth/_index.md">}})--> external authentication provider, then you might not be able to change your password in Grafana. Contact your Grafana administrator for more information.
**To change your password**:
@@ -47,7 +47,7 @@ Your profile includes your name, user name, and email address, which you can upd
## Edit your preferences
You can choose the way you would like data to appear in Grafana, including the UI theme, home dashboard, timezone, and first day of the week. You can set these preferences for your own account, for a team, for an organization, or Grafana-wide using configuration settings. Your user preferences take precedence over team, organization, and Grafana default preferences. For more information, see [Grafana preferences]({{< relref "../preferences/" >}}).
You can choose the way you would like data to appear in Grafana, including the UI theme, home dashboard, timezone, and first day of the week. You can set these preferences for your own account, for a team, for an organization, or Grafana-wide using configuration settings. Your user preferences take precedence over team, organization, and Grafana default preferences. For more information, see [Grafana preferences]({{< relref "../../administration/preferences/_index.md">}}).
- **UI theme** determines whether Grafana appears in light mode or dark mode. By default, UI theme is set to dark mode.
- **Home dashboard** refers to the dashboard you see when you sign in to Grafana. By default, this is set to the Home dashboard.
@@ -81,7 +81,7 @@ Every user is a member of at least one organization. You can have different role
1. Hover your cursor over the user icon in the lower-left corner of the page and click **Preferences**.
1. Scroll down to the **Organizations** section and review the following information:
- **Name**: The name of the organizations of which you are a member.
- **Role**: The role to which you are assigned in the organization. For more information about roles and permissions, refer to [Organization users and permissions]({{< relref "../manage-users-and-permissions/about-users-and-permissions/#organization-users-and-permissions" >}}).
- **Role**: The role to which you are assigned in the organization. For more information about roles and permissions, refer to [Organization users and permissions]({{< relref "../../administration/manage-users-and-permissions/about-users-and-permissions.md#organization-users-and-permissions" >}}).
- **Current**: Grafana indicates the organization that you are currently signed into as _Current_. If you are a member of multiple organizations, you can click **Select** to switch to that organization.
## View your Grafana sessions

View File

@@ -1,10 +1,10 @@
---
aliases:
- /docs/grafana/latest/administration/manage-users-and-permissions/about-users-and-permissions/
- /docs/grafana/latest/manage-users/
- /docs/grafana/latest/administration/manage-users-and-permissions/about-users-and-permissions/
- /docs/grafana/latest/permissions/overview/
- /docs/grafana/latest/permissions/
- /docs/grafana/latest/permissions/organization_roles/
- /docs/grafana/latest/permissions/overview/
title: About users and permissions
weight: 100
---
@@ -19,19 +19,17 @@ You can assign a user one of three types of permissions:
- Organization permissions: Manage access to dashboards, alerts, plugins, teams, playlists, and other resources for an entire organization. The available roles are Viewer, Editor, and Admin.
- Dashboard and folder permission: Manage access to dashboards and folders
> **Note**: If you are running Grafana Enterprise, you can also control access to data sources and use role-based access control to grant user access to read and write permissions to specific Grafana resources. For more information about access control options available with Grafana Enterprise, refer to [Grafana Enterprise user permissions features](#grafana-enterprise-user-permissions-features).
> **Note**: If you are running Grafana Enterprise, you can also control access to data sources and use fine-grained access control to grant read and write permissions for specific resources. For more information about access control options available with Grafana Enterprise, refer to [Grafana Enterprise user permissions features](#grafana-enterprise-user-permissions-features).
## Grafana server administrators
A Grafana server administrator manages server-wide settings and access to resources such as organizations, users, and licenses. Grafana includes a default server administrator that you can use to manage all of Grafana, or you can divide that responsibility among other server administrators that you create.
> **Note:** The server administrator role does not mean that the user is also a Grafana [organization administrator]({{< ref "#organization-roles" >}}).
A server administrator can perform the following tasks:
- Manage users and permissions
- Create, edit, and delete organizations
- View server-wide settings defined in the [Configuration]({{< relref "../../setup-grafana/configure-grafana/" >}}) file
- View server-wide settings defined in the [Configuration]({{< relref "../../administration/configuration.md" >}}) file
- View Grafana server statistics, including total users and active sessions
- Upgrade the server to Grafana Enterprise.
@@ -57,7 +55,7 @@ Permissions assigned to a user within an organization control the extent to whic
### Organization roles
Organization role-based permissions are global, which means that each permission level applies to all Grafana resources within an given organization. For example, an editor can see and update _all_ dashboards in an organization, unless those dashboards have been specifically restricted using [dashboard permissions]({{< relref "manage-dashboard-permissions/" >}}).
Organization role-based permissions are global, which means that each permission level applies to all Grafana resources within an given organization. For example, an editor can see and update _all_ dashboards in an organization, unless those dashboards have been specifically restricted using [dashboard permissions]({{< relref "manage-dashboard-permissions/_index.md">}}).
Grafana uses the following roles to control user access:
@@ -97,9 +95,9 @@ You can specify the following permissions to dashboards and folders.
- **Edit**: Can create and edit dashboards. Editors _cannot_ change folder or dashboard permissions, or add, edit, or delete folders.
- **View**: Can only view dashboards and folders.
For more information about assigning dashboard folder permissions, refer to [Grant dashboard folder permissions]({{< relref "manage-dashboard-permissions/#grant-dashboard-folder-permissions" >}}).
For more information about assigning dashboard folder permissions, refer to [Grant dashboard folder permissions]({{< relref "./manage-dashboard-permissions/_index.md#grant-dashboard-folder-permissions" >}}).
For more information about assigning dashboard permissions, refer to [Grant dashboard permissions]({{< relref "manage-dashboard-permissions/#grant-dashboard-permissions" >}}).
For more information about assigning dashboard permissions, refer to [Grant dashboard permissions]({{< relref "./manage-dashboard-permissions/_index.md#grant-dashboard-permissions" >}}).
## Editors with administrator permissions
@@ -109,18 +107,18 @@ If you have access to the Grafana server, you can modify the default editor role
This setting can be used to enable self-organizing teams to administer their own dashboards.
For more information about assigning administrator permissions to editors, refer to [Grant editors administrator permissions]({{< relref "manage-server-users/grant-editor-admin-permissions/" >}}).
For more information about assigning administrator permissions to editors, refer to [Grant editors administrator permissions]({{< relref "./manage-server-users/grant-editor-admin-permissions.md" >}}).
## Viewers with dashboard preview and Explore permissions
If you have access to the Grafana server, you can modify the default viewer role so that viewers can:
- Edit and preview dashboards, but cannot save their changes or create new dashboards.
- Access and use [Explore]({{< relref "../../explore/" >}}).
- Access and use [Explore]({{< relref "../../explore/_index.md" >}}).
Extending the viewer role is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries, but not be able to save or create new dashboards.
For more information about assigning dashboard preview permissions to viewers, refer to [Enable viewers to preview dashboards and use Explore]({{< relref "manage-dashboard-permissions/#enable-viewers-to-preview-dashboards-and-use-explore" >}}).
For more information about assigning dashboard preview permissions to viewers, refer to [Enable viewers to preview dashboards and use Explore]({{< relref "./manage-dashboard-permissions/_index.md#enable-viewers-to-preview-dashboards-and-use-explore" >}}).
## Teams and permissions
@@ -131,7 +129,7 @@ You can assign a team member one of the following permissions:
- **Member**: Includes the user as a member of the team. Members do not have team administrator privileges.
- **Admin**: Administrators have permission to manage various aspects of the team, including team membership, permissions, and settings.
Because teams exist inside an organization, the organization administrator can manage all teams. When the `editors_can_admin` setting is enabled, editors can create teams and manage teams that they create. For more information about the `editors_can_admin` setting, refer to [Grant editors administrator permissions]({{< relref "manage-server-users/grant-editor-admin-permissions/" >}}).
Because teams exist inside an organization, the organization administrator can manage all teams. When the `editors_can_admin` setting is enabled, editors can create teams and manage teams that they create. For more information about the `editors_can_admin` setting, refer to [Grant editors administrator permissions]({{< relref "./manage-server-users/grant-editor-admin-permissions.md" >}}).
## Grafana Enterprise user permissions features
@@ -140,19 +138,19 @@ While Grafana OSS includes a robust set of permissions and settings that you can
Grafana Enterprise provides the following permissions-related features:
- Data source permissions
- Role-based access control (RBAC)
- Fine-grained access control
### Data source permissions
By default, a user can query any data source in an organization, even if the data source is not linked to the user's dashboards.
Data source permissions enable you to restrict data source query permissions to specific **Users** and **Teams**. For more information about assigning data source permissions, refer to [Data source permissions]({{< relref "../../enterprise/datasource_permissions/" >}}).
Data source permissions enable you to restrict data source query permissions to specific **Users** and **Teams**. For more information about assigning data source permissions, refer to [Data source permissions]({{< relref "../../enterprise/datasource_permissions.md" >}}).
### Role-based access control
### Fine-grained access control
RBAC provides you a way of granting, changing, and revoking user read and write access to Grafana resources, such as users, reports, and authentication.
Fine-grained access control provides you a way of granting, changing, and revoking user read and write access to Grafana resources, such as users, reports, and authentication.
For more information about RBAC, refer to [Role-based access control]({{< relref "../../enterprise/access-control/" >}}).
For more information about fine-grained access control, refer to [Fine-grained access control]({{< relref "../../enterprise/access-control" >}}).
### Learn more

View File

@@ -1,7 +1,7 @@
---
aliases:
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-dashboard-permissions/
- /docs/grafana/latest/permissions/dashboard_folder_permissions/
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-dashboard-permissions/
title: Manage dashboard permissions
weight: 500
---
@@ -10,7 +10,7 @@ weight: 500
Dashboard and dasboard folder permissions enable you to grant a viewer the ability to edit and save dashboard changes, or limit an editor's permission to modify a dashboard.
For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions" >}}).
For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions">}}).
## Grant dashboard folder permissions
@@ -19,7 +19,7 @@ When you grant user permissions for folders, that setting applies to all dashboa
### Before you begin
- Ensure you have organization administrator privileges
- Identify the dashboard folder permissions you want to modify and the users or teams to which you want to grant access. For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions" >}}).
- Identify the dashboard folder permissions you want to modify and the users or teams to which you want to grant access. For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions">}}).
**To grant dashboard folder permissions**:
@@ -66,8 +66,6 @@ By default, the viewer organization role does not allow viewers to create dashbo
This modification is useful for public Grafana installations where you want anonymous users to be able to edit panels and queries but not save or create new dashboards.
> **Note**: If you use Grafana Enterprise and customize users' permissions using RBAC, the RBAC permissions override the functionality enabled by the `viewers_can_edit` flag.
### Before you begin
- Ensure that you have access to the Grafana server
@@ -76,7 +74,7 @@ This modification is useful for public Grafana installations where you want anon
1. Open the Grafana configuration file.
For more information about the Grafana configuration file and its location, refer to [Configuration]({{< relref "../../../setup-grafana/configure-grafana/" >}}).
For more information about the Grafana configuration file and its location, refer to [Configuration]({{< relref "../../../administration/configuration">}}).
1. Locate the `viewers_can_edit` parameter.
1. Set the `viewers_can_edit` value to `true`.
@@ -84,7 +82,7 @@ This modification is useful for public Grafana installations where you want anon
## Edit dashboard permissions
Edit dashboard permissions when you are want to enhance or restrict a user's access to a dashboard. For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions" >}}).
Edit dashboard permissions when you are want to enhance or restrict a user's access to a dashboard. For more information about dashboard permissions, refer to [Dashboard permissions]({{< relref "../about-users-and-permissions/#dashboard-permissions">}}).
### Before you begin
@@ -144,4 +142,4 @@ Dashboard permissions settings:
Result: You receive an error message that cannot override a higher permission with a lower permission in the same dashboard. User1 has administrator permissions.
> Refer to [Role-based access Control]({{< relref "../../../enterprise/access-control/" >}}) in Grafana Enterprise to understand how to use RBAC permissions to restrict access to dashboards, folders, administrative functions, and other resources.
> Refer to [Fine-grained access Control]({{< relref "../../../enterprise/access-control/_index.md" >}}) in Grafana Enterprise to understand how to use fine-grained permissions to restrict access to dashboards, folders, administrative functions, and other resources.

View File

@@ -1,7 +1,7 @@
---
aliases:
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/
- /docs/grafana/latest/manage-users/org-admin/
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-org-users/
title: Manage users in an organization
weight: 400
---
@@ -10,6 +10,6 @@ weight: 400
Organization administrators can invite users to join their organization. Organization users have access to organization resources based on their role, which is **Admin**, **Editor**, or **Viewer**. Permissions associated with each role determine the tasks a user can perform in the system.
For more information about organization user permissions, refer to [Organization users and permissions]({{< relref "../about-users-and-permissions/#organization-users-and-permissions" >}}).
For more information about organization user permissions, refer to [Organization users and permissions]({{< relref "../about-users-and-permissions/#organization-users-and-permissions">}}).
{{< section >}}

View File

@@ -7,7 +7,7 @@ weight: 30
# Change a user's organization permissions
Update user permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles" >}}).
Update user permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles">}}).
## Before you begin
@@ -25,4 +25,4 @@ Update user permissions when you want to enhance or restrict a user's access to
1. Select the role that you want to assign.
1. Click **Update**.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [change a user's organization permissions]({{< relref "../manage-server-users/change-user-org-permissions/" >}}) in the Server Admin section.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can also [change a user's organization permissions]({{< relref "../../manage-users-and-permissions/manage-server-users/change-user-org-permissions.md" >}}) in the Server Admin section.

View File

@@ -12,13 +12,13 @@ When you invite users to join an organization, you assign the **Admin**, **Edito
- If you know that the user already has access Grafana and you know their user name, then you issue an invitation by entering their user name.
- If the user is new to Grafana, then use their email address to issue an invitation. The system automatically creates the user account on first sign in.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can also manually [add a user to an organization]({{< relref "../manage-server-users/add-remove-user-to-org/" >}}).
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can also manually [add a user to an organization]({{< relref "../../manage-users-and-permissions/manage-server-users/add-remove-user-to-org.md" >}}).
## Before you begin
- Ensure you have organization administrator privileges.
- If the user already has access to Grafana, obtain their user name.
- Determine the permissions you want to assign to the user. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles" >}}).
- Determine the permissions you want to assign to the user. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles">}}).
**To invite or add an existing user account to your organization**:
@@ -35,7 +35,7 @@ When you invite users to join an organization, you assign the **Admin**, **Edito
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Email or username | Either the email or username that the user will use to sign in to Grafana. |
| Name | The user's name. |
| Role | Click the organization role to assign this user. For more information about organization roles, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles" >}}).. |
| Role | Click the organization role to assign this user. For more information about organization roles, refer to [Organization roles]({{< relref "../about-users-and-permissions#organization-roles" >}}).. |
| Send invite email | Switch to on if your organization has configured. The system sends an email to the user inviting them to sign in to Grafana and join the organization. Switch to off if you are not using email. The user can sign in to Grafana with the email or username you entered. |
1. Click **Submit**.

View File

@@ -25,4 +25,4 @@ This action does not remove the user account from the Grafana server.
1. Click the red **X** to remove the user from the organization.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [remove a user from an organization]({{< relref "../manage-server-users/add-remove-user-to-org/#remove-a-user-from-an-organization" >}}) on the Users page of the Server Admin section.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can also [remove a user from an organization]({{< relref "../../manage-users-and-permissions/manage-server-users/add-remove-user-to-org.md#remove-a-user-from-an-organization" >}}) on the Users page of the Server Admin section.

View File

@@ -20,4 +20,4 @@ You can see a list of users with accounts in your Grafana organization. If neces
![Org Admin user list](/static/img/docs/manage-users/org-user-list-7-3.png)
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can also [view a global list of users]({{< relref "../manage-server-users/view-list-users/" >}}) in the Server Admin section of Grafana.
> **Note:** If you have [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can also [view a global list of users]({{< relref "../../manage-users-and-permissions/manage-server-users/view-list-users.md" >}}) in the Server Admin section of Grafana.

View File

@@ -1,8 +1,8 @@
---
aliases:
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/
- /docs/grafana/latest/manage-users/server-admin/
- /docs/grafana/latest/manage-users/server-admin/server-admin-manage-users/
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/
title: Manage users globally
weight: 300
---
@@ -11,10 +11,10 @@ weight: 300
A _user_ is defined as any individual who can log in to Grafana. Each user is associated with a _role_ that includes _permissions_. Permissions determine the tasks a user can perform in the system.
If you have [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions in Grafana, you can manage all users for a Grafana instance in the Server Admin section:
If you have [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions in Grafana, you can manage all users for a Grafana instance in the Server Admin section:
{{< section >}}
If you have [organization administrator]({{< relref "../about-users-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, refer to [Manage users in a organization]({{< relref "../manage-org-users/" >}}).
If you have [organization administrator]({{< relref "../about-users-and-permissions.md#organization-roles">}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, refer to [Manage users in a organization]({{< relref "../../manage-users-and-permissions/manage-org-users/_index.md" >}}).
For more information about users and permissions, refer to [About users and permissions]({{< relref "../about-users-and-permissions/" >}}).
For more information about users and permissions, refer to [About users and permissions]({{< relref "../about-users-and-permissions">}}).

View File

@@ -1,6 +1,5 @@
---
aliases:
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/add-remove-user-to-org/
- /docs/grafana/latest/administration/manage-users-and-permissions/manage-server-users/add-user-to-org/
title: Add or remove a user from an organization
weight: 30
@@ -14,8 +13,8 @@ You are required to specify an Admin role for each organization. The first user
## Before you begin
- [Create an organization]({{< relref "../../manage-organizations/" >}})
- [Add a user]({{< relref "add-user/" >}}) to Grafana
- [Create an organization]({{< relref "../../manage-organizations/_index.md">}})
- [Add a user]({{< relref "./add-user.md">}}) to Grafana
- Ensure you have Grafana server administrator privileges
**To add a user to an organization**:
@@ -26,13 +25,13 @@ You are required to specify an Admin role for each organization. The first user
1. In the **Organizations** section, click **Add user to organization**.
1. Select an organization and a role.
For more information about user permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles" >}}).
For more information about user permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles">}}).
1. Click **Add to organization**.
The next time the user signs in, they will be able to navigate to their new organization using the Switch Organizations option in the user profile menu.
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [invite a user to join an organization]({{< relref "../manage-org-users/invite-user-join-org/" >}}).
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions.md#organization-roles">}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can still [invite a user to join an organization]({{< relref "../../manage-users-and-permissions/manage-org-users/invite-user-join-org.md" >}}).
# Remove a user from an organization
@@ -50,4 +49,4 @@ Remove a user from an organization when they no longer require access to the das
1. In the **Organization** section, click **Remove from organization** next to the organization from which you want to remove the user.
1. Click **Confirm removal**.
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can still [remove a user from an organization]({{< relref "../manage-org-users/remove-user-from-org/" >}}) in the Users section of organization configuration.
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions.md#organization-roles">}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can still [remove a user from an organization]({{< relref "../../manage-users-and-permissions/manage-org-users/remove-user-from-org.md" >}}) in the Users section of organization configuration.

View File

@@ -9,7 +9,7 @@ weight: 10
Add users when you want to manually provide individuals with access to Grafana.
When you create a user using this method, you must create their password. The user does not receive a notification by email. To invite a user to Grafana and allow them to create their own password, [invite a user to join an organization]({{< relref "../manage-org-users/invite-user-join-org/" >}}).
When you create a user using this method, you must create their password. The user does not receive a notification by email. To invite a user to Grafana and allow them to create their own password, [invite a user to join an organization]({{< relref "../manage-org-users/invite-user-join-org.md">}}).
When you configure advanced authentication using Oauth, SAML, LDAP, or the Auth proxy, users are created automatically.
@@ -24,6 +24,6 @@ When you configure advanced authentication using Oauth, SAML, LDAP, or the Auth
1. Click **New user**.
1. Complete the fields and click **Create user**.
When you create a user, the system assigns the user viewer permissions in a default organization, which you can change. You can now [add a user to a second organization]({{< relref "add-remove-user-to-org/" >}}).
When you create a user, the system assigns the user viewer permissions in a default organization, which you can change. You can now [add a user to a second organization]({{< relref "./add-remove-user-to-org.md">}}).
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions/#organization-roles" >}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}) permissions, you can still add users by [inviting a user to join an organization]({{< relref "../manage-org-users/invite-user-join-org/" >}}).
> **Note:** If you have [organization administrator]({{< relref "../about-users-and-permissions.md#organization-roles">}}) permissions and _not_ [server administrator]({{< relref "../about-users-and-permissions.md#grafana-server-administrators">}}) permissions, you can still add users by [inviting a user to join an organization]({{< relref "../../manage-users-and-permissions/manage-org-users/invite-user-join-org.md" >}}).

View File

@@ -7,13 +7,13 @@ weight: 20
# Assign or remove Grafana server administrator privileges
Grafana server administrators are responsible for creating users, organizations, and managing permissions. For more information about the server administration role, refer to [Grafana server administrators]({{< relref "../about-users-and-permissions/#grafana-server-administrators" >}}).
Grafana server administrators are responsible for creating users, organizations, and managing permissions. For more information about the server administration role, refer to [Grafana server administrators]({{< relref "../about-users-and-permissions/#grafana-server-administrators">}}).
> **Note:** Server administrators are "super-admins" with full permissions to create, read, update, and delete all resources and users in all organizations, as well as update global settings such as licenses. Only grant this permission to trusted users.
## Before you begin
- [Add a user]({{< relref "add-user/" >}})
- [Add a user]({{< relref "./add-user.md">}})
- Ensure you have Grafana server administrator privileges
**To assign or remove Grafana administrator privileges**:

View File

@@ -7,11 +7,11 @@ weight: 50
# Change a user's organization permissions
Update organization permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles" >}}).
Update organization permissions when you want to enhance or restrict a user's access to organization resources. For more information about organization permissions, refer to [Organization roles]({{< relref "../about-users-and-permissions/#organization-roles">}}).
## Before you begin
- [Add a user to an organization]({{< relref "add-remove-user-to-org/" >}})
- [Add a user to an organization]({{< relref "./add-remove-user-to-org.md">}})
- Ensure you have Grafana server administrator privileges
**To change a user's organization permissions**:

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