Compare commits

...

219 Commits

Author SHA1 Message Date
Grot (@grafanabot)
e72061a129 "Release: Updated versions in package to 7.5.10" (#36792) 2021-07-15 13:06:26 +02:00
Marcus Andersson
388918c2cb [v7.5.x] Transformations: add 'prepare time series' transformer (#36749)
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2021-07-15 10:36:18 +02:00
Dimitris Sotirakis
7a75259aab Remove verify-drone from windows (#36775) 2021-07-15 11:25:32 +03:00
Grot (@grafanabot)
50a07672e6 Update queries.md (#31941) (#36764)
* Update queries.md

Completing some examples to allow newbie people to understand relative time and time shift time

* Update docs/sources/panels/queries.md

Co-authored-by: Geshi <ohayo@geshii.moe>

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Geshi <ohayo@geshii.moe>
(cherry picked from commit e8d5b2431e)

Co-authored-by: castillo92 <37965565+castillo92@users.noreply.github.com>
2021-07-14 18:55:43 +02:00
Grot (@grafanabot)
c5cf127aa6 Updated content to specify method to use to get keyboard shortcuts wh… (#36084) (#36087)
* Updated content to specify method to use to get keyboard shortcuts when user is on Windows.

* Added changes from doc review.

(cherry picked from commit 5da8f3e258)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-06-23 19:08:30 +02:00
Andrej Ocenas
3c1492a0f3 ReleaseNotes: Updated changelog and release notes for 7.5.9 (#36057) (#36077)
* ReleaseNotes: Updated changelog and release notes for 7.5.9

* Add link to notes

* Apply suggestions from code review

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit 49a64f8d44)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2021-06-23 16:04:09 +02:00
Grot (@grafanabot)
cbffb81cab "Release: Updated versions in package to 7.5.9" (#36056) 2021-06-23 10:15:47 +02:00
Torkel Ödegaard
8d5a9f30bc Login: Fixes Unauthorized message showing when on login page or snapshot page (#35311) (#35880)
(cherry picked from commit ce513e4637)
2021-06-17 14:39:52 +02:00
Piotr Jamróz
cf738cb1b9 ReleaseNotes: Updated changelog and release notes for 7.5.8 (#35703) (#35822)
* ReleaseNotes: Updated changelog and release notes for 7.5.8

* Add missing 7.5.8 link

* Update 7.5.8 release date

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
(cherry picked from commit ef59020f3d)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2021-06-16 16:12:04 +02:00
Leonard Gram
0184ed92b5 CI: Upgrade pipeline tool to use main (#35804)
* Revert "CI: try to force v7.5.x instead of master (#35799)"

This reverts commit 713da83ef1.

* Revert "CI: supports move from master to main in 7.5.x release branch (#35747)"

This reverts commit 300344dc15.

* CI: upgrade build pipeline v0.5.43->v0.5.58

* CI: change master -> main in drone scripts
2021-06-16 12:33:38 +02:00
Leonard Gram
713da83ef1 CI: try to force v7.5.x instead of master (#35799) 2021-06-16 11:17:08 +02:00
Leonard Gram
300344dc15 CI: supports move from master to main in 7.5.x release branch (#35747)
* CI: supports move from master to main in 7.5.x release branch

* CI: points to the correct branch/tag of oss

* CI: one more master -> main
2021-06-16 09:24:24 +02:00
Grot (@grafanabot)
45894f90ba "Release: Updated versions in package to 7.5.8" (#35701) 2021-06-15 10:50:44 +02:00
Jack Westbrook
64387f0ac1 Chore: Bump acorn and lodash-es (#35650) 2021-06-15 09:46:24 +02:00
Grot (@grafanabot)
90d5fc9d87 Snapshots: Remove dashboard links from snapshots (#35567) (#35585)
(cherry picked from commit 4907d09ffe)

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2021-06-11 17:45:37 +02:00
Javier Palomo
7bbeea5121 [v7.5.x] Datasource: Allow configuring MaxConnsPerHost (#35519)
Allow configuring MaxConnsPerHost for HTTP data sources.

Ref #35321 
Ref #35257
2021-06-10 17:13:37 +02:00
Robby Milo
544299f9db Remove docs sync from v7.5.x (#35443) 2021-06-09 18:33:12 +02:00
Grot (@grafanabot)
fe75f4ae2c "Release: Updated versions in package to 7.5.7" (#35412) 2021-06-09 17:03:45 +03:00
Dimitris Sotirakis
d30b780383 Add max_idle_connections_per_host to config (#35365) 2021-06-08 13:41:45 +02:00
Dimitris Sotirakis
c4973eb13d Update go.sum to fix failing enterprise pipeline (#35353) 2021-06-08 10:33:57 +02:00
Dimitris Sotirakis
43e7e696e8 [v7.5.x] HTTP Client: Introduce go-conntrack (#35321)
* Introduce go-conntrack into http transport

* Fix linting

* Add sanitize label name for datasource names

* Fix tests - add one to check missing datasource name

* Fix more tests

* Remove DialWithTracing()
2021-06-07 16:17:18 +02:00
Grot (@grafanabot)
39cbd2fc4e Fix Markdown syntax in enterprise/license/_index.md (#34683) (#35210)
(cherry picked from commit 4ee037f523)

Co-authored-by: Alexandre de Verteuil <alexandre@grafana.com>
2021-06-03 20:23:33 +02:00
Grot (@grafanabot)
b275f65366 Update annotations.md (#33218) (#35138)
(cherry picked from commit 87af88e04a)

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-06-02 22:56:08 +02:00
Grot (@grafanabot)
ec274a275a Docs: Add query caching to enterprise docs page (#34751) (#35025)
* add query caching to enterprise docs page

* Update docs/sources/enterprise/_index.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit 9bd823bac3)

Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2021-06-01 11:06:41 +02:00
Alex Khomenko
8a6f48b841 [7.5.x] Admin: hide per role counts for licensed users (#34994)
* Delete renamed file

* cherry-pick 05f3161f8e
2021-05-31 16:49:00 +02:00
Robby Milo
ede2a61809 cleanup shortcodes, image paths (#34827) 2021-05-28 11:31:48 +02:00
Arve Knudsen
c17faa52f0 Security: Upgrade Thrift dependency (#34698) (#34702)
* Security: Upgrade Thrift dependency (#34698)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 42f33630c7)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Upgrade Jaeger

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2021-05-26 10:43:09 +02:00
Grot (@grafanabot)
d802b852d8 Docs: Fix Quick Start link on Geting Started Influx page (#34549) (#34603)
Square brackets were used for the URL instead of parentheses, causing the markup to be displayed as literal text.

(cherry picked from commit abe5c06d69)

Co-authored by: Matthew Turland <tobias382@gmail.com>
2021-05-24 18:33:25 +02:00
Serge Zaitsev
8e6014702b Add link to release notes v7.5.7 (#34460) (#34474)
* Add link to release notes v7.5.7 (#34460)

(cherry picked from commit 07302faec2)

* Update docs/sources/release-notes/_index.md

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

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2021-05-20 12:02:29 +02:00
achatterjee-grafana
19b7e01172 Update 7.5.x landing page (#34447) 2021-05-19 19:01:45 -04:00
Serge Zaitsev
d137f4f23f ReleaseNotes: Updated changelog and release notes for 7.5.7 (#34383) (#34428)
* ReleaseNotes: Updated changelog and release notes for 7.5.7

* Move colon into the emphasised section

* Move colon into the emphasised section

* Renamed PR title

* Update PR title

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
(cherry picked from commit ec9b4806d8)

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2021-05-19 18:42:48 +02:00
Grot (@grafanabot)
91de51771c Updated relref to "Configuring exemplars" section (#34240) (#34243)
(cherry picked from commit c630393cf4)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-05-17 15:16:45 -04:00
Grot (@grafanabot)
a934d01733 Added exemplar topic (#34147) (#34226)
* Added topic and definition.

* More changes.

* Update docs/sources/basics/exemplars.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Update docs/sources/basics/exemplars.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Update docs/sources/basics/exemplars.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Added the time series topic back.

* Update docs/sources/basics/exemplars.md

* Updated title.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
(cherry picked from commit 315ca109e1)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-05-17 18:32:41 +02:00
Marcus Efraimsson
310ab323c8 Quota: Do not count folders towards dashboard quota (#32519) (#34025) 2021-05-17 13:05:15 +02:00
Grot (@grafanabot)
dcfc83d6f3 Instructions to separate emails with semicolons (#32499) (#34138)
(cherry picked from commit 52f9b96a8c)

Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2021-05-14 13:10:55 -04:00
Marcus Efraimsson
68f00c739a Docs: Remove documentation of v8 generic OAuth feature (#34018) 2021-05-12 18:50:29 +02:00
Grot (@grafanabot)
774ffd939c Annotations: Prevent orphaned annotation tags cleanup when no annotations were cleaned (#33957) (#33975)
Fixes #33948

Co-authored-by: Anatoly Fayngelerin <afayngelerin@dropbox.com>
(cherry picked from commit b0094b325e)

Co-authored-by: afayngelerindbx <38990103+afayngelerindbx@users.noreply.github.com>
2021-05-12 11:52:30 +02:00
Grot (@grafanabot)
a574f97b79 [GH-33898] Add missing --no-cache to Dockerfile. (#33906) (#33935)
(cherry picked from commit 752a0f3a65)

Co-authored-by: Ben van B <030@users.noreply.github.com>
2021-05-11 16:16:19 +02:00
Grot (@grafanabot)
7de8959f6a ReleaseNotes: Updated changelog and release notes for 7.5.6 (#33932) (#33936)
* ReleaseNotes: Updated changelog and release notes for 7.5.6

* Update release index

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit b3c4b08f03)
2021-05-11 16:06:31 +02:00
Giordano Ricci
5fdad5bfe4 Stop hoisting @icons/material (#33922)
* Revert "Chore: fix react-color version in yarn.lock (#33914)"

This reverts commit 45d09a0cf0.

* explicitly do not hoist @icons/material
2021-05-11 14:02:27 +02:00
Giordano Ricci
45d09a0cf0 Chore: fix react-color version in yarn.lock (#33914) 2021-05-11 13:09:17 +02:00
Grot (@grafanabot)
9bc7f698b4 "Release: Updated versions in package to 7.5.6" (#33909) 2021-05-11 12:10:20 +02:00
Grot (@grafanabot)
d0a8e241e0 Loki: fix label browser crashing when + typed (#33900) (#33901)
(cherry picked from commit 46abef7800)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-05-11 10:40:41 +02:00
Grot (@grafanabot)
28edbbbbbb Document hide_version flag (#33670) (#33881)
Unauthenticated users can be barred from being shown the current Grafana server version since https://github.com/grafana/grafana/pull/24919

(cherry picked from commit 2ff36fa47b)

Co-authored-by: Tristan Deloche <tde@hey.com>
2021-05-11 00:40:08 +02:00
Grot (@grafanabot)
0e8d0be72a Add isolation level db configuration parameter (#33830) (#33878)
* add isolation level db configuration parameter

* add isolation_level to default.ini and sample.ini

* add note that only mysql supports isolation levels for now

* mention isolation_level in the documentation

* Update docs/sources/administration/configuration.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 7367cfc0a3)

Co-authored-by: Serge Zaitsev <serge.zaitsev@grafana.com>
2021-05-10 22:27:05 +02:00
Grot (@grafanabot)
b86d371aab Sanitize PromLink button (#33874) (#33876)
(cherry picked from commit 7b5223bf19)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-05-10 21:33:17 +02:00
Grot (@grafanabot)
d2837c50f9 Removed content as per MarcusE's suggestion in https://github.com/grafana/grafana/issues/33822. (#33870) (#33872)
(cherry picked from commit 076f076961)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-05-10 20:22:18 +02:00
Grot (@grafanabot)
cf389959d2 Docs feedback: /administration/provisioning.md (#33804) (#33842)
Indicate that the AWS sigV4* jsonData and secureJsonData fields are supported in the Prometheus Datasource.

(cherry picked from commit 0af75106e9)

Co-authored-by: Douglas Thrift <douglaswth@gmail.com>
2021-05-10 11:02:17 -07:00
Grot (@grafanabot)
0083c10d6b Docs: delete from high availability docs references to removed configurations related to session storage (#33827) (#33851)
* docs: delete from high availability docs references to removed configurations related to session storage

* docs: remove session storage mention and focus on the auth token implementation

(cherry picked from commit 382fcca530)

Co-authored-by: Daniel dos Santos Pereira <danield1591998@gmail.com>
2021-05-10 16:12:25 +02:00
Grot (@grafanabot)
d7a58503ba Docs: Update _index.md (#33797) (#33799)
(cherry picked from commit e407a092fb)

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-05-06 23:37:23 +02:00
Grot (@grafanabot)
ebcc50e9bd Docs: Update installation.md (#33656) (#33703)
(cherry picked from commit 985331e813)

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-05-04 18:41:38 +02:00
Grot (@grafanabot)
fccc972c1a GraphNG: uPlot 1.6.9 (#33598) (#33612)
(cherry picked from commit 5bf76ce881)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2021-05-04 09:14:22 -05:00
Grot (@grafanabot)
8dbc61ed03 dont consider invalid email address a failed email (#33671) (#33681)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit 06dc2b24bf)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-05-04 12:43:22 +02:00
Grot (@grafanabot)
225e795f95 InfluxDB: Improve measurement-autocomplete behavior in query editor (#33494) (#33625)
* InfluxDB: Improve measurement-autocomplete behavior

* reverted changes of the previous commit

* add debounce to measurement-autocomplete

(cherry picked from commit 4506af3be7)

Co-authored-by: Gábor Farkas <gabor.farkas@gmail.com>
2021-05-03 12:02:08 +02:00
Grot (@grafanabot)
80f73af0e4 add template for dashboard url parameters (#33549) (#33588)
* Update dashboard-links.md

parameters with plain text like `var-something=value` can make confusion.
template it to clarify .

* describe way for template link.

(cherry picked from commit 93c39ca18c)

Co-authored-by: Nagle Zhang <nagle.zhang@sap.com>
2021-04-30 20:58:25 +02:00
Grot (@grafanabot)
7b0a7531e3 Add note to Snapshot API doc to specify that user has to provide the entire dashboard model (#33572) (#33586)
* Added note as suggested by Macus E.

* Update docs/sources/http_api/snapshot.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit 599a9b9a6d)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-04-30 19:37:47 +02:00
Grot (@grafanabot)
d7562616df Update team.md (#33454) (#33536)
(cherry picked from commit adc68a310e)

Co-authored-by: changdingfang <245292011@qq.com>
2021-04-29 11:37:01 -04:00
achatterjee-grafana
7d26cb23d1 Removed duplicate file "dashboard_folder_permissions.md (#33497) 2021-04-28 14:23:07 -04:00
Grot (@grafanabot)
e0a1cd2ee9 Document customQueryParameters for prometheus datasource provisioning (#33440) (#33495)
* Document customQueryParameters for prometheus datasource provisioning

The customQueryParameters option was added to prometheus datasources in https://github.com/grafana/grafana/pull/19121.  This PR updates the "provisioning" documentation to contain a reference to this in the `jsonData` options for a prometheus datasource.

* Update docs/sources/administration/provisioning.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 c56763c42d)

Co-authored-by: Aaron Ecay <aaronecay@gmail.com>
2021-04-28 19:23:05 +02:00
Grot (@grafanabot)
b6c41104d3 ReleaseNotes: Updated changelog and release notes for 7.5.5 (#33473) (#33492)
* ReleaseNotes: Updated changelog and release notes for 7.5.5

* Add release notes to index.md

* Update release-notes-7-5-5.md

* Update CHANGELOG.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit 08db0435bb)
2021-04-28 18:27:38 +02:00
Grot (@grafanabot)
6780f18bfe Documentation: Update developer-guide.md (#33478) (#33490)
(cherry picked from commit 7509c6cbc4)

Co-authored-by: Gang Chen <13298548+MoonBall@users.noreply.github.com>
2021-04-28 18:00:54 +02:00
Grot (@grafanabot)
00d3b84c04 add closed parenthesis to fix a hyperlink (#33471) (#33481)
Fix a missing character that prevents the hyperlink from rendering correctly.

(cherry picked from commit 86a57d17d2)

Co-authored-by: Mitch Seaman <mjseaman@users.noreply.github.com>
2021-04-28 09:36:28 -04:00
Grot (@grafanabot)
b5190ee547 "Release: Updated versions in package to 7.5.5" (#33469) 2021-04-28 12:11:10 +02:00
Grot (@grafanabot)
8b72772444 GraphNG: Fix exemplars window position (#33427) (#33462)
(cherry picked from commit 70bafc2725)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-04-28 11:05:05 +02:00
Grot (@grafanabot)
2303e0fb18 Remove field limitation from slack notification (#33113) (#33455)
(cherry picked from commit b3ce655b67)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2021-04-28 08:38:22 +02:00
Ivana Huckova
c95500b9ba Prometheus: Support POST in template variables (#33321) (#33441)
* If POST, pass params as data not in url string

* Fix metricNameAndLabelsQuery

* Improve test for new functionality

* Add multiple parameters in test scenarios

* Change urlParams to object

(cherry picked from commit 084066c712)
2021-04-27 21:08:50 +02:00
Carl Bergquist
e4d4fa6623 Instrumentation: Add success rate metrics for email notifications (#33359) (#33409)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit 58a325a4e4)
2021-04-27 12:10:32 +02:00
Grot (@grafanabot)
dda1c80431 Use either moment objects (for absolute times in the datepicker) or string (for relative time) (#33315) (#33406)
(cherry picked from commit 3ee925610a)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2021-04-27 10:45:49 +02:00
Grot (@grafanabot)
aee6df674c Docs: Removed type from find annotations example. (#33399) (#33403) 2021-04-27 09:00:43 +02:00
Torkel Ödegaard
fc11be7250 [v7.5.x]: FrontendMetrics: Adds new backend api that frontend can use to push frontend measurements and counters to prometheus (#33255)
* Backport of https://github.com/grafana/grafana/pull/32593

* Update prometheus.yml
2021-04-23 10:00:48 +02:00
Grot (@grafanabot)
37d1df05fd Updated label for add panel. (#33285) (#33286)
(cherry picked from commit 463520c03c)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-04-22 20:46:54 +02:00
Grot (@grafanabot)
538f992aee Bug: Add git to Dockerfile.ubuntu (#33247) (#33248)
* Add git to Dockerfile.ubuntu

* Use apt-get

* Add quiet flag

* Update Dockerfile.ubuntu

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 6acb99afde)

Co-authored-by: Dimitris Sotirakis <dimitrios.sotirakis@grafana.com>
2021-04-22 09:36:53 +02:00
Torkel Ödegaard
ceeb381eae Docs: Sync latest master docs with 7.5.x (#33156)
* Docs: Sync latest master docs with 7.5.x

* remove some remaining next aliases and links

* Docs: Removed v8 doc changes

* fixed merge issue
2021-04-22 07:32:32 +02:00
Grot (@grafanabot)
5ee4c694ea Docs: Update getting-started-influxdb.md (#33234) (#33241)
* Update getting-started-influxdb.md

* Merge branch 'master' into oddlittlebird-patch-6

(cherry picked from commit 8ea1470893)

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-04-21 22:35:45 +02:00
achatterjee-grafana
b61fc8bb7b Doc: Document the X-Grafana-Org-Id HTTP header (#32478) (#33239)
* Doc: Document the X-Grafana-Org-Id HTTP header

* Update docs/sources/http_api/auth.md

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

* update the auth.md with X-Grafana-Org-Id

* remove empty line

* Update docs/sources/http_api/auth.md

* Update docs/sources/http_api/auth.md

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

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

Co-authored-by: ying-jeanne <74549700+ying-jeanne@users.noreply.github.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2021-04-21 22:26:04 +02:00
Grot (@grafanabot)
713dec5268 Minor Changes in Auditing.md (#31435) (#33238)
* Improved glossary

* Minor Changes Test

Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
(cherry picked from commit d97e1b685b)

Co-authored-by: Carrie Crowe <36338913+carriecrowe1138@users.noreply.github.com>
2021-04-21 22:02:32 +02:00
Grot (@grafanabot)
16e03f34ba Docs: Add license check endpoint doc (#32987) (#33236)
* Docs: Add license check endpoint doc

* Change request example

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

* Change response example

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

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
(cherry picked from commit 711cf47b41)

Co-authored-by: Tania B <yalyna.ts@gmail.com>
2021-04-21 21:58:44 +02:00
Marcus Efraimsson
2b0cc8c9b4 Postgres: Fix time group macro when TimescaleDB is enabled and interval is less than a second (#33153) (#33219)
Fixing a special case with time group macro when
using TimescaleDB and interval is lower than a second.

Fixes #33124

(cherry picked from commit dd0ba96d7c)
2021-04-21 16:55:59 +02:00
Gábor Farkas
051994d758 Docs: InfluxDB doc improvements (#32815) (#33185)
* Create getting-started-influxdb.md

* Update getting-started-prometheus.md

* Update getting-started-sql.md

* data source edits

* single source intro

* Create first-step.md

* Update influxdb.md

* Update getting-started-influxdb.md

* Update influxdb.md

* break up long file

* Update influxdb-templates.md

* more updates

* Update _index.md

* Update _index.md

* Update getting-started-sql.md

* Update _index.md

* edits

* Update docs/sources/datasources/influxdb/_index.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Delete influxdb.md

* Update getting-started-influxdb.md

* Update influx-flux.md

* Update _index.md

* Update getting-started-influxdb.md

* Update getting-started-influxdb.md

* content

* content changes

* Update _index.md

* link fixes

* Update getting-started-influxdb.md

* Update getting-started-influxdb.md

* Merge branch 'master' into docs-influxdb

* updated port

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit c986aaa0a8)

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-04-21 06:50:11 -07:00
Grot (@grafanabot)
f9bbe2fe41 [v7.5.x] Loki: Pass Skip TLS Verify setting to alert queries (#33031)
* WIP (#33025)

(cherry picked from commit 4f7728738e)

* Update pkg/tsdb/loki/loki.go

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-04-21 15:17:02 +02:00
Robby Milo
2135316a74 update cla (#33181) 2021-04-20 19:00:15 +02:00
Grot (@grafanabot)
7f0d28abf5 Fix inefficient regular expression (#33155) (#33159)
(cherry picked from commit e017de4f06)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2021-04-20 14:02:31 +02:00
Grot (@grafanabot)
5dcfad56cf Auth: Don't clear auth token cookie when lookup token fails (#32999) (#33136)
If LookupToken fails we don't clear the auth token cookie.

Ref #15316

(cherry picked from commit 747f3cd300)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2021-04-20 09:25:46 +02:00
Grot (@grafanabot)
01ed0afb9f Elasticsearch: Add documentation for supported Elasticsearch query transformations (#33072) (#33128)
* Elasticsearch:  Add documentation for supported Elasticsearch query transformation

* Update docs/sources/datasources/elasticsearch.md

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

* Remove beta notives for ES logs

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

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2021-04-19 16:27:57 +01:00
Grot (@grafanabot)
2afeb5a60a Update team.md (#33060) (#33084)
Missing start { in http response.

Co-authored-by: achatterjee-grafana <aparajita.chatterjee@grafana.com>
(cherry picked from commit 1ed724ea6e)

Co-authored-by: Per <perjahn@gmail.com>
2021-04-16 17:07:44 -04:00
achatterjee-grafana
744d93eb35 GE issue 1268 (#33049) (#33081)
* GE issue 1268 (#33049)

* Updated sentence format.

* Added new placeholder page for Enterprise License information, added links also adjusted weights.

* Created new folder license and moved 4 files to here.

* Added aliases.

* link fixes and such

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fixed broken relref.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-04-16 15:15:44 -04:00
achatterjee-grafana
5bcc482697 Fixed some formatting issues for PRs from yesterday. (#33078) (#33079) 2021-04-16 13:13:06 -04:00
Grot (@grafanabot)
4106856569 Explore: Load default data source in Explore when the provided source does not exist (#32992) (#33061)
* Fallback to default data source in Explore and use uid for history

uid is used to allow changing the name of the datasource and preserve history

* Remove redundant console logs

(cherry picked from commit da03175d0b)

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
2021-04-16 10:19:15 +02:00
achatterjee-grafana
ea51a660e9 Docs: Replace next with latest in aliases (#33054) (#33059)
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-04-15 20:44:35 -04:00
Grot (@grafanabot)
b484d59ed6 Added missing link item. (#33052) (#33055)
(cherry picked from commit cf6d3fb8fb)

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2021-04-15 17:54:28 -04:00
achatterjee-grafana
c423a15ec8 Backport 33034 (#33038)
* Fix for doc issue https://github.com/grafana/grafana/issues/32890 (#33034)

* Added new section "Implications of enabling `Anonymous` access to dashboards".

* Linked from Anonymous authentication section in "Grafana Auth".

* Update docs/sources/administration/security.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Update docs/sources/auth/grafana.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fixed formatting issues.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fix for doc issue https://github.com/grafana/grafana/issues/32890 (#33034)

* Added new section "Implications of enabling `Anonymous` access to dashboards".

* Linked from Anonymous authentication section in "Grafana Auth".

* Update docs/sources/administration/security.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Update docs/sources/auth/grafana.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fixed formatting issues.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fix for doc issue https://github.com/grafana/grafana/issues/32890 (#33034)

* Added new section "Implications of enabling `Anonymous` access to dashboards".

* Linked from Anonymous authentication section in "Grafana Auth".

* Update docs/sources/administration/security.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Update docs/sources/auth/grafana.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fixed formatting issues.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

* Fix format issue.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2021-04-15 20:33:00 +02:00
Torkel Ödegaard
8011ff4f79 Docs: Backport 32916 to v7.5x (#33008)
* fixing things

* Update add-authentication-for-data-source-plugins.md

* Docs: Sync release branch with latest docs (#32986)

* Docs: Sync release branch with latest docs

* Fixed what branch to update

* Elasticsearch: Force re-rendering of each editor row type change (#32993) (#32996)

(cherry picked from commit 136460d369)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>

* ReleaseNotes: Updated changelog and release notes for 7.5.4 (#32973) (#32998)

* ReleaseNotes: Updated changelog and release notes for 7.5.4 (#32973)

* ReleaseNotes: Updated changelog and release notes for 7.5.4

* Update index link

* Fix boldness

* Update CHANGELOG.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Update CHANGELOG.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Update codespell words

* Update docs/sources/release-notes/release-notes-7-5-4.md

* Update CHANGELOG.md

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

* Update docs/sources/release-notes/release-notes-7-5-4.md

* Change bold markers

* Fix escaping

* Update drone yaml

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit a516ff00db)

* Add old release notes

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>

* fixing things

* Merge branch 'v7.5.x' of https://github.com/grafana/grafana into backport-32916-to-v7.5.x

* Update add-authentication-for-data-source-plugins.md

* Update license-restrictions.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
Co-authored-by: Giordano Ricci <me@giordanoricci.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2021-04-14 15:40:43 -07:00
Andrej Ocenas
f6268bc37a ReleaseNotes: Updated changelog and release notes for 7.5.4 (#32973) (#32998)
* ReleaseNotes: Updated changelog and release notes for 7.5.4 (#32973)

* ReleaseNotes: Updated changelog and release notes for 7.5.4

* Update index link

* Fix boldness

* Update CHANGELOG.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Update CHANGELOG.md

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Update codespell words

* Update docs/sources/release-notes/release-notes-7-5-4.md

* Update CHANGELOG.md

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

* Update docs/sources/release-notes/release-notes-7-5-4.md

* Change bold markers

* Fix escaping

* Update drone yaml

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit a516ff00db)

* Add old release notes

Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
2021-04-14 19:23:07 +02:00
Grot (@grafanabot)
ab7b01ec10 Elasticsearch: Force re-rendering of each editor row type change (#32993) (#32996)
(cherry picked from commit 136460d369)

Co-authored-by: Giordano Ricci <me@giordanoricci.com>
2021-04-14 17:22:00 +01:00
Torkel Ödegaard
6b1c98de8b Docs: Sync release branch with latest docs (#32986)
* Docs: Sync release branch with latest docs

* Fixed what branch to update
2021-04-14 18:08:10 +02:00
Grot (@grafanabot)
615c153b3a "Release: Updated versions in package to 7.5.4" (#32971) 2021-04-14 11:07:34 +02:00
Grot (@grafanabot)
b6763e0ac2 fix(datasource_srv): prevent infinite loop where default datasource is named default (#32949) (#32967)
(cherry picked from commit b0470c84a5)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2021-04-14 10:38:55 +02:00
Josh Hunt
eebe4a5e6f Added Azure Monitor support for Microsoft.AppConfiguration/configurationStores namespace (#32123) (#32968)
Closes #28733

Co-authored-by: deesejohn <deese.john@gmail.com>
2021-04-14 10:20:39 +02:00
Grot (@grafanabot)
385bf145d8 fix sqlite3 tx retry condition operator precedence (#32897) (#32952) 2021-04-13 19:12:06 +03:00
Grot (@grafanabot)
ef3cf5cc94 AzureMonitor: Add support for Virtual WAN namespaces (#32935) (#32947)
* AzureMonitor: Add support for additional Microsoft.Network namespaces

* Update supported_namespaces.ts

* Update supported_namespaces.ts

(cherry picked from commit a7d18bbc89)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2021-04-13 18:07:35 +02:00
Grot (@grafanabot)
7354150b79 Plugins: Allow a non-dashboard page to be the default home page (#32926) (#32945)
* feat: introduce home page redirect if default dashboard

* style: clean up

* Apply suggestions from code review

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>

* chore(dashboard): remove obsolete setting import

* docs(config): add home_page description

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
(cherry picked from commit bd74953f0d)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2021-04-13 17:27:05 +02:00
Grot (@grafanabot)
4f542d69db GraphNG: uPlot 1.6.8 (#32859) (#32863)
(cherry picked from commit 0c71fdac3d)

Co-authored-by: Leon Sorokin <leeoniya@gmail.com>
2021-04-09 22:35:05 -05:00
Dimitris Sotirakis
d548282ed5 Alerting: Add ability to include aliases with dashes (/) and at (@) signs in InfluxDB (#32844) 2021-04-09 15:51:12 +02:00
Grot (@grafanabot)
3e67fc8670 Prometheus: Allow exemplars endpoint in data source proxy (#32802) (#32804)
(cherry picked from commit 7a2ab93e7a)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-04-08 18:41:24 +02:00
Grot (@grafanabot)
580030ed9a [v7.5.x] Table: Fixes table data links so they refer to correct row after sorting (#32758)
* Table: Fixes table data links so they refer to correct row after sorting (#32571)

* Table: Fixes table data links so they refer to correct row after sorting

* Tests: adds some basic tests incl sorting

* Refactor: removes dependeny on app

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
(cherry picked from commit 5e1d0a8851)

* Tests: mocks locationUtl to fix test

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
2021-04-08 07:38:23 +02:00
Grot (@grafanabot)
7fc361d50f TablePanel: Makes sorting case-insensitive (#32435) (#32752)
* UI/Table: Make sorting case-insensitive
Closes #30476

(cherry picked from commit 6c16ecf65f)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2021-04-07 16:05:41 +02:00
Grot (@grafanabot)
3e3cf4dc60 "Release: Updated versions in package to 7.5.3" (#32745) 2021-04-07 12:36:01 +02:00
Grot (@grafanabot)
68d8de712d FolderPicker: Prevent dropdown menu from disappearing off screen (#32603) (#32741)
* fix(folderpicker): remove position fixed so menu works in panel editor for dashlist & alertlist

* test(folderpicker): update snapshot

(cherry picked from commit 8b38b70e00)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2021-04-07 11:28:07 +02:00
Grot (@grafanabot)
48d280b999 Loki: Remove empty annotations tags (#32359) (#32490)
* Loki - filter labels with empty values

Signed-off-by: Conor Evans <coevans@tcd.ie>

* Apply prettier change

Signed-off-by: Conor Evans <coevans@tcd.ie>

* Apply Piotr's suggestion - swap map/filter statements

Signed-off-by: Conor Evans <coevans@tcd.ie>
(cherry picked from commit 3af573ea96)

Co-authored-by: Conor Evans <43791257+conorevans@users.noreply.github.com>
2021-04-07 11:10:48 +02:00
Grot (@grafanabot)
b692d2fd4c SingleStat: fix wrong call to getDataLinkUIModel (#32721) (#32739)
(cherry picked from commit fbabed203f)

Co-authored-by: Guillermo Julián <gjulianm@users.noreply.github.com>
2021-04-07 09:30:24 +02:00
Zoltán Bedi
d71e38eb96 Prometheus: Fix instant query to run two times when exemplars enabled (#32508) (#32726)
* Prometheus: Fix instant query to run two times when exemplars enabled

* Update exemplar messages

* Tempo: show empty response if response is empty

(cherry picked from commit 70d49b017d)
2021-04-07 09:08:27 +02:00
Giordano Ricci
49ad493676 Elasticsearch: Fix bucket script variable duplication in UI (#32705) (#32714)
* Elasticsearch: Fix bucket script variable duplication

* Generate names based on previous value & fix list key

* Fix typos

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>

Co-authored-by: Piotr Jamróz <pm.jamroz@gmail.com>
(cherry picked from commit 317909f0c9)
2021-04-06 14:52:16 +02:00
Hugo Häggmark
e1006c8395 Variables: Confirms selection before opening new picker (#32586) (#32710)
* Variables: Confirms selection before opening new picker

* Tests: fixes e2e tests

(cherry picked from commit 6087980de0)
2021-04-06 13:13:16 +02:00
Grot (@grafanabot)
0d6b30ee28 CloudWarch: Fix service quotas link (#32686) (#32689)
(cherry picked from commit bc60991fae)

Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
2021-04-05 13:51:35 +01:00
Grot (@grafanabot)
b6d569fdb3 Configuration: Prevent browser hanging / crashing with large number of org users (#32546) (#32598)
* fix(userslist): introduce pagination to prevent browser crash with large number of users

* test(userlist): fix failing tests

* refactor(userlist): use layout components for spacing

* test(userslist): update snapshots

(cherry picked from commit 9caf2f8b3a)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2021-04-01 15:51:16 +02:00
Grot (@grafanabot)
3158473206 chore: bump execa to v2.1.0 (#32543) (#32592)
* chore(toolkit): bump execa to v2 to fix vulnerability issue

* chore(toolkit): update usage of execa

(cherry picked from commit b714cdf395)

Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com>
2021-04-01 15:00:04 +02:00
Andrej Ocenas
81d34a9efa Explore: Fix bug where navigating to explore would result in wrong query and datasource to be shown (#32558) 2021-04-01 13:10:57 +02:00
Grot (@grafanabot)
f00e253e6e Fix broken gtime tests (#32582) (#32587)
(cherry picked from commit 71a8579412)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2021-04-01 11:18:59 +02:00
Will Browne
86e2d2ab82 resolve conflicts (#32567) 2021-04-01 10:05:34 +02:00
Grot (@grafanabot)
d8af326511 gtime: Make ParseInterval deterministic (#32539) (#32560)
* gtime: Make ParseInterval deterministic by using UTC timezone

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 6730558f8c)

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2021-03-31 17:34:38 +02:00
Grot (@grafanabot)
8943e7383d Dashboard: No longer includes default datasource when externally exporting dashboard with row (#32494) (#32535)
Closes #31065

(cherry picked from commit 230f95dc47)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2021-03-31 09:20:39 +01:00
Grot (@grafanabot)
cc871bd682 TextboxVariable: Limits the length of the preview value (#32472) (#32530)
(cherry picked from commit 2def9a8172)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-31 07:27:23 +02:00
Grot (@grafanabot)
05141051cd AdHocVariable: Adds default data source (#32470) (#32476)
(cherry picked from commit 84ea3a73c0)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-31 06:08:55 +02:00
Grot (@grafanabot)
c270520aa9 Variables: Fixes Unsupported data format error for null values (#32480) (#32487)
(cherry picked from commit 009df4fb7a)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-31 06:08:49 +02:00
Grot (@grafanabot)
e60f34336e Prometheus: align exemplars check to latest api change (#32513) (#32515)
(cherry picked from commit d8a83fec9d)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-03-30 20:05:22 +02:00
Grot (@grafanabot)
ca413c612f "Release: Updated versions in package to 7.5.2" (#32502) 2021-03-30 15:47:47 +02:00
Erik Sundell
22d31136ee SigV4: Add support EC2 IAM role auth and possibility to toggle auth providers (#32444) (#32488)
* wip: consume aws-sdk config in auth http settings

* fix typings

* use sdk regions

* use latest version of grafana/aws-sdk

* use newest sdk

* add comment

* bump sdk

* fix yarn lock file

* fix storybook issue

* upgrade aws-sdk. also use it in grafana ui

* remove not used config

* add aws-sdk as an external dep for grafana in the grafana ui rollup

Co-authored-by: Will Browne <will.browne@grafana.com>
(cherry picked from commit f0d6f132ae)
2021-03-30 13:25:32 +02:00
Grot (@grafanabot)
5d87c596a7 Set spanNulls to default (#32471) (#32486)
(cherry picked from commit cfc7537632)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-30 12:58:55 +02:00
Grot (@grafanabot)
8262548005 Graph: Fix setting right y-axis when standard option unit is configured (#32426) (#32442)
(cherry picked from commit 33e33e3872)

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2021-03-30 11:27:04 +02:00
Grot (@grafanabot)
270660eaa8 API: Return 409 on datasource version conflict (#32425) (#32433)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
(cherry picked from commit 5ec530f3fc)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-03-29 16:46:36 +02:00
Grot (@grafanabot)
b0314c0818 API: Return 400 on invalid Annotation requests (#32429) (#32431)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit e1458391bb)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-03-29 16:13:56 +02:00
Grot (@grafanabot)
0c208a31dd Variables: Fixes problem with data source variable when default ds is selected (#32384) (#32424)
(cherry picked from commit f37c8c10c5)

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2021-03-29 14:43:02 +02:00
Grot (@grafanabot)
c33d12185d Table: Fixes so links work for image cells (#32370) (#32410)
* Panel/Table: Adjust data links logic
Closes #31576

(cherry picked from commit 2827d89ccf)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2021-03-29 14:00:02 +02:00
Grot (@grafanabot)
5288ff82b7 Variables: Fixes error when manually non-matching entering custom value in variable input/picker (#32390) (#32394)
(cherry picked from commit 340334994f)

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2021-03-29 11:06:30 +02:00
Grot (@grafanabot)
d33b1e6561 DashboardQueryEditor: Run query after selecting source panel (#32383) (#32395)
(cherry picked from commit a4b0ad3937)

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2021-03-29 11:06:19 +02:00
Grot (@grafanabot)
42d465e38a API: Datasource endpoint should return 400 bad request if id and orgId is invalid (#32392) (#32397)
* return 400 bad request if id and orgId is invalid

Signed-off-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit eb241b960f)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-03-29 09:22:37 +02:00
Grot (@grafanabot)
4dffb875cf "Release: Updated versions in package to 7.5.1" (#32362) 2021-03-26 14:12:21 +01:00
Arve Knudsen
cfc83e8f20 MSSQL: Upgrade go-mssqldb (#32347) (#32361)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit c8afce5fd6)
2021-03-26 14:01:20 +01:00
Grot (@grafanabot)
38c362bdbb GraphNG: Fix tooltip displaying wrong or no data (#32312) (#32348)
(cherry picked from commit 95c65a1f4a)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-26 10:38:01 +01:00
Grot (@grafanabot)
b144fb1a9f "Release: Updated versions in package to 7.5.0" (#32308) 2021-03-25 11:13:32 +01:00
Grot (@grafanabot)
c330762f20 Loki: Fix text search in Label browser (#32293) (#32306)
* Switch to simple search before implementing proper fuzzy search

* Just do simple search

* Finalize simple search

* Pass string to highlights

(cherry picked from commit a127e09503)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-25 10:41:28 +01:00
Grot (@grafanabot)
f593179a4a Explore: Show all dataFrames in data tab in Inspector (#32161) (#32299)
* Add option to show/download all data

* Add test

* Address feedback

(cherry picked from commit bd7285a9e3)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-24 19:31:12 +01:00
Grot (@grafanabot)
0f146e7c38 PieChartV2: Add migration from old piechart (#32259) (#32291)
* Add migration from old piechart

* Add piechart migration tests

(cherry picked from commit 49c4211295)

Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
2021-03-24 16:13:22 +01:00
Hugo Häggmark
099f5cbf97 LibraryPanels: Adds Type and Description to DB (#32258) (#32288)
* Refactor: adds description to getCreateCommand

* Refactor: Adds type and description fields

* Chore: Updates FrontEnd

* Update pkg/services/librarypanels/database.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/services/librarypanels/database.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Chore: fixes backend linting error

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 7f5487a461)
2021-03-24 14:57:02 +01:00
Grot (@grafanabot)
15ee6280db LibraryPanels: Prevents deletion of connected library panels (#32277) (#32284)
* LibraryPanels: Prevents deletion of connected library panels

* Refactor: adds the delete library panel modal

* Chore: updates after PR comments

(cherry picked from commit 376ed8a381)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-24 13:42:19 +01:00
Grot (@grafanabot)
0b08c5e608 Library Panels: Add "Discard" button to panel save modal (#31647) (#32281)
* Library Panels: Add "Discard" button to panel save modal

(cherry picked from commit 06a6fb405c)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2021-03-24 13:10:32 +01:00
Grot (@grafanabot)
c713b92249 LibraryPanels: Changes to non readonly reducer (#32193) (#32200)
(cherry picked from commit 79f0cf7874)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-24 07:47:07 +01:00
Grot (@grafanabot)
80a4d4296c Notifications: InfluxDB - Fix regex to include metrics with hyphen in aliases (#32224) (#32262)
* Notifications: InfluxDB - fix regex to include metrics with hyphen

* Add hyphen check in tests

(cherry picked from commit fdaac2b8fb)
2021-03-23 15:51:49 +01:00
Kyle Brandt
47c10bab65 SSE/InfluxDB: Change InfluxQL to work with server side expressions (#31691) (#32102)
* SSE/InfluxDB: Change InfluxQL to work with server side expressions
updates the request to handle EpochMS as the time range (which is what expressions sends)
and the response to use millisecond timestamps instead of seconds.
fixes #31604
similar to https://github.com/grafana/grafana/pull/31455

(cherry picked from commit 026bf1f9ca)
2021-03-23 11:38:19 +01:00
Grot (@grafanabot)
1acc921689 DashboardSettings: Fixes issue with tags list not updating when changes are made (#32241) (#32247)
(cherry picked from commit 014a4cda9d)

Co-authored-by: Ha. Huynh Sam <huynhha12798@gmail.com>
2021-03-23 11:10:26 +01:00
Grot (@grafanabot)
0528f7211a Logs: If log message missing, use empty string (#32080) (#32243)
* Fix error when message in undefined and add test

* Fix typo

(cherry picked from commit cfdb9db775)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-23 09:47:53 +01:00
Grot (@grafanabot)
fafa352451 CloudWatch: Use latest version of aws sdk (#32217) (#32223)
* use latest version of aws sdk

* use yet a newer version

(cherry picked from commit c1d53bd646)

Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
2021-03-22 17:30:43 +01:00
Grot (@grafanabot)
a9077812d8 Release: Updated versions in package to 7.5.0-beta.2 (#32158) 2021-03-19 13:02:15 +01:00
Carl Bergquist
5039c90b8c HttpServer: Make read timeout configurable but disabled by default (#31575) (#32154)
Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
(cherry picked from commit 862cd473eb)
2021-03-19 12:01:37 +01:00
Grot (@grafanabot)
1df1d60e1e GraphNG: Ignore string fields when building data for uPlot in GraphNG (#32150) (#32151)
(cherry picked from commit fb337e5c1d)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-19 11:25:44 +01:00
Grot (@grafanabot)
fbf3469e80 Fix loading timezone info on windows (#32029) (#32149)
* Fix loading timezone info on windows

* Move setting zoneinfo to config load

* Construct proper file path

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit ea484312a0)

Co-authored-by: Tania B <yalyna.ts@gmail.com>
2021-03-19 10:41:26 +01:00
Grot (@grafanabot)
bc463d6a2f SQLStore: Close session in withDbSession (#31775) (#32108)
* SQLStore: Close session in withDbSession

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* SQLStore.WithDbSession: Never use session from context

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 5a0780801b)

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2021-03-19 10:11:26 +01:00
Grot (@grafanabot)
5d58d0aabb Remove datalink template suggestions for accessing specific fields when there are multiple dataframes. (#32057) (#32148)
* Don't suggest template strings using fields when there are mutliple dataframes

* Change to use label instead of state

(cherry picked from commit f48a52e590)

Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
2021-03-19 09:58:52 +01:00
Grot (@grafanabot)
e3b5d53545 GraphNG: make sure dataset and config are in sync when initializing and re-initializing uPlot (#32106) (#32125)
* Make sure dataset and uPlot config are in sync when rendering uPlot

* Tests

* Fix TS

(cherry picked from commit a6cb9fb295)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-19 08:34:07 +01:00
Grot (@grafanabot)
6bfe5ccf3e MixedDataSource: Name is updated when data source variable changes (#32090) (#32144)
(cherry picked from commit f8d5388758)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-19 07:03:36 +01:00
Ivana Huckova
d025e3b57e Backport 32005 to v7.5.x #32128 (#32130)
* Explore: Support full inspect drawer (#32005)

* Move InspectSubtitle to grafana/ui

* Move inspect elements to features/inspector

* Move InspectJSON and use it also in Explore

* Move and use QueryInspector

* Move all to features/inspector

* WIP Data tab implementation

* Process dataframes for explores inspector

* Clean up

* Update test

* Clean up

* Fix Explore Inspector button name

(cherry picked from commit 664b13d83e)

* Fix broken import after refactor
2021-03-18 19:27:34 +01:00
Grot (@grafanabot)
44298a3761 Loki: Label browser UI updates (#31737) (#32119)
* UI updates for Label Browser

* Revert "UI updates for Label Browser"

This reverts commit 3d34112762.

* UI updates for Label Browser

* Remove unused style

(cherry picked from commit dfd4eccc7c)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-18 16:54:56 +01:00
Grot (@grafanabot)
37b07a5a11 ValueMappings: Fixes value 0 not being mapped (#31924) (#31929)
* ValueMapping: Updated tests (#31877)

Checks if value 0 or '0' is considered as a numeric value

* ValueMapping: Changed implementation of isNumeric (#31877)

isNumeric now works with the 0 value

* fixed prettier issue

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
(cherry picked from commit c764bca58f)

Co-authored-by: Villena Guillaume <guiguivil@gmail.com>
2021-03-18 15:21:32 +01:00
Grot (@grafanabot)
42c5db4ac3 GraphNG: Fix tooltip series color for multi data frame scenario (#32098) (#32103)
(cherry picked from commit b0d7e3dbee)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-18 14:15:55 +01:00
Grot (@grafanabot)
ca31570dcc LibraryPanels: Improves the Get All experience (#32028) (#32093)
* LibraryPanels: Improves Get All Api

* Refactor: using useReducer instead of useState

* Refactor: adds Pagination to UI

* Tests: adds reducer tests

* Refactor: using Observable instead to avoid flickering

* Refactor: moves exclusion to backend instead

* Chore: changing back the perPage default value

(cherry picked from commit f508a16a43)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-18 11:47:23 +01:00
Grot (@grafanabot)
da11a67c4e Grafana/ui: display all selected levels for selected value when searching (#32030) (#32032)
* display all levels for selected values when searching if needed

* add test

(cherry picked from commit e5ca13deb6)

Co-authored-by: Vicky Lee <36230812+vickyyyyyyy@users.noreply.github.com>
2021-03-18 10:35:58 +00:00
Grot (@grafanabot)
4a56ca167c Exemplars: always query exemplars (#31673) (#32024)
* Exemplars: always query exemplars

* Update exemplar button to be an eye

* Add tooltip to eye button

(cherry picked from commit bb8a703428)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-03-18 10:26:32 +01:00
Torkel Ödegaard
698cf6de77 [v7.5.x] TimePicker: Fixes hidden time picker shown in kiosk TV mode (#32055) 2021-03-17 18:03:21 +01:00
Giordano Ricci
0954e1c277 Chore: Collect elasticsearch version usage stats (#31787) (#32063)
* Chore: Collect elasticsearch version usage stats

* Fix lint error

* use GetDataSources from sqlstore

* Apply review suggestions

* Return error if datasource type is not specified

* Update pkg/services/sqlstore/datasource.go

* fix undefined var

(cherry picked from commit 0c2045109e)
2021-03-17 17:00:35 +00:00
Joan López de la Franca Beltran
986cfa767d Chore: Tidy up Go deps (#32053) 2021-03-17 15:13:35 +01:00
Grot (@grafanabot)
0ba9aff11e GraphNG: Fix PlotLegend field display name being outdated (#32064) (#32066)
(cherry picked from commit 48f46a597f)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-17 15:10:57 +01:00
Grot (@grafanabot)
3c8daef653 Data proxy: Fix encoded characters in URL path should be proxied encoded (#30597) (#32060)
Fix encoded characters in URL path should be proxied as encoded in the data proxy.

Fixes #26870
Fixes #31438

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit c0edf88f9f)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2021-03-17 15:02:52 +01:00
Grot (@grafanabot)
30b91296ad [v7.5.x] Auth: Allow soft token revocation (#32037)
* Auth: Allow soft token revocation (#31601)

* Add revoked_at field to user auth token to allow soft revokes

* Allow soft token revocations

* Update token revocations and tests

* Return error info on revokedTokenErr

* Override session cookie only when no revokedErr nor API request

* Display modal on revoked token error

* Feedback: Refactor TokenRevokedModal to FC

* Add GetUserRevokedTokens into UserTokenService

* Backendsrv: adds tests and refactors soft token path

* Apply feedback

* Write redirect cookie on token revoked error

* Update TokenRevokedModal style

* Return meaningful error info

* Some UI changes

* Update backend_srv tests

* Minor style fix on backend_srv tests

* Replace deprecated method usage to publish events

* Fix backend_srv tests

* Apply suggestions from code review

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>

* Minor style fix after PR suggestion commit

* Apply suggestions from code review

Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>

* Prettier fixes

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Ursula Kallio <73951760+osg-grafana@users.noreply.github.com>
(cherry picked from commit 610999cfa2)

* Back to the old method to emit app events

Co-authored-by: Joan López de la Franca Beltran <joanjan14@gmail.com>
2021-03-17 10:18:42 +01:00
Grot (@grafanabot)
f570fb2d6f Snapshots: Fix usage of sign in link from the snapshot page (#31986) (#32036)
Fix redirect to login page from snapshot page when not authenticated.

Fixes #28547

(cherry picked from commit a97637a133)

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2021-03-16 17:15:08 +01:00
Grot (@grafanabot)
cfc0e132f5 Make master green (#32011) (#32015)
(cherry picked from commit e9402a56ba)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-16 16:31:00 +01:00
Grot (@grafanabot)
f54533877b Query editor: avoid avoiding word wrap on query editor components (#31949) (#31982)
(cherry picked from commit 2fb92789e7)

Co-authored-by: Josh Hunt <joshhunt@users.noreply.github.com>
2021-03-16 09:30:08 +01:00
Grot (@grafanabot)
74dec56b49 Variables: Fixes filtering in picker with null items (#31979) (#31995)
* Variables: Fixes filtering in picker with null items

* Chore: some cleanup

(cherry picked from commit bc60ce9cce)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-16 06:09:20 +01:00
Grot (@grafanabot)
320ad56397 TooltipContainer - use resize observer instead of getClientBoundingRect (#31937) (#32003) 2021-03-15 19:57:37 -07:00
Grot (@grafanabot)
46daba67d2 Loki: Fix autocomplete when re-editing Loki label values (#31828) (#31987)
* Allow re-editing of labels in Loki queries

* Update public/app/plugins/datasource/loki/language_provider.ts

(cherry picked from commit 240e65f693)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-15 14:38:19 +01:00
Grot (@grafanabot)
0e9b553daf Loki: Fix type errors in language_provider (#31902) (#31945)
* Add initial stat for logLabelOptions

* Refactor, update, remove

* Simplify

(cherry picked from commit 91dde5c980)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-15 10:56:01 +01:00
Grot (@grafanabot)
c5ea45ab80 PanelInspect: Interpolates variables in CSV file name (#31936) (#31977)
* PanelInspect: Variables in CSV file name are interpolated

* Chore: fixes failing test

(cherry picked from commit 66177e9463)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-15 09:10:48 +01:00
Erik Sundell
44838f201c Cloudwatch: use shared library for aws auth (#29550) (#31946)
* use sdk for handling auth

* fix broken test

* lint fixes

Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
(cherry picked from commit 9dd1d5f553)

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2021-03-12 23:27:32 +01:00
Leon Sorokin
47937d8f1b Tooltip: partial perf improvement (#31774) (#31837) (#31957)
(cherry picked from commit 04e46e3853)
2021-03-12 16:15:44 -06:00
Leon Sorokin
1d3339de34 Backport 31913 to v7.5.x (#31955)
* uPlot 1.6.7 (#31913)
2021-03-12 15:04:17 -06:00
Grot (@grafanabot)
876e18c105 Grafana/ui: fix searchable options for Cascader with options update (#31906) (#31938)
* update searchableOptions when this.props.options has been updated

* add tests for using state to update options for cascader component

* update story for cascader

* use memoizeOne

(cherry picked from commit 6fe2baf168)

Co-authored-by: Vicky Lee <36230812+vickyyyyyyy@users.noreply.github.com>
2021-03-12 14:15:42 +00:00
Grot (@grafanabot)
bc5f11d0e4 Variables: Do not reset description on variable type change (#31933) (#31939)
(cherry picked from commit 8404d54277)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2021-03-12 15:46:52 +02:00
Hugo Häggmark
61ba4eeb8c [v7.5.x] AnnotationList: Adds spacing to UI (#31888) (#31894) 2021-03-12 09:59:10 +02:00
Grot (@grafanabot)
4d1d3f9ef5 Elasticseach: Support histogram fields (#29079) (#31914)
(cherry picked from commit ee547b4410)

Co-authored-by: Chris Cowan <chris@chriscowan.us>
2021-03-11 17:29:57 +01:00
Alex Khomenko
e23c086a94 Chore: upgrade eslint and fork-ts-checker-webpack-plugin (#31854) (#31896)
* Chore upgrade eslint, fork-ts-checker-webpack-plugin

* Update eslint version for grafana-toolkit

* Update @grafana/eslint-config version

* Update @grafana/eslint-config in grafana-toolkit

* Update lockfile

(cherry picked from commit b017c65409)
2021-03-11 13:08:17 +01:00
Grot (@grafanabot)
6ed29a0418 Update scripts and Dockerfiles to use Go 1.16.1 (#31881) (#31891)
* Update scripts and Dockerfiles to use Go 1.16.1

* Update build-container image version to 1.4.1

* Update node version to 14.16.0-1nodesource1

* Updated drone configuration

(cherry picked from commit d59574ec1e)

Co-authored-by: Dimitris Sotirakis <sotirakis.dim@gmail.com>
2021-03-11 13:33:21 +02:00
Grot (@grafanabot)
1616ea14f0 Templating: use dashboard timerange when variables are set to refresh 'On Dashboard Load' (#31721) (#31801)
* Templating: use dashboard timerange when variables are set to load 'On Dashboard Load'

* Add test

(cherry picked from commit 7e0b1f2619)

Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
2021-03-11 09:10:20 +00:00
Zoltán Bedi
0af435c61d [v7.5.x] Tempo: Add test for backend data source (#31835) (#31882)
* Tempo: Add test for backend data source (#31835)

(cherry picked from commit 3b6168eb4a)

* Revert tsdb service
2021-03-11 09:45:12 +01:00
Dimitris Sotirakis
7a7aad22a2 Run go mod tidy to update go.mod and go.sum (#31859) 2021-03-10 15:46:17 +01:00
Grot (@grafanabot)
994fa86836 Grafana/ui: display all selected levels for Cascader (#31729) (#31862)
* add support for displaying all selected levels for cascader

* add story for Cascader with display all selected levels

* add tests for Cascader with displayAllSelectedLevels prop

* replace enzyme test with RTL for cascader

(cherry picked from commit 6819a25add)

Co-authored-by: Vicky Lee <36230812+vickyyyyyyy@users.noreply.github.com>
2021-03-10 14:05:19 +00:00
Grot (@grafanabot)
099b761702 CloudWatch: Consume the grafana/aws-sdk (#31807) (#31861)
* consume the grafana/aws-sdk

* upgrade aws-sdk

(cherry picked from commit f135d75a22)

Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
2021-03-10 14:40:39 +01:00
Erik Sundell
6ddb62fca1 Cloudwatch: ListMetrics API page limit (#31788) (#31851)
* Cloudwatch: ListMetrics API page limit (#31788)

* add list metrics api page limit

* Update docs/sources/datasources/cloudwatch.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 d512c5a1b4)

* update go sum

* remove spaces

* revert go.sum
2021-03-10 10:42:49 +01:00
Grot (@grafanabot)
6623706336 Remove invalid attribute (#31848) (#31850)
(cherry picked from commit 598a44076a)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2021-03-10 11:16:30 +02:00
Erik Sundell
0be2177d15 CloudWatch: Restrict auth provider and assume role usage according to… (#31845)
* CloudWatch: Restrict auth provider and assume role usage according to Grafana configuration (#31805)

* restrict usage of providers and assume role according to grafana config

* update docs

* Update docs/sources/datasources/cloudwatch.md

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/tsdb/cloudwatch/cloudwatch.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/tsdb/cloudwatch/session_test.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* pr feedback

* fix failing test

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 2d660ee502)

* Update docs/sources/datasources/cloudwatch.md

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2021-03-10 08:59:19 +01:00
Grot (@grafanabot)
3549380bd2 CloudWatch: Add support for EC2 IAM role (#31804) (#31841)
* add support for iam role auth

* add stubbable func

* fix broken test

* goimports

* pr feedback

(cherry picked from commit 13dd9dff50)

Co-authored-by: Erik Sundell <erik.sundell@grafana.com>
2021-03-09 21:10:55 +01:00
Grot (@grafanabot)
453b956797 Loki, Prometheus: Change the placement for query type explanation (#31784) (#31819)
* Fix tooltip in the way

* Add more info for instant query

* Update public/app/plugins/datasource/loki/components/LokiOptionFields.tsx

* Update public/app/plugins/datasource/prometheus/components/PromExploreExtraField.tsx

(cherry picked from commit 53ba6456d4)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-09 14:35:58 +01:00
Grot (@grafanabot)
aeee3931d2 Variables: Improves inspection performance and unknown filtering (#31811) (#31813)
* Refactor: moves inspect calculation to Redux

* Refactor: adds valid filters and tests

(cherry picked from commit 63746d027b)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-09 13:09:21 +01:00
Grot (@grafanabot)
be4b530a85 Change piechart plugin state to beta (#31797) (#31798)
(cherry picked from commit f951672e90)

Co-authored-by: Oscar Kilhed <oscar.kilhed@grafana.com>
2021-03-09 10:01:48 +01:00
Grot (@grafanabot)
8df4fcd190 ReduceTransform: Include series with numeric string names (#31763) (#31794)
* ReduceTransform: Include series with numeric string  names

* Chore: updates after PR comments

(cherry picked from commit bc5ea345e5)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-09 06:23:11 +01:00
Grot (@grafanabot)
2297e13ac6 Annotations: Make the annotation clean up batch size configurable (#31487) (#31769)
Signed-off-by: bergquist <carl.bergquist@gmail.com>

(cherry picked from commit 3b36636318)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-03-08 14:37:27 +01:00
Grot (@grafanabot)
877b50957c Fix escaping in ANSI and dynamic button removal (#31731) (#31767)
(cherry picked from commit 445132a904)

Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2021-03-08 12:52:12 +01:00
Grot (@grafanabot)
a21a300f3e DataLinks: Bring back single click links for Stat, Gauge and BarGauge panel (#31692) (#31718)
* Bring back clickable Stat, Gauge and BarGauge panels

* Demo dashboard

* Add DataLinksContextMenu tests

* Only use new UI for data links, revert panel links logic

(cherry picked from commit fdc6f2cc6f)

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2021-03-08 09:03:53 +01:00
Grot (@grafanabot)
c946c4e372 log skipped, performed and duration for migrations (#31722) (#31754)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit c899bf3592)

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2021-03-07 22:05:58 +01:00
Grot (@grafanabot)
f95657dc2d Search: Make items more compact (#31734) (#31750)
(cherry picked from commit ab2f405205)

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2021-03-07 12:14:15 +02:00
Grot (@grafanabot)
f2b7582671 loki_datasource: add documentation to label_format and line_format (#31710) (#31746)
* add documentation to label_format and line_format

* fix linting

* Remove extra space

(cherry picked from commit 0b6b8de6f8)

Co-authored-by: Caleb Collins-Parks <46505081+caleb15@users.noreply.github.com>
2021-03-05 23:45:38 +01:00
Zoltán Bedi
e81a5bc015 Tempo: Convert tempo to backend data source2 (#31733)
This reverts commit c15d1f498a.

(cherry picked from commit 29c998f9eb)
2021-03-05 16:36:36 +01:00
Grot (@grafanabot)
cf29df808a Elasticsearch: Fix script fields in query editor (#31681) (#31727)
* Elasticsearch: Fix script fields in query editor

* properly name bucke_script deries

(cherry picked from commit 64a8514e47)

Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
2021-03-05 13:36:35 +00:00
Grot (@grafanabot)
1ab3249bab Elasticsearch: revert to isoWeek when resolving weekly indices (#31709) (#31717)
* Elasticsearch: revert to isoWeek when resolving weekly indices

* Add type assertion explainer

(cherry picked from commit bbee7da3e0)

Co-authored-by: Giordano Ricci <gio.ricci@grafana.com>
2021-03-05 10:52:30 +01:00
Grot (@grafanabot)
4452ddfee2 Admin: Keeps expired api keys visible in table after delete (#31636) (#31675)
* Admin: Keeps expired keys visible in table after delete

* Chore: covers component in tests before refactor

* Refactor: splitting up into smaller components

* Chore: fixes a small issue with the validation

* Chore: forgot to export type

(cherry picked from commit e87d48921e)

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2021-03-05 06:00:08 +01:00
Grot (@grafanabot)
be08685e3f Tempo: set authentication header properly (#31699) (#31701)
(cherry picked from commit 53d4acdad2)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-03-04 21:00:15 +01:00
Grot (@grafanabot)
dc8d109ce4 Tempo: convert to backend data source (#31618) (#31695)
* Tempo: Support opentelemetry response

* Tempo: convert Tempo to backend data source

* Update data source test

* Fix lint issues

* Apply suggestions from code review

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Return error when trace not found

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 862f09376f)

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2021-03-04 18:43:41 +01:00
Will Browne
6b83895315 Update package.json (#31672) 2021-03-04 12:21:12 +01:00
Grot (@grafanabot)
a3d4d4ac7c Release: Bump version to 7.5.0-beta.1 (#31664)
* "Release: Updated versions in package to 7.5.0-beta.1"

* Update package.json

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2021-03-04 11:17:06 +01:00
Dimitris Sotirakis
7ea361825e Fix whatsNewUrl version to 7.5 (#31666)
* Fix whatsNewUrl version

* Update package.json
2021-03-04 11:09:10 +01:00
Dimitris Sotirakis
11740b48a7 Chore: add alias for what's new 7.5 (#31669) 2021-03-04 10:48:24 +01:00
578 changed files with 13577 additions and 6924 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,44 +0,0 @@
name: publish_docs
on:
push:
branches:
- master
paths:
- 'docs/sources/**'
- 'packages/grafana-*/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- 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
- uses: actions/cache@v2.1.4
with:
path: '**/node_modules'
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
- name: generate-packages-docs
uses: actions/setup-node@v2.1.4
id: generate-docs
with:
node-version: '14'
- run: yarn install --pure-lockfile --no-progress
- run: ./scripts/ci-reference-docs-build.sh
- name: publish-to-git
uses: ./.github/actions/website-sync
id: publish
with:
repository: grafana/website
branch: master
host: github.com
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
source_folder: docs/sources
target_folder: content/docs/grafana/latest
allow_no_changes: 'true'
- shell: bash
run: |
test -n "${{ steps.publish.outputs.commit_hash }}"
test -n "${{ steps.publish.outputs.working_directory }}"

View File

@@ -1,3 +1,415 @@
<!-- 8.0.0-beta1 START -->
# 8.0.0-beta1 (2021-05-13)
### Features and enhancements
* **API**: Add org users with pagination. [#33788](https://github.com/grafana/grafana/pull/33788), [@idafurjes](https://github.com/idafurjes)
* **API**: Return 404 when deleting nonexistent API key. [#33346](https://github.com/grafana/grafana/pull/33346), [@chaudum](https://github.com/chaudum)
* **API**: Return query results as JSON rather than base64 encoded Arrow. [#32303](https://github.com/grafana/grafana/pull/32303), [@ryantxu](https://github.com/ryantxu)
* **Alerting**: Allow sending notification tags to Opsgenie as extra properties. [#30332](https://github.com/grafana/grafana/pull/30332), [@DewaldV](https://github.com/DewaldV)
* **Alerts**: Replaces all uses of InfoBox & FeatureInfoBox with Alert. [#33352](https://github.com/grafana/grafana/pull/33352), [@torkelo](https://github.com/torkelo)
* **Auth**: Add support for JWT Authentication. [#29995](https://github.com/grafana/grafana/pull/29995), [@marshall-lee](https://github.com/marshall-lee)
* **AzureMonitor**: Add support for Microsoft.SignalRService/SignalR metrics. [#33246](https://github.com/grafana/grafana/pull/33246), [@M0ns1gn0r](https://github.com/M0ns1gn0r)
* **AzureMonitor**: Azure settings in Grafana server config. [#33728](https://github.com/grafana/grafana/pull/33728), [@kostrse](https://github.com/kostrse)
* **AzureMonitor**: Migrate Metrics query editor to React. [#30783](https://github.com/grafana/grafana/pull/30783), [@joshhunt](https://github.com/joshhunt)
* **BarChart panel**: enable series toggling via legend. [#33955](https://github.com/grafana/grafana/pull/33955), [@dprokop](https://github.com/dprokop)
* **BarChart panel**: Adds support for Tooltip in BarChartPanel. [#33938](https://github.com/grafana/grafana/pull/33938), [@dprokop](https://github.com/dprokop)
* **PieChart panel**: Change look of highlighted pie slices. [#33841](https://github.com/grafana/grafana/pull/33841), [@oscarkilhed](https://github.com/oscarkilhed)
* **CloudMonitoring**: Migrate config editor from angular to react. [#33645](https://github.com/grafana/grafana/pull/33645), [@sunker](https://github.com/sunker)
* **CloudWatch**: Add Amplify Console metrics and dimensions. [#33171](https://github.com/grafana/grafana/pull/33171), [@rodrigorfk](https://github.com/rodrigorfk)
* **CloudWatch**: Add missing Redshift metrics to CloudWatch data source. [#32121](https://github.com/grafana/grafana/pull/32121), [@tomdaly](https://github.com/tomdaly)
* **CloudWatch**: Add metrics for managed RabbitMQ service. [#31838](https://github.com/grafana/grafana/pull/31838), [@nirojan](https://github.com/nirojan)
* **DashboardList**: Enable templating on search tag input. [#31460](https://github.com/grafana/grafana/pull/31460), [@delta50](https://github.com/delta50)
* **Datasource config**: correctly remove single custom http header. [#32445](https://github.com/grafana/grafana/pull/32445), [@gabor](https://github.com/gabor)
* **Elasticsearch**: Add generic support for template variables. [#32762](https://github.com/grafana/grafana/pull/32762), [@Elfo404](https://github.com/Elfo404)
* **Elasticsearch**: Allow omitting field when metric supports inline script. [#32839](https://github.com/grafana/grafana/pull/32839), [@Elfo404](https://github.com/Elfo404)
* **Elasticsearch**: Allow setting a custom limit for log queries. [#32422](https://github.com/grafana/grafana/pull/32422), [@Elfo404](https://github.com/Elfo404)
* **Elasticsearch**: Guess field type from first non-empty value. [#32290](https://github.com/grafana/grafana/pull/32290), [@Elfo404](https://github.com/Elfo404)
* **Elasticsearch**: Use application/x-ndjson content type for multisearch requests. [#32282](https://github.com/grafana/grafana/pull/32282), [@Elfo404](https://github.com/Elfo404)
* **Elasticsearch**: Use semver strings to identify ES version. [#33646](https://github.com/grafana/grafana/pull/33646), [@Elfo404](https://github.com/Elfo404)
* **Explore**: Add logs navigation to request more logs. [#33259](https://github.com/grafana/grafana/pull/33259), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: Map Graphite queries to Loki. [#33405](https://github.com/grafana/grafana/pull/33405), [@ifrost](https://github.com/ifrost)
* **Explore**: Scroll split panes in Explore independently. [#32978](https://github.com/grafana/grafana/pull/32978), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: Wrap each panel in separate error boundary. [#33868](https://github.com/grafana/grafana/pull/33868), [@aocenas](https://github.com/aocenas)
* **FieldDisplay**: Smarter naming of stat values when visualising row values (all values) in stat panels. [#31704](https://github.com/grafana/grafana/pull/31704), [@torkelo](https://github.com/torkelo)
* **Graphite**: Expand metric names for variables. [#33694](https://github.com/grafana/grafana/pull/33694), [@ifrost](https://github.com/ifrost)
* **Graphite**: Handle unknown Graphite functions without breaking the visual editor. [#32635](https://github.com/grafana/grafana/pull/32635), [@ifrost](https://github.com/ifrost)
* **Graphite**: Show graphite functions descriptions. [#32305](https://github.com/grafana/grafana/pull/32305), [@ifrost](https://github.com/ifrost)
* **Graphite**: Support request cancellation properly (Uses new backendSrv.fetch Observable request API). [#31928](https://github.com/grafana/grafana/pull/31928), [@mckn](https://github.com/mckn)
* **InfluxDB**: Flux: Improve handling of complex response-structures. [#33823](https://github.com/grafana/grafana/pull/33823), [@gabor](https://github.com/gabor)
* **InfluxDB**: Support region annotations. [#31526](https://github.com/grafana/grafana/pull/31526), [@Komalis](https://github.com/Komalis)
* **Inspector**: Download logs for manual processing. [#32764](https://github.com/grafana/grafana/pull/32764), [@ivanahuckova](https://github.com/ivanahuckova)
* **Jaeger**: Add node graph view for trace. [#31521](https://github.com/grafana/grafana/pull/31521), [@aocenas](https://github.com/aocenas)
* **Jaeger**: Search traces. [#32805](https://github.com/grafana/grafana/pull/32805), [@zoltanbedi](https://github.com/zoltanbedi)
* **Loki**: Use data source settings for alerting queries. [#33942](https://github.com/grafana/grafana/pull/33942), [@ivanahuckova](https://github.com/ivanahuckova)
* **NodeGraph**: Exploration mode. [#33623](https://github.com/grafana/grafana/pull/33623), [@aocenas](https://github.com/aocenas)
* **OAuth**: Add support for empty scopes. [#32129](https://github.com/grafana/grafana/pull/32129), [@jvoeller](https://github.com/jvoeller)
* **PanelChrome**: New logic-less emotion based component with no dependency on PanelModel or DashboardModel. [#29456](https://github.com/grafana/grafana/pull/29456), [@torkelo](https://github.com/torkelo)
* **PanelEdit**: Adds a table view toggle to quickly view data in table form. [#33753](https://github.com/grafana/grafana/pull/33753), [@torkelo](https://github.com/torkelo)
* **PanelEdit**: Highlight matched words when searching options. [#33717](https://github.com/grafana/grafana/pull/33717), [@torkelo](https://github.com/torkelo)
* **PanelEdit**: UX improvements. [#32124](https://github.com/grafana/grafana/pull/32124), [@torkelo](https://github.com/torkelo)
* **Plugins**: PanelRenderer and simplified QueryRunner to be used from plugins. [#31901](https://github.com/grafana/grafana/pull/31901), [@torkelo](https://github.com/torkelo)
* **Plugins**: AuthType in route configuration and params interpolation. [#33674](https://github.com/grafana/grafana/pull/33674), [@kostrse](https://github.com/kostrse)
* **Plugins**: Enable plugin runtime install/uninstall capabilities. [#33836](https://github.com/grafana/grafana/pull/33836), [@wbrowne](https://github.com/wbrowne)
* **Plugins**: Support set body content in plugin routes. [#32551](https://github.com/grafana/grafana/pull/32551), [@marefr](https://github.com/marefr)
* **Plugins**: Introduce marketplace app. [#33869](https://github.com/grafana/grafana/pull/33869), [@jackw](https://github.com/jackw)
* **Plugins**: Moving the DataSourcePicker to grafana/runtime so it can be reused in plugins. [#31628](https://github.com/grafana/grafana/pull/31628), [@mckn](https://github.com/mckn)
* **Prometheus**: Add custom query params for alert and exemplars queries. [#32440](https://github.com/grafana/grafana/pull/32440), [@aocenas](https://github.com/aocenas)
* **Prometheus**: Use fuzzy string matching to autocomplete metric names and label. [#32207](https://github.com/grafana/grafana/pull/32207), [@ifrost](https://github.com/ifrost)
* **Routing**: Replace Angular routing with react-router. [#31463](https://github.com/grafana/grafana/pull/31463), [@dprokop](https://github.com/dprokop)
* **Slack**: Use chat.postMessage API by default. [#32511](https://github.com/grafana/grafana/pull/32511), [@aknuds1](https://github.com/aknuds1)
* **Tempo**: Search for Traces by querying Loki directly from Tempo. [#33308](https://github.com/grafana/grafana/pull/33308), [@davkal](https://github.com/davkal)
* **Tempo**: Show graph view of the trace. [#33635](https://github.com/grafana/grafana/pull/33635), [@aocenas](https://github.com/aocenas)
* **Themes**: Switch theme without reload using global shortcut. [#32180](https://github.com/grafana/grafana/pull/32180), [@torkelo](https://github.com/torkelo)
* **TimeSeries panel**: Add support for shared cursor. [#33433](https://github.com/grafana/grafana/pull/33433), [@dprokop](https://github.com/dprokop)
* **TimeSeries panel**: Do not crash the panel if there is no time series data in the response. [#33993](https://github.com/grafana/grafana/pull/33993), [@dprokop](https://github.com/dprokop)
* **Variables**: Do not save repeated panels, rows and scopedVars. [#32436](https://github.com/grafana/grafana/pull/32436), [@torkelo](https://github.com/torkelo)
* **Variables**: Removes experimental Tags feature. [#33361](https://github.com/grafana/grafana/pull/33361), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Removes the never refresh option. [#33533](https://github.com/grafana/grafana/pull/33533), [@hugohaggmark](https://github.com/hugohaggmark)
* **Visualizations**: Unify tooltip options across visualizations. [#33892](https://github.com/grafana/grafana/pull/33892), [@dprokop](https://github.com/dprokop)
* **Visualizations**: Refactor and unify option creation between new visualizations. [#33867](https://github.com/grafana/grafana/pull/33867), [@oscarkilhed](https://github.com/oscarkilhed)
* **Visualizations**: Remove singlestat panel. [#31904](https://github.com/grafana/grafana/pull/31904), [@dprokop](https://github.com/dprokop)
### Bug fixes
* **APIKeys**: Fixes issue with adding first api key. [#32201](https://github.com/grafana/grafana/pull/32201), [@torkelo](https://github.com/torkelo)
* **Alerting**: Add checks for non supported units - disable defaulting to seconds. [#32477](https://github.com/grafana/grafana/pull/32477), [@dsotirakis](https://github.com/dsotirakis)
* **Alerting**: Fix issue where Slack notifications won't link to user IDs. [#32861](https://github.com/grafana/grafana/pull/32861), [@n-wbrown](https://github.com/n-wbrown)
* **Alerting**: Omit empty message in PagerDuty notifier. [#31359](https://github.com/grafana/grafana/pull/31359), [@pkoenig10](https://github.com/pkoenig10)
* **AzureMonitor**: Fix migration error from older versions of App Insights queries. [#32372](https://github.com/grafana/grafana/pull/32372), [@joshhunt](https://github.com/joshhunt)
* **CloudWatch**: Fix AWS/Connect dimensions. [#33736](https://github.com/grafana/grafana/pull/33736), [@sunker](https://github.com/sunker)
* **CloudWatch**: Fix broken AWS/MediaTailor dimension name. [#33271](https://github.com/grafana/grafana/pull/33271), [@sunker](https://github.com/sunker)
* **Dashboards**: Allow string manipulation as advanced variable format option. [#29754](https://github.com/grafana/grafana/pull/29754), [@rscot231](https://github.com/rscot231)
* **DataLinks**: Includes harmless extended characters like Cyrillic characters. [#33551](https://github.com/grafana/grafana/pull/33551), [@hugohaggmark](https://github.com/hugohaggmark)
* **Drawer**: Fixes title overflowing its container. [#33857](https://github.com/grafana/grafana/pull/33857), [@thisisobate](https://github.com/thisisobate)
* **Explore**: Fix issue when some query errors were not shown. [#32212](https://github.com/grafana/grafana/pull/32212), [@aocenas](https://github.com/aocenas)
* **Generic OAuth**: Prevent adding duplicated users. [#32286](https://github.com/grafana/grafana/pull/32286), [@dsotirakis](https://github.com/dsotirakis)
* **Graphite**: Handle invalid annotations. [#32437](https://github.com/grafana/grafana/pull/32437), [@ifrost](https://github.com/ifrost)
* **Graphite**: Fix autocomplete when tags are not available. [#31680](https://github.com/grafana/grafana/pull/31680), [@ifrost](https://github.com/ifrost)
* **InfluxDB**: Fix Cannot read property 'length' of undefined in when parsing response. [#32504](https://github.com/grafana/grafana/pull/32504), [@ivanahuckova](https://github.com/ivanahuckova)
* **Instrumentation**: Enable tracing when Jaeger host and port are set. [#33682](https://github.com/grafana/grafana/pull/33682), [@zserge](https://github.com/zserge)
* **Instrumentation**: Prefix metrics with `grafana`. [#33925](https://github.com/grafana/grafana/pull/33925), [@bergquist](https://github.com/bergquist)
* **MSSQL**: By default let driver choose port. [#32417](https://github.com/grafana/grafana/pull/32417), [@aknuds1](https://github.com/aknuds1)
* **OAuth**: Add optional strict parsing of role_attribute_path. [#28021](https://github.com/grafana/grafana/pull/28021), [@klausenbusk](https://github.com/klausenbusk)
* **Panel**: Fixes description markdown with inline code being rendered on newlines and full width. [#32405](https://github.com/grafana/grafana/pull/32405), [@dprokop](https://github.com/dprokop)
* **PanelChrome**: Ignore data updates & errors for non data panels. [#33477](https://github.com/grafana/grafana/pull/33477), [@torkelo](https://github.com/torkelo)
* **Permissions**: Fix inherited folder permissions can prevent new permissions being added to a dashboard. [#33329](https://github.com/grafana/grafana/pull/33329), [@marefr](https://github.com/marefr)
* **Plugins**: Remove pre-existing plugin installs when installing with grafana-cli. [#31515](https://github.com/grafana/grafana/pull/31515), [@wbrowne](https://github.com/wbrowne)
* **Plugins**: Support installing to folders with whitespace and fix pluginUrl trailing and leading whitespace failures. [#32506](https://github.com/grafana/grafana/pull/32506), [@wbrowne](https://github.com/wbrowne)
* **Postgres/MySQL/MSSQL**: Don't return connection failure details to the client. [#32408](https://github.com/grafana/grafana/pull/32408), [@marefr](https://github.com/marefr)
* **Postgres**: Fix ms precision of interval in time group macro when TimescaleDB is enabled. [#33853](https://github.com/grafana/grafana/pull/33853), [@ying-jeanne](https://github.com/ying-jeanne)
* **Provisioning**: Use dashboard checksum field as change indicator. [#29797](https://github.com/grafana/grafana/pull/29797), [@cristi-](https://github.com/cristi-)
* **SQL**: Fix so that all captured errors are returned from sql engine. [#32353](https://github.com/grafana/grafana/pull/32353), [@marefr](https://github.com/marefr)
* **Shortcuts**: Fixes panel shortcuts so they always work. [#32385](https://github.com/grafana/grafana/pull/32385), [@torkelo](https://github.com/torkelo)
* **Table**: Fixes so border is visible for cells with links. [#33160](https://github.com/grafana/grafana/pull/33160), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Clear query when data source type changes. [#33924](https://github.com/grafana/grafana/pull/33924), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Filters out builtin variables from unknown list. [#33933](https://github.com/grafana/grafana/pull/33933), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Refreshes all panels even if panel is full screen. [#33201](https://github.com/grafana/grafana/pull/33201), [@hugohaggmark](https://github.com/hugohaggmark)
### Breaking changes
Removes the `never` refresh option for Query variables. Existing variables will be migrated and any stored options will be removed. Issue [#33533](https://github.com/grafana/grafana/issues/33533)
Removes the experimental Tags feature for Variables. Issue [#33361](https://github.com/grafana/grafana/issues/33361)
### Deprecations
The InfoBox & FeatureInfoBox are now deprecated please use the Alert component instead with severity info.
Issue [#33352](https://github.com/grafana/grafana/issues/33352)
### Plugin development fixes & changes
* **Button**: Introduce buttonStyle prop. [#33384](https://github.com/grafana/grafana/pull/33384), [@jackw](https://github.com/jackw)
* **DataQueryRequest**: Remove deprecated props showingGraph and showingTabel and exploreMode. [#31876](https://github.com/grafana/grafana/pull/31876), [@torkelo](https://github.com/torkelo)
* **grafana/ui**: Update React Hook Form to v7. [#33328](https://github.com/grafana/grafana/pull/33328), [@Clarity-89](https://github.com/Clarity-89)
* **IconButton**: Introduce variant for red and blue icon buttons. [#33479](https://github.com/grafana/grafana/pull/33479), [@jackw](https://github.com/jackw)
* **Plugins**: Expose the `getTimeZone` function to be able to get the current selected timeZone. [#31900](https://github.com/grafana/grafana/pull/31900), [@mckn](https://github.com/mckn)
* **TagsInput**: Add className to TagsInput. [#33944](https://github.com/grafana/grafana/pull/33944), [@Clarity-89](https://github.com/Clarity-89)
* **VizLegend**: Move onSeriesColorChanged to PanelContext (breaking change). [#33611](https://github.com/grafana/grafana/pull/33611), [@ryantxu](https://github.com/ryantxu)
<!-- 8.0.0-beta1 END -->
<!-- 7.5.9 START -->
# 7.5.9 (2021-06-23)
### Bug fixes
* **Login:** Fix Unauthorized message that is displayed on sign-in or snapshot page. [#35880](https://github.com/grafana/grafana/pull/35880), [@torkelo](https://github.com/torkelo)
<!-- 7.5.9 END -->
<!-- 7.5.8 START -->
# 7.5.8 (2021-06-16)
### Features and enhancements
* **Datasource:** Add support for max_conns_per_host in dataproxy settings. [#35519](https://github.com/grafana/grafana/pull/35519), [@jvrplmlmn](https://github.com/jvrplmlmn)
* **Datasource:** Add support for max_idle_connections_per_host in dataproxy settings. [#35365](https://github.com/grafana/grafana/pull/35365), [@dsotirakis](https://github.com/dsotirakis)
* **Instrumentation:** Add metrics for outbound HTTP connections. [#35321](https://github.com/grafana/grafana/pull/35321), [@dsotirakis](https://github.com/dsotirakis)
* **Snapshots:** Remove dashboard links from dashboard snapshots. [#35567](https://github.com/grafana/grafana/pull/35567), [@torkelo](https://github.com/torkelo)
<!-- 7.5.8 END -->
<!-- 7.5.7 START -->
# 7.5.7 (2021-05-19)
### Bug fixes
* **Dockerfile:** Fixes missing --no-cache. [#33906](https://github.com/grafana/grafana/pull/33906), [@030](https://github.com/030)
* **Annotations:** Prevent orphaned annotation tags cleanup when no annotations were cleaned. [#33957](https://github.com/grafana/grafana/pull/33957), [@afayngelerindbx](https://github.com/afayngelerindbx)
* **Quota:** Do not count folders towards dashboard quota. [#32519](https://github.com/grafana/grafana/pull/32519), [@conorevans](https://github.com/conorevans)
<!-- 7.5.7 END -->
<!-- 7.5.6 START -->
# 7.5.6 (2021-05-11)
### Features and enhancements
* **Database**: Add isolation level configuration parameter for MySQL. [#33830](https://github.com/grafana/grafana/pull/33830), [@zserge](https://github.com/zserge)
* **InfluxDB**: Improve measurement-autocomplete behavior. [#33494](https://github.com/grafana/grafana/pull/33494), [@gabor](https://github.com/gabor)
* **Instrumentation**: Don't consider invalid email address a failed email. [#33671](https://github.com/grafana/grafana/pull/33671), [@bergquist](https://github.com/bergquist)
### Bug fixes
* **Loki**: fix label browser crashing when + typed. [#33900](https://github.com/grafana/grafana/pull/33900), [@zoltanbedi](https://github.com/zoltanbedi)
* **Prometheus**: Sanitize PromLink button. [#33874](https://github.com/grafana/grafana/pull/33874), [@ivanahuckova](https://github.com/ivanahuckova)
<!-- 7.5.6 END -->
<!-- 7.5.5 START -->
# 7.5.5 (2021-04-28)
### Features and enhancements
* **Explore:** Load default data source in Explore when the provided source does not exist. [#32992](https://github.com/grafana/grafana/pull/32992), [@ifrost](https://github.com/ifrost)
* **Instrumentation:** Add success rate metrics for email notifications. [#33359](https://github.com/grafana/grafana/pull/33359), [@bergquist](https://github.com/bergquist)
### Bug fixes
* **Alerting:** Remove field limitation from Slack notifications. [#33113](https://github.com/grafana/grafana/pull/33113), [@dsotirakis](https://github.com/dsotirakis)
* **Auth:** Do not clear auth token cookie when token lookup fails. [#32999](https://github.com/grafana/grafana/pull/32999), [@marefr](https://github.com/marefr)
* **Bug:** Add git command to Dockerfile.ubuntu file. [#33247](https://github.com/grafana/grafana/pull/33247), [@dsotirakis](https://github.com/dsotirakis)
* **Explore:** Adjust time to the selected timezone. [#33315](https://github.com/grafana/grafana/pull/33315), [@ifrost](https://github.com/ifrost)
* **GraphNG:** Fix exemplars window position. [#33427](https://github.com/grafana/grafana/pull/33427), [@zoltanbedi](https://github.com/zoltanbedi)
* **Loki:** Pass Skip TLS Verify setting to alert queries. [#33025](https://github.com/grafana/grafana/pull/33025), [@ivanahuckova](https://github.com/ivanahuckova)
* **Postgres:** Fix time group macro when TimescaleDB is enabled and interval is less than a second. [#33153](https://github.com/grafana/grafana/pull/33153), [@marefr](https://github.com/marefr)
<!-- 7.5.5 END -->
<!-- 7.5.4 START -->
# 7.5.4 (2021-04-14)
### Features and enhancements
* **AzureMonitor**: Add support for Microsoft.AppConfiguration/configurationStores namespace. [#32123](https://github.com/grafana/grafana/pull/32123), [@deesejohn](https://github.com/deesejohn)
* **TablePanel**: Make sorting case-insensitive. [#32435](https://github.com/grafana/grafana/pull/32435), [@kaydelaney](https://github.com/kaydelaney)
### Bug fixes
* **AzureMonitor**: Add support for Virtual WAN namespaces. [#32935](https://github.com/grafana/grafana/pull/32935), [@joshhunt](https://github.com/joshhunt)
* **Bugfix**: Add proper padding when scrolling is added to bar gauge. [#32411](https://github.com/grafana/grafana/pull/32411), [@mckn](https://github.com/mckn)
* **Datasource**: Prevent default data source named "default" from causing infinite loop. [#32949](https://github.com/grafana/grafana/pull/32949), [@jackw](https://github.com/jackw)
* **Prometheus**: Allow query_exemplars endpoint in data source proxy. [#32802](https://github.com/grafana/grafana/pull/32802), [@zoltanbedi](https://github.com/zoltanbedi)
* **Table**: Fix table data links so they refer to correct row after sorting. [#32571](https://github.com/grafana/grafana/pull/32571), [@torkelo](https://github.com/torkelo)
<!-- 7.5.4 END -->
<!-- 7.5.3 START -->
# 7.5.3 (2021-04-07)
### Features and enhancements
* **Dashboard**: Do not include default datasource when externally exporting dashboard with row. [#32494](https://github.com/grafana/grafana/pull/32494), [@kaydelaney](https://github.com/kaydelaney)
* **Loki**: Remove empty annotations tags. [#32359](https://github.com/grafana/grafana/pull/32359), [@conorevans](https://github.com/conorevans)
### Bug fixes
* **AdHocVariable**: Add default data source to picker. [#32470](https://github.com/grafana/grafana/pull/32470), [@hugohaggmark](https://github.com/hugohaggmark)
* **Configuration**: Prevent browser hanging / crashing with large number of org users. [#32546](https://github.com/grafana/grafana/pull/32546), [@jackw](https://github.com/jackw)
* **Elasticsearch**: Fix bucket script variable duplication in UI. [#32705](https://github.com/grafana/grafana/pull/32705), [@Elfo404](https://github.com/Elfo404)
* **Explore**: Fix bug where navigating to explore would result in wrong query and datasource to be shown. [#32558](https://github.com/grafana/grafana/pull/32558), [@aocenas](https://github.com/aocenas)
* **FolderPicker**: Prevent dropdown menu from disappearing off screen. [#32603](https://github.com/grafana/grafana/pull/32603), [@jackw](https://github.com/jackw)
* **SingleStat**: Fix issue with panel links. [#32721](https://github.com/grafana/grafana/pull/32721), [@gjulianm](https://github.com/gjulianm)
* **Variables**: Confirm selection before opening new picker. [#32586](https://github.com/grafana/grafana/pull/32586), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Confirm selection before opening new picker. [#32503](https://github.com/grafana/grafana/pull/32503), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Fix unsupported data format error for null values. [#32480](https://github.com/grafana/grafana/pull/32480), [@hugohaggmark](https://github.com/hugohaggmark)
<!-- 7.5.3 END -->
<!-- 7.5.2 START -->
# 7.5.2 (2021-03-30)
### Features and enhancements
* **Explore**: Set Explore's GraphNG to use default value for connected null values setting. [#32471](https://github.com/grafana/grafana/pull/32471), [@ivanahuckova](https://github.com/ivanahuckova)
### Bug fixes
* **DashboardDataSource**: Fix query not being executed after selecting source panel. [#32383](https://github.com/grafana/grafana/pull/32383), [@torkelo](https://github.com/torkelo)
* **Graph**: Fix setting right y-axis when standard option unit is configured. [#32426](https://github.com/grafana/grafana/pull/32426), [@torkelo](https://github.com/torkelo)
* **Table**: Fix links for image cells. [#32370](https://github.com/grafana/grafana/pull/32370), [@kaydelaney](https://github.com/kaydelaney)
* **Variables**: Fix data source variable when default data source is selected. [#32384](https://github.com/grafana/grafana/pull/32384), [@torkelo](https://github.com/torkelo)
* **Variables**: Fix manually entering non-matching custom value in variable input/picker error. [#32390](https://github.com/grafana/grafana/pull/32390), [@torkelo](https://github.com/torkelo)
<!-- 7.5.2 END -->
<!-- 7.5.1 START -->
# 7.5.1 (2021-03-26)
### Bug fixes
* **MSSQL**: Fix panic not implemented by upgrading go-mssqldb dependency. [#32347](https://github.com/grafana/grafana/pull/32347), [@aknuds1](https://github.com/aknuds1)
<!-- 7.5.1 END -->
<!-- 7.5.0 START -->
# 7.5.0 (2021-03-25)
### Features and enhancements
* **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32262](https://github.com/grafana/grafana/pull/32262), [@grafanabot](https://github.com/grafanabot)
* **CloudWatch**: Use latest version of aws sdk. [#32217](https://github.com/grafana/grafana/pull/32217), [@sunker](https://github.com/sunker)
### Bug fixes
* **Alerting**: Add ability to include aliases with hyphen in InfluxDB. [#32224](https://github.com/grafana/grafana/pull/32224), [@dsotirakis](https://github.com/dsotirakis)
* **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32241](https://github.com/grafana/grafana/pull/32241), [@huynhsamha](https://github.com/huynhsamha)
* **DashboardSettings**: Fixes issue with tags list not updating changes are made. [#32189](https://github.com/grafana/grafana/pull/32189), [@huynhsamha](https://github.com/huynhsamha)
* **Loki**: Fix text search in Label browser. [#32293](https://github.com/grafana/grafana/pull/32293), [@ivanahuckova](https://github.com/ivanahuckova)
<!-- 7.5.0 END -->
<!-- 7.5.0-beta2 START -->
# 7.5.0-beta2 (2021-03-19)
### Features and enhancements
* **CloudWatch**: Add support for EC2 IAM role. [#31804](https://github.com/grafana/grafana/pull/31804), [@sunker](https://github.com/sunker)
* **CloudWatch**: Consume the grafana/aws-sdk. [#31807](https://github.com/grafana/grafana/pull/31807), [@sunker](https://github.com/sunker)
* **CloudWatch**: Restrict auth provider and assume role usage according to Grafana configuration. [#31805](https://github.com/grafana/grafana/pull/31805), [@sunker](https://github.com/sunker)
* **Cloudwatch**: ListMetrics API page limit. [#31788](https://github.com/grafana/grafana/pull/31788), [@sunker](https://github.com/sunker)
* **Cloudwatch**: Use shared library for aws auth. [#29550](https://github.com/grafana/grafana/pull/29550), [@ryantxu](https://github.com/ryantxu)
* **DataLinks**: Bring back single click links for Stat, Gauge and BarGauge panel. [#31692](https://github.com/grafana/grafana/pull/31692), [@dprokop](https://github.com/dprokop)
* **Docker**: Support pre-installed plugins from other sources in custom Dockerfiles. [#31234](https://github.com/grafana/grafana/pull/31234), [@sgnsys3](https://github.com/sgnsys3)
* **Elasticseach**: Add support for histogram fields. [#29079](https://github.com/grafana/grafana/pull/29079), [@simianhacker](https://github.com/simianhacker)
* **Exemplars**: Always query exemplars. [#31673](https://github.com/grafana/grafana/pull/31673), [@zoltanbedi](https://github.com/zoltanbedi)
* **Explore**: Support full inspect drawer. [#32005](https://github.com/grafana/grafana/pull/32005), [@ivanahuckova](https://github.com/ivanahuckova)
* **HttpServer**: Make read timeout configurable but disabled by default. [#31575](https://github.com/grafana/grafana/pull/31575), [@bergquist](https://github.com/bergquist)
* **SQLStore**: Close session in withDbSession. [#31775](https://github.com/grafana/grafana/pull/31775), [@aknuds1](https://github.com/aknuds1)
* **Templating**: Use dashboard timerange when variables are set to refresh 'On Dashboard Load'. [#31721](https://github.com/grafana/grafana/pull/31721), [@Elfo404](https://github.com/Elfo404)
* **Tempo**: Convert to backend data source. [#31618](https://github.com/grafana/grafana/pull/31618), [@zoltanbedi](https://github.com/zoltanbedi)
### Bug fixes
* **Admin**: Keeps expired api keys visible in table after delete. [#31636](https://github.com/grafana/grafana/pull/31636), [@hugohaggmark](https://github.com/hugohaggmark)
* **Data proxy**: Fix encoded characters in URL path should be proxied as encoded. [#30597](https://github.com/grafana/grafana/pull/30597), [@marefr](https://github.com/marefr)
* **Explore/Logs**: Fix escaping in ANSI logs. [#31731](https://github.com/grafana/grafana/pull/31731), [@ivanahuckova](https://github.com/ivanahuckova)
* **GraphNG**: Fix tooltip series color for multi data frame scenario. [#32098](https://github.com/grafana/grafana/pull/32098), [@dprokop](https://github.com/dprokop)
* **GraphNG**: Make sure data set and config are in sync when initializing and re-initializing uPlot. [#32106](https://github.com/grafana/grafana/pull/32106), [@dprokop](https://github.com/dprokop)
* **Loki**: Fix autocomplete when re-editing Loki label values. [#31828](https://github.com/grafana/grafana/pull/31828), [@ivanahuckova](https://github.com/ivanahuckova)
* **MixedDataSource**: Name is updated when data source variables change. [#32090](https://github.com/grafana/grafana/pull/32090), [@hugohaggmark](https://github.com/hugohaggmark)
* **PanelInspect**: Interpolates variables in CSV file name. [#31936](https://github.com/grafana/grafana/pull/31936), [@hugohaggmark](https://github.com/hugohaggmark)
* **ReduceTransform**: Include series with numeric string names. [#31763](https://github.com/grafana/grafana/pull/31763), [@hugohaggmark](https://github.com/hugohaggmark)
* **Snapshots**: Fix usage of sign in link from the snapshot page. [#31986](https://github.com/grafana/grafana/pull/31986), [@marefr](https://github.com/marefr)
* **TimePicker**: Fixes hidden time picker shown in kiosk TV mode. [#32062](https://github.com/grafana/grafana/pull/32062), [@torkelo](https://github.com/torkelo)
* **ValueMappings**: Fixes value 0 not being mapped. [#31924](https://github.com/grafana/grafana/pull/31924), [@Willena](https://github.com/Willena)
* **Variables**: Fixes filtering in picker with null items. [#31979](https://github.com/grafana/grafana/pull/31979), [@hugohaggmark](https://github.com/hugohaggmark)
* **Variables**: Improves inspection performance and unknown filtering. [#31811](https://github.com/grafana/grafana/pull/31811), [@hugohaggmark](https://github.com/hugohaggmark)
### Plugin development fixes & changes
* **Auth**: Allow soft token revocation. [#31601](https://github.com/grafana/grafana/pull/31601), [@joanlopez](https://github.com/joanlopez)
<!-- 7.5.0-beta2 END -->
<!-- 7.5.0-beta1 START -->
# 7.5.0-beta1 (2021-03-04)
### Features and enhancements
* **Alerting**: Customise OK notification priorities for Pushover notifier. [#30169](https://github.com/grafana/grafana/pull/30169), [@acaire](https://github.com/acaire)
* **Alerting**: Improve default message for SensuGo notifier. [#31428](https://github.com/grafana/grafana/pull/31428), [@M4teo](https://github.com/M4teo)
* **Alerting**: PagerDuty: adding current state to the payload. [#29270](https://github.com/grafana/grafana/pull/29270), [@Eraac](https://github.com/Eraac)
* **AzureMonitor**: Add deprecation message for App Insights/Insights Analytics. [#30633](https://github.com/grafana/grafana/pull/30633), [@joshhunt](https://github.com/joshhunt)
* **CloudMonitoring**: Allow free text input for GCP project on dashboard variable query. [#28048](https://github.com/grafana/grafana/issues/28048)
* **CloudMonitoring**: Increase service api page size. [#30892](https://github.com/grafana/grafana/pull/30892), [@sunker](https://github.com/sunker)
* **CloudMonitoring**: Show service and SLO display name in SLO Query editor. [#30900](https://github.com/grafana/grafana/pull/30900), [@sunker](https://github.com/sunker)
* **CloudWatch**: Add AWS Ground Station metrics and dimensions. [#31362](https://github.com/grafana/grafana/pull/31362), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Add AWS Network Firewall metrics and dimensions. [#31498](https://github.com/grafana/grafana/pull/31498), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Add AWS Timestream Metrics and Dimensions. [#31624](https://github.com/grafana/grafana/pull/31624), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Add RDS Proxy metrics. [#31595](https://github.com/grafana/grafana/pull/31595), [@sunker](https://github.com/sunker)
* **CloudWatch**: Add eu-south-1 Cloudwatch region. [#31198](https://github.com/grafana/grafana/pull/31198), [@rubycut](https://github.com/rubycut)
* **CloudWatch**: Make it possible to specify custom api endpoint. [#31402](https://github.com/grafana/grafana/pull/31402), [@sunker](https://github.com/sunker)
* **Cloudwatch**: Add AWS/DDoSProtection metrics and dimensions. [#31297](https://github.com/grafana/grafana/pull/31297), [@relvira](https://github.com/relvira)
* **Dashboard**: Remove template variables option from ShareModal. [#30395](https://github.com/grafana/grafana/pull/30395), [@oscarkilhed](https://github.com/oscarkilhed)
* **Docs**: Define TLS/SSL terminology. [#30533](https://github.com/grafana/grafana/pull/30533), [@aknuds1](https://github.com/aknuds1)
* **Elasticsearch**: Add word highlighting to search results. [#30293](https://github.com/grafana/grafana/pull/30293), [@simianhacker](https://github.com/simianhacker)
* **Folders**: Editors should be able to edit name and delete folders. [#31242](https://github.com/grafana/grafana/pull/31242), [@torkelo](https://github.com/torkelo)
* **Graphite/SSE**: update graphite to work with server side expressions. [#31455](https://github.com/grafana/grafana/pull/31455), [@kylebrandt](https://github.com/kylebrandt)
* **InfluxDB**: Improve maxDataPoints error-message in Flux-mode, raise limits. [#31259](https://github.com/grafana/grafana/pull/31259), [@gabor](https://github.com/gabor)
* **InfluxDB**: In flux query editor, do not run query when disabled. [#31324](https://github.com/grafana/grafana/pull/31324), [@gabor](https://github.com/gabor)
* **LogsPanel**: Add deduplication option for logs. [#31019](https://github.com/grafana/grafana/pull/31019), [@ivanahuckova](https://github.com/ivanahuckova)
* **Loki**: Add line limit for annotations. [#31183](https://github.com/grafana/grafana/pull/31183), [@ivanahuckova](https://github.com/ivanahuckova)
* **Loki**: Add support for alerting. [#31424](https://github.com/grafana/grafana/pull/31424), [@ivanahuckova](https://github.com/ivanahuckova)
* **Loki**: Label browser. [#30351](https://github.com/grafana/grafana/pull/30351), [@davkal](https://github.com/davkal)
* **PieChart**: Add color changing options to pie chart. [#31588](https://github.com/grafana/grafana/pull/31588), [@oscarkilhed](https://github.com/oscarkilhed)
* **PostgreSQL**: Allow providing TLS/SSL certificates as text in addition to file paths. [#30353](https://github.com/grafana/grafana/pull/30353), [@ying-jeanne](https://github.com/ying-jeanne)
* **Postgres**: SSL certification. [#30352](https://github.com/grafana/grafana/pull/30352), [@ying-jeanne](https://github.com/ying-jeanne)
* **Profile**: Prevent OAuth users from changing user details or password. [#27886](https://github.com/grafana/grafana/pull/27886), [@dupondje](https://github.com/dupondje)
* **Prometheus**: Change default httpMethod for new instances to POST. [#31292](https://github.com/grafana/grafana/pull/31292), [@ivanahuckova](https://github.com/ivanahuckova)
* **Prometheus**: Min step defaults to seconds when no unit is set. [#30966](https://github.com/grafana/grafana/pull/30966), [@nutmos](https://github.com/nutmos)
* **Stats**: Exclude folders from total dashboard count. [#31320](https://github.com/grafana/grafana/pull/31320), [@bergquist](https://github.com/bergquist)
* **Tracing**: Specify type of data frame that is expected for TraceView. [#31465](https://github.com/grafana/grafana/pull/31465), [@aocenas](https://github.com/aocenas)
* **Transformers**: Add search to transform selection. [#30854](https://github.com/grafana/grafana/pull/30854), [@ryantxu](https://github.com/ryantxu)
### Bug fixes
* **Alerting**: Ensure Discord notification is sent when metric name is absent. [#31257](https://github.com/grafana/grafana/pull/31257), [@LeviHarrison](https://github.com/LeviHarrison)
* **Alerting**: Fix case when Alertmanager notifier fails if a URL is not working. [#31079](https://github.com/grafana/grafana/pull/31079), [@kurokochin](https://github.com/kurokochin)
* **CloudMonitoring**: Prevent resource type variable function from crashing. [#30901](https://github.com/grafana/grafana/pull/30901), [@sunker](https://github.com/sunker)
* **Color**: Fix issue where colors are reset to gray when switching panels. [#31611](https://github.com/grafana/grafana/pull/31611), [@torkelo](https://github.com/torkelo)
* **Explore**: Show ANSI colored logs in logs context. [#31510](https://github.com/grafana/grafana/pull/31510), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: keep enabled/disabled state in angular based QueryEditors correctly. [#31558](https://github.com/grafana/grafana/pull/31558), [@gabor](https://github.com/gabor)
* **Graph**: Fix tooltip not being displayed when close to edge of viewport. [#31493](https://github.com/grafana/grafana/pull/31493), [@msober](https://github.com/msober)
* **Heatmap**: Fix missing value in legend. [#31430](https://github.com/grafana/grafana/pull/31430), [@kurokochin](https://github.com/kurokochin)
* **InfluxDB**: Handle columns named "table". [#30985](https://github.com/grafana/grafana/pull/30985), [@gabor](https://github.com/gabor)
* **Prometheus**: Use configured HTTP method for /series and /labels endpoints. [#31401](https://github.com/grafana/grafana/pull/31401), [@ivanahuckova](https://github.com/ivanahuckova)
* **RefreshPicker**: Make valid intervals in url visible in RefreshPicker. [#30474](https://github.com/grafana/grafana/pull/30474), [@hugohaggmark](https://github.com/hugohaggmark)
* **TimeSeriesPanel**: Fix overlapping time axis ticks. [#31332](https://github.com/grafana/grafana/pull/31332), [@torkelo](https://github.com/torkelo)
* **TraceViewer**: Fix show log marker in spanbar. [#30742](https://github.com/grafana/grafana/pull/30742), [@zoltanbedi](https://github.com/zoltanbedi)
### Plugin development fixes & changes
* **Plugins**: Add autoEnabled plugin JSON field to auto enable App plugins and add configuration link to menu by default. [#31354](https://github.com/grafana/grafana/pull/31354), [@torkelo](https://github.com/torkelo)
* **Pagination**: Improve pagination for large number of pages. [#30151](https://github.com/grafana/grafana/pull/30151), [@nathanrodman](https://github.com/nathanrodman)
<!-- 7.5.0-beta1 END -->
<!-- 7.4.5 START -->
# 7.4.5 (2021-03-18)
### Bug fixes
* **Security**: Fix API permissions issues related to team-sync CVE-2021-28146, CVE-2021-28147. (Enterprise)
* **Security**: Usage insights requires signed in users CVE-2021-28148. (Enterprise)
* **Security**: Do not allow editors to incorrectly bypass permissions on the default data source. CVE-2021-27962. (Enterprise)
<!-- 7.4.5 END -->
<!-- 7.4.3 START -->

View File

@@ -16,7 +16,7 @@ COPY emails emails
ENV NODE_ENV production
RUN yarn build
FROM golang:1.16.0-alpine3.13 as go-builder
FROM golang:1.16.1-alpine3.13 as go-builder
RUN apk add --no-cache gcc g++

View File

@@ -5,6 +5,7 @@ WORKDIR /usr/src/app/
COPY package.json yarn.lock ./
COPY packages packages
RUN apt-get update && apt-get install -yq git
RUN yarn install --pure-lockfile
COPY tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js ./

View File

@@ -69,6 +69,10 @@ socket = /tmp/grafana.sock
# CDN Url
cdn_url =
# Sets the maximum time in minutes before timing out read of an incoming request and closing idle connections.
# `0` means there is no timeout for reading the request.
read_timeout = 0
#################################### Database ############################
[database]
# You can configure the database connection by specifying type, host, name, user and password
@@ -101,6 +105,12 @@ log_queries =
# For "mysql", use either "true", "false", or "skip-verify".
ssl_mode = disable
# Database drivers may support different transaction isolation levels.
# Currently, only "mysql" driver supports isolation levels.
# If the value is empty - driver's default isolation level is applied.
# For "mysql" use "READ-UNCOMMITTED", "READ-COMMITTED", "REPEATABLE-READ" or "SERIALIZABLE".
isolation_level =
ca_cert_path =
client_key_path =
client_cert_path =
@@ -145,9 +155,17 @@ tls_handshake_timeout_seconds = 10
# waiting for the server to approve.
expect_continue_timeout_seconds = 1
# Optionally limits the total number of connections per host, including connections in the dialing,
# active, and idle states. On limit violation, dials will block.
# A value of zero (0) means no limit.
max_conns_per_host = 0
# The maximum number of idle connections that Grafana will keep alive.
max_idle_connections = 100
# The maximum number of idle connections per host that Grafana will keep alive.
max_idle_connections_per_host = 2
# How many seconds the data proxy keeps an idle connection open before timing out.
idle_conn_timeout_seconds = 90
@@ -300,6 +318,9 @@ password_hint = password
# Default UI theme ("dark" or "light")
default_theme = dark
# Path to a custom home page. Users are only redirected to this if the default home dashboard is used. It should match a frontend route and contain a leading slash.
home_page =
# External user management
external_manage_link_url =
external_manage_link_name =
@@ -507,14 +528,17 @@ active_sync_enabled = true
#################################### AWS ###########################
[aws]
# Enter a comma-separated list of allowed AWS authentication providers.
# Options are: default (AWS SDK Default), keys (Access && secret key), credentials (Credentials field), ec2_IAM_role (EC2 IAM Role)
# Enter a comma-separated list of allowed AWS authentication providers.
# Options are: default (AWS SDK Default), keys (Access && secret key), credentials (Credentials field), ec2_iam_role (EC2 IAM Role)
allowed_auth_providers = default,keys,credentials
# Allow AWS users to assume a role using temporary security credentials.
# Allow AWS users to assume a role using temporary security credentials.
# If true, assume role will be enabled for all AWS authentication providers that are specified in aws_auth_providers
assume_role_enabled = true
# Specify max no of pages to be returned by the ListMetricPages API
list_metrics_page_limit = 500
#################################### SMTP / Emailing #####################
[smtp]
enabled = false
@@ -682,6 +706,9 @@ max_annotation_age =
max_annotations_to_keep =
#################################### Annotations #########################
[annotations]
# Configures the batch size for the annotation clean-up job. This setting is used for dashboard, API, and alert annotations.
cleanupjob_batchsize = 100
[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.

View File

@@ -70,6 +70,10 @@
# CDN Url
;cdn_url =
# Sets the maximum time using a duration format (5s/5m/5ms) before timing out read of an incoming request and closing idle connections.
# `0` means there is no timeout for reading the request.
;read_timeout = 0
#################################### Database ####################################
[database]
# You can configure the database connection by specifying type, host, name, user and password
@@ -90,6 +94,12 @@
# For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable
# Database drivers may support different transaction isolation levels.
# Currently, only "mysql" driver supports isolation levels.
# If the value is empty - driver's default isolation level is applied.
# For "mysql" use "READ-UNCOMMITTED", "READ-COMMITTED", "REPEATABLE-READ" or "SERIALIZABLE".
;isolation_level =
;ca_cert_path =
;client_key_path =
;client_cert_path =
@@ -151,9 +161,17 @@
# waiting for the server to approve.
;expect_continue_timeout_seconds = 1
# Optionally limits the total number of connections per host, including connections in the dialing,
# active, and idle states. On limit violation, dials will block.
# A value of zero (0) means no limit.
;max_conns_per_host = 0
# The maximum number of idle connections that Grafana will keep alive.
;max_idle_connections = 100
# The maximum number of idle connections per host that Grafana will keep alive.
;max_idle_connections_per_host = 2
# How many seconds the data proxy keeps an idle connection open before timing out.
;idle_conn_timeout_seconds = 90
@@ -300,6 +318,9 @@
# Default UI theme ("dark" or "light")
;default_theme = dark
# Path to a custom home page. Users are only redirected to this if the default home dashboard is used. It should match a frontend route and contain a leading slash.
; home_page =
# External user management, these options affect the organization users view
;external_manage_link_url =
;external_manage_link_name =
@@ -497,11 +518,11 @@
#################################### AWS ###########################
[aws]
# Enter a comma-separated list of allowed AWS authentication providers.
# Options are: default (AWS SDK Default), keys (Access && secret key), credentials (Credentials field), ec2_IAM_role (EC2 IAM Role)
# Enter a comma-separated list of allowed AWS authentication providers.
# Options are: default (AWS SDK Default), keys (Access && secret key), credentials (Credentials field), ec2_iam_role (EC2 IAM Role)
; allowed_auth_providers = default,keys,credentials
# Allow AWS users to assume a role using temporary security credentials.
# Allow AWS users to assume a role using temporary security credentials.
# If true, assume role will be enabled for all AWS authentication providers that are specified in aws_auth_providers
; assume_role_enabled = true
@@ -675,6 +696,9 @@
;max_annotations_to_keep =
#################################### Annotations #########################
[annotations]
# Configures the batch size for the annotation clean-up job. This setting is used for dashboard, API, and alert annotations.
;cleanupjob_batchsize = 100
[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.

View File

@@ -177,7 +177,7 @@ make devenv sources=influxdb,loki
The script generates a Docker Compose file with the databases you specify as `sources`, and runs them in the background.
See the repository for all the [available data sources](/devenv/docker/blocks). Note that some data sources have specific Docker images for macOS, e.g. `prometheus_mac`.
See the repository for all the [available data sources](/devenv/docker/blocks). Note that some data sources have specific Docker images for macOS, e.g. `nginx_proxy_mac`.
## Build a Docker image

File diff suppressed because it is too large Load Diff

View File

@@ -2,6 +2,8 @@
build: docker/blocks/prometheus2
ports:
- "9090:9090"
extra_hosts:
- "host.docker.internal:host-gateway"
node_exporter:
image: prom/node-exporter

View File

@@ -32,7 +32,7 @@ scrape_configs:
- job_name: 'grafana'
static_configs:
- targets: ['grafana:3000']
- targets: ['host.docker.internal:3000']
- job_name: 'prometheus-random-data'
static_configs:

View File

@@ -1,7 +1,7 @@
FROM golang:latest
FROM golang:latest
ADD main.go /
WORKDIR /
RUN go build -o main .
RUN GO111MODULE=off go build -o main .
EXPOSE 3011
ENTRYPOINT ["/main"]

View File

@@ -1,7 +1,7 @@
FROM golang:latest
FROM golang:latest
ADD main.go /
WORKDIR /
RUN go build -o main .
RUN GO111MODULE=off go build -o main .
EXPOSE 3011
ENTRYPOINT ["/main"]

View File

@@ -7,6 +7,8 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
# Grafana documentation
This is documentation for the latest stable release (7.5.x) version of Grafana. For the 8.0 beta documentation, click [here](https://grafana.com/docs/grafana/next/).
## Installing Grafana
<div class="nav-cards">
@@ -48,11 +50,15 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
<h4>Getting started</h4>
<p>Learn the basics of using Grafana.</p>
</a>
<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 "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 "getting-started/timeseries.md" >}}" 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>
@@ -71,51 +77,51 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
<div class="nav-cards">
<a href="{{< relref "datasources/graphite.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_graphite.svg" >
<img src="/static/img/docs/logos/icon_graphite.svg" >
<h5>Graphite</h5>
</a>
<a href="{{< relref "datasources/elasticsearch.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_elasticsearch.svg" >
<img src="/static/img/docs/logos/icon_elasticsearch.svg" >
<h5>Elasticsearch</h5>
</a>
<a href="{{< relref "datasources/influxdb.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_influxdb.svg" >
<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.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_prometheus.svg" >
<img src="/static/img/docs/logos/icon_prometheus.svg" >
<h5>Prometheus</h5>
</a>
<a href="{{< relref "datasources/google-cloud-monitoring/_index.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_cloudmonitoring.svg">
<img src="/static/img/docs/logos/icon_cloudmonitoring.svg">
<h5>Google Cloud Monitoring</h5>
</a>
<a href="{{< relref "datasources/cloudwatch.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_cloudwatch.svg">
<img src="/static/img/docs/logos/icon_cloudwatch.svg">
<h5>AWS CloudWatch</h5>
</a>
<a href="{{< relref "datasources/azuremonitor.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_azure_monitor.jpg">
<img src="/static/img/docs/logos/icon_azure_monitor.jpg">
<h5>Azure Monitor</h5>
</a>
<a href="{{< relref "datasources/loki.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_loki.svg">
<img src="/static/img/docs/logos/icon_loki.svg">
<h5>Loki</h5>
</a>
<a href="{{< relref "datasources/mysql.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_mysql.png" >
<img src="/static/img/docs/logos/icon_mysql.png" >
<h5>MySQL</h5>
</a>
<a href="{{< relref "datasources/postgres.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_postgres.svg" >
<img src="/static/img/docs/logos/icon_postgres.svg" >
<h5>Postgres</h5>
</a>
<a href="{{< relref "datasources/mssql.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/sql_server_logo.svg">
<img src="/static/img/docs/logos/sql_server_logo.svg">
<h5>Microsoft SQL Server</h5>
</a>
<a href="{{< relref "datasources/opentsdb.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_opentsdb.png" >
<img src="/static/img/docs/logos/icon_opentsdb.png" >
<h5>OpenTSDB</h5>
</a>
</div>

View File

@@ -36,7 +36,7 @@ Refer to [Configure a Grafana Docker image]({{< relref "configure-docker.md" >}}
### macOS
By default, the configuration file is located at `/usr/local/etc/grafana/grafana.ini`. To configure Grafana, add a configuration file named `custom.ini` to the `conf` folder to override any of the settings defined in `conf/defaults.ini`.
By default, the configuration file is located at `/usr/local/etc/grafana/grafana.ini`. For a Grafana instance installed using Homebrew, edit the `grafana.ini` file directly. Otherwise, add a configuration file named `custom.ini` to the `conf` folder to override any of the settings defined in `conf/defaults.ini`.
## Comments in .ini Files
@@ -168,7 +168,7 @@ Override log path using the command line argument `cfg:default.paths.logs`:
### plugins
Directory where Grafana automatically scans and looks for plugins. Manually or automatically install any [plugins](https://grafana.com/docs/grafana/latest/plugins/installation/) here.
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`.
@@ -266,7 +266,12 @@ Path where the socket should be created when `protocol=socket`. Make sure that G
Specify a full HTTP URL address to the root of your Grafana CDN assets. Grafana will add edition and version paths.
For example, given a cdn url like `https://cdn.myserver.com` grafana will try to load a javascript file from
`http://cdn.myserver.com/grafana-oss/v7.4.0/public/build/app.<hash>.js`.
`http://cdn.myserver.com/grafana-oss/7.4.0/public/build/app.<hash>.js`.
### read_timeout
Sets the maximum time using a duration format (5s/5m/5ms) before timing out read of an incoming request and closing idle connections.
`0` means there is no timeout for reading the request.
<hr />
@@ -324,6 +329,10 @@ Set to `true` to log the sql calls and execution times.
For Postgres, use either `disable`, `require` or `verify-full`.
For MySQL, use either `true`, `false`, or `skip-verify`.
### isolation_level
Only the MySQL driver supports isolation levels in Grafana. In case the value is empty, the driver's default isolation level is applied. Available options are "READ-UNCOMMITTED", "READ-COMMITTED", "REPEATABLE-READ" or "SERIALIZABLE".
### ca_cert_path
The path to the CA certificate to use. On many Linux systems, certs can be found in `/etc/ssl/certs`.
@@ -405,6 +414,11 @@ The length of time that Grafana will wait for a successful TLS handshake with th
The length of time that Grafana will wait for a datasources first response headers after fully writing the request headers, if the request has an “Expect: 100-continue” header. A value of `0` will result in the body being sent immediately. Default is `1` second. For more details check the [Transport.ExpectContinueTimeout](https://golang.org/pkg/net/http/#Transport.ExpectContinueTimeout) documentation.
### max_conns_per_host
Optionally limits the total number of connections per host, including connections in the dialing, active, and idle states. On limit violation, dials are blocked. A value of `0` means that there are no limits. Default is `0`.
For more details check the [Transport.MaxConnsPerHost](https://golang.org/pkg/net/http/#Transport.MaxConnsPerHost) documentation.
### max_idle_connections
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.
@@ -621,6 +635,10 @@ Text used as placeholder text on login page for password input.
Set the default UI theme: `dark` or `light`. Default is `dark`.
### home_page
Path to a custom home page. Users are only redirected to this if the default home dashboard is used. It should match a frontend route and contain a leading slash.
### External user management
If you manage users externally you can replace the user invite button for organizations with a link to an external site together with a description.
@@ -780,7 +798,7 @@ You can configure core and external AWS plugins.
Specify what authentication providers the AWS plugins allow. For a list of allowed providers, refer to the data-source configuration page for a given plugin. If you configure a plugin by provisioning, only providers that are specified in `allowed_auth_providers` are allowed.
Options: `default` (AWS SDK default), `keys` (Access and secret key), `credentials` (Credentials file), `ec2_IAM_role` (EC2 IAM role)
Options: `default` (AWS SDK default), `keys` (Access and secret key), `credentials` (Credentials file), `ec2_iam_role` (EC2 IAM role)
### assume_role_enabled
@@ -788,6 +806,16 @@ Set to `false` to disable AWS authentication from using an assumed role with tem
If this option is disabled, the **Assume Role** and the **External Id** field are removed from the AWS data source configuration page. If the plugin is configured using provisioning, it is possible to use an assumed role as long as `assume_role_enabled` is set to `true`.
### list_metrics_page_limit
Use the [List Metrics API](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) option to load metrics for custom namespaces in the CloudWatch data source. By default, the page limit is 500.
<hr />
## [auth.jwt]
Refer to [JWT authentication]({{< relref "../auth/jwt.md" >}}) for more information.
<hr />
## [smtp]
@@ -1082,6 +1110,12 @@ Configures max number of alert annotations that Grafana stores. Default value is
<hr>
## [annotations]
### cleanupjob_batchsize
Configures the batch size for the annotation clean-up job. This setting is used for dashboard, API, and alert annotations.
## [annotations.dashboard]
Dashboard annotations means that annotations are associated with the dashboard they are created on.
@@ -1507,7 +1541,7 @@ For more information about Grafana Enterprise, refer to [Grafana Enterprise]({{<
### enable
Keys of alpha features to enable, separated by space. Available alpha features are: `transformations`,`ngalert`
Keys of alpha features to enable, separated by space. Available alpha features are: `ngalert`
## [date_formats]

View File

@@ -7,7 +7,9 @@ weight = 300
# Image rendering
Grafana supports automatic rendering of panels and dashboards as PNG images. This allows Grafana to automatically generate images of your panels to include in [alert notifications]({{< relref "../alerting/notifications.md" >}}).
Grafana supports automatic rendering of panels as PNG images. This allows Grafana to automatically generate images of your panels to include in [alert notifications]({{< relref "../alerting/notifications.md" >}}).
>**Note:** Image rendering of dashboards is not supported at this time.
While an image is being rendered, the PNG image is temporarily written to the file system. When the image is rendered, the PNG image is temporarily written to the `png` folder in the Grafana `data` folder.
@@ -29,7 +31,7 @@ Alert notifications can include images, but rendering many images at the same ti
The [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) is a plugin that runs on the backend and handles rendering panels and dashboards as PNG images using headless Chrome.
To install the plugin, refer to the [Grafana Image Renderer Installation instructions](https://grafana.com/grafana/plugins/grafana-image-renderer/installation).
To install the plugin, refer to the [Grafana Image Renderer Installation instructions](https://grafana.com/grafana/plugins/grafana-image-renderer/?tab=installation).
## Run in custom Grafana Docker image

View File

@@ -23,13 +23,13 @@ The theme affects how Grafana displays graphs, menus, other UI elements.
Here is an example of the dark theme.
![Dark theme example](/img/docs/preferences/dark-theme-7-4.png)
![Dark theme example](/static/img/docs/preferences/dark-theme-7-4.png)
### Light
Here is an example of the light theme.
![Light theme example](/img/docs/preferences/light-theme-7-4.png)
![Light theme example](/static/img/docs/preferences/light-theme-7-4.png)
## Change server UI theme

View File

@@ -147,22 +147,24 @@ Since not all datasources have the same configuration settings we only have the
| tlsAuthWithCACert | boolean | _All_ | Enable TLS authentication using CA cert |
| tlsSkipVerify | boolean | _All_ | Controls whether a client verifies the server's certificate chain and host name. |
| serverName | string | _All_ | Optional. Controls the server name used for certificate common name/subject alternative name verification. Defaults to using the data source URL. |
| timeout | string | _All_ | Request timeout in seconds. Overrides dataproxy.timeout option |
| graphiteVersion | string | Graphite | Graphite version |
| timeInterval | string | Prometheus, Elasticsearch, InfluxDB, MySQL, PostgreSQL and MSSQL | Lowest interval/step value that should be used for this data source. |
| httpMode | string | Influxdb | HTTP Method. 'GET', 'POST', defaults to GET |
| maxSeries | number | Influxdb | Max number of series/tables that Grafana processes |
| httpMethod | string | Prometheus | HTTP Method. 'GET', 'POST', defaults to GET |
| customQueryParameters | string | Prometheus | Query parameters to add, as a URL-encoded string. |
| esVersion | number | Elasticsearch | Elasticsearch version as a number (2/5/56/60/70) |
| timeField | string | Elasticsearch | Which field that should be used as timestamp |
| interval | string | Elasticsearch | Index date time format. nil(No Pattern), 'Hourly', 'Daily', 'Weekly', 'Monthly' or 'Yearly' |
| logMessageField | string | Elasticsearch | Which field should be used as the log message |
| logLevelField | string | Elasticsearch | Which field should be used to indicate the priority of the log message |
| sigV4Auth | boolean | Elasticsearch | Enable usage of SigV4 |
| sigV4AuthType | string | Elasticsearch | SigV4 auth provider. default/credentials/keys |
| sigV4ExternalId | string | Elasticsearch | Optional SigV4 External ID |
| sigV4AssumeRoleArn | string | Elasticsearch | Optional SigV4 ARN role to assume |
| sigV4Region | string | Elasticsearch | SigV4 AWS region |
| sigV4Profile | string | Elasticsearch | Optional SigV4 credentials profile |
| sigV4Auth | boolean | Elasticsearch and Prometheus | Enable usage of SigV4 |
| sigV4AuthType | string | Elasticsearch and Prometheus | SigV4 auth provider. default/credentials/keys |
| sigV4ExternalId | string | Elasticsearch and Prometheus | Optional SigV4 External ID |
| sigV4AssumeRoleArn | string | Elasticsearch and Prometheus | Optional SigV4 ARN role to assume |
| sigV4Region | string | Elasticsearch and Prometheus | SigV4 AWS region |
| sigV4Profile | string | Elasticsearch and Prometheus | Optional SigV4 credentials profile |
| authType | string | Cloudwatch | Auth provider. default/credentials/keys |
| externalId | string | Cloudwatch | Optional External ID |
| assumeRoleArn | string | Cloudwatch | Optional ARN role to assume |
@@ -198,8 +200,8 @@ Secure json data is a map of settings that will be encrypted with [secret key]({
| basicAuthPassword | string | _All_ | password for basic authentication |
| accessKey | string | Cloudwatch | Access key for connecting to Cloudwatch |
| secretKey | string | Cloudwatch | Secret key for connecting to Cloudwatch |
| sigV4AccessKey | string | Elasticsearch | SigV4 access key. Required when using keys auth provider |
| sigV4SecretKey | string | Elasticsearch | SigV4 secret key. Required when using keys auth provider |
| sigV4AccessKey | string | Elasticsearch and Prometheus | SigV4 access key. Required when using keys auth provider |
| sigV4SecretKey | string | Elasticsearch and Prometheus | SigV4 secret key. Required when using keys auth provider |
#### Custom HTTP headers for datasources
@@ -303,13 +305,13 @@ Grafana offers options to export the JSON definition of a dashboard. Either `Cop
Note: The JSON definition in the input field when using `Copy JSON to Clipboard` or `Save JSON to file` will have the `id` field automatically removed to aid the provisioning workflow.
{{< docs-imagebox img="/img/docs/v51/provisioning_cannot_save_dashboard.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/v51/provisioning_cannot_save_dashboard.png" max-width="500px" class="docs-image--no-shadow" >}}
### Reusable Dashboard URLs
If the dashboard in the json file contains an [uid](/reference/dashboard/#json-fields), Grafana will force insert/update on that uid. This allows you to migrate dashboards between Grafana instances and provisioning Grafana from configuration without breaking the URLs given since the new dashboard URL uses the uid as identifier.
When Grafana starts, it will update/insert all dashboards available in the configured folders. If you modify the file, the dashboard will also be updated.
By default, Grafana will delete dashboards in the database if the file is removed. You can disable this behavior using the `disableDeletion` setting.
If the dashboard in the JSON file contains an [UID]({{< relref "../dashboards/json-model.md" >}}), Grafana forces insert/update on that UID. This allows you to migrate dashboards between Grafana instances and provisioning Grafana from configuration without breaking the URLs given because the new dashboard URL uses the UID as identifier.
When Grafana starts, it updates/inserts all dashboards available in the configured folders. If you modify the file, then the dashboard is also updated.
By default, Grafana deletes dashboards in the database if the file is removed. You can disable this behavior using the `disableDeletion` setting.
> **Note:** Provisioning allows you to overwrite existing dashboards
> which leads to problems if you re-use settings that are supposed to be unique.
@@ -541,6 +543,7 @@ The following sections detail the supported settings and secure settings for eac
| apiUrl | |
| autoClose | |
| overridePriority | |
| sendTagsAs | |
#### Alert notification `telegram`

View File

@@ -36,3 +36,11 @@ To address this vulnerability, you can restrict data source query access in the
- Create multiple data sources with some restrictions added in data source configuration that restrict access (like database name or credentials). Then use the [Data Source Permissions]({{< relref "../permissions/datasource_permissions.md" >}}) Enterprise feature to restrict user access to the data source in Grafana.
- Create a separate Grafana organization, and in that organization, create a separate data source. Make sure the data source has some option/user/credentials setting that limits access to a subset of the data. Not all data sources have an option to limit access.
## Implications of enabling anonymous access to dashboards
When you enable anonymous access to a dashboard, it is publicly available. This section lists the security implications of enabling Anonymous access.
- Anyone with the URL can access the dashboard.
- Anyone can make view calls to the API and list all folders, dashboards, and data sources.
- Anyone can make arbitrary queries to any data source that the Grafana instance is configured with.

View File

@@ -11,7 +11,7 @@ Setting up Grafana for high availability is fairly simple. You just need a share
and other persistent data. So the default embedded SQLite database will not work, you will have to switch to MySQL or Postgres.
<div class="text-center">
<img src="/img/docs/tutorials/grafana-high-availability.png" max-width= "800px" class="center" />
<img src="/static/img/docs/tutorials/grafana-high-availability.png" max-width= "800px" class="center" />
</div>
## Configure multiple servers to use the same database
@@ -22,26 +22,8 @@ Grafana will now persist all long term data in the database. How to configure th
## Alerting
Currently alerting supports a limited form of high availability. Since v4.2.0, [alert notifications](https://grafana.com/docs/grafana/latest/alerting/notifications/) are deduped when running multiple servers. This means all alerts are executed on every server but alert notifications are only sent once per alert. Grafana does not support load distribution between servers.
Currently alerting supports a limited form of high availability. [Alert notifications]({{< relref "../alerting/notifications.md" >}}) are deduplicated when running multiple servers. This means all alerts are executed on every server but alert notifications are only sent once per alert. Grafana does not support load distribution between servers.
## User sessions
> After Grafana 6.2 you don't need to configure session storage since the database will be used by default.
> If you want to offload the login session data from the database you can configure [remote_cache]({{< relref "../administration/configuration.md" >}}#remote-cache)
The second thing to consider is how to deal with user sessions and how to configure your load balancer in front of Grafana.
Grafana supports two ways of storing session data: locally on disk or in a database/cache-server.
If you want to store sessions on disk you can use `sticky sessions` in your load balancer. If you prefer to store session data in a database/cache-server
you can use any stateless routing strategy in your load balancer (ex round robin or least connections).
### Sticky sessions
Using sticky sessions, all traffic for one user will always be sent to the same server. Which means that session related data can be
stored on disk rather than on a shared database. This is the default behavior for Grafana and if you only want multiple servers for fail over this is a good solution since it requires the least amount of work.
### Stateless sessions
You can also choose to store session data in a Redis/Memcache/Postgres/MySQL which means that the load balancer can send a user to any Grafana server without having to log in on each server. This requires a little bit more work from the operator but enables you to remove/add grafana servers without impacting the user experience.
If you use MySQL/Postgres for session storage, you first need a table to store the session data in. More details about that in [[sessions]]({{< relref "../administration/configuration.md" >}}#session)
For Grafana itself it doesn't really matter if you store the session data on disk or database/redis/memcache. But we recommend using a database/redis/memcache since it makes it easier to manage the grafana servers.
Grafana uses auth token strategy with database by default. This means that a load balancer can send a user to any Grafana server without having to log in on each server.

View File

@@ -37,8 +37,10 @@ The actual notifications are configured and shared between multiple alerts.
## Alert execution
Alert rules are evaluated in the Grafana backend in a scheduler and query execution engine that is part
of core Grafana. Only some data sources are supported right now. They include `Graphite`, `Prometheus`, `InfluxDB`, `Elasticsearch`,
`Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer`.
of core Grafana. Alert rules can query only backend data sources with alerting enabled. Such data sources are:
- builtin or developed and maintained by grafana, such as: `Graphite`, `Prometheus`, `Loki`, `InfluxDB`, `Elasticsearch`,
`Google Cloud Monitoring`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer`
- any community backend data sources with alerting enabled (`backend` and `alerting` properties are set in the [plugin.json]({{< relref "../developers/plugins/metadata.md" >}}))
## Metrics from the alert engine

View File

@@ -17,7 +17,7 @@ This topic explains how you can use alert query labels in alert notifications.
1. Navigate to the panel you want to add or edit an alert rule for.
1. Click on the panel title, and then click **Edit**.
1. On the Alert tab, click **Create Alert**. If an alert already exists for this panel, then you can edit the alert directly.
1. Refer to the alert query labels in the alert rule name and/or alert notification message field by using the `${Label}` syntax.
1. Refer to the alert query labels in the alert rule name and/or alert notification message field by using the `${Label}` syntax.
1. Click **Save** in the upper right corner to save the alert rule and the dashboard.
![Alerting notification template](/img/docs/alerting/alert-notification-template-7-4.png)
![Alerting notification template](/static/img/docs/alerting/alert-notification-template-7-4.png)

View File

@@ -9,7 +9,7 @@ weight = 200
Grafana alerting allows you to attach rules to your dashboard panels. When you save the dashboard, Grafana extracts the alert rules into a separate alert rule storage and schedules them for evaluation.
![Alerting overview](/img/docs/alerting/drag_handles_gif.gif)
![Alerting overview](/static/img/docs/alerting/drag_handles_gif.gif)
In the Alert tab of the graph panel you can configure how often the alert rule should be evaluated and the conditions that need to be met for the alert to change state and trigger its [notifications]({{< relref "notifications.md" >}}).
@@ -46,9 +46,9 @@ If an alert rule has a configured `For` and the query violates the configured th
Typically, it's always a good idea to use this setting since it's often worse to get false positive than wait a few minutes before the alert notification triggers. Looking at the `Alert list` or `Alert list panels` you will be able to see alerts in pending state.
Below you can see an example timeline of an alert using the `For` setting. At ~16:04 the alert state changes to `Pending` and after 4 minutes it changes to `Alerting` which is when alert notifications are sent. Once the series falls back to normal the alert rule goes back to `OK`.
{{< imgbox img="/img/docs/v54/alerting-for-dark-theme.png" caption="Alerting For" >}}
{{< figure class="float-right" src="/static/img/docs/v54/alerting-for-dark-theme.png" caption="Alerting For" >}}
{{< imgbox max-width="40%" img="/img/docs/v4/alerting_conditions.png" caption="Alerting Conditions" >}}
{{< figure class="float-right" max-width="40%" src="/static/img/docs/v4/alerting_conditions.png" caption="Alerting Conditions" >}}
### Conditions

View File

@@ -59,7 +59,7 @@ Hipchat | `hipchat` | yes, external only | no
[Kafka](#kafka) | `kafka` | yes, external only | no
Line | `line` | yes, external only | no
Microsoft Teams | `teams` | yes, external only | no
OpsGenie | `opsgenie` | yes, external only | yes
[Opsgenie](#opsgenie) | `opsgenie` | yes, external only | yes
[Pagerduty](#pagerduty) | `pagerduty` | yes, external only | yes
Prometheus Alertmanager | `prometheus-alertmanager` | yes, external only | yes
[Pushover](#pushover) | `pushover` | yes | no
@@ -68,7 +68,7 @@ Sensu | `sensu` | yes, external only | no
[Slack](#slack) | `slack` | yes | no
Telegram | `telegram` | yes | no
Threema | `threema` | yes, external only | no
VictorOps | `victorops` | yes, external only | no
VictorOps | `victorops` | yes, external only | yes
[Webhook](#webhook) | `webhook` | yes, external only | yes
[Zenduty](#zenduty) | `webhook` | yes, external only | yes
@@ -89,7 +89,7 @@ Addresses | Email addresses to recipients. You can enter multiple email addresse
### Slack
{{< imgbox max-width="40%" img="/img/docs/v4/slack_notification.png" caption="Alerting Slack Notification" >}}
{{< figure class="float-right" max-width="40%" src="/static/img/docs/v4/slack_notification.png" caption="Alerting Slack Notification" >}}
To set up Slack, you need to configure an incoming Slack webhook URL. You can follow
[Sending messages using Incoming Webhooks](https://api.slack.com/incoming-webhooks) on how to do that. If you want to include screenshots of the
@@ -111,6 +111,19 @@ Token | If provided, Grafana will upload the generated image via Slack's file.up
If you are using the token for a slack bot, then you have to invite the bot to the channel you want to send notifications and add the channel to the recipient field.
### Opsgenie
To setup Opsgenie you will need an API Key and the Alert API Url. These can be obtained by configuring a new [Grafana Integration](https://docs.opsgenie.com/docs/grafana-integration).
Setting | Description
--------|------------
Alert API URL | The API URL for your Opsgenie instance. This will normally be either `https://api.opsgenie.com` or, for EU customers, `https://api.eu.opsgenie.com`.
API Key | The API Key as provided by Opsgenie for your configured Grafana integration.
Override priority | Configures the alert priority using the `og_priority` tag. The `og_priority` tag must have one of the following values: `P1`, `P2`, `P3`, `P4`, or `P5`. Default is `False`.
Send notification tags as | Specify how you would like [Notification Tags]({{< relref "create-alerts.md/#notifications" >}}) delivered to Opsgenie.
> **Note:** When notification tags are sent as `Tags` they are concatenated into a string with a `key:value` format.
### PagerDuty
To set up PagerDuty, all you have to do is to provide an integration key.
@@ -133,6 +146,11 @@ This behavior will become the default in a future version of Grafana.
> **Note:** The `state` tag overrides the current alert state inside the `custom_details` payload.
### VictorOps
To configure VictorOps, provide the URL from the Grafana Integration and substitute `$routing_key` with a valid key.
> **Note:** The tag `Severity` has special meaning in the [VictorOps Incident Fields](https://help.victorops.com/knowledge-base/incident-fields-glossary/). If an alert panel defines this key, then it replaces the `message_type` in the root of the event sent to VictorOps.
### Pushover
To set up Pushover, you must provide a user key and an API token. Refer to [What is Pushover and how do I use it](https://support.pushover.net/i7-what-is-pushover-and-how-do-i-use-it) for instructions on how to generate them.
@@ -144,7 +162,7 @@ API Token | Application token
User key(s) | A comma-separated list of user keys
Device(s) | A comma-separated list of devices
Priority | The priority alerting nottifications are sent
OK priority | The priority OK notifications are sent; if not set, then OK notifications are sent with the priority set for alerting notifications
OK priority | The priority OK notifications are sent; if not set, then OK notifications are sent with the priority set for alerting notifications
Retry | How often (in seconds) the Pushover servers send the same notification to the user. (minimum 30 seconds)
Expire | How many seconds your notification will continue to be retried for (maximum 86400 seconds)
Alerting sound | The sound for alerting notifications
@@ -186,23 +204,21 @@ Example json body:
### DingDing/DingTalk
[Instructions in Chinese](https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.p2lr6t&treeId=257&articleId=105733&docType=1).
DingTalk supports the following "message type": `text`, `link` and `markdown`. Only the `link` message type is supported. Refer to the [configuration instructions](https://developers.dingtalk.com/document/app/custom-robot-access) in Chinese language.
In DingTalk PC Client:
1. Click "more" icon on upper right of the panel.
1. Click "Robot Manage" item in the pop menu, there will be a new panel call "Robot Manage".
2. Click "Robot Manage" item in the pop menu, there will be a new panel call "Robot Manage".
1. In the "Robot Manage" panel, select "customized: customized robot with Webhook".
3. In the "Robot Manage" panel, select "customized: customized robot with Webhook".
1. In the next new panel named "robot detail", click "Add" button.
4. In the next new panel named "robot detail", click "Add" button.
1. In "Add Robot" panel, input a nickname for the robot and select a "message group" which the robot will join in. click "next".
5. In "Add Robot" panel, input a nickname for the robot and select a "message group" which the robot will join in. click "next".
1. There will be a Webhook URL in the panel, looks like this: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx. Copy this URL to the Grafana DingTalk setting page and then click "finish".
DingTalk supports the following "message type": `text`, `link` and `markdown`. Only the `link` message type is supported.
6. There will be a Webhook URL in the panel, looks like this: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx. Copy this URL to the Grafana DingTalk setting page and then click "finish".
### Kafka
@@ -251,4 +267,4 @@ This URL is based on the [domain]({{< relref "../administration/configuration/#d
> **Note:** Alert notification templating is only available in Grafana v7.4 and above.
The alert notification template feature allows you to take the [label]({{< relref "../getting-started/timeseries-dimensions.md#labels" >}}) value from an alert query and [inject that into alert notifications]({{< relref "./add-notification-template.md" >}}).
The alert notification template feature allows you to take the [label]({{< relref "../basics/timeseries-dimensions.md#labels" >}}) value from an alert query and [inject that into alert notifications]({{< relref "./add-notification-template.md" >}}).

View File

@@ -9,7 +9,7 @@ weight = 500
If alerts are not behaving as you expect, here are some steps you can take to troubleshoot and figure out what is going wrong.
![Test Rule](/img/docs/v4/alert_test_rule.png)
![Test Rule](/static/img/docs/v4/alert_test_rule.png)
The first level of troubleshooting you can do is click **Test Rule**. You will get result back that you can expand to the point where you can see the raw data that was returned from your query.

View File

@@ -52,7 +52,7 @@ api_key_max_seconds_to_live = -1
### Anonymous authentication
You can make Grafana accessible without any login required by enabling anonymous access in the configuration file.
You can make Grafana accessible without any login required by enabling anonymous access in the configuration file. For more information, refer to [Implications of allowing anonymous access to dashboards]({{< relref "../administration/security.md" >}}).
Example:
@@ -65,6 +65,9 @@ org_name = Main Org.
# Role for unauthenticated users, other valid values are `Editor` and `Admin`
org_role = Viewer
# Hide the Grafana version text from the footer and help tooltip for unauthenticated users (default: false)
hide_version = true
```
If you change your organization name in the Grafana UI this setting needs to be updated to match the new name.

92
docs/sources/auth/jwt.md Normal file
View File

@@ -0,0 +1,92 @@
+++
title = "JWT Authentication"
description = "Grafana JWT Authentication"
keywords = ["grafana", "configuration", "documentation", "jwt", "jwk"]
weight = 250
+++
# JWT authentication
You can configure Grafana to accept a JWT token provided in the HTTP header. The token is verified using any of the following:
- PEM-encoded key file
- JSON Web Key Set (JWKS) in a local file
- JWKS provided by the configured JWKS endpoint
## Enable JWT
To use JWT authentication:
1. Enable JWT in the [main config file]({{< relref "../administration/configuration.md" >}}).
1. Specify the header name that contains a token.
```ini
[auth.jwt]
# By default, auth.jwt is disabled.
enabled = true
# HTTP header to look into to get a JWT token.
header_name = X-JWT-Assertion
```
## Configure login claim
To identify the user, some of the claims needs to be selected as a login info. You could specify a claim that contains either a username or an email of the Grafana user.
Typically, the subject claim called `"sub"` would be used as a login but it might also be set to some application specific claim.
```ini
# [auth.jwt]
# ...
# Specify a claim to use as a username to sign in.
username_claim = sub
# Specify a claim to use as an email to sign in.
email_claim = sub
```
## Signature verification
JSON web token integrity needs to be verified so cryptographic signature is used for this purpose. So we expect that every token must be signed with some known cryptographic key.
You have a variety of options on how to specify where the keys are located.
### Verify token using a JSON Web Key Set loaded from https endpoint
For more information on JWKS endpoints, refer to [Auth0 docs](https://auth0.com/docs/tokens/json-web-tokens/json-web-key-sets).
```ini
# [auth.jwt]
# ...
jwk_set_url = https://your-auth-provider.example.com/.well-known/jwks.json
# Cache TTL for data loaded from http endpoint.
cache_ttl = 60m
```
### Verify token using a JSON Web Key Set loaded from JSON file
Key set in the same format as in JWKS endpoint but located on disk.
```ini
jwk_set_file = /path/to/jwks.json
```
### Verify token using a single key loaded from PEM-encoded file
PEM-encoded key file in PKIX, PKCS #1, PKCS #8 or SEC 1 format.
```ini
key_file = /path/to/key.pem
```
## Validate claims
By default, only `"exp"`, `"nbf"` and `"iat"` claims are validated.
You might also want to validate that other claims are really what you expect them to be.
```ini
# This can be seen as a required "subset" of a JWT Claims Set.
expect_claims = {"iss": "https://your-token-issuer", "your-custom-claim": "foo"}
```

View File

@@ -100,7 +100,7 @@ Grafana has an LDAP debug view built-in which allows you to test your LDAP confi
Within this view, you'll be able to see which LDAP servers are currently reachable and test your current configuration.
{{< docs-imagebox img="/img/docs/ldap_debug.png" class="docs-image--no-shadow" max-width="600px" >}}
{{< figure src="/static/img/docs/ldap_debug.png" class="docs-image--no-shadow" max-width="600px" >}}
To use the debug view:
@@ -109,7 +109,7 @@ To use the debug view:
1. Then, press "Run"
1. If the user is found within any of your LDAP instances, the mapping information is displayed
{{< docs-imagebox img="/img/docs/ldap_debug_mapping_testing.png" class="docs-image--no-shadow" max-width="600px" >}}
{{< figure src="/static/img/docs/ldap_debug_mapping_testing.png" class="docs-image--no-shadow" max-width="600px" >}}
### Bind

View File

@@ -122,7 +122,7 @@ oauth_auto_login = true
### Hide sign-out menu
Set the option detailed below to true to hide sign-out menu link. Useful if you use an auth proxy.
Set the option detailed below to true to hide sign-out menu link. Useful if you use an auth proxy or JWT authentication.
```bash
[auth]

View File

@@ -12,7 +12,7 @@ With Team Sync, you can set up synchronization between your auth provider's team
of certain teams/groups to automatically be added/removed as members to certain teams in Grafana. Currently the synchronization will only happen every
time a user logs in, unless LDAP is used together with active background synchronization that was added in Grafana 6.3.
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
{{< figure src="/static/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
Grafana keeps track of all synchronized users in teams and you can see which users have been synchronized in the team members list, see `LDAP` label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership (for example) changes. This mechanism also enables you to manually add a user as member of a team and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.

View File

@@ -0,0 +1,14 @@
+++
title = "Grafana basics"
weight = 15
+++
# Grafana basics
This section provides basic information about observability topics in general and Grafana in particular. These topics will help people who are just starting out with observability and monitoring.
{{< docs/shared "basics/what-is-grafana.md" >}}
{{< docs/shared "basics/grafana-cloud.md" >}}
{{< docs/shared "basics/grafana-enterprise.md" >}}

View File

@@ -0,0 +1,22 @@
+++
title = "Exemplars"
description = "Exemplars"
keywords = ["grafana", "concepts", "exemplars", "prometheus"]
weight = 400
+++
# Introduction to exemplars
An exemplar is a specific trace representative of a repeated pattern of data in a given time interval. It helps you identify higher cardinality metadata from specific events within time series data.
Suppose your company website is experiencing a surge in traffic volumes. While more than eighty percent of the users are able to access the website in under two seconds, some users are experiencing a higher than normal response time resulting in bad user experience
To identify the factors that are contributing to the latency, you must compare a trace for a fast response against a trace for a slow response. Given the vast amount of data in a typical production environment, it will be extremely laborious and time-consuming effort.
Use exemplars to help isolate problems within your data distribution by pinpointing query traces exhibiting high latency within a time interval. Once you localize the latency problem to a few exemplar traces, you can combine it with additional system based information or location properties to perform a root cause analysis faster, leading to quick resolutions to performance issues.
Support for exemplars is available for the Prometheus data source only. Once you enable the functionality, exemplars data is available by default. For more information on exemplar configuration and how to enable exemplars, refer to [configuring exemplars in Prometheus data source]({{< relref "../datasources/prometheus.md#configuring-exemplars" >}}).
Grafana shows exemplars alongside a metric in the Explore view and in dashboards. Each exemplar displays as a highlighted star. You can hover your cursor over an exemplar to view the unique traceID, which is a combination of a key value pair. To investigate further, click the blue button next to the `traceID` property.
{{< figure src="/static/img/docs/v74/exemplars.png" class="docs-image--no-shadow" max-width= "750px" caption="Screenshot showing the detail window of an Exemplar" >}}

View File

@@ -0,0 +1,119 @@
+++
title = "Glossary"
description = "Grafana glossary"
keywords = ["grafana", "intro", "glossary", "dictionary"]
aliases = ["/docs/grafana/latest/guides/glossary", "/docs/grafana/latest/getting-started/glossary"]
weight = 800
+++
# Glossary
This topic lists words and abbreviations that are commonly used in the Grafana documentation and community.
<table>
<tr>
<td style="vertical-align: top">Dashboard</td>
<td>
A set of one or more panels, organized and arranged into one or more rows, that provide an at-a-glance view of related information.
</td>
</tr>
<tr>
<td style="vertical-align: top">Data source</td>
<td>
A file, database, or service providing the data. Grafana supports several data sources by default, and can be extended to support additional data sources through plugins.
</td>
</tr>
<tr>
<td style="vertical-align: top">Exemplar</td>
<td>
An exemplar is any data that serves as a detailed example of one of the observations aggregated into a metric. An exemplar contains the observed value together with an optional timestamp and arbitrary labels, which are typically used to reference a trace.
</td>
</tr>
<tr>
<td style="vertical-align: top">Explore</td>
<td>
Explore allows a user to focus on building a query. Users can refine the query to return the expected metrics before building a dashboard. For more information, refer to the <a href="https://grafana.com/docs/grafana/latest/explore">Explore</a> topic.
</td>
</tr>
<tr>
<td style="vertical-align: top">Export/Import dashboard</td>
<td>
Grafana includes the ability to export your dashboards to a file containing JSON. Community members sometimes share their created dashboards on the <a href="https://grafana.com/grafana/dashboards">Grafana Dashboards page</a>. Dashboards previously exported or found on this site may be imported by other users.
</td>
</tr>
<tr>
<td style="vertical-align: top">Exporter</td>
<td>
An exporter translates data that comes out of a data source into a format that Prometheus can digest.
</td>
</tr>
<tr>
<td style="vertical-align: top">Integration (Grafana Cloud)</td>
<td>
Each Integration in Grafana Cloud uses the cloud agent to connect your data source to Grafana Cloud for visualizing. Note: Prometheus uses the word “integrations” to refer to software that exposes Prometheus metrics without needing an exporter, which is a different use of the same word we use here.
</td>
</tr>
<tr>
<td style="vertical-align: top">Graph</td>
<td>
A commonly-used visualization that displays data as points, lines, or bars.
</td>
</tr>
<tr>
<td style="vertical-align: top">Mixin</td>
<td>
A mixin is a set of Grafana dashboards and Prometheus rules and alerts, written in Jsonnet and packaged together in a bundle.
</td>
</tr>
<tr>
<td style="vertical-align: top">Panel</td>
<td>
Basic building block in Grafana, composed by a query and a visualization. Can be moved and resized within a dashboard.
</td>
</tr>
<tr>
<td style="vertical-align: top">Plugin</td>
<td>
An extension of Grafana that allows users to provide additional functionality to enhance their experience. The types of plugins currently supported are:
<ul>
<li>
<b>App plugin:</b> Extends Grafana with a customized experience. It includes a set of panel and data source plugins, as well as custom pages.
</li>
<li>
<b>Data source plugin:</b> Extends Grafana with support for additional data sources.
</li>
<li>
<b>Panel plugin:</b> Extends Grafana with additional visualization options.
</li>
</ul>
</td>
</tr>
<tr>
<td style="vertical-align: top">Query</td>
<td>
Used to request data from a data source. The structure and format of the query depend on the specific data source.
</td>
</tr>
<tr>
<td style="vertical-align: top">Time series</td>
<td>
A series of measurements, ordered by time. Time series are stored in data sources and returned as the result of a query.
</td>
</tr>
<tr>
<td style="vertical-align: top">Trace</td>
<td>
An observed execution path of a request through a distributed system. For more information, refer to <a href="https://opentracing.io/docs/overview/what-is-tracing/">What is Distributed Tracing?</a>
</td>
</tr>
<tr>
<td style="vertical-align: top">Transformation</td>
<td>
Transformations process the result set of a query before its passed on for visualization. For more information, refer to the <a href="https://grafana.com/docs/grafana/latest/panels/transformations">Transformations overview</a> topic.
</td>
</tr>
<tr>
<td style="vertical-align: top">Visualization</td>
<td>A graphical representation of query results.</td>
</tr>
</table>

View File

@@ -0,0 +1,55 @@
+++
title = "Histograms and heatmaps"
description = "An introduction to histograms and heatmaps"
keywords = ["grafana", "heatmap", "panel", "documentation", "histogram"]
aliases = ["/docs/grafana/latest/getting-started/intro-histograms"]
weight = 700
+++
# Introduction to histograms and heatmaps
A histogram is a graphical representation of the distribution of numerical data. It groups values into buckets
(sometimes also called bins) and then counts how many values fall into each bucket.
Instead of graphing the actual values, histograms graph the buckets. Each bar represents a bucket,
and the bar height represents the frequency (such as count) of values that fell into that bucket's interval.
## Histogram example
This histogram shows the value distribution of a couple of time series. You can easily see that
most values land between 240-300 with a peak between 260-280.
![](/static/img/docs/v43/heatmap_histogram.png)
Histograms only look at _value distributions_ over a specific time range. The problem with histograms is you cannot see any trends or changes in the distribution over time.
This is where heatmaps become useful.
## Heatmaps
A _heatmap_ is like a histogram, but over time where each time slice represents its own histogram. Instead of using bar height as a representation of frequency, it uses cells and colors the cell proportional to the number of values in the bucket.
In this example, you can clearly see what values are more common and how they trend over time.
![](/static/img/docs/v43/heatmap_histogram_over_time.png)
## Pre-bucketed data
There are a number of data sources supporting histogram over time like Elasticsearch (by using a Histogram bucket
aggregation) or Prometheus (with [histogram](https://prometheus.io/docs/concepts/metric_types/#histogram) metric type
and *Format as* option set to Heatmap). But generally, any data source could be used if it meets the requirements:
returns series with names representing bucket bound or returns series sorted by the bound in ascending order.
## Raw data vs aggregated
If you use the heatmap with regular time series data (not pre-bucketed), then it's important to keep in mind that your data
is often already aggregated by your time series backend. Most time series queries do not return raw sample data
but include a group by time interval or maxDataPoints limit coupled with an aggregation function (usually average).
This all depends on the time range of your query of course. But the important point is to know that the histogram bucketing
that Grafana performs might be done on already aggregated and averaged data. To get more accurate heatmaps it is better
to do the bucketing during metric collection or store the data in Elasticsearch, or in the other data source which
supports doing histogram bucketing on the raw data.
If you remove or lower the group by time (or raise maxDataPoints) in your query to return more data points your heatmap will be
more accurate but this can also be very CPU and memory taxing for your browser and could cause hangs and crashes if the number of
data points becomes unreasonably large.

View File

@@ -0,0 +1,85 @@
+++
title = "Time series dimensions"
description = "time series dimensions"
keywords = ["grafana", "intro", "guide", "concepts", "timeseries", "labels"]
aliases = ["/docs/grafana/latest/guides/timeseries-dimensions", "/docs/grafana/latest/getting-started/timeseries-dimensions"]
weight = 600
+++
# Time series dimensions
In [Introduction to time series]({{< relref "timeseries.md#time-series-databases" >}}), the concept of _labels_, also called _tags_, is introduced:
> Another feature of a TSDB is the ability to filter measurements using _tags_. Each data point is labeled with a tag that adds context information, such as where the measurement was taken.
With time series data, the data often contain more than a single series, and is a set of multiple time series. Many Grafana data sources support this type of data.
{{< figure src="/static/img/docs/example_graph_multi_dim.png" class="docs-image--no-shadow" max-width="850px" >}}
The common case is issuing a single query for a measurement with one or more additional properties as dimensions. For example, querying a temperature measurement along with a location property. In this case, multiple series are returned back from that single query and each series has unique location as a dimension.
To identify unique series within a set of time series, Grafana stores dimensions in _labels_.
## Labels
Each time series in Grafana optionally has labels. labels are set a of key/value pairs for identifying dimensions. Example labels could are `{location=us}` or `{country=us,state=ma,city=boston}`. Within a set of time series, the combination of its name and labels identifies each series. For example, `temperature {country=us,state=ma,city=boston}`.
Different sources of time series data have dimensions stored natively, or common storage patterns that allow the data to be extracted into dimensions.
Time series databases (TSDBs) usually natively support dimensionality. Prometheus also stores dimensions in _labels_. In TSDBs such as Graphite or OpenTSDB the term _tags_ is used instead.
In table databases such SQL, these dimensions are generally the `GROUP BY` parameters of a query.
## Multiple dimensions in table format
In SQL or SQL-like databases that return table responses, additional dimensions usually columns in the query response table.
### Single dimension
For example, consider a query like:
```sql
SELECT BUCKET(StartTime, 1h), AVG(Temperature) AS Temp, Location FROM T
GROUP BY BUCKET(StartTime, 1h), Location
ORDER BY time asc
```
Might return a table with three columns that each respectively have data types time, number, and string.
| StartTime | Temp | Location |
| --------- | ---- | -------- |
| 09:00 | 24 | LGA |
| 09:00 | 20 | BOS |
| 10:00 | 26 | LGA |
| 10:00 | 22 | BOS |
The table format is _long_ formatted time series, also called _tall_. It has repeated time stamps, and repeated values in Location. In this case, we have two time series in the set that would be identified as `Temp {Location=LGA}` and `Temp {Location=BOS}`.
Individual time series from the set are extracted by using the time typed column `StartTime` as the time index of the time series, the numeric typed column `Temp` as the series name, and the name and values of the string typed `Location` column to build the labels, such as Location=LGA.
### Multiple dimensions
If the query is updated to select and group by more than just one string column, for example, `GROUP BY BUCKET(StartTime, 1h), Location, Sensor`, then an additional dimension is added:
| StartTime | Temp | Location | Sensor |
| --------- | ---- | -------- | ------ |
| 09:00 | 24 | LGA | A |
| 09:00 | 24.1 | LGA | B |
| 09:00 | 20 | BOS | A |
| 09:00 | 20.2 | BOS | B |
| 10:00 | 26 | LGA | A |
| 10:00 | 26.1 | LGA | B |
| 10:00 | 22 | BOS | A |
| 10:00 | 22.2 | BOS | B |
In this case the labels that represent the dimensions will have two keys based on the two string typed columns `Location` and `Sensor`. This data results four series: `Temp {Location=LGA,Sensor=A}`, `Temp {Location=LGA,Sensor=B}`, `Temp {Location=BOS,Sensor=A}`, and `Temp {Location=BOS,Sensor=B}`.
> **Note:** More than one dimension is currently only supported in the Logs queries within the Azure Monitor service as of version 7.1.
> **Note:** Multiple dimensions are not supported in a way that maps to multiple alerts in Grafana, but rather they are treated as multiple conditions to a single alert. See the documentation on [creating alerts with multiple series]({{< relref "../alerting/create-alerts.md#multiple-series" >}}).
### Multiple values
In the case SQL-like data sources, more than one numeric column can be selected, with or without additional string columns to be used as dimensions. For example, `AVG(Temperature) AS AvgTemp, MAX(Temperature) AS MaxTemp`. This, if combined with multiple dimensions can result in a lot of series. Selecting multiple values is currently only designed to be used with visualization.
Additional technical information on tabular time series formats and how dimensions are extracted can be found in [the developer documentation on data frames as time series]({{< relref "../developers/plugins/data-frames.md#data-frames-as-time-series" >}}).

View File

@@ -0,0 +1,123 @@
+++
title = "Time series"
description = "Introduction to time series"
keywords = ["grafana", "intro", "guide", "concepts", "timeseries"]
weight = 400
+++
# Introduction to time series
Imagine you wanted to know how the temperature outside changes throughout the day. Once every hour, you'd check the thermometer and write down the time along with the current temperature. After a while, you'd have something like this:
| Time | Value |
| ----- | ----- |
| 09:00 | 24°C |
| 10:00 | 26°C |
| 11:00 | 27°C |
Temperature data like this is one example of what we call a *time series*—a sequence of measurements, ordered in time. Every row in the table represents one individual measurement at a specific time.
Tables are useful when you want to identify individual measurements but make it difficult to see the big picture. A more common visualization for time series is the _graph_, which instead places each measurement along a time axis. Visual representations like the graph make it easier to discover patterns and features of the data that otherwise would be difficult to see.
{{< figure src="/static/img/docs/example_graph.png" class="docs-image--no-shadow" max-width="850px" >}}
Temperature data like the one in the example, is far from the only example of a time series. Other examples of time series are:
- CPU and memory usage
- Sensor data
- Stock market index
While each of these examples are sequences of chronologically ordered measurements, they also share other attributes:
- New data is appended at the end, at regular intervals—for example, hourly at 09:00, 10:00, 11:00, and so on.
- Measurements are seldom updated after they were added—for example, yesterday's temperature doesn't change.
Time series are powerful. They help you understand the past by letting you analyze the state of the system at any point in time. Time series could tell you that the server crashed moments after the free disk space went down to zero.
Time series can also help you predict the future, by uncovering trends in your data. If the number of registered users has been increasing monthly by 4% for the past few months, you can predict how big your user base is going to be at the end of the year.
Some time series have patterns that repeat themselves over a known period. For example, the temperature is typically higher during the day, before it dips down at night. By identifying these periodic, or _seasonal_, time series, you can make confident predictions about the next period. If we know that the system load peaks every day around 18:00, we can add more machines right before.
## Aggregating time series
Depending on what you're measuring, the data can vary greatly. What if you wanted to compare periods longer than the interval between measurements? If you'd measure the temperature once every hour, you'd end up with 24 data points per day. To compare the temperature in August over the years, you'd have to combine the 31 times 24 data points into one.
Combining a collection of measurements is called _aggregation_. There are several ways to aggregate time series data. Here are some common ones:
- **Average** returns the sum of all values divided by the total number of values.
- **Min** and **Max** return the smallest, and largest value in the collection.
- **Sum** returns the sum of all values in the collection.
- **Count** returns the number of values in the collection.
For example, by aggregating the data in a month, you can determine that August 2017 was, on average, warmer than the year before. Instead, to see which month had the highest temperature, you'd compare the maximum temperature for each month.
How you choose to aggregate your time series data is an important decision and depends on the story you want to tell with your data. It's common to use different aggregations to visualize the same time series data in different ways.
## Time series and monitoring
In the IT industry, time series data is often collected to monitor things like infrastructure, hardware, or application events. Machine-generated time series data is typically collected with short intervals, which allows you to react to any unexpected changes, moments after they occur. As a consequence, data accumulates at a rapid pace, making it vital to have a way to store and query data efficiently. As a result, databases optimized for time series data have seen a rise in popularity in recent years.
### Time series databases
A time series database (TSDB) is a database explicitly designed for time series data. While it's possible to use any regular database to store measurements, a TSDB comes with some useful optimizations.
Modern time series databases take advantage of the fact that measurements are only ever appended, and rarely updated or removed. For example, the timestamps for each measurement change very little over time, which results in redundant data being stored.
Look at this sequence of Unix timestamps:
```
1572524345, 1572524375, 1572524404, 1572524434, 1572524464
```
Looking at these timestamps, they all start with `1572524`, leading to poor use of disk space. Instead, we could store each subsequent timestamp as the difference, or _delta_, from the first one:
```
1572524345, +30, +29, +30, +30
```
We could even take it a step further, by calculating the deltas of these deltas:
```
1572524345, +30, -1, +1, +0
```
If measurements are taken at regular intervals, most of these delta-of-deltas will be 0. Because of optimizations like these, TSDBs uses drastically less space than other databases.
Another feature of a TSDB is the ability to filter measurements using _tags_. Each data point is labeled with a tag that adds context information, such as where the measurement was taken. Here's an example of the [InfluxDB data format](https://docs.influxdata.com/influxdb/v1.7/write_protocols/line_protocol_tutorial/#syntax) that demonstrates how each measurement is stored.
Here are some of the TSDBs supported by Grafana:
- [Graphite](https://graphiteapp.org/)
- [InfluxDB](https://www.influxdata.com/products/influxdb-overview/)
- [Prometheus](https://prometheus.io/)
```
weather,location=us-midwest temperature=82 1465839830100400200
| -------------------- -------------- |
| | | |
| | | |
+-----------+--------+-+---------+-+---------+
|measurement|,tag_set| |field_set| |timestamp|
+-----------+--------+-+---------+-+---------+
```
### Collecting time series data
Now that we have a place to store our time series, how do we actually gather the measurements? To collect time series data, you'd typically install a _collector_ on the device, machine, or instance you want to monitor. Some collectors are made with a specific database in mind, and some support different output destinations.
Here are some examples of collectors:
- [collectd](https://collectd.org/)
- [statsd](https://github.com/statsd/statsd)
- [Prometheus exporters](https://prometheus.io/docs/instrumenting/exporters/)
- [Telegraf](https://github.com/influxdata/telegraf)
A collector either _pushes_ data to a database or lets the database _pull_ the data from it. Both methods come with their own set of pros and cons:
| | Pros | Cons |
| ---- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Push | Easier to replicate data to multiple destinations. | The TSDB has no control over how much data gets sent. |
| Pull | Better control of how much data that gets ingested, and its authenticity. | Firewalls, VPNs or load balancers can make it hard to access the agents. |
Since it would be inefficient to write every measurement to the database, collectors pre-aggregate the data and write to the time series database at regular intervals.

View File

@@ -12,5 +12,3 @@ This section provides information about best practices for intermediate Grafana
- [Best practices for managing dashboards]({{< relref "best-practices-for-managing-dashboards" >}})
- [Common observability strategies]({{< relref "common-observability-strategies" >}})
- [Dashboard management maturity model]({{< relref "dashboard-management-maturity-levels" >}})

View File

@@ -38,11 +38,11 @@ How can you tell you are here?
- Methodical dashboards according to an [observability strategy]({{< relref "common-observability-strategies.md" >}}).
- Hierarchical dashboards with drill-downs to the next level.
{{< imgbox max-width="100%" img="/img/docs/best-practices/drill-down-example.png" caption="Example of using drill-down" >}}
{{< figure class="float-right" max-width="100%" src="/static/img/docs/best-practices/drill-down-example.png" caption="Example of using drill-down" >}}
- Dashboard design reflects service hierarchies. The example shown below uses the RED method (request and error rate on the left, latency duration on the right) with one row per service. The row order reflects the data flow.
{{< imgbox max-width="100%" img="/img/docs/best-practices/service-hierarchy-example.png" caption="Example of a service hierarchy" >}}
{{< figure class="float-right" max-width="100%" src="/static/img/docs/best-practices/service-hierarchy-example.png" caption="Example of a service hierarchy" >}}
- Compare like to like: split service dashboards when the magnitude differs. Make sure aggregated metrics don't drown out important information.
- Expressive charts with meaningful use of color and normalizing axes where you can.

View File

@@ -10,7 +10,7 @@ A _dashboard_ is a set of one or more panels organized and arranged into one or
## Dashboard UI
<img src="/img/docs/v50/dashboard_annotated.png" class="no-shadow" width="700px">
<img src="/static/img/docs/v50/dashboard_annotated.png" class="no-shadow" width="700px">
1. Zoom out time range
1. Time picker dropdown. Here you can access relative time range options, auto refresh options and set custom absolute time ranges.
@@ -22,7 +22,7 @@ A _dashboard_ is a set of one or more panels organized and arranged into one or
Click the new Dashboard link on the right side of the Dashboard picker. You now have a blank Dashboard.
<img class="no-shadow" src="/img/docs/v50/top_nav_annotated.png" width="580px">
<img class="no-shadow" src="/static/img/docs/v50/top_nav_annotated.png" width="580px">
The image above shows you the top header for a Dashboard.

View File

@@ -7,30 +7,30 @@ weight = 2
# Annotations
{{< docs-imagebox img="/img/docs/v46/annotations.png" max-width="800px" >}}
{{< figure src="/static/img/docs/v46/annotations.png" max-width="800px" >}}
Annotations provide a way to mark points on the graph with rich events. When you hover over an annotation
you can get event description and event tags. The text field can include links to other systems with more detail.
## Native annotations
Grafana v4.6+ comes with a native annotation store and the ability to add annotation events directly from the graph panel or via the [HTTP API]({{< relref "../http_api/annotations.md" >}}).
Grafana comes with a native annotation store and the ability to add annotation events directly from the graph panel or via the [HTTP API]({{< relref "../http_api/annotations.md" >}}).
## Adding annotations
By holding down Ctrl/Cmd+Click. Adding tags to the annotation will make it searchable from other dashboards.
{{< docs-imagebox img="/img/docs/annotations/annotation-still.png"
max-width="600px" animated-gif="/img/docs/annotations/annotation.gif" >}}
{{< figure src="/static/img/docs/annotations/annotation-still.png"
max-width="600px" animated-gif="/static/img/docs/annotations/annotation.gif" >}}
### Adding regions events
You can also hold down Ctrl/Cmd and select region to create a region annotation.
{{< docs-imagebox img="/img/docs/annotations/region-annotation-still.png"
max-width="600px" animated-gif="/img/docs/annotations/region-annotation.gif" >}}
{{< figure src="/static/img/docs/annotations/region-annotation-still.png"
max-width="600px" animated-gif="/static/img/docs/annotations/region-annotation.gif" >}}
### Built in query
### Built-in query
After you added an annotation they will still be visible. This is due to the built in annotation query that exists on all dashboards. This annotation query will
fetch all annotation events that originate from the current dashboard and show them on the panel where they were created. This includes alert state history annotations. You can
@@ -46,7 +46,7 @@ one tag. For example create an annotation query name `outages` and specify a tag
In Grafana v5.3+ it's possible to use template variables in the tag query. So if you have a dashboard showing stats for different services and a template variable that dictates which services to show, you can now use the same template variable in your annotation query to only show annotations for those services.
{{< docs-imagebox img="/img/docs/v53/annotation_tag_filter_variable.png" max-width="600px" >}}
{{< figure src="/static/img/docs/v53/annotation_tag_filter_variable.png" max-width="600px" >}}
## Querying other data sources
@@ -54,8 +54,8 @@ Annotation events are fetched via annotation queries. To add a new annotation qu
open the dashboard settings menu, then select `Annotations`. This will open the dashboard annotations
settings view. To create a new annotation query hit the `New` button.
<!--![](/img/docs/v50/annotation_new_query.png)-->
{{< docs-imagebox img="/img/docs/v50/annotation_new_query.png" max-width="600px" >}}
<!--![](/static/img/docs/v50/annotation_new_query.png)-->
{{< figure src="/static/img/docs/v50/annotation_new_query.png" max-width="600px" >}}
Specify a name for the annotation query. This name is given to the toggle (checkbox) that will allow
you to enable/disable showing annotation events from this query. For example you might have two
@@ -64,12 +64,4 @@ to show.
### Annotation query details
The annotation query options are different for each data source.
- [Graphite annotation queries]({{< relref "../datasources/graphite.md#annotations" >}})
- [Elasticsearch annotation queries]({{< relref "../datasources/elasticsearch.md#annotations" >}})
- [InfluxDB annotation queries]({{< relref "../datasources/influxdb.md#annotations" >}})
- [Prometheus annotation queries]({{< relref "../datasources/prometheus.md#annotations" >}})
- [MySQL annotation queries]({{< relref "../datasources/mysql.md#annotations" >}})
- [Postgres annotation queries]({{< relref "../datasources/postgres.md#annotations" >}})
- [Loki annotation queries]({{< relref "../datasources/loki.md#annotations" >}})
The annotation query options are different for each data source. For information about annotations in a specific data source, refer to the specific [data source]({{< relref "../datasources/_index.md" >}}) topic.

View File

@@ -21,7 +21,7 @@ On the Create Folder page, fill in a unique name for the folder and then click C
## Manage Dashboards
{{< docs-imagebox img="/img/docs/v50/manage_dashboard_menu.png" max-width="300px" class="docs-image--right" >}}
{{< figure src="/static/img/docs/v50/manage_dashboard_menu.png" max-width="300px" class="docs-image--right" >}}
There is a new Manage Dashboards page where you can carry out a variety of tasks:
@@ -46,6 +46,6 @@ The Dashboard Folder Page is similar to the Manage Dashboards page and is where
Permissions can be assigned to a folder and inherited by the containing dashboards. An Access Control List (ACL) is used where
**Organization Role**, **Team** and Individual **User** can be assigned permissions. Read the
[Dashboard and Folder Permissions]({{< relref "../permissions/dashboard_folder_permissions.md" >}}) docs for more detail
[Dashboard and Folder Permissions]({{< relref "../permissions/dashboard-folder-permissions.md" >}}) docs for more detail
on the permission system.

View File

@@ -10,7 +10,7 @@ weight = 100
Whenever you save a version of your dashboard, a copy of that version is saved so that previous versions of your dashboard are never lost. A list of these versions is available by entering the dashboard settings and then selecting "Versions" in the left side menu.
<img class="no-shadow" src="/img/docs/v50/dashboard_versions_list.png">
<img class="no-shadow" src="/static/img/docs/v50/dashboard_versions_list.png">
The dashboard version history feature lets you compare and restore to previously saved dashboard versions.
@@ -18,11 +18,11 @@ The dashboard version history feature lets you compare and restore to previously
To compare two dashboard versions, select the two versions from the list that you wish to compare. Once selected, the "Compare versions" button will become clickable. Click the button to view the diff between the two versions.
<img class="no-shadow" src="/img/docs/v50/dashboard_versions_select.png">
<img class="no-shadow" src="/static/img/docs/v50/dashboard_versions_select.png">
Upon clicking the button, you'll be brought to the diff view. By default, you'll see a textual summary of the changes, like in the image below.
<img class="no-shadow" src="/img/docs/v50/dashboard_versions_diff_basic.png">
<img class="no-shadow" src="/static/img/docs/v50/dashboard_versions_diff_basic.png">
If you want to view the diff of the raw JSON that represents your dashboard, you can do that as well by clicking the "View JSON Diff" button at the bottom.
@@ -32,6 +32,6 @@ If you want to restore to the version you are diffing against, you can do so by
If you need to restore to a previously saved dashboard version, you can do so by either clicking the "Restore" button on the right of a row in the dashboard version list, or by clicking the "Restore to version \<x\>" button appearing in the diff view. Clicking the button will bring up the following popup prompting you to confirm the restoration.
<img class="no-shadow" src="/img/docs/v50/dashboard_versions_restore.png">
<img class="no-shadow" src="/static/img/docs/v50/dashboard_versions_restore.png">
After restoring to a previous version, a new version will be created containing the same exact data as the previous version, only with a different version number. This is indicated in the "Notes column" for the row in the new dashboard version. This is done simply to ensure your previous dashboard versions are not affected by the change.

View File

@@ -15,7 +15,7 @@ Dashboards are exported in Grafana JSON format, and contain everything you need
The export feature is accessed in the share window which you open by clicking the share button in the dashboard menu.
{{< docs-imagebox img="/img/docs/export/export-modal.png" max-width="800px" >}}
{{< figure src="/static/img/docs/export/export-modal.png" max-width="800px" >}}
### Making a dashboard portable
@@ -29,12 +29,12 @@ the dashboard, and will also be added as a required input when the dashboard is
To import a dashboard click the + icon in the side menu, and then click **Import**.
{{< docs-imagebox img="/img/docs/v70/import_step1.png" max-width="700px" >}}
{{< figure src="/static/img/docs/v70/import_step1.png" max-width="700px" >}}
From here you can upload a dashboard JSON file, paste a [Grafana.com](https://grafana.com) dashboard
URL or paste dashboard JSON text directly into the text area.
{{< docs-imagebox img="/img/docs/v70/import_step2_grafana.com.png" max-width="700px" >}}
{{< figure src="/static/img/docs/v70/import_step2_grafana.com.png" max-width="700px" >}}
In step 2 of the import process Grafana will let you change the name of the dashboard, pick what
data source you want the dashboard to use and specify any metric prefixes (if the dashboard use any).
@@ -43,7 +43,7 @@ data source you want the dashboard to use and specify any metric prefixes (if th
Find dashboards for common server applications at [Grafana.com/dashboards](https://grafana.com/dashboards).
{{< docs-imagebox img="/img/docs/v50/gcom_dashboard_list.png" max-width="700px" >}}
{{< figure src="/static/img/docs/v50/gcom_dashboard_list.png" max-width="700px" >}}
## Import and sharing with Grafana 2.x or 3.0

View File

@@ -14,7 +14,7 @@ Grafana automatically scales dashboards to any resolution, which makes them perf
You can access the Playlist feature from Grafana's side menu, in the Dashboards submenu.
{{< docs-imagebox img="/img/docs/v50/playlist.png" max-width="25rem">}}
{{< figure src="/static/img/docs/v50/playlist.png" max-width="25rem">}}
## Create a playlist

View File

@@ -10,6 +10,6 @@ weight = 8
Reporting allows you to generate PDFs from any of your dashboards and have them sent out to interested parties on a schedule.
{{< docs-imagebox img="/img/docs/enterprise/reports_list.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/reports_list.png" max-width="500px" class="docs-image--no-shadow" >}}
> Reporting is only available in Grafana Enterprise, v6.4 or later. For more information, refer to [Reporting]({{< relref "../enterprise/reporting.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}).

View File

@@ -10,7 +10,7 @@ weight = 5
Dashboards can be searched by the dashboard name, filtered by one (or many) tags or filtered by starred status. The dashboard search is accessed through the dashboard picker, available in the dashboard top nav area. The dashboard search can also be opened by using the shortcut `F`.
<img class="no-shadow" src="/img/docs/v50/dashboard_search_annotated.png" width="700px">
<img class="no-shadow" src="/static/img/docs/v50/dashboard_search_annotated.png" width="700px">
1. `Search Bar`: The search bar allows you to enter any string and search both database and file based dashboards in real-time.
1. `Starred`: Here you find all your starred dashboards.

View File

@@ -5,7 +5,7 @@ weight = 7
# Keyboard shortcuts
Grafana has a number of keyboard shortcuts available. Press Shift + `?` on your keyboard to display all keyboard shortcuts available in your version of Grafana.
Grafana has a number of keyboard shortcuts available. Press `?` or `h` on your keyboard to display all keyboard shortcuts available in your version of Grafana.
**Popular shortcuts:**

View File

@@ -26,14 +26,18 @@ Here are some examples:
| Last 5 minutes | `now-5m` | `now` |
| The day so far | `now/d` | `now` |
| This week | `now/w` | `now/w` |
| Week to date | `now/w` | `now` |
| This week so far | `now/w` | `now` |
| This month | `now/M` | `now/M` |
| This month so far | `now/M` | `now` |
| Previous Month | `now-1M/M` | `now-1M/M` |
| This year so far | `now/Y` | `now` |
| This Year | `now/Y` | `now/Y |
## Common time range controls
The dashboard and panel time controls have a common user interface (UI).
<img class="no-shadow" src="/img/docs/time-range-controls/common-time-controls-7-0.png" max-width="700px">
<img class="no-shadow" src="/static/img/docs/time-range-controls/common-time-controls-7-0.png" max-width="700px">
The options are defined below.
@@ -43,11 +47,11 @@ The current time range, also called the _time picker_, shows the time range curr
Hover your cursor over the field to see the exact time stamps in the range and their source (such as the local browser).
<img class="no-shadow" src="/img/docs/time-range-controls/time-picker-7-0.png" max-width="300px">
<img class="no-shadow" src="/static/img/docs/time-range-controls/time-picker-7-0.png" max-width="300px">
Click on the current time range to change the time range. You can change the current time using a _relative time range_, such as the last 15 minutes, or an _absolute time range_, such as `2020-05-14 00:00:00 to 2020-05-15 23:59:59`.
<img class="no-shadow" src="/img/docs/time-range-controls/change-current-time-range-7-0.png" max-width="900px">
<img class="no-shadow" src="/static/img/docs/time-range-controls/change-current-time-range-7-0.png" max-width="900px">
### Relative time range

View File

@@ -6,11 +6,11 @@ weight = 60
# Data sources
Grafana supports many different storage backends for your time series data (data source). Each data source has a specific Query Editor that is customized for the features and capabilities that the particular data source exposes.
Grafana supports many different storage backends for your time series data (data source). Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
## Querying
The query language and capabilities of each data source are obviously very different. You can combine data from multiple data sources onto a single Dashboard, but each Panel is tied to a specific data source that belongs to a particular Organization.
Each data source has a specific Query Editor that is customized for the features and capabilities that the particular data source exposes. The query language and capabilities of each data source are obviously very different. You can combine data from multiple data sources onto a single Dashboard, but each Panel is tied to a specific data source that belongs to a particular Organization.
## Supported data sources
@@ -21,7 +21,7 @@ The following data sources are officially supported:
- [Elasticsearch]({{< relref "elasticsearch.md" >}})
- [Google Cloud Monitoring]({{< relref "google-cloud-monitoring/_index.md" >}})
- [Graphite]({{< relref "graphite.md" >}})
- [InfluxDB]({{< relref "influxdb.md" >}})
- [InfluxDB]({{< relref "influxdb/_index.md" >}})
- [Loki]({{< relref "loki.md" >}})
- [Microsoft SQL Server (MSSQL)]({{< relref "mssql.md" >}})
- [MySQL]({{< relref "mysql.md" >}})

View File

@@ -6,23 +6,33 @@ weight = 100
# Add a data source
Before you create your first dashboard, you need to add your data source. Following are the list of instructions to create one.
Before you can create your first dashboard, you need to add your data source.
> **Note:** Only users with the organization Admin role can add data sources.
1. Move your cursor to the cog on the side menu which will show you the configuration menu. If the side menu is not visible click the Grafana icon in the upper left corner. Click on **Configuration** > **Data Sources** in the side menu and you'll be taken to the data sources page
1. Move your cursor to the cog on the side menu which will show you the configuration menu. If the side menu is not visible click the Grafana icon in the upper left corner. Click on **Configuration** > **Data sources** in the side menu and you'll be taken to the data sources page
where you can add and edit data sources. You can also click the cog.
{{< docs-imagebox img="/img/docs/v52/sidemenu-datasource.png" max-width="250px" class="docs-image--no-shadow">}}
{{< figure src="/static/img/docs/v52/sidemenu-datasource.png" max-width="250px" class="docs-image--no-shadow">}}
1. Click **Add data source** and you will come to the settings page of your new data source.
1. Move your cursor to the cog icon on the side menu which will show the configuration options.
{{< docs-imagebox img="/img/docs/v52/add-datasource.png" max-width="700px" class="docs-image--no-shadow">}}
{{< figure src="/static/img/docs/v75/sidemenu-datasource-7-5.png" max-width="150px" class="docs-image--no-shadow">}}
1. In the **Name** box, enter a name for this data source.
1. Click on **Data Sources**. The data sources page opens showing a list of previously configured data sources for the Grafana instance.
{{< docs-imagebox img="/img/docs/v52/datasource-settings.png" max-width="700px" class="docs-image--no-shadow">}}
1. Click **Add data source** to see a list of all supported data sources.
{{< figure src="/static/img/docs/v75/add-data-source-7-5.png" max-width="600px" class="docs-image--no-shadow">}}
1. Search for a specific data source by entering the name in the search dialog. Or you can scroll through supported data sources grouped into time series, logging, tracing and other categories.
1. Move the cursor over the data source you want to add.
{{< figure src="/static/img/docs/v75/select-data-source-7-5.png" max-width="700px" class="docs-image--no-shadow">}}
1. Click **Select**. The data source configuration page opens.
1. Configure the data source following instructions specific to that data source. See [Data sources]({{< relref "_index.md" >}}) for links to configuration instructions for all supported data sources.
1. In the **Type**, select the type of data source. See [Supported data sources]({{< relref "_index.md#supported-data-sources" >}}) for more information and how to configure your data source settings.
1. Click **Save & Test**.

View File

@@ -6,11 +6,7 @@ aliases = ["/docs/grafana/latest/features/datasources/azuremonitor"]
weight = 300
+++
# Using Azure Monitor in Grafana
> Officially released in Grafana v6.0.0
As of Grafana 6.0, the Azure Monitor plugin has been moved into Grafana so it now ships with built-in support for Azure Monitor.
# Azure Monitor data source
The Azure Monitor data source supports multiple services in the Azure cloud:
@@ -39,7 +35,7 @@ The data source can access metrics from four different services. You can configu
- **Default Subscription Id** (Subscriptions -> Choose subscription -> Overview -> Subscription ID)
1. Paste these four items into the fields in the Azure Monitor API Details section:
{{< docs-imagebox img="/img/docs/v62/config_1_azure_monitor_details.png" class="docs-image--no-shadow" caption="Azure Monitor Configuration Details" >}}
{{< figure src="/static/img/docs/v62/config_1_azure_monitor_details.png" class="docs-image--no-shadow" caption="Azure Monitor Configuration Details" >}}
- The Subscription Id can be changed per query. Save the data source and refresh the page to see the list of subscriptions available for the specified Client Id.
@@ -54,10 +50,10 @@ The data source can access metrics from four different services. You can configu
- API Key
1. Paste these two items into the appropriate fields in the Application Insights API Details section:
{{< docs-imagebox img="/img/docs/v62/config_2_app_insights_api_details.png" class="docs-image--no-shadow" caption="Application Insights Configuration Details" >}}
{{< figure src="/static/img/docs/v62/config_2_app_insights_api_details.png" class="docs-image--no-shadow" caption="Application Insights Configuration Details" >}}
1. Test that the configuration details are correct by clicking on the "Save & Test" button:
{{< docs-imagebox img="/img/docs/v62/config_3_save_and_test.png" class="docs-image--no-shadow" caption="Save and Test" >}}
{{< figure src="/static/img/docs/v62/config_3_save_and_test.png" class="docs-image--no-shadow" caption="Save and Test" >}}
Alternatively on step 4 if creating a new Azure Active Directory App, use the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest):
@@ -92,7 +88,7 @@ Examples of metrics that you can get from the service are:
- `Microsoft.Network/networkInterfaces - Bytes sent`
- `Microsoft.Storage/storageAccounts - Used Capacity`
{{< docs-imagebox img="/img/docs/v60/azuremonitor-service-query-editor.png" class="docs-image--no-shadow" caption="Metrics Query Editor" >}}
{{< figure src="/static/img/docs/v60/azuremonitor-service-query-editor.png" class="docs-image--no-shadow" caption="Metrics Query Editor" >}}
As of Grafana 7.1, the query editor allows you to query multiple dimensions for metrics that support them. Metrics that support multiple dimensions are those listed in the [Azure Monitor supported Metrics List](https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported) that have one or more values listed in the "Dimension" column for the metric.
@@ -150,7 +146,7 @@ Examples:
- Chaining template variables: `ResourceNames($rg, $ns)`
- Do not quote parameters: `MetricNames(hg, Microsoft.Network/publicIPAddresses, grafanaIP)`
{{< docs-imagebox img="/img/docs/v60/azuremonitor-service-variables.png" class="docs-image--no-shadow" caption="Nested Azure Monitor Template Variables" >}}
{{< figure src="/static/img/docs/v60/azuremonitor-service-variables.png" class="docs-image--no-shadow" caption="Nested Azure Monitor Template Variables" >}}
Check out the [Templating]({{< relref "../variables/_index.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
@@ -163,7 +159,7 @@ Not all metrics returned by the Azure Monitor Metrics API have values. To make i
Grafana alerting is supported for the Azure Monitor service. This is not Azure Alerts support. For more information about Grafana alerting, refer to [how alerting in Grafana works]({{< relref "../alerting/_index.md" >}}).
{{< docs-imagebox img="/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
{{< figure src="/static/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
## Query the Logs service
@@ -205,7 +201,7 @@ Perf
> **Tip**: In the above query, the Kusto syntax `Samples=count()` and `["Avg Value"]=...` is used to rename those columns — the second syntax allowing for the space. This changes the name of the metric that Grafana uses, and as a result, things like series legends and table columns will match what you specify. Here `Samples` is displayed instead of `_count`.
{{< docs-imagebox img="/img/docs/azuremonitor/logs_multi-value_multi-dim.png" class="docs-image--no-shadow" caption="Azure Logs query with multiple values and multiple dimensions" >}}
{{< figure src="/static/img/docs/azuremonitor/logs_multi-value_multi-dim.png" class="docs-image--no-shadow" caption="Azure Logs query with multiple values and multiple dimensions" >}}
### Table queries
@@ -297,7 +293,7 @@ Perf
> Only available in Grafana v7.0+.
{{< docs-imagebox img="/img/docs/v70/azure-log-analytics-deep-linking.png" max-width="500px" class="docs-image--right" caption="Logs deep linking" >}}
{{< figure src="/static/img/docs/v70/azure-log-analytics-deep-linking.png" max-width="500px" class="docs-image--right" caption="Logs deep linking" >}}
Click on a time series in the panel to see a context menu with a link to `View in Azure Portal`. Clicking that link opens the Azure Metric Logs query editor in the Azure Portal and runs the query from the Grafana panel there.
@@ -313,7 +309,7 @@ Grafana alerting is supported for Application Insights. This is not Azure Alerts
## Query Application Insights service
{{< docs-imagebox img="/img/docs/azuremonitor/insights_metrics_multi-dim.png" class="docs-image--no-shadow" caption="Application Insights Query Editor" >}}
{{< figure src="/static/img/docs/azuremonitor/insights_metrics_multi-dim.png" class="docs-image--no-shadow" caption="Application Insights Query Editor" >}}
As of Grafana 7.1, you can select more than one group by dimension.
@@ -365,19 +361,19 @@ Examples:
- Passing in metric name variable: `AppInsightsGroupBys(requests/count)`
- Chaining template variables: `AppInsightsGroupBys($metricnames)`
{{< docs-imagebox img="/img/docs/v60/appinsights-service-variables.png" class="docs-image--no-shadow" caption="Nested Application Insights Template Variables" >}}
{{< figure src="/static/img/docs/v60/appinsights-service-variables.png" class="docs-image--no-shadow" caption="Nested Application Insights Template Variables" >}}
### Application Insights alerting
Grafana alerting is supported for Application Insights. This is not Azure Alerts support. For more information about Grafana alerting, refer to [Alerts overview]({{< relref "../alerting/_index.md" >}}).
{{< docs-imagebox img="/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
{{< figure src="/static/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
## Query the Application Insights Analytics service
If you change the service type to **Insights Analytics**, then a similar editor to the Log Analytics service is available. This service also uses the Kusto language, so the instructions for querying data are identical to [querying the log analytics service]({{< relref "#querying-the-azure-log-analytics-service" >}}), except that you query Application Insights Analytics data instead.
{{< docs-imagebox img="/img/docs/azuremonitor/insights_analytics_multi-dim.png" class="docs-image--no-shadow" caption="Azure Application Insights Analytics query with multiple dimensions" >}}
{{< figure src="/static/img/docs/azuremonitor/insights_analytics_multi-dim.png" class="docs-image--no-shadow" caption="Azure Application Insights Analytics query with multiple dimensions" >}}
## Configure the data source with provisioning

View File

@@ -6,19 +6,17 @@ aliases = ["/docs/grafana/latest/datasources/cloudwatch"]
weight = 200
+++
# Using AWS CloudWatch in Grafana
# AWS CloudWatch data source
Grafana ships with built-in support for CloudWatch. Add it as a data source, then you are ready to
build dashboards or use Explore with CloudWatch metrics and CloudWatch Logs.
Grafana ships with built-in support for CloudWatch. Add it as a data source, then you are ready to build dashboards or use Explore with CloudWatch metrics and CloudWatch Logs.
## Adding the data source
This topic explains options, variables, querying, and other options specific to this data source. Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
1. In the side menu under the `Configuration` link, click on `Data Sources`.
1. Click the `Add data source` button.
1. Select `Cloudwatch` in the `Cloud` section.
> **Note:** If you have issues with getting this data source to work and Grafana is giving you undescriptive errors, then check your log file (try looking in /var/log/grafana/grafana.log).
> **Note:** If at any moment you have issues with getting this data source to work and Grafana is giving you undescriptive errors then don't
> forget to check your log file (try looking in /var/log/grafana/grafana.log).
## Cloudwatch settings
To access data source settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the AWS Cloudwatch data source.
| Name | Description |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
@@ -139,8 +137,8 @@ region = us-west-2
The CloudWatch data source can query data from both CloudWatch metrics and CloudWatch Logs APIs, each with its own specialized query editor. You select which API you want to query with using the query mode switch on top of the editor.
{{< docs-imagebox img="/img/docs/v70/cloudwatch-metrics-query-field.png" max-width="800px" class="docs-image--left" caption="CloudWatch metrics query field" >}}
{{< docs-imagebox img="/img/docs/v70/cloudwatch-logs-query-field.png" max-width="800px" class="docs-image--right" caption="CloudWatch Logs query field" >}}
{{< figure src="/static/img/docs/v70/cloudwatch-metrics-query-field.png" max-width="800px" class="docs-image--left" caption="CloudWatch metrics query field" >}}
{{< figure src="/static/img/docs/v70/cloudwatch-logs-query-field.png" max-width="800px" class="docs-image--right" caption="CloudWatch Logs query field" >}}
## Using the Metric Query Editor
@@ -152,7 +150,7 @@ To create a valid query, you need to specify the namespace, metric name and at l
In Grafana 6.5 or higher, youre able to monitor a dynamic list of metrics by using the asterisk (\*) wildcard for one or more dimension values.
{{< docs-imagebox img="/img/docs/v65/cloudwatch-dimension-wildcard.png" max-width="800px" class="docs-image--right" caption="CloudWatch dimension wildcard" >}}
{{< figure src="/static/img/docs/v65/cloudwatch-dimension-wildcard.png" max-width="800px" class="docs-image--right" caption="CloudWatch dimension wildcard" >}}
In the example, all metrics in the namespace `AWS/EC2` with a metric name of `CPUUtilization` and ANY value for the `InstanceId` dimension are queried. This can help you monitor metrics for AWS resources, like EC2 instances or containers. For example, when new instances get created as part of an auto scaling event, they will automatically appear in the graph without you having to track the new instance IDs. This capability is currently limited to retrieving up to 100 metrics. You can click on `Show Query Preview` to see the search expression that is automatically built to support wildcards. To learn more about search expressions, visit the [CloudWatch documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html).
@@ -186,9 +184,7 @@ If the period field is left blank or set to `auto`, then it calculates automatic
### Deep linking from Grafana panels to the CloudWatch console
> Only available in Grafana v6.5+.
{{< docs-imagebox img="/img/docs/v65/cloudwatch-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch deep linking" >}}
{{< figure src="/static/img/docs/v65/cloudwatch-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch deep linking" >}}
Left clicking a time series in the panel shows a context menu with a link to `View in CloudWatch console`. Clicking that link will open a new tab that will take you to the CloudWatch console and display all the metrics for that query. If you're not currently logged in to the CloudWatch console, the link will forward you to the login page. The provided link is valid for any account but will only display the right metrics if you're logged in to the account that corresponds to the selected data source in Grafana.
@@ -196,17 +192,17 @@ This feature is not available for metrics that are based on metric math expressi
## Using the Logs Query Editor
> Only available in Grafana v7.0+.
> **Note:** Available in Grafana v7.0+.
To query CloudWatch Logs, select the region and up to 20 log groups which you want to query. Use the main input area to write your query in [CloudWatch Logs Query Language](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)
You can also write queries returning time series data by using the [`stats` command](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_Insights-Visualizing-Log-Data.html). When making `stats` queries in Explore, you have to make sure you are in Metrics Explore mode.
{{< docs-imagebox img="/img/docs/v70/explore-mode-switcher.png" max-width="500px" class="docs-image--right" caption="Explore mode switcher" >}}
{{< figure src="/static/img/docs/v70/explore-mode-switcher.png" max-width="500px" class="docs-image--right" caption="Explore mode switcher" >}}
To the right of the query input field is a CloudWatch Logs Insights link that opens the CloudWatch Logs Insights console with your query. You can continue exploration there if necessary.
{{< docs-imagebox img="/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch Logs deep linking" >}}
{{< figure src="/static/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch Logs deep linking" >}}
### Using template variables
@@ -215,7 +211,7 @@ See the [Templating]({{< relref "../variables/_index.md" >}}) documentation for
### Deep linking from Grafana panels to the CloudWatch console
{{< docs-imagebox img="/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch Logs deep linking" >}}
{{< figure src="/static/img/docs/v70/cloudwatch-logs-deep-linking.png" max-width="500px" class="docs-image--right" caption="CloudWatch Logs deep linking" >}}
If you'd like to view your query in the CloudWatch Logs Insights console, simply click the `CloudWatch Logs Insights` button next to the query editor.
If you're not currently logged in to the CloudWatch console, the link will forward you to the login page. The provided link is valid for any account but will only display the right metrics if you're logged in to the account that corresponds to the selected data source in Grafana.
@@ -226,8 +222,6 @@ See the [Alerting]({{< relref "../alerting/_index.md" >}}) documentation for mor
## Curated dashboards
> Only available in Grafana v6.5+.
The updated CloudWatch data source ships with pre-configured dashboards for five of the most popular AWS services:
- Amazon Elastic Compute Cloud `Amazon EC2`,
@@ -238,7 +232,7 @@ The updated CloudWatch data source ships with pre-configured dashboards for five
To import the pre-configured dashboards, go to the configuration page of your CloudWatch data source and click on the `Dashboards` tab. Click `Import` for the dashboard you would like to use. To customize the dashboard, we recommend saving the dashboard under a different name, because otherwise the dashboard will be overwritten when a new version of the dashboard is released.
{{< docs-imagebox img="/img/docs/v65/cloudwatch-dashboard-import.png" caption="CloudWatch dashboard import" >}}
{{< figure src="/static/img/docs/v65/cloudwatch-dashboard-import.png" caption="CloudWatch dashboard import" >}}
## Templated queries
@@ -302,7 +296,7 @@ Filters syntax:
Example `ec2_instance_attribute()` query
```javascript
ec2_instance_attribute(us-east-1, InstanceId, { "tag:Environment": ["production"] });
ec2_instance_attribute(us - east - 1, InstanceId, { 'tag:Environment': ['production'] });
```
### Selecting attributes
@@ -343,10 +337,10 @@ Tags can be selected by prepending the tag name with `Tags.`
Example `ec2_instance_attribute()` query
```javascript
ec2_instance_attribute(us-east-1, Tags.Name, { "tag:Team": ["sysops"] });
ec2_instance_attribute(us - east - 1, Tags.Name, { 'tag:Team': ['sysops'] });
```
## Using json format template variables
## Using JSON format template variables
Some queries accept filters in JSON format and Grafana supports the conversion of template variables to JSON.
@@ -375,6 +369,22 @@ To request a quota increase, visit the [AWS Service Quotas console](https://cons
Please see the AWS documentation for [Service Quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html) and [CloudWatch limits](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.html) for more information.
## Configure the data source with grafana.ini
In the Grafana [configuration]({{< relref "../administration/configuration.md#aws" >}}) file, there's an `AWS` section that allows you to customize the data source.
### allowed_auth_providers
Specify which authentication providers are allowed for the CloudWatch data source. The following providers are enabled by default in OSS Grafana: `default` (AWS SDK default), keys (Access and secret key), credentials (Credentials file), ec2_IAM_role (EC2 IAM role).
### assume_role_enabled
Allows you to disable `assume role (ARN)` in the CloudWatch data source. By default, assume role (ARN) is enabled for OSS Grafana.
### list_metrics_page_limit
When a custom namespace is specified in the query editor, the [List Metrics API](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_ListMetrics.html) is used to populate the _Metrics_ field and the _Dimension_ fields. The API is paginated and returns up to 500 results per page. The CloudWatch data source also limits the number of pages to 500. However, you can change this limit using the `list_metrics_page_limit` variable in the [grafana configuration file](https://grafana.com/docs/grafana/latest/administration/configuration/#aws).
## Configure the data source with provisioning
It's now possible to configure data sources using config files with Grafana's provisioning system. You can read more about how it works and all the settings you can set for data sources on the [provisioning docs page]({{< relref "../administration/provisioning/#datasources" >}})

View File

@@ -49,7 +49,7 @@ http.cors.allow-origin: "*"
### Index settings
![Elasticsearch data source details](/img/docs/elasticsearch/elasticsearch-ds-details-7-4.png)
![Elasticsearch data source details](/static/img/docs/elasticsearch/elasticsearch-ds-details-7-4.png)
Here you can specify a default for the `time field` and specify the name of your Elasticsearch index. You can use
a time pattern for the index name or a wildcard.
@@ -77,9 +77,7 @@ number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 se
| `s` | second |
| `ms` | millisecond |
### Logs (BETA)
> Only available in Grafana v6.3+.
### Logs
There are two parameters, `Message field name` and `Level field name`, that can optionally be configured from the data source settings page that determine
which fields will be used for log messages and log levels when visualizing logs in [Explore]({{< relref "../explore" >}}).
@@ -100,7 +98,7 @@ Each data link configuration consists of:
## Metric Query editor
![Elasticsearch Query Editor](/img/docs/elasticsearch/query-editor-7-4.png)
![Elasticsearch Query Editor](/static/img/docs/elasticsearch/query-editor-7-4.png)
The Elasticsearch query editor allows you to select multiple metrics and group by multiple terms or filters. Use the plus and minus icons to the right to add/remove
metrics or group by clauses. Some metrics and group by clauses haves options, click the option text to expand the row to view and edit metric or group by options.
@@ -119,7 +117,7 @@ You can control the name for time series via the `Alias` input field.
Some metric aggregations are called Pipeline aggregations, for example, *Moving Average* and *Derivative*. Elasticsearch pipeline metrics require another metric to be based on. Use the eye icon next to the metric to hide metrics from appearing in the graph. This is useful for metrics you only have in the query for use in a pipeline metric.
![Pipeline aggregation editor](/img/docs/elasticsearch/pipeline-aggregation-editor-7-4.png)
![Pipeline aggregation editor](/static/img/docs/elasticsearch/pipeline-aggregation-editor-7-4.png)
## Templating
@@ -169,7 +167,7 @@ There are two syntaxes:
Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. When the *Multi-value* or *Include all value*
options are enabled, Grafana converts the labels from plain text to a lucene compatible condition.
![Query with template variables](/img/docs/elasticsearch/elastic-templating-query-7-4.png)
![Query with template variables](/static/img/docs/elasticsearch/elastic-templating-query-7-4.png)
In the above example, we have a lucene query that filters documents based on the `@hostname` property using a variable named `$hostname`. It is also using
a variable in the *Terms* group by field input box. This allows you to use a variable to quickly change how the data is grouped.
@@ -191,18 +189,18 @@ for annotation events.
| `Text` | Event description field. |
| `Tags` | Optional field name to use for event tags (can be an array or a CSV string). |
## Querying Logs (BETA)
> Only available in Grafana v6.3+.
## Querying Logs
Querying and displaying log data from Elasticsearch is available in [Explore]({{< relref "../explore" >}}), and in the [logs panel]({{< relref "../panels/visualizations/logs-panel.md" >}}) in dashboards.
Select the Elasticsearch data source, and then optionally enter a lucene query to display your logs.
When switching from a Prometheus or Loki data source in Explore, your query is translated to an Elasticsearch log query with a correct Lucene filter.
### Log Queries
Once the result is returned, the log panel shows a list of log rows and a bar chart where the x-axis shows the time and the y-axis shows the frequency/count.
Note that the fields used for log message and level is based on an [optional data source configuration](#logs-beta).
Note that the fields used for log message and level is based on an [optional data source configuration](#logs).
### Filter Log Messages
@@ -261,4 +259,4 @@ In order to sign requests to your Amazon Elasticsearch Service domain, SigV4 can
Once AWS SigV4 is enabled, it can be configured on the Elasticsearch data source configuration page. Refer to [Cloudwatch authentication]({{<relref "./cloudwatch.md#authentication" >}}) for more information about authentication options.
{{< docs-imagebox img="/img/docs/v73/elasticsearch-sigv4-config-editor.png" max-width="500px" class="docs-image--no-shadow" caption="SigV4 configuration for AWS Elasticsearch Service" >}}
{{< figure src="/static/img/docs/v73/elasticsearch-sigv4-config-editor.png" max-width="500px" class="docs-image--no-shadow" caption="SigV4 configuration for AWS Elasticsearch Service" >}}

View File

@@ -8,7 +8,7 @@ weight = 200
# Using Google Cloud Monitoring in Grafana
Grafana ships with built-in support for Google Cloud Monitoring. Just add it as a data source and you are ready to build dashboards for your Google Cloud Monitoring metrics. Refer to [Add a data source]({{< relref "../add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
Grafana ships with built-in support for Google Cloud Monitoring. Add it as a data source to build dashboards for your Google Cloud Monitoring metrics. For instructions on how to add a data source, refer to [Add a data source]({{< relref "../add-a-data-source.md" >}}). Only users with the organization admin role can add data sources.
> **Note** Before Grafana v7.1, Google Cloud Monitoring was referred to as Google Stackdriver.
@@ -16,11 +16,11 @@ Grafana ships with built-in support for Google Cloud Monitoring. Just add it as
To access Google Cloud Monitoring settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Google Cloud Monitoring data source.
| Name | Description |
| --------------------- | ------------------------------------------------------------------------------------- |
| `Name` | The data source name. This is how you refer to the data source in panels and queries. |
| `Default` | Default data source means that it will be pre-selected for new panels. |
| `Service Account Key` | Upload or paste in the Service Account Key file for a GCP Project. Refer to [Using a Google Service Account Key File](#using-a-google-service-account-key-file) for details.|
| Name | Description |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name` | The data source name. This is how you refer to the data source in panels and queries. |
| `Default` | Default data source means that it is pre-selected for new panels. |
| `Service Account Key` | Upload or paste in the Service Account Key file for a GCP Project. For more information, refer to [Using a Google Service Account Key File](#using-a-google-service-account-key-file). |
## Authentication
@@ -39,31 +39,31 @@ The following APIs need to be enabled first:
Click on the links above and click the `Enable` button:
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_enable_api.png" max-width="450px" class="docs-image--no-shadow" caption="Enable GCP APIs" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_enable_api.png" max-width="450px" class="docs-image--no-shadow" caption="Enable GCP APIs" >}}
#### Create a GCP Service Account for a Project
1. Navigate to the [APIs and Services Credentials page](https://console.cloud.google.com/apis/credentials).
1. Click on the `Create credentials` dropdown/button and choose the `Service account key` option.
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_create_service_account_button.png" max-width="500px" class="docs-image--no-shadow" caption="Create service account button" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_create_service_account_button.png" max-width="500px" class="docs-image--no-shadow" caption="Create service account button" >}}
1. On the `Create service account key` page, choose key type `JSON`. Then in the `Service Account` dropdown, choose the `New service account` option:
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_create_service_account_key.png" max-width="500px" class="docs-image--no-shadow" caption="Create service account key" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_create_service_account_key.png" max-width="500px" class="docs-image--no-shadow" caption="Create service account key" >}}
1. Some new fields will appear. Fill in a name for the service account in the `Service account name` field and then choose the `Monitoring Viewer` role from the `Role` dropdown:
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_service_account_choose_role.png" max-width="600px" class="docs-image--no-shadow" caption="Choose role" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_service_account_choose_role.png" max-width="600px" class="docs-image--no-shadow" caption="Choose role" >}}
1. Click the Create button. A JSON key file will be created and downloaded to your computer. Store this file in a secure place as it allows access to your Google Cloud Monitoring data.
1. Upload it to Grafana on the data source Configuration page. You can either upload the file or paste in the contents of the file.
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_grafana_upload_key.png" max-width="550px" class="docs-image--no-shadow" caption="Upload service key file to Grafana" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_grafana_upload_key.png" max-width="550px" class="docs-image--no-shadow" caption="Upload service key file to Grafana" >}}
1. The file contents will be encrypted and saved in the Grafana database. Don't forget to save after uploading the file!
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_grafana_key_uploaded.png" max-width="600px" class="docs-image--no-shadow" caption="Service key file is uploaded to Grafana" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_grafana_key_uploaded.png" max-width="600px" class="docs-image--no-shadow" caption="Service key file is uploaded to Grafana" >}}
### Using GCE Default Service Account
@@ -81,7 +81,7 @@ The Google Cloud Monitoring query editor allows you to build two types of querie
### Metric Queries
{{< docs-imagebox img="/img/docs/v70/metric-query-builder.png" max-width= "400px" class="docs-image--right" >}}
{{< figure src="/static/img/docs/v70/metric-query-builder.png" max-width= "400px" class="docs-image--right" >}}
The metric query editor allows you to select metrics, group/aggregate by labels and by time, and use filters to specify which time series you want in the results.
@@ -93,7 +93,7 @@ To create a metric query, follow these steps:
1. Choose a metric from the **Metric** dropdown.
1. Use the plus and minus icons in the filter and group by sections to add/remove filters or group by clauses. This step is optional.
Google Cloud Monitoring metrics can be of different kinds (GAUGE, DELTA, CUMULATIVE) and these kinds have support for different aggregation options (reducers and aligners). The Grafana query editor shows the list of available aggregation methods for a selected metric and sets a default reducer and aligner when you select the metric. Units for the Y-axis are also automatically selected by the query editor.
Google Cloud Monitoring supports different kinds of metrics like `GAUGE`, `DELTA,` and `CUMULATIVE`. They support different aggregation options, for example, reducers and aligners. The Grafana query editor displays the list of available aggregation methods for a selected metric and sets a default reducer and aligner when you select the metric.
#### Filter
@@ -122,7 +122,7 @@ The option is called `cloud monitoring auto` and the defaults are:
- 5m for time ranges >= 23 hours and < 6 days
- 1h for time ranges >= 6 days
The other automatic option is `grafana auto`. This will automatically set the group by time depending on the time range chosen and the width of the graph panel. For more information about grafana auto, refer to the [interval variable](http://docs.grafana.org/variables/templates-and-variables/#the-interval-variable).
The other automatic option is `grafana auto`. This will automatically set the group by time depending on the time range chosen and the width of the time series panel. For more information about grafana auto, refer to the [interval variable](http://docs.grafana.org/variables/templates-and-variables/#the-interval-variable).
It is also possible to choose fixed time intervals to group by, like `1h` or `1d`.
@@ -177,16 +177,20 @@ Example Result: `gce_instance - compute.googleapis.com/instance/cpu/usage_time`
> **Note:** Available in Grafana v7.1 and later versions.
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_deep_linking.png" max-width="500px" class="docs-image--right" caption="Google Cloud Monitoring deep linking" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_deep_linking.png" max-width="500px" class="docs-image--right" caption="Google Cloud Monitoring deep linking" >}}
Click on a time series in the panel to see a context menu with a link to View in Metrics Explorer in Google Cloud Console. Clicking that link opens the Metrics Explorer in the Google Cloud Console and runs the query from the Grafana panel there.
The link navigates the user first to the Google Account Chooser and after successfully selecting an account, the user is redirected to the Metrics Explorer. The provided link is valid for any account, but it only displays the query if your account has access to the GCP project specified in the query.
#### Automatic unit detection
Grafana issues one query to the Cloud Monitoring API per query editor row, and each API response includes a unit. Grafana will attempt to convert the returned unit into a unit that is understood by the Grafana time series panel. If the conversion was successful, then the unit will be displayed on the Y-axis on the panel. If the query editor rows returned different units, then the unit from the last query editor row is used in the time series panel.
### SLO (Service Level Objective) queries
> **Note:** Available in Grafana v7.0 and later versions.
{{< docs-imagebox img="/img/docs/v70/slo-query-builder.png" max-width= "400px" class="docs-image--right" >}}
{{< figure src="/static/img/docs/v70/slo-query-builder.png" max-width= "400px" class="docs-image--right" >}}
The SLO query builder in the Google Cloud Monitoring data source allows you to display SLO data in time series format. To get an understanding of the basic concepts in service monitoring, please refer to Google Cloud Monitoring's [official docs](https://cloud.google.com/monitoring/service-monitoring).
@@ -281,7 +285,7 @@ Why two ways? The first syntax is easier to read and write but does not allow yo
## Annotations
{{< docs-imagebox img="/img/docs/v71/cloudmonitoring_annotations_query_editor.png" max-width= "400px" class="docs-image--right" >}}
{{< figure src="/static/img/docs/v71/cloudmonitoring_annotations_query_editor.png" max-width= "400px" class="docs-image--right" >}}
[Annotations]({{< relref "../../dashboards/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation
queries via the Dashboard menu / Annotations view. Annotation rendering is expensive so it is important to limit the number of rows returned. There is no support for showing Google Cloud Monitoring annotations and events yet but it works well with [custom metrics](https://cloud.google.com/monitoring/custom-metrics/) in Google Cloud Monitoring.

View File

@@ -21,4 +21,4 @@ The data source of the newly created dashboard panels will be the one selected a
In case you want to customize a dashboard, we recommend that you save it under a different name. Otherwise the dashboard will be overwritten when a new version of the dashboard is released.
{{< docs-imagebox img="/img/docs/google-cloud-monitoring/curated-dashboards-7-4.png" max-width= "650px" >}}
{{< figure src="/static/img/docs/google-cloud-monitoring/curated-dashboards-7-4.png" max-width= "650px" >}}

View File

@@ -55,8 +55,8 @@ To see the raw text of the query that is sent to Graphite, click the **Toggle te
Click **Select metric** to start navigating the metric space. Once you start, you can continue using the mouse or keyboard arrow keys. You can select a wildcard and still continue.
{{< docs-imagebox img="/img/docs/graphite/graphite-query-editor-still.png"
animated-gif="/img/docs/graphite/graphite-query-editor.gif" >}}
{{< figure src="/static/img/docs/graphite/graphite-query-editor-still.png"
animated-gif="/static/img/docs/graphite/graphite-query-editor.gif" >}}
### Functions
@@ -65,8 +65,8 @@ a function is selected, it will be added and your focus will be in the text box
- To edit or change a parameter, click on it and it will turn into a text box.
- To delete a function, click the function name followed by the x icon.
{{< docs-imagebox img="/img/docs/graphite/graphite-functions-still.png"
animated-gif="/img/docs/graphite/graphite-functions-demo.gif" >}}
{{< figure src="/static/img/docs/graphite/graphite-functions-still.png"
animated-gif="/static/img/docs/graphite/graphite-functions-demo.gif" >}}
Some functions like aliasByNode support an optional second argument. To add an argument, hover your mouse over the first argument and then click the `+` symbol that appears. To remove the second optional parameter, click on it and leave it blank and the editor will remove it.
@@ -165,7 +165,7 @@ tag_values(server, server=~${__searchFilter:regex})
### Variable usage
You can use a variable in a metric node path or as a parameter to a function.
![variable](/img/docs/v2/templated_variable_parameter.png)
![variable](/static/img/docs/v2/templated_variable_parameter.png)
There are two syntaxes:

View File

@@ -64,7 +64,7 @@ Identifier | Description
## Query Editor
{{< docs-imagebox img="/img/docs/v45/influxdb_query_still.png" class="docs-image--no-shadow" animated-gif="/img/docs/v45/influxdb_query.gif" >}}
{{< figure src="/static/img/docs/v45/influxdb_query_still.png" class="docs-image--no-shadow" animated-gif="/static/img/docs/v45/influxdb_query.gif" >}}
You can access the InfluxDB editor under the metrics tab when you are in the edit mode of the Graph or Singlestat panels.
Enter edit mode by clicking the panel title and clicking **Edit**. The editor allows you to select metrics and tags.
@@ -81,7 +81,7 @@ You can type in regex patterns for metric names or tag filter values. Be sure to
In the `SELECT` row you can specify what fields and functions you want to use. If you have a
group by time you need an aggregation function. Some functions like derivative require an aggregation function. The editor tries to simplify and unify this part of the query. For example:
![](/img/docs/influxdb/select_editor.png)
![](/static/img/docs/influxdb/select_editor.png)
The above generates the following InfluxDB `SELECT` clause:
@@ -145,7 +145,7 @@ The macros support copying and pasting from [Chronograph](https://www.influxdata
Macro example | Description
------------ | -------------
`v.timeRangeStart` | Will be replaced by the start of the currently active time selection. For example, *2020-06-11T13:31:00Z*
`v.timeRangeEnd` | Will be replaced by the end of the currently active time selection. For example, *2020-06-11T14:31:00Z*
`v.timeRangeStop` | Will be replaced by the end of the currently active time selection. For example, *2020-06-11T14:31:00Z*
`v.windowPeriod` | Will be replaced with an interval string compatible with Flux that corresponds to Grafana's calculated interval based on the time range of the active time selection. For example, *5s*
`v.defaultBucket` | Will be replaced with the data source configuration's "Default Bucket" setting
`v.organization` | Will be replaced with the data source configuration's "Organization" setting

View File

@@ -0,0 +1,149 @@
+++
title = "InfluxDB data source"
description = "Guide for using InfluxDB in Grafana"
keywords = ["grafana", "influxdb", "guide", "flux"]
aliases = ["/docs/grafana/latest/features/datasources/influxdb", "/docs/grafana/latest/datasources/influxdb"]
weight = 700
+++
# InfluxDB data source
{{< docs/shared "influxdb/intro.md" >}}
This topic explains options, variables, querying, and other options specific to this data source. Refer to [Add a data source]({{< relref "../add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
## Data source options
To access data source settings, hover your mouse over the **Configuration** (gear) icon, then click **Data sources**, and then click the data source.
InfluxDB data source options differ depending on which [query language](#query-languages) you select: InfluxQL or Flux.
> **Note:** Though not required, it's a good practice to append the language choice to the data source name. For example:
>
- InfluxDB-InfluxQL
- InfluxDB-Flux
### InfluxQL (classic InfluxDB query)
These options apply if you are using the InfluxQL query language. If you are using Flux, refer to [Flux support in Grafana]({{< relref "influxdb-flux.md" >}}).
Name | Description
----------- | -------------
`Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-InfluxQL`.
`Default` | Default data source means that it will be pre-selected for new panels.
`URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB API port is by default 8086.
`Access` | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser.
`Whitelisted Cookies`| Cookies that will be forwarded to the data source. All other cookies will be deleted.
`Database` | The ID of the bucket you want to query from, copied from the [Buckets page](https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/view-buckets/) of the InfluxDB UI.
`User` | The username you use to sign into InfluxDB.
`Password` | The token you use to query the bucket above, copied from the [Tokens page](https://docs.influxdata.com/influxdb/v2.0/security/tokens/view-tokens/) of the InfluxDB UI.
`HTTP mode` | How to query the database (`GET` or `POST` HTTP verb). The `POST` verb allows heavy queries that would return an error using the `GET` verb. Default is `GET`.
`Min time interval` | (Optional) Refer to [Min time interval]({{< relref "#min-time-interval" >}}).
`Max series`| (Optional) Limits the number of series/tables that Grafana processes. Lower this number to prevent abuse, and increase it if you have lots of small time series and not all are shown. Defaults to 1000.
### Flux
For information on data source settings and using Flux in Grafana, refer to [Flux support in Grafana]({{< relref "influxdb-flux.md" >}}).
#### Min time interval
A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example `1m` if your data is written every minute.
This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value _must_ be formatted as a number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
Identifier | Description
------------ | -------------
`y` | year
`M` | month
`w` | week
`d` | day
`h` | hour
`m` | minute
`s` | second
`ms` | millisecond
## Query languages
You can query InfluxDB using InfluxQL or Flux:
- [InfluxQL](https://docs.influxdata.com/influxdb/v1.8/query_language/explore-data/) is a SQL-like language for querying InfluxDB, with statements such as SELECT, FROM, WHERE, and GROUP BY that are familiar to SQL users. InfluxQL is available in InfluxDB 1.0 onwards.
- [Flux](https://docs.influxdata.com/influxdb/v2.0/query-data/get-started/) provides significantly broader functionality than InfluxQL, supporting not only queries, but built-in functions for data shaping, string manipulation, joining to non-InfluxDB data sources and more, but also processing time-series data. Its more similar to JavaScript with a functional style.
To help you choose the best language for your needs, heres a comparison of [Flux vs InfluxQL](https://docs.influxdata.com/influxdb/v1.8/flux/flux-vs-influxql/), and [why InfluxData created Flux](https://www.influxdata.com/blog/why-were-building-flux-a-new-data-scripting-and-query-language/).
## InfluxQL query editor
Enter edit mode by clicking the panel title and clicking **Edit**. The editor allows you to select metrics and tags.
![InfluxQL query editor](/static/img/docs/influxdb/influxql-query-editor-7-5.png)
### Filter data (WHERE)
To add a tag filter, click the plus icon to the right of the `WHERE` condition. You can remove tag filters by clicking on the tag key and then selecting `--remove tag filter--`.
**Regex matching**
You can type in regex patterns for metric names or tag filter values. Be sure to wrap the regex pattern in forward slashes (`/`). Grafana automatically adjusts the filter tag condition to use the InfluxDB regex match condition operator (`=~`).
### Field and Aggregation functions
In the `SELECT` row you can specify what fields and functions you want to use. If you have a
group by time you need an aggregation function. Some functions like derivative require an aggregation function. The editor tries to simplify and unify this part of the query. For example:
![](/static/img/docs/influxdb/select_editor.png)
The above generates the following InfluxDB `SELECT` clause:
```sql
SELECT derivative(mean("value"), 10s) /10 AS "REQ/s" FROM ....
```
#### Select multiple fields
Use the plus button and select Field > field to add another SELECT clause. You can also
specify an asterix `*` to select all fields.
### Group By
To group by a tag, click the plus icon at the end of the GROUP BY row. Pick a tag from the dropdown that appears.
You can remove the "Group By" by clicking on the `tag` and then click on the x icon.
### Text Editor Mode (RAW)
You can switch to raw query mode by clicking hamburger icon and then `Switch editor mode`.
> If you use Raw Query be sure your query at minimum have `WHERE $timeFilter`.
> Also, always have a group by time and an aggregation function, otherwise InfluxDB can easily return hundreds of thousands of data points that will hang the browser.
### Alias patterns
- $m = replaced with measurement name
- $measurement = replaced with measurement name
- $col = replaced with column name
- $tag_exampletag = replaced with the value of the `exampletag` tag. The syntax is `$tag_yourTagName` (must start with `$tag_`). To use your tag as an alias in the ALIAS BY field then the tag must be used to group by in the query.
- You can also use [[tag_hostname]] pattern replacement syntax. For example, in the ALIAS BY field using this text `Host: [[tag_hostname]]` would substitute in the `hostname` tag value for each legend value and an example legend value would be: `Host: server1`.
## Querying logs
Querying and displaying log data from InfluxDB is available in [Explore]({{< relref "../../explore/_index.md" >}}), and in the [logs panel]({{< relref "../../panels/visualizations/logs-panel.md" >}}) in dashboards.
Select the InfluxDB data source, and then enter a query to display your logs.
### Log queries
The Logs Explorer (the `Measurements/Fields` button) next to the query field shows a list of measurements and fields. Choose the desired measurement that contains your log data and then choose which field Explore should use to display the log message.
Once the result is returned, the log panel shows a list of log rows and a bar chart where the x-axis shows the time and the y-axis shows the frequency/count.
### Filter search
To add a filter, click the plus icon to the right of the `Measurements/Fields` button or a condition. You can remove tag filters by clicking on the first select and choosing `--remove filter--`.
## Annotations
[Annotations]({{< relref "../../dashboards/annotations.md" >}}) allows you to overlay rich event information on top of graphs. Add annotation queries using the Annotations view in the Dashboard menu.
An example query:
```SQL
SELECT title, description from events WHERE $timeFilter ORDER BY time ASC
```
For InfluxDB, you need to enter a query like the one in the example above. The ```where $timeFilter``` component is required. If you only select one column, then you do not need to enter anything in the column mapping fields. The **Tags** field can be a comma-separated string.

View File

@@ -0,0 +1,77 @@
+++
title = "Flux support in Grafana"
description = "Guide for Flux in Grafana"
weight = 200
+++
# Flux query language in Grafana
Grafana supports Flux running on InfluxDB 1.8+. See [1.8 compatibility](https://github.com/influxdata/influxdb-client-go/#influxdb-18-api-compatibility) for more information and connection details.
Name | Description
---------------- | -------------
`Name` | The data source name. This is how you refer to the data source in panels and queries. We recommend something like `InfluxDB-Flux`.
`Default` | Default data source means that it will be pre-selected for new panels.
`URL` | The HTTP protocol, IP address and port of your InfluxDB API. InfluxDB 2.0 API port is by default 8086.
`Organization` | The [Influx organization](https://v2.docs.influxdata.com/v2.0/organizations/) that will be used for Flux queries. This is also used to for the `v.organization` query macro.
`Token` | The authentication token used for Flux queries. With Influx 2.0, use the [influx authentication token to function](https://v2.docs.influxdata.com/v2.0/security/tokens/create-token/). For influx 1.8, the token is `username:password`.
`Default bucket` | (Optional) The [Influx bucket](https://v2.docs.influxdata.com/v2.0/organizations/buckets/) that will be used for the `v.defaultBucket` macro in Flux queries.
`Min time interval` | (Optional) Refer to [Min time interval]({{< relref "#min-time-interval" >}}).
`Max series`| (Optional) Limits the number of series/tables that Grafana processes. Lower this number to prevent abuse, and increase it if you have lots of small time series and not all are shown. Defaults to 1000.
## Min time interval
A lower limit for the auto group by time interval. Recommended to be set to write frequency, for example `1m` if your data is written every minute.
This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
Identifier | Description
------------ | -------------
`y` | year
`M` | month
`w` | week
`d` | day
`h` | hour
`m` | minute
`s` | second
`ms` | millisecond
You can use the [Flux query and scripting language](https://www.influxdata.com/products/flux/). Grafana's Flux query editor is a text editor for raw Flux queries with Macro support.
## Supported macros
The macros support copying and pasting from [Chronograph](https://www.influxdata.com/time-series-platform/chronograf/).
Macro example | Description
------------ | -------------
`v.timeRangeStart` | Will be replaced by the start of the currently active time selection. For example, *2020-06-11T13:31:00Z*
`v.timeRangeStop` | Will be replaced by the end of the currently active time selection. For example, *2020-06-11T14:31:00Z*
`v.windowPeriod` | Will be replaced with an interval string compatible with Flux that corresponds to Grafana's calculated interval based on the time range of the active time selection. For example, *5s*
`v.defaultBucket` | Will be replaced with the data source configuration's "Default Bucket" setting
`v.organization` | Will be replaced with the data source configuration's "Organization" setting
For example, the following query will be interpolated as the query that follows it, with interval and time period values changing according to active time selection\):
Grafana Flux query:
```flux
from(bucket: v.defaultBucket)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
|> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
|> aggregateWindow(every: v.windowPeriod, fn: mean)
|> yield(name: "mean")
```
Interpolated query send to Influx:
```flux
from(bucket: "grafana")
|> range(start: 2020-06-11T13:59:07Z, stop: 2020-06-11T14:59:07Z)
|> filter(fn: (r) => r["_measurement"] == "cpu" or r["_measurement"] == "swap")
|> filter(fn: (r) => r["_field"] == "usage_system" or r["_field"] == "free")
|> aggregateWindow(every: 2s, fn: mean)
|> yield(name: "mean")
```
You can view the interpolated version of a query with the query inspector. For more information, refer to [Inspect a panel]({{< relref "../../panels/inspect-panel.md" >}}) and [Queries]({{< relref "../../panels/queries.md" >}}).

View File

@@ -0,0 +1,65 @@
+++
title = "InfluxDB templates"
description = "Guide for templates in InfluxDB"
weight = 300
+++
## InfluxDB templates
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
For more information, refer to [Templates and variables]({{< relref "../../variables/_index.md" >}}).
## Using variables in InfluxDB queries
There are two syntaxes:
`$<varname>` Example:
```sql
SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^$host$/ AND $timeFilter GROUP BY time($__interval), "hostname"
```
`[[varname]]` Example:
```sql
SELECT mean("value") FROM "logins" WHERE "hostname" =~ /^[[host]]$/ AND $timeFilter GROUP BY time($__interval), "hostname"
```
Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. When the **Multi-value** or **Include all value** options are enabled, Grafana converts the labels from plain text to a regex compatible string. Which means you have to use `=~` instead of `=`.
Example dashboard:
[InfluxDB Templated Dashboard](https://play.grafana.org/dashboard/db/influxdb-templated)
## Query variables
If you add a query template variable, then you can write an InfluxDB exploration (metadata) query. These queries can return things like measurement names, key names or key values. For more information, refer to [Add query variable]({{< relref "../../variables/variable-types/add-query-variable.md" >}}).
For example, you can have a variable that contains all values for tag `hostname` if you specify a query like this in the query variable **Query**.
```sql
SHOW TAG VALUES WITH KEY = "hostname"
```
## Chained or nested variables
You can also create nested variables, sometimes called [chained variables]({{< relref "../../variables/variable-types/chained-variables.md" >}}).
For example, if you had another variable, for example `region`. Then you could have the hosts variable only show hosts from the current selected region with a query like this:
```sql
SHOW TAG VALUES WITH KEY = "hostname" WHERE region = '$region'
```
You can fetch key names for a given measurement.
```sql
SHOW TAG KEYS [FROM <measurement_name>]
```
If you have a variable with key names you can use this variable in a group by clause. This will allow you to change group by using the variable list at the top of the dashboard.
### Ad hoc filters variable
InfluxDB supports the special `Ad hoc filters` variable type. This variable allows you to specify any number of key/value filters on the fly. These filters are automatically applied to all your InfluxDB queries.
For more information, refer to [Add ad hoc filters]({{< relref "../../variables/variable-types/add-ad-hoc-filters.md" >}}).

View File

@@ -0,0 +1,67 @@
+++
title = "Provision InfluxDB"
description = "Guide for provisioning InfluxDB"
weight = 400
+++
# Provision InfluxDB
You can configure data sources using config files with Grafana's provisioning system. You can read more about how it works and all the settings you can set for data sources on the [provisioning docs page]({{< relref "../../administration/provisioning/#datasources" >}}).
Here are some provisioning examples for this data source.
## InfluxDB 1.x example
```yaml
apiVersion: 1
datasources:
- name: InfluxDB_v1
type: influxdb
access: proxy
database: site
user: grafana
password: grafana
url: http://localhost:8086
jsonData:
httpMode: GET
```
## InfluxDB 2.x for Flux example
```yaml
apiVersion: 1
datasources:
- name: InfluxDB_v2_Flux
type: influxdb
access: proxy
url: http://localhost:8086
secureJsonData:
token: token
jsonData:
version: Flux
organization: organization
defaultBucket: bucket
tlsSkipVerify: true
```
## InfluxDB 2.x for InfluxQl example
```yaml
apiVersion: 1
datasources:
- name: InfluxDB_v2_InfluxQL
type: influxdb
access: proxy
url: http://localhost:8086
# This database should be mapped to a bucket
database: site
jsonData:
httpMode: GET
httpHeaderName1: 'Authorization'
secureJsonData:
httpHeaderValue1: 'Token <token>'
```

View File

@@ -33,17 +33,17 @@ This is a configuration for the [trace to logs feature]({{< relref "../explore/t
- **Data source -** Target data source.
- **Tags -** The tags that will be used in the Loki query. Default is `'cluster', 'hostname', 'namespace', 'pod'`.
![Trace to logs settings](/img/docs/explore/trace-to-logs-settings-7-4.png "Screenshot of the trace to logs settings")
![Trace to logs settings](/static/img/docs/explore/trace-to-logs-settings-7-4.png "Screenshot of the trace to logs settings")
## Query traces
You can query and display traces from Jaeger via [Explore]({{< relref "../explore/_index.md" >}}).
{{< docs-imagebox img="/img/docs/v70/jaeger-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Jaeger query editor" >}}
{{< figure src="/static/img/docs/v70/jaeger-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Jaeger query editor" >}}
The Jaeger query editor allows you to query by trace ID directly or selecting a trace from trace selector. To query by trace ID, insert the ID into the text input.
{{< docs-imagebox img="/img/docs/v70/jaeger-query-editor-open.png" class="docs-image--no-shadow" caption="Screenshot of the Jaeger query editor with trace selector expanded" >}}
{{< figure src="/static/img/docs/v70/jaeger-query-editor-open.png" class="docs-image--no-shadow" caption="Screenshot of the Jaeger query editor with trace selector expanded" >}}
Use the trace selector to pick particular trace from all traces logged in the time range you have selected in Explore. The trace selector has three levels of nesting:
@@ -54,3 +54,35 @@ Use the trace selector to pick particular trace from all traces logged in the ti
## Linking Trace ID from logs
You can link to Jaeger trace from logs in Loki by configuring a derived field with internal link. See the [Derived fields]({{< relref "loki.md#derived-fields" >}}) section in the [Loki data source]({{< relref "loki.md" >}}) documentation for details.
## Configure the data source with provisioning
You can set up the data source via configuration files with Grafanas provisioning system. Refer to [provisioning docs page]({{< relref "../administration/provisioning/#datasources" >}}) for information on various settings and how it works.
Here is an example with basic auth and trace-to-logs field.
```yaml
apiVersion: 1
datasources:
- name: Jaeger
type: jaeger
uid: jaeger-spectra
access: proxy
url: http://localhost:16686/
basicAuth: true
basicAuthUser: my_user
editable: true
isDefault: false
jsonData:
tracesToLogs:
# Field with internal link pointing to a Loki data source in Grafana.
# datasourceUid value must match the `datasourceUid` value of the Loki data source.
datasourceUid: loki
tags:
- cluster
- hostname
- namespace
- pod
secureJsonData:
basicAuthPassword: my_password

View File

@@ -8,29 +8,23 @@ weight = 800
# Using Loki in Grafana
> BETA: Querying Loki data requires Grafana's Explore section.
> Grafana v6.x comes with Explore enabled by default.
> In Grafana v5.3.x and v5.4.x. you need to enable Explore manually.
> Viewing Loki data in dashboard panels is supported in Grafana v6.4+.
Grafana ships with built-in support for Loki, an open source log aggregation system by Grafana Labs. This topic explains options, variables, querying, and other options specific to this data source.
Grafana ships with built-in support for Loki, Grafana's log aggregation system.
Just add it as a data source and you are ready to query your log data in [Explore]({{< relref "../explore" >}}).
Add it as a data source and you are ready to build dashboards or query your log data in [Explore]({{< relref "../explore" >}}). Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
## Adding the data source
> **Note:** To troubleshoot configuration and other issues, check the log file located at /var/log/grafana/grafana.log on Unix systems or in <grafana_install_dir>/data/log on other platforms and manual installations.
1. Open Grafana and make sure you are logged in.
1. In the side menu under the `Configuration` link you should find a link named `Data Sources`.
1. Click the `Add data source` button at the top.
1. Select `Loki` from the list of data sources.
## Loki settings
> **Note:** If you're not seeing the `Data Sources` link in your side menu it means that your current user does not have the `Admin` role for the current organization.
To access Loki settings, click the **Configuration** (gear) icon, then click **Data Sources**, and then click the Loki data source.
| Name | Description |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name` | The data source name. This is how you refer to the data source in panels, queries, and Explore. |
| `Default` | Default data source means that it will be pre-selected for new panels. |
| `URL` | The URL of the Loki instance, e.g., `http://localhost:3100` |
| `Maximum lines` | Upper limit for number of log lines returned by Loki (default is 1000). Decrease if your browser is sluggish when displaying logs in Explore. |
| Name | Description |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name` | The data source name. This is how you refer to the data source in panels, queries, and Explore. |
| `Default` | Default data source means that it will be pre-selected for new panels. |
| `URL` | The URL of the Loki instance, e.g., `http://localhost:3100` |
| `Whitelisted Cookies` | Grafana Proxy deletes forwarded cookies by default. Specify cookies by name that should be forwarded to the data source. |
| `Maximum lines` | Upper limit for the number of log lines returned by Loki (default is 1000). Lower this limit if your browser is sluggish when displaying logs in Explore. |
### Derived fields
@@ -40,7 +34,7 @@ The Derived Fields configuration allows you to:
- Add a link that uses the value of the field.
You can use this functionality to link to your tracing backend directly from your logs, or link to a user profile page if a userId is present in the log line. These links appear in the [log details](/explore/logs-integration/#labels-and-detected-fields).
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields.png" class="docs-image--no-shadow" caption="Screenshot of the derived fields configuration" >}}
Each derived field consists of:
- **Name -** Shown in the log details as a label.
@@ -49,97 +43,73 @@ Each derived field consists of:
- **Internal link -** Select if the link is internal or external. In case of internal link, a data source selector allows you to select the target data source. Only tracing data sources are supported.
You can use a debug section to see what your fields extract and how the URL is interpolated. Click **Show example log message** to show the text area where you can enter a log message.
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields_debug.png" class="docs-image--no-shadow" caption="Screenshot of the derived fields debugging" >}}
{{< figure src="/static/img/docs/v75/loki_derived_fields_settings.png" class="docs-image--no-shadow" max-width="800px" caption="Screenshot of the derived fields debugging" >}}
The new field with the link shown in log details:
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields_detail.png" class="docs-image--no-shadow" caption="Screenshot of the derived field in log detail" >}}
{{< figure src="/static/img/docs/explore/detected-fields-link-7-4.png" max-width="800px" caption="Detected fields link in Explore" >}}
## Querying Logs
## Loki query editor
Querying and displaying log data from Loki is available via [Explore]({{< relref "../explore" >}}), and with the [logs panel]({{< relref "../panels/visualizations/logs-panel.md" >}}) in dashboards. Select the Loki data source, and then enter a [LogQL](https://grafana.com/docs/loki/latest/logql/) query to display your logs.
You can use the Loki query editor to create log and metric queries.
### Log Queries
| Name | Description |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Query expression` | Loki query expression, refer to the [LogQL documentation](https://grafana.com/docs/loki/latest/logql/) for more information. |
| `Query type` | Choose the type of query to run. The instant type queries against a single point in time. We are using "To" time from the time range. The range type queries over the selected range of time. |
| `Line limit` | Upper limit for number of log lines returned by query. The default is the Maximum lines limit set in Loki settings. |
| `Legend` | Available only in Dashboard. Controls the name of the time series, using name or pattern. For example `{{hostname}}` is replaced with the label value for the label `hostname`. |
A log query consists of two parts: **log stream selector**, and a **search expression**. For performance reasons you need to start by choosing a log stream by selecting a log label.
### Log browser
The Logs Explorer (the `Log labels` button) next to the query field shows a list of labels of available log streams. An alternative way to write a query is to use the query field's autocomplete - you start by typing a left curly brace `{` and the autocomplete menu will suggest a list of labels. Press the `Enter` key to execute the query.
With Loki log browser you can easily navigate trough your list of labels and values and construct the query of your choice. Log browser has multi-step selection:
1. Choose the labels you would like to consider for your search.
2. Pick the values for selected labels. Log browser supports facetting and therefore it shows you only possible label combinations.
3. Choose the type of query - logs query or rate metrics query. Additionally, you can also validate selector.
Once the result is returned, the log panel shows a list of log rows and a bar chart where the x-axis shows the time and the y-axis shows the frequency/count.
{{< figure src="/static/img/docs/v75/loki_log_browser.png" class="docs-image--no-shadow" max-width="800px" caption="Screenshot of the derived fields debugging" >}}
<div class="medium-6 columns">
<video width="800" height="500" controls>
<source src="/assets/videos/explore_loki.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
## Querying with Loki
<br />
There are two types of LogQL queries:
### Log Stream Selector
- Log queries - Return the contents of log lines.
- Metric queries - Extend log queries and calculate sample values based on the content of logs from a log query.
For the label part of the query expression, wrap it in curly braces `{}` and then use the key value syntax for selecting labels. Multiple label expressions are separated by a comma:
### Log queries
`{app="mysql",name="mysql-backup"}`
Querying and displaying log data from Loki is available via [Explore]({{< relref "../explore" >}}), and with the [logs panel]({{< relref "../panels/visualizations/logs-panel.md" >}}) in dashboards. Select the Loki data source, and then enter a [LogQL](https://grafana.com/docs/loki/latest/logql/#log-queries) query to display your logs.
The following label matching operators are currently supported:
A log query consists of two parts: log stream selector, and a log pipeline. For performance reasons begin by choosing a log stream by selecting a log label.
- `=` exactly equal.
- `!=` not equal.
- `=~` regex-match.
- `!~` do not regex-match.
### Log context
Examples:
When using a search expression as detailed above, you can retrieve the context surrounding your filtered results.
By clicking the `Show Context` link on the filtered rows, you'll be able to investigate the log messages that came before and after the
log message you're interested in.
- `{name=~"mysql.+"}`
- `{name!~"mysql.+"}`
The [same rules that apply for Prometheus Label Selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#instant-vector-selectors) apply for Loki Log Stream Selectors.
Another way to add a label selector is in the table section. Click **Filter** beside a label to add the label to the query expression. This even works for multiple queries and will add the label selector to each query.
### Search Expression
After writing the Log Stream Selector, you can filter the results further by writing a search expression. The search expression can be just text or a regex expression.
Example queries:
- `{job="mysql"} |= "error"`
- `{name="kafka"} |~ "tsdb-ops.*io:2003"`
- `{instance=~"kafka-[23]",name="kafka"} != "kafka.server:type=ReplicaManager"`
Filter operators can be chained and will sequentially filter down the expression. The resulting log lines will satisfy every filter.
**Example**
`{job="mysql"} |= "error" != "timeout"`
The following filter types are currently supported:
- `|=` line contains string.
- `!=` line doesn't contain string.
- `|~` line matches regular expression.
- `!~` line does not match regular expression.
> **Note:** For more details about LogQL, Loki's query language, refer to the [Loki LogQL](https://grafana.com/docs/loki/latest/logql/)
## Live tailing
### Live tailing
Loki supports Live tailing which displays logs in real-time. This feature is supported in [Explore]({{< relref "../explore/#loki-specific-features" >}}).
Note that Live Tailing relies on two Websocket connections: one between the browser and the Grafana server, and another between the Grafana server and the Loki server. If you run any reverse proxies, please configure them accordingly. The following example for Apache2 can be used for proxying between the browser and the Grafana server:
```
ProxyPassMatch "^/(api/datasources/proxy/\d+/loki/api/v1/tail)" "ws://127.0.0.1:3000/$1"
```
The following example shows basic NGINX proxy configuration. It assumes that the Grafana server is available at `http://localhost:3000/`, Loki server is running locally without proxy, and your external site uses HTTPS. If you also host Loki behind NGINX proxy, then you might want to repeat the following configuration for Loki as well.
In the `http` section of NGINX configuration, add the following map definition:
```
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
```
In your `server` section, add the following configuration:
```
location ~ /(api/datasources/proxy/\d+/loki/api/v1/tail) {
proxy_pass http://localhost:3000$request_uri;
@@ -162,13 +132,9 @@ In your `server` section, add the following configuration:
> **Note:** This feature is only available in Grafana v6.3+.
## Log Context
## Metric queries
When using a search expression as detailed above, you now have the ability to retrieve the context surrounding your filtered results.
By clicking the `Show Context` link on the filtered rows, you'll be able to investigate the log messages that came before and after the
log message you're interested in.
> **Note:** This feature is only available in Grafana v6.3+
LogQL supports wrapping a log query with functions that allow for creating metrics out of the logs. See [LogQL](https://grafana.com/docs/loki/latest/logql/#metric-queries) documentation on how to create and use metrics queries.
## Templating
@@ -176,12 +142,20 @@ Instead of hard-coding things like server, application and sensor name in your m
Check out the [Templating]({{< relref "../variables/_index.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
## Query variable
Variable of the type _Query_ allows you to query Loki for a list labels or label values. The Loki data source plugin
provides the following functions you can use in the `Query` input field.
| Name | Description |
| --------------------- | --------------------------------------------------------------- |
| `label_names()` | Returns a list of label names. |
| `label_values(label)` | Returns a list of label values for the `label` in every metric. |
## Annotations
You can use any non-metric Loki query as a source for [annotations]({{< relref "../dashboards/annotations" >}}). Log content will be used as annotation text and your log stream labels as tags, so there is no need for additional mapping.
> **Note:** Annotations for Loki are only available in Grafana v6.4+
## Configure the data source with provisioning
You can set up the data source via config files with Grafana's provisioning system.
@@ -224,12 +198,12 @@ datasources:
matcherRegex: "traceID=(\\w+)"
name: TraceID
# url will be interpreted as query for the datasource
url: "$${__value.raw}"
url: '$${__value.raw}'
# Field with external link.
- matcherRegex: "traceID=(\\w+)"
name: TraceID
url: "http://localhost:16686/trace/$${__value.raw}"
url: 'http://localhost:16686/trace/$${__value.raw}'
```
Here's an example of a Jaeger data source corresponding to the above example. Note that the Jaeger `uid` value does match the Loki `datasourceUid` value.

View File

@@ -10,13 +10,15 @@ weight = 900
Grafana ships with a built-in Microsoft SQL Server (MS SQL) data source plugin that allows you to query and visualize data from any Microsoft SQL Server 2005 or newer, including Microsoft Azure SQL Database. This topic explains options, variables, querying, and other options specific to the MS SQL data source. Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana. Only users with the organization admin role can add data sources.
### Data source options
## Data source options
To access data source settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the data source.
| Name | Description |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `Name` | The data source name. This is how you refer to the data source in panels and queries. |
| `Default` | Default data source means that it will be pre-selected for new panels. |
| `Host` | The IP address/hostname and optional port of your MS SQL instance. If port is omitted, default 1433 will be used. |
| `Host` | The IP address/hostname and optional port of your MS SQL instance. If the port is omitted, the driver default will be used (0). |
| `Database` | Name of your MS SQL database. |
| `Authentication` | Authentication mode. Either using SQL Server Authentication or Windows Authentication (single sign on for Windows users). |
| `User` | Database user's login/username |
@@ -67,7 +69,7 @@ If possible, we recommend you to use the latest service pack available for optim
## Query Editor
{{< docs-imagebox img="/img/docs/v51/mssql_query_editor.png" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/v51/mssql_query_editor.png" class="docs-image--no-shadow" >}}
You will find the MSSQL query editor in the metrics tab in Graph, Singlestat or Table panel's edit mode. You enter edit mode by clicking the
panel title, then edit. The editor allows you to define a SQL query to select data to be visualized.
@@ -143,7 +145,7 @@ SELECT
Query editor with example query:
{{< docs-imagebox img="/img/docs/v51/mssql_table_query.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/v51/mssql_table_query.png" max-width="500px" class="docs-image--no-shadow" >}}
The query:
@@ -162,7 +164,7 @@ FROM
The resulting table panel:
{{< docs-imagebox img="/img/docs/v51/mssql_table_result.png" max-width="1489px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/v51/mssql_table_result.png" max-width="1489px" class="docs-image--no-shadow" >}}
## Time series queries
@@ -197,7 +199,7 @@ INSERT metric_values (time, measurement, valueOne, valueTwo) VALUES('2018-03-15
```
{{< docs-imagebox img="/img/docs/v51/mssql_time_series_one.png" class="docs-image--no-shadow docs-image--right" >}}
{{< figure src="/static/img/docs/v51/mssql_time_series_one.png" class="docs-image--no-shadow docs-image--right" >}}
**Example with one `value` and one `metric` column.**
@@ -217,7 +219,7 @@ When the above query is used in a graph panel, it will produce two series named
<div class="clearfix"></div>
{{< docs-imagebox img="/img/docs/v51/mssql_time_series_two.png" class="docs-image--no-shadow docs-image--right" >}}
{{< figure src="/static/img/docs/v51/mssql_time_series_two.png" class="docs-image--no-shadow docs-image--right" >}}
**Example with multiple `value` columns:**
@@ -237,7 +239,7 @@ When the above query is used in a graph panel, it will produce two series named
<div class="clearfix"></div>
{{< docs-imagebox img="/img/docs/v51/mssql_time_series_three.png" class="docs-image--no-shadow docs-image--right" >}}
{{< figure src="/static/img/docs/v51/mssql_time_series_three.png" class="docs-image--no-shadow docs-image--right" >}}
**Example using the \$\_\_timeGroup macro:**
@@ -261,7 +263,7 @@ Any two series lacking a value in a three-minute window will render a line betwe
<div class="clearfix"></div>
{{< docs-imagebox img="/img/docs/v51/mssql_time_series_four.png" class="docs-image--no-shadow docs-image--right" >}}
{{< figure src="/static/img/docs/v51/mssql_time_series_four.png" class="docs-image--no-shadow docs-image--right" >}}
**Example using the \$\_\_timeGroup macro with fill parameter set to zero:**
@@ -438,7 +440,7 @@ Please note that any macro function will not work inside a stored procedure.
### Examples
{{< docs-imagebox img="/img/docs/v51/mssql_metrics_graph.png" class="docs-image--no-shadow docs-image--right" >}}
{{< figure src="/static/img/docs/v51/mssql_metrics_graph.png" class="docs-image--no-shadow docs-image--right" >}}
For the following examples, the database table is defined in [Time series queries](#time-series-queries). Let's say that we want to visualize four series in a graph panel, such as all combinations of columns `valueOne`, `valueTwo` and `measurement`. Graph panel to the right visualizes what we want to achieve. To solve this, we need to use two queries:
**First query:**

View File

@@ -71,7 +71,7 @@ You can use wildcards (`*`) in place of database or table if you want to grant
> Only available in Grafana v5.4+.
{{< docs-imagebox img="/img/docs/v54/mysql_query_still.png" class="docs-image--no-shadow" animated-gif="/img/docs/v54/mysql_query.gif" >}}
{{< figure src="/static/img/docs/v54/mysql_query_still.png" class="docs-image--no-shadow" animated-gif="/static/img/docs/v54/mysql_query.gif" >}}
You find the MySQL query editor in the metrics tab in a panel's edit mode. You enter edit mode by clicking the
panel title, then edit.
@@ -154,7 +154,7 @@ If the `Format as` query option is set to `Table` then you can basically do any
Query editor with example query:
{{< docs-imagebox img="/img/docs/v45/mysql_table_query.png" >}}
{{< figure src="/static/img/docs/v45/mysql_table_query.png" >}}
The query:
@@ -172,7 +172,7 @@ You can control the name of the Table panel columns by using regular `as ` SQL c
The resulting table panel:
![](/img/docs/v43/mysql_table.png)
![](/static/img/docs/v43/mysql_table.png)
## Time series queries

View File

@@ -30,7 +30,7 @@ Open a graph in edit mode by click the title. Query editor will differ if the da
In the former version, only tags can be used to query OpenTSDB. But in the latter version, filters as well as tags
can be used to query opentsdb. Fill Policy is also introduced in OpenTSDB 2.2.
![](/img/docs/v43/opentsdb_query_editor.png)
![](/static/img/docs/v43/opentsdb_query_editor.png)
> **Note:** While using OpenTSDB 2.2 data source, make sure you use either Filters or Tags as they are mutually exclusive. If used together, might give you weird results.

View File

@@ -6,18 +6,13 @@ aliases = ["/docs/grafana/latest/features/datasources/postgres/"]
weight = 1200
+++
# Using PostgreSQL in Grafana
# PostgreSQL data source
Grafana ships with a built-in PostgreSQL data source plugin that allows you to query and visualize data from a PostgreSQL compatible database.
Grafana ships with a built-in PostgreSQL data source plugin that allows you to query and visualize data from a PostgreSQL compatible database. This topic explains options, variables, querying, and other options specific to this data source. For instructions about how to add a data source to Grafana, refer to [Add a data source]({{< relref "add-a-data-source.md" >}}). Only users with the organization admin role can add data sources.
## Adding the data source
## PostgreSQL settings
1. Open the side menu by clicking the Grafana icon in the top header.
1. In the side menu under the `Configuration` icon you should find a link named `Data Sources`.
1. Click the `+ Add data source` button in the top header.
1. Select *PostgreSQL* from the *Type* dropdown.
### Data source options
To access PostgreSQL settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Prometheus data source.
Name | Description
----------------- | -------------
@@ -27,7 +22,7 @@ Name | Description
`Database` | Name of your PostgreSQL database.
`User` | Database user's login/username
`Password` | Database user's password
`SSL Mode` | Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server. When SSL Mode is disabled, SSL Method and Auth Details would not be visible.
`SSL Mode` | Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server. When SSL Mode is disabled, SSL Method and Auth Details would not be visible.
`SSL Auth Details Method` | Determines whether the SSL Auth details will be configured as a file path or file content. Grafana v7.5+
`SSL Auth Details Value` | File path or file content of SSL root certificate, client certificate and client key
`Max open` | The maximum number of open connections to the database, default `unlimited` (Grafana v5.4+).
@@ -73,7 +68,7 @@ Make sure the user does not get any unwanted privileges from the public role.
## Query editor
{{< docs-imagebox img="/img/docs/v53/postgres_query_still.png" class="docs-image--no-shadow" animated-gif="/img/docs/v53/postgres_query.gif" >}}
{{< figure src="/static/img/docs/v53/postgres_query_still.png" class="docs-image--no-shadow" animated-gif="/static/img/docs/v53/postgres_query.gif" >}}
You find the PostgreSQL query editor in the metrics tab in Graph or Singlestat panel's edit mode. You enter edit mode by clicking the
panel title, then edit.
@@ -103,7 +98,7 @@ The available functions in the query editor depend on the PostgreSQL version you
If you use aggregate functions you need to group your resultset. The editor will automatically add a `GROUP BY time` if you add an aggregate function.
The editor tries to simplify and unify this part of the query. For example:<br>
![](/img/docs/v53/postgres_select_editor.png)<br>
![](/static/img/docs/v53/postgres_select_editor.png)<br>
The above will generate the following PostgreSQL `SELECT` clause:
@@ -165,7 +160,7 @@ If the `Format as` query option is set to `Table` then you can basically do any
Query editor with example query:
![](/img/docs/v46/postgres_table_query.png)
![](/static/img/docs/v46/postgres_table_query.png)
The query:
@@ -184,7 +179,7 @@ You can control the name of the Table panel columns by using regular `as ` SQL c
The resulting table panel:
![postgres table](/img/docs/v46/postgres_table.png)
![postgres table](/static/img/docs/v46/postgres_table.png)
## Time series queries
@@ -415,6 +410,7 @@ datasources:
postgresVersion: 903 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
timescaledb: false
```
>**Note:** In the above code, the `postgresVersion` value of `10` refers to version PotgreSQL 10 and above.
If you encounter metric request errors or other issues:
- Make sure your data source YAML file parameters exactly match the example. This includes parameter names and use of quotation marks.

View File

@@ -23,7 +23,8 @@ To access Prometheus settings, hover your mouse over the **Configuration** (gear
| `Basic Auth` | Enable basic authentication to the Prometheus data source. |
| `User` | User name for basic authentication. |
| `Password` | Password for basic authentication. |
| `Scrape interval` | Set this to the typical scrape and evaluation interval configured in Prometheus. Defaults to 15s. |
| `Scrape interval` | Set this to the typical scrape and evaluation interval configured in Prometheus. Defaults to 15s.
| `HTTP method` | Use either POST or GET HTTP method to query your data source. POST is the recommended and pre-selected method as it allows bigger queries. Change this to GET if you have a Prometheus version older than 2.1 or if POST requests are restricted in your network. |
| `Disable metrics lookup` | Checking this option will disable the metrics chooser and metric/label support in the query field's autocomplete. This helps if you have performance issues with bigger Prometheus instances. |
| `Custom Query Parameters` | Add custom parameters to the Prometheus query URL. For example `timeout`, `partial_response`, `dedup`, or `max_source_resolution`. Multiple parameters should be concatenated together with an '&amp;'. |
| `Label name` | Add the name of the field in the label object. |
@@ -38,8 +39,8 @@ Below you can find information and options for Prometheus query editor in dashbo
Open a graph in edit mode by clicking the title > Edit (or by pressing `e` key while hovering over panel).
{{< docs-imagebox img="/img/docs/v45/prometheus_query_editor_still.png"
animated-gif="/img/docs/v45/prometheus_query_editor.gif" >}}
{{< figure src="/static/img/docs/v45/prometheus_query_editor_still.png"
animated-gif="/static/img/docs/v45/prometheus_query_editor.gif" >}}
| Name | Description |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -187,6 +188,7 @@ datasources:
type: prometheus
# Access mode - proxy (server in the UI) or direct (browser in the UI).
access: proxy
httpMethod: POST
url: http://localhost:9090
jsonData:
exemplarTraceIdDestinations:
@@ -210,13 +212,13 @@ To connect the Prometheus data source to Amazon Managed Service for Prometheus u
If you are running Grafana in an Amazon EKS cluster, follow the AWS guide to [Query using Grafana running in an Amazon EKS cluster](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-query-grafana-7.3.html).
## Exemplars
## Configuring exemplars
> **Note:** This feature is available in Prometheus 2.26+ and Grafana 7.4+.
Grafana 7.4 and later versions have the capability to show exemplars data alongside a metric both in Explore and Dashboards.
Exemplars are a way to associate higher cardinality metadata from a specific event with traditional timeseries data.
{{< docs-imagebox img="/img/docs/v74/exemplars.png" class="docs-image--no-shadow" caption="Screenshot showing the detail window of an Exemplar" >}}
{{< figure src="/static/img/docs/v74/exemplars.png" class="docs-image--no-shadow" caption="Screenshot showing the detail window of an Exemplar" >}}
Configure Exemplars in the data source settings by adding external or internal links.
{{< docs-imagebox img="/img/docs/v74/exemplars-setting.png" class="docs-image--no-shadow" caption="Screenshot of the Exemplars configuration" >}}
{{< figure src="/static/img/docs/v74/exemplars-setting.png" class="docs-image--no-shadow" caption="Screenshot of the Exemplars configuration" >}}

View File

@@ -18,7 +18,7 @@ To access Tempo settings, click the **Configuration** (gear) icon, then click **
| ------------ | --------------------------------------------------------------------------------------- |
| `Name` | The name using which you will refer to the data source in panels, queries, and Explore. |
| `Default` | The default data source will be pre-selected for new panels. |
| `URL` | The URL of the Tempo instance, e.g., `http://localhost:16686` |
| `URL` | The URL of the Tempo instance, e.g., `http://tempo` |
| `Basic Auth` | Enable basic authentication to the Tempo data source. |
| `User` | User name for basic authentication. |
| `Password` | Password for basic authentication. |
@@ -32,14 +32,14 @@ This is a configuration for the [trace to logs feature]({{< relref "../explore/t
- **Data source -** Target data source.
- **Tags -** The tags that will be used in the Loki query. Default is `'cluster', 'hostname', 'namespace', 'pod'`.
![Trace to logs settings](/img/docs/explore/trace-to-logs-settings-7-4.png "Screenshot of the trace to logs settings")
![Trace to logs settings](/static/img/docs/explore/trace-to-logs-settings-7-4.png 'Screenshot of the trace to logs settings')
## Query traces
You can query and display traces from Tempo via [Explore]({{< relref "../explore/_index.md" >}}).
To query a particular trace, insert its trace ID into the query text input.
{{< docs-imagebox img="/img/docs/v73/tempo-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Tempo query editor" >}}
{{< figure src="/static/img/docs/v73/tempo-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Tempo query editor" >}}
## Linking Trace ID from logs

View File

@@ -24,14 +24,14 @@ The `TestData DB` data source is not enabled by default. To enable it:
Once `TestData DB` is enabled, you can use it as a data source in any metric panel.
![](/img/docs/v41/test_data_add.png)
![](/static/img/docs/v41/test_data_add.png)
## CSV
The comma separated values scenario is the most powerful one since it lets you create any kind of graph you like.
Once you provided the numbers, `TestData DB` distributes them evenly based on the time range of your query.
![](/img/docs/v41/test_data_csv_example.png)
![](/static/img/docs/v41/test_data_csv_example.png)
## Dashboards

View File

@@ -33,17 +33,17 @@ This is a configuration for the [trace to logs feature]({{< relref "../explore/t
- **Data source -** Target data source.
- **Tags -** The tags that will be used in the Loki query. Default is `'cluster', 'hostname', 'namespace', 'pod'`.
![Trace to logs settings](/img/docs/explore/trace-to-logs-settings-7-4.png "Screenshot of the trace to logs settings")
![Trace to logs settings](/static/img/docs/explore/trace-to-logs-settings-7-4.png "Screenshot of the trace to logs settings")
## Query traces
Querying and displaying traces from Zipkin is available via [Explore]({{< relref "../explore" >}}).
{{< docs-imagebox img="/img/docs/v70/zipkin-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Zipkin query editor" >}}
{{< figure src="/static/img/docs/v70/zipkin-query-editor.png" class="docs-image--no-shadow" caption="Screenshot of the Zipkin query editor" >}}
The Zipkin query editor allows you to query by trace ID directly or selecting a trace from trace selector. To query by trace ID, insert the ID into the text input.
{{< docs-imagebox img="/img/docs/v70/zipkin-query-editor-open.png" class="docs-image--no-shadow" caption="Screenshot of the Zipkin query editor with trace selector expanded" >}}
{{< figure src="/static/img/docs/v70/zipkin-query-editor-open.png" class="docs-image--no-shadow" caption="Screenshot of the Zipkin query editor with trace selector expanded" >}}
Use the trace selector to pick particular trace from all traces logged in the time range you have selected in Explore. The trace selector has three levels of nesting:

View File

@@ -3,98 +3,96 @@ title = "Contributor License Agreement (CLA)"
description = "Contributor License Agreement (CLA)"
aliases = ["/docs/grafana/latest/project/cla", "docs/contributing/cla.html"]
+++
# Grafana Labs Contributor License Agreement
Thank you for your interest in contributing to Grafana Labs ("We" or "Us").
Grafana Labs
Software Grant and Contributor License Agreement ("Agreement")
This agreement is based on the Apache Software Foundation Contributor License Agreement.
(v r190612)
This contributor agreement ("Agreement") documents the rights granted by contributors to Us.
To make this document effective, please sign it following the instructions at
[cla-assistant](https://cla-assistant.io/grafana/grafana). This is a legally binding document,
so please read it carefully before agreeing to it. The Agreement may cover more than
one software project managed by Us.
Thank you for your interest in software projects stewarded by Raintank, Inc. dba Grafana Labs (“Grafana Labs”). In order to clarify the intellectual property license
granted with Contributions from any person or entity, Grafana Labs
must have a Contributor License Agreement (CLA) on file that has been
agreed to by each Contributor, indicating agreement to the license terms
below. This license is for your protection as a Contributor as well
as the protection of Grafana Labs and its users; it does not change
your rights to use your own Contributions for any other purpose.
This Agreement allows an individual to contribute to Grafana Labs on that individuals own behalf, or an entity (the "Corporation") to
submit Contributions to Grafana Labs, to authorize Contributions
submitted by its designated employees to Grafana Labs, and to grant
copyright and patent licenses thereto.
## 1. Definitions
"You" (Individual) means the individual who Submits a Contribution to Us.
"You" (Entity) means any Legal Entity on behalf of whom a Contribution has been received by Us. "Legal Entity" means an entity which is not a natural person. "Affiliates" means other Legal Entities that control, are controlled by, or under common control with that Legal Entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities which vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity.
"Contribution" means any work of authorship that is Submitted by You to Us in which You own or assert ownership of the Copyright. If You do not own the Copyright in the entire work of authorship, you must notify us at contact@grafana.com before Submitting such a Contribution.
"Copyright" means all rights protecting works of authorship owned or controlled by You [or Your Affiliates], including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.
"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.
"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
"Submission Date" means the date on which You Submit a Contribution to Us.
"Effective Date" means the date You execute this Agreement or the date You first Submit a Contribution to Us, whichever is earlier.
"Media" means any portion of a Contribution which is not software.
## 2. Grant of Rights
### 2.1 Copyright License
(a) You retain ownership of the Copyright in Your Contribution and have the same rights to use or license the Contribution which You would have had without entering into the Agreement.
(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable license under the Copyright covering the Contribution, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.3.
### 2.2 Patent License
For patent claims including, without limitation, method, process, and apparatus claims which You [or Your Affiliates] own, control or have the right to grant, now or in the future, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable patent license, with the right to sublicense these rights to multiple tiers of sublicensees, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license is granted only to the extent that the exercise of the licensed rights infringes such patent claims; and provided that this license is conditioned upon compliance with Section 2.3.
### 2.3 Outbound License
As a condition on the grant of rights in Sections 2.1 and 2.2, We agree to license the Contribution only under the terms of the license or licenses which We are using on the Submission Date for the Material or any licenses which are approved by the Open Source Initiative on or after the Effective Date, including both permissive and copyleft licenses, whether or not such licenses are subsequently disapproved (including any right to adopt any future version of a license if permitted).
In addition, We may use the following licenses for Media in the Contribution: GNU Free Documentation License v1.3, Creative Commons Attribution 3.0, or Creative Commons Attribution No Derivatives 3.0 (including any right to adopt any future version of a license if permitted).
2.4 Moral Rights. If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect.
2.5 Our Rights. You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate.
2.6 Reservation of Rights. Any rights not expressly [assigned or] licensed under this section are expressly reserved by You.
## 3. Agreement
You confirm that:
(a) You have the legal authority to enter into this Agreement.
(b) You [or Your Affiliates] own the Copyright and patent claims covering the Contribution which are required to grant the rights under Section 2.
\(c)(Individual) The grant of rights under Section 2 does not violate any grant of rights which You have made to third parties, including Your employer. If You are an employee, You have had Your employer approve this Agreement or sign the Entity version of this document. If You are less than eighteen years old, please have Your parents or guardian sign the Agreement.
\(c)(Entity) The grant of rights under Section 2 does not violate any grant of rights which You or Your Affiliates have made to third parties.
## 4. Disclaimer
EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US [AND BY US TO YOU]. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.
## 5. Consequential Damage Waiver
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU [OR US] BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.
## 6. Miscellaneous
6.1 This Agreement will be governed by and construed in accordance with the laws of New York State, United States excluding its conflicts of law provisions. Under certain circumstances, the governing law in this section might be superseded by the United Nations Convention on Contracts for the International Sale of Goods ("UN Convention") and the parties intend to avoid the application of the UN Convention to this Agreement and, thus, exclude the application of the UN Convention in its entirety to this Agreement.
6.2 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings.
6.3 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement.
6.4 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety.
6.5 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.
### Sign using CLA-Assistant
[https://cla-assistant.io/grafana/grafana](https://cla-assistant.io/grafana/grafana)
<br>
<br>
<br>
This CLA agreement is based on the [Harmony Contributor Agreement Template (combined)](http://www.harmonyagreements.org/agreements.html), [Creative Commons Attribution 3.0 Unported License](https://creativecommons.org/licenses/by/3.0/)
You accept and agree to the following terms and conditions for Your
present and future Contributions submitted to Grafana Labs. Except
for the license granted herein to Grafana Labs and recipients of
software distributed by Grafana Labs, You reserve all right, title,
and interest in and to Your Contributions.
1. Definitions.
"You" (or "Your") shall mean the copyright owner or legal entity
authorized by the copyright owner that is making this Agreement
with Grafana Labs. For legal entities, the entity making a
Contribution and all other entities that control, are controlled by,
or are under common control with that entity are considered to be a
single Contributor. For the purposes of this definition, "control"
means (i) the power, direct or indirect, to cause the direction or
management of such entity, whether by contract or otherwise, or
(ii) ownership of fifty percent (50%) or more of the outstanding
shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean any work, as well as
any modifications or additions to an existing work, that is intentionally
submitted by You to Grafana Labs for inclusion in, or
documentation of, any of the products owned or managed by Grafana Labs (the "Work"). For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written
communication sent to Grafana Labs or its representatives,
including but not limited to communication on electronic mailing
lists, source code control systems (such as GitHub), and issue tracking systems
that are managed by, or on behalf of, Grafana Labs for the
purpose of discussing and improving the Work, but excluding
communication that is conspicuously marked or otherwise designated
in writing by You as "Not a Contribution."
2. Grant of Copyright License. Subject to the terms and conditions
of this Agreement, You hereby grant to Grafana Labs and to
recipients of software distributed by Grafana Labs a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare derivative works of,
publicly display, publicly perform, sublicense, and distribute
Your Contributions and such derivative works.
3. Grant of Patent License. Subject to the terms and conditions of
this Agreement, You hereby grant to Grafana Labs and to recipients
of software distributed by Grafana Labs a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as
stated in this section) patent license to make, have made, use,
offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by You that are necessarily infringed by Your Contribution(s)
alone or by combination of Your Contribution(s) with the Work to
which such Contribution(s) were submitted. If any entity institutes
patent litigation against You or any other entity (including a
cross-claim or counterclaim in a lawsuit) alleging that your
Contribution, or the Work to which you have contributed, constitutes
direct or contributory patent infringement, then any patent licenses
granted to that entity under this Agreement for that Contribution or
Work shall terminate as of the date such litigation is filed.
4. You represent that You are legally entitled to grant the above
license. If You are an individual, and if Your employer(s) has rights to intellectual property
that you create that includes Your Contributions, you represent
that You have received permission to make Contributions on behalf
of that employer, or that Your employer has waived such rights for
your Contributions to Grafana Labs. If You are a Corporation, any individual who makes a contribution from an account associated with You will be considered authorized to Contribute on Your behalf.
5. You represent that each of Your Contributions is Your original
creation (see section 7 for submissions on behalf of others).
6. You are not expected to provide support for Your Contributions,
except to the extent You desire to provide support. You may provide
support for free, for a fee, or not at all. Unless required by
applicable law or agreed to in writing, You provide Your
Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
OF ANY KIND, either express or implied, including, without
limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
7. Should You wish to submit work that is not Your original creation,
You may submit it to Grafana Labs separately from any
Contribution, identifying the complete details of its source and
of any license or other restriction (including, but not limited
to, related patents, trademarks, and license agreements) of which
you are personally aware, and conspicuously marking the work as
"Submitted on behalf of a third-party: [named here]".

View File

@@ -1,6 +1,6 @@
+++
title = "Add authentication for data source plugins"
aliases = ["/docs/grafana/latest/plugins/developing/auth-for-datasources/", "/docs/grafana/latest/developers/plugins/authentication/"]
aliases = ["/docs/grafana/latest/plugins/developing/auth-for-datasources/", "/docs/grafana/latest/developers/plugins/authentication/"]
+++
# Add authentication for data source plugins
@@ -11,7 +11,7 @@ When a user saves a password or any other sensitive data as a data source option
To minimize the amount of sensitive information sent to and from the browser, data source plugins can use the Grafana _data source proxy_. When using the data source proxy, any requests containing sensitive information go through the Grafana server. No sensitive data is sent to the browser after the data is saved.
Some data sources, like [Prometheus](https://grafana.com/docs/grafana/latest/features/datasources/prometheus/) and [InfluxDB](https://grafana.com/docs/grafana/latest/features/datasources/influxdb/), allow users to configure whether to use the data source proxy, through a setting called _access modes_.
Some data sources, like [Prometheus]({{< relref "../../datasources/prometheus.md" >}}) and [InfluxDB]({{< relref "../../datasources/influxdb" >}}), allow users to configure whether to use the data source proxy, through a setting called _access modes_.
## Add a proxy route to your plugin
@@ -131,6 +131,23 @@ To add URL parameters to proxied requests, use the `urlParams` property.
]
```
### Set body content
To set the body content and length of proxied requests, use the `body` property.
```json
"routes": [
{
"path": "example",
"url": "http://api.example.com",
"body": {
"username": "{{ .JsonData.username }}",
"password": "{{ .SecureJsonData.password }}"
}
}
]
```
### Enable token authentication
To enable token-based authentication for proxied requests, use the `tokenAuth` property.

View File

@@ -8,140 +8,26 @@ This guide explains how to add support for [annotations]({{< relref "../../dashb
This guide assumes that you're already familiar with how to [Build a data source plugin]({{< relref "/tutorials/build-a-data-source-plugin.md" >}}).
Data sources in Grafana can support [Annotations]({{< relref "../../dashboards/annotations.md" >}}) by handling _annotation queries_.
Handling annotation queries is similar to how you'd handle a metrics query. The difference is that instead of returning [data frames]({{< relref "data-frames.md" >}}), an annotation query returns _annotation events_.
> **Note:** Annotation support for React plugins was released in Grafana 7.2. To support earlier versions, refer to the [Add support for annotation for Grafana 7.1](https://grafana.com/docs/grafana/v7.1/developers/plugins/add-support-for-annotations/).
## Add annotations support to your data source
To add support for annotations to an existing data source, you need to:
To enable annotation support for your data source, add the following two lines of code. Grafana uses your default query editor for editing annotation queries.
- Enable annotations support
- Override the `annotationQuery` method
- Construct annotation events
1. Add `"annotations": true` to the [plugin.json]({{< relref "metadata.md" >}}) file to let Grafana know that your plugin supports annotations.
### Enable annotations support
**plugin.json**
Tell Grafana that your data source plugin can return annotations events by adding `"annotations": true` to the [plugin.json]({{< relref "metadata.md" >}}) file.
```json
{
"annotations": true
}
```
### Override the `annotationQuery` method
In `DataSource.ts`, override the `annotationQuery` method from `DataSourceApi`.
```ts
async annotationQuery(options: AnnotationQueryRequest<MyQuery>): Promise<AnnotationEvent[]> {
return [];
}
```
### Construct annotation events
Return an array of [AnnotationEvent]({{< relref "../../packages_api/data/annotationevent.md" >}}).
```ts
async annotationQuery(options: AnnotationQueryRequest<MyQuery>): Promise<AnnotationEvent[]> {
const events: AnnotationEvent[] = [];
const date = new Date();
const event: AnnotationEvent = {
time: date.valueOf(),
text: 'foo',
tags: ['bar'],
};
events.push(event);
return events;
}
```
## Region annotations
[Region annotations]({{< relref "../../dashboards/annotations.md#adding-regions-events" >}}) have a start and end time. This can for example be used to annotate maintenance windows or downtime.
To return a region annotation, set the `timeEnd`, and `isRegion` properties.
```ts
const regionEvent: AnnotationEvent = {
time: startDate.valueOf(),
timeEnd: endDate.valueOf(),
isRegion: true,
text: 'foo',
tags: ['bar'],
};
```
## Build a annotation query editor
Let users write custom annotation queries to only display the annotation events they care about, by adding a _query editor_. You only need to build a query editor if you want to let users query or filter annotations.
> **Note:** Annotation query editors have yet to receive support for React. The instructions here are given for Angular. Fortunately, you can run Angular even in a plugin otherwise written using React. This section will be updated once React support for annotation queries editors is available.
1. Create a file called `AnnotationQueryEditor.ts` in the `src` directory, with the following content.
```ts
export class AnnotationQueryEditor {
static templateUrl = 'partials/annotations.editor.html';
annotation: any;
constructor() {
this.annotation.queryText = this.annotation.queryText || '';
}
```json
{
"annotations": true
}
```
1. Create a directory called `partials` in the `src` directory.
2. In `datasource.ts`, override the `annotations` property from `DataSourceApi`. For the default behavior, you can set `annotations` to an empty object.
1. Create a file called `annotations.editor.html` in the `partials` directory you just created, with the following content.
```html
<div class="gf-form-group">
<div class="gf-form-inline">
<div class="gf-form gf-form--grow">
<input
class="gf-form-input"
placeholder="query expression"
ng-model="ctrl.annotation.queryText"
></input>
</div>
</div>
</div>
```
1. In your data source query—the one that extends [DataQuery]({{< relref "../../packages_api/data/dataquery.md" >}})—add the `queryText` property. The name of the property needs to correspond to the text in `ng-model`, e.g. `ctrl.annotation.<propertyName>`.
**datasource.ts**
```ts
export interface MyQuery extends DataQuery {
// ...
queryText?: string;
}
annotations: {};
```
1. In `module.ts`, add the annotation query editor to the plugin.
```ts
import { AnnotationQueryEditor } from './AnnotationQueryEditor';
export const plugin = new DataSourcePlugin<DataSource, MyQuery, MyDataSourceOptions>(DataSource)
.setConfigEditor(ConfigEditor)
.setQueryEditor(QueryEditor)
.setAnnotationQueryCtrl(AnnotationQueryEditor);
```
The `queryText` property is now available on the `options` object in the `annotationQuery` method:
```ts
async annotationQuery(options: AnnotationQueryRequest<MyQuery>): Promise<AnnotationEvent[]> {
const expression = options.annotation.queryText;
// ...
}
```

View File

@@ -4,7 +4,7 @@ title = "Add support for Explore queries"
# Add support for Explore queries
This guide explains how to improve support for [Explore]({{< relref "../../explore/_index.md" >}}) to an existing data source plugin.
This guide explains how to improve support for [Explore]({{< relref "../../explore/_index.md" >}}) in an existing data source plugin.
This guide assumes that you're already familiar with how to [Build a data source plugin]({{< relref "/tutorials/build-a-data-source-plugin.md" >}}).
@@ -85,25 +85,20 @@ The query editor for Explore is similar to the query editor for the data source
};
```
## Support multiple Explore modes
## Selecting preferred visualisation
Explore lets you query any data source, regardless of whether it returns metrics or logs. You can change which type of query you want to make, by setting the _Explore mode_.
Explore should by default select a reasonable visualization for your data so users do not have to tweak and play with the visualizations and just focus on querying. This usually works fairly well and Explore can figure out whether the returned data is time series data or logs or something else.
The query modes that the plugin supports are defined in the [plugin.json]({{< relref "metadata.md" >}}) file.
The query mode is available on the `props` object for both the query editor and the start page. For example, here's how you can change the query editor based on the currently selected mode:
If this does not work for you or you want to show some data in a specific visualization, add a hint to your returned data frame using the `preferredVisualisationType` meta attribute.
You can construct a data frame with specific metadata:
```
export default (props: Props) => {
const { query, exploreMode } = props;
switch (exploreMode) {
case ExploreMode.Metrics:
return <MetricsQueryField query={query} />;
case ExploreMode.Logs:
return <LogsQueryField query={query} />;
default:
return <p>Unsupported mode</p>;
}
}
const firstResult = new MutableDataFrame({
fields: [...],
meta: {
preferredVisualisationType: 'logs',
},
});
```
For possible options, refer to [PreferredVisualisationType](https://grafana.com/docs/grafana/latest/packages_api/data/preferredvisualisationtype/).

View File

@@ -76,7 +76,7 @@ Now, when users write `$service`, the query looks like this:
SELECT * FROM services WHERE id IN (admin,auth,billing)
```
For more information on the available variable formats, refer to [Advanced variable format options](https://grafana.com/docs/grafana/latest/variables/advanced-variable-format-options/).
For more information on the available variable formats, refer to [Advanced variable format options]({{< relref "../../variables/advanced-variable-format-options.md" >}}).
## Set a variable from your plugin

View File

@@ -49,7 +49,7 @@ The resources capability allows a backend plugin to handle custom HTTP requests
Examples of use cases for implementing resources:
- Implement a custom data source proxy in case certain authentication/authorization or other requirements are required/needed that are not supported in Grafana's [built-in data proxy](https://grafana.com/docs/grafana/latest/http_api/data_source/#data-source-proxy-calls).
- Implement a custom data source proxy in case certain authentication/authorization or other requirements are required/needed that are not supported in Grafana's [built-in data proxy]({{< relref "../../../http_api/data_source.md#data-source-proxy-calls" >}}).
- Return data or information in a format suitable to use within a data source query editor to provide auto-complete functionality.
- Return static resources, such as images or files.
- Send a command to a device, such as a micro controller or IOT device.

View File

@@ -14,6 +14,7 @@ To add logs support to an existing data source, you need to:
- Enable logs support
- Construct the log data
- (Optional) Add preferred visualisation type hint to the data frame
### Enable logs support
@@ -50,6 +51,25 @@ That's all you need to start returning log data from your data source. Go ahead
Congratulations, you just wrote your first logs data source plugin! Next, let's look at a couple of features that can further improve the experience for the user.
### (Optional) Add preferred visualisation type hint to the data frame
To make sure Grafana recognizes data as logs and shows logs visualization automatically in Explore you have do set `meta.preferredVisualisationType` to `'logs'` in the returned data frame. See [Selecting preferred visualisation section]({{< relref "add-support-for-explore-queries.md#selecting-preferred-visualisation" >}})
**Example:**
```ts
const frame = new MutableDataFrame({
refId: query.refId,
meta: {
preferredVisualisationType: 'logs',
},
fields: [
{ name: 'time', type: FieldType.time },
{ name: 'content', type: FieldType.string },
],
});
```
## Add labels to your logs
To help filter log lines, many log systems let you query logs based on metadata, or _labels_.

View File

@@ -72,7 +72,7 @@ A data transformation is any function that accepts a data frame as input, and re
A data frame with at least one time field is considered a _time series_.
For more information on time series, refer to our [Introduction to time series]({{< relref "../../getting-started/timeseries.md" >}}).
For more information on time series, refer to our [Introduction to time series]({{< relref "../../basics/timeseries.md" >}}).
### Wide format

View File

@@ -31,7 +31,7 @@ throw new Error('An error occurred');
Grafana displays the error message in the top-left corner of the panel.
{{< docs-imagebox img="/img/docs/panel_error.png" class="docs-image--no-shadow" max-width="850px" >}}
{{< figure src="/static/img/docs/panel_error.png" class="docs-image--no-shadow" max-width="850px" >}}
Avoid displaying overly-technical error messages to the user. If you want to let technical users report an error, consider logging it instead.

View File

@@ -10,7 +10,7 @@ App plugins are Grafana plugins that can bundle data source and panel plugins wi
Data source and panel plugins will show up like normal plugins. The app pages will be available in the main menu.
{{< imgbox img="/img/docs/v3/app-in-main-menu.png" caption="App in Main Menu" >}}
{{< figure class="float-right" src="/static/img/docs/v3/app-in-main-menu.png" caption="App in Main Menu" >}}
## Enabling app plugins
@@ -45,7 +45,7 @@ ConfigCtrl.templateUrl = 'components/config/config.html';
If possible, a link to a dashboard or custom page should be shown after enabling the app to guide the user to the appropriate place.
{{< imgbox img="/img/docs/app_plugin_after_enable.png" caption="After enabling" >}}
{{< figure class="float-right" src="/static/img/docs/app_plugin_after_enable.png" caption="After enabling" >}}
### Develop your own App

View File

@@ -96,7 +96,7 @@ Then each pair, label and field is wrapped in a div with a gf-form class.
Note that there are some Angular attributes here. *ng-model* will update the panel data. *ng-change* will render the panel when you change the value. This change will occur on the onblur event due to the *ng-model-onblur* attribute. This means you can see the effect of your changes on the panel while editing.
{{< imgbox img="/assets/img/blog/clock-panel-editor.png" caption="Panel Editor" >}}
{{< figure class="float-right" src="/assets/img/blog/clock-panel-editor.png" caption="Panel Editor" >}}
On the editor tab we use a drop down for 12/24 hour clock, an input field for font size and a color picker for the background color.

View File

@@ -5,11 +5,11 @@ aliases = ["/docs/grafana/latest/plugins/developing/snapshot-mode/"]
# Legacy snapshot mode
{{< imgbox img="/img/docs/Grafana-snapshot-example.png" caption="A dashboard using snapshot data and not live data." >}}
{{< figure class="float-right" src="/static/img/docs/Grafana-snapshot-example.png" caption="A dashboard using snapshot data and not live data." >}}
Grafana has this great feature where you can [save a snapshot of your dashboard]({{< relref "../../../dashboards/json-model.md" >}}). Instead of sending a screenshot of a dashboard to someone, you can send them a working, interactive Grafana dashboard with the snapshot data embedded inside it. The snapshot can be saved on your Grafana server and is available to all your co-workers. Raintank also hosts a [snapshot server](http://snapshot.raintank.io/) if you want to send the snapshot to someone who does not have access to your Grafana server.
{{< imgbox img="/img/docs/animated_gifs/snapshots.gif" caption="Selecting a snapshot" >}}
{{< figure class="float-right" src="/static/img/docs/animated_gifs/snapshots.gif" caption="Selecting a snapshot" >}}
This all works because Grafana saves a snapshot of the current data in the dashboard json instead of fetching the data from a data source. However, if you are building a custom panel plugin then this will not work straight out of the box. You will need to make some small (and easy!) changes first.
@@ -41,7 +41,7 @@ This will cover most use cases for snapshot support. Sometimes you will want to
Data that is not time series data from a Grafana data source is not saved automatically by Grafana. Saving custom data for snapshot mode has to be done manually.
{{< imgbox img="/img/docs/Grafana-save-snapshot.png" caption="Save snapshot" >}}
{{< figure class="float-right" src="/static/img/docs/Grafana-save-snapshot.png" caption="Save snapshot" >}}
Grafana gives us a chance to save data to the dashboard json when it is creating a snapshot. In the 'data-received' event handler, you can check the snapshot flag on the dashboard object. If this is true, then Grafana is creating a snapshot and you can manually save custom data to the panel json. In the example, a new field called snapshotLocationData in the panel json is initialized with a snapshot of the custom data.

View File

@@ -33,7 +33,7 @@ The plugin.json file is required for all plugins. When Grafana starts, it scans
| `metrics` | boolean | No | For data source plugins. If the plugin supports metric queries. Used in the Explore feature. |
| `preload` | boolean | No | Initialize plugin on startup. By default, the plugin initializes on first use. |
| `queryOptions` | [object](#queryoptions) | No | For data source plugins. There is a query options section in the plugin's query editor and these options can be turned on if needed. |
| `routes` | [object](#routes)[] | No | For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Authentication for data source plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/). |
| `routes` | [object](#routes)[] | No | For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Add authentication for data source plugins]({{< relref "add-authentication-for-data-source-plugins.md">}}). |
| `skipDataQuery` | boolean | No | For panel plugins. Hides the query editor. |
| `state` | string | No | Marks a plugin as a pre-release. Possible values are: `alpha`, `beta`. |
| `streaming` | boolean | No | For data source plugins. If the plugin supports streaming. |
@@ -168,12 +168,13 @@ For data source plugins. There is a query options section in the plugin's query
## routes
For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Authentication for data source plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/).
For data source plugins. Proxy routes used for plugin authentication and adding headers to HTTP requests made by the plugin. For more information, refer to [Add authentication for data source plugins]({{< relref "add-authentication-for-data-source-plugins.md">}}).
### Properties
| Property | Type | Required | Description |
|----------------|-------------------------|----------|---------------------------------------------------------------------------------------------------------|
| `body` | [object](#body) | No | For data source plugins. Route headers set the body content and length to the proxied request. |
| `headers` | array | No | For data source plugins. Route headers adds HTTP headers to the proxied request. |
| `jwtTokenAuth` | [object](#jwttokenauth) | No | For data source plugins. Token authentication section used with an JWT OAuth API. |
| `method` | string | No | For data source plugins. Route method matches the HTTP verb like GET or POST. |
@@ -183,29 +184,37 @@ For data source plugins. Proxy routes used for plugin authentication and adding
| `tokenAuth` | [object](#tokenauth) | No | For data source plugins. Token authentication section used with an OAuth API. |
| `url` | string | No | For data source plugins. Route URL is where the request is proxied to. |
### body
For data source plugins. Route headers set the body content and length to the proxied request.
| Property | Type | Required | Description |
|----------|------|----------|-------------|
### jwtTokenAuth
For data source plugins. Token authentication section used with an JWT OAuth API.
#### Properties
| Property | Type | Required | Description |
|----------|-------------------|----------|---------------------------------------------------------------------------|
| `params` | [object](#params) | No | For data source plugins. Parameters for the token authentication request. |
| `url` | string | No | For data source plugins. URL to fetch the JWT token. |
| Property | Type | Required | Description |
|----------|-------------------|----------|------------------------------------------------------|
| `params` | [object](#params) | No | Parameters for the JWT token authentication request. |
| `scopes` | string | No | |
| `url` | string | No | URL to fetch the JWT token. |
#### params
For data source plugins. Parameters for the token authentication request.
Parameters for the JWT token authentication request.
##### Properties
| Property | Type | Required | Description |
|-----------------|--------|----------|--------------------------------------------------------------------------------------------------------------------|
| `client_id` | string | No | For data source plugins. OAuth client id. |
| `client_secret` | string | No | For data source plugins. OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob. |
| `grant_type` | string | No | For data source plugins. OAuth grant type. |
| `resource` | string | No | For data source plugins. OAuth resource. |
| Property | Type | Required | Description |
|----------------|----------|----------|-------------|
| `client_email` | string | No | |
| `private_key` | string | No | |
| `scopes` | string[] | No | |
| `token_uri` | string | No | |
### tokenAuth
@@ -213,22 +222,23 @@ For data source plugins. Token authentication section used with an OAuth API.
#### Properties
| Property | Type | Required | Description |
|----------|-------------------|----------|---------------------------------------------------------------------------|
| `params` | [object](#params) | No | For data source plugins. Parameters for the token authentication request. |
| `url` | string | No | For data source plugins. URL to fetch the authentication token. |
| Property | Type | Required | Description |
|----------|-------------------|----------|--------------------------------------------------|
| `params` | [object](#params) | No | Parameters for the token authentication request. |
| `scopes` | string | No | |
| `url` | string | No | URL to fetch the authentication token. |
#### params
For data source plugins. Parameters for the token authentication request.
Parameters for the token authentication request.
##### Properties
| Property | Type | Required | Description |
|-----------------|--------|----------|--------------------------------------------------------------------------------------------------------------------|
| `client_id` | string | No | For data source plugins. OAuth client id. |
| `client_secret` | string | No | For data source plugins. OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob. |
| `grant_type` | string | No | For data source plugins. OAuth grant type. |
| `resource` | string | No | For data source plugins. OAuth resource. |
| Property | Type | Required | Description |
|-----------------|--------|----------|-------------------------------------------------------------------------------------------|
| `client_id` | string | No | OAuth client ID |
| `client_secret` | string | No | OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob. |
| `grant_type` | string | No | OAuth grant type |
| `resource` | string | No | OAuth resource |

View File

@@ -160,8 +160,8 @@ async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
}
```
For more information, refer to [Data frames](https://grafana.com/docs/grafana/latest/developers/plugins/data-frames/).
For more information, refer to [Data frames]({{< relref "data-frames.md">}}).
## Troubleshoot plugin migration
With Grafana 7.0, backend plugins can now be cryptographically signed to verify their origin. By default, Grafana will ignore unsigned plugins. For more information, refer to [Allow unsigned plugins]({{< relref "../../plugins/plugin-signatures.md#allow-unsigned-plugins" >}}).
As of Grafana 7.0, backend plugins can now be cryptographically signed to verify their origin. By default, Grafana ignores unsigned plugins. For more information, refer to [Allow unsigned plugins]({{< relref "../../plugins/plugin-signatures.md#allow-unsigned-plugins" >}}).

View File

@@ -350,6 +350,10 @@
"type": "array",
"description": "For data source plugins. Route headers adds HTTP headers to the proxied request."
},
"body": {
"type": "object",
"description": "For data source plugins. Route headers set the body content and length to the proxied request."
},
"tokenAuth": {
"type": "object",
"description": "For data source plugins. Token authentication section used with an OAuth API.",
@@ -357,28 +361,32 @@
"properties": {
"url": {
"type": "string",
"description": "For data source plugins. URL to fetch the authentication token."
"description": "URL to fetch the authentication token."
},
"scopes": {
"type": "string",
"description": ""
},
"params": {
"type": "object",
"description": "For data source plugins. Parameters for the token authentication request.",
"description": "Parameters for the token authentication request.",
"additionalProperties": false,
"properties": {
"grant_type": {
"type": "string",
"description": "For data source plugins. OAuth grant type."
"description": "OAuth grant type"
},
"client_id": {
"type": "string",
"description": "For data source plugins. OAuth client id."
"description": "OAuth client ID"
},
"client_secret": {
"type": "string",
"description": "For data source plugins. OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob."
"description": "OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob."
},
"resource": {
"type": "string",
"description": "For data source plugins. OAuth resource."
"description": "OAuth resource"
}
}
}
@@ -391,29 +399,36 @@
"properties": {
"url": {
"type": "string",
"description": "For data source plugins. URL to fetch the JWT token.",
"description": "URL to fetch the JWT token.",
"format": "uri"
},
"scopes": {
"type": "string",
"description": ""
},
"params": {
"type": "object",
"description": "For data source plugins. Parameters for the token authentication request.",
"description": "Parameters for the JWT token authentication request.",
"additionalProperties": false,
"properties": {
"grant_type": {
"type": "string",
"description": "For data source plugins. OAuth grant type."
"scopes": {
"type": "array",
"description": "",
"items": {
"type": "string"
}
},
"client_id": {
"token_uri": {
"type": "string",
"description": "For data source plugins. OAuth client id."
"description": ""
},
"client_secret": {
"client_email": {
"type": "string",
"description": "For data source plugins. OAuth client secret. Usually populated by decrypting the secret from the SecureJson blob."
"description": ""
},
"resource": {
"private_key": {
"type": "string",
"description": "For data source plugins. OAuth resource."
"description": ""
}
}
}

View File

@@ -9,9 +9,9 @@ weight = 150
Grafana Enterprise is a commercial edition of Grafana that includes additional features not found in the open source version.
Building on everything you already know and love about Grafana, Grafana Enterprise includes [exclusive datasource plugins]({{< relref "#enterprise-plugins">}}) and [additional features]({{< relref "#enterprise-features">}}). On top of that you get 24x7x365 support and training from the core Grafana team.
Building on everything you already know and love about Grafana open source, Grafana Enterprise includes [exclusive datasource plugins]({{< relref "#enterprise-plugins">}}) and [additional features]({{< relref "#enterprise-features">}}). On top of that you get 24x7x365 support and training from the core Grafana team.
[Learn more about Grafana Enterprise.](https://grafana.com/enterprise)
To learn more about Grafana Enterprise, refer to [our product page.](https://grafana.com/enterprise)
## Authentication
@@ -44,6 +44,7 @@ With Grafana Enterprise [enhanced LDAP]({{< relref "enhanced_ldap.md" >}}), you
With Grafana Enterprise, you get access to new features, including:
- [Data source permissions]({{< relref "datasource_permissions.md" >}}) to restrict query access to specific teams and users.
- [Data source query caching]({{< relref "query-caching.md" >}}) to temporarily store query results in Grafana to reduce data source load and rate limiting.
- [Reporting]({{< relref "reporting.md" >}}) to generate a PDF report from any dashboard and set up a schedule to have it emailed to whoever you choose.
- [Export dashboard as PDF]({{< relref "export-pdf.md" >}})
- [White labeling]({{< relref "white-labeling.md" >}}) to customize Grafana from the brand and logo to the footer links.

View File

@@ -20,7 +20,7 @@ Audit logs are JSON objects representing user actions like:
### Format
Audit logs contain the following fields. The fields followed by **\*** are always available, the others depends on the type of action logged.
Audit logs contain the following fields. The fields followed by **\*** are always available, the others depend on the type of action logged.
| Field name | Type | Description |
| ---------- | ---- | ----------- |
@@ -128,7 +128,7 @@ You can choose which exporter to use in the [configuration file]({{< relref "../
Options are `file`, `loki`, and `console`. Use spaces to separate multiple modes, such as `file loki`.
By default, when a user create or update a dashboard, its content will not appear in the logs as it can significantly increase the size of your logs. If this is important information for you and you can handle the amount of data generated, then you can enable this option in the configuration.
By default, when a user creates or updates a dashboard, its content will not appear in the logs as it can significantly increase the size of your logs. If this is important information for you and you can handle the amount of data generated, then you can enable this option in the configuration.
```ini
[auditing]

View File

@@ -13,7 +13,7 @@ Data source permissions allow you to restrict access for users to query a data s
## Enable data source permissions
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_enable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_enable.gif" >}}
{{< figure src="/static/img/docs/enterprise/datasource_permissions_enable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_enable.gif" >}}
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just
queries that exist on dashboards they have access to.
@@ -32,7 +32,7 @@ When permissions are enabled for a data source in an organization, you restrict
## Allow users and teams to query a data source
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_add_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_add.gif" >}}
{{< figure src="/static/img/docs/enterprise/datasource_permissions_add_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_add.gif" >}}
After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.
@@ -48,7 +48,7 @@ After you have enabled permissions for a data source you can assign query permis
## Disable data source permissions
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_disable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_disable.gif" >}}
{{< figure src="/static/img/docs/enterprise/datasource_permissions_disable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/static/img/docs/enterprise/datasource_permissions_disable.gif" >}}
If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.

View File

@@ -13,7 +13,7 @@ The enhanced LDAP integration adds additional functionality on top of the [LDAP
## LDAP group synchronization for teams
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
{{< figure src="/static/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
With enhanced LDAP integration, you can set up synchronization between LDAP groups and teams. This enables LDAP users that are members
of certain LDAP groups to automatically be added or removed as members to certain teams in Grafana.

View File

@@ -326,3 +326,38 @@ A list of headers that are stripped from the outgoing data source and alerting r
### cookie_drop_list
A list of cookies that are stripped from the outgoing data source and alerting requests.
## [caching]
> **Note:** Available in Grafana Enterprise v7.5 and later versions.
> **Note:** The Memcached cache backend is unavailable in Grafana Enterprise v7.5.
When query caching is enabled, Grafana temporarily stores the results of data source queries and serves cached responses to similar requests.
### backend
The caching backend to use when storing cached queries. Options: memory
### enabled
Setting 'enabled' to true enables caching datasource queries for all data sources.
### ttl
The default TTL (time to live) if no other TTL is available.
## [caching.memory]
### gc_interval
When storing cache data in-memory, this setting defines how often a background process cleans up stale data from the in-memory cache. More frequent "garbage collection" can keep memory usage from climbing but will increase CPU usage.
## [caching.redis]
### url
The full Redis URL of your Redis server. Example: `redis://localhost:6739/0`.
### prefix
A string that prefixes all Redis keys. This value must be set if using a shared database in Redis. If `prefix` is empty, then one will not be used.

View File

@@ -0,0 +1,15 @@
+++
title = "Grafana Enterprise license"
description = "Enterprise license"
keywords = ["grafana", "licensing", "enterprise"]
weight = 100
+++
# Grafana Enterprise license
To run Grafana Enterprise, you need a valid license. [Contact a Grafana Labs representative](https://grafana.com/contact?about=grafana-enterprise) to obtain the license. For information on how to activate your license, refer to [Activate an Enterprise license]({{< relref "./activate-license.md" >}}).
See also:
- [License expiration]({{< relref "./license-expiration.md" >}})
- [License restrictions]({{< relref "./license-restrictions.md" >}})

View File

@@ -2,6 +2,7 @@
title = "Activate an Enterprise license"
description = "Activate an Enterprise license"
keywords = ["grafana", "licensing", "enterprise"]
aliases = ["/docs/grafana/latest/enterprise/activate-license"]
weight = 100
+++
@@ -13,10 +14,10 @@ Follow these steps to activate your Grafana Enterprise license:
To download your Grafana Enterprise license:
1. Log in to your [Grafana Cloud Account](https://grafana.com).
1. Go to your **Org Profile**.
1. Go to the section for Grafana Enterprise licenses in the side menu.
1. At the bottom of the license details page there is **Download Token** link that will download the *license.jwt* file containing your license to your computer.
1. Log in to your [Grafana Cloud Account](https://grafana.com).
1. Go to your **Org Profile**.
1. Go to the section for Grafana Enterprise licenses in the side menu.
1. At the bottom of the license details page there is **Download Token** link that will download the *license.jwt* file containing your license to your computer.
## Step 2. Add your license to a Grafana instance
@@ -24,13 +25,12 @@ There are three different ways to add the license to a Grafana instance:
### Upload the license file through the Grafana Server Administrator page
This is the preferred option for single instance installations of
Grafana Enterprise.
This is the preferred option for single instance installations of Grafana Enterprise.
1. Sign in as a Grafana server admin.
1. Navigate to **Server Admin > Upgrade** within Grafana.
1. Click **Upload license token file**.
1. Select your license file, and upload it.
1. Sign in as a Grafana server admin.
1. Navigate to **Server Admin > Upgrade** within Grafana.
1. Click **Upload license token file**.
1. Select your license file, and upload it.
### Place the license.jwt file in Grafana's data folder
@@ -60,9 +60,9 @@ There are three different ways to add the license to a Grafana instance:
## Step 3. Ensure that the license file's root URL matches the root_url configuration option
Update the [`root_url`]({{< relref "../administration/configuration/#root-url" >}}) in your configuration. It should be the URL that users type in their browsers to access the frontend, not the node hostname(s).
Update the [`root_url`]({{< relref "../../administration/configuration/#root-url" >}}) in your configuration. It should be the URL that users type in their browsers to access the frontend, not the node hostname(s).
This is important, because as part of the validation checks at startup, Grafana compares the license URL to the [`root_url`]({{< relref "../administration/configuration/#root-url" >}}) in your configuration.
This is important, because as part of the validation checks at startup, Grafana compares the license URL to the [`root_url`]({{< relref "../../administration/configuration/#root-url" >}}) in your configuration.
In your configuration file:
@@ -79,7 +79,4 @@ GF_SERVER_ROOT_URL=https://grafana.blah.com/
## Step 4. Restart Grafana
To finalize the installation of Grafana Enterprise, restart Grafana to
enable all Grafana Enterprise features. Refer to [restart Grafana]({{< relref "../installation/restart-grafana.md" >}})
topic for more information.
To finalize the installation of Grafana Enterprise, restart Grafana to enable all Grafana Enterprise features. Refer to [restart Grafana]({{< relref "../../installation/restart-grafana.md" >}}) for more information.

View File

@@ -2,7 +2,8 @@
title = "License expiration"
description = ""
keywords = ["grafana", "licensing"]
weight = 120
aliases = ["/docs/grafana/latest/enterprise/license-expiration"]
weight = 200
+++
# License expiration
@@ -13,7 +14,7 @@ If your license has expired, most of Grafana keeps working as normal. Some enter
## Update your license
1. Locate your current `license.jwt` file. In a standard installation it is stored inside Grafana's data directory, which on a typical Linux installation is in `/var/lib/grafana/data`. This location might be overridden in the ini file [Configuration](https://grafana.com/docs/grafana/latest/administration/configuration/).
1. Locate your current `license.jwt` file. In a standard installation it is stored inside the Grafana data directory, which on a typical Linux installation is in `/var/lib/grafana/data`. This location might be overridden in the ini file [Configuration]({{< relref "../../administration/configuration.md" >}}).
```ini
[enterprise]
@@ -22,10 +23,10 @@ If your license has expired, most of Grafana keeps working as normal. Some enter
The configuration file's location may also be overridden by the `GF_ENTERPRISE_LICENSE_PATH` environment variable.
1. Log in to your [Grafana Cloud Account](https://grafana.com/login) and make sure you're in the correct organization in the dropdown at the top of the page.
1. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
1. Replace the current `license.jwt`-file with the one you've just downloaded.
1. Restart Grafana.
2. Log in to your [Grafana Cloud Account](https://grafana.com/login) and make sure you're in the correct organization in the dropdown at the top of the page.
3. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
4. Replace the current `license.jwt`-file with the one you've just downloaded.
5. [Restart Grafana]({{< relref "../../installation/restart-grafana.md" >}}).
## If your license expires
@@ -38,7 +39,7 @@ Your current data source permissions will keep working as expected, but you'll b
### LDAP authentication
- LDAP synchronization is not affected by an expired license.
- Enhanced LDAP debugging is unavailable.
- Team sync debugging is unavailable.
### SAML authentication
@@ -70,3 +71,9 @@ Vault integration is not affected by an expired license.
### Auditing
Auditing is not affected by an expired license.
### License restrictions
The concurrent session limit remains active for seven days after the expiration date, after which it will be turned off.
The active users limit is turned off immediately.

View File

@@ -2,15 +2,20 @@
title = "License restrictions"
description = "Grafana Enterprise license restrictions"
keywords = ["grafana", "licensing", "enterprise"]
weight = 110
aliases = ["/docs/grafana/latest/enterprise/license-restrictions"]
weight = 300
+++
# License restrictions
Enterprise licenses are limited by the number of active users, a license expiration date, and the URL of the Grafana instance.
Enterprise licenses are limited by the number of active users, the license expiration date, and the URL of the Grafana instance.
## User limits
Users are limited by the number of active users and the number of concurrent sessions for a given account.
### Active users limit
Grafana licenses allow for a certain number of active users per instance. An active user is any user that has signed in to Grafana within the past 30 days.
In the context of licensing, each user is classified as either a viewer or an editor:
@@ -18,14 +23,24 @@ In the context of licensing, each user is classified as either a viewer or an ed
- An editor is a user who has permission to edit and save a dashboard. Examples of editors are as follows:
- Grafana server administrators.
- Users who are assigned an organizational role of Editor or Admin.
- Users that have been granted Admin or Edit permissions at the dashboard or folder level. Refer to [Dashboard and folder permissions](https://grafana.com/docs/grafana/latest/permissions/dashboard_folder_permissions/).
- Users that have been granted Admin or Edit permissions at the dashboard or folder level. Refer to [Dashboard and folder permissions]({{< relref "../../permissions/dashboard-folder-permissions.md" >}}).
- A viewer is a user with the Viewer role, which does not permit the user to save a dashboard.
Restrictions are applied separately for viewers and editors.
When the number of maximum active viewers or editors is reached, Grafana displays a warning banner.
When the number of maximum active viewers or editors is reached, only they can sign in. New users or non-active users cannot sign in.
Sometimes it is useful to log in to an account from multiple locations concurrently. With Grafana Enterprise 7.5 and up, accounts are limited to three concurrent sessions.
### Concurrent sessions limit
Sometimes it is useful to sign in to an account from multiple locations simultaneously. As of Grafana Enterprise 7.5+, accounts are limited to the number of concurrent sessions authorized in each license, which is typically three. A new session is created when a user signs in to Grafana from a new device, a different browser, or an incognito window. If a user signs in to Grafana from another tab or window within the same browser, then only one session is used.
Given a limit of three sessions, the longest inactive session is signed out of when a fourth person signs in to the same account.
### Usage billing
You can request Grafana Labs to turn on usage billing to allow an unlimited number of active users. When usage billing is enabled, Grafana does not enforce active user limits. Instead, we charge for active users above the limit, according to your customer contract.
Usage billing must be agreed upon with Grafana Labs, and it is only available if Grafana Enterprise is configured to [automatically refresh its license]({{< relref "../enterprise-configuration.md#auto_refresh_license" >}}).
## Expiration date
@@ -41,11 +56,10 @@ This CSV report helps to identify users, teams, and roles that have been granted
To download the report:
1. Hover your cursor over the **Server Admin** (shield) icon in the side menu and then click **Licensing**.
2. At the bottom of the page, click **Download report**.
1. At the bottom of the page, click **Download report**.
## Update license restrictions
To increase the number of licensed users within Grafana, extend a license, or change your licensed URL, contact [Grafana support](https://grafana.com/profile/org#support) or your Grafana Labs account team. They will update your license, which you can activate from within Grafana.
To increase the number of licensed users within Grafana, extend a license, or change your licensed URL, contact [Grafana support](https://grafana.com/profile/org#support) or your Grafana Labs account team. They will update your license, which you can activate from within Grafana.
For instructions on how to activate your license after it is updated, refer to
[Activate an Enterprise license]({{< relref "./activate-license.md" >}})
For instructions on how to activate your license after it is updated, refer to [Activate an Enterprise license]({{< relref "./activate-license.md" >}}).

View File

@@ -0,0 +1,28 @@
+++
title = "Query caching"
description = "Grafana Enterprise data source query caching"
keywords = ["grafana", "plugins", "query", "caching"]
weight = 110
+++
# Query caching
> **Note:** Query caching is available behind the `caching` feature flag in Grafana Enterprise 7.5+.
When query caching is enabled, Grafana temporarily stores the results of data source queries. When you or another user submit the exact same query again, the results will come back from the cache instead of from the data source (like Splunk or ServiceNow) itself.
Query caching currently works for all backend data sources. You can enable the cache globally and configure the cache duration (also called Time to Live, or TTL). The cache can either be in-memory or in Redis.
## Query caching benefits
- Faster dashboard load times, especially for popular dashboards.
- Reduced API costs.
- Reduced likelihood that APIs will rate-limit or throttle requests.
## Enable query caching
To enable and configure query caching, please refer the the [Query caching section of Enterprise Configuration]({{< relref "./enterprise-configuration.md#caching" >}}).
## Sending a request without cache
If the data source query request contains an `X-Cache-Skip` header, then Grafana skips the caching middleware, and does not search the cache for a response. This can be particularly useful when debugging data source queries using cURL.

View File

@@ -12,7 +12,7 @@ Reporting allows you to automatically generate PDFs from any of your dashboards
> Only available in Grafana Enterprise v6.4+.
{{< docs-imagebox img="/img/docs/enterprise/reports_list.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/reports_list.png" max-width="500px" class="docs-image--no-shadow" >}}
Any changes you make to a dashboard used in a report are reflected the next time the report is sent. For example, if you change the time range in the dashboard, then the time range in the report changes as well.
@@ -29,7 +29,7 @@ Currently only Organization Admins can create reports.
1. Enter report information. All fields are required unless otherwise indicated.
- **Name -** Name of the report as you want it to appear in the Reports list.
- **Source dashboard -** Select the dashboard to generate the report from.
- **Recipients -** Enter the emails of the people or teams that you want to receive the report.
- **Recipients -** Enter the emails of the people or teams that you want to receive the report, separated by semicolons.
- **Reply to -** (optional) The address that will appear in the **Reply to** field of the email.
- **Message -** (optional) Message body in the email with the report.
- **Time range -** (optional) Use custom time range for the report. For more information check [Report time range]({{< relref "#report-time-range" >}}).
@@ -40,7 +40,7 @@ Currently only Organization Admins can create reports.
1. **Save** the report.
1. **Send test email** to verify that the whole configuration is working as expected.
{{< docs-imagebox img="/img/docs/enterprise/reports_create_new.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/reports_create_new.png" max-width="500px" class="docs-image--no-shadow" >}}
### Layout and orientation
@@ -48,10 +48,10 @@ Currently only Organization Admins can create reports.
Layout | Orientation | Support | Description | Preview
------ | ----------- | ------- | ----------- | -------
Simple | Portrait | v6.4+ | Generates an A4 page in portrait mode with three panels per page. | {{< docs-imagebox img="/img/docs/enterprise/reports_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}}
Simple | Landscape | v6.7+ | Generates an A4 page in landscape mode with a single panel per page. | {{< docs-imagebox img="/img/docs/enterprise/reports_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}}
Grid | Portrait | v7.2+ | Generates an A4 page in portrait mode with panels arranged in the same way as at the original dashboard. | {{< docs-imagebox img="/img/docs/enterprise/reports_grid_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}}
Grid | Landscape | v7.2+ | Generates an A4 page in landscape mode with panels arranged in the same way as at the original dashboard. | {{< docs-imagebox img="/img/docs/enterprise/reports_grid_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}}
Simple | Portrait | v6.4+ | Generates an A4 page in portrait mode with three panels per page. | {{< figure src="/static/img/docs/enterprise/reports_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}}
Simple | Landscape | v6.7+ | Generates an A4 page in landscape mode with a single panel per page. | {{< figure src="/static/img/docs/enterprise/reports_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}}
Grid | Portrait | v7.2+ | Generates an A4 page in portrait mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_portrait_preview.png" max-width="500px" max-height="500px" class="docs-image--no-shadow" >}}
Grid | Landscape | v7.2+ | Generates an A4 page in landscape mode with panels arranged in the same way as at the original dashboard. | {{< figure src="/static/img/docs/enterprise/reports_grid_landscape_preview.png" max-width="500px" class="docs-image--no-shadow" >}}
### Scheduling
@@ -108,7 +108,7 @@ If you want to use email addresses from the report, then select the **Use emails
The last saved version of the report will be sent to selected emails. You can use this to verify emails are working and to make sure the report is generated and displayed as you expect.
{{< docs-imagebox img="/img/docs/enterprise/reports_send_test_mail.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/reports_send_test_mail.png" max-width="500px" class="docs-image--no-shadow" >}}
## Send report via the API
@@ -157,9 +157,9 @@ If the time zone is set differently between your Grafana server and its remote i
## Choose template variables
> ** Note:** Available in Grafana Enterprise version 7.5+ (behind `templateVariables` feature flag).
> ** Note:** Available in Grafana Enterprise version 7.5+ (behind `reportVariables` feature flag).
You can configure report-specific template variables for the dashboard on the report page. The variables that you select will override the variables from the dashboard, and they are used when rendering a PDF file of the report. For detailed information about using template variables, refer to the [Templates and variables]({{< relref "../variables/_index.md" >}}) section.
You can configure report-specific template variables for the dashboard on the report page. The variables that you select will override the variables from the dashboard, and they are used when rendering a PDF file of the report. For detailed information about using template variables, refer to the [Templates and variables]({{< relref "../variables/_index.md" >}}) section.
## Reports settings
@@ -178,7 +178,7 @@ Email branding:
- **Footer link text** - Text for the link in the report email footer. Defaults to "Grafana".
- **Footer link URL** - Link for the report email footer.
{{< docs-imagebox img="/img/docs/enterprise/reports_settings.png" max-width="500px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/reports_settings.png" max-width="500px" class="docs-image--no-shadow" >}}
## Troubleshoot reporting

View File

@@ -8,7 +8,7 @@ weight = 600
# Team sync
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
{{< figure src="/static/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
Team sync lets you set up synchronization between your auth providers teams and teams in Grafana. This enables LDAP, OAuth, or SAML users who are members of certain teams or groups to automatically be added or removed as members of certain teams in Grafana.
@@ -35,7 +35,7 @@ This mechanism allows Grafana to remove an existing synchronized user from a tea
If you have already grouped some users into a team, then you can synchronize that team with an external group.
{{< docs-imagebox img="/img/docs/enterprise/team_add_external_group.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
{{< figure src="/static/img/docs/enterprise/team_add_external_group.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
1. In Grafana, navigate to **Configuration > Teams**.
1. Select a team.

View File

@@ -16,14 +16,14 @@ For every dashboard and data source, you can access usage information.
To see dashboard usage information, go to the top bar and click **Dashboard insights**.
{{< docs-imagebox img="/img/docs/enterprise/dashboard_insights_button.png" max-width="400px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/dashboard_insights_button.png" max-width="400px" class="docs-image--no-shadow" >}}
Dashboard insights show the following information:
- **Stats:** The number of daily queries and errors for the past 30 days.
- **Users & activity:** The daily view count for the last 30 days; last activities on the dashboard and recent users (with a limit of 20).
{{< docs-imagebox img="/img/docs/enterprise/dashboard_insights_stats.png" max-width="400px" class="docs-image--no-shadow" >}}{{< docs-imagebox img="/img/docs/enterprise/dashboard_insights_users.png" max-width="400px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/dashboard_insights_stats.png" max-width="400px" class="docs-image--no-shadow" >}}{{< figure src="/static/img/docs/enterprise/dashboard_insights_users.png" max-width="400px" class="docs-image--no-shadow" >}}
## Data source insights
@@ -34,10 +34,10 @@ Data source insights give you information about how a data source has been used
- Queries per day
- Errors per day
- Query load time per day (averaged in ms)
To find data source insights:
1. Go to the Data source list view.
1. Click on a data source.
1. Click the **Insights** tab.
{{< docs-imagebox img="/img/docs/enterprise/datasource_insights.png" max-width="650px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/datasource_insights.png" max-width="650px" class="docs-image--no-shadow" >}}

View File

@@ -18,7 +18,4 @@ There are several sort options:
- Views total
- Views 30 days
`Errors 30 days` and `Views 30 days` are based on a calculated sorting index that weighs errors and views that happened within the past day more heavily than those that happened over the past 30 days.
{{< docs-imagebox img="/img/docs/enterprise/improved_search.png" max-width="650px" class="docs-image--no-shadow" >}}
{{< figure src="/static/img/docs/enterprise/improved-search-7-5.png" max-width="650px" class="docs-image--no-shadow" >}}

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