Compare commits

...

707 Commits

Author SHA1 Message Date
Marcus Efraimsson
ad9d408ac2 E2E: Update e2e docker image in 7.2.x branch (#28424) 2020-10-21 09:26:59 +02:00
Torkel Ödegaard
9f7f13e02a E2E: Update e2e docker image in 7.2.x branch (#28407) 2020-10-20 17:34:53 +02:00
Marcus Efraimsson
d9540bc368 Release v7.2.2 2020-10-20 16:15:17 +02:00
Marcus Efraimsson
b1543b5676 Go dependency update 2020-10-20 16:15:17 +02:00
Arve Knudsen
0b4aa8b909 CloudWatch: Fix custom metrics (#28391)
* CloudWatch: Fix querying for custom metrics

Co-authored by Mitch McKenzie <mitch.mckenzie@outlook.com>

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit af17f9fd9b)
2020-10-20 16:15:17 +02:00
Carl Bergquist
4d21ade9cd Instrumentation: Add histogram for request duration (#28364)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit edbaa9d681)
2020-10-20 16:15:17 +02:00
Carl Bergquist
36c8a3bd93 remove status label from histogram (#28387)
Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit b036112444)
2020-10-20 16:15:17 +02:00
Carl Bergquist
589be2872b Instrumentation: Add counters and histograms for database queries (#28236)
Signed-off-by: bergquist <carl.bergquist@gmail.com>

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 74d1d3c6a8)
2020-10-20 16:15:17 +02:00
Carl Bergquist
f60edaf029 Instrumentation: Adds environment_info metric (#28355)
Signed-off-by: bergquist <carl.bergquist@gmail.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 89ebb97fca)
2020-10-20 16:15:17 +02:00
Sofia Papagiannaki
72a6c64532 Release v7.2.1 2020-10-08 12:00:32 +03:00
Marcus Andersson
cc745b75ac Bugfix: improved the way of checking if browser supports Intl.DateTimeFormat (#28086)
(cherry picked from commit ab33e46789)
2020-10-08 12:00:32 +03:00
Giordano Ricci
6210531200 Elasticsearch: Fix ad-hoc filter support for Raw Data query and new table panel (#28064)
(cherry picked from commit 09574547b8)
2020-10-08 12:00:32 +03:00
David C
3147dadfdb Docs: Added $__rate_interval to Prometheus help (#28030)
* Docs: Added $__rate_interval to Prometheus help

The variable '$__rate_interval' was added in Grafana 7.2.0. This commit
adds the missing help information to Grafana's Prometheus PromQueryEditor.

Signed-off-by: David Calvert <davidcalvertfr@gmail.com>

* Docs: Fixed line length in PromQueryEditor.tsx

This commit will fix line length of my previous commit to make CI green
again.

Signed-off-by: David Calvert <davidcalvertfr@gmail.com>

* Docs: Fixed ci error

Fixed CI error due to my previous commits

Signed-off-by: David Calvert <davidcalvertfr@gmail.com>
(cherry picked from commit 1f389d72b2)
2020-10-08 12:00:32 +03:00
Ivana Huckova
a3398cafd6 Loki: Run instant query only in Explore (#27974)
* Run instant query only in Explore

* Replace forEach with for loop

(cherry picked from commit 0ffd9a9a3c)
2020-10-08 12:00:32 +03:00
Zoltán Bedi
b699682ee4 Stackdriver: fix project name change regression (#27909)
* Update stackdriver query editor not to overwrite project name

* Fix legacy select form no options didn't show

* Update config link to docs

(cherry picked from commit b1186d693a)
2020-10-08 12:00:32 +03:00
Alex Khomenko
6cd10128e6 UserPicker: Use clearable AsyncSelect for the UserPicker (#27994)
(cherry picked from commit 6173aa70b7)
2020-10-08 12:00:32 +03:00
Carl Bergquist
1cd4391b9b healthchecks should work regardless domain (#27981)
(cherry picked from commit a28a2fba51)
2020-10-08 12:00:32 +03:00
Ivana Huckova
6ff9d3ffad Revert "Update refId for instant queries (#27954)" (#27960)
This reverts commit 9546da3189.

(cherry picked from commit 43c389d119)
2020-10-08 12:00:32 +03:00
Ivana Huckova
ef98b310f1 Update refId for instant queries (#27954)
(cherry picked from commit 9546da3189)
2020-10-08 12:00:32 +03:00
Marcus Efraimsson
6c4d5466e6 Plugins: Fix loading of backend plugins (#27951)
Ref #27921 

(cherry picked from commit 747513d444)
2020-10-08 12:00:32 +03:00
Hugo Häggmark
616588adee DashboardLinks: values in links are updated when variables change (#27926)
* DashboardLinks: values in links are updated when variable changes

* Tests: adds e2e test that verifies links

(cherry picked from commit fa2781391a)
2020-10-08 12:00:32 +03:00
Carl Bergquist
76887a76b9 Instrumentation: Removes invalid chars from label names (#27921)
(cherry picked from commit 7b891d10ee)
2020-10-08 12:00:32 +03:00
Torkel Ödegaard
2b51f520a4 Graph: Fixed histogram bucket calculations to avoid missing buckets (#27883)
* Graph: Fixed histogram bucket calculations to avoid missing buckets

* Removed testdata

* Updated tests

(cherry picked from commit d105db3e5b)
2020-10-08 12:00:32 +03:00
Berbe
0582b21c42 Fix: bps & Bps default scale remains decimal (backwards-compatibility) (#27838)
(cherry picked from commit 7c0bd29fcc)
2020-10-08 12:00:32 +03:00
Will Browne
4e1ff750e2 remove org deprecation logs (#27788)
(cherry picked from commit c764e3c37b)
2020-10-08 12:00:32 +03:00
Hugo Häggmark
eb9057fc09 Variables: Prevents unnecessary calls to update options (#27790)
* Variables: Prevents unnecessary calls to update options

* Tests: adds tests for QueryVariableEditor

(cherry picked from commit 204641a202)
2020-10-08 12:00:32 +03:00
Torkel Ödegaard
9930d2bfce BarGauge: Fixed scrollbar showing for bar gague in Firefox (#27784)
(cherry picked from commit 193565ca26)
2020-10-08 12:00:32 +03:00
William Assis
db754555e0 Toolkit: Add --coverage flag to plugin build command (#27743)
* Add --coverage option to build script

* Update README

(cherry picked from commit 8a22111a8e)
2020-10-08 12:00:32 +03:00
Giordano Ricci
01841d6ded Elasticsearch: Add query's refId to each series returned by a query (#27614)
(cherry picked from commit d4f785d20a)
2020-10-08 12:00:32 +03:00
Tiago Mota Santos
f96e49ae0d Dashboard: Honour root_url for Explore link (#27654)
* Dashboard: Add subUrl to explore url

Honour subUrl when opening explore in new window

* Dashboard: Add tests to onNavigateToExplore

* Dashboard: Remove condition from tests

(cherry picked from commit 17a1e78754)
2020-10-08 12:00:32 +03:00
Torkel Ödegaard
498bfb0ed9 ValueMappings: Fix issue with value mappings in override applying to all columns (#27718)
* ValueMappings: Fix issue with value mappings override creating default value mapping for all fields

* Fixed unit tests

(cherry picked from commit f285569316)
2020-10-08 12:00:32 +03:00
Carl Bergquist
1e1535552f add /healthz endpoint (#27536)
kuberentes (and Im sure other orchastrators does as well) support two
kind of checks. readiness checks and liveness checks. Grafanas current
`/api/health` endpoint requires database access which might not
always be required for the instance to be considered active.

(cherry picked from commit 6dc73a6712)
2020-10-08 12:00:32 +03:00
Leonard Gram
efe4941ee3 Release 7.2.0 2020-09-23 13:23:49 +02:00
kennytm
9c1403cd13 grafana-toolkit: avoid path.resolve with globby in moveStaticFiles (#27670)
(cherry picked from commit ed054c205d)
2020-09-23 13:23:49 +02:00
Torkel Ödegaard
e35c7583b9 DateFormatting: Use system date by default in display processor (#27699)
(cherry picked from commit 52a501c205)
2020-09-23 13:23:49 +02:00
Hugo Häggmark
d383ac9ffb PanelEditor: Prevents adding transformations in panels with alerts (#27706)
(cherry picked from commit a58a9e8e6d)
2020-09-23 13:23:49 +02:00
Andrej Ocenas
8797d753d4 Show full traceID and better discern multiple stackTraces (#27710)
(cherry picked from commit 0fe3b78a50)
2020-09-23 13:23:49 +02:00
Ryan McKinley
c0320fbe40 Annotations: check for null or undefined fields before conversion (#27712)
(cherry picked from commit d46f33c34c)
2020-09-23 13:23:49 +02:00
kennytm
f2f4f22eef grafana/ui: Do not bundle jQuery (#27667)
(cherry picked from commit 7a77eb7635)
2020-09-23 13:23:49 +02:00
Hugo Häggmark
a7e713fb31 Select: Adds labels to select styles (#27698)
(cherry picked from commit 5f2deb2497)
2020-09-23 13:23:49 +02:00
Peter Holmberg
b825c824c5 Fix: Show an ellipsis if Query row title is too long (#27648)
* add overflow hidden to titleWrapper

* show ellipsis and css labels for components

* readd drag handle after bad merge

* rewrite userpicker test with rtl

* update test after adding css label to icon component

* fix more tests..

(cherry picked from commit 6a14f830ba)
2020-09-23 13:23:49 +02:00
Torkel Ödegaard
36c3a139e8 DashboardRow: Update to use the new replaceWithText method (#27671)
* DashboardRow: Update to use the new replaceWithText method

* Fixed panel header as well

(cherry picked from commit 1e5309a788)
2020-09-23 13:23:49 +02:00
Dominik Prokop
da2622d870 Fix mismatch in field config editor types (#27657)
(cherry picked from commit e8a6b9db10)
2020-09-23 13:23:49 +02:00
Spencer McMaster
b25b66e2f6 PanelEditor: fix button position when dragging row (#27666)
(cherry picked from commit 1269fa5cf6)
2020-09-23 13:23:49 +02:00
Peter Holmberg
a3fc96196a FieldConfig: Apply Thresholds for string values (#27656)
* apply thresholds for strings

* apply thresholds for all FieldTypes

(cherry picked from commit 232ad5c42e)
2020-09-23 13:23:49 +02:00
Dominik Prokop
a9a053591b Field config: Respect config paths when rendering default value of field config property (#27652)
(cherry picked from commit e5b16952c7)
2020-09-23 13:23:49 +02:00
Domas
2870eab4d7 DataProxy: Ignore empty URL's in plugin routes (#27653)
This adds a check to see if plugin route URL is empty, and in such case
does not modify request schema and host of the request to be proxied.
This behavior is now the same as in the plugin proxy.

(cherry picked from commit 564d7ecea7)
2020-09-23 13:23:49 +02:00
Alvaro Olmedo Rodriguez
bdeb380c56 Alerting: Ensuring notifications displayed correctly in mobile device with Google Chat (#27578)
* Added previewText to Google Chat notifier

(cherry picked from commit 20292bdb0e)
2020-09-23 13:23:49 +02:00
kay delaney
0bac0044a9 Explore/Actions: Stop loadExploreDatasourcesAndSetDatasource from running queries twice (#27577)
(cherry picked from commit ca7263d898)
2020-09-23 13:23:49 +02:00
Torkel Ödegaard
0d8f2fbda8 DataLinks: Fixes issue with data links not interpolating values with correct field config (#27622)
* DataLinks: Fixes issue with data links not having access to other fields field config

* Fixed test

(cherry picked from commit fcfd5cf0bc)
2020-09-23 13:23:49 +02:00
Emil Tullstedt
88905ca158 Chore(crewjam/saml): go get -u (#27598)
(cherry picked from commit 2e4191afca)
2020-09-23 13:23:49 +02:00
Hugo Häggmark
8406a5d319 Release v7.2.0-beta2 2020-09-17 10:44:02 +02:00
Giordano Ricci
8d71561898 Elasticsearch: Add support for date_nanos type (#27538)
(cherry picked from commit 0e34474099)
2020-09-17 10:44:02 +02:00
Hugo Häggmark
8269ed2407 DataLinks: Respects display name and adds field quoting (#27616)
* DataLinks: Adds field quoting and respects DisplayName

* Update public/app/features/panel/panellinks/link_srv.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
(cherry picked from commit e86ff52d44)
2020-09-17 10:44:02 +02:00
Nick Svanidze
4676ee9dcf ApiKeys: Fixes close('X') button layout issue (#27625)
* ApiKeys: Fixes add API key layout

* ApiKeys: snapshot tests updated

(cherry picked from commit 5a06ed431c)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
35bdf11c0c SharedQuery: Error when switching to -- Dashboard -- data source caused "no data" no matter what source panel was selected (#27627)
* SharedQuery: Error when switching to -- Dashboard -- data source made observable subscription error and subsequent data results not update visualization

* added null check just in case

(cherry picked from commit 31e2b7e7c8)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
46bb0e3754 ImageRendering: Fix rendering panel using shared query in png, PDF reports and embedded scenarios (#27628)
* ImageRendering: Fixed issue rendering panel using shared query

* Fixed spelling

(cherry picked from commit c450ffd711)
2020-09-17 10:44:02 +02:00
Kyle Brandt
521f31a702 BackendPlugins: Point to request Headers in the wrapper (#27599)
In particular, so plugins can see the FromAlert header

(cherry picked from commit 50c680f3d7)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
460ccc326f InputControl: Fixed using InputControl in unit tests from plugins (#27615)
(cherry picked from commit 2ed9124736)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
eca1c505c7 NewsPanel: Fixed XSS issue when rendering rss links (#27612)
(cherry picked from commit b58864792d)
2020-09-17 10:44:02 +02:00
Ryan McKinley
b112b13c2d Graph: show range warning when all data is outside time range (#27603)
(cherry picked from commit 54b677bda4)
2020-09-17 10:44:02 +02:00
Wouter Smeenk
a4689e646a Dashboard: Support configuring default timezone via config file (#27404)
Add a default timezone that the administrator can set in the settings.
This setting is be used as default for the users timezone preference.
Can be used when creating Grafana instances without administrator
intervention, in order to give user the correct default timezone.

Fixes #25654

(cherry picked from commit 39eba5065b)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
cfc13f7e30 Docs: Field config docs update, Table docs update, Override matcher naming issue (#27558)
* Docs: Field Config Docs Update, Table Docs update, Override matcher naming sync

* removed sentance that feels duplicated

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* removed bad newlines and minor tweaks, still need to figure out naming for matchers in UI and docs

* Updated matcher names and descriptions, and UX

* Updated field override docs

* Fixed plural

* Updated wording

* removed plurals for the selectors heading

* Updated names

* Updated docs

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
(cherry picked from commit cade6dd010)
2020-09-17 10:44:02 +02:00
Ryan McKinley
7054834af0 Annotation: use DataFrame[] rather than a single DataFrame (#27587)
(cherry picked from commit 1e4846d443)
2020-09-17 10:44:02 +02:00
Dominik Prokop
48bae0232c Field config: Add support for paths in default field config setup (#27570)
* Add support for paths in default field config setup

* Typecheck fix

(cherry picked from commit e04e3e7d46)
2020-09-17 10:44:02 +02:00
Giordano Ricci
3a32c8f329 Elasticsearch: Increase maximum geohash aggregation precision to 12 (#27539)
(cherry picked from commit e350e1fff6)
2020-09-17 10:44:02 +02:00
Giordano Ricci
b9d4653737 Elasticsearch: Allow fields starting with underscore (#27520)
(cherry picked from commit a0beaa3bbe)
2020-09-17 10:44:02 +02:00
jonny
7220fb5ab8 Variables: Limit rendering of options in dropdown to improve search performance (#27525)
* fixed: bigdata dropdown first limit 1000

* fixed: change to use function of  applylimit

* fixed: remove both applyLimit callers

* feat: test for new logic with applimit

* feat: test showOptions  with the applyLimit logic

* fixed: test equal fixed

(cherry picked from commit 0d2fbd2acd)
2020-09-17 10:44:02 +02:00
Hugo Häggmark
f00222ad03 Postgres: Support request cancellation properly (Uses new backendSrv.fetch Observable request API) (#27478)
* Postgres: Replaces dataSourceRequest with fetch

* Postgres: Replaces dataSourceRequest with fetch

* Tests: removes unnecessary import

(cherry picked from commit a587bf4f56)
2020-09-17 10:44:02 +02:00
Ryan McKinley
6033499576 Chore: use visualization name in field config header (#27579)
(cherry picked from commit c180facba5)
2020-09-17 10:44:02 +02:00
Hansuuuuuuuuuu
1a598a8a41 Auth: Replace maximum inactive/lifetime settings of days to duration (#27150)
Allows login_maximum_inactive_lifetime_duration and
login_maximum_lifetime_duration to be configured using
time.Duration-compatible values while retaining backward compatibility.

Fixes #17554

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit 8d971ab2f2)
2020-09-17 10:44:02 +02:00
Sofia Papagiannaki
4ca888c798 Fix instrumentation panic if there is no response (#27567)
(cherry picked from commit f529223455)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
569e2a2c74 Annotations: Fixes issue with showing error notice for cancelled annotation queries (#27557)
(cherry picked from commit b37e132cec)
2020-09-17 10:44:02 +02:00
Agnès Toulet
27bfb61d2b Org API: enrich add user to org endpoints with user ID in the response (#27551)
(cherry picked from commit eb970a4985)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
ac7112876b PanelEdit: Drag and drop query order & UI tweaks (#27502)
* PanelEdit: Drag and drop query order & UI tweaks

* Fixed width of title issue

* added correct color and hover

* Updated e2e tests

(cherry picked from commit 8759a91222)
2020-09-17 10:44:02 +02:00
Marcus Andersson
711a051725 Templating: global/system variables should be properly replaced in templated values. (#27394)
* Fixed so we try to use the variables in the redux store to replace values in template variables.

* First draft of working version.

* Including fieldPath when adding :text format.

* cleaned up code by introducing helper function.

* some minor refactoring.

* Added tests and support for multi variables.

* added test and code to handle the All scenario of a multivariable.

* fixed according to feedback.

* added docs.

* added text format to gdev dashboard.

* updated e2e tests.

* make sure we use the same function for formatting och variable lable.

* increased the number to 22.

* changed label for tests to be All.

* existing format should be respected.

(cherry picked from commit 0c8390cea2)
2020-09-17 10:44:02 +02:00
Ryan McKinley
c3afe89ea2 Toolkit: clean node_modules/@grafana/data/node_modules in prepare (#27554)
(cherry picked from commit b3b72b8ae6)
2020-09-17 10:44:02 +02:00
Agnès Toulet
dc4b97966f Alerting API: send 404 not found error and enrich delete with UID endpoint response with alert notification ID (#27550)
* Alerting API: Send back 404 not found error for update and delete endpoints

* Alerting API: send back alert notification id for delete with uid endpoint

(cherry picked from commit 0c4b7d3f5d)
2020-09-17 10:44:02 +02:00
Ryan McKinley
4d9f298098 Annotations: add standard annotations support (and use it for flux queries) (#27375)
(cherry picked from commit 5d11d8faa3)
2020-09-17 10:44:02 +02:00
Alex Khomenko
95a688a469 Grafana-UI: Expand ConfirmModal docs (#27541)
(cherry picked from commit 126683929c)
2020-09-17 10:44:02 +02:00
Marcus Efraimsson
1f6d68b38e BootData: Fix nav tree sort regression (#27533)
#26395 introduced a regression regarding sort order of nav tree
items set in Grafana boot data and used for rendering the sidemenu.
This fixes so that sort happens after RunIndexDataHooks is called
in case the hook make changes to the nav tree.

(cherry picked from commit 1983de962c)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
d842db21d2 Transform: Fixed issue in labels to fields and update docs (#27501)
(cherry picked from commit 61463aa123)
2020-09-17 10:44:02 +02:00
Sofia Papagiannaki
adb6d93442 Revert "Alerting: New feature toggle for enabling standalone alerts (#25984)" (#27531)
This reverts commit 20b603ee1a.

(cherry picked from commit 924224eefb)
2020-09-17 10:44:02 +02:00
Berbe
80a19f014c Binary-prefixed data rates (#27022)
* Dashboard: Merge Data units categories

Prefixes already allow to distinguish IEC units from SI ones
+ Prefer using binary function over decimal one when equal

* Dashboard: Clarify SI & binary prefixes

* Dashboard: Homogeneise rate units

* Dashboard: Add Binary (IEC) prefix for data rates

(cherry picked from commit 794333de3d)
2020-09-17 10:44:02 +02:00
Maksim Nabokikh
25c7090cda Provisioning: Remove provisioned dashboards without parental reader (#26143)
(cherry picked from commit 6e3e0dead8)
2020-09-17 10:44:02 +02:00
Torkel Ödegaard
89dbb0f074 Notifications: UX tweak to redesign of form and sections to make it left aligned and cleaner (#27479)
* UX: Redesign of form and sections to make it left aligned and cleaner

* reduced padding

* design tweaks

(cherry picked from commit 0132bca93a)
2020-09-17 10:44:02 +02:00
Zoltán Bedi
a2b97958bd Prometheus: Fix min step variable interpolation (#27505)
* Add missing dependency to lockfile

* Prometheus: Fix min step variable interpolation

(cherry picked from commit a7ac3f1419)
2020-09-17 10:44:02 +02:00
Marcus Efraimsson
619d985214 Azure/Insights: Fix handling of none dimension values (#27513)
Properly handle legacy dimension values in the backend.

Fixes #27512

(cherry picked from commit e85b266f2e)
2020-09-17 10:44:02 +02:00
Marcus Efraimsson
ee59974edb Alerting: Fix integration key so it's stored encrypted for Pagerduty notifier (#27484)
Fixes an issue introduced by migration in #25980 which
removed storing the Pagerduty integrating key encrypted.

(cherry picked from commit 91a8937e6c)
2020-09-17 10:44:02 +02:00
Oana Mangiurea
109754eeb4 Update Input.mdx (#26226)
* Update Input.mdx

clarify form validation text

* Update packages/grafana-ui/src/components/Input/Input.mdx

Align with textArea

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
Co-authored-by: Clarity-89 <homes89@ukr.net>
(cherry picked from commit b01a64e146)
2020-09-17 10:44:02 +02:00
Alex Khomenko
2c6020a57a Grafana-UI: Add docs for ConfirmButton (#27477)
* Grafana-UI: Add docs for ConfirmButton

* Grafana-UI: Add comment

* Update packages/grafana-ui/src/components/ConfirmButton/ConfirmButton.mdx

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
(cherry picked from commit 1a5c049883)
2020-09-17 10:44:02 +02:00
Marcus Andersson
dfa808ea25 release 7.0.2-beta1 2020-09-09 14:58:44 +02:00
Marcus Andersson
b35af9eaa7 Chore: Update release notes/what's new for v7.2. (#27475) 2020-09-09 14:55:09 +02:00
Peter Holmberg
400aafa3b3 Migration: Edit notification channel (#25980)
* implement edit page

* connectWithCleanup

* remove angular related code

* use loadingindicator

* use the correct loading component

* handle secureFields

* fixed implementation of secure fields

* Keep secureFields after rerendering the form

* CollapsableSection and Page refactor

* use checkbox instead of switch

* fix comment

* add cursor to section

* Fixed issues after PR review

* Fix issue with some settings being undefined

* new reducer and start with test

* algorithm to migrate secure fields

* UX: Minor UI Tweaks

* Added field around checkboxes, and missing required field

* fixed test

* tests for util

* minor tweaks and changes

* define as records

* fix typ error

* forward invalid to textarea and inputcontrol

* merge formdata and redux data in test

* fix issue with creating channel

* do not figure out securefields in migration

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-09-09 12:46:19 +02:00
Giordano Ricci
1e2f3ca599 Explore: Expand template variables when redirecting from dashboard panel (#27354)
* Explore: Add interpolateVariablesInQueries to opentsdb  datasource

* Explore: Add interpolateVariablesInQueries to cloudwatch datasource

* Explore: Add interpolateVariablesInQueries to CloudMonitoring datasource

* Explore: Add interpolateVariablesInQueries to Azure datasource

* Explore: Add dimensions to interpolateMetricsQueryVariables in cloudwatch datasource
2020-09-09 10:00:43 +01:00
Ryan McKinley
acf9938f61 Chore: minor storybook update for markdown-to-jsx security fix (#27413) 2020-09-09 01:54:34 -07:00
Arve Knudsen
efe1287be9 Drone: Make parallel step for publishing front-end metrics (#27457)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-09 10:21:16 +02:00
Arve Knudsen
c7b8d85ce5 Chore: Upgrade grabpl (#27470)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-09 10:20:23 +02:00
kay delaney
22d6cfc358 DataSource/CloudWatch: Adds metadata to grouped CW Logs dataframe (#27454) 2020-09-09 08:38:53 +01:00
Ryan McKinley
6b0f56b726 InfluxDB: Alerting issue, reasonable defaults for interval and maxDataPoints (#27463) 2020-09-09 09:34:17 +02:00
Hugo Häggmark
5520cd2c68 Chore: fixes build errors (#27466) 2020-09-09 08:57:07 +02:00
Marcus Andersson
7cd27d9576 Docs: added version note to the group-by transformation (#27423)
* added version notice to the group by documentation.

* updated to new suggestion.
2020-09-09 08:56:20 +02:00
Torkel Ödegaard
431a53594b Inspect: Fixed missing rows issue in inspect data (#27422) 2020-09-09 08:47:18 +02:00
Carl Bergquist
f9752f0e7a Instrumentation: Adds instrumentation for outgoing datasource requests (#27427) 2020-09-09 07:47:05 +02:00
Hugo Häggmark
b3fb25010c DashboardSettings: Fixes auto refresh crash with space in interval (#27438)
* DashboardSettings: Fixes auto refresh crash with space in interval

* Tests: fixes typings

* Refactor: validets onBlur and other PR comments

* Tests: adds component tests

* Refactor: changes after PR feedback
2020-09-09 07:45:51 +02:00
Hugo Häggmark
883d7cb578 OuterJoin: Fixes transformation when data is missing field to join by (#27453) 2020-09-09 06:56:39 +02:00
Liam Stanley
023054bc62 heatmap: reduce the aggressiveness of hiding ticks/labels (#27016) 2020-09-09 06:53:17 +02:00
Kyle Brandt
9bab551d8b AzureMonitor: change filterDimensions property to match what is stored (#27459)
Changes the dimensionsFilters property to dimensionsFilter in the Azure Monitor Datasource's AzureMonitor service to make what is sent to match the saved model.

Before this, the property that the backend was expecting was not available in the case of alerting, where the stored model is fetched.

This also fixes a panic when there is a dimension alias but no dimension
2020-09-08 15:12:08 -04:00
Michel Engelen
5b6e156934 Chore: fixed text-alignment on hovering tableCells (#27311)
## FilterableTableCell

### added
- added `display: inline-flex` and `align-items: center` to
  `tableCellWrapper` class
- added `flex: 1` to `tableCell` class

### removed
- unused imports
- removed ternary if since it has no use anymore
- removed `tableCellWrapper` style definition from stylesFactory
2020-09-08 18:20:44 +02:00
Alex Khomenko
b2fe359a5e Grafana-UI: Add docs for ClipboardButton (#27451) 2020-09-08 19:18:13 +03:00
Russ
248c195cca Slider: add step functionality (#27399) 2020-09-08 19:00:16 +03:00
Alex Khomenko
32f99669ff Search: refactor tests to use react-testing-library (#27352)
* Search: refactor SearchItem.test.tsx

* Search: refactor SearchResults.test.tsx

* Search: mock search_srv

* Search: refactor SearchResultsFilter.test.tsx

* Search: remove redundant mocks

* Search: fix type errors

* Search: move selectors to e2e-selectors
2020-09-08 18:01:38 +03:00
Arve Knudsen
d1358596a8 CircleCI: Fix front-end tests (#27455)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-08 15:51:36 +02:00
Peter Holmberg
cf2597421b Analytics: Respect appsuburl in tracking url (#27442)
* add suburl if it exists

* remove log

* remove another log
2020-09-08 15:38:04 +02:00
Arve Knudsen
823911b173 CircleCI: Ensure only 2 Jest workers for frontend tests (#27450)
* CircleCI: Fix OOMs during frontend tests

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-08 15:31:22 +02:00
Arve Knudsen
581d2eaaf4 Revert "Convert CloudWatch to use dataframes (#26702)" (#27448)
This reverts commit 7762839853.
2020-09-08 15:06:58 +02:00
Arve Knudsen
029278faeb CI: Add Google Cloud SDK to plugin CI Docker images (#27444)
* grafana-plugin-ci-alpine: Upgrading Go,golangci-lint, adding gcloud

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

* grafana-plugin-ci: Upgrading Go,golangci-lint, adding gcloud

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

* grafana-plugin-ci-alpine: Minor cleanup

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

* Don't specify depth when cloning Mage

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

* grafana-plugin-ci-e2e: Upgrading Go, golangci-lint

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

* ci-deploy: Upgrading gcloud

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

* Update packages/grafana-toolkit/docker/grafana-plugin-ci-alpine/README.md

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

* grafana-plugin-ci-alpine: Install Python

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

Co-authored-by: Will Browne <wbrowne@users.noreply.github.com>
2020-09-08 15:06:32 +02:00
kay delaney
584913197e Docs: Add documentation for Explore Query Inspector (#27035)
* Docs: Add documentation for Explore Query Inspector
2020-09-08 13:27:20 +01:00
Dominik Prokop
377485cf4c Panel view: Make sure repeated panel has inView property set correctly (#27424)
* Make sure repeated panel has inView property set correctly

* Test

* Update public/app/features/dashboard/state/DashboardModel.ts

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

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-09-08 14:19:54 +02:00
Marcus Andersson
02d19f0380 Transformations: make sure that we copy all the values from a field when using MutableDataFrame. (#27446) 2020-09-08 14:01:42 +02:00
Arve Knudsen
7762839853 Convert CloudWatch to use dataframes (#26702)
* CloudWatch: Convert metrics queries to return data frames

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-08 13:35:17 +02:00
Melchior MOULIN
dfc78d0979 Explore: Transform prometheus query to elasticsearch query (#23670)
* Explore: Transform prometheus query to elasticsearch query

Enable a way to transform prometheus/loki labels to elasticsearch query.
This make a link between metrics to logs.
Examples:
A prometheus query : rate(my_metric{label1="value1",label2!="value2",label3=~"value.+",label4!~".*tothemoon"}[5m])
Will be this elasticsearch query when switching to elasticsearch datasource:  __name__:"my_metric" AND label1:"value1" AND NOT label2:"value2" AND label3:/value.+/ AND NOT label4:/.*tothemoon/

* fix test

* remove non needed async

* Use prism token instead of regex

* fix test ./scripts/ci-frontend-metrics.sh

* mock timesrv and TemplateSrv in test

* Remove unnecessary await/async

Co-authored-by: Melchior MOULIN <m.moulin@criteo.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2020-09-08 12:34:11 +02:00
Ato Araki
561920f18b Cloud monitoring: fix missing title and text from cloud monitoring annotations (#27187)
* cloudmonitoring: fix empty title and text annotation

* cloudmonitoring: use metricQuery value
2020-09-08 13:18:41 +03:00
Torkel Ödegaard
6a9bfa19be Themes: Fix issue generating themes due to code in @grafana/data accessing window object during module load (#27441) 2020-09-08 12:16:26 +02:00
Marcus Andersson
f22f0a89a6 Transformations: merge will properly handle empty frames and frames with multiple rows where values are overlapping. (#27362)
* wip.

* Fixed issue with merge not behaving exactly as the old table panel did.

* Fixed so empty data frames will be exluded prior to trying to merge the result.

* Changed so if passing only empty frames first will only be returned.

* de-duplication of configuration in tests.
2020-09-08 11:52:45 +02:00
Torkel Ödegaard
5c31f07904 Settings: Remove unnessary error handling code (#27420)
* Settings: Remove unnecessary error handling code

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-08 11:33:04 +02:00
Alex Khomenko
6fabfee097 Search: replace cog icon (#27440) 2020-09-08 12:04:40 +03:00
Zoltán Bedi
09c9571462 Explore: table result should not override display property (#27411) 2020-09-08 11:04:25 +02:00
Emil Tullstedt
10141c5e6c Stats: Use more efficient SQL and add timeouts (#27390) 2020-09-08 09:52:08 +02:00
Alex Khomenko
2a2992b04d Grafana-UI: Add docs for ClickOutsideWrapper (#27429)
* Grafana-UI: Add docs and story for ClickOutsideWrapper

* Grafana-UI: Update comments

* Grafana-UI: expand usage

* Grafana-UI: Tweak docs
2020-09-08 10:34:27 +03:00
Pratik Raj
cfc618ef44 Use git clone --depth (#26976)
Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-09-08 09:27:10 +02:00
robert lestak
d0e980c2fa Alerting: Change Panel Edit link to Panel View link (#27378)
Enables alerts to be sent to users who do not have edit permissions.

Addresses Issue: https://github.com/grafana/grafana/issues/26014
2020-09-08 07:01:48 +02:00
Arve Knudsen
4b1eb6e5c7 Chore: Enable gocyclo linter (#26395)
* Chore: Enable gocyclo linter

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

* API: Fix linting issue

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

* API: Refactor to reduce complexity

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

* Fix type assertion

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-07 22:10:06 +02:00
Arve Knudsen
fb1f2746aa Chore: Upgrade build pipeline tool in scripts (#27433)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-07 22:09:24 +02:00
Marcos Mendez
4e94c0959a Image Store: Add support for using signed URLs when uploading images to GCS (#26840)
Enables creating signed URLs when uploading images to Google Cloud Storage. 
By using signed urls, not only is the public URL expiration configurable but the 
images in the bucket are not publicly accessible.

Fixes #26773

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-09-07 19:10:14 +02:00
Andrei Lavrov
8253b9ddb3 Alerting: override PagerDuty 'dedup_key' via tags (#27356)
* Alerting: override PagerDuty 'dedup_key' via tags

Added ability to override PagerDuty 'dedup_key' via Alert tags

Updated unit tests

* Updated documentation

* add comma

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

* add space

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-09-07 18:42:06 +02:00
Arve Knudsen
e71eb13386 scripts/ci-frontend-metrics.sh: Fix execution (#27434)
* scripts/ci-frontend-metrics.sh: Fix execution

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-07 18:39:47 +02:00
Domas
9acb99904a Elasticsearch: Fixes localized dates in index pattern (#27351)
Fixes #8403
2020-09-07 18:27:56 +02:00
Arve Knudsen
5402157cb7 CI: Upgrade grabpl (#27431)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-07 17:48:56 +02:00
Kamal Galrani
f6c31c2e10 Fixes signup workflow and UI (#26263)
* fixes signup flow

* Apply suggestions from code review

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

* Update ForgottenPassword.tsx

* fixes build failure

* fixes build failure

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
2020-09-07 18:24:46 +03:00
Agnès Toulet
6dd109b927 API: return resource ID for auth key creation, folder permissions update and user invite complete endpoints (#27419)
* API: add ID to auth key and folder endpoints

* API: add test for folder permissions update

* API: add created user id for /invite/complete endpoint
2020-09-07 17:06:11 +02:00
Torkel Ödegaard
61bd33c241 System: Date formating options (#27216)
* Add support for local time formats in graph panel

* Enfore 24h format for backward compatibility

* Use existing Intl.DateTimeFormatOptions

* Pre-generate time scale, add tests

* Move localTimeFormat, add local format to units

* updated default fallback

* #25602, use navigator.languages to enforce locale in formatting

* Making options

* Worked new system settings

* things are working

* Local browser time formats working

* Support parsing dates in different formats

* settings updated

* Settings starting to work

* Fixed graph issue

* Logs fix

* refactored settings a bit

* Updated and name change

* Progress

* Changed config names

* Updated

* Updated

* Updated test

* Synced description

* fixed ts issue

* Added version notice

* Ts fix

* Updated heatmap and test

* Updated snapshot

* Updated

* fixed ts issue

* Fixes

Co-authored-by: Alex Shpak <alex-shpak@users.noreply.github.com>
2020-09-07 16:19:33 +02:00
kay delaney
783391a861 CloudWatch Logs: Adjusts CloudWatch Logs timeout logic (#26621)
* CloudWatch Logs: Adjusts CloudWatch Logs timeout logic

Previously CloudWatch Logs queries would time out if,
after a number of attempts, a response was received with no additional data.
This commit changes the behavior so that a consecutive number of requests
yielding no additional data must be made before we cancel the query
2020-09-07 14:41:36 +01:00
Arve Knudsen
58af541321 Drone: Report front-end test metrics (#27395)
* Drone: Report front-end test metrics

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

* ci-frontend-metrics.sh: Fix collection bugs; print JSON

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

* Add Yarn script ci:test-frontend
2020-09-07 13:17:03 +02:00
Bill Oley
b70fefe642 OAuth2: Handle DEFLATE compressed JWT payloads for generic OAuth (#26969) 2020-09-07 11:42:11 +02:00
Sofia Papagiannaki
b3b28e9f25 Failed to load application files message improvement (#26214)
* Failed to load application files message improvement

* Apply suggestions from code review

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-09-07 10:53:13 +03:00
Ryan McKinley
f7be1ba030 Chore: update pappparse for security fix (#27412) 2020-09-06 21:22:54 -07:00
Hugo Häggmark
72c3257d19 BackendSrv: Uses credentials and defaults to same-origin (#27385)
Co-authored-by: Liu Yang yangliuyu@163.com
2020-09-04 22:11:34 +02:00
Torkel Ödegaard
b6d76cdba7 PanelEdit: Vertically align padding for panel edit option group body (#27310)
* PanelEdit: Center padding for panel edit group body

* fixed padding
2020-09-04 22:03:26 +02:00
Kenny
d16a1f2215 Time format: 0 seconds is a number (#27376) 2020-09-04 11:12:54 -07:00
kay delaney
444f2d5896 Dependencies: Adds @testing-library/user-event for best practices (#27397)
Adds @testing-library/user-event so that best practices can be followed
when writing tests
2020-09-04 16:38:27 +01:00
Peter Holmberg
8e063ea82c Docs: Add props documentation to FileUpload component (#27393) 2020-09-04 16:28:51 +02:00
Agnès Toulet
a9daaadd50 API: send Login actions (#27249)
* API: first version to send events about login actions

* API: improve login actions events

* Login: update auth test with new behavior

* Login: update auth test for auth module

* Login OAuth: improve functions structure

* API: make struct public to use for saml

* API: add send login log tests for grafana and ldap login

* API: remove log from tests

* Login API: fix test linting

* Update pkg/api/login_oauth.go

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

* Login API: refactor using defer

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2020-09-04 14:54:59 +02:00
Pranit Bauva
a54df0c3cd Login: Honour root_url for Forget Password related links (#27368)
Closes #27226
2020-09-04 13:58:22 +02:00
Hugo Häggmark
bba4770509 PanelInspector: Adds a Raw display mode but defaults to Formatted display mode (#27306)
* PanelInspector: Fields with overrides are formatted correct in CSV

* Refactor: adds raw format

* Refactor: changes switch to Formatted values

* Tests: adds tests for applyRawFieldOverrides and getRawDisplayProcessor

* Test: change to utc timeZone

* Refactor: changes after PR comments
2020-09-04 11:21:24 +02:00
Ryan McKinley
ae385983f4 InfluxDB: support flux editor for template queries (#27370) 2020-09-03 14:11:39 -07:00
Ryan McKinley
b867050cfb Annotations: improve datasource annotation types and add basic query properties (#27342) 2020-09-03 10:41:25 -07:00
Marcus Andersson
cac0e6ecd0 Build: fixing failing build by adding missing dependency to rollup config. (#27358) 2020-09-03 15:34:18 +02:00
Arve Knudsen
ddb4b77f04 CI: Upgrade the build Docker image (#27337)
* CI: Upgrade the build Docker image

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

* CI: Upgrade osxcross and Apple SDK

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-03 13:20:28 +02:00
Alexander Zobnin
7aa38f0961 Docs: note about enabling permissions for the default data source (#27259)
* Add note about enabling permissions for the default ds

* Docs: refine default ds caution message

* Update docs/sources/enterprise/datasource_permissions.md

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

* Docs: DS permissions minor fix

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-09-03 13:23:35 +03:00
Jess
92e4948658 Storybook: Create Label.mdx and add docs (#27350) 2020-09-03 11:47:00 +02:00
Jess
0b6ea4c0ef Storybook: Add docs to Cascader (#27336)
* Storybook: Add docs to Cascader

Added description for cascader component

* Update packages/grafana-ui/src/components/Cascader/Cascader.mdx

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-09-03 10:08:09 +03:00
Hugo Häggmark
d633cc3c09 Tests: removes unused stuff and replaces monaco transpile with mock (#27324) 2020-09-03 08:54:46 +02:00
Ryan McKinley
febbc60e8b RangeUtils: migrate logic from kbn to grafana/data (#27347) 2020-09-02 23:54:06 -07:00
Steven Vachon
6c5a0421fe @grafana/e2e: improve types (#27348) 2020-09-02 20:37:23 -04:00
Szymon Szypulski
a8db544e85 Cloudwatch: Update list of AmazonMQ metrics and dimensions (#27332)
Update list of AmazonMQ metrics and Dimensions based on the current list
from the official AWS documentation.

Also, change InflightCount to InFlightCount.
2020-09-02 21:32:43 +02:00
Diana Payton
76a167365d Update cloudmonitoring.md (#27341) 2020-09-02 15:07:12 -04:00
Diana Payton
67467c0eaa Docs: Update index.md (#27312)
* Update index.md

* Update index.md

Removed an extra "then" from line 34.

Co-authored-by: achatterjee-grafana <70489351+achatterjee-grafana@users.noreply.github.com>
2020-09-02 11:15:32 -07:00
Diana Payton
e66e31a78d Docs: Update postgres.md (#27315) 2020-09-02 09:19:46 -07:00
Nitesh Koushik S
3fd6452377 Docs: Documentation Update (#27338)
Updating Query Syntax, Query had an additional bracket, which was removed.
2020-09-02 07:46:51 -07:00
Diana Payton
15c72c2739 Docs: Updated data links content (#27110)
* updated content

* updated content

* Update data-link-variables.md

* Update global-variables.md

* updated content

* Update best-practices-for-managing-dashboards.md

* Update docs/sources/linking/data-link-variables.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update docs/sources/linking/data-link-variables.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update docs/sources/linking/data-link-variables.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update docs/sources/linking/data-link-variables.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update docs/sources/linking/data-links.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update docs/sources/linking/dashboard-links.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>

* Update dashboard-links.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.org>
2020-09-02 07:07:31 -07:00
Arve Knudsen
19c8097595 Chore: Upgrade to Go 1.15.1 (#27326)
* Chore: Upgrade to Go 1.15.1
2020-09-02 15:51:19 +02:00
Torkel Ödegaard
636dd96c28 DateFormats: Default ISO & US formats should be consistent and not change if current date is today (#27300)
* DateFormats: Default iso / US formats should be consistent and not change if current date is today

* rename and updated tests

* Updated changelog
2020-09-02 14:43:43 +02:00
Carl Bergquist
20747015f6 Annotation: Add clean up job for old annotations (#26156)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-09-02 08:07:31 +02:00
Ryan McKinley
0bc67b032a InfluxDB: return a table rather than an error when timeseries is missing time (#27320) 2020-09-01 15:06:38 -07:00
Hugo Häggmark
ff1149ac39 Table: Adds column filtering (#27225)
* Table: Adds column filters

* Refactor: adds filter by value function

* Refactor: some styling and sorting

* Refactor: Moves filterByValue to utils

* Tests: add filterByValue tests

* Refactor: simplifies filteredValues

* Refactor: adds dropshadow

* Refactor: keeps icons together with label and aligns with column alignment

* Refactor: hides clear filter if no filter is active

* Refactor: changes how values in filter are populated

* Refactor: adds filterable field override

* Tests: fixed broken tests

* Refactor: adds FilterList

* Refactor: adds blanks entry for non value labels

* Refactor: using preFilteredRows in filter list

* Refactor: adds filter input

* Refactor: fixes issue found by e2e

* Refactor: changes after PR comments

* Docs: adds documentation for Column filter

* Refactor: moves functions to utils and adds tests

* Refactor: memoizes filter function

* Docs: reverts docs for now
2020-09-01 17:06:35 +02:00
Michel Engelen
aff9e931ce Table: Set table cell height to 100% (#27309)
## Table

### changed
- adjusted tablecell styles to have 100% height
2020-09-01 16:19:55 +02:00
Torkel Ödegaard
1f6c2dbcfb Thresholds: Fixed issue with thresholds in overrides not working after save and reload (#27297)
* WIP: Fix null thresholds in overrides when loading

* Fix thresholds on load instead of in apply field overrides

* simplify expression

* fixed ts issue

* Updated test

* Updated another test

* Updated another test
2020-09-01 16:00:38 +02:00
Peter Holmberg
d07755b624 Docs: Drawer component (#27267)
* Add documentation and example to mdx

* Update packages/grafana-ui/src/components/Drawer/Drawer.mdx

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>

* Update packages/grafana-ui/src/components/Drawer/Drawer.mdx

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>

* Fix button and update text

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-09-01 14:12:23 +02:00
Alex Khomenko
f323ae6b67 Docs: Add report settings section (#26946)
* Docs: Update report features

* Docs: Add info about custom time range

* Docs: Add Settings section

* Docs: Update text

* Update docs/sources/enterprise/reporting.md

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

* Update docs/sources/enterprise/reporting.md

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

* Update docs/sources/enterprise/reporting.md

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

* Update docs/sources/enterprise/reporting.md

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

* Update docs/sources/enterprise/reporting.md

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

* Update docs/sources/enterprise/reporting.md

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

* Update reporting docs

* Clarify docs

* Add settings image

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-09-01 14:40:25 +03:00
Carl Bergquist
8faaa1a520 OAuth: Increase state cookie max age (#27258)
60s can be too short if the oauth provider is slow
for some reason and its defintly too slow if the
OAuth provider requires 2FA.

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-09-01 10:57:43 +02:00
Hugo Häggmark
8ec2aa02c6 Loki: Replaces dataSourceRequest with fetch (#27265)
* Loki: Replaces dataSourceRequest with fetch

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

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2020-09-01 06:21:21 +02:00
Lee
fb2538ce1d Docs: correct the misspelled word (#27283) 2020-08-31 09:06:27 -07:00
Torkel Ödegaard
4b8f4df18d Graph: Preseve existing data links in field config when loading dashboard (#27295)
* Graph: Preseve existing data links in field config

* ts fix
2020-08-31 17:53:21 +02:00
Kyle Brandt
06323b8e52 AzureMonitor: select plugin route from cloudname (#27273)
* AzureMonitor: select plugin route from cloudname
fixes #27243
2020-08-31 11:10:31 -04:00
Diana Payton
42e8cb51ec Update CODEOWNERS (#27298) 2020-08-31 08:02:36 -07:00
Alex Khomenko
b45d5ec594 Grafana-UI: Add Collapse docs (#27291)
* Grafana-UI: Add Collapse docs

* Grafana-UI: Add comments

* Clarify description
2020-08-31 17:48:03 +03:00
Totalus
7db42f0a3c Transformations: Adding group by and aggregate on multiple fields transformation
* Adding Occurences transformer

* Adding test for Occurences Transformer

* Cleanup. Adding a test.

* Adding doc

* Modifying UI to support custom calculations options

* Implementing data transformation

* Finalizing calculations implementation

* Cleanup

* Using Fields instead of arrays in data grouping

* Renaming transformation to GroupBy

* Adding some doc

* Apply suggestions (solving TS typing errors)

Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>

* Tweaking UI

* Preventing of selecting twice the same field name.

* Removing console print. No calculations by default.

* Forgot to add the current value to the GroupBy selector

* Solving some typing issues and prettyfier errors

* Cleanup

* Updating test

* Ensure proper copy of options (solves some issues)

* Check if the fields exist in the data before processing

* Adding missing import in test file

* If group by field not specified, return all data untouched.

* Adding another missing import in test

* Minor updates

* Implementing GroupBy multiple fields + Improve field typing

* Removing console prints

* Allowing the exact number of fields to be added as aggregation

* Centering remove button icon

* Cleanup

* Correcting TS error

* Chaging transformer options structure

* Sorting so GroupBy fields appear on top

* Cleanup

* Simplifying some operations. Adding curly brackets.

* Changing some labels on the UI

* Updating test

* Cleanup

* Updating doc

* Fixed field list. Storing options as Record instead of Array.

* Update test

* Cleaned up the group by editor UI code.

* changed the transform to a table layout instead of a flexbox layout.

* cleaned up group by transformer.

* removed unused imports.

* Added some more tests.

* Added one more test and cleaned up code.

* fixed failing test.

* Fixed so we we have the proper casing on naming.

* fixed so we don't wrap on the first row.

Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2020-08-31 10:46:30 +02:00
Jess
fe6d399fad Storybook: Add vision statement to intro page (#27228)
* Storybook: Add vision statement to intro page

Added the vision statement compiled by the Grafana Labs design system knights to the grafana-ui intro section. Feedback and further improvement ideas welcome!

* Review feedback part 1

_fixed headline formatting
_removed numbered list
_removed paragraph "A library of unified components and styles"
_renamed all occurrences to @grafana/ui
_replaced "ideate" with "determine together"
2020-08-31 11:07:59 +03:00
Dominik Prokop
6dbb803b3f Transformations: enable transformations reordering (#27197)
* Transformations: enable queries reorder by drag and drop

* Satisfy ts

* Update unicons and replace ellipsis with draggabledot

* remove import

* Remove that snap

* Review

* review 2
2020-08-31 08:47:27 +02:00
Steven Vachon
1a69bcfeff @grafana/e2e: improvements (#27170)
* Minor changes

* Changed default panel screenshot name

* Removed default visualization type from `addPanel` config

... which, unless defined, will use the app's default (graph). This is the new approach for plugins which supports annotations.

* Select timezone from dashboard toolbar instead of settings

... and refactored `setDashboardTimeRange` for reuse on other pages via a now more generalized `setTimeRange`

* Added optional annotations to `addDashboard` config

* Added `explore` flow

… which reuses `configurePanel` which is very similar
2020-08-28 17:03:22 -04:00
Steven Vachon
46d7c3f814 @grafana/e2e-selectors: fix to qualify as not aria-label (#27274) 2020-08-28 14:25:08 -04:00
David
11a96459ba Docs: Added "Disable metrics lookup" explanation
Done in Prometheus datasource docs.
2020-08-28 19:42:12 +02:00
Steven Vachon
611d416f91 Selector improvements for E2E (#27271) 2020-08-28 12:59:56 -04:00
Torkel Ödegaard
7d72837d40 DataFrame: Data source field naming control that does not use field.config.displayName (#27186)
* Field naming simple fix

* fixed unit tests

* Updated to use displayNameDS config

* Update packages/grafana-data/src/types/dataFrame.ts

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

* Updated name

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-08-28 18:22:01 +02:00
Joan López de la Franca Beltran
57b2d08755 Core: Add go-grpc-middleware dependency (#27231) 2020-08-28 15:33:21 +02:00
Marcus Olsson
d9630c5b71 Docs: Add docs for updating variables from plugin (#27247)
* Add docs for updating variables from plugin

* Update reference

* Update docs/sources/developers/plugins/add-support-for-variables.md

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

* Fix review comments

* Fix review comments

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-28 11:09:35 +02:00
Steven Vachon
7c49d6d944 Fix core E2E CI (#27254) 2020-08-27 18:23:35 -04:00
Steven Vachon
70fb4afe74 Fix Cypress dependency error (#27252) 2020-08-27 17:14:28 -04:00
Agnès Toulet
27c6042dbf Docs: Fix SAML config field (#27250) 2020-08-27 17:45:53 +02:00
Steven Vachon
c45cf83776 @grafana/e2e: selector improvements (#27235)
* Added labels and selectors for explore page

* Added selector for annotations

* Used selector for time picker label
2020-08-27 10:36:24 -04:00
Alex Khomenko
8238c46350 Grafana-UI: FieldValidationMessage tweaks (#27246)
* Grafana-UI: Export FieldValidationMessage

* Grafana-UI: Add alert role to FieldValidationMessage
2020-08-27 16:35:01 +03:00
Diana Payton
005e048c01 Docs: minor fixes (#27233) 2020-08-27 06:26:57 -07:00
Russ
c730e659e3 Add FieldArray component (#26993) 2020-08-27 15:38:04 +03:00
Ivana Huckova
58627a0c38 Loki: Re-introduce running of instant queries (#27213)
* Run instant queries for loki

* Add catch for instant query errors, update test
2020-08-27 10:32:36 +02:00
kay delaney
262a42b249 UI/ClickOutsideWrapper: Adds parent prop for situations where event should be on document (#27221) 2020-08-27 09:18:34 +01:00
Torkel Ödegaard
093477c036 Dashlist: Tweaked design of folder addition (#27241) 2020-08-27 09:49:07 +02:00
Torkel Ödegaard
5e27654298 Dashboard: Ignore cancelled api request error when loading dashboard (#27232) 2020-08-27 08:55:26 +02:00
Diana Payton
1e8b10ef05 Docs: Add best practices (#27057)
* added content

* adding content

* Update best-practices-for-creating-dashboards.md

* moved strategies.md

* updating content

* Update best-practices-for-creating-dashboards.md

* Update best-practices-for-managing-dashboards.md

* Update best-practices-for-creating-dashboards.md

* Update best-practices-for-managing-dashboards.md

* Update best-practices-for-creating-dashboards.md

* content updates

* Update common-observability-strategies.md

* Update best-practices-for-managing-dashboards.md

* Update best-practices-for-managing-dashboards.md

* Update dashboard-management-maturity-levels.md

* updated menu

* Update dashboard-management-maturity-levels.md

* added Torkel tips

* Update best-practices-for-creating-dashboards.md

* Update docs/sources/best-practices/best-practices-for-creating-dashboards.md

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>

* Update docs/sources/best-practices/best-practices-for-managing-dashboards.md

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>

* Update docs/sources/best-practices/best-practices-for-managing-dashboards.md

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

* Update docs/sources/best-practices/dashboard-management-maturity-levels.md

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

* Update docs/sources/best-practices/dashboard-management-maturity-levels.md

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

* Update best-practices-for-creating-dashboards.md

* DavKal updates

* Update best-practices-for-creating-dashboards.md

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2020-08-26 08:31:19 -07:00
Dan Cech
66c6b20c4b Update cloud docs link (#25545) 2020-08-26 10:19:11 -04:00
Alex Khomenko
ff1a931f6f Grafana-UI: Form - inherit HTMLFormElement props (#27227) 2020-08-26 16:29:01 +03:00
Alex Khomenko
a1e6090008 Grafana-UI: BarGauge docs (#27188)
* Grafana-UI: Add mdx file

* Grafana-UI: remove _BarGauge.scss

* Grafana-UI: Update snapshot

* Grafana-UI: Fix tests

* Grafana-UI: Use selector
2020-08-26 14:44:08 +03:00
Arve Knudsen
4cd42ed898 Chore: Simplify settings loading code (#26404)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-26 13:11:57 +02:00
Simon Podlipsky
7121d1e63f Chore: Use uuid v4 as an identifier instead of Date.now() (#27178) 2020-08-26 11:38:39 +02:00
Amir Szekely
c5a7afce44 Fix AWS action name (#27205)
The action name is `tag:GetResources`, not `tags:GetResources`. This creates a confusing error message that can have the user add the wrong permission to the IAM role.
2020-08-26 11:01:50 +02:00
Hugo Häggmark
fcb3130076 e2e: Adds error catching to prevent flakiness (#27211)
* e2e: Adds error catching to prevent flakiness

* e2e: fixes if statment and cleans up wait
2020-08-26 10:15:34 +02:00
Michel Engelen
ad2e74d1fe Dashboard: Adds folder name and link to the dashboard overview on the homepage (#27214)
* Chore: Added foldername to the dashboard overview on the startpage

## Dashlist

### added
- new `<span>` containing `dash.folderTitle`
- styling for the newly created `<span>`

### changed
- added sass-nesting to classes in `_panel_dashlist.scss`

closes #26869

* Chore: Added foldername to the dashboard overview on the startpage

## Dashlist

### changed
- added `ng-if` directive to the dashlist-folder span

* Chore: Added foldername to the dashboard overview on the startpage

## Dashlist

### changed
- added folder-icon and removed brackets to indicate `folderTitle`
- changed font-size of folderTitle-`span` and added left margin
2020-08-26 10:13:20 +02:00
Steven Vachon
4d14ebaacc Added aria-label to dashboard timezone picker (#27203)
... for E2E tests
2020-08-25 15:43:01 -04:00
Zoltán Bedi
86e44eec02 Prometheus: fix rate_interval to use min step properly (#27168)
* Prometheus: fix rate_interval to use min step properly

* Update docs/sources/features/datasources/prometheus.md

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

* Simplify `getRateIntervalScopedVariable` (#27174)

Signed-off-by: beorn7 <beorn@grafana.com>

* Modify rate_interval tests to use createQuery

* Change test wording + intervalfactor

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Björn Rabenstein <beorn@grafana.com>
2020-08-25 18:55:08 +02:00
Marcus Olsson
d1ee1d93c8 Add plugin migration guide (#27118) 2020-08-25 17:31:40 +02:00
Nitesh Koushik S
af97996ad1 Docs: Document Update (#27196)
Adding double quotes to make the sentence more meaningful.
2020-08-25 06:34:02 -07:00
Nitesh Koushik S
2ee79fefac Docs: Removing duplicate words (#27195)
Removing duplicate words
2020-08-25 06:33:07 -07:00
Nitesh Koushik S
18ccd2518a Docs: Spelling Correction (#27194)
Correction of the word selectorallows to selector allows
2020-08-25 06:32:22 -07:00
Will Browne
9feaa91bf5 Alerting: Store sensitive settings encrypted for Telegram notifier (#27122)
* encrypt bot token

* update docs

* re-add uploadImage to docs
2020-08-25 14:35:57 +02:00
Hugo Häggmark
e2c7ed4b82 Chore: Updates latest.json for Release 7.1.5 (#27192) 2020-08-25 12:46:31 +02:00
Hugo Häggmark
bf2f040fb9 Release 7.1.5 (#27177) 2020-08-25 12:08:01 +02:00
Joan López de la Franca Beltran
c91bfd8299 Core: Add loki/logproto dependency (#27124)
* Add grafana/loki dependency and update its dependencies

* Update grpcplugin log_wrapper to implement the latest version of hclog.Logger

* Remove panic handling + test case no longer needed since the source of panics (bug) was fixed
2020-08-25 11:52:21 +02:00
Fredrik Enestad
6a01bab67c Allow toggling of derived fields (#27148) 2020-08-25 11:37:19 +02:00
Alex Khomenko
f5ee1f93cd Grafana-UI: Alert components tweaks (#27128)
* Grafana-UI: Add Alert docs and story

* Grafana-UI: Move Alert styles to emotion

* Grafana-UI: Tweak docs

* Grafana-UI: Update test

* Grafana-UI: Add outline to custom content

* Grafana-UI: Remove class name

* Grafana-UI: Remove _Alert.scss

* Grafana-UI: Add e2e Alert selector

* Grafana-UI: Use @deprecated

* Grafana-UI: Remove circular reference

* Grafana-UI: Final tweaks
2020-08-25 11:06:58 +03:00
Torkel Ödegaard
88fbdd6716 DisplayProcessor: Show strings as strings (#27097)
* WIP: strings and numbers

* Works in displayProcessor but units are not applied in applyFieldOverride

* removed bit

* Updated

* Added docs

* fixed typo
2020-08-25 09:50:37 +02:00
Torkel Ödegaard
ddabf4ade1 Transforms: Labels to fields rewrite that uses merge transform inside it (#27125)
* testing things

* POC: Simplify labels to fields by using merge transform inside it

* removed old code

* Fixed test ts issues

* Added valueLabel field option

* Updated merge transform tests to not expect a sort

* fixed type

* refactoring to minimize nesting
2020-08-25 09:40:49 +02:00
Emil Tullstedt
d5687cce11 Stats: Correct the number of arguments for SQL call (#27182)
* Stats: Correct the number of arguments for SQL call

* Stats: Run admin stats call as integration test
2020-08-25 08:59:44 +02:00
Simon Podlipsky
84eb03e7e5 BackendSrv: Use uuid v4 as an identifier instead of Date.now() (#27176) 2020-08-25 08:58:21 +02:00
Ryan McKinley
cd9a773427 InfluxDB: use converters from SDK (#27138) 2020-08-24 13:19:32 -07:00
Will Browne
daaa3e571b Alerting: Store sensitive settings encrypted for Threema notifier (#27160)
* encrypt API secret

* update docs
2020-08-24 16:49:45 +02:00
Will Browne
30d6405c53 Alerting: Store sensitive settings encrypted for Pushover notifier (#27159)
* encrypt api + user keys

* update docs

* fix decrypt steps
2020-08-24 16:49:30 +02:00
Will Browne
bbbbf9ac42 Alerting: Store sensitive settings encrypted for LINE notifier (#27157)
* encrypt token

* update docs
2020-08-24 16:49:10 +02:00
Will Browne
ed6f0663c2 Alerting: Store sensitive settings encrypted for Sensu notifier (#27131)
* encrypt password

* update docs
2020-08-24 16:48:55 +02:00
Diana Payton
1502722129 Docs: Add FAQcontent (#27139)
* update content

* updated content

* update content

* Update graphite.md
2020-08-24 07:44:09 -07:00
kay delaney
b54c0b5d52 UI/ClickOutsideWrapper: Fix for undesirable timepicker behavior (#27164) 2020-08-24 15:38:36 +01:00
Kyle Brandt
1778e9f034 Alerting: remove LongToWide call in alerting (#27140)
causing issues and currently as we use it, the query
should be requesting it as part of the query model via fromat as time series
fixes #27132
2020-08-24 10:05:52 -04:00
Alex Khomenko
4a6268014a Grafana-UI: Add story and mdx file (#27152) 2020-08-24 14:13:28 +03:00
Dominik Prokop
f7950491a3 Field overrides: Overrides UI improvements (#27073)
* Add filter name by regex matcher for overrides

* Update docs

* Introduce UI improvements to overrides list

* Update public/app/features/dashboard/components/PanelEditor/OverrideEditor.tsx

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Review improvements

* Fix merge

* Remove ellipsis

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2020-08-24 12:07:44 +02:00
Emil Tullstedt
954a2811b3 Stats: Stop counting the same user multiple times (#26777)
* Stats: Cache based stats implementation

* Stats: Correct logic and add larger scale test

* Stats: linter

* Stats: SQL implementation

* Stats: cleanup SQL

* Stats: Tab -> Spaces

* Update pkg/services/sqlstore/stats.go

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

* Stats: Quote 'user' table with dialect.Quote

* Stats: Ensure test is run as integration test

* Stats: Use boolean value

...because if (v) { true } else { false } is unnecessary at best.

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-08-24 11:23:14 +02:00
Hugo Häggmark
09a1af3f91 Variables: Fixes issue with All variable not being resolved (#27151)
* Variables: Fixes issue with All variable not being resolved

* Tests: update tests according to changes
2020-08-24 09:29:21 +02:00
Yoan Blanc
69df8b424c Docs: zipkin links to Loki documentation (#27144) 2020-08-23 20:59:09 +02:00
Torkel Ödegaard
c80da5f2f9 Transformers: Removed display name from reduced fields (#27141) 2020-08-23 20:46:49 +02:00
Arve Knudsen
c207ea12a4 InfluxDB: Clean up tests (#27135)
* InfluxDB: Clean up tests

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

* InfluxDB: Platform agnostic paths

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-21 18:34:21 +02:00
Kyle Brandt
c724449d3d AzureMonitor: fix panic introduced in 7.1.4 (#27113)
happens when unit was "Unspecified" and alias is being used
2020-08-21 11:37:30 -04:00
Arve Knudsen
a6cc64290c CI: Upgrade build pipeline tool (#27120)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-21 11:42:57 +02:00
Arve Knudsen
d53fe64913 Server: Support custom TCP listener (#27066)
* Server: Support custom TCP listener

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-21 10:41:10 +02:00
Arve Knudsen
45adfe7732 Data sources: Use SQL store directly, not via bus (#27000)
* Server: Make it possible to avoid getting SQL store via bus

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2020-08-21 09:30:06 +02:00
Hugo Häggmark
a73e6f728d Prometheus: Use fetch instead of deprecated datasourceRequest (#27090)
* Prometheus: replaces dataSourcRequest with fetch

* Tests: fixes typings

* Refactor: removes unnecessary from operator

* Refactor: removes weird json() function calls

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

* Update public/app/plugins/datasource/prometheus/metric_find_query.test.ts

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2020-08-21 06:03:59 +02:00
Ryan McKinley
0fb7ee05d1 Chore: Minor cleanup (#27112) 2020-08-20 14:37:49 -07:00
Ryan McKinley
a2a6b9448f InfluxDB: exclude result and table column from Flux table results (#27081) 2020-08-20 10:52:46 -07:00
Arve Knudsen
34d9191ca7 Drone: Always pass --no-pull-enterprise (#27108)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-20 19:42:39 +02:00
Steven Vachon
04249ae7ad @grafana/e2e: improvements (#26939)
* Minor changes

* Added an `editPanel` flow function

... and moved the internals of `addPanel` to a common function for use by both

* Added optional template variables to `addDashboard` config

* Use latest Cypress 4.x version

* Updated lockfile
2020-08-20 13:15:25 -04:00
Will Browne
a3c3484286 Update latest to v7.1.4 (#27104) 2020-08-20 19:08:16 +02:00
Arve Knudsen
756b8fcdf0 Drone: Upgrade build pipeline tool (#27100)
* Drone: Upgrade build pipeline tool

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

* Run e2e via grabpl
2020-08-20 17:56:20 +02:00
Arve Knudsen
a8b57a2dd0 Update changelog (#27102)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-20 17:45:31 +02:00
Vishwa Krishnakumar
999009bd57 Docs: Added Zenduty Grafana integration to the Grafana notifications documentation page (#27069)
* Added Zenduty Grafana integration to the notifications page

Signed-off-by: Vishwa Krishnakumar <vishwa306@gmail.com>

* Added Zenduty Grafana integration to the list of notifiers table

Signed-off-by: Vishwa Krishnakumar <vishwa306@gmail.com>
2020-08-20 08:03:45 -07:00
Fredrik Enestad
e962f02fbc Explore/Loki: Toggle parsed fields in logs view (#26178)
* POC for toggling parsed fields in Explore/Loki

* fixed issues

* add clear button for toggled parsed fields

* fix test-frontend failures

* use blue eye instead of eye/eye-slash and update tooltips

* break out parseMessage

* move indicator to meta data section

* clean up LogRowMessageParsed

* better label

* clean up after making optional
2020-08-20 16:28:10 +02:00
Will Browne
9f2386a219 Alerting: Store sensitive settings encrypted for OpsGenie notifier (#27074)
* encrypt OpsGenie API key

* make whitespace consistent

* update docs
2020-08-20 16:05:48 +02:00
Alex Khomenko
6b2d44416d Testing: Use React Testing Library (#27072)
* Add RTL

* Add setupTests.ts

* Refactor DashboardSearch tests
2020-08-20 16:21:42 +03:00
Hugo Häggmark
3504009914 FolderPicker: Fixes not being able to create new folder (#27092)
* FolderPicker: Fixes not being able to create new folder

* Update public/app/core/components/Select/FolderPicker.tsx

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>

* Refactor: Fixes import issues for tests that do not mock GrafanaBootConfig

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-08-20 14:54:58 +02:00
Torkel Ödegaard
451af74728 Table: Support date unit formats on string values (#26879)
* DisplayProcessor: Support parsing strings as dates and using date units on strings

* Updated test

* Updated test
2020-08-20 12:50:45 +02:00
Hugo Häggmark
9e357d84a4 BackendSrv: Queues data source requests but passes through api requests (#26947)
* Refactor: initial commit

* wip

* Refactor: getting into a simpler model

* Refactor: adds some comments

* Refactor: renames statuses according to PR comments

* Refactor: adds more comments

* Tests: adds tests for FetchQueue

* Tests: adds tests for ResponseQueue

* Tests: adds tests for FetchQueueWorker

* Tests: simplified the tests for ResponseQueue

* Refactor: adds http2 scenario

* Refactor: using Cfg instead of global variable

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

* Refactor: reverted change in frontendsettings.go

* Tests: fix test mocks

* Fix: changes how cfg.Protocol gets its value

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-20 11:32:10 +02:00
Arve Knudsen
95432fb684 InfluxDB: Update Flux placeholder URL with respect to latest Go client (#27086)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-20 09:46:43 +02:00
Dominik Prokop
ed1b929fe5 Field overrides: Filter by field name using regex (#27070)
* Add filter name by regex matcher for overrides

* Update docs

* rever schema change

* add docs for by type

* add docs for by type

* add docs for by type

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-08-20 08:54:49 +02:00
Torkel Ödegaard
5aba6fde41 Rendering: Fixed issue rendering text panel to image via image renderer plugin (#27083)
Fixes #26996
2020-08-20 08:52:26 +02:00
Torkel Ödegaard
37b3087b2c PanelHeader: Fix issue with panel header text ellipsis showing before needed (#27082) 2020-08-20 08:51:59 +02:00
Ryan McKinley
cb82cf110f Overrides: expose byType matcher UI (#27056) 2020-08-19 13:10:57 -07:00
Sriramajeyam Sugumaran
98f8ec7c89 plugin.json schema updates (#27029)
* added $schema field support in plugin.schema.json

More details can be found in https://github.com/grafana/plugin-validator/issues/1

* Others category in plugin.json, minimum 1 keyword 

* Allow others as a category if the plugin doesn't fall into appropriate category. Refer https://github.com/grafana/plugin-validator/issues/3 for more details
* Mandate minimum one keyword for better discovery in plugin repository.

* Dropped enum from plugin.json $schema
2020-08-19 21:27:44 +02:00
Diana Payton
b4289a48f1 Docs: Update troubleshoot-queries.md (#27078)
* Update troubleshoot-queries.md

* Update troubleshoot-queries.md
2020-08-19 10:38:41 -07:00
Arve Knudsen
d0621b6054 Drone: Fix order of steps (#27076)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-19 17:20:15 +02:00
Kyle Brandt
660510084c AzureAnalytics: Use fillmode Null with format as time series (#27054)
previously was using fillmode previous, which is not what we want here.
Also we do not have fill missing with this data source anyways
Fixes #27013
2020-08-19 10:42:54 -04:00
kay delaney
a1f90521a0 CloudWatch Logs: Move query response stats to appropriate FrameMeta property (#26732)
* CloudWatch Logs: Move query response stats to appropriate FrameMeta property
2020-08-19 15:18:04 +01:00
Kyle Brandt
96babf1268 Alerting: copy queryType prop to tsdb.Query (#27053)
fixes #27048
2020-08-19 10:03:39 -04:00
Arve Knudsen
1717476984 Server: Add protocol to Cfg (#27071)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-19 14:39:13 +02:00
Arve Knudsen
3b248fccc8 Drone: Add Windows PR pipeline (#26589)
* Drone: Add Windows PR pipeline
* CI: Add Dockerfile for WiX image
2020-08-19 11:46:36 +02:00
Arve Knudsen
0e1e85656b InfluxDB: Upgrade InfluxDB in devenv (#26983)
* InfluxDB: Upgrade InfluxDB in devenv
* InfluxDB: De-export symbols
* InfluxDB: Remove unused code
* devenv: Make InfluxDB version configurable

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-19 09:23:11 +02:00
Marcus Olsson
689ca1be87 Add guide for sharing plugins (#27043)
* Add guide for sharing plugins

* Fix review comments
2020-08-19 09:01:07 +02:00
Hugo Häggmark
0755390286 MixedDatasource: Shows retrieved data even if a data source fails (#27024)
* MixedDatasource: Shows data for working data sources and error for erroneous

* Tests: remove funky import

* Tests: fixes types
2020-08-19 08:52:40 +02:00
Ivana Huckova
3d18c4d614 Pass scoped vars to create label (#27047) 2020-08-19 08:29:23 +02:00
Ivana Huckova
eafc132d3d Loki: Add scopedVars support in legend formatting for repeated variables (#27046)
* Pass scoped vars to createMetricLabel

* Add tests

* Refacotr

* Update tests

* Update test
2020-08-19 08:28:50 +02:00
Wojciech Sromek
918fb4d02a Docs: Example of provisioning InfluxDB v2 datasource (#27045)
* Docs: Example of provisioning InfluxDB v2 datasource

* Apply suggestions from code review

Suggested improvements

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-18 08:08:09 -07:00
Marcus Olsson
dd0b0fe0b1 Add instructions on how to format multiple variables (#27032)
* Add instructions on how to format multiple variables

* Update docs/sources/developers/plugins/add-support-for-variables.md

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

* Fix review comment

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-18 16:42:24 +02:00
Arve Knudsen
a2fbffe48a Server: Add health check route (#26999)
* Server: Add health check route

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

* Server: Remove health check middleware

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-18 14:58:08 +02:00
Zoltán Bedi
f33158dcdf Prometheus: parse value as number when label is le (#26375)
* Prometheus: parse value as number when label is le

* Convert prometheus table value back to string for modify query
2020-08-18 14:47:25 +02:00
Arve Knudsen
7896836deb Chore: Reduce TSDB Go code complexity (#26401)
* tsdb: Make code less complex
2020-08-18 14:43:18 +02:00
kay delaney
6145bf77cf UI/RefreshPicker: Change base from PureComponent to Component (#27031) 2020-08-18 08:12:14 +02:00
kay delaney
19930ee301 Dashboard: Panel menu no longer lingers (#26974)
Closes #26306
2020-08-17 22:54:48 +01:00
Kirchen99
5da3276db1 Dashboard: Use same min refresh interval fallback in the API as in provisioning (#25926)
* Dashboard: Solve the discrepancy between provisioning and the API, Handle min refresh interval when creating/updating dashboard via API

* Docs: Add refresh field in the example dashboard http api docs

* Update create dashboard API docs

Add refresh field in the create dashboard example response

* Fix create dashboard API docs

* Fix create dashboard API docs

* Update docs/sources/http_api/dashboard.md

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-17 12:00:10 -07:00
Sean Lafferty
900eb8070e Proxy: Fix updating refresh token in OAuth pass-thru (#26885)
* Handle updating refresh token in oauth pass-thru

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-17 18:38:32 +02:00
Arve Knudsen
9f1165b1f6 Drone: Remove intra pipeline caching commands (#27034)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-17 18:01:40 +02:00
Marcus Olsson
585543d707 Add guide on adding support for variable queries (#26810)
* Add guide on adding support for variable queries

* Fix review comments

* Update instruction for custom editor

* Update docs/sources/developers/plugins/add-support-for-variables.md

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>

* Update docs/sources/developers/plugins/add-support-for-variables.md

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

* Update docs/sources/developers/plugins/add-support-for-variables.md

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

* Fix review comments

* Fix review comments

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-17 12:00:33 +02:00
Marcus Olsson
7319527f71 Improve validation for grafanaDependency (#26936) 2020-08-17 11:59:43 +02:00
Marcus Olsson
338943d349 Add skipDataQuery to plugin.json schema (#26940)
* Add skipDataQuery to plugin.json schema

* Fix typo
2020-08-17 11:31:25 +02:00
Arve Knudsen
be3bf80749 InfluxDB: Upgrade to latest InfluxDB Go client (#27021)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-17 08:32:26 +02:00
Hugo Häggmark
bd75adf515 Templating: Fixes so texts show in picker not the values (#27002) 2020-08-17 07:04:27 +02:00
Arve Knudsen
50ebbb625e InfluxDB: Upgrade Go client, use data source HTTP client (#27012)
* InfluxDB: Upgrade Go client, use data source HTTP client

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

* Remove unnecessary Close

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-14 18:40:02 +02:00
Sofia Papagiannaki
6609ddb082 Docs: document TLS configuration for generic OAuth (#27006)
* Docs: document TLS configuration for generic OAuth

* use SSL/TLS term

* Update docs/sources/auth/generic-oauth.md

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

* Update docs/sources/auth/generic-oauth.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-14 19:22:39 +03:00
Emil Tullstedt
b68634fbb4 Tests: Batch of GoConvey to Testify conversions (#27008) 2020-08-14 14:43:25 +02:00
Sofia Papagiannaki
7ad1e3663c Playlists: Remove API validation for empty playlists and remove redundant API call (#26982)
* Remove validation from empty playlists

* Remove redundant API call

Frontend used to call /api/playlists/:id/items directly after /api/playlists/:id but items are already included in the first response
2020-08-14 11:59:50 +03:00
Ivana Huckova
bb0f17ce59 Loki: Fix refresh on time range change for template variable queries (#26968)
* Pass timerange and aadd tests

* Update test
2020-08-14 10:33:37 +02:00
Ivana Huckova
9698edbb13 Docs: Sort log result documentation (#26898)
* Add documentation for sort log result

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

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

* Capitalize deduping options

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-14 10:15:12 +02:00
Ivana Huckova
1915d10980 Remove brackets from escaped value if just 1 value (#26995) 2020-08-13 19:15:34 +02:00
Zoltán Bedi
aae25c5308 Prometheus: add $__rate_interval variable (#26937)
* Add rate interval variable to prometheus data source

* Add tests + auto complete

* Fix prometheus tests

* Add doc

* Modify test title

* Modify kbn method name after merge
2020-08-13 18:58:40 +02:00
Kyle Brandt
f9f60c9193 AzureMonitor: map more units (#26990)
add BitsPerSecond and Seconds
2020-08-13 12:57:16 -04:00
Arve Knudsen
c63bbbaec3 InfluxDB: Close Flux query results (#26917)
* InfluxDB: Drop ctxhttp usage
* InfluxDB: Clean up code
* InfluxDB: Close query results

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-13 17:50:53 +02:00
Arve Knudsen
d823b26b06 Drone/CircleCI: Upgrade build pipeline tool (#26854)
* Drone/CircleCI: Upgrade build pipeline tool

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

* Upgrade build pipeline tool in Docker scripts

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-13 16:04:34 +02:00
Joan López de la Franca Beltran
ef631582ba Users: Improve conflict error handling (#26958)
* API: Improve error handling (#26934)

* New ErrUserAlreadyExists error has been introduced

* Create user endpoint returns 412 Precondition Failed on ErrUserAlreadyExists errors

* Make ErrUserAlreadyExists error message clearer

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

* Use errors.Is instead of equality comparator on AdminCreateUser handler

* Improve sqlstore/user test definition

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

* Improve sqlstore/user tests for ErrUserAlreadyExists cases

* Remove no needed string fmt and err declaration on sqlstore/user tests

* Code improvements for sqlstore/user tests

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

* Use err.Error() instead of sentinel error value on AdminCreateUser

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

* Add ErrUserAlreadyExists handling for signup & org invite use cases

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-13 14:38:54 +02:00
Torkel Ödegaard
5398ef1103 Templating: Fixed recursive url update issue for textbox variable (#26981)
* Templating: Fixed recursive url update issue for textbox variable

* Updated link

* updated e2e
2020-08-13 14:38:27 +02:00
Ivana Huckova
eeeea7fb8d Explore: Capitalize dedup strategy in radio buttons for consistency (#26961)
* Update LogsDedupStrategy enum to keep consistent with radio button capitalization

* Revert "Update LogsDedupStrategy enum to keep consistent with radio button capitalization"

This reverts commit 0b05cd4e00.

* Capitalize dedup strategy in radio buttons
2020-08-13 11:40:58 +02:00
Emil Tullstedt
d664853179 Tests: Change util GoConvey tests to use testify (#26724) 2020-08-13 11:10:48 +02:00
Pratik Raj
3bed3248d9 Use --no-cache-dir flag to pip in Dockerfiles, to save space (#26978)
Use `--no-cache-dir` flag to `pip` in Dockerfiles, to save space

Signed-off-by: Pratik Raj <rajpratik71@gmail.com>
2020-08-13 10:04:31 +02:00
Arve Knudsen
9f159c5e3d grafana-cli: Fix file path processing, returning of errors (#26954)
* grafana-cli: Fix file path processing, returning of errors
2020-08-13 09:38:05 +02:00
Zoltán Bedi
75e14aa120 Chore: Let kbn util infer types (#26907)
* Chore: Let kbn util infer types

Type fixes where needed

* Address review comments + test fix

* Modify kbn method and property names to pascalCase
2020-08-13 09:35:32 +02:00
Lucas Raschek
6b1b52b704 Templating: Fixes renaming a variable using special characters or same name (#26866)
* Fix variable editor name-input bug

You couldn't delete an invalid character after typing it into the name-input field.
While investigating the issue turned out to be bigger, as there was a problem with
valid characters too. (See test scenarios below)

The fix seems to be, to remove an unnecessary check in the `changeVariableName`
action. There is theoretically now the possibility, that the `changeVariableName`
action is called with the same name, as the variable is already, but practically
there seems no possibility, that this could happen. A test, which checks that, had
to be removed too.

Test scenarios:
* 1st Scenario
    1. Type "@"
    2. Try deleting it
* 2nd Scenario
    1. Type "w"
    2. delete "w"
    3. Try typing "w" again

Fixes #26562

* Fix bug when updating existing variable
2020-08-13 06:52:32 +02:00
Nitesh Koushik S
18c2aaa10e Docs: Adding reference for the default database (#26950)
Adding reference for the default database type SQLite
2020-08-12 12:35:24 -07:00
hebbet
2755db6b4b Docs: Remove "currently in beta" (#26960)
7.1 is stable
2020-08-12 12:33:41 -07:00
martinrw
b1625955fe Docs: Mention httpMode in the docs (#26964) 2020-08-12 12:30:43 -07:00
Kyle Brandt
f432e153ca Dataframe/Alerting: to tsdb.TimeSeriesSlice - accept "empty" time series (#26903)
this is in order to trigger no data when used with alerting.
fixes #26897.

This is perhaps better solved in the SDK but that needs more thought and is tracked in grafana/grafana-plugin-sdk-go#214
2020-08-12 12:30:45 -04:00
Arve Knudsen
1698c74ec1 Chore: Fix tests for Go 1.15 (#26957)
* Chore: Fix tests for Go 1.15
2020-08-12 17:45:03 +02:00
kay delaney
a8f57b2ffd Datasource/CloudWatchLogs: Correctly interpolate variables for data links (#26929)
Closes #26792
2020-08-12 16:26:51 +01:00
kay delaney
751a07e3c5 Panel/BarGauge: Prevent overflow in panel with many series (#26926)
* Panel/BarGauge: Prevent overflow in panel with many series
Closes #24889
2020-08-12 16:26:18 +01:00
Adrián López
2093f7c1f0 grafana-cli: Fix installing of plugins missing directory entries in zip (#26945) 2020-08-12 17:08:12 +02:00
Benjamin Blattberg
3403db190d API: Support paging in the admin orgs list API (#26932)
* Add page/limit to org search

* Update docs

* Fix test per PR feedback
2020-08-12 10:59:07 +03:00
Ivana Huckova
214c1078aa Graphite: Show and hide query editor function popup on click (#26923)
* Update UX, only click on function can open and close popover

* Add ClickOutsideWrapper
2020-08-12 09:40:06 +02:00
Zoltán Bedi
826184c948 Docs: Use relref links for data sources in whats new docs (#26935) 2020-08-11 20:06:15 +02:00
Zoltán Bedi
ae30482465 Chore: MEGA - Make Eslint Great Again 💅 (#26094)
* Fix lint error in types.ts

* Bump eslint and its deps to latest

* Add eslintignore and remove not needed eslintrcs

* Change webpack configs eslint config

* Update package.jsons and removed unused eslintrc files

* Chore yarn lint --fix 💅

* Add devenv to eslintignore

* Remove eslint disable comments for rules that are not used

* Remaining eslint fixes 💅

* Bump grafana/eslint-config 💥

* Modify package.json

No need for duplicate checks.

* Modify eslintignore to ignore data and dist folders

* Revert removing .eslintrc to make sure not to use certain packages

* Modify package.json to remove not needed command

* Use gitignore for ignoring paths
2020-08-11 17:52:44 +02:00
kay delaney
e4da0fcb5e Dashboard/RefreshPicker: Prevents unnecessary redrawing of RefreshPicker (#26902)
Closes #26823
2020-08-11 15:36:50 +01:00
Diana Payton
eb985ffbee Docs: Add troubleshooting content (#26871)
* added folder and moved content

* added content

* updated content

* added content

* Update troubleshoot-dashboards.md

* added content
2020-08-11 06:56:06 -07:00
Zoltán Bedi
02e4c2bb9e Graphite: Fix test data source query options (#26906) 2020-08-11 12:41:34 +02:00
Arve Knudsen
1dd5b58e95 CI: Upgrade build image (#26904)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-10 19:13:59 +02:00
Arve Knudsen
3a362b758a CI: Upgrade golangci-lint and base image (#26892)
* CI: Upgrade build image to use golangci-lint 1.30.0

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

* Upgrade Debian base image

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

* Makefile: Upgrade golangci-lint

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-10 18:38:53 +02:00
Torkel Ödegaard
a49daf5676 BackendSrv: Improves logic for hiding requests from query inspector (#26877)
* BackendSrv: Improves logic for hiding requests from query inspector

* fixed tests

* Update explore query inspector
2020-08-10 16:08:11 +02:00
Ivana Huckova
ad33734424 Prometheus: Correctly format multi values variables in queries (#26896) 2020-08-10 15:36:15 +02:00
Hugo Häggmark
0a40862af5 Templating: Adds -- remove filter -- back to incomplete AdHoc filters (#26829) 2020-08-10 13:40:32 +02:00
Torkel Ödegaard
9a694b2b5a Graph: Revert bar centering to fix tooltip issue (#26876) 2020-08-10 10:59:12 +02:00
Torkel Ödegaard
6789c6ef39 Transformations: Remove beta notice from transformations and field overrides (#26881)
* Transformations: Remove beta badge for transformations and field overrides

* Removed imports

* Update doc links
2020-08-10 10:58:45 +02:00
Arve Knudsen
61041912d5 CI: Upgrade Go and Node versions in CI build image (#26888)
* Upgrade Go and Node versions in CI build image

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

* Upgrade Dockerfile to Go 1.14.7 and Node 12.18.3

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

* Upgrade Dockerfile.ubuntu to Go 1.14.7 and Node 12.18.3

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-10 10:45:35 +02:00
Hugo Häggmark
f92bc0994d TextPanel: Fixes issue when interpolation of variables stops working (#26847)
* TextPanel: Fixes issue when interpolation of variables stops working

* Tests: fixes broken typing in test

* Tests: updates e2e dashboard to html so we get the raw strings

* Tests: reverted back to markdown and fixed a bug
2020-08-10 06:38:22 +02:00
Timothy Palpant
7fe2b7037a Variables: Shows hide option labels on Safari (#26883) 2020-08-10 06:11:24 +02:00
kay delaney
d4e85e4857 Dashboard Links: Links kept in sync with dashboard time range (#26845)
Closes #26694
2020-08-09 23:27:18 +01:00
dependabot[bot]
2cd9b9a7b9 Chore(deps): Bump prismjs from 1.19.0 to 1.21.0 (#26875)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.19.0 to 1.21.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.19.0...v1.21.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-09 08:55:26 +02:00
Michel Engelen
e4885cc76f Chore: Added optional Icon to ButtonCascader (#26852)
## ButtonCascader

### added
- new prop `icon` with type `IconName`

### changed
- `icon` style is now `icons` with properties `left` and `right` for the respective icons

## ButtonCascader Story

### added
- new story `withIcon`
- new knob `icon`

### changed
- `icon` style is now `icons` with properties `left` and `right` for the respective icons

closes #23755
2020-08-08 11:25:40 +03:00
Steven Vachon
19e9e01178 @grafana/e2e: improvements (#26838)
* Minor changes

* Only expect login “change password” notification for default passwords

* Optionally populate basic auth when adding a datasource

* Optionally match screenshot when adding a panel
2020-08-07 15:38:44 -04:00
Diana Payton
158a474ee7 Docs: Update _index.md (#26561)
* Update _index.md

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

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-07 08:06:50 -07:00
Levente Balogh
6b1a80675f Grafana Toolkit: add an option for signing plugins as admin (#26817)
* feat(grafana-toolkit): add a flag to the plugin:ci-package command

* docs(grafana-toolkit): add a short comment above the flag

* fix(grafana-toolkit): fix option for signing a plugin with the admin endpoint
2020-08-07 15:34:30 +02:00
Arve Knudsen
9c81c7aa44 Chore: Upgrade Volta's pinned Node version (#26855)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-07 11:52:52 +02:00
Arve Knudsen
b1ddbaa395 CloudWatch: Fix sorting of metrics results (#26835)
* CloudWatch: Fix sorting of metrics results
2020-08-07 11:48:40 +02:00
Torkel Ödegaard
398bc045fc Orgs: Remove org deprecation notice as we have decided to preserve multi-org support (#26853)
* Orgs: Remove org deprecation notice

* Updated
2020-08-07 10:35:30 +02:00
Arve Knudsen
37c278c8f3 InfluxDB: Less chatty logging (#26850)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-07 09:18:57 +02:00
Jake Krammer
bf3dcc809d Admin: Fix updating organization name not updating configuration subtitle (#26315)
* Fix updating organization name not updating configuration subtitle

* PR feedback: Remove unnecessary square brackets

* Refactor code to update redux state in a safer way, add org action test

* Refactor updateConfigurationSubtitle test, remove jest.mock usage

* Consolidate dependency type
2020-08-07 09:00:44 +02:00
Lucas Raschek
eed313f312 Templating: Fix multi-select keyboard toggle bug (#26841)
Fixes #20953
2020-08-07 06:24:25 +02:00
Kyle Brandt
62b103b843 Azuremonitor: do not set unit if literal "Unspecified" (#26839)
part of #26828
2020-08-06 16:03:25 -04:00
Robby Milo
8107e735c1 Docs: update loki links, readme (#26548) 2020-08-06 12:40:12 -07:00
Kyle Brandt
577c9cd546 Docs: Azure logs - cross reference field configuration display name (#26804)
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-06 13:16:00 -04:00
Ivana Huckova
4a523c3248 Explore: Sort order of log results (#26669)
* Create sorting button and functionality

* Set up logs ordering

* Add tests

* Refactor

* Refactor

* Replace new button with old

* Move SortOrder enum to grafana/data

* Update SortOrder in test

* Update context based on sort order of logs

* Update used  method for panel, update tests

* Rename prop  to logsSortOrder

* Memoize resuults

* Add title too button

* Add disablinng of button for 1sec

* Update wordiing

* Update packages/grafana-data/src/utils/logs.ts

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>

* Update packages/grafana-data/src/utils/logs.ts

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>

* Update test by reordering logs

* Clear timers, add button flipping title

Co-authored-by: Zoltán Bedi <zoltan.bedi@gmail.com>
2020-08-06 18:35:49 +02:00
Torkel Ödegaard
4334e34366 Update latest.json (#26833) 2020-08-06 17:33:50 +02:00
kay delaney
02b12d3a7b Explore: Adds query inspector drawer to explore (#26698)
* Explore: Adds query inspector drawer to explore
2020-08-06 16:22:54 +01:00
Sriramajeyam Sugumaran
145d221983 Admin: Added missing enterprise plugins in upgrade page (#26825)
* Added missing enterprise plugins in upgrade page

Added missing enterprise plugins in upgrade page
* New Relic
* Amazon Timestream

* prettier fix
2020-08-06 15:22:50 +02:00
Torkel Ödegaard
06dda44573 Docs: Update changelog for 7.1.3 release (#26830) 2020-08-06 15:11:51 +02:00
Torkel Ödegaard
00769f19c2 E2E: Adding globals variables and interpolation format gdev test dashboard and e2e test (#26827) 2020-08-06 14:54:24 +02:00
Marcus Olsson
5a58f2b4c5 Update plugin metadata schema (#26720)
* Update plugin metadata schema

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

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-05 08:37:51 -07:00
Hugo Häggmark
e26745368e Chore: Update latest.json for 7.1.2 (#26809) 2020-08-05 16:14:23 +02:00
Ivana Huckova
541ce55670 Explore: Update tooltips for live tailing buttons (#26799)
* Update tooltips

* Update wordiing
2020-08-05 15:48:36 +02:00
Andreas Opferkuch
d4af373529 AppPlugin: Show exceptions in dev (#26795)
When NODE_ENV is dev, print exceptions that
bubble up from an app plugin to the console and
make developer aware of this instead of only
"404 Error".
2020-08-05 15:47:25 +02:00
Hugo Häggmark
325240fc83 Update CHANGELOG.md
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2020-08-05 06:27:46 -07:00
Hugo Häggmark
7054eb9d24 Chore: Updates Changelog for 7.1.2 2020-08-05 06:27:46 -07:00
Sofia Papagiannaki
754668cd51 Add missing entry from 7.1.0-beta1 changelog. (#26797) 2020-08-05 13:56:21 +03:00
Ivana Huckova
744e108b04 Explore: Run queries when queries imported (#26704) 2020-08-05 09:22:36 +01:00
Ryan McKinley
ec783fbff4 Fields: __field.name as field name and __field.displayName as displayName (#26531)
* name vs displayName

* name vs displayName

* add __values

* add docs for displayName expressions

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

* Update docs/sources/panels/field-configuration-options.md

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

Co-authored-by: kyle <kyle@grafana.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-08-04 21:22:14 -07:00
Ryan McKinley
9e5fe8dbdb Test datasource: fix query editor html partial (#26788) 2020-08-04 12:45:37 -07:00
Arve Knudsen
e6e5cc6e80 Chore: Simplify generic OAuth code (#26779)
* Generic OAuth: Simplify

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

* Rename test variables for consistency

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-04 18:28:53 +02:00
Maksim Nabokikh
b646a1d627 Provisioning: describe which folder caused an error while provisioning from files structure (#26771)
* Provisioning: describe which folder caused an error while provisioning from files structure

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>

* Apply suggestions from code review

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

* Apply suggestions from code review

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

* Remove unused DashType constants

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-04 09:03:09 -07:00
dependabot[bot]
49c4edb2cb Chore(deps): Bump lodash from 4.17.15 to 4.17.19 (#26417)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-04 17:37:29 +02:00
dependabot[bot]
b72be0d3c7 Chore(deps): Bump elliptic from 6.5.1 to 6.5.3 (#26740)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.1 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.1...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-04 17:36:38 +02:00
Arve Knudsen
e344ff01ec SQL: Fix missing org error messages (#26785)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-08-04 17:06:37 +02:00
Ivana Huckova
150778df1a Explore/Loki: Remove regex parsing errors for huge logs (#26405)
* Remove hihglihting for logs with more than 5000 characters

* Update limitt, include also parsing for details

* Update
2020-08-04 14:37:07 +02:00
Ivana Huckova
6a86e66d76 Query history: Fix search filtering if null value (#26768)
* Fix filtering if null value

* Add test coverage
2020-08-04 11:03:22 +02:00
Hugo Häggmark
353b3822c1 TimePicker: Fixes app crash when changing custom range to nothing (#26775) 2020-08-04 09:00:52 +02:00
Diana Payton
4e2ab785d6 Docs: Add preferences and password docs (#26628)
* Create change-your-password.md

* linked to menu

* Create preferences.md

* Update menu.yaml

* Update preferences.md

* Update docs/sources/administration/preferences.md

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

* Update docs/sources/administration/change-your-password.md

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

* Update docs/sources/administration/change-your-password.md

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

* Update preferences.md

* Update _index.md

Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2020-08-03 13:22:58 -07:00
Justin Palpant
85d0d6f7cd Add toggle to disable alert rendering line and fill on Graph panel (#25705)
* Squash four commits and claim.

Credit to @ikkemaniac in #25034, but taking this to sign CLA and get it landed. Four commit message were:

- add 'fill' switch on Alert Tab
- add 'fill' to Alert init model. Make default value 'true' not to break current design
- use newly created alert.fill when rendering graph
- add 'line' switch on Alert tab, add 'line' to Alert init model. Set default to 'true' not to break current design. Use newly created alert.line when rendering graph

Should close feature req #7258.

* Move alert toggle to Display tab.

* Move alertThreshold to PanelModel.options.

* Fix ThresholdMapper tests by adding options to each mocked panel.

* Update documentation for the new display option.

* Update docs with review feedback.

* Handle onRender with null panel in ThresholdMapper
2020-08-03 09:50:36 -07:00
Diana Payton
0706ec5d00 Docs: Organize variables (#26738)
* Moved files to folder and updated links

* fixed links

* Update _index.md

* Update templates-and-variables.md
2020-08-03 09:10:27 -07:00
Ryan McKinley
0e3b4e8ccc Chore: update rxjs (#26749) 2020-08-03 09:02:02 -07:00
Ryan McKinley
a532f463c7 Heatmap: use the standard unit picker component (#26751) 2020-08-03 09:01:38 -07:00
Alexander Zobnin
df11cdad62 Generic OAuth: customize login and id_token attributes (#26577)
* OAuth: add login_attribute_path to generic oauth

* OAuth: remove default client_secret values (able to use empty client_secret)

* OAuth: allow to customize id_token attribute name

* Docs: describe how login_attribute_path and id_token_attribute_name params work

* Docs: review fixes

* Docs: review fixes

* Chore: fix go linter error

* Tests: fix test code style
2020-08-03 17:33:27 +03:00
Karine Valença
fa7c4d91aa Docs: Storybook - Spinner (#26754)
* add docs for spinner component

* fix lint

* Code review fixes
2020-08-03 16:34:09 +03:00
Sofia Papagiannaki
41f7bccb24 Cloud monitoring: do not create deep link if there are no timeseries (#26737) 2020-08-03 09:28:03 +03:00
Ryan McKinley
f9df580016 Inspector: hide invalid stats (#26750) 2020-08-01 08:35:54 -07:00
Simon Podlipsky
094254c0c6 Formats: Add raw format to formatRegistry (#26743) 2020-07-31 15:15:52 -07:00
Paul Sneddon
a0c1e53fd0 Flux: Increase series limit for Flux queries (#26746) 2020-07-31 15:14:58 -07:00
Paul Sneddon
ec756f3729 Flux: Ensure connections to InflxuDB are closed (#26735)
* Flux: Ensure connections to InflxuDB are closed
2020-07-31 23:11:51 +02:00
Arve Knudsen
7589b1b517 OAuth: Refactor user syncing (#26721)
* OAuth: Refactor user syncing

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

* Don't ignore error

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-31 20:29:27 +02:00
Diana Payton
5cf8759ac0 Update graph-panel.md (#26734) 2020-07-31 10:09:43 -07:00
Alex Khomenko
9b532a7834 Grafana-UI: Make TimeOfDayPicker value optional (#26703) 2020-07-31 17:10:20 +03:00
Marcus Olsson
fa4084f90a Docs: Add plugins guide on error handling (#26518) 2020-07-31 07:07:03 -07:00
Leonard Gram
c266f45858 LDAP: users without org mappings are marked as disabled (#26650)
* LDAP: users without org mappings are marked as disabled

* Update pkg/services/ldap/ldap.go

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

* LDAP: verifies that unmapped users are tagged as isDisabled

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-31 14:41:31 +02:00
Arve Knudsen
35c67606ce Chore: Use errors.Is for comparing errors (#26719)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-31 10:16:49 +02:00
Arve Knudsen
16c185c3b9 Chore: Drop xerrors dependency (#26718)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-31 09:45:20 +02:00
Arve Knudsen
5a6afd9096 OAuth: Add some debug logs (#26716)
* OAuth: Add some debug logs

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-31 09:41:13 +02:00
Agnès Toulet
8dc75f79f7 API: Enrich endpoints with ID (#26691) 2020-07-31 08:22:09 +02:00
Diana Payton
5cc65df32b Update documentation-style-guide.md (#26706) 2020-07-30 11:31:49 -07:00
Ivana Huckova
bf835af74b Prometheus: Add backslash escaping for template variables (#26205)
* Run query on splitOpen action

* Escape \ in prometheusRegularEscape

* Revert "Run query on splitOpen action"

This reverts commit 3559b6c573.

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2020-07-30 18:07:22 +02:00
Ivana Huckova
bf5d52c5c7 Loki: Send current time range when fetching labels and values (#26622)
* Send current time range when fetching labels and values in Explore

* Pass range to Editors, in the same way as it was in Angular editors

* Remove unused imports

* Remove unused imports, props

* Update

* Update

* Update refresh condition

* Add comment
2020-07-30 18:04:20 +02:00
Arve Knudsen
d88864f376 Fix language in backend.md (#26701)
* Fix language in backend.md

* Update contribute/style-guides/backend.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-30 17:48:41 +02:00
Andreas Opferkuch
ed950842bd ThemeContext: Fix useStyles return type (#26696)
Still returned `any` because the type of memoizedStyleCreator wasn't declared properly.
2020-07-30 16:03:44 +02:00
Maksim Nabokikh
ba2524cd88 Provisioning: Add validation for missing organisations in datasource, dashboard, and notifier configurations (#26601)
* Provisioning: Check that org. from config exists

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>

* Apply suggestions from code review

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

* Fix some code after applying suggestions

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>

* Add negative test case

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-30 12:59:12 +03:00
Torkel Ödegaard
3f21283655 Annotations: Ignore cancelled annotation queries (#26681) 2020-07-30 10:23:39 +02:00
Torkel Ödegaard
eb0b9de044 Inspect: Fix link to error tab from panel header (#26682) 2020-07-29 13:34:08 -07:00
Torkel Ödegaard
3075b71848 TextPanel: Remove semicolon in markup (#26680) 2020-07-29 13:33:39 -07:00
Arve Knudsen
e08972d567 login/social: Simplify test (#26679)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-29 19:52:26 +02:00
Agnès Toulet
7a5464fe10 Chore: use Wrap for all admin API (#26673)
* Chore: use Wrap for all admin API

* API: fix admin tests
2020-07-29 18:00:14 +02:00
Emil Tullstedt
ec76d69b49 Chore: Update developer guide to reflect changes to go get (#26646) 2020-07-29 11:23:46 +02:00
waqark3389
642e904048 Show FileSystemId as a dimension key (#26662)
FileSystemId can be used to filter by filesystem ID if needed. Right now it just returns blank
2020-07-29 09:35:07 +03:00
Torkel Ödegaard
ef223d4143 Dashboard: Fixed disable draggable panels on correct breakpoint (#26636) 2020-07-29 08:27:49 +02:00
Alex Khomenko
0b8ad9176d Grafana-UI: Reverse TimeRangeInput range pickers (#26652)
* Grafana-UI: Reverse TimeRangeInput range pickers

* Grafana-UI: Add comment

* Grafana-UI: Update snapshots
2020-07-28 19:09:20 +03:00
Artem Kuchumov
2ba0083784 Docker: Don't upgrade packages when installing (#24132) (#26055) 2020-07-28 17:07:23 +02:00
Torkel Ödegaard
34c2f440db Templating: Fixed access to system variables like __dashboard, __user & __org during dashboard load & variable queries (#26637)
* Templating: Fixed access to system variables like __dashboard, __user & __org during dashboard load & variable queries

* Fixed tests
2020-07-28 16:05:29 +02:00
kay delaney
b28594477d Explore: Simplifies rich history drawer animation logic (#26633)
Changes the logic of the rich history drawer animation to use
CSS animations rather than a timer and react state
2020-07-28 14:17:20 +01:00
Massimiliano Ungheretti
977bf2eca4 Potential fix for missing newlines in jsonexplorer (#26590)
Relates to https://github.com/grafana/grafana/issues/26584
2020-07-28 10:14:51 +02:00
Levente Balogh
bdbea6d1f2 fix(Toolkit/Plugin): throw an Error instead of a string (#26618) 2020-07-28 08:41:32 +02:00
Torkel Ödegaard
17605033a2 Docs: Update changelog (#26638) 2020-07-28 08:25:31 +02:00
Mert Açıkportalı
6aef1f84cb Dashboard: Implement Duplicate DashboardLink Feature (#26600)
* Dashboard: Implement duplicate dashboard link feature

* Dashboard: Change duplicate and remove button types of DashboardLinks
2020-07-28 07:35:00 +02:00
Torkel Ödegaard
cbe1d7b08c StatPanel: Fix stat panel display name not showing when explicitly set (#26616)
* StatPanel: Fix stat panel display name now showing when explicitly set

* StatPanel: Updarted auto mode to also take panel title into consideration

* fixed test
2020-07-28 07:28:50 +02:00
Torkel Ödegaard
cfac143244 TemplateSrv: Refactoring out all formats to a formatRegistry (#26607) 2020-07-28 07:27:59 +02:00
Diana Payton
0d933b79b7 Docs: Update global-variables.md (#26627) 2020-07-27 13:09:42 -07:00
Torkel Ödegaard
6c49fdb57d TemplateSrv: Formatting options for ${__from} and ${__to}, unix seconds epoch, ISO 8601/RFC 3339 (#26466)
* TemplateSrv: WIP date formats

* Templating: formats with arguments

* WIP docs updates

* Docs: Updated docs

* fixed spelling

* Update docs/sources/variables/global-variables.md

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

* Update docs/sources/variables/global-variables.md

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

* Update docs/sources/variables/global-variables.md

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

* Update docs/sources/variables/global-variables.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-27 20:47:59 +02:00
Torkel Ödegaard
e3ea725387 Dashbard: Fix refresh interval settings to allow setting it to equal min_refresh_intereval (#26615) 2020-07-27 20:47:14 +02:00
Torkel Ödegaard
ff6919173a Gauge: Fix display name showing for only single series (#26617) 2020-07-27 20:26:22 +02:00
Torkel Ödegaard
cc0a8464ff QueryOptions: Fix not being able to change cache timeout setting (#26614) 2020-07-27 20:25:49 +02:00
Diana Payton
76230215c5 Docs: Update notifications.md (#26624) 2020-07-27 08:42:25 -07:00
Richard Hartmann
9bbebdcac1 Change conduct contact email address (#26619)
Signed-off-by: Richard Hartmann <richih@richih.org>
2020-07-27 14:41:27 +02:00
Leonard Gram
d17ba95492 Docs: logging in the docker container (#26119)
* Docs: logging in the docker container

* Docs: wording

* Update docs/sources/installation/configure-docker.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-27 10:06:00 +02:00
Ryan McKinley
339138d61a Live: include a streaming event manager (#26537) 2020-07-27 00:26:16 -07:00
Torkel Ödegaard
3defb4441e Settings: Remove global variable (#26613) 2020-07-26 23:36:36 -07:00
Torkel Ödegaard
ae3c285312 TextPanel: Fix content overflow issue (#26612) 2020-07-27 08:00:57 +02:00
Diana Payton
f4ec92215b Docs: Delete migrating_to2.md (#26593)
* Delete migrating_to2.md

* Update upgrading.md
2020-07-26 16:55:01 +02:00
tofurky
9d68a1fa62 Units: Remove duplicate SI prefix from mSv and µSv (#26598) 2020-07-26 16:53:35 +02:00
Jake Utley
95ef0417cf TablePanel: Add support for basic gauge as a cell display mode (#26595) 2020-07-26 16:52:42 +02:00
Éamon Ryan
9ce7fdc130 Fix grammar in cloudwatch plugin page. (#26596)
"Your metrics", not "you metrics".
2020-07-25 11:58:10 +02:00
Diana Payton
000b6c3021 Docs: Added folder permission content (#26594) 2020-07-24 14:20:24 -07:00
Torkel Ödegaard
93a4b8e8e4 TimePicker: Fix position and responsive behavior (#26570)
* TimePicker: Fix position and responsive behavior

* Updated snapshots
2020-07-24 16:48:02 +02:00
Simon Podlipsky
96bc16c63e Chore: Bump caniuse lite (#26501) 2020-07-24 16:47:44 +02:00
Ivan Kopeykin
c654e2bfda Storybook: Use bare specifier @grafana/ui in public stories (#26563) 2020-07-24 16:41:44 +02:00
Leonard Gram
e6a027d905 update latest to 7.1.1 (#26588) 2020-07-24 16:21:44 +02:00
Leonard Gram
3ed1c14237 changelog 7.1.1 (#26586) 2020-07-24 16:17:31 +02:00
Arve Knudsen
349e7b2d70 Drone: Reduce parallelism of certain steps to conserve memory (#26582)
* Drone: Reduce parallelism of front-end tests to avoid OOM

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

* Drone: Reduce parallelism of various steps to avoid OOM

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-24 14:58:50 +02:00
Arve Knudsen
94d0934e90 CloudWatch: Fix a few API status codes (#26578)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-24 12:34:56 +02:00
Arve Knudsen
49b86e88ac Drone: Identify Drone runner for each pipeline (#26573)
* Drone: Identify Drone runner for each pipeline
2020-07-24 10:13:21 +02:00
Sofia Papagiannaki
5e73a92327 DashboardImport: Fix variable interpolation when property contains multiple variable expressions (#26574) 2020-07-24 11:12:44 +03:00
Oana Mangiurea
ca9418ea80 Update TextArea.mdx (#26225)
clarify form validation text

Co-authored-by: Clarity-89 <homes89@ukr.net>
2020-07-24 10:31:08 +03:00
Arve Knudsen
2446ee08f1 CloudWatch: Fix passing of namespace for getting custom metrics (#26515)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-24 08:37:24 +02:00
Sofia Papagiannaki
ad4f8b7091 Alerting: Change settings column type to mediumtext (#26549)
* Alerting: Change settings column type to mediumtext

* Remove unnecessary newline
2020-07-24 08:40:06 +03:00
Torkel Ödegaard
1df4f71197 Dashboard: Restore panel edit permission check, fixes 26555' (#26556) 2020-07-24 07:29:33 +02:00
Diana Payton
a94745af00 Docs: Add variable examples (#26565)
* Update repeat-panels-or-rows.md

* Update dashboard-links.md

* Create variable-examples.md

* Update menu.yaml

* Update variable-examples.md

* Update variable-value-tags.md

* Update variable-examples.md

* Update variable-value-tags.md
2020-07-23 16:27:22 -07:00
Ryan McKinley
ad5f1c953b Graph: support setting field units (#26529) 2020-07-23 11:00:19 -07:00
Patrik Karlström
43ef052d57 cloudwatch: Consolidate client logic (#25555)
* cloudwatch: Consolidate client logic

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-23 18:52:22 +02:00
Kim Nürnberger
80edbbe314 Docs: Add dependencies for debian buster to image rendering plugin (#26452) 2020-07-23 09:47:40 -07:00
Ivana Huckova
44f0200a58 Fix self cloosing bracket to display input (#26552) 2020-07-23 16:37:00 +02:00
Arve Knudsen
102448040d SQLite: Set 0640 permissions on SQLite database file (#26339)
* SQLite: Set 640 permissions on SQLite database file
2020-07-23 15:47:26 +02:00
Andrej Ocenas
37aa35ca45 Docs: Remove TODO from the CloudWatch docs (#26543) 2020-07-23 13:46:13 +02:00
Ruan Bekker
b972963934 Cloudwatch: Add af-south-1 region (#26513)
* Adds af-south-1 region to cloudwatch datasource

* Fix test

Co-authored-by: Sofia Papagiannaki <papagian@gmail.com>
2020-07-23 14:02:25 +03:00
Agnès Toulet
2e931a0ee1 LDAP: fix LDAP test with special chars in username (#26539) 2020-07-23 12:42:30 +02:00
Agnès Toulet
1ba95183f6 HTTPServer: add possibility to use additional middlewares (#26514) 2020-07-23 09:54:07 +02:00
Yuriy Vidineev
b12d08d9de change the year in email templates (#26507) 2020-07-23 10:25:39 +03:00
Arve Knudsen
415638cdda Chore: Use interfaces where possible (#26392)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-23 08:17:20 +02:00
Arve Knudsen
3a8854b1b9 API: Recognize dashboard errors when saving a folder (#26499)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-23 08:15:47 +02:00
Arve Knudsen
4c56eb3991 Chore: Enable goprintffuncname and nakedret linters (#26376)
* Chore: Enable goprintffuncname linter
* Chore: Enable nakedret linter

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-23 08:14:39 +02:00
Diana Payton
9b17fe436c Update documentation-style-guide.md (#26534) 2020-07-22 14:52:16 -07:00
Diana Payton
e30f6b4e40 Docs: Update export_import.md (#26141) 2020-07-22 09:59:19 -07:00
Zoltán Bedi
cd8049d8a3 Add errorIconColor prop to TraceSpanData (#26509) 2020-07-22 18:52:00 +02:00
Diana Payton
d0e15561c7 Docs: Put curl examples into separate topic (#26530) 2020-07-22 09:48:10 -07:00
Diana Payton
975e9d665e Docs: Update share_dashboard.md (#26140) 2020-07-22 09:09:23 -07:00
Alexander Zobnin
183f767e18 Docs: add report grid layout option description (#26520) 2020-07-22 19:02:40 +03:00
Josh Soref
7d08a8497a Chore: fix spelling of GitHub (#26182)
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-22 08:12:50 -07:00
Diana Payton
a13a9e2ef6 Docs: Add data source, interval, and ad hoc variable tasks (#26504)
* Create add-data-source-variable.md

* Update templates-and-variables.md

* Update menu.yaml

* Update add-interval-variable.md

* Update menu.yaml

* Update templates-and-variables.md

* Update add-interval-variable.md

* Update add-interval-variable.md

* ad hoc filters

* Update templates-and-variables.md

* Update templates-and-variables.md

* Update add-ad-hoc-filters.md
2020-07-22 08:11:52 -07:00
Zoltán Bedi
7b218b7198 Explore: parse queryType from explore url (#26349)
* Explore: parse queryType from explore url

* Modify explore.ts parse logic
2020-07-22 16:36:53 +02:00
Zoltán Bedi
ba50e96544 Jaeger: Add stack trace to span detail row (#26427)
* Add stack trace to span detail row

* Modify accordian text not to have a whitespace

* Modify stackTrace to stackTraces

* Modify AccordianText ti get text component as prop

* Fix typecheck and test failure

* Span details text area do not wrap line
2020-07-22 16:14:34 +02:00
waqark3389
fabd879cbe CloudWatch: Add FreeStorageCapacity (#26503)
* Add FreeStorageCapacity metric in AWS/FSx namespace
2020-07-22 16:11:53 +02:00
Torkel Ödegaard
7417ff015d Dashboard: Fix empty panels after scrolling on Safari/iOS (#26495) 2020-07-22 13:42:29 +02:00
kay delaney
8584c2d2d5 DataSourceSettings: Hide custom HTTP header options when access mode is browser (#26481)
Closes #26422
2020-07-22 12:40:52 +01:00
Ivana Huckova
85f3a999f3 Fix matrics comparison to know when to refresh (#26382) 2020-07-22 13:29:30 +02:00
Arve Knudsen
f9239a4d6c Chore: Upgrade build pipeline tool (#26510)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-22 13:00:18 +02:00
Diana Payton
358c2d7031 Docs: Add cURL examples to folder_dashboard_search.md (#26461)
* Update folder_dashboard_search.md

* Update docs/sources/http_api/folder_dashboard_search.md

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

* Update docs/sources/http_api/folder_dashboard_search.md

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

* Update docs/sources/http_api/folder_dashboard_search.md

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

* Update docs/sources/http_api/folder_dashboard_search.md

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

* Update folder_dashboard_search.md

* Update folder_dashboard_search.md

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-21 13:27:49 -07:00
Marcus Olsson
2613ed85a6 Docs: Fix inconsistencies in plugin guide for annotations (#26480) 2020-07-21 12:51:38 -07:00
Diana Payton
03d97788ab Docs: Update postgres.md (#26467)
* Update postgres.md

* Update docs/sources/features/datasources/postgres.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-21 08:33:23 -07:00
Diana Payton
bd7c26257d Docs: Add variable topics - custom, constant, text box (#26471)
* moved some content into other topics

* Update variable-value-tags.md

* Update variable-selection-options.md

* Update add-query-variable.md

* Update templates-and-variables.md

* Create add-custom-variable.md

* Update menu.yaml

* Update templates-and-variables.md

* Update templates-and-variables.md

* editing content

* Create add-text-box-variable.md

* added links

* content updates

* update-content

* Update templates-and-variables.md

* Update menu.yaml

* Update add-constant-variable.md

* Update add-constant-variable.md

* Update docs/sources/variables/add-query-variable.md

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

* Update docs/sources/variables/variable-value-tags.md

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

* Update docs/sources/variables/variable-value-tags.md

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

* Update docs/sources/variables/variable-value-tags.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-21 08:33:10 -07:00
Kyle Brandt
fb5ff6a70f Azure: Insights metrics - do not sort if no data (#26486)
fixes #26473
2020-07-21 10:24:55 -04:00
gastonqiu
f427f90a45 Chore: Aggregate save dashboard error (#26443)
* Chore: Aggregate save dashboard error
* Use errors package for error detection

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-07-21 11:12:01 +02:00
kay delaney
3c72b2f988 Units: Allow re-scaling nanoseconds up to days (#26458)
Closes #26428
2020-07-21 09:06:59 +01:00
Ivana Huckova
8663f1b323 Docs: Time regions add info about UTC timezone (#26407)
* Add UTC info to docs

* Revert formaatting
2020-07-21 09:41:00 +02:00
stephffuller
bc3220cdc0 Docs: Update Azure instructions (#26337)
* Docs: Update Azure instructions

Update Azure instructions to match new Azure UI

* Update docs/sources/auth/azuread.md

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

* Update docs/sources/auth/azuread.md

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

* Update docs/sources/auth/azuread.md

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

* Update docs/sources/auth/azuread.md

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

* Update azuread.md

* Update azuread.md

* Apply suggestions from review

Co-authored-by: Kyle Brandt <kyle@kbrandt.com>

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
2020-07-20 12:39:23 -07:00
Ryan McKinley
5d09e4539c Azure: convert azure units to grafana units (#26429) 2020-07-20 12:29:13 -07:00
Arve Knudsen
c208c7cabe Remove repo trigger filter (#26465)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-20 20:51:13 +02:00
Daniel Lee
5a885ce26c docs: customMetricsNamespaces for Cloudwatch provisioning (#26457) 2020-07-20 16:58:20 +02:00
kay delaney
6ccba48ee6 Datasources list: Search now respects datasource type (#26456)
Closes #26399
2020-07-20 15:49:20 +01:00
Alex Khomenko
9c3f47aa23 Grafana-UI: Pass timeZone to TimePickerButtonLabel (#26454) 2020-07-20 16:57:14 +03:00
Zoltán Bedi
43033ddf74 Jaeger: upstream fix for hovering on log lines (#26426)
* Jaeger: upstream fix for hovering on log lines

* Modify active style to change border color only
2020-07-20 13:16:02 +02:00
Torkel Ödegaard
fba329f3ac BackendSrv: Fix error alert logic (#26453) 2020-07-20 11:31:51 +02:00
Arve Knudsen
9486f960d1 Docs: Fix documentation about dashboards.default_home_dashboard_path (#26445)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-20 10:05:48 +02:00
Maksim Nabokikh
a1f40195be Provisioning: Validate that datasource access field equals to direct or proxy (#26440)
* Validate that datasource access field equals to allowed value (direct or proxy)
2020-07-20 10:01:25 +02:00
Arve Knudsen
c298653623 Drone: Use base64 encoded GCP key (#26438)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-18 17:31:47 +02:00
Arve Knudsen
e4be332b78 Drone: Protect GCP_KEY (#26436)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-18 14:38:23 +02:00
Ben RUBSON
c65cef2327 Branding: Use AppTitle as document title (#26425)
* Branding: Use AppTitle as document title

* Missing Branding include
2020-07-17 22:07:42 +02:00
Marcus Efraimsson
44d4e63d6f Docs: Alert notification channel secure settings and provisioning (#26420)
* Docs: Alert notification channel secure settings and provisioning

* Update docs/sources/installation/upgrading.md

* Update docs/sources/installation/upgrading.md

* Update docs/sources/installation/upgrading.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-17 11:35:36 -07:00
Diana Payton
a85bbee6f6 Update whats-new-in-v5.md (#26297)
Fixec broken link
2020-07-17 19:11:28 +02:00
Dominik Prokop
718b78c4ce Bring back scripts evaluation in TextPanel (#26413) 2020-07-17 18:00:58 +02:00
Arve Knudsen
1d21f3aec5 Drone: Fix master builds (#26414)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-17 17:47:07 +02:00
Daniel Lee
21a02b557a docs: updates to whats new 7.1 (#26410)
* docs: updates to whats new 7.1

Added some missing features, fixed links and rewrote some sentences.

* Update docs/sources/guides/whats-new-in-v7-1.md

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

* Update docs/sources/guides/whats-new-in-v7-1.md

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

* Update docs/sources/guides/whats-new-in-v7-1.md

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

* Update docs/sources/guides/whats-new-in-v7-1.md

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

* Update docs/sources/guides/whats-new-in-v7-1.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-17 17:34:27 +02:00
Arve Knudsen
01afa76cce Drone: Fix master builds (#26409)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-17 17:20:25 +02:00
Torkel Ödegaard
3c1346d83a BackendSrv: Fix error alert logic (#26411) 2020-07-17 17:01:21 +02:00
Agnès Toulet
903c76415c Docs: Add how to replace home dashboard (#26237)
* Docs: how to replace home dashboard

* add overrides explanation

* change home dashboard v2

* Apply feedback for home dashboard doc

* home dashboard doc v3

* Apply feedback on home dashboard doc
2020-07-17 15:43:09 +02:00
Arve Knudsen
f003e3b009 Drone: Fix StoryBook build (#26408)
* Drone: Fix StoryBook build

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

* Drone: Fix StoryBook publishing

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-17 15:30:43 +02:00
Mitsuhiro Tanda
528a61b86b Alerting: Store sensitive settings encrypted for alertmanager notifier (#26318)
Ref #25967
2020-07-17 13:56:06 +02:00
Marcus Efraimsson
7969d6645a Provisioning: Support alert notification channel secure settings (#26168)
Closes #25968
2020-07-17 13:54:01 +02:00
Arve Knudsen
8746a77407 Drone: Enable master branch testing (#26367)
* Drone: Refactor

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

* Drone: Add master pipeline

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-17 13:52:09 +02:00
Arve Knudsen
a03177e960 Chore: Enable misspell linter (#26393)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-17 13:44:33 +02:00
Alex Khomenko
7b183971fd Grafana-UI: Enable empty time range (#26320)
* Grafana-UI: Enable empty time range

* Grafana-UI: Add clearable prop

* Grafana-UI: Update types

* Grafana-UI: Use InputTimeRange type

* Grafana-UI: Remove InputTimeRange type

* Grafana-UI: Fix clear icon hover color
2020-07-17 14:04:05 +03:00
kay delaney
f93c289fed Datasource/CloudWatch: Fix some react errors (#26236) 2020-07-17 11:10:32 +01:00
Besart Berisha
373e869652 Explore: show meta data when available (#25798)
* Return valid metadata even if data is empty

* Make sure fields is not accessed when there is no data

* Meta Info should depend only on meta data

* Refactor condition for better reading

* Change data to empty array for better condition handling

* Remove unecessary checks

* Add test for showing metaData even when data is empty
2020-07-17 10:30:27 +02:00
Anton Dollmaier
7a11ed91cb Docs: Fix markdown typos (#26386)
fixed some markdown code format in the debian install docs.
2020-07-16 15:55:50 -07:00
Kyle Brandt
5f0be93e47 docs: fix broken markdown link in 7.1 what is new (#26379) 2020-07-16 12:24:18 -04:00
Dan Cech
85f6addfd3 Update getting started link (#26374) 2020-07-16 11:27:08 -04:00
Dominik Prokop
e5b6e641ec Update latest.json to 7.1.0 2020-07-16 17:17:14 +02:00
Dominik Prokop
5eefbab59b Update CHANGELOG.md 2020-07-16 16:21:09 +02:00
Dominik Prokop
d0e6822a81 Update CHANGELOG.md 2020-07-16 16:21:09 +02:00
Dominik Prokop
06c14a10dc Update CHANGELOG.md 2020-07-16 16:21:09 +02:00
Dominik Prokop
523c651c63 Update CHANGELOG.md 2020-07-16 16:21:09 +02:00
Dominik Prokop
5d3ff8f00b Update changelog for 7.1.0 2020-07-16 16:21:09 +02:00
kay delaney
1124da56d6 Queries: Move explore state out of query targets (#26203)
* Datasource/CloudWatch: Interal vars no longer sent with query requests

Closes #26202
2020-07-16 14:00:28 +01:00
Arve Knudsen
d4e4cb4c71 Chore: Enable Go linter gocritic (#26224)
* Chore: Enable gocritic linter

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-16 14:39:01 +02:00
Jérome Perrin
317c7b269c Emails: use https for links and images (#25957)
* emails: use an https image for the logo

Some mail clients do not like http images.

* emails: use an https:// link for "getting started"

* email: doc.grafana.com for Getting Started link

review suggestions from https://github.com/grafana/grafana/pull/25957

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-07-16 12:06:39 +02:00
Mitsuhiro Tanda
92767f00e0 Alerting: Store sensitive settings encrypted for pagerduty notifier (#26319)
Store pagerduty integration key in secure setting.

Ref #25967
2020-07-16 10:53:35 +02:00
Marcus Efraimsson
b97d1f4170 Provisioning: Fix bug when provision app plugins using Enterprise edition (#26340)
In OSS provisioning service init after plugin registration, but in
Enterprise it's the opposite order and installed app plugin check
fails. This adjusts service registry init priority to make sure plugins
are registered before provisioning inits.

Which issue(s) this PR fixes:
Fixes #26336
2020-07-16 10:36:08 +02:00
Arve Knudsen
35f7f7b50a Drone: Rename publish-storybook to build-storybook (#26360)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-16 09:25:07 +02:00
Torkel Ödegaard
6619cc4b81 Loki: Fix error handling (#26291)
* Loki: Fix error handling

* Keep custom error processing for escaping

* Fix failing test

Co-authored-by: Ivana <ivana.huckova@gmail.com>
2020-07-16 07:45:26 +02:00
Kyle Brandt
cdec395fef Docs: Time series dimensions and labels (#26299)
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-15 16:29:00 -04:00
Kyle Brandt
c980f37509 Azure: Insights Analytics, fix possible panics and return error body (#26361)
missing return statements can result in panic
2020-07-15 15:55:10 -04:00
Ivana Huckova
21971a4df8 Update bg color based on theme (#26359) 2020-07-15 20:27:28 +02:00
Arve Knudsen
5fe27ee959 Fix back-end tests on Windows (#26355)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-15 20:09:03 +02:00
Zoltán Bedi
5046e54918 Suggestion: render documentation as markdown in suggestion's info (#25953)
* Panel: render documentation as markdown in TypeaheadInfo

* Modify TypeaheadInfo to sanitize markdown output
2020-07-15 19:05:51 +02:00
Sofia Papagiannaki
9d8ae39108 Cloud monitoring: Add query parameter (#26354) 2020-07-15 19:31:17 +03:00
Diana Payton
42dfdabdba Docs: Update license-expiration.md (#26344) 2020-07-15 07:47:02 -07:00
Kyle Brandt
590702c497 Azure: Handle real type nan/inf values in Log/Insights Analytics (#26342)
Before this, if the user were to divide by 0.0, "Infinity" would be returned in the result and the user would get an error: "unexpected type, expected json.Number but got string". Now these values are properly set as Inf values (and also made sure to handle NaN as well).
2020-07-15 09:39:41 -04:00
Ivana Huckova
3fd810417f Elasticsearch: Create Raw Doc metric to render raw JSON docs in columns in the new table panel (#26233)
* test

* WIP: Create v2 version

* Update tests, remove conosole logs, refactor

* Remove incorrect types

* Update type

* Rename legacy and new metrics

* Update

* Run request when Raw Data tto Raw Document switch

* Fix size updating

* Remove _source field from table results as we are showing each source field as column

* Remove _source just for metrics, not logs

* Revert "Remove _source just for metrics, not logs"

This reverts commit 611b6922f7.

* Revert "Remove _source field from table results as we are showing each source field as column"

This reverts commit 31a9d5f81b.

* Add vis preference for logs

* Update visualisation to logs

* Revert "Revert "Remove _source just for metrics""

This reverts commit a102ab2894.

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-15 15:20:39 +02:00
Ivana Huckova
5b2ff4498e Docs: Add derived field datasourceUid information (#26285)
* Add datasourceUid info

* Revert "Add datasourceUid info"

This reverts commit 84dce1dcfd.

* Add datasourceUid info

* Update docs/sources/features/datasources/loki.md

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

* Update derived fields info

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-15 14:22:19 +02:00
Dominik Prokop
dd3fcab144 Update whats new article with info about time zone selection (#26341) 2020-07-15 11:54:03 +02:00
kay delaney
1de810b26a Docs: Add info about logs/metrics unification to What's New docs (#26325)
* Docs: Add info about logs/metrics unification to What's New docs

* Apply suggestions from code review

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-15 10:34:16 +02:00
Alex Khomenko
208f95a76c Admin: Update org list after delete (#26277) 2020-07-15 10:35:00 +03:00
Torkel Ödegaard
23e93175d1 DashboardLinks: do not over-query search endpoint (#26311)
* DashboardLinks: WIP fix for dashboard links issue

* Make the dashboard links update on change(hacky)

* Replace dashboard links with new array when updating/adding dash links

* Update snaps

* Deep clone dashboard links on save

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-07-15 09:18:35 +02:00
stephffuller
9c0536c2f7 Docs: Update debian.md (#26332) 2020-07-14 14:07:19 -07:00
Ryan McKinley
1f271d06e9 InfluxDB: flux query result can cause crash (#26329) 2020-07-14 11:06:27 -07:00
Andreas Opferkuch
72cd9a3222 ThemeContext: Fix useStyles memoization (#26200) 2020-07-14 17:16:14 +02:00
Emil Tullstedt
6b6e477846 Docs: License expiration for Vault (#26229) 2020-07-14 14:09:52 +02:00
Arve Knudsen
9360d96f13 Drone: Tighten grafana-enterprise access to token (#26321)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-14 13:31:26 +02:00
Dominik Prokop
187612ca8d SignIn button - use correct url (#26239)
* SignIn button - use correct url

* Fix SignIn test (#26266)

* Don't use absolute URL

* post review

* Fix snap

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-07-14 12:56:55 +02:00
kay delaney
54ad5b869e CloudWatch Logs: Fixes grouping of results by numeric field (#26298)
* CloudWatch Logs: Fixes grouping of results by numeric field
Closes #25721
2020-07-14 11:13:03 +01:00
Zoltán Bedi
7bbfb57dd1 PluginsListPage: More plugins button should open in new window (#26305)
Fixes #24622
2020-07-14 10:26:25 +02:00
Mitsuhiro Tanda
077aec465c Implicit import symbol-observable to avoid inconsistent symbol (#26288) 2020-07-14 09:25:17 +02:00
Arve Knudsen
c863fd3da9 CloudWatch: Clean up code (#26259)
* CloudWatch: Clean up code
2020-07-14 08:23:23 +02:00
Diana Payton
747bdaf2e7 Docs: Add chained variables (#26218)
* Create chained-variables.md

* Update chained-variables.md

* Update chained-variables.md

* Update chained-variables.md

* Update menu.yaml

* Update chained-variables.md

* Update templates-and-variables.md

* Update docs/sources/variables/chained-variables.md

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

* applied edits

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-13 14:07:59 -07:00
Ryan McKinley
07f8178995 InfluxDB: include sample response data for each test case (#26248) 2020-07-13 11:15:36 -07:00
Kyle Brandt
d28b62740b Docs: Flux support in influxdb data source in 7.1 (#25551)
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-13 14:15:09 -04:00
Harrison Shoff
e63028e8c6 AdminUsers: reset page to zero on query change (#26293) 2020-07-13 20:01:48 +02:00
Kyle Brandt
d91e73713d Docs: Azure update kusto doc link (#26246)
as per, and fixes #25339
2020-07-13 13:35:46 -04:00
Diana Payton
9e8af660f5 Docs: Add a query variable topic (#25852)
* Update global-variables.md

* Create _index.md

* Create add-query-variable.md

* added variable task files

* Update templates-and-variables.md

* added content

* content edits

* Update formatting-multi-value-variables.md

* added content and updated menu

* Update add-query-variable.md

* applied edits

* Update docs/sources/variables/formatting-multi-value-variables.md

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

* Update docs/sources/variables/formatting-multi-value-variables.md

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

* Update docs/sources/variables/formatting-multi-value-variables.md

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

* applied edits

* Update docs/sources/variables/filter-variables-with-regex.md

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

* Update docs/sources/variables/formatting-multi-value-variables.md

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

* Update docs/sources/variables/formatting-multi-value-variables.md

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

* Update formatting-multi-value-variables.md

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-13 09:35:13 -07:00
Arve Knudsen
cabcbf6f8d Chore: Update latest.json (#26301)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-13 18:18:02 +02:00
Arve Knudsen
fc56c6ba04 Update changelog (#26296)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-13 17:14:41 +02:00
Dieter Plaetinck
5f78f49e67 Docs: Document jaeger tracing instrumentation (#21392)
Document jaeger tracing instrumentation.

Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-13 17:09:08 +02:00
Sofia Papagiannaki
20b603ee1a Alerting: New feature toggle for enabling standalone alerts (#25984)
* Add feature toggle for standalone alerts

* Add IsStandaloneAlertsEnabled exported func
2020-07-13 18:04:42 +03:00
Arve Knudsen
c5bdea5cec Chore: Upgrade build pipeline tool; refactor Drone config (#26292)
* Upgrade grabpl; refactor Drone config
2020-07-13 16:43:56 +02:00
Arve Knudsen
9b6b0cad21 CircleCI: Disable for PRs (#26290)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-13 15:24:16 +02:00
Peter Holmberg
7cdbae4ae6 Fix: Make the JSON in JSONCell Tooltip more visible (#26048)
* add white background to tooltip component

* remove faulty background

* new theme for tooltip

* correct colors, remove custom box-shadow

* rename theme and add documentation

* use useStyles for style memo
2020-07-13 13:52:28 +02:00
Arve Knudsen
bbe8cc4c84 Chore: Upgrade go-mssqldb (#26188)
* Chore: Upgrade go-mssqldb

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

* Apply feedback from reviews

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-13 13:19:40 +02:00
Zoltán Bedi
0dd2bc8953 Prometheus: Fix prom links in mixed mode (#26244)
* Prometheus: Fix prom links in mixed mode

* Modify PromLink with code style changes
2020-07-13 13:14:50 +02:00
Torkel Ödegaard
b1e48f429f BarGauge: Fixed width of unfilled region not being correct when value is close to 100% (#26193)
* BarGauge: Fixed width of unfilled region not being correct when value is close to 100%

* removed accidental change

* updated snapshot
2020-07-13 12:53:59 +02:00
Ivana Huckova
95bf064776 Chore: Fix failing master due to strictNullCheck error (#26283)
* Fix typecheck error on master

* Fix typecheck error on master
2020-07-13 12:20:18 +02:00
Ivana Huckova
73468e1481 Jaeger/Zipkin: URL-encode service names and trace ids for API calls (#26115)
* Encode services and id

* Encode URL for Zipkin API calls

* Add test coverage
2020-07-13 10:54:01 +02:00
Kamal Galrani
c136f7da39 removes erroneous $ (#26257) 2020-07-13 09:35:40 +03:00
Kamal Galrani
f4b6abb05e fixes footer inconsistency (#26255) 2020-07-11 11:50:25 +02:00
Kamal Galrani
6a0f530fdf fixes spelling error (#26253) 2020-07-11 08:56:02 +02:00
Ryan McKinley
5f8eb93db1 AppPlugin: give full control to page layout when navigation is missing (#26247) 2020-07-10 11:57:09 -07:00
Ryan McKinley
33acf4c056 Flux: use monaco query editor (#26179) 2020-07-10 10:07:36 -07:00
Kyle Brandt
c1ede4fc71 backend: use latest go plugin sdk (0.74.0) to sort wide frames (#26207)
This makes it so results are more stable between refreshes of data and fixes sorting issues with Azure Application Insights service as well as the two Azure Analytics services.

fixes #22937
2020-07-10 12:22:50 -04:00
Arve Knudsen
396ff9f478 Drone: Disable enterprise build for PRs (#26241)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-10 17:24:12 +02:00
Ivana Huckova
6d8545da63 Elastic: Fix error "e.buckets[Symbol.iterator] is not a function" when using filter (#26217)
* Add bucket to array if it is not in array

* Fix issue one level above

* Rename variable

* Move array check to processAggregationDocs
2020-07-10 17:04:05 +02:00
Arve Knudsen
d28d495235 Chore: Enable PR testing in Drone (#26189)
* Add Drone configuration

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

* Add more steps

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

* Add more steps

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

* Build front-end before testing it

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

* Upgrade grafana/build-container

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

* Add packaging step

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

* Trigger on push

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

* Remove some steps

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

* Enable steps

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

* Install Dockerize

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

* Use node image for test-frontend

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

* Increase number of test workers

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

* Make plugin installation depend on frontend tests

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

* Make integration tests depend on frontend tests

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

* Use grafana/build-container also for front-end tests

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

* Upgrade dependencies in order to fix front-end tests

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

* Depend on es-check

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

* Dont' depend on tests before building front-end

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

* Add more steps

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

* Fix packaging

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

* Simplify

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

* Try to build images

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

* Fix e2e tests

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

* Remove steps

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

* Install netcat

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

* Include golangci-lint with grafana/build-container

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

* Build storybook and docs website

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

* Fix e2e tests

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

* Use build image with root user

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

* Drop CircleCI dependencies

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

* Fix e2e tests

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

* Fix e2e under Drone

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

* Execute e2e server separately

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

* Use own plugin for building Docker images

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

* Use Starlark to configure Drone

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

* Add enterprise steps to pipeline

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

* Add more enterprise steps to pipeline

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

* Maintain Yarn cache

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

* Build enterprise Docker images

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

* Build Ubuntu Docker images

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

* Refactor

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

* Add Postgres integration test

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

* Add MySQL integration test

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

* Fix integration tests

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

* Parameterize integration test DB connections

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

* Categorize integration tests

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

* Use grabpl integration-tests

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

* Remove unintended change

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

* Drone: Disable Ubuntu Docker images for PR pipeline

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

* Regenerate yarn.lock

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

* Upgrade grabpl

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

* Restore Yarn cache before installing in grafana-enterprise

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

* Use separate pipelines for OSS and enterprise

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

* Let OSS builds depend on tests

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

* Restore Go cache before building back-end

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

* Reduce number of variants built for PRs

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

* Fix building of Docker images

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

* Drone: Simplify logic

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

* Drone: Use Starlark

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

* Drone: Fix syntax error

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

* Convert .drone.star to YAML

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

* Upgrade AWS Go SDK

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

* Drone: Fix Go linting

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

* Undo irrelevant changes

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

* Revert "Undo irrelevant changes"

This reverts commit 5152f65972.

* Undo irrelevant changes

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

* e2e: Support Circle

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

* Remove unused script

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

* TypeScript fixes

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

* TypeScript fixes

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

* Remove unused script

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

* More Drone support

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

* Remove unused script

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

* Fix build on Circle

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

* Remove TODO comment

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-10 16:09:21 +02:00
kay delaney
1391575853 Chore: Removes some unneeded console logging and changes logs to errors (#26235) 2020-07-10 15:07:04 +01:00
Alex Khomenko
718d6fb25d Grafana-UI: Add time range input (#26158)
* Grafana UI: Do not submit form on range change

* Grafana UI: Add TimeRangeInput

* Grafana UI: Style input

* Grafana UI: Customize content

* Grafana UI: Adjust caret style

* Grafana UI: Add mdx

* Grafana UI: Fix caret styles

* Grafana UI: Fix typo

* Grafana UI: Do not reload page on timerange change

* Grafana UI: Sync TimeRangeForm state with external value

* Grafana UI: Close overlay on apply

* Grafana UI: Remove unused props

* Grafana UI: Fix story

* Grafana-UI: Make time zone optional

* Grafana-UI: Update styles

* Grafana-UI: Extract button label props

* Grafana-UI: hideHistory => showHistory

* Grafana-UI: Fix caret styles
2020-07-10 14:45:49 +03:00
Torkel Ödegaard
8f78b0e7bc Chore: Fix all Typescript strict null errors (#26204)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot

* Chore: More ts strict null fixes

* More fixes in some really messed up azure config components

* More fixes, current count: 441

* 419

* More fixes

* Fixed invalid initial state in explore

* Fixing tests

* Fixed tests

* Explore fix

* More fixes

* Progress

* Sub 300

* Now at 218

* Progress

* Update

* Progress

* Updated tests

* at 159

* fixed tests

* Progress

* YAy blow 100! at 94

* 10,9,8,7,6,5,4,3,2,1... lift off

* Fixed tests

* Fixed more type errors

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-07-10 12:46:59 +02:00
Ryan McKinley
3d98641a45 DataLinks: add internal flag in comments (#26215) 2020-07-09 14:35:31 -07:00
Josh Soref
7752434d11 Docs: Use current spelling for macOS (#26181) 2020-07-09 08:06:04 -07:00
Tobias Skarhed
5a3eb413d9 Issue Template: @grafana/ui component request (#25981)
* Add first draft of issue template

* Remove feature request line

* Update PR feedback

* Minor tweaks

* Update .github/ISSUE_TEMPLATE/4-grafana_ui_component.md

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

* Fix punctuation

Co-authored-by: Clarity-89 <homes89@ukr.net>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-09 18:00:28 +03:00
Robby Milo
429c4c903b add plugin aliases (#26206) 2020-07-09 07:42:04 -07:00
Diana Payton
26cf3d9c66 Docs: Update debian.md (#26100)
* Update debian.md

* Revert "Update debian.md"

This reverts commit 063c1f09d9.

* Update debian.md

* Update debian.md

* Update debian.md

* Update docs/sources/installation/debian.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-09 07:25:10 -07:00
Andrej Ocenas
64bc85963b Explore: Unification of logs/metrics/traces user interface (#25890)
Removes "Metrics"/"Logs" mode switcher from Explore, allowing for both
metrics and logs queries at the same time.

Co-authored-by: kay delaney <kay@grafana.com>
2020-07-09 15:14:55 +01:00
Marcelo Nunes Alves
be961c5466 Elasticsearch: Fix using multiple bucket script aggregations when only grouping by terms (#24064)
* In the parser when it was configurate more bucket it put the formula in name column

* Tests

* Tests

* Tests

* Tests

* Tests

* Tests

* Process/Tests - backend (Go)

* Update pkg/tsdb/elasticsearch/response_parser.go

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

* reverse

* Update pkg/tsdb/elasticsearch/response_parser.go

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

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-09 15:21:19 +02:00
Torkel Ödegaard
49b5fc4b9a Chore: More typescript strict null fixes, going for sub 200 (#26134)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot

* Chore: More ts strict null fixes

* More fixes in some really messed up azure config components

* More fixes, current count: 441

* 419

* More fixes

* Fixed invalid initial state in explore

* Fixing tests

* Fixed tests

* Explore fix

* More fixes

* Progress

* Sub 300

* Now at 218

* Progress

* Update

* Progress

* Updated tests

* at 159

* fixed tests

* Fixed test
2020-07-09 15:16:35 +02:00
Arve Knudsen
9285595c50 tsdb/postgres: Support Unix socket for host (#25778)
* tsdb/postgres: Support Unix socket for host

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

* Fix host regex

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

* Fix host regex

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

* Remove panic

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

* Fix host parsing; add tests

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

* Add test

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

* Use strings.HasPrefix to detect Unix socket host

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

* Remove debug logging

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

* Escape single quotes and backslashes

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

* Test generateConnectionString as requested in review

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

* Add test case for SSL mode

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-09 14:57:09 +02:00
Peter Holmberg
9948e9298f Fix: Redirect to correct url after creating a folder (#26160) 2020-07-09 14:38:47 +02:00
kay delaney
2ac1bfcc79 Datasource/CloudWatch: More robust handling of different query modes (#25691)
* Datasource/CloudWatch: More robust handling of different query modes
A small refactor which changes how the CloudWatch datasource handles
multiple queries with different query modes. Groundwork for future
Logs/Metrics unification work.
2020-07-09 13:11:13 +01:00
Torkel Ödegaard
ddcc0c3c80 Update latest.json 2020-07-09 13:47:51 +02:00
Arve Knudsen
e9e74040ea CircleCI: Upgrade grabpl (#26196)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-09 12:17:35 +02:00
Torkel Ödegaard
be7bc293a1 Release: Update changelog with 7.0.6 2020-07-09 12:00:16 +02:00
Andrej Ocenas
53eb856d20 Explore: Run query on splitOpen action (#26161) 2020-07-09 11:21:45 +02:00
Torkel Ödegaard
0428f27194 Templating: Fix recursive loop of template variable queries when changing ad-hoc-variable (#26191)
* Templating: Fix url sync issue with adhoc variables

* Update packages/grafana-ui/src/components/Segment/SegmentAsync.tsx

* Update packages/grafana-ui/src/components/Segment/SegmentAsync.tsx

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-07-09 10:14:28 +02:00
Ivana Huckova
d3dcb19a5b Loki: Improve error message for unescaped \ and add LogQL link to docs (#26136)
* Add custom escaping error message

* Include regex escape error message

* Update docs, add logql link

* Refactor
2020-07-09 10:13:41 +02:00
Sofia Papagiannaki
45cfb3451b Upgrade build pipeline tool (#26165)
* Upgrade build pipeline tool

* Update config.yml

* Remove edition parameter from deploy-to-kubernetes
2020-07-09 10:21:39 +03:00
Torkel Ödegaard
7b80e300d9 BarGauge: Fix space bug in single series mode (#26176) 2020-07-09 09:18:05 +02:00
Torkel Ödegaard
2191fe1285 DataSourceWithBackend: Switch to new Observable fetch api (#26043)
* BackendSrv: Observable all the way POC

* starting to unify code paths

* tests pass

* Unified error handling

* Single request path and error handling

* Fixed ts issue

* another ts issu

* Added back old requestId cancellation

* Slow progress trying to grasp the full picture of cancellation

* Updates

* refactoring

* Remove a bunch of stuff from backendSrv

* Removed another function

* Do not show error alerts for data queries

* Muu

* Updated comment

* DataSourceWithBackend: Switch to new Observable fetch api

* fixed ts issue

* unify request options type

* Made query inspector subscribe to backendSrv stream instead of legacy app events

* Add back support for err.isHandled to limit scope

* never show success alerts

* Updated tests

* use ovservable in test

* remove processResponse

* remove processResponse

* trying to get tests to pass :(

* no need for the extra tests

* Fixed processsing

* Fixed tests

* Updated tests to mock fetch call

* lint fixes

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-07-09 07:32:39 +02:00
Tim Schwenke
4df441f822 Docs: Update azuread.md to reflect Azure Portal Interface (#25420) 2020-07-08 16:30:15 -07:00
Kyle Brandt
c6a3afb4b8 Docs: Azure Monitor data source changes for 7.1 (#26096)
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-08 15:47:00 -04:00
Marcus Efraimsson
c91e5adfcc Alerting: Don't encrypt username for webhook notifier (#26170)
Can be hard for users to understand what user is configured
when encrypting the username field why this reverts to
store the username in cleartext.
Also, we don't encrypt username for data sources.

Ref #25967
2020-07-08 19:13:59 +02:00
Marcus Efraimsson
3223d4b419 Alerting: Store sensitive settings encrypted for webhook notifier (#26164)
Store sensitive settings (username and password) encrypted for webhook notifier.

Ref #25967
2020-07-08 17:46:34 +02:00
Jess
f242840275 Create ConfirmButton.mdx (#26113)
add docs to ConfirmButton element
2020-07-08 18:29:33 +03:00
Oana Mangiurea
ea33668014 Update TextArea.mdx (#26159)
Add additional information in docs to textarea component
2020-07-08 18:06:08 +03:00
Oana Mangiurea
84bf94709e Created Legend.mdx (#26146)
Add simple docs to legend component

Signed-off-by: Oana <oana.mangiurea@gmail.com>
2020-07-08 18:05:42 +03:00
Jess
14209c0ed1 Create Badge.mdx (#26114) 2020-07-08 18:05:18 +03:00
Jess
6d4f72cd04 Create Slider.mdx (#26149)
add simple documentation for slider component
2020-07-08 18:05:01 +03:00
kay delaney
fd29b952a6 Backend: use latest Go plugin SDK (#26162) 2020-07-08 15:26:49 +01:00
Torkel Ödegaard
cace879c96 Templating: Fixed recursive queries triggered when switching dashboard settings view (#26137)
* Templating: Fixed recursive queries triggered when going into dashboard settings

* Fixed unused import

* use locationUtil
2020-07-08 13:22:09 +02:00
Torkel Ödegaard
8ab5d2ddd9 Dashboard: Refresh intervals should not always add the server min refresh interval (#26150) 2020-07-08 13:21:12 +02:00
Marcus Andersson
17d87071e6 Transform: adding missing "table"-transform and "series to rows"-transform to Grafana v7-transforms. (#26042)
* Fixed so the merge for table values works as it did before.

* wip

* fixed tests.

* merge tests are green.

* removed unused code and simplify the seriesToRows.

* added time series to rows editor.

* using getFrameDisplayName for the metric value.

* updated description of transforms.

* updated docs.

* fixed according to feedback.

* changed from images to markdown tables for the examples.

* forgot to save :P
2020-07-08 12:40:05 +02:00
Torkel Ödegaard
fd44c01675 Chore: Fix typescript strict null fixes now at 298 (#26125)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot

* Chore: More ts strict null fixes

* More fixes in some really messed up azure config components

* More fixes, current count: 441

* 419

* More fixes

* Fixed invalid initial state in explore

* Fixing tests

* Fixed tests

* Explore fix

* More fixes

* Progress

* Sub 300

* Fixed incorrect type

* removed unused import
2020-07-08 11:05:20 +02:00
Torkel Ödegaard
89b56782c6 DataLinks: Fixed interpolation of repeated variables used in data links (#26147) 2020-07-08 11:04:23 +02:00
Mitsuhiro Tanda
292c985b76 Alerting: Support storing sensitive notifier settings securely/encrypted (#25114)
Support storing sensitive notification settings securely/encrypted.
Move slack notifier url and api token to secure settings.
Migrating slack notifier to store token and url encrypted is currently 
a manual process by saving an existing slack alert notification channel.
saving an existing slack alert notification channel will reset the stored 
non-secure url and token.

Closes #25113
Ref #25967

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-08 10:17:05 +02:00
Ryan McKinley
b26ef1db25 CSV: force UTF-8 encoding for download (#26145) 2020-07-07 23:53:03 -07:00
Dominik Prokop
30a682a4da Do not break dashboard settings UI when time intervals end with trailing comma (#26126) 2020-07-08 08:52:06 +02:00
Ryan McKinley
2b6833d0da DataSourceWithBackend: add internal comment for new method (#26139) 2020-07-07 22:29:36 -07:00
Diana Payton
b0fd9f03ca Docs: Add strategies topic (#26103)
* Create use.md

* Update timeseries.md

* changed file name and added content

* Update menu.yaml

* Update strategies.md
2020-07-07 12:40:36 -07:00
Torkel Ödegaard
81e955e6b5 BackendSrv: Cancellable requests & Observable all the way (#25746)
* BackendSrv: Observable all the way POC

* starting to unify code paths

* tests pass

* Unified error handling

* Single request path and error handling

* Fixed ts issue

* another ts issu

* Added back old requestId cancellation

* Slow progress trying to grasp the full picture of cancellation

* Updates

* refactoring

* Remove a bunch of stuff from backendSrv

* Removed another function

* Do not show error alerts for data queries

* Muu

* Updated comment

* fixed ts issue

* unify request options type

* Made query inspector subscribe to backendSrv stream instead of legacy app events

* Add back support for err.isHandled to limit scope

* never show success alerts

* Updated tests

* Fixing tests

* Minor weak

* Improved logic for the showErrorAlert and showSuccessAlert boolean flags, now they work more logically

* Fix issue
2020-07-07 21:22:47 +02:00
Arve Knudsen
ba4a8256a4 Chore: Rename plugin CI image as grafana/grafana-plugin-ci:latest-alpine (#26106)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-07 19:16:22 +02:00
Ivana Huckova
52f12d10c5 Explore/Loki: Escape \ in labels for show context queries (#26116)
* Hot fix, keep the file

* Add comment

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

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

* Remove script.go file

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-07 17:42:49 +02:00
Dominik Prokop
74b2c2acdc Fix lint (#26130) 2020-07-07 16:48:25 +02:00
Kyle Brandt
9164a35240 Azure: Restore Insights Metrics alias feature (#26098)
also fix case sensitivity for azure monitor metrics
2020-07-07 08:42:03 -04:00
Dominik Prokop
eb4391a228 grafana/ui: Do not rename export for InlineFormLabel (#26118) 2020-07-07 14:09:58 +02:00
Dominik Prokop
36e9d262c0 Add guide and tooling for local packages registry setup (#26110) 2020-07-07 14:07:00 +02:00
Arve Knudsen
e7e854ea33 Upgrade build pipeline tool (#26112)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-07 13:31:19 +02:00
Dominik Prokop
aa671c863e Chore: Bump rxjs to latest (#26084) 2020-07-07 10:45:15 +02:00
Arve Knudsen
953a80d76f CircleCI: Check errors from publishing master Docker images (#26107)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-07 10:16:22 +02:00
Torkel Ödegaard
c9f22b72e3 StatPanel: Fixes issue with name showing for single series / field results (#26070)
* StatPanel: Fix text mode auto logic

* Removed import
2020-07-07 10:16:06 +02:00
Arve Knudsen
586d26c729 Chore: Replace scopelint with exportloopref (#26075)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-07 10:01:39 +02:00
Sofia Papagiannaki
e8a8159085 Cloudwatch: Update AWS/MediaConnect metrics and dimensions (#26093)
* Cloudwatch: Update AWS/MediaConnect dimensions

* Cloudwatch: Update AWS/MetricConnect metrics
2020-07-07 10:16:20 +03:00
Peter Holmberg
8f1115c6ac Fix: Icon and Tooltip on Variables editor (#26086) 2020-07-07 08:45:37 +02:00
Eivind Gussiås Løkseth
6b0d753728 Docs: Fix list of sample providers (#26067)
* Fix list of sample providers

The sample providers on this page has changed, so the list at the top of the page is no longer correct. Also link to Octo and Azure AD pages from here, since they are also OAuth2 providers.

* Fix misspelled Okta

* Make bullet list of OAuth2 providers

* Sort list of OAuth2 providers alphabetically
2020-07-06 14:28:31 -07:00
Diana Payton
d72c25500a Docs: Update plugin-signature-verification.md (#26030)
minor edit
2020-07-06 13:08:32 -07:00
Diana Payton
3a57ba20cf Docs: Update _index.md (#26028) 2020-07-06 13:07:54 -07:00
Marcus Olsson
0f41ca620b Docs: Add guidelines for inclusive language (#25533)
* Docs: Add guidelines for inclusive language

* Fix review comments

* Fix review comments

* Update documentation-style-guide.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-06 12:59:34 -07:00
Torkel Ödegaard
7e8bd0c1b7 Chore: Fix typescript strict null errors from 674 -> 565 (#26057)
* Chore: Fix typescript strict null errors

* Added new limit

* Fixed ts issue

* fixed tests

* trying to fix type inference

* Fixing more ts errors

* Revert tsconfig option

* Fix

* Fixed code

* More fixes

* fix tests

* Updated snapshot
2020-07-06 21:16:27 +02:00
Torkel Ödegaard
4fc984f771 TestData: Pass scoped vars when interpolating alias (#26088) 2020-07-06 20:55:19 +02:00
Arve Knudsen
c711b792fe Plugin CI image: Pin Alpine version, don't use apk cache (#26095)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-06 20:44:54 +02:00
Arve Knudsen
41d432b5ae Chore: Enable whitespace linter (#25903)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-06 20:17:28 +02:00
Diana Payton
42295898b8 Docs: Update auth.md (#26034) 2020-07-06 07:56:26 -07:00
Labesse Kévin
8e7a88faff Imagestore: Fallback to application default credentials when no key file is specified for GCS (#25948)
The external image storage for GCS creates the JWT Token from a credentials file, 
but if your Grafana server runs under a GCE instance with a service account on it, 
you can use that instead (you don't have to manage/secure the credentials file).

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Emil Tullstedt <emil.tullstedt@grafana.com>
2020-07-06 15:02:58 +02:00
Sofia Papagiannaki
44dff6fdd0 Auth: Fix POST request failures with anonymous access (#26049)
Macaron context.QueryBool() seems to modify the request context
that causes the POST and PUT requests to fail with:
"http: proxy error: net/http: HTTP/1.x transport connection broken: http: ContentLength=333 with Body length 0"
2020-07-06 15:59:00 +03:00
Leonard Gram
632c54f91d Docs: monthly reports (#25964)
* Docs: monthly reports

* Docs: version available

* Docs: feedback from Diana and Agnes.
2020-07-06 13:49:35 +02:00
Andreas Opferkuch
390c80d7f5 ThemeContext: Make useStyles type-aware (#26056)
PLUS:
Make it more consise
Add unit test
2020-07-06 12:16:02 +02:00
annegies
a2737c0896 Remove break from ldap, get all groups from all the group base searches specified (#25825)
Signed-off-by: Annegies van 't Zand <ace.vtzand@gmail.com>
2020-07-06 12:02:39 +02:00
Eivind Gussiås Løkseth
338ce0cc10 Docs: Default configuration is defaults.ini (#26071)
Fixes #26068 
The `conf ` directory doesn't have any `grafana.ini`, but a `defaults.ini`, which contains the default configuration.
2020-07-06 11:00:03 +02:00
Torkel Ödegaard
6f13f2de7d Docs: Update enterprise docs landing (#26072)
Closes #26069
2020-07-06 10:59:06 +02:00
Arve Knudsen
5321360021 Chore: Upgrade golangci-lint (#26074)
* Chore: Upgrade golangci-lint
2020-07-06 09:43:26 +02:00
Ryan McKinley
af5dff8a1b panel Inspect: improve structure debugging (#26065) 2020-07-04 15:14:57 -07:00
Torkel Ödegaard
8be735a6ec TextPanel: Fixed issue with new react text panel (#26061) 2020-07-04 21:26:55 +02:00
Torkel Ödegaard
c5cd9c5648 E2E: Trying to fix flake e2e (#26063) 2020-07-04 17:30:41 +02:00
Torkel Ödegaard
d19d6128c9 Revert "Inspect: Hide minimap in json view"
This reverts commit 0dd5c4e69d.
2020-07-04 12:26:54 +02:00
Torkel Ödegaard
0dd5c4e69d Inspect: Hide minimap in json view 2020-07-04 12:23:58 +02:00
Ryan McKinley
c0762b6ddc Chore: reduce null check errors/warnigns (#25223)
* fix a few null errors

* more

* flip logic

* merge master

* more

* fewer changes

* processor

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-07-03 17:49:29 +02:00
Carl Bergquist
26852ca788 Instrument dashboard versions and annotation count (#26044) 2020-07-03 15:47:46 +02:00
David
081f954a2b Explore: Don't run queries on datasource change (#26033)
- more and more datasources are having long-running queries,
automatically triggering is becoming more of a burden than a help.
- some datasource queries might actually cost money, so running queries
should be explicit.
2020-07-03 15:04:57 +02:00
Torkel Ödegaard
66460ae740 InfluxDB: Fixed new group by dropdown now showing (#26031) 2020-07-03 14:58:29 +02:00
Ryan McKinley
3acc2a6ac2 Table: JSON Cell should try to convert strings to JSON (#26024) 2020-07-03 10:23:32 +02:00
Steven Vachon
634d8d60d6 @grafana/e2e: close options panel before interacting with the query form (#26036)
... it's logically better, but the real reason is to appease Cypress which was cause a consistent request error for a single plugin (datadog-datasource). An error which could not be reproduced manually.
2020-07-03 10:22:56 +02:00
Tobias Skarhed
b06d2cf30f AdminUsersTable: Fix width (#26019) 2020-07-03 09:24:36 +02:00
Josh Soref
dec76b4556 Graph panel: Move Stacking and null values before Hover tooltip options (#26037) 2020-07-03 09:14:44 +02:00
Ivana Huckova
8b46655361 Elastic: Fix displaying of correct log message (#26020)
* Fix default field, remove redundant line field check

* Add comments
2020-07-03 09:10:59 +02:00
Ryan McKinley
b7792de16d grafana/data: do not bundle rxjs (#26039) 2020-07-03 09:07:17 +02:00
Peter Holmberg
02a46a5d61 Migrate: Error page (404) (#26010)
* first things

* simple migration and remove angular part
2020-07-03 08:53:54 +02:00
ChrisDGH
45bbee2dea Update _index.md 2020-07-02 15:03:03 -04:00
Sofia Papagiannaki
b765b4130f Chore: updated testing in latest.json to 7.1.0-beta2 (#26018) 2020-07-02 17:49:42 +03:00
Maksim Nabokikh
3720c25638 grafana-cli: Add ability to read password from stdin to reset admin password (#26016)
* grafana-cli: Add ability to read password from stdin to reset admin password

Signed-off-by: m.nabokikh <maksim.nabokikh@flant.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-02 16:29:10 +02:00
Sofia Papagiannaki
66a00ee5c9 Chore: added changelog for 7.1.0-beta2 (#26015)
* Chore: added changelog for 7.1.0-beta2

* Update Changelog.md
2020-07-02 16:48:30 +03:00
Marcus Efraimsson
e25c6db7e9 Docker: Make sure to create default plugin provisioning directory (#26017) 2020-07-02 15:43:12 +02:00
Dhananjay
3ef06a0c88 Cloudwatch: Add Support for external ID in assume role (#23685)
Co-authored by: Arve Knudsen
2020-07-02 15:24:36 +02:00
Sofia Papagiannaki
2d4bcbeff6 Small fix in provisioning docs (#26004)
* Small fix in provisioning docs

* Update docs/sources/administration/provisioning.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-02 14:29:37 +03:00
Alex Khomenko
c3d4e69a32 Grafana UI: Make FileUpload button size customizable (#26013) 2020-07-02 14:17:42 +03:00
Arve Knudsen
3e9e2db384 CircleCI: Upgrade build pipeline tool (#26006)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-07-02 11:28:37 +02:00
Ryan McKinley
085b2f3dbf Monaco: check suggestions against current word (#25992)
* trigger on current word

* proper index

* test suggestsions

* test suggestsions

* fix test
2020-07-02 10:42:44 +02:00
Alex Khomenko
9e47114c45 Forgot password: Fix styling (#26002) 2020-07-02 10:33:45 +03:00
Ivana Huckova
ab172f09b2 Docs: Add Query history search documentation (#25946)
* Update docs for search in query history

* Update

* Update docs/sources/features/explore/index.md

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

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

* Update docs/sources/features/explore/index.md

* Update docs/sources/features/explore/index.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-07-02 08:53:10 +02:00
Sofia Papagiannaki
e6ee3e1e7e Update whats-new-in-v7-1.md (#25979) 2020-07-02 09:07:52 +03:00
Torkel Ödegaard
9746e1f6af PanelEdit: Remove field label for single item categories (#25990)
* FieldConfig: Remove field label for single item categories

* Update public/app/features/dashboard/components/PanelEditor/FieldConfigEditor.tsx

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-07-02 07:59:18 +02:00
Ryan McKinley
90a5a85eb1 Panel Loading: spin clockwise, not counter clockwise (#25998)
* spin clockwise

* spin clockwise
2020-07-01 22:15:41 -07:00
Sebastian Widmer
5789f80e14 Loki: Allow aliasing Loki queries in dashboard (#25706)
* Loki: Add Legend field to query editor

* Loki: Basic test for legend field

* Loki: Mention legend is only for metric queries

* Loki: Fix absolute timerange never updating
2020-07-01 22:19:36 +02:00
Ryan McKinley
73e82af4df Value Mappings: remove unused operator property from interface (#25989) 2020-07-01 12:52:36 -07:00
Ivana Huckova
c9751707c5 Fix href to datasources for NoDataSourceCallToAction in Explore (#25991) 2020-07-01 21:04:06 +02:00
Dan Cech
b5ca2381bc provide license token directly via plugin environment (#25987)
* provide license token directly via plugin environment
2020-07-01 13:02:53 -04:00
Marcus Andersson
bbdcd59c50 Chore: updated testing in latest.json to 7.1.0-beta1. (#25988) 2020-07-01 18:49:55 +02:00
Diana Payton
b1b44d01da Docs: Update organization_roles.md (#25912)
* Update organization_roles.md

* Update docs/sources/permissions/organization_roles.md

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

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-07-01 09:08:46 -07:00
Mohit Nain
55406053dc Docs: Correction for repeat panels introduction (#25985) 2020-07-01 08:47:49 -07:00
Alexander Tymchuk
dda231009f docs: remove a section on PhantomJS debugging in e2e.md (#25951) 2020-07-01 17:28:06 +02:00
Sofia Papagiannaki
bcaa42fbb3 Fix build-in plugins failing to load in windows (#25982) 2020-07-01 18:23:18 +03:00
Marcus Andersson
039367336c Chore: added change log for 7.1.0-beta1. (#25978) 2020-07-01 15:02:01 +02:00
Andrej Ocenas
81095335c4 docs: 7.1 beta what's new draft (#25961)
* Add whats new draft article

* Update docs/sources/guides/whats-new-in-v7-1.md

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

* Add elastic internal links

* Docs: more about vault in whats new

* docs: monthly reports

* Apply suggestions from code review

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>

* Remove unified explore mention

* updated what's new

* Update link

* Add search image link

* Add 7.1 article to the menu

* Fix typo

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-07-01 14:26:37 +02:00
Marcus Andersson
700ab8f3d8 Chore: bumped version to next minor. (#25971) 2020-07-01 13:26:36 +02:00
1620 changed files with 41077 additions and 18693 deletions

View File

@@ -2,22 +2,11 @@ version: 2.1
aliases:
# Workflow filters
# filter-all triggers for all branches and version tags
- &filter-all
tags:
only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
- &filter-only-release
branches:
only: chore/test-release-pipeline
tags:
only: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
- &filter-not-release-or-master
tags:
ignore: /^v[0-9]+(\.[0-9]+){2}(-.+|[^-.]*)$/
branches:
ignore:
- master
- chore/test-release-pipeline
- &filter-only-master
branches:
only: master
@@ -39,9 +28,12 @@ executors:
go:
docker:
- image: cimg/go:1.14
e2e:
docker:
- image: grafana/ci-e2e:12.19.0-1
grafana-build:
docker:
- image: grafana/build-container:1.2.20
- image: grafana/build-container:1.2.26
grafana-publish:
docker:
- image: grafana/grafana-ci-deploy:1.2.5
@@ -56,7 +48,7 @@ commands:
- run:
name: "Install Grafana build pipeline tool"
command: |
VERSION=0.4.17
VERSION=0.5.8
curl -fLO https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v${VERSION}/grabpl
chmod +x grabpl
mv grabpl /tmp
@@ -667,8 +659,7 @@ jobs:
# This is a release
/tmp/grabpl publish-docker --jobs 4 --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >>
else
# TODO: Don't ignore errors, temporary workaround until we fix #22955
/tmp/grabpl publish-docker --jobs 4 --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >> || echo Publishing failed!
/tmp/grabpl publish-docker --jobs 4 --edition << parameters.edition >> --ubuntu=<< parameters.ubuntu >>
fi
- run:
name: CI job failed
@@ -680,8 +671,7 @@ jobs:
when: on_success
end-to-end-tests:
docker:
- image: circleci/node:12-browsers
executor: e2e
steps:
- attach_workspace:
at: /tmp/workspace
@@ -813,9 +803,9 @@ jobs:
name: Install Go linters
command: |
pushd /tmp
VERSION=1.27.0
VERSION=1.28.0
curl -fLO https://github.com/golangci/golangci-lint/releases/download/v${VERSION}/golangci-lint-${VERSION}-linux-amd64.tar.gz
echo 8d345e4e88520e21c113d81978e89ad77fc5b13bfdf20e5bca86b83fc4261272 \
echo 179d34edf4baf6454a7081fbaaf74dc99397a3be8e1a535dee04d835a977bf76 \
golangci-lint-${VERSION}-linux-amd64.tar.gz | sha256sum --check --strict --status
tar -xf golangci-lint-${VERSION}-linux-amd64.tar.gz
sudo mv golangci-lint-${VERSION}-linux-amd64/golangci-lint /usr/local/bin/
@@ -826,8 +816,9 @@ jobs:
command: |
# To save memory, run in two batches
golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E deadcode -E depguard -E dogsled \
-E errcheck -E goconst -E golint -E gosec -E gosimple -E govet -E scopelint ./pkg/...
golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E ineffassign \
-E errcheck -E goconst -E golint -E gosec -E gosimple -E govet -E exportloopref -E whitespace \
-E goprintffuncname ./pkg/...
golangci-lint run -v -j 4 --config scripts/go/configs/ci/.golangci.toml -E ineffassign -E gocritic -E nakedret \
-E rowserrcheck -E staticcheck -E structcheck -E typecheck -E unconvert -E unused -E varcheck ./pkg/...
./scripts/go/bin/revive -formatter stylish -config ./scripts/go/configs/revive.toml ./pkg/...
./scripts/go/bin/revive -formatter stylish -config ./scripts/go/configs/revive-strict.toml \
@@ -861,7 +852,8 @@ jobs:
- node_modules
- run:
name: frontend tests
command: "./scripts/circle-test-frontend.sh"
command: |
./scripts/circle-test-frontend.sh
- store_test_results:
path: reports/junit
- run:
@@ -925,11 +917,14 @@ jobs:
description: "Deploy Grafana master Docker image to Kubernetes"
executor: base
steps:
- attach_workspace:
at: /tmp/workspace
- install-grabpl
- run:
name: Deploy to Kubernetes
command: |
/tmp/grabpl deploy-to-k8s $CIRCLE_WORKFLOW_ID
cp -r /tmp/workspace/enterprise/dist .
/tmp/grabpl deploy-to-k8s
release-packages:
executor: node
@@ -1049,39 +1044,39 @@ workflows:
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
edition: oss
variant: osx64
name: build-oss-backend-osx64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
edition: oss
variant: win64
name: build-oss-backend-win64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
edition: oss
variant: linux-x64
name: build-oss-backend-linux-x64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
edition: oss
variant: linux-x64-musl
name: build-oss-backend-linux-x64-musl
requires:
- lint-go
- build-frontend:
filters: *filter-all
filters: *filter-master-or-release
name: build-oss-frontend
edition: oss
- build-plugins:
filters: *filter-all
filters: *filter-master-or-release
name: build-oss-plugins
edition: oss
requires:
@@ -1122,39 +1117,39 @@ workflows:
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-backend-osx64
edition: enterprise
variant: osx64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-backend-win64
edition: enterprise
variant: win64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-backend-linux-x64
edition: enterprise
variant: linux-x64
requires:
- lint-go
- build-backend:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-backend-linux-x64-musl
edition: enterprise
variant: linux-x64-musl
requires:
- lint-go
- build-frontend:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-frontend
edition: enterprise
- build-plugins:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-plugins
edition: enterprise
requires:
@@ -1162,31 +1157,31 @@ workflows:
- build-release-publisher:
filters: *filter-master-or-release
- codespell:
filters: *filter-all
filters: *filter-master-or-release
- lint-go:
filters: *filter-all
filters: *filter-master-or-release
- shellcheck:
filters: *filter-all
filters: *filter-master-or-release
- test-backend:
filters: *filter-all
filters: *filter-master-or-release
requires:
- lint-go
- test-frontend:
filters: *filter-all
filters: *filter-master-or-release
- mysql-integration-test:
filters: *filter-all
filters: *filter-master-or-release
requires:
- lint-go
- test-backend
- test-frontend
- postgres-integration-test:
filters: *filter-all
filters: *filter-master-or-release
requires:
- lint-go
- test-backend
- test-frontend
- package-oss:
filters: *filter-all
filters: *filter-master-or-release
requires:
- build-oss-backend-armv6
- build-oss-backend-armv7
@@ -1204,7 +1199,7 @@ workflows:
- shellcheck
- build-oss-plugins
- package-enterprise:
filters: *filter-all
filters: *filter-master-or-release
requires:
- build-enterprise-backend-armv6
- build-enterprise-backend-armv7
@@ -1222,11 +1217,11 @@ workflows:
- shellcheck
- build-enterprise-plugins
- build-oss-windows-installer:
filters: *filter-all
filters: *filter-master-or-release
requires:
- package-oss
- build-enterprise-windows-installer:
filters: *filter-all
filters: *filter-master-or-release
requires:
- package-enterprise
- release-next-packages:
@@ -1262,12 +1257,12 @@ workflows:
- postgres-integration-test
- build-release-publisher
- publish-storybook:
filters: *filter-all
filters: *filter-master-or-release
requires:
- test-backend
- test-frontend
- build-docker-images:
filters: *filter-all
filters: *filter-master-or-release
name: build-oss-docker-images
edition: oss
ubuntu: false
@@ -1278,7 +1273,7 @@ workflows:
- package-oss
- build-oss-windows-installer
- build-docker-images:
filters: *filter-all
filters: *filter-master-or-release
name: build-oss-ubuntu-docker-images
edition: oss
ubuntu: true
@@ -1289,7 +1284,7 @@ workflows:
- package-oss
- build-oss-windows-installer
- build-docker-images:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-docker-images
edition: enterprise
ubuntu: false
@@ -1300,7 +1295,7 @@ workflows:
- package-enterprise
- build-enterprise-windows-installer
- build-docker-images:
filters: *filter-all
filters: *filter-master-or-release
name: build-enterprise-ubuntu-docker-images
edition: enterprise
ubuntu: true
@@ -1311,14 +1306,9 @@ workflows:
- package-enterprise
- build-enterprise-windows-installer
- end-to-end-tests:
filters: *filter-all
filters: *filter-master-or-release
requires:
- package-oss
- build-docs-website:
filters: *filter-not-release-or-master
requires:
- mysql-integration-test
- postgres-integration-test
- deploy-to-kubernetes:
filters: *filter-only-master
requires:

5
.drone.star Normal file
View File

@@ -0,0 +1,5 @@
load('scripts/lib.star', 'pr_pipelines', 'master_pipelines')
def main(ctx):
edition = 'oss'
return pr_pipelines(edition=edition) + master_pipelines(edition=edition)

546
.drone.yml Normal file
View File

@@ -0,0 +1,546 @@
---
kind: pipeline
type: docker
name: test-pr
platform:
os: linux
arch: amd64
steps:
- name: identify-runner
image: alpine:3.12
commands:
- echo $DRONE_RUNNER_NAME
- name: initialize
image: grafana/build-container:1.2.26
commands:
- curl -fLO https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v$${GRABPL_VERSION}/grabpl
- chmod +x grabpl
- mkdir -p bin
- mv grabpl bin
- curl -fLO https://github.com/jwilder/dockerize/releases/download/v$${DOCKERIZE_VERSION}/dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- tar -C bin -xzvf dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- rm dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- yarn install --frozen-lockfile --no-progress
environment:
DOCKERIZE_VERSION: 0.6.1
GRABPL_VERSION: 0.5.8
- name: lint-backend
image: grafana/build-container:1.2.26
commands:
- golangci-lint run --config scripts/go/configs/.golangci.toml ./pkg/...
- revive -formatter stylish -config scripts/go/configs/revive.toml ./pkg/...
- ./scripts/revive-strict
environment:
CGO_ENABLED: 1
depends_on:
- initialize
- name: codespell
image: grafana/build-container:1.2.26
commands:
- "echo -e \"unknwon\nreferer\nerrorstring\neror\niam\" > words_to_ignore.txt"
- codespell -I words_to_ignore.txt docs/
depends_on:
- initialize
- name: shellcheck
image: grafana/build-container:1.2.26
commands:
- curl -fLO http://storage.googleapis.com/grafana-downloads/ci-dependencies/shellcheck-v$${VERSION}.linux.x86_64.tar.xz
- echo $$CHKSUM shellcheck-v$${VERSION}.linux.x86_64.tar.xz | sha512sum --check --strict --status
- tar xf shellcheck-v$${VERSION}.linux.x86_64.tar.xz
- mv shellcheck-v$${VERSION}/shellcheck /usr/local/bin/
- rm -rf shellcheck-v$${VERSION}*
- ./bin/grabpl shellcheck
environment:
CHKSUM: beca3d7819a6bdcfbd044576df4fc284053b48f468b2f03428fe66f4ceb2c05d9b5411357fa15003cb0311406c255084cf7283a3b8fce644c340c2f6aa910b9f
VERSION: 0.7.1
depends_on:
- initialize
- name: test-backend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl test-backend
- ./bin/grabpl integration-tests
depends_on:
- initialize
- lint-backend
- name: test-frontend
image: grafana/build-container:1.2.26
commands:
- yarn run ci:test-frontend
environment:
TEST_MAX_WORKERS: 50%
depends_on:
- initialize
- name: build-backend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-backend --jobs 8 --edition oss --build-id $DRONE_BUILD_NUMBER --variants linux-x64,linux-x64-musl,osx64,win64 --no-pull-enterprise
depends_on:
- initialize
- lint-backend
- test-backend
- name: build-frontend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-frontend --jobs 8 --no-install-deps --edition oss --build-id $DRONE_BUILD_NUMBER --no-pull-enterprise
depends_on:
- initialize
- test-frontend
- name: build-plugins
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-plugins --jobs 8 --edition oss --no-install-deps
depends_on:
- initialize
- lint-backend
- name: package
image: grafana/build-container:1.2.26
commands:
- . scripts/build/gpg-test-vars.sh && ./bin/grabpl package --jobs 8 --edition oss --build-id $DRONE_BUILD_NUMBER --no-pull-enterprise --variants linux-x64,linux-x64-musl,osx64,win64
depends_on:
- build-backend
- build-frontend
- build-plugins
- test-backend
- test-frontend
- codespell
- shellcheck
- name: end-to-end-tests-server
image: grafana/build-container:1.2.26
detach: true
commands:
- ./e2e/start-server
depends_on:
- package
- name: end-to-end-tests
image: grafana/ci-e2e:12.18-1
commands:
- ./node_modules/.bin/cypress install
- ./bin/grabpl e2e-tests
environment:
HOST: end-to-end-tests-server
depends_on:
- end-to-end-tests-server
- name: build-storybook
image: grafana/build-container:1.2.26
commands:
- yarn storybook:build
depends_on:
- package
- name: build-docs-website
image: grafana/docs-base:latest
commands:
- mkdir -p /hugo/content/docs/grafana
- cp -r docs/sources /hugo/content/docs/grafana/latest
- cd /hugo && make prod
depends_on:
- initialize
- name: copy-packages-for-docker
image: grafana/build-container:1.2.26
commands:
- cp dist/*.tar.gz packaging/docker/
depends_on:
- package
- name: build-docker-images
image: grafana/drone-grafana-docker:0.2.0
settings:
archs: amd64
dry_run: true
edition: oss
depends_on:
- copy-packages-for-docker
- name: postgres-integration-tests
image: grafana/build-container:1.2.26
commands:
- apt-get update
- apt-get install -yq postgresql-client
- ./bin/dockerize -wait tcp://postgres:5432 -timeout 120s
- psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql
- go clean -testcache
- ./bin/grabpl integration-tests --database postgres
environment:
GRAFANA_TEST_DB: postgres
PGPASSWORD: grafanatest
POSTGRES_HOST: postgres
depends_on:
- test-backend
- test-frontend
- name: mysql-integration-tests
image: grafana/build-container:1.2.26
commands:
- apt-get update
- apt-get install -yq default-mysql-client
- ./bin/dockerize -wait tcp://mysql:3306 -timeout 120s
- cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass
- go clean -testcache
- ./bin/grabpl integration-tests --database mysql
environment:
GRAFANA_TEST_DB: mysql
MYSQL_HOST: mysql
depends_on:
- test-backend
- test-frontend
services:
- name: postgres
image: postgres:12.3-alpine
environment:
POSTGRES_DB: grafanatest
POSTGRES_PASSWORD: grafanatest
POSTGRES_USER: grafanatest
- name: mysql
image: mysql:5.6.48
environment:
MYSQL_DATABASE: grafana_tests
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: grafana
trigger:
event:
- pull_request
---
kind: pipeline
type: docker
name: test-master
platform:
os: linux
arch: amd64
steps:
- name: identify-runner
image: alpine:3.12
commands:
- echo $DRONE_RUNNER_NAME
- name: initialize
image: grafana/build-container:1.2.26
commands:
- curl -fLO https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v$${GRABPL_VERSION}/grabpl
- chmod +x grabpl
- mkdir -p bin
- mv grabpl bin
- curl -fLO https://github.com/jwilder/dockerize/releases/download/v$${DOCKERIZE_VERSION}/dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- tar -C bin -xzvf dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- rm dockerize-linux-amd64-v$${DOCKERIZE_VERSION}.tar.gz
- yarn install --frozen-lockfile --no-progress
environment:
DOCKERIZE_VERSION: 0.6.1
GRABPL_VERSION: 0.5.8
- name: lint-backend
image: grafana/build-container:1.2.26
commands:
- golangci-lint run --config scripts/go/configs/.golangci.toml ./pkg/...
- revive -formatter stylish -config scripts/go/configs/revive.toml ./pkg/...
- ./scripts/revive-strict
environment:
CGO_ENABLED: 1
depends_on:
- initialize
- name: codespell
image: grafana/build-container:1.2.26
commands:
- "echo -e \"unknwon\nreferer\nerrorstring\neror\niam\" > words_to_ignore.txt"
- codespell -I words_to_ignore.txt docs/
depends_on:
- initialize
- name: shellcheck
image: grafana/build-container:1.2.26
commands:
- curl -fLO http://storage.googleapis.com/grafana-downloads/ci-dependencies/shellcheck-v$${VERSION}.linux.x86_64.tar.xz
- echo $$CHKSUM shellcheck-v$${VERSION}.linux.x86_64.tar.xz | sha512sum --check --strict --status
- tar xf shellcheck-v$${VERSION}.linux.x86_64.tar.xz
- mv shellcheck-v$${VERSION}/shellcheck /usr/local/bin/
- rm -rf shellcheck-v$${VERSION}*
- ./bin/grabpl shellcheck
environment:
CHKSUM: beca3d7819a6bdcfbd044576df4fc284053b48f468b2f03428fe66f4ceb2c05d9b5411357fa15003cb0311406c255084cf7283a3b8fce644c340c2f6aa910b9f
VERSION: 0.7.1
depends_on:
- initialize
- name: test-backend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl test-backend
- ./bin/grabpl integration-tests
depends_on:
- initialize
- lint-backend
- name: test-frontend
image: grafana/build-container:1.2.26
commands:
- yarn run ci:test-frontend
environment:
TEST_MAX_WORKERS: 50%
depends_on:
- initialize
- name: frontend-metrics
image: grafana/build-container:1.2.26
commands:
- ./scripts/ci-frontend-metrics.sh | ./bin/grabpl publish-metrics $${GRAFANA_MISC_STATS_API_KEY}
environment:
GRAFANA_MISC_STATS_API_KEY:
from_secret: grafana_misc_stats_api_key
depends_on:
- initialize
- name: build-backend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-backend --jobs 8 --edition oss --build-id $DRONE_BUILD_NUMBER --no-pull-enterprise
depends_on:
- initialize
- lint-backend
- test-backend
- name: build-frontend
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-frontend --jobs 8 --no-install-deps --edition oss --build-id $DRONE_BUILD_NUMBER --no-pull-enterprise
depends_on:
- initialize
- test-frontend
- name: build-plugins
image: grafana/build-container:1.2.26
commands:
- ./bin/grabpl build-plugins --jobs 8 --edition oss --no-install-deps
depends_on:
- initialize
- lint-backend
- name: package
image: grafana/build-container:1.2.26
commands:
- . scripts/build/gpg-test-vars.sh && ./bin/grabpl package --jobs 8 --edition oss --build-id $DRONE_BUILD_NUMBER --no-pull-enterprise
depends_on:
- build-backend
- build-frontend
- build-plugins
- test-backend
- test-frontend
- codespell
- shellcheck
- name: end-to-end-tests-server
image: grafana/build-container:1.2.26
detach: true
commands:
- ./e2e/start-server
depends_on:
- package
- name: end-to-end-tests
image: grafana/ci-e2e:12.18-1
commands:
- ./node_modules/.bin/cypress install
- ./bin/grabpl e2e-tests
environment:
HOST: end-to-end-tests-server
depends_on:
- end-to-end-tests-server
- name: build-storybook
image: grafana/build-container:1.2.26
commands:
- yarn storybook:build
depends_on:
- package
- name: publish-storybook
image: grafana/grafana-ci-deploy:1.2.6
commands:
- printenv GCP_KEY | base64 -d > /tmp/gcpkey.json
- gcloud auth activate-service-account --key-file=/tmp/gcpkey.json
- echo gsutil -m rsync -d -r ./packages/grafana-ui/dist/storybook gs://grafana-storybook/canary
environment:
GCP_KEY:
from_secret: gcp_key
depends_on:
- build-storybook
- name: build-docs-website
image: grafana/docs-base:latest
commands:
- mkdir -p /hugo/content/docs/grafana
- cp -r docs/sources /hugo/content/docs/grafana/latest
- cd /hugo && make prod
depends_on:
- initialize
- name: copy-packages-for-docker
image: grafana/build-container:1.2.26
commands:
- cp dist/*.tar.gz packaging/docker/
depends_on:
- package
- name: build-docker-images
image: grafana/drone-grafana-docker:0.2.0
settings:
dry_run: true
edition: oss
depends_on:
- copy-packages-for-docker
- name: build-docker-images-ubuntu
image: grafana/drone-grafana-docker:0.2.0
settings:
dry_run: true
edition: oss
ubuntu: true
depends_on:
- copy-packages-for-docker
- name: postgres-integration-tests
image: grafana/build-container:1.2.26
commands:
- apt-get update
- apt-get install -yq postgresql-client
- ./bin/dockerize -wait tcp://postgres:5432 -timeout 120s
- psql -p 5432 -h postgres -U grafanatest -d grafanatest -f devenv/docker/blocks/postgres_tests/setup.sql
- go clean -testcache
- ./bin/grabpl integration-tests --database postgres
environment:
GRAFANA_TEST_DB: postgres
PGPASSWORD: grafanatest
POSTGRES_HOST: postgres
depends_on:
- test-backend
- test-frontend
- name: mysql-integration-tests
image: grafana/build-container:1.2.26
commands:
- apt-get update
- apt-get install -yq default-mysql-client
- ./bin/dockerize -wait tcp://mysql:3306 -timeout 120s
- cat devenv/docker/blocks/mysql_tests/setup.sql | mysql -h mysql -P 3306 -u root -prootpass
- go clean -testcache
- ./bin/grabpl integration-tests --database mysql
environment:
GRAFANA_TEST_DB: mysql
MYSQL_HOST: mysql
depends_on:
- test-backend
- test-frontend
- name: release-next-npm-packages
image: grafana/build-container:1.2.26
commands:
- npx lerna bootstrap
- echo "//registry.npmjs.org/:_authToken=$${NPM_TOKEN}" >> ~/.npmrc
- echo ./scripts/circle-release-next-packages.sh
environment:
NPM_TOKEN:
from_secret: npm_token
depends_on:
- end-to-end-tests
- name: publish-packages
image: grafana/grafana-ci-deploy:1.2.6
commands:
- echo ./bin/grabpl publish-packages --edition oss
depends_on:
- package
- end-to-end-tests
- mysql-integration-tests
- postgres-integration-tests
services:
- name: postgres
image: postgres:12.3-alpine
environment:
POSTGRES_DB: grafanatest
POSTGRES_PASSWORD: grafanatest
POSTGRES_USER: grafanatest
- name: mysql
image: mysql:5.6.48
environment:
MYSQL_DATABASE: grafana_tests
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_USER: grafana
trigger:
branch:
- master
event:
- push
---
kind: pipeline
type: docker
name: windows-installer-master
platform:
os: windows
arch: amd64
version: 1809
steps:
- name: identify-runner
image: mcr.microsoft.com/windows:1809
commands:
- echo $Env:DRONE_RUNNER_NAME
- name: build-windows-installer
image: grafana/ci-wix:0.1.1
commands:
- $$gcpKey = $$env:GCP_KEY
- "[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($$gcpKey)) > gcpkey.json"
- dos2unix gcpkey.json
- gcloud auth activate-service-account --key-file=gcpkey.json
- rm gcpkey.json
- $$ProgressPreference = "SilentlyContinue"
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/grafana-build-pipeline/v0.5.8/windows/grabpl.exe -OutFile grabpl.exe
- Invoke-WebRequest https://grafana-downloads.storage.googleapis.com/oss/master/grafana-7.2.0-9fffe273pre.windows-amd64.zip -OutFile grafana.zip
- cp C:\App\nssm-2.24.zip .
- ./grabpl.exe windows-installer --edition oss grafana.zip
- $$fname = ((Get-Childitem grafana*.msi -name) -split "`n")[0]
- echo "gsutil cp $$fname gs://grafana-downloads/oss/master/"
- echo "gsutil cp $$fname.sha256 gs://grafana-downloads/oss/master/"
environment:
GCP_KEY:
from_secret: gcp_key
trigger:
branch:
- master
event:
- push
depends_on:
- test-master
...

View File

@@ -25,3 +25,6 @@ trim_trailing_whitespace = false
[Makefile]
indent_style = tab
indent_size = 2
[*.star]
indent_size = 4

View File

@@ -1,4 +1,13 @@
{
"extends": ["@grafana/eslint-config"],
"root": true
"root": true,
"overrides": [
{
"files": ["packages/**/*.{ts,tsx}", "public/app/**/*.{ts,tsx}"],
"rules": {
"react-hooks/rules-of-hooks": "off",
"react-hooks/exhaustive-deps": "off"
}
}
]
}

4
.github/CODEOWNERS vendored
View File

@@ -12,8 +12,8 @@
# This should make it easy to add new rules without breaking existing ones.
# Documentation owner: Diana Payton
/docs/ @oddlittlebird
/contribute/ @oddlittlebird @marcusolsson
/docs/ @oddlittlebird @achatterjee-grafana
/contribute/ @oddlittlebird @marcusolsson @achatterjee-grafana
# Backend code

View File

@@ -0,0 +1,39 @@
---
name: '@grafana/ui component request'
about: Suggest a component for the @grafana/ui package
labels: 'area/grafana/ui'
---
<!--
By using this template you will make it easier for us to make sure that documentation and implementation stays up to date for every component in @grafana/ui
Thank you!
-->
**Why is this component needed**:
<!-- Explain your use case -->
___
- [ ] Is/could it be used in more than one place in Grafana?
**Where is/could it be used?**:
___
- [ ] Post screenshots possible.
- [ ] It has a single use case.
- [ ] It is/could be used in multiple places.
**Implementation** (Checklist meant for the person implementing the component)
- [ ] Component has a story in Storybook.
- [ ] Props and naming follows [our style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/frontend.md).
- [ ] It is extendable (rest props are spread, styles with className work, and so on).
- [ ] Uses [theme for spacing, colors, and so on](https://github.com/grafana/grafana/blob/master/contribute/style-guides/themes.md).
- [ ] Works with both light and dark theme.
**Documentation**
- [ ] Properties are documented.
- [ ] Use cases are described.
- [ ] Code examples for the different use cases.
- [ ] Dos and don'ts.
- [ ] Styling guidelines, specific color usage (if applicable).

1
.gitignore vendored
View File

@@ -15,7 +15,6 @@ awsconfig
.yarnrc
.yarn/
vendor/
.eslintcache
# Enterprise emails
/emails/templates/enterprise_*

View File

@@ -1,3 +1,222 @@
# 7.2.0-beta1 (unreleased)
### Breaking changes
* **Units**: The date time units `YYYY-MM-DD HH:mm:ss` and `MM/DD/YYYY h:mm:ss a` have been renamed to `Datetime ISO`
and `Datetime US` respectively. This is no breaking change just a visual name change (the unit id is unchanged). The
unit behavior is different however, it no longer hides the date part if the date is today. If you want this old
behavior you need to change unit to `Datetime ISO (No date if today)` or `Datetime US (No date if today)`.
# 7.1.5 (2020-08-25)
### Features / Enhancements
* **Stats**: Stop counting the same user multiple times. [#26777](https://github.com/grafana/grafana/pull/26777), [@sakjur](https://github.com/sakjur)
### Bug Fixes
* **Alerting**: remove LongToWide call in alerting. [#27140](https://github.com/grafana/grafana/pull/27140), [@kylebrandt](https://github.com/kylebrandt)
* **AzureMonitor**: fix panic introduced in 7.1.4 when unit was unspecified and alias was used. [#27113](https://github.com/grafana/grafana/pull/27113), [@kylebrandt](https://github.com/kylebrandt)
* **Variables**: Fixes issue with All variable not being resolved. [#27151](https://github.com/grafana/grafana/pull/27151), [@hugohaggmark](https://github.com/hugohaggmark)
# 7.1.4 (2020-08-20)
### Features / Enhancements
* **Azure App Insights Alert error - tsdb.HandleRequest() failed to convert dataframe "" to tsdb.TimeSeriesSlice**. [#26897](https://github.com/grafana/grafana/issues/26897)
* **AzureMonitor**: map more units. [#26990](https://github.com/grafana/grafana/pull/26990), [@kylebrandt](https://github.com/kylebrandt)
* **Azuremonitor**: do not set unit if literal "Unspecified". [#26839](https://github.com/grafana/grafana/pull/26839), [@kylebrandt](https://github.com/kylebrandt)
* **Dataframe/Alerting**: to tsdb.TimeSeriesSlice - accept "empty" time series. [#26903](https://github.com/grafana/grafana/pull/26903), [@kylebrandt](https://github.com/kylebrandt)
* **Field overrides**: Filter by field name using regex. [#27070](https://github.com/grafana/grafana/pull/27070), [@dprokop](https://github.com/dprokop)
* **Overrides**: expose byType matcher UI. [#27056](https://github.com/grafana/grafana/pull/27056), [@ryantxu](https://github.com/ryantxu)
### Bug Fixes
* **CloudWatch**: Add FreeStorageCapacity metric. [#26503](https://github.com/grafana/grafana/pull/26503), [@waqark3389](https://github.com/waqark3389)
* **CloudWatch**: Fix sorting of metrics results. [#26835](https://github.com/grafana/grafana/pull/26835), [@aknuds1](https://github.com/aknuds1)
* **Cloudwatch**: Add FileSystemId as a dimension key for the AWS/FSx namespace. [#26662](https://github.com/grafana/grafana/pull/26662), [@waqark3389](https://github.com/waqark3389)
* **InfluxDB**: Update Flux placeholder URL with respect to latest Go client. [#27086](https://github.com/grafana/grafana/pull/27086), [@aknuds1](https://github.com/aknuds1)
* **InfluxDB**: Upgrade Go client, use data source HTTP client. [#27012](https://github.com/grafana/grafana/pull/27012), [@aknuds1](https://github.com/aknuds1)
* **Proxy**: Fix updating refresh token in OAuth pass-thru. [#26885](https://github.com/grafana/grafana/pull/26885), [@seanlaff](https://github.com/seanlaff)
* **Templating**: Fixes so texts show in picker not the values. [#27002](https://github.com/grafana/grafana/pull/27002), [@hugohaggmark](https://github.com/hugohaggmark)
# 7.1.3 (2020-08-06)
### Bug Fixes
* **Templating**: Templating: Fix undefined result when using raw interpolation format [#26818](https://github.com/grafana/grafana/pull/26818)
# 7.1.2 (2020-08-05)
### Features / Enhancements
* **Explore**: Don't run queries on datasource change. [#26033](https://github.com/grafana/grafana/pull/26033), [@davkal](https://github.com/davkal)
* **TemplateSrv**: Formatting options for ${__from} and ${__to}, unix seconds epoch, ISO 8601/RFC 3339. [#26466](https://github.com/grafana/grafana/pull/26466), [@torkelo](https://github.com/torkelo)
* **Toolkit/Plugin**: throw an Error instead of a string. [#26618](https://github.com/grafana/grafana/pull/26618), [@leventebalogh](https://github.com/leventebalogh)
### Bug Fixes
* **Dashbard**: Fix refresh interval settings to allow setting it to equal min_refresh_interval. [#26615](https://github.com/grafana/grafana/pull/26615), [@torkelo](https://github.com/torkelo)
* **Flux**: Ensure connections to InfluxDB are closed. [#26735](https://github.com/grafana/grafana/pull/26735), [@sneddrs](https://github.com/sneddrs)
* **Query history**: Fix search filtering if null value. [#26768](https://github.com/grafana/grafana/pull/26768), [@ivanahuckova](https://github.com/ivanahuckova)
* **QueryOptions**: Fix not being able to change cache timeout setting. [#26614](https://github.com/grafana/grafana/pull/26614), [@torkelo](https://github.com/torkelo)
* **StatPanel**: Fix stat panel display name not showing when explicitly set. [#26616](https://github.com/grafana/grafana/pull/26616), [@torkelo](https://github.com/torkelo)
* **Templating**: Fixed access to system variables like __dashboard, __user & __org during dashboard load & variable queries. [#26637](https://github.com/grafana/grafana/pull/26637), [@torkelo](https://github.com/torkelo)
* **TextPanel**: Fix content overflowing panel boundaries. [#26612](https://github.com/grafana/grafana/pull/26612), [@torkelo](https://github.com/torkelo)
* **TimePicker**: Fix position and responsive behavior. [#26570](https://github.com/grafana/grafana/pull/26570), [@torkelo](https://github.com/torkelo)
* **TimePicker**: Fixes app crash when changing custom range to nothing. [#26775](https://github.com/grafana/grafana/pull/26775), [@hugohaggmark](https://github.com/hugohaggmark)
* **Units**: Remove duplicate SI prefix from mSv and µSv. [#26598](https://github.com/grafana/grafana/pull/26598), [@tofurky](https://github.com/tofurky)
# 7.1.1 (2020-07-24)
### Features / Enhancements
* **Graph**: Support setting field unit & override data source (automatic) unit. [#26529](https://github.com/grafana/grafana/pull/26529), [@ryantxu](https://github.com/ryantxu)
* **Tracing**: Add errorIconColor prop to TraceSpanData. [#26509](https://github.com/grafana/grafana/pull/26509), [@zoltanbedi](https://github.com/zoltanbedi)
### Bug Fixes
* **Branding**: Fix login app title. [#26425](https://github.com/grafana/grafana/pull/26425), [@benrubson](https://github.com/benrubson)
* **Bring back scripts evaluation in TextPanel**. [#26413](https://github.com/grafana/grafana/pull/26413), [@dprokop](https://github.com/dprokop)
* **Dashboard**: Fix empty panels after scrolling on Safari/iOS. [#26495](https://github.com/grafana/grafana/pull/26495), [@torkelo](https://github.com/torkelo)
* **Dashboard**: Fix for viewer can enter panel edit mode by modifying url (but cannot not save anything). [#26556](https://github.com/grafana/grafana/pull/26556), [@torkelo](https://github.com/torkelo)
* **Elasticsearch**: Fix displaying of bucket script input. [#26552](https://github.com/grafana/grafana/pull/26552), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: parse queryType from explore url. [#26349](https://github.com/grafana/grafana/pull/26349), [@zoltanbedi](https://github.com/zoltanbedi)
* **Tracing**: upstream fix for hovering on log lines. [#26426](https://github.com/grafana/grafana/pull/26426), [@zoltanbedi](https://github.com/zoltanbedi)
# 7.1.0 (2020-07-16)
### Features / Enhancements
* **Backend**: Use latest go plugin sdk (0.74.0) to sort wide frames. [#26207](https://github.com/grafana/grafana/pull/26207), [@kylebrandt](https://github.com/kylebrandt)
* **Elasticsearch**: Create Raw Doc metric to render raw JSON docs in columns in the new table panel. [#26233](https://github.com/grafana/grafana/pull/26233), [@ivanahuckova](https://github.com/ivanahuckova)
* **PluginsListPage**: More plugins button should open in new window. [#26305](https://github.com/grafana/grafana/pull/26305), [@zoltanbedi](https://github.com/zoltanbedi)
### Bug Fixes
* **AdminUsers**: Reset page to zero on query change. [#26293](https://github.com/grafana/grafana/pull/26293), [@hshoff](https://github.com/hshoff)
* **CloudWatch Logs**: Fixes grouping of results by numeric field. [#26298](https://github.com/grafana/grafana/pull/26298), [@kaydelaney](https://github.com/kaydelaney)
* **DashboardLinks**: Do not over-query search endpoint. [#26311](https://github.com/grafana/grafana/pull/26311), [@torkelo](https://github.com/torkelo)
* **Docker**: Make sure to create default plugin provisioning directory. [#26017](https://github.com/grafana/grafana/pull/26017), [@marefr](https://github.com/marefr)
* **Elastic**: Fix error "e.buckets[Symbol.iterator] is not a function" when using filter. [#26217](https://github.com/grafana/grafana/pull/26217), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore/Loki**: Escape \ in labels for show context queries. [#26116](https://github.com/grafana/grafana/pull/26116), [@ivanahuckova](https://github.com/ivanahuckova)
* **Jaeger/Zipkin**: URL-encode service names and trace ids for API calls. [#26115](https://github.com/grafana/grafana/pull/26115), [@ivanahuckova](https://github.com/ivanahuckova)
* **Prometheus**: Fix prom links in mixed mode. [#26244](https://github.com/grafana/grafana/pull/26244), [@zoltanbedi](https://github.com/zoltanbedi)
* **Provisioning**: Fix bug when provision app plugins using Enterprise edition. [#26340](https://github.com/grafana/grafana/pull/26340), [@marefr](https://github.com/marefr)
* **Sign In** Use correct url for the Sign In button. [#26239](https://github.com/grafana/grafana/pull/26239), [@dprokop](https://github.com/dprokop)
# 7.1.0-beta3 (2020-07-13)
### Features / Enhancements
* **Explore**: Unification of logs/metrics/traces user interface. [#25890](https://github.com/grafana/grafana/pull/25890), [@aocenas](https://github.com/aocenas)
* **Graph panel**: Move Stacking and null values before Hover tooltip options (#26035). [#26037](https://github.com/grafana/grafana/pull/26037), [@jsoref](https://github.com/jsoref)
* **LDAP**: Get all groups for all group base search DNs. [#25825](https://github.com/grafana/grafana/pull/25825), [@Annegies](https://github.com/Annegies)
* **Table**: JSON Cell should try to convert strings to JSON. [#26024](https://github.com/grafana/grafana/pull/26024), [@ryantxu](https://github.com/ryantxu)
* **Transform**: adding missing "table"-transform and "series to rows"-transform to Grafana v7-transforms. [#26042](https://github.com/grafana/grafana/pull/26042), [@mckn](https://github.com/mckn)
### Bug Fixes
* **AdminUsersTable**: Fix width issues. [#26019](https://github.com/grafana/grafana/pull/26019), [@tskarhed](https://github.com/tskarhed)
* **BarGauge**: Fix space bug in single series mode. [#26176](https://github.com/grafana/grafana/pull/26176), [@torkelo](https://github.com/torkelo)
* **Dashboard**: Allow removing min refresh interval from refresh options (5s or other). [#26150](https://github.com/grafana/grafana/pull/26150), [@torkelo](https://github.com/torkelo)
* **DataLinks**: Fixed interpolation of repeated variables used in Graph data links. [#26147](https://github.com/grafana/grafana/pull/26147), [@torkelo](https://github.com/torkelo)
* **Do not break dashboard settings UI when time intervals end with trailing comma**. [#26126](https://github.com/grafana/grafana/pull/26126), [@dprokop](https://github.com/dprokop)
* **Elastic**: Display correct log message based on selected log field. [#26020](https://github.com/grafana/grafana/pull/26020), [@ivanahuckova](https://github.com/ivanahuckova)
* **InfluxDB**: Fixed new group by dropdown now showing after first use. [#26031](https://github.com/grafana/grafana/pull/26031), [@torkelo](https://github.com/torkelo)
* **StatPanel**: Fixes issue with name showing for single series / field results. [#26070](https://github.com/grafana/grafana/pull/26070), [@torkelo](https://github.com/torkelo)
* **Templating**: Fix recursive loop of template variable queries when changing ad-hoc-variable. [#26191](https://github.com/grafana/grafana/pull/26191), [@torkelo](https://github.com/torkelo)
# 7.0.6 (2020-07-09)
### Bug fixes
* **Templating**: Fixed recursive queries triggered when switching dashboard settings view [#26137](https://github.com/grafana/grafana/pull/26137)
* **Templating**: Fix recursive loop of template variable queries when changing ad-hoc-variable [#26191](https://github.com/grafana/grafana/pull/26191)
* **Auth**: Add support for forcing authentication in anonymous mode and modify SignIn to use it instead of redirect [#25567](https://github.com/grafana/grafana/pull/25567)
* **Auth**: Fix POST request failures with anonymous access [#26049](https://github.com/grafana/grafana/pull/26049)
# 7.1.0-beta 2 (2020-07-02)
### Features / Enhancements
* **Loki**: Allow aliasing Loki queries in dashboard. [#25706](https://github.com/grafana/grafana/pull/25706), [@bastjan](https://github.com/bastjan)
### Bug Fixes
* **Explore**: Fix href when jumping from Explore to Add data source. [#25991](https://github.com/grafana/grafana/pull/25991), [@ivanahuckova](https://github.com/ivanahuckova)
* **Fix**: Build-in plugins failed to load in windows. [#25982](https://github.com/grafana/grafana/pull/25982), [@papagian](https://github.com/papagian)
# 7.1.0-beta 1 (2020-07-01)
### Features / Enhancements
* **Alerting**: Adds support for multiple URLs in Alertmanager notifier. [#24196](https://github.com/grafana/grafana/pull/24196), [@alistarle](https://github.com/alistarle)
* **Alerting**: updating the victorops alerter to handle the no_data alert type. [#23761](https://github.com/grafana/grafana/pull/23761), [@rrusso1982](https://github.com/rrusso1982)
* **Azure**: Application Insights metrics to Frame and support multiple query dimensions. [#25849](https://github.com/grafana/grafana/pull/25849), [@kylebrandt](https://github.com/kylebrandt)
* **Azure**: Multiple dimension support for Azure Monitor Service. [#25947](https://github.com/grafana/grafana/pull/25947), [@kylebrandt](https://github.com/kylebrandt)
* **Azure**: Split Insights into two services. [#25410](https://github.com/grafana/grafana/pull/25410), [@kylebrandt](https://github.com/kylebrandt)
* **Backend plugins**: Refactor to allow shared contract between core and external backend plugins. [#25472](https://github.com/grafana/grafana/pull/25472), [@marefr](https://github.com/marefr)
* **Branding**: Use AppTitle as document title. [#25271](https://github.com/grafana/grafana/pull/25271), [@benrubson](https://github.com/benrubson)
* **Chore**: upgrade to typescript 3.9.3. [#25154](https://github.com/grafana/grafana/pull/25154), [@ryantxu](https://github.com/ryantxu)
* **CloudWatch**: Add Route53 DNSQueries metric and dimension. [#25125](https://github.com/grafana/grafana/pull/25125), [@erkolson](https://github.com/erkolson)
* **CloudWatch**: Added AWS DataSync metrics and dimensions. [#25054](https://github.com/grafana/grafana/pull/25054), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Added AWS MediaStore metrics and dimensions. [#25492](https://github.com/grafana/grafana/pull/25492), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Added AWS RoboMaker metrics and dimensions. [#25090](https://github.com/grafana/grafana/pull/25090), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Added AWS SDKMetrics metrics and dimensions. [#25150](https://github.com/grafana/grafana/pull/25150), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Added AWS ServiceCatalog metrics and dimensions. [#25812](https://github.com/grafana/grafana/pull/25812), [@ilyastoli](https://github.com/ilyastoli)
* **CloudWatch**: Added AWS WAFV2 metrics. [#24048](https://github.com/grafana/grafana/pull/24048), [@mikkokupsu](https://github.com/mikkokupsu)
* **Dashboards**: Make path to default dashboard configurable. [#25595](https://github.com/grafana/grafana/pull/25595), [@bergquist](https://github.com/bergquist)
* **Elastic**: Internal data links. [#25942](https://github.com/grafana/grafana/pull/25942), [@aocenas](https://github.com/aocenas)
* **Elasticsearch**: Add support for template variable in date histogram min_doc_count. [#21064](https://github.com/grafana/grafana/pull/21064), [@faxm0dem](https://github.com/faxm0dem)
* **Elasticsearch**: Adds cumulative sum aggregation support. [#24820](https://github.com/grafana/grafana/pull/24820), [@retzkek](https://github.com/retzkek)
* **Elasticsearch**: Support using a variable for histogram and terms min doc count. [#25392](https://github.com/grafana/grafana/pull/25392), [@marefr](https://github.com/marefr)
* **Explore/Loki**: Show results of instant queries only in table and time series only in graph. [#25845](https://github.com/grafana/grafana/pull/25845), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: Remove legend formatting when switching from panel to Explore. [#25848](https://github.com/grafana/grafana/pull/25848), [@ivanahuckova](https://github.com/ivanahuckova)
* **Footer**: Add back footer to login page. [#25656](https://github.com/grafana/grafana/pull/25656), [@torkelo](https://github.com/torkelo)
* **ForgottenPassword**: Move view to login screen. [#25366](https://github.com/grafana/grafana/pull/25366), [@tskarhed](https://github.com/tskarhed)
* **Gauge**: Hide orientation option in panel options. [#25511](https://github.com/grafana/grafana/pull/25511), [@torkelo](https://github.com/torkelo)
* **Grafana-UI**: Add FileUpload. [#25835](https://github.com/grafana/grafana/pull/25835), [@Clarity-89](https://github.com/Clarity-89)
* **GraphPanel**: Make legend values clickable series toggles. [#25581](https://github.com/grafana/grafana/pull/25581), [@hshoff](https://github.com/hshoff)
* **Influx**: Support flux in the influx datasource. [#25308](https://github.com/grafana/grafana/pull/25308), [@ryantxu](https://github.com/ryantxu)
* **Migration**: Select org. [#24739](https://github.com/grafana/grafana/pull/24739), [@tskarhed](https://github.com/tskarhed)
* **Migration**: Settings forms. [#24741](https://github.com/grafana/grafana/pull/24741), [@tskarhed](https://github.com/tskarhed)
* **Panel Inspect**: use Monaco editor for json display. [#25251](https://github.com/grafana/grafana/pull/25251), [@ryantxu](https://github.com/ryantxu)
* **Panel edit**: Clicking twice on a visualization closes the VizPicker. [#25739](https://github.com/grafana/grafana/pull/25739), [@peterholmberg](https://github.com/peterholmberg)
* **PanelInspect**: Update UI for Data display options. [#25478](https://github.com/grafana/grafana/pull/25478), [@tskarhed](https://github.com/tskarhed)
* **Plugins**: move jaeger trace type to grafana data. [#25403](https://github.com/grafana/grafana/pull/25403), [@zoltanbedi](https://github.com/zoltanbedi)
* **Provisioning**: Adds support for enabling app plugins. [#25649](https://github.com/grafana/grafana/pull/25649), [@marefr](https://github.com/marefr)
* **Provisioning**: Use folders structure from the file system to create desired folders in dashboard provisioning. [#23117](https://github.com/grafana/grafana/pull/23117), [@nabokihms](https://github.com/nabokihms)
* **Query history**: Add keyboard shortcut support for commenting. [#24736](https://github.com/grafana/grafana/pull/24736), [@ivanahuckova](https://github.com/ivanahuckova)
* **Query history**: Add search for query history and starred queries. [#25747](https://github.com/grafana/grafana/pull/25747), [@ivanahuckova](https://github.com/ivanahuckova)
* **Rich history**: Updates for default settings and starred queries deletion. [#25732](https://github.com/grafana/grafana/pull/25732), [@ivanahuckova](https://github.com/ivanahuckova)
* **Search**: support URL query params. [#25541](https://github.com/grafana/grafana/pull/25541), [@Clarity-89](https://github.com/Clarity-89)
* **Stackdriver**: Deep linking from Grafana panels to the Metrics Explorer. [#25858](https://github.com/grafana/grafana/pull/25858), [@papagian](https://github.com/papagian)
* **Stackdriver**: Rename Stackdriver to Google Cloud Monitoring. [#25807](https://github.com/grafana/grafana/pull/25807), [@papagian](https://github.com/papagian)
* **StatPanel**: Option showing name instead of value and more. [#25676](https://github.com/grafana/grafana/pull/25676), [@torkelo](https://github.com/torkelo)
* **Switch**: Deprecate checked prop in favor of value. [#25862](https://github.com/grafana/grafana/pull/25862), [@tskarhed](https://github.com/tskarhed)
* **Tab**: Make active tab clickable and add hyperlink functionality. [#25546](https://github.com/grafana/grafana/pull/25546), [@tskarhed](https://github.com/tskarhed)
* **Table**: Adds adhoc filtering. [#25467](https://github.com/grafana/grafana/pull/25467), [@hugohaggmark](https://github.com/hugohaggmark)
* **Teams**: Add index for permission check. [#25736](https://github.com/grafana/grafana/pull/25736), [@sakjur](https://github.com/sakjur)
* **Template variable filters**: Hide overflowing text. [#25801](https://github.com/grafana/grafana/pull/25801), [@tskarhed](https://github.com/tskarhed)
* **Templating**: Add bult in __user {name, id, login, email} variable to templating system. [#23378](https://github.com/grafana/grafana/pull/23378), [@aidanmountford](https://github.com/aidanmountford)
* **Templating**: removes old Angular variable system and featureToggle. [#24779](https://github.com/grafana/grafana/pull/24779), [@hugohaggmark](https://github.com/hugohaggmark)
* **TextPanel**: Adds proper editor for markdown and html. [#25618](https://github.com/grafana/grafana/pull/25618), [@hugohaggmark](https://github.com/hugohaggmark)
* **TextPanel**: Removes Angular Text Panel. [#25504](https://github.com/grafana/grafana/pull/25504), [@hugohaggmark](https://github.com/hugohaggmark)
* **TextPanel**: Removes text mode. [#25589](https://github.com/grafana/grafana/pull/25589), [@hugohaggmark](https://github.com/hugohaggmark)
* **TimeZone**: unify the time zone pickers to one that can rule them all. [#24803](https://github.com/grafana/grafana/pull/24803), [@mckn](https://github.com/mckn)
* **Transform**: added merge transform that will merge multiple series/tables into one table. [#25490](https://github.com/grafana/grafana/pull/25490), [@mckn](https://github.com/mckn)
* **Units**: add base-pascals and rotational speed units. [#22879](https://github.com/grafana/grafana/pull/22879), [@sakjur](https://github.com/sakjur)
* **Units**: add new unit for duration, it is optimized for displaying days, hours, minutes and seconds. [#24175](https://github.com/grafana/grafana/pull/24175), [@pabigot](https://github.com/pabigot)
* **Variables**: enables cancel for slow query variables queries. [#24430](https://github.com/grafana/grafana/pull/24430), [@hugohaggmark](https://github.com/hugohaggmark)
* **switches default value for security settings**. [#25175](https://github.com/grafana/grafana/pull/25175), [@bergquist](https://github.com/bergquist)
* **Reporting:** add monthly schedule option. (Enterprise)
### Bug Fixes
* **DatatLinks**: Fix open in new tab state mismatch. [#25826](https://github.com/grafana/grafana/pull/25826), [@tskarhed](https://github.com/tskarhed)
* **Explore/Loki**: Fix field type in table for instant queries. [#25907](https://github.com/grafana/grafana/pull/25907), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore/Loki**: Fix scrolling of context when leaving context window. [#25838](https://github.com/grafana/grafana/pull/25838), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore/SQL data sources**: Show correctly interpolated queries. [#25110](https://github.com/grafana/grafana/pull/25110), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore/Tooltip**: Fix label value in tooltip. [#25940](https://github.com/grafana/grafana/pull/25940), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: Fix query editors on mobile. [#25148](https://github.com/grafana/grafana/pull/25148), [@ivanahuckova](https://github.com/ivanahuckova)
* **Explore**: adds an ability to exit log row context with ESC key. [#24205](https://github.com/grafana/grafana/pull/24205), [@Estrax](https://github.com/Estrax)
* **Fix**: Value mappings match against string values. [#25929](https://github.com/grafana/grafana/pull/25929), [@peterholmberg](https://github.com/peterholmberg)
* **GraphPanel**: Fix annotations overflowing panels. [#25606](https://github.com/grafana/grafana/pull/25606), [@hshoff](https://github.com/hshoff)
* **Instrumentation**: Fix setting Jaeger tracing address through Grafana config. [#25768](https://github.com/grafana/grafana/pull/25768), [@marefr](https://github.com/marefr)
* **Prometheus**: Fix performance issue in processing of histogram labels. [#25813](https://github.com/grafana/grafana/pull/25813), [@bsherrod](https://github.com/bsherrod)
* **Provisioning**: Makes file the default dashboard provisioner type. [#24856](https://github.com/grafana/grafana/pull/24856), [@bergquist](https://github.com/bergquist)
* **Templating**: fixes variables not being interpolated after dashboard refresh. [#25698](https://github.com/grafana/grafana/pull/25698), [@hugohaggmark](https://github.com/hugohaggmark)
* **Units**: Custom unit suffix and docs for custom units. [#25710](https://github.com/grafana/grafana/pull/25710), [@torkelo](https://github.com/torkelo)
* **ValueFormats**: Fix byte-format data rates. [#25424](https://github.com/grafana/grafana/pull/25424), [@mueslo](https://github.com/mueslo)
* **Variables**: Fixes maximum call stack bug for empty value. [#25503](https://github.com/grafana/grafana/pull/25503), [@hugohaggmark](https://github.com/hugohaggmark)
### Security fixes
* **Graph**: Fix XSS vulnerability with series overrides [#25401](https://github.com/grafana/grafana/pull/25401). Thanks to Rotem Reiss for reporting this.
# 7.0.5 (2020-06-30)
### Bug Fixes
@@ -1895,7 +2114,7 @@ See [security announcement](https://community.grafana.com/t/grafana-5-3-3-and-4-
- **Docker**: Make it possible to set a specific plugin url [#12861](https://github.com/grafana/grafana/pull/12861), thx [ClementGautier](https://github.com/ClementGautier)
- **GrafanaCli**: Fixed issue with grafana-cli install plugin resulting in corrupt http response from source error. Fixes [#13079](https://github.com/grafana/grafana/issues/13079)
- **Provisioning**: Should allow one default data source per organization [#12229](https://github.com/grafana/grafana/issues/12229)
- **Github OAuth**: Allow changes of user info at Github to be synched to Grafana when signing in [#11818](https://github.com/grafana/grafana/issues/11818), thx [@rwaweber](https://github.com/rwaweber)
- **GitHub OAuth**: Allow changes of user info at GitHub to be synched to Grafana when signing in [#11818](https://github.com/grafana/grafana/issues/11818), thx [@rwaweber](https://github.com/rwaweber)
- **OAuth**: Fix overriding tls_skip_verify_insecure using environment variable [#12747](https://github.com/grafana/grafana/issues/12747), thx [@jangaraj](https://github.com/jangaraj)
- **Prometheus**: Fix graph panel bar width issue in aligned prometheus queries [#12379](https://github.com/grafana/grafana/issues/12379)
- **Prometheus**: Heatmap - fix unhandled error when some points are missing [#12484](https://github.com/grafana/grafana/issues/12484)
@@ -2210,7 +2429,7 @@ See [security announcement](https://community.grafana.com/t/grafana-5-2-3-and-4-
### Fixes
- **oauth** Fix Github OAuth not working with private Organizations [#11028](https://github.com/grafana/grafana/pull/11028) [@lostick](https://github.com/lostick)
- **oauth** Fix GitHub OAuth not working with private Organizations [#11028](https://github.com/grafana/grafana/pull/11028) [@lostick](https://github.com/lostick)
- **kiosk** white area over bottom panels in kiosk mode [#11010](https://github.com/grafana/grafana/issues/11010)
- **alerting** Fix OK state doesn't show up in Microsoft Teams [#11032](https://github.com/grafana/grafana/pull/11032), thx [@manacker](https://github.com/manacker)
@@ -2222,7 +2441,7 @@ See [security announcement](https://community.grafana.com/t/grafana-5-2-3-and-4-
- **Folders** Make it easier/explicit to access/modify folders using the API [#10630](https://github.com/grafana/grafana/issues/10630)
- **Dashboard** Scrollbar works incorrectly in Grafana 5.0 Beta4 in some cases [#10982](https://github.com/grafana/grafana/issues/10982)
- **ElasticSearch** Custom aggregation sizes no longer allowed for Elasticsearch [#10124](https://github.com/grafana/grafana/issues/10124)
- **oauth** Github OAuth with allowed organizations fails to login [#10964](https://github.com/grafana/grafana/issues/10964)
- **oauth** GitHub OAuth with allowed organizations fails to login [#10964](https://github.com/grafana/grafana/issues/10964)
- **heatmap** Heatmap panel has partially hidden legend [#10793](https://github.com/grafana/grafana/issues/10793)
- **snapshots** Expired snapshots not being cleaned up [#10996](https://github.com/grafana/grafana/pull/10996)
@@ -2255,7 +2474,7 @@ See [security announcement](https://community.grafana.com/t/grafana-5-2-3-and-4-
- **Light theme** Fixed problem with light theme in safari, [#10869](https://github.com/grafana/grafana/issues/10869)
- **Provisioning** Now handles deletes when dashboard json files removed from disk [#10865](https://github.com/grafana/grafana/issues/10865)
- **MySQL** Fixed issue with schema migration on old mysql (index too long) [#10779](https://github.com/grafana/grafana/issues/10779)
- **Github OAuth** Fixed fetching github orgs from private github org [#10823](https://github.com/grafana/grafana/issues/10823)
- **GitHub OAuth** Fixed fetching github orgs from private github org [#10823](https://github.com/grafana/grafana/issues/10823)
- **Embedding** Fixed issues embedding panel [#10787](https://github.com/grafana/grafana/issues/10787)
# 5.0.0-beta1 (2018-02-05)
@@ -2314,7 +2533,7 @@ Dashboard panels and rows are positioned using a gridPos object `{x: 0, y: 0, w:
- **Dashboard**: Make it possible to start dashboards from search and dashboard list panel [#1871](https://github.com/grafana/grafana/issues/1871)
- **Annotations**: Posting annotations now return the id of the annotation [#9798](https://github.com/grafana/grafana/issues/9798)
- **Systemd**: Use systemd notification ready flag [#10024](https://github.com/grafana/grafana/issues/10024), thx [@jgrassler](https://github.com/jgrassler)
- **Github**: Use organizations_url provided from github to verify user belongs in org. [#10111](https://github.com/grafana/grafana/issues/10111), thx
- **GitHub**: Use organizations_url provided from github to verify user belongs in org. [#10111](https://github.com/grafana/grafana/issues/10111), thx
[@adiletmaratov](https://github.com/adiletmaratov)
- **Backend**: Fixed bug where Grafana exited before all sub routines where finished [#10131](https://github.com/grafana/grafana/issues/10131)
- **Azure**: Adds support for Azure blob storage as external image stor [#8955](https://github.com/grafana/grafana/issues/8955), thx [@saada](https://github.com/saada)
@@ -3321,8 +3540,8 @@ Grunt & Watch tasks:
- [Issue #2218](https://github.com/grafana/grafana/issues/2218). Auth: You can now authenticate against api with username / password using basic auth
- [Issue #2095](https://github.com/grafana/grafana/issues/2095). Search: Search now supports filtering by multiple dashboard tags
- [Issue #1905](https://github.com/grafana/grafana/issues/1905). Github OAuth: You can now configure a Github team membership requirement, thx @dewski
- [Issue #2052](https://github.com/grafana/grafana/issues/2052). Github OAuth: You can now configure a Github organization requirement, thx @indrekj
- [Issue #1905](https://github.com/grafana/grafana/issues/1905). GitHub OAuth: You can now configure a GitHub team membership requirement, thx @dewski
- [Issue #2052](https://github.com/grafana/grafana/issues/2052). GitHub OAuth: You can now configure a GitHub organization requirement, thx @indrekj
- [Issue #1891](https://github.com/grafana/grafana/issues/1891). Security: New config option to disable the use of gravatar for profile images
- [Issue #1921](https://github.com/grafana/grafana/issues/1921). Auth: Support for user authentication via reverse proxy header (like X-Authenticated-User, or X-WEBAUTH-USER)
- [Issue #960](https://github.com/grafana/grafana/issues/960). Search: Backend can now index a folder with json files, will be available in search (saving back to folder is not supported, this feature is meant for static generated json dashboards)
@@ -3364,7 +3583,7 @@ Grunt & Watch tasks:
- [Issue #1749](https://github.com/grafana/grafana/issues/1749). Graph Panel: Table legends are now visible when rendered to PNG
- [Issue #1786](https://github.com/grafana/grafana/issues/1786). Graph Panel: Legend in table mode now aligns, graph area is reduced depending on how many series
- [Issue #1734](https://github.com/grafana/grafana/issues/1734). Support for unicode / international characters in dashboard title (improved slugify)
- [Issue #1782](https://github.com/grafana/grafana/issues/1782). Github OAuth: Now works with Github for Enterprise, thanks @williamjoy
- [Issue #1782](https://github.com/grafana/grafana/issues/1782). GitHub OAuth: Now works with GitHub for Enterprise, thanks @williamjoy
- [Issue #1780](https://github.com/grafana/grafana/issues/1780). Dashboard snapshot: Should not require login to view snapshot, Fixes #1780
# 2.0.0-Beta3 (2015-04-12)

View File

@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@grafana.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at conduct@grafana.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

View File

@@ -1,4 +1,4 @@
FROM node:12.18.1-alpine3.12 as js-builder
FROM node:12.18.3-alpine3.12 as js-builder
WORKDIR /usr/src/app/
@@ -16,7 +16,7 @@ COPY emails emails
ENV NODE_ENV production
RUN ./node_modules/.bin/grunt build
FROM golang:1.14.4-alpine3.12 as go-builder
FROM golang:1.15.1-alpine3.12 as go-builder
RUN apk add --no-cache gcc g++
@@ -50,7 +50,7 @@ ENV PATH="/usr/share/grafana/bin:$PATH" \
WORKDIR $GF_PATHS_HOME
RUN apk add --no-cache ca-certificates bash tzdata && \
apk add --no-cache --upgrade openssl musl-utils
apk add --no-cache openssl musl-utils
COPY conf ./conf

View File

@@ -1,4 +1,4 @@
FROM node:12.16.3-slim AS js-builder
FROM node:12.18.3-slim AS js-builder
WORKDIR /usr/src/app/
@@ -16,7 +16,7 @@ COPY emails emails
ENV NODE_ENV production
RUN ./node_modules/.bin/grunt build
FROM golang:1.14.2 AS go-builder
FROM golang:1.15.1 AS go-builder
WORKDIR /src/grafana
@@ -50,7 +50,7 @@ WORKDIR $GF_PATHS_HOME
COPY conf conf
# curl should be part of the image
RUN apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates curl
RUN apt-get update && apt-get install -y ca-certificates curl
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
addgroup --system --gid $GF_GID grafana && \
@@ -66,7 +66,6 @@ RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
COPY --from=go-builder /src/grafana/bin/linux-amd64/grafana-server /src/grafana/bin/linux-amd64/grafana-cli bin/
COPY --from=js-builder /usr/src/app/public public
COPY --from=js-builder /usr/src/app/tools tools

View File

@@ -1,5 +1,5 @@
'use strict';
module.exports = function (grunt) {
module.exports = function(grunt) {
var os = require('os');
var config = {
pkg: grunt.file.readJSON('package.json'),
@@ -47,18 +47,20 @@ module.exports = function (grunt) {
// Utility function to load plugin settings into config
function loadConfig(config, path) {
require('glob').sync('*', {cwd: path}).forEach(function(option) {
var key = option.replace(/\.js$/,'');
// If key already exists, extend it. It is your responsibility to avoid naming collisions
config[key] = config[key] || {};
grunt.util._.extend(config[key], require(path + option)(config,grunt));
});
require('glob')
.sync('*', { cwd: path })
.forEach(function(option) {
var key = option.replace(/\.js$/, '');
// If key already exists, extend it. It is your responsibility to avoid naming collisions
config[key] = config[key] || {};
grunt.util._.extend(config[key], require(path + option)(config, grunt));
});
// technically not required
return config;
}
// Merge that object with what with whatever we have here
loadConfig(config,'./scripts/grunt/options/');
loadConfig(config, './scripts/grunt/options/');
// pass the config to grunt
grunt.initConfig(config);
};

View File

@@ -327,14 +327,14 @@ This will give you a structure of labels in the sidebar similar to the following
```
- Inbox
...
- Github (mine)
- GitHub (mine)
- activity
- assigned
- mentions
- Github (other)
- GitHub (other)
- Grafana
```
* All notifications youll need to read/take action on show up as unread in Github (mine) and its sub-labels.
* All other notifications you dont need to take action on show up as unread in Github (other) and its sub-labels
* All notifications youll need to read/take action on show up as unread in GitHub (mine) and its sub-labels.
* All other notifications you dont need to take action on show up as unread in GitHub (other) and its sub-labels
* This is convenient for issue triage and to follow the activity in the Grafana project.

View File

@@ -83,16 +83,7 @@ revive: scripts/go/bin/revive
revive-strict: scripts/go/bin/revive
@echo "lint via revive (strict)"
@scripts/go/bin/revive \
-formatter stylish \
-config ./scripts/go/configs/revive-strict.toml \
-exclude ./pkg/plugins/backendplugin/pluginextensionv2/... \
./pkg/services/alerting/... \
./pkg/services/provisioning/datasources/... \
./pkg/services/provisioning/dashboards/... \
./pkg/services/provisioning/notifiers/... \
./pkg/services/provisioning/values/... \
./pkg/plugins/backendplugin/...
@scripts/revive-strict scripts/go/bin/revive
scripts/go/bin/golangci-lint: scripts/go/go.mod
@cd scripts/go; \

View File

@@ -279,11 +279,11 @@ editors_can_admin = false
# Login cookie name
login_cookie_name = grafana_session
# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days.
login_maximum_inactive_lifetime_days = 7
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation (token_rotation_interval_minutes).
login_maximum_inactive_lifetime_duration =
# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
login_maximum_lifetime_days = 30
# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
login_maximum_lifetime_duration =
# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
token_rotation_interval_minutes = 10
@@ -301,8 +301,8 @@ signout_redirect_url =
# This setting is ignored if multiple OAuth providers are configured.
oauth_auto_login = false
# OAuth state max age cookie duration. Defaults to 60 seconds.
oauth_state_cookie_max_age = 60
# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.
oauth_state_cookie_max_age = 600
# limit of api_key seconds to live before expiration
api_key_max_seconds_to_live = -1
@@ -321,12 +321,12 @@ org_role = Viewer
# mask the Grafana version number for unauthenticated users
hide_version = false
#################################### Github Auth #########################
#################################### GitHub Auth #########################
[auth.github]
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
@@ -340,7 +340,7 @@ allowed_organizations =
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = api
auth_url = https://gitlab.com/oauth/authorize
token_url = https://gitlab.com/oauth/token
@@ -353,7 +353,7 @@ allowed_groups =
enabled = false
allow_sign_up = true
client_id = some_client_id
client_secret = some_client_secret
client_secret =
scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
auth_url = https://accounts.google.com/o/oauth2/auth
token_url = https://accounts.google.com/o/oauth2/token
@@ -367,7 +367,7 @@ hosted_domain =
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = user:email
allowed_organizations =
@@ -375,7 +375,7 @@ allowed_organizations =
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = user:email
allowed_organizations =
@@ -385,7 +385,7 @@ name = Azure AD
enabled = false
allow_sign_up = true
client_id = some_client_id
client_secret = some_client_secret
client_secret =
scopes = openid email profile
auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
@@ -398,7 +398,7 @@ name = Okta
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = openid profile email groups
auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
token_url = https://<tenant-id>.okta.com/oauth2/v1/token
@@ -413,11 +413,13 @@ name = OAuth
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
client_secret =
scopes = user:email
email_attribute_name = email:primary
email_attribute_path =
login_attribute_path =
role_attribute_path =
id_token_attribute_name =
auth_url =
token_url =
api_url =
@@ -597,6 +599,36 @@ max_attempts = 3
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
min_interval_seconds = 1
# Configures for how long alert annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as an duration. Ex 6h (hours), 10d (days), 2w (weeks), 1M (month).
max_annotation_age =
# Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.
max_annotations_to_keep =
#################################### Annotations #########################
[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.
# Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
max_age =
# Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.
max_annotations_to_keep =
[annotations.api]
# API annotations means that the annotations have been created using the API without any
# association with a dashboard.
# Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
max_age =
# Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.
max_annotations_to_keep =
#################################### Explore #############################
[explore]
# Enable the Explore section
@@ -614,6 +646,12 @@ disable_total_stats = false
basic_auth_username =
basic_auth_password =
# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which
# can expose more information about the Grafana instance.
[metrics.environment_info]
#exampleLabel1 = exampleValue1
#exampleLabel2 = exampleValue2
# Send internal Grafana metrics to graphite
[metrics.graphite]
# Enable by setting the address setting (ex localhost:2003)
@@ -675,6 +713,8 @@ public_url =
key_file =
bucket =
path =
enable_signed_urls = false
signed_url_expiration =
[external_image_storage.azure_blob]
account_name =
@@ -771,3 +811,23 @@ license_path =
[feature_toggles]
# enable features, separated by spaces
enable =
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# Default system date format used in time range picker and other places where full time is displayed
full_date = YYYY-MM-DD HH:mm:ss
# Used by graph and other places where we only show small intervals
interval_second = HH:mm:ss
interval_minute = HH:mm
interval_hour = MM/DD HH:mm
interval_day = MM/DD
interval_month = YYYY-MM
interval_year = YYYY
# Experimental feature
use_browser_locale = false
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
default_timezone = browser

View File

@@ -278,11 +278,11 @@
# Login cookie name
;login_cookie_name = grafana_session
# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days,
;login_maximum_inactive_lifetime_days = 7
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation
;login_maximum_inactive_lifetime_duration =
# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
;login_maximum_lifetime_days = 30
# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
;login_maximum_lifetime_duration =
# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
;token_rotation_interval_minutes = 10
@@ -300,8 +300,8 @@
# This setting is ignored if multiple OAuth providers are configured.
;oauth_auto_login = false
# OAuth state max age cookie duration. Defaults to 60 seconds.
;oauth_state_cookie_max_age = 60
# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.
;oauth_state_cookie_max_age = 600
# limit of api_key seconds to live before expiration
;api_key_max_seconds_to_live = -1
@@ -320,7 +320,7 @@
# mask the Grafana version number for unauthenticated users
;hide_version = false
#################################### Github Auth ##########################
#################################### GitHub Auth ##########################
[auth.github]
;enabled = false
;allow_sign_up = true
@@ -407,6 +407,8 @@
;scopes = user:email,read:org
;email_attribute_name = email:primary
;email_attribute_path =
;login_attribute_path =
;id_token_attribute_name =
;auth_url = https://foo.bar/login/oauth/authorize
;token_url = https://foo.bar/login/oauth/access_token
;api_url = https://foo.bar/user
@@ -589,6 +591,36 @@
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
;min_interval_seconds = 1
# Configures for how long alert annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_annotation_age =
# Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.
;max_annotations_to_keep =
#################################### Annotations #########################
[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.
# Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_age =
# Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.
;max_annotations_to_keep =
[annotations.api]
# API annotations means that the annotations have been created using the API without any
# association with a dashboard.
# Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_age =
# Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.
;max_annotations_to_keep =
#################################### Explore #############################
[explore]
# Enable the Explore section
@@ -608,6 +640,12 @@
; basic_auth_username =
; basic_auth_password =
# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which
# can expose more information about the Grafana instance.
[metrics.environment_info]
#exampleLabel1 = exampleValue1
#exampleLabel2 = exampleValue2
# Send internal metrics to Graphite
[metrics.graphite]
# Enable by setting the address setting (ex localhost:2003)
@@ -762,3 +800,23 @@
[feature_toggles]
# enable features, separated by spaces
;enable =
[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/
# Default system date format used in time range picker and other places where full time is displayed
;full_date = YYYY-MM-DD HH:mm:ss
# Used by graph and other places where we only show small intervals
;interval_second = HH:mm:ss
;interval_minute = HH:mm
;interval_hour = MM/DD HH:mm
;interval_day = MM/DD
;interval_month = YYYY-MM
;interval_year = YYYY
# Experimental feature
;use_browser_locale = false
# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
;default_timezone = browser

View File

@@ -27,11 +27,14 @@ npm install -g yarn
## Download Grafana
We recommend using Go to download the source code for the Grafana project:
We recommend using the Git command-line interface to download the source code for the Grafana project:
1. Add `export GOPATH=$HOME/go/` to the bottom of your `$HOME/.bash_profile`.
1. Open a terminal and run `go get github.com/grafana/grafana` in your terminal. This command downloads, and installs Grafana to your `$GOPATH`.
1. Open `$GOPATH/src/github.com/grafana/grafana` in your favorite code editor.
1. Open a terminal and run `git clone https://github.com/grafana/grafana.git`. This command downloads Grafana to a new `grafana` directory in your current directory.
1. Open the `grafana` directory in your favorite code editor.
For alternative ways of cloning the Grafana repository, please refer to [GitHub's cloning a repository](https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) documentation.
**Warning:** Do not use `go get` to download Grafana. Recent versions of Go have added behavior which isn't compatible with the way the Grafana repository is structured.
## Build Grafana
@@ -125,7 +128,7 @@ yarn e2e:dev
## Configure Grafana for development
The default configuration, `grafana.ini`, is located in the `conf` directory.
The default configuration, `defaults.ini`, is located in the `conf` directory.
To override the default configuration, create a `custom.ini` file in the `conf` directory. You only need to add the options you wish to override.
@@ -184,7 +187,7 @@ Are you having issues with setting up your environment? Here are some tips that
### Too many open files when running `make run`
Depending on your environment, you may have to increase the maximum number of open files allowed. For the rest of this section, we will assume you are on a Unix like OS (e.g. Linux/MacOS), where you can control the maximum number of open files through the [ulimit](https://ss64.com/bash/ulimit.html) shell command.
Depending on your environment, you may have to increase the maximum number of open files allowed. For the rest of this section, we will assume you are on a Unix like OS (e.g. Linux/macOS), where you can control the maximum number of open files through the [ulimit](https://ss64.com/bash/ulimit.html) shell command.
To see how many open files are allowed, run:

View File

@@ -1,6 +1,6 @@
# Backend style guide
Grafanas backend has been developed for a long time with a mix of code styles. This guide explains how we want to write Go code in the future.
Grafana's backend has been developed for a long time with a mix of code styles. This guide explains how we want to write Go code in the future.
Unless stated otherwise, use the guidelines listed in the following articles:

View File

@@ -22,11 +22,11 @@ Start your document with a single ``#`` for the title of the page. Add the sub-h
* Make text **bold** using two asterisks.
**Example:** It is ``**important**`` to use Github Flavored Markdown emoji consistently.
**Example:** It is ``**important**`` to use GitHub Flavored Markdown emoji consistently.
* Make text ``*emphasized*`` using single `` _underscores_`` or a single asterisk.
**Example:** Github Flavored Markdown emoji should _only_ appear in specific cases.
**Example:** GitHub Flavored Markdown emoji should _only_ appear in specific cases.
## Links and references
@@ -36,7 +36,7 @@ the web URL in curved brackets.
\[text to display](www.website.com)
**Example:** For more information on including emoji in Github flavored Markdown, refer to the [webfx page on emoji](https://www.webfx.com/tools/emoji-cheat-sheet/) for a list of emoji.
**Example:** For more information on including emoji in GitHub flavored Markdown, refer to the [webfx page on emoji](https://www.webfx.com/tools/emoji-cheat-sheet/) for a list of emoji.
## Block quotes

View File

@@ -4,7 +4,7 @@ This style guide applies to all documentation created for Grafana products.
For information about how to write technical documentation, we suggest reviewing the content of the [Google Technical Writing courses](https://developers.google.com/tech-writing).
The [Divio documentation system](https://documentation.divio.com/) site is also a good resource.
The [Divio documentation system](https://documentation.divio.com/) site and the [Vue writing principles](https://v3.vuejs.org/guide/contributing/writing-guide.html#principles) are also good resources.
## Contributing
@@ -18,6 +18,32 @@ For all items not covered in this guide, refer to the [Microsoft Style Guide](ht
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
## Inclusive language
This section provides guidelines on how to avoid using charged language in documentation.
### Allowing and blocking
Don't use "whitelist" or "blacklist" when referring to allowing or blocking content or traffic.
* When used as a noun, use "allowlist" or "blocklist".
* When used as a verb, use "allow" or "block"
Example: _To **allow** outgoing traffic, add the IP to the **allowlist**._
### Leader and follower
Don't use "master" or "slave" to describe relationships between nodes or processes.
* Use "leader", "main" or "primary," instead of "master."
* Use "follower" or "secondary," instead of "slave."
### Exceptions
When referring to a configuration or settings used by third-party libraries och technologies outside the Grafana project, prefer the original name to avoid confusion.
For example, use "master" when referring to the default Git branch.
## Grafana-specific style
The following sections provide general guidelines on topics specific to Grafana documentation. Note that for the most part, these are *guidelines*, not rigid rules. If you have questions, ask in the #docs channel of Grafana Slack.
@@ -31,9 +57,10 @@ The following sections provide general guidelines on topics specific to Grafana
* Write in present tense.
- Not: The panel will open.
- Use: The panel opens. Grafana opens the panel.
* Do not use an ampersand (&) as an abbreviation for "and."
* Do not use an ampersand (&) as an abbreviation for "and."
- **Exceptions:** If an ampersand is used in the Grafana UI, then match the UI.
* Avoid using internal slang and jargon in technical documentation.
* Do not use two spaces after a period. Only add one space after each sentence. Do not add a space at the end of the paragraph.
### File naming conventions
@@ -156,7 +183,7 @@ One word, not two.
#### open source, open-source
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
Do not hyphenate when it is used as a noun. For example: _Open source is the best way to develop software._

View File

@@ -66,8 +66,8 @@ The next step is to create a `Page` representation in our e2e test framework to
```typescript
export const Login = {
url: "/login", // used when called from Login.visit()
username: "Username input field", // used when called from Login.username().type('Hello World')
url: '/login', // used when called from Login.visit()
username: 'Username input field', // used when called from Login.username().type('Hello World')
};
```
@@ -186,24 +186,3 @@ describe('List test', () => {
});
});
```
## Debugging PhantomJS image rendering
### Common Error
The most common error with PhantomJs image rendering is when a PR introduces an import that has functionality that's not supported by PhantomJs. To quickly identify which new import causes this you can use a tool like `es-check`.
1. Run > `npx es-check es5 './public/build/*.js'`
2. Check the output for files that break es5 compatibility.
3. Lazy load the failing imports if possible.
### Debugging
There is no easy or comprehensive way to debug PhantomJS smoke test (image rendering) failures. However, PhantomJS exposes remote debugging interface which can give you a sense of what is going wrong in the smoke test. Before performing the steps described below make sure your local Grafana instance is running:
1. Go to `tools/phantomjs` directory
2. Execute `phantomjs` binary against `render.js` file: `./phantomjs --remote-debugger-port=9009 --remote-debugger-autorun=yes ./render.js url="http://localhost:3000"`
3. In your browser navigate to `http://localhost:9009/`
4. Select `http://localhost:3000/login` from the list. You will get access to Webkit's inspector to see the console's output from the smoke test.
The method described above is not perfect, but is helpful to evaluate smoke tests breaking due to bundle errors.

View File

@@ -1,4 +1,3 @@
apiVersion: 1
datasources:
@@ -226,6 +225,7 @@ datasources:
jsonData:
authType: credentials
defaultRegion: eu-west-2
customMetricsNamespaces: "CWAgent"
# Keep to test old /api/prom API
- name: gdev-loki-0.3
@@ -270,5 +270,3 @@ datasources:
access: proxy
url: http://localhost:9411
editable: false

View File

@@ -0,0 +1,110 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1596705352582,
"links": [],
"panels": [
{
"datasource": null,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 16,
"w": 24,
"x": 0,
"y": 0
},
"id": 11,
"options": {
"content": "## Global variables\n\n* `__dashboard` = `${__dashboard}`\n* `__dashboard.name` = `${__dashboard.name}`\n* `__dashboard.uid` = `${__dashboard.uid}`\n* `__org.name` = `${__org.name}`\n* `__org.id` = `${__org.id}`\n* `__user.id` = `${__user.id}`\n* `__user.login` = `${__user.login}`\n \n## Formats\n\n* `Server:raw` = `${Server:raw}`\n* `Server:regex` = `${Server:regex}`\n* `Server:lucene` = `${Server:lucene}`\n* `Server:glob` = `${Server:glob}`\n* `Server:pipe` = `${Server:pipe}`\n* `Server:distributed` = `${Server:distributed}`\n* `Server:csv` = `${Server:csv}`\n* `Server:html` = `${Server:html}`\n* `Server:json` = `${Server:json}`\n* `Server:percentencode` = `${Server:percentencode}`\n* `Server:singlequote` = `${Server:singlequote}`\n* `Server:doublequote` = `${Server:doublequote}`\n* `Server:sqlstring` = `${Server:sqlstring}`\n* `Server:date` = `${Server:date}`\n* `Server:text` = `${Server:text}`\n\n",
"mode": "markdown"
},
"pluginVersion": "7.1.0",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Variable interpolation",
"type": "text"
}
],
"schemaVersion": 26,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": true,
"text": "All",
"value": ["$__all"]
},
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "Server",
"options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{
"selected": false,
"text": "A'A\"A",
"value": "A'A\"A"
},
{
"selected": false,
"text": "BB\\B",
"value": "BB\\B"
},
{
"selected": false,
"text": "CCC",
"value": "CCC"
}
],
"query": "A'A\"A,BB\\B,CCC",
"queryValue": "",
"skipUrlSync": false,
"type": "custom"
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Templating - Global variables and interpolation",
"uid": "HYaGDGIMk",
"version": 5
}

View File

@@ -0,0 +1,132 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"iteration": 1601526910610,
"links": [
{
"icon": "external link",
"includeVars": true,
"tags": [],
"title": "Grafana",
"tooltip": "",
"type": "link",
"url": "http://www.grafana.com"
},
{
"asDropdown": true,
"icon": "external link",
"includeVars": true,
"tags": ["templating"],
"title": "Link as DropDown",
"type": "dashboards"
},
{
"icon": "external link",
"includeVars": true,
"tags": ["demo"],
"type": "dashboards"
}
],
"panels": [
{
"description": "",
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"content": "# ${custom.text}\n ",
"mode": "markdown"
},
"pluginVersion": "7.3.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "${custom.text}",
"type": "text"
}
],
"schemaVersion": 26,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "custom",
"options": [
{
"selected": true,
"text": "All",
"value": "$__all"
},
{
"selected": false,
"text": "p1",
"value": "p1"
},
{
"selected": false,
"text": "p2",
"value": "p2"
},
{
"selected": false,
"text": "p3",
"value": "p3"
}
],
"query": "p1,p2,p3",
"skipUrlSync": false,
"type": "custom"
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Templating - Dashboard Links and Variables",
"uid": "yBCC3aKGk",
"version": 7
}

View File

@@ -0,0 +1,235 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1597300832273,
"links": [],
"panels": [
{
"datasource": "CsvData",
"fieldConfig": {
"defaults": {
"custom": {
"align": null
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Query"
},
"properties": [
{
"id": "links",
"value": [
{
"title": "Search",
"url": "/d/spVR9LSMk/templating-textbox-and-data-links?var-query=${__value.raw:percentencode}"
}
]
}
]
}
]
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"showHeader": true
},
"pluginVersion": "7.2.0-pre",
"targets": [
{
"data": [
{
"fields": [
{
"config": {},
"name": "Query",
"type": "string",
"values": ["Contains+Plus", "Contains&Ampersand", "Contains white space"]
},
{
"config": {},
"name": " Test",
"type": "string",
"values": ["asd", "asd", "asd"]
}
]
}
],
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Data",
"type": "table"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": null,
"fieldConfig": {
"defaults": {
"custom": {}
},
"overrides": []
},
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"alertThreshold": true
},
"percentage": false,
"pluginVersion": "7.2.0-pre",
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "${query}",
"refId": "A",
"scenarioId": "random_walk"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Query: ${query}",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"schemaVersion": 26,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"current": {
"selected": false,
"text": "asdasda+",
"value": "asdasda+"
},
"hide": 0,
"label": null,
"name": "query",
"options": [
{
"selected": true,
"text": "asdasda+",
"value": "asdasda+"
}
],
"query": "asdasda+",
"skipUrlSync": false,
"type": "textbox"
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Templating - Textbox & data links",
"uid": "spVR9LSMk",
"version": 9
}

View File

@@ -10,7 +10,7 @@ ADD etc_mtab /etc/mtab
ADD collectd.conf.tpl /etc/collectd/collectd.conf.tpl
RUN pip install envtpl
RUN pip install --no-cache-dir envtpl
ADD start_container /usr/bin/start_container
RUN chmod +x /usr/bin/start_container
CMD start_container

View File

@@ -35,7 +35,7 @@ RUN if [ ! -z "${CONTAINER_TIMEZONE}" ]; \
# fix python dependencies (LTS Django and newer memcached/txAMQP)
RUN pip install --upgrade pip && \
pip install django==1.8.18 \
pip install --no-cache-dir django==1.8.18 \
python-memcached==1.53 \
txAMQP==0.6.2
@@ -62,13 +62,13 @@ RUN python ./setup.py install
# install carbon
RUN git clone -b ${carbon_version} --depth 1 ${carbon_repo} /usr/local/src/carbon
WORKDIR /usr/local/src/carbon
RUN pip install -r requirements.txt \
RUN pip install --no-cache-dir -r requirements.txt \
&& python ./setup.py install
# install graphite
RUN git clone -b ${graphite_version} --depth 1 ${graphite_repo} /usr/local/src/graphite-web
WORKDIR /usr/local/src/graphite-web
RUN pip install -r requirements.txt \
RUN pip install --no-cache-dir -r requirements.txt \
&& python ./setup.py install
# install statsd

View File

@@ -30,7 +30,7 @@ fi
# - /opt/statsd
statsd_dir_contents=$(find /opt/statsd -mindepth 1 -print -quit)
if [[ -z $statsd_dir_contents ]]; then
git clone -b v0.7.2 https://github.com/etsy/statsd.git /opt/statsd
git clone --depth 1 -b v0.7.2 https://github.com/etsy/statsd.git /opt/statsd
cp $conf_dir/opt/statsd/config.js /opt/statsd/config.js
fi

View File

@@ -0,0 +1 @@
influxdb_version=1.8.1-alpine

View File

@@ -1,5 +1,5 @@
influxdb:
image: influxdb:1.7.6
image: influxdb:${influxdb_version}
container_name: influxdb
ports:
- '2004:2004'

View File

@@ -1,7 +1,7 @@
# This Dockerfile builds an image for a client_golang example.
# Builder image, where we build the example.
FROM golang:1.14.1 AS builder
FROM golang:1.15.1 AS builder
# Download prometheus/client_golang/examples/random first
RUN go get github.com/prometheus/client_golang/examples/random
WORKDIR /go/src/github.com/prometheus/client_golang

View File

@@ -3,7 +3,7 @@ import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
noCookiesReset: true
noCookiesReset: true,
};
let endpoint = __ENV.URL || 'http://localhost:3000';
@@ -18,35 +18,38 @@ export const setup = () => {
orgId: orgId,
datasourceId: datasourceId,
};
}
};
export default (data) => {
group("annotation by tag test", () => {
export default data => {
group('annotation by tag test', () => {
if (__ITER === 0) {
group("user authenticates thru ui with username and password", () => {
group('user authenticates thru ui with username and password', () => {
let res = client.ui.login('admin', 'admin');
check(res, {
'response status is 200': (r) => r.status === 200,
'response has cookie \'grafana_session\' with 32 characters': (r) => r.cookies.grafana_session[0].value.length === 32,
'response status is 200': r => r.status === 200,
"response has cookie 'grafana_session' with 32 characters": r =>
r.cookies.grafana_session[0].value.length === 32,
});
});
}
if (__ITER !== 0) {
group("batch tsdb requests with annotations by tag", () => {
group('batch tsdb requests with annotations by tag', () => {
const batchCount = 20;
const requests = [];
const payload = {
from: '1547765247624',
to: '1547768847624',
queries: [{
refId: 'A',
scenarioId: 'random_walk',
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
}]
queries: [
{
refId: 'A',
scenarioId: 'random_walk',
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
},
],
};
requests.push({ method: 'GET', url: '/api/annotations?from=1580825186534&to=1580846786535' });
@@ -58,14 +61,14 @@ export default (data) => {
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
'response status is 200': r => r.status === 200,
});
}
});
}
});
sleep(5)
}
sleep(5);
};
export const teardown = (data) => {}
export const teardown = data => {};

View File

@@ -2,7 +2,7 @@ import { sleep, check, group } from 'k6';
import { createBasicAuthClient } from './modules/client.js';
export let options = {
noCookiesReset: true
noCookiesReset: true,
};
let endpoint = __ENV.URL || 'http://localhost:10080/grafana';
@@ -19,17 +19,17 @@ export const setup = () => {
return {
datasourceId: res.json().id,
};
}
};
export default (data) => {
group("auth proxy test", () => {
group("batch proxy requests", () => {
export default data => {
group('auth proxy test', () => {
group('batch proxy requests', () => {
const d = new Date();
const batchCount = 300;
const requests = [];
const query = encodeURI('topk(5, max(scrape_duration_seconds) by (job))');
const start = (d.getTime() / 1000) - 3600;
const end = (d.getTime() / 1000);
const start = d.getTime() / 1000 - 3600;
const end = d.getTime() / 1000;
const step = 20;
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=8&from=1558670300607&to=1558691900607' });
@@ -44,13 +44,13 @@ export default (data) => {
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
'response status is 200': r => r.status === 200,
});
}
});
});
sleep(5)
}
sleep(5);
};
export const teardown = (data) => {}
export const teardown = data => {};

View File

@@ -3,11 +3,11 @@ import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
noCookiesReset: true
noCookiesReset: true,
};
let endpoint = __ENV.URL || 'http://localhost:3000';
const slowQuery = (__ENV.SLOW_QUERY && __ENV.SLOW_QUERY.length > 0) ? parseInt(__ENV.SLOW_QUERY, 10) : 5;
const slowQuery = __ENV.SLOW_QUERY && __ENV.SLOW_QUERY.length > 0 ? parseInt(__ENV.SLOW_QUERY, 10) : 5;
const client = createClient(endpoint);
export const setup = () => {
@@ -19,17 +19,18 @@ export const setup = () => {
orgId: orgId,
datasourceId: datasourceId,
};
}
};
export default (data) => {
export default data => {
group(`user auth token slow test (queries between 1 and ${slowQuery} seconds)`, () => {
if (__ITER === 0) {
group("user authenticates thru ui with username and password", () => {
group('user authenticates thru ui with username and password', () => {
let res = client.ui.login('admin', 'admin');
check(res, {
'response status is 200': (r) => r.status === 200,
'response has cookie \'grafana_session\' with 32 characters': (r) => r.cookies.grafana_session[0].value.length === 32,
'response status is 200': r => r.status === 200,
"response has cookie 'grafana_session' with 32 characters": r =>
r.cookies.grafana_session[0].value.length === 32,
});
});
}
@@ -41,14 +42,16 @@ export default (data) => {
const payload = {
from: '1547765247624',
to: '1547768847624',
queries: [{
refId: 'A',
scenarioId: 'slow_query',
stringInput: `${Math.floor(Math.random() * slowQuery) + 1}s`,
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
}]
queries: [
{
refId: 'A',
scenarioId: 'slow_query',
stringInput: `${Math.floor(Math.random() * slowQuery) + 1}s`,
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
},
],
};
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
@@ -60,14 +63,14 @@ export default (data) => {
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
'response status is 200': r => r.status === 200,
});
}
});
}
});
sleep(5)
}
sleep(5);
};
export const teardown = (data) => {}
export const teardown = data => {};

View File

@@ -3,7 +3,7 @@ import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
noCookiesReset: true
noCookiesReset: true,
};
let endpoint = __ENV.URL || 'http://localhost:3000';
@@ -18,35 +18,38 @@ export const setup = () => {
orgId: orgId,
datasourceId: datasourceId,
};
}
};
export default (data) => {
group("user auth token test", () => {
export default data => {
group('user auth token test', () => {
if (__ITER === 0) {
group("user authenticates thru ui with username and password", () => {
group('user authenticates thru ui with username and password', () => {
let res = client.ui.login('admin', 'admin');
check(res, {
'response status is 200': (r) => r.status === 200,
'response has cookie \'grafana_session\' with 32 characters': (r) => r.cookies.grafana_session[0].value.length === 32,
'response status is 200': r => r.status === 200,
"response has cookie 'grafana_session' with 32 characters": r =>
r.cookies.grafana_session[0].value.length === 32,
});
});
}
if (__ITER !== 0) {
group("batch tsdb requests", () => {
group('batch tsdb requests', () => {
const batchCount = 20;
const requests = [];
const payload = {
from: '1547765247624',
to: '1547768847624',
queries: [{
refId: 'A',
scenarioId: 'random_walk',
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
}]
queries: [
{
refId: 'A',
scenarioId: 'random_walk',
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
},
],
};
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
@@ -58,14 +61,14 @@ export default (data) => {
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
'response status is 200': r => r.status === 200,
});
}
});
}
});
sleep(5)
}
sleep(5);
};
export const teardown = (data) => {}
export const teardown = data => {};

View File

@@ -1,4 +1,4 @@
import http from "k6/http";
import http from 'k6/http';
import encoding from 'k6/encoding';
export const UIEndpoint = class UIEndpoint {
@@ -10,7 +10,7 @@ export const UIEndpoint = class UIEndpoint {
const payload = { user: username, password: pwd };
return this.httpClient.formPost('/login', payload);
}
}
};
export const DatasourcesEndpoint = class DatasourcesEndpoint {
constructor(httpClient) {
@@ -32,7 +32,7 @@ export const DatasourcesEndpoint = class DatasourcesEndpoint {
delete(id) {
return this.httpClient.delete(`/datasources/${id}`);
}
}
};
export const OrganizationsEndpoint = class OrganizationsEndpoint {
constructor(httpClient) {
@@ -57,7 +57,7 @@ export const OrganizationsEndpoint = class OrganizationsEndpoint {
delete(id) {
return this.httpClient.delete(`/orgs/${id}`);
}
}
};
export const GrafanaClient = class GrafanaClient {
constructor(httpClient) {
@@ -79,10 +79,10 @@ export const GrafanaClient = class GrafanaClient {
onBeforeRequest(params) {
if (this.orgId && this.orgId > 0) {
params = params.headers || {};
params.headers["X-Grafana-Org-Id"] = this.orgId;
params.headers['X-Grafana-Org-Id'] = this.orgId;
}
}
}
};
export const BaseClient = class BaseClient {
constructor(url, subUrl) {
@@ -99,14 +99,12 @@ export const BaseClient = class BaseClient {
}
withUrl(subUrl) {
let c = new BaseClient(this.url, subUrl);
let c = new BaseClient(this.url, subUrl);
c.onBeforeRequest = this.onBeforeRequest;
return c;
}
beforeRequest(params) {
}
beforeRequest(params) {}
get(url, params) {
params = params || {};
@@ -156,7 +154,7 @@ export const BaseClient = class BaseClient {
return http.batch(requests);
}
}
};
export class BasicAuthClient extends BaseClient {
constructor(url, subUrl, username, password) {
@@ -166,7 +164,7 @@ export class BasicAuthClient extends BaseClient {
}
withUrl(subUrl) {
let c = new BasicAuthClient(this.url, subUrl, this.username, this.password);
let c = new BasicAuthClient(this.url, subUrl, this.username, this.password);
c.onBeforeRequest = this.onBeforeRequest;
return c;
}
@@ -179,10 +177,10 @@ export class BasicAuthClient extends BaseClient {
}
}
export const createClient = (url) => {
export const createClient = url => {
return new GrafanaClient(new BaseClient(url, ''));
}
};
export const createBasicAuthClient = (url, username, password) => {
return new GrafanaClient(new BasicAuthClient(url, '', username, password));
}
};

View File

@@ -1,4 +1,4 @@
export const createTestOrgIfNotExists = (client) => {
export const createTestOrgIfNotExists = client => {
let orgId = 0;
let res = client.orgs.getByName('k6');
if (res.status === 404) {
@@ -13,9 +13,9 @@ export const createTestOrgIfNotExists = (client) => {
client.withOrgId(orgId);
return orgId;
}
};
export const createTestdataDatasourceIfNotExists = (client) => {
export const createTestdataDatasourceIfNotExists = client => {
const payload = {
access: 'proxy',
isDefault: false,
@@ -32,4 +32,4 @@ export const createTestdataDatasourceIfNotExists = (client) => {
}
return res.json().id;
}
};

View File

@@ -1,19 +1,15 @@
module.exports = {
verbose: true,
"globals": {
"ts-jest": {
"tsConfigFile": "tsconfig.json"
}
globals: {
'ts-jest': {
tsConfigFile: 'tsconfig.json',
},
},
"transform": {
"^.+\\.tsx?$": "<rootDir>/../../node_modules/ts-jest/preprocessor.js"
transform: {
'^.+\\.tsx?$': '<rootDir>/../../node_modules/ts-jest/preprocessor.js',
},
"moduleDirectories": ["node_modules"],
"testRegex": "(\\.|/)(test)\\.ts$",
"testEnvironment": "node",
"moduleFileExtensions": [
"ts",
"js",
"json"
],
moduleDirectories: ['node_modules'],
testRegex: '(\\.|/)(test)\\.ts$',
testEnvironment: 'node',
moduleFileExtensions: ['ts', 'js', 'json'],
};

View File

@@ -0,0 +1,3 @@
FROM tutum/nginx
RUN rm /etc/nginx/sites-enabled/default
ADD sites-enabled /etc/nginx/sites-enabled

View File

@@ -0,0 +1,14 @@
server {
listen 80 default_server;
access_log /var/log/nginx/verdaccio.log;
charset utf-8;
location / {
proxy_pass http://grafana-npm.local:4873/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
proxy_redirect off;
}
}

View File

@@ -0,0 +1,26 @@
version: '2'
services:
verdaccio:
image: verdaccio/verdaccio:4
container_name: verdaccio_root_path
ports:
- "4873:4873"
volumes:
- verdaccio:/verdaccio
nginx:
restart: always
build: conf/nginx
ports:
- "80:80"
volumes:
- /www/public
volumes_from:
- verdaccio
links:
- verdaccio:verdaccio
volumes:
verdaccio:
driver: local

View File

@@ -33,6 +33,6 @@ Images are currently hosted in the grafana/website repo.
## Deploy changes to grafana.com
When a PR is merged to master with changes in the `docs` directory, those changes are automatically synched to the grafana/website repo on the `docs-grafana` branch.
When a PR is merged to master with changes in the `docs/sources` directory, those changes are automatically synched to the grafana/website repo and published to the staging site.
In order to make those changes live, open a PR in the website repo that merges the `docs-grafana` branch into `master`. Then follow the publishing guidelines in that repo.
Generally, someone from marketing will publish to production each day, so as long as the sync is successful your docs edits will be published. Alternatively, you can refer to [publishing to production](https://github.com/grafana/website#publishing-to-production-grafanacom) if you'd like to do it yourself.

View File

@@ -30,7 +30,7 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
<img src="/static/img/logos/logo-docker.svg">
<h5>Run Docker image</h5>
</a>
<a href="https://grafana.com/cloud/grafana" class="nav-cards__item nav-cards__item--install">
<a href="https://grafana.com/docs/grafana-cloud/" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-cloud">
</div>
<h5>Grafana Cloud</h5>

View File

@@ -10,4 +10,4 @@ weight = 2
# Administration
This section provides resources for Grafana administrators.
This section provides resources for Grafana administrators and users performing administrative tasks.

View File

@@ -0,0 +1,59 @@
+++
title = "Change the default home dashboard"
description = "How to replace the default home dashboard"
keywords = ["grafana", "configuration", "documentation", "home"]
type = "docs"
[menu.docs]
name = "Home Dashboard"
identifier = "change-home-dashboard"
parent = "admin"
weight = 100
+++
# Change the default home dashboard
You can change the default dashboard on the organization, team and user level. The home dashboard you set for the whole organization is the one all users will see by default. The team dashboard applies to all users assigned to the team in Grafana. The team dashboard overrides the organization dashboard settings. Personal dashboard settings override team dashboard settings.
## Set the home dashboard for your organization
### Set the default dashboard through preferences
1. Navigate to the dashboard you want to set as the home dashboard.
1. Star this dashboard by clicking on the star next to the dashboard title.
1. On the left menu, hover your cursor over the **Configuration** (gear) icon and then click **Preferences**.
1. In the **Home Dashboard** field, select the dashboard you want to use for your home dashboard. Options include all starred dashboards.
### Set the default dashboard through configuration
If preferences are set as described above, then they override this value.
You can provide your own JSON file to change the home dashboard. No user will be able to update this dashboard in Grafana.
#### [Optional] Convert an existing dashboard into a JSON file
1. Navigate to your dashboard page.
1. Click the **Share dashboard** icon next to the dashboard title.
1. In the **Export** tab, click on **Save to file**.
#### Use a JSON file as the home dashboard
1. Save your JSON file somewhere that Grafana can access it, for example, in the Grafana `data` folder of Grafana.
1. Update your configuration file to set the path to the JSON file. Read how to update this file in the [configuration]({{< relref "./configuration.md">}}) documentation.
```ini
[dashboards]
# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
default_home_dashboard_path = data/main-dashboard.json
```
## Set home dashboard for your team
1. Navigate to the dashboard you want to set as the home dashboard.
1. Star this dashboard by clicking on the star next to the dashboard title.
1. On the left menu, hover your cursor over the **Configuration** (gear) icon and then click **Teams**.
1. Click on the team you want to change the home dashboard for and then navigate to the **Settings** tab.
1. In the **Home Dashboard** field, select the dashboard you want to use for your home dashboard. Options include all starred dashboards.
## Set your personal home dashboard
1. Navigate to the dashboard you want to set as the home dashboard.
1. Star this dashboard by clicking on the star next to the dashboard title.
1. On the left menu, hover your cursor over your avatar and then click **Preferences**.
1. In the **Home Dashboard** field, select the dashboard you want to use for your home dashboard. Options include all starred dashboards.

View File

@@ -0,0 +1,29 @@
+++
title = "Change your password"
description = "How to change your Grafana password"
keywords = ["grafana", "password", "change", "preferences"]
type = "docs"
[menu.docs]
weight = 100
+++
# Change your Grafana password
You can change your password in the Change Password tab.
> **Note:** If your Grafana instance uses an external authentication provider, then you might not be able to change your password. Contact your Grafana administrator for more information.
## Change your password
1. Hover your mouse over your user icon in the lower left corner of the screen.
1. Click **Change Password**. Grafana opens the Change Password tab.
1. Enter your **Old password** to authorize the change.
1. Enter your **New password** and then **Confirm password**.
1. Click **Change Password**.
## Admin user management resources
Grafana admins can use the following tools:
- Use the [User API]({{< relref "../http_api/user.md" >}}) to change your password programmatically or to manage users.
- The [Manage users]({{< relref "../manage-users/_index.md" >}}) section explains how to manage users and teams.

View File

@@ -37,7 +37,7 @@ Refer to [Configure a Grafana Docker image]({{< relref "../installation/configur
`sample.ini` is in the same directory as `defaults.ini` and contains all the settings commented out. Copy `sample.ini` and name it `custom.ini`.
### MacOS
### 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`.
@@ -189,8 +189,6 @@ Folder that contains [provisioning]({{< relref "provisioning.md" >}}) config fil
`http`,`https`,`h2` or `socket`
> **Note:** Grafana versions earlier than 3.0 are vulnerable to [POODLE](https://en.wikipedia.org/wiki/POODLE). So we strongly recommend to upgrade to 3.x or use a reverse proxy for SSL termination.
### http_addr
The IP address to bind to. If empty will bind to all interfaces
@@ -231,8 +229,6 @@ callback URL to be correct).
### serve_from_sub_path
> Available in Grafana 6.3+.
Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.
By enabling this setting and using a subpath in `root_url` above, e.g.
@@ -273,7 +269,7 @@ Path where the socket should be created when `protocol=socket`. Make sure that G
## [database]
Grafana needs a database to store users and dashboards (and other
things). By default it is configured to use `sqlite3` which is an
things). By default it is configured to use [`sqlite3`](https://www.sqlite.org/index.html) which is an
embedded database (included in the main Grafana binary).
### type
@@ -536,6 +532,10 @@ Number dashboard versions to keep (per dashboard). Default: `20`, Minimum: `1`.
This prevents users from setting the dashboard refresh interval of a lower than given interval. Per default this is 5 seconds.
The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. `30s` or `1m`.
### default_home_dashboard_path
Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
<hr />
## [users]
@@ -642,17 +642,13 @@ This setting is ignored if multiple OAuth providers are configured. Default is `
### oauth_state_cookie_max_age
How long the OAuth state cookie lives before being deleted. Default is `60` (seconds)
How many seconds the OAuth state cookie lives before being deleted. Default is `600` (seconds)
Administrators can increase this if they experience OAuth login state mismatch errors.
### api_key_max_seconds_to_live
Limit of API key seconds to live before expiration. Default is -1 (unlimited).
### default_home_dashboard_path
Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
<hr />
## [auth.anonymous]
@@ -976,6 +972,43 @@ Sets the minimum interval between rule evaluations. Default value is `1`.
> **Note.** This setting has precedence over each individual rule frequency. If a rule frequency is lower than this value, then this value is enforced.
### max_annotation_age =
Configures for how long alert annotations are stored. Default is 0, which keeps them forever.
This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
### max_annotations_to_keep =
Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.
<hr>
## [annotations.dashboard]
Dashboard annotations means that annotations are associated with the dashboard they are created on.
### max_age
Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.
This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
### max_annotations_to_keep
Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.
## [annotations.api]
API annotations means that the annotations have been created using the API without any association with a dashboard.
### max_age
Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.
This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
### max_annotations_to_keep
Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.
<hr>
## [explore]
@@ -1008,6 +1041,15 @@ If both are set, then basic authentication is required to access the metrics end
<hr>
## [metrics.environment_info]
Adds dimensions to the `grafana_environment_info` metric, which can expose more information about the Grafana instance.
```
; exampleLabel1 = exampleValue1
; exampleLabel2 = exampleValue2
```
## [metrics.graphite]
Use these options if you want to send internal Grafana metrics to Graphite.
@@ -1179,10 +1221,10 @@ Optional URL to send to users in notifications. If the string contains the seque
### key_file
Path to JSON key file associated with a Google service account to authenticate and authorize.
Optional path to JSON key file associated with a Google service account to authenticate and authorize. If no value is provided it tries to use the [application default credentials](https://cloud.google.com/docs/authentication/production#finding_credentials_automatically).
Service Account keys can be created and downloaded from https://console.developers.google.com/permissions/serviceaccounts.
Service Account should have "Storage Object Writer" role. The access control model of the bucket needs to be "Set object-level and bucket-level permissions". Grafana itself will make the images public readable.
Service Account should have "Storage Object Writer" role. The access control model of the bucket needs to be "Set object-level and bucket-level permissions". Grafana itself will make the images public readable when signed urls are not enabled.
### bucket
@@ -1192,6 +1234,15 @@ Bucket Name on Google Cloud Storage.
Optional extra path inside bucket.
### enable_signed_urls
If set to true, Grafana creates a [signed URL](https://cloud.google.com/storage/docs/access-control/signed-urls] for
the image uploaded to Google Cloud Storage.
### signed_url_expiration
Sets the signed URL expiration, which defaults to seven days.
## [external_image_storage.azure_blob]
### account_name
@@ -1350,3 +1401,40 @@ 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`
## [date_formats]
> The date format options below are only available in Grafana v7.2+
This section controls system wide defaults for date formats used in time ranges, graphs and date input boxes.
The format patterns use [Moment.js](https://momentjs.com/docs/#/displaying/) formatting tokens.
### full_date
Full date format used by time range picker and in other places where a full date is rendered.
### intervals
These intervals formats are used in the graph to show only a partial date or time. For example if there are only
minutes between y-axis tick labels then the `interval_minute` format is used.
Defaults
```
interval_second = HH:mm:ss
interval_minute = HH:mm
interval_hour = MM/DD HH:mm
interval_day = MM/DD
interval_month = YYYY-MM
interval_year = YYYY
```
### use_browser_locale
Set this to `true` to have date formats be automatically be derived from browser locale. Defaults to `false`. This
is an experimental feature right now with a few problems that remain unsolved.
### default_timezone
Used as the default timezone for user preferences. Can be either `browser` for the browser local timezone or a timezone name from IANA Time Zone database, e.g. `UTC` or `Europe/Amsterdam` etc.

View File

@@ -162,6 +162,12 @@ On Debian 9 (Stretch) the following dependencies have been confirmed as needed f
libx11 libcairo bcairo2 libcairo2 libxtst6 libxcomposite1 libx11-xcb1 libxcursor1 libxdamage1 libnss3 libcups libcups2 libXss libXss1 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libgtk-3-0
```
On Debian 10 (Buster) the following dependencies have been confirmed as needed for the image rendering to function.
```bash
libxdamage1 libxext6 libxi6 libxtst6 libnss3 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libpangocairo-1.0-0 libpango-1.0-0 libcairo2 libatspi2.0-0 libgtk3.0-cil libgdk3.0-cil libx11-xcb-dev
```
**Centos:**
On a minimal Centos installation, the following dependencies have been confirmed as needed for the image rendering to function:

View File

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

View File

@@ -0,0 +1,58 @@
+++
title = "Change your preferences"
description = "How to change your Grafana preferences"
keywords = ["grafana", "profile", "change", "preferences"]
type = "docs"
[menu.docs]
weight = 100
+++
# Change your Grafana preferences
You can perform several tasks in the Preferences tab. You can edit your profile, change your Grafana preferences, and view information about your profile and Grafana usage.
## Edit your Grafana profile
Your profile includes your name, user name, and email address.
1. Navigate to the Preferences tab. Hover your cursor over your user icon in the lower left corner of the screen, and then click **Preferences.**
1. In the Edit Profile section, you can edit any of the following:
- **Name -** Edit this field to change the display name associated with your profile.
- **Email -** Edit this field to change the email address associated with your profile.
- **Username -** Edit this field to change your user name.
1. Click **Save**.
## Edit your Grafana preferences
Your Grafana preferences include whether uses the dark or light theme, your home dashboard, and your timezone.
> **Note:** Settings on your personal instance override settings made by your administrator at the instance or team level.
1. Navigate to the Preferences tab. Hover your cursor over your user icon in the lower left corner of the screen, and then click **Preferences.**
1. In the Preferences section, you can edit any of the following:
- **UI Theme -** Click to set the **Dark** or **Light** to select a theme. **Default** is either the dark theme or the theme selected by your Grafana administrator.
- **Home Dashboard -** Refer to [Set your personal home dashboard]({{< relref "change-home-dashboard.md#set-your-personal-home-dashboard" >}}) for more information.
- **Timezone -** Click to select an option in the **Timezone** list. **Default** is either the browser local timezone or the timezone selected by your Grafana administrator. Refer to [Time range controls]({{< relref "../dashboards/time-range-controls.md" >}}) for more information about Grafana time settings.
1. Click **Save**.
## View your assigned organizations
Every user is a member of at least one organization. You can have different roles in every organization that you are a member of.
1. Navigate to the Preferences tab. Hover your cursor over your user icon in the lower left corner of the screen, and then click **Preferences.**
1. Scroll down to the Organizations section.
- **Name -** The name of the organizations you are a member of in that Grafana instance.
- **Role -** The role you are assigned in the organization. Refer to [Organization roles]({{< relref "../permissions/organization_roles.md" >}}) about permissions assigned to each role.
- **Current -** Grafana tags the organization that you are currently signed in to as _Current_.
## View your Grafana sessions
Grafana logs your sessions in each Grafana instance. You can review this section if you suspect someone has misused your Grafana credentials.
1. Navigate to the Preferences tab. Hover your cursor over your user icon in the lower left corner of the screen, and then click **Preferences.**
1. Scroll down to the Sessions section. Grafana displays the following:
- **Last seen -** How long ago you logged on.
- **Logged on -** The date you logged on to the current Grafana instance.
- **IP address -** The IP address that you logged on from.
- **Browser & OS -** The web browser and operating system used to log on to Grafana.
- If you are a Grafana Admin for the instance, then you can revoke a session by clicking the red signout icon in the session row.

View File

@@ -151,6 +151,7 @@ Since not all datasources have the same configuration settings we only have the
| tlsSkipVerify | boolean | _All_ | Controls whether a client verifies the server's certificate chain and host name. |
| 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, Prometheus | HTTP Method. 'GET', 'POST', defaults to GET |
| 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' |
@@ -275,6 +276,8 @@ providers:
When Grafana starts, it will update/insert all dashboards available in the configured path. Then later on poll that path every **updateIntervalSeconds** and look for updated json files and update/insert those into the database.
> **Note:** Dashboards are provisioned to the General folder if the `folder` option is missing or empty.
#### Making changes to a provisioned dashboard
It's possible to make changes to a provisioned dashboard in the Grafana UI. However, it is not possible to automatically save the changes back to the provisioning source.
@@ -307,7 +310,7 @@ By default Grafana will delete dashboards in the database if the file is removed
### Provision folders structure from filesystem to Grafana
If you already store your dashboards using folders in a git repo or on a filesystem, and also you want to have the same folder names in the Grafana menu, you can use `foldersFromFilesStructure` option.
For example, to replicate these dashboards structure from the filesystem to Grafana,
For example, to replicate these dashboards structure from the filesystem to Grafana,
```
/etc/dashboards
├── /server
@@ -320,18 +323,20 @@ For example, to replicate these dashboards structure from the filesystem to Graf
you need to specify just this short provision configuration file.
```yaml
apiVersion: 1
providers:
- name: dashboards
type: file
updateIntervalSeconds: 30
options:
path: /etc/dashboards
foldersFromFileStructure: true
foldersFromFilesStructure: true
```
`server` and `application` will become new folders in Grafana menu.
> **Note.** `folder` and `folderUid` options should be empty or missing to make `foldersFromFileStructure` works.
> **Note.** `folder` and `folderUid` options should be empty or missing to make `foldersFromFilesStructure` work.
> **Note:** To provision dashboards to the General folder, store them in the root of your `path`.
## Alert Notification Channels
@@ -378,12 +383,16 @@ notifiers:
send_reminder: true
frequency: 1h
disable_resolve_message: false
# See `Supported Settings` section for settings supporter for each
# See `Supported Settings` section for settings supported for each
# alert notification type.
settings:
recipient: 'XXX'
token: 'xoxb'
uploadImage: true
token: 'xoxb' # legacy setting since Grafana v7.2 (stored non-encrypted)
url: https://slack.com # legacy setting since Grafana v7.2 (stored non-encrypted)
# Secure settings that will be encrypted in the database (supported since Grafana v7.2). See `Supported Settings` section for secure settings supported for each notifier.
secure_settings:
token: 'xoxb'
url: https://slack.com
delete_notifiers:
@@ -399,32 +408,34 @@ delete_notifiers:
### Supported Settings
The following sections detail the supported settings for each alert notification type.
The following sections detail the supported settings and secure settings for each alert notification type. Secure settings are stored encrypted in the database and you add them to `secure_settings` in the YAML file instead of `settings`.
> **Note**: Secure settings is supported since Grafana v7.2.
#### Alert notification `pushover`
| Name |
| -------- |
| apiToken |
| userKey |
| device |
| retry |
| expire |
| Name | Secure setting |
| -------- | -------------- |
| apiToken | yes |
| userKey | yes |
| device | |
| retry | |
| expire | |
#### Alert notification `slack`
| Name |
| -------------- |
| url |
| recipient |
| username |
| icon_emoji |
| icon_url |
| uploadImage |
| mentionUsers |
| mentionGroups |
| mentionChannel |
| token |
| Name | Secure setting |
| -------------- | -------------- |
| url | yes |
| recipient | |
| username | |
| icon_emoji | |
| icon_url | |
| uploadImage | |
| mentionUsers | |
| mentionGroups | |
| mentionChannel | |
| token | yes |
#### Alert notification `victorops`
@@ -442,34 +453,34 @@ The following sections detail the supported settings for each alert notification
#### Alert notification `LINE`
| Name |
| ----- |
| token |
| Name | Secure setting |
| ----- | - |
| token | yes |
#### Alert notification `pagerduty`
| Name |
| -------------- |
| integrationKey |
| autoResolve |
| Name | Secure setting |
| -------------- | - |
| integrationKey | yes |
| autoResolve | |
#### Alert notification `sensu`
| Name |
| -------- |
| url |
| source |
| handler |
| username |
| password |
| Name | Secure setting |
| -------- | - |
| url | |
| source | |
| handler | |
| username | |
| password | yes |
#### Alert notification `prometheus-alertmanager`
| Name |
| ----------------- |
| url |
| basicAuthUser |
| basicAuthPassword |
| Name | Secure setting |
| ----------------- | - |
| url | |
| basicAuthUser | |
| basicAuthPassword | yes |
#### Alert notification `teams`
@@ -500,36 +511,36 @@ The following sections detail the supported settings for each alert notification
#### Alert notification `opsgenie`
| Name |
| ---------------- |
| apiKey |
| apiUrl |
| autoClose |
| overridePriority |
| Name | Secure setting |
| ---------------- | - |
| apiKey | yes |
| apiUrl | |
| autoClose | |
| overridePriority | |
#### Alert notification `telegram`
| Name |
| ----------- |
| bottoken |
| chatid |
| uploadImage |
| Name | Secure setting |
| ----------- | - |
| bottoken | yes |
| chatid | |
| uploadImage | |
#### Alert notification `threema`
| Name |
| ------------ |
| gateway_id |
| recipient_id |
| api_secret |
| Name | Secure setting |
| ------------ | - |
| gateway_id | |
| recipient_id | |
| api_secret | yes |
#### Alert notification `webhook`
| Name |
| -------- |
| url |
| username |
| password |
| Name | Secure setting |
| -------- | - |
| url | |
| username | |
| password | yes |
#### Alert notification `googlechat`

View File

@@ -73,15 +73,18 @@ Telegram | `telegram` | yes | no
Threema | `threema` | yes, external only | no
VictorOps | `victorops` | yes, external only | no
[Webhook](#webhook) | `webhook` | yes, external only | yes
[Zenduty](#zenduty) | `webhook` | yes, external only | yes
### Email
To enable email notifications you have to setup [SMTP settings]({{< relref "../administration/configuration/#smtp" >}})
To enable email notifications you have to set up [SMTP settings]({{< relref "../administration/configuration/#smtp" >}})
in the Grafana config. Email notifications will upload an image of the alert graph to an
external image destination if available or fallback to attaching the image to the email.
Be aware that if you use the `local` image storage email servers and clients might not be
able to access the image.
> **Note:** Template variables are not supported in email alerts.
Setting | Description
---------- | -----------
Single email | Send a single email to all recipients. Disabled per default.
@@ -122,13 +125,14 @@ Severity | Level for dynamic notifications, default is `critical` (1)
Auto resolve incidents | Resolve incidents in PagerDuty once the alert goes back to ok
Message in details | Removes the Alert message from the PD summary field and puts it into custom details instead (2)
>**Note:** The tags `Severity`, `Class`, `Group`, and `Component` have special meaning in the [Pagerduty Common Event Format - PD-CEF](https://support.pagerduty.com/docs/pd-cef). If an alert panel defines these tag keys, then they are transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools. A Severity tag set on an alert overrides the global Severity set on the notification channel if it's a valid level.
>**Note:** The tags `Severity`, `Class`, `Group`, `dedup_key`, and `Component` have special meaning in the [Pagerduty Common Event Format - PD-CEF](https://support.pagerduty.com/docs/pd-cef). If an alert panel defines these tag keys, then they are transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools. A Severity tag set on an alert overrides the global Severity set on the notification channel if it's a valid level.
>Using Message In Details will change the structure of the `custom_details` field in the PagerDuty Event.
This might break custom event rules in your PagerDuty rules if you rely on the fields in `payload.custom_details`.
Move any existing rules using `custom_details.myMetric` to `custom_details.queries.myMetric`.
This behavior will become the default in a future version of Grafana.
> Using `dedup_key` tag will override grafana generated `dedup_key` with a custom key.
### Webhook
The webhook notification is a simple way to send information about a state change over HTTP to a custom endpoint.
@@ -208,6 +212,10 @@ Alertmanager handles alerts sent by client applications such as Prometheus serve
> **Caution:** In case of a high-availability setup, do not load balance traffic between Grafana and Alertmanagers to keep coherence between all your Alertmanager instances. Instead, point Grafana to a list of all Alertmanagers, by listing their URLs comma-separated in the notification channel configuration.
### Zenduty
[Zenduty](https://www.zenduty.com) is an incident alerting and response orchestration platform that not alerts the right teams via SMS, Phone(Voice), Email, Slack, Microsoft Teams and Push notifications(Android/iOS) whenever a Grafana alert is triggered, but also helps you rapidly triage and remediate critical, user impacting incidents. Grafana alert are sent to Zenduty through Grafana's native webhook dispatcher. Refer the Zenduty-Grafana [integration documentation](https://docs.zenduty.com/docs/grafana) for configuring the integration.
## Enable images in notifications {#external-image-store}
Grafana can render the panel associated with the alert rule as a PNG image and include that in the notification. Read more about the requirements and how to configure

View File

@@ -20,32 +20,30 @@ The Azure AD authentication provides the possibility to use an Azure Active Dire
To enable the Azure AD OAuth2 you must register your application with Azure AD.
1. Log in to [Azure Portal](https://portal.azure.com) and click **Azure Active Directory** in the side menu.
1. Log in to [Azure Portal](https://portal.azure.com) and click **Azure Active Directory** in the side menu. If you have access to more than one tenant, select your account in the upper right. Set your session to the Azure AD tenant you wish to use.
1. Click **App Registrations** and add a new application registration:
- Name: Grafana
- Application type: Web app / API
- Sign-on URL: `https://<grafana domain>/login/azuread`
1. Under **Manage** in the side menu, click **App Registrations** and then **New Registration**. Provide a fitting name.
1. Click the name of the new application to open the application details page.
1. Under **Redirect URI**, select **Web** as the app type.
1. Click **Endpoints**.
- Note down the **OAuth 2.0 authorization endpoint (v2)**, this will be the auth URL.
- Note down the **OAuth 2.0 token endpoint (v2)**, this will be the token URL.
1. Add the redirect URL `https://<grafana domain>/login/azuread`, then click **Register**.
1. Close the Endpoints page to come back to the application details page.
1. The app's **Overview** page is displayed. Note the **Application ID**, this is the OAuth client id.
1. Note down the "Application ID", this will be the OAuth client id.
1. Click **Endpoints** from the top menu.
- Note the **OAuth 2.0 authorization endpoint (v2)**, this is the auth URL.
- Note the **OAuth 2.0 token endpoint (v2)**, this is the token URL.
1. Click **Certificates & secrets** and add a new entry under Client secrets.
- Description: Grafana OAuth
- Expires: Never
1. Click **Add** then copy the key value, this will be the OAuth client secret.
1. Click **Add**, then copy the key value. This is the OAuth client secret.
1. Click **Manifest**.
- Add definitions for the required Application Roles for Grafana (Viewer, Editor, Admin). Without this configuration all users will be assigned to the Viewer role.
- Every role has to have a unique id. On Linux this can be created with `uuidgen` for instance.
- Add definitions for the required Application Roles for Grafana (Viewer, Editor, Admin). Without this configuration, all users will be assigned the Viewer role.
- Every role requires a unique id. On Linux, this can be created with `uuidgen`. For example:
```json
"appRoles": [
@@ -88,9 +86,9 @@ To enable the Azure AD OAuth2 you must register your application with Azure AD.
],
```
1. Click Overview and then on **Managed application in local directory** to show the Enterprise Application details.
1. Go to **Azure Active Directory** and then to **Enterprise Applications**. Search for your application and click on it.
1. Click on **Users and groups** and add Users/Groups to the Grafana roles by using **Add User**.
1. Click on **Users and Groups** and add Users/Groups to the Grafana roles by using **Add User**.
## Enable Azure AD OAuth in Grafana

View File

@@ -12,8 +12,13 @@ weight = 3
# Generic OAuth Authentication
You can configure many different OAuth2 authentication services with Grafana using the generic OAuth2 feature. Below you
can find examples using Okta, BitBucket, OneLogin and Azure.
You can configure many different OAuth2 authentication services with Grafana using the generic OAuth2 feature. Examples:
- [Auth0](#set-up-oauth2-with-auth0)
- [Azure AD]({{< relref "azuread.md" >}})
- [BitBucket](#set-up-oauth2-with-bitbucket)
- [Centrify](#set-up-oauth2-with-centrify)
- [Okta]({{< relref "okta.md" >}})
- [OneLogin](#set-up-oauth2-with-onelogin)
This callback URL must match the full HTTP address that you use in your browser to access Grafana, but with the prefix path of `/login/generic_oauth`.
@@ -33,10 +38,21 @@ token_url =
api_url =
allowed_domains = mycompany.com mycompany.org
allow_sign_up = true
tls_skip_verify_insecure = false
tls_client_cert =
tls_client_key =
tls_client_ca =
```
Set `api_url` to the resource that returns [OpenID UserInfo](https://connect2id.com/products/server/docs/api/userinfo) compatible information.
You can also specify the SSL/TLS configuration used by the client.
- Set `tls_client_cert` to the path of the certificate.
- Set `tls_client_key` to the path containing the key.
- Set `tls_client_ca` to the path containing a trusted certificate authority list.
`tls_skip_verify_insecure` controls whether a client verifies the server's certificate chain and host name. If it is true, then SSL/TLS accepts any certificate presented by the server and any host name in that certificate. _You should only use this for testing_, because this mode leaves SSL/TLS susceptible to man-in-the-middle attacks.
Grafana will attempt to determine the user's e-mail address by querying the OAuth provider as described below in the following order until an e-mail address is found:
1. Check for the presence of an e-mail address via the `email` field encoded in the OAuth `id_token` parameter.
@@ -54,6 +70,41 @@ Check for the presence of a role using the [JMESPath](http://jmespath.org/exampl
See [JMESPath examples](#jmespath-examples) for more information.
> Only available in Grafana v7.2+.
Customize user login using `login_attribute_path` configuration option. Order of operations is as follows:
1. Grafana evaluates the `login_attribute_path` JMESPath expression against the ID token.
1. If Grafana finds no value, then Grafana evaluates expression against the JSON data obtained from UserInfo endpoint. The UserInfo endpoint URL is specified in the `api_url` configuration option.
You can customize the attribute name used to extract the ID token from the returned OAuth token with the `id_token_attribute_name` option.
## Set up OAuth2 with Auth0
1. Create a new Client in Auth0
- Name: Grafana
- Type: Regular Web Application
2. Go to the Settings tab and set:
- Allowed Callback URLs: `https://<grafana domain>/login/generic_oauth`
3. Click Save Changes, then use the values at the top of the page to configure Grafana:
```bash
[auth.generic_oauth]
enabled = true
allow_sign_up = true
team_ids =
allowed_organizations =
name = Auth0
client_id = <client id>
client_secret = <client secret>
scopes = openid profile email
auth_url = https://<domain>/authorize
token_url = https://<domain>/oauth/token
api_url = https://<domain>/userinfo
```
## Set up OAuth2 with Bitbucket
```bash
@@ -71,6 +122,37 @@ team_ids =
allowed_organizations =
```
## Set up OAuth2 with Centrify
1. Create a new Custom OpenID Connect application configuration in the Centrify dashboard.
2. Create a memorable unique Application ID, e.g. "grafana", "grafana_aws", etc.
3. Put in other basic configuration (name, description, logo, category)
4. On the Trust tab, generate a long password and put it into the OpenID Connect Client Secret field.
5. Put the URL to the front page of your Grafana instance into the "Resource Application URL" field.
6. Add an authorized Redirect URI like https://your-grafana-server/login/generic_oauth
7. Set up permissions, policies, etc. just like any other Centrify app
8. Configure Grafana as follows:
```bash
[auth.generic_oauth]
name = Centrify
enabled = true
allow_sign_up = true
client_id = <OpenID Connect Client ID from Centrify>
client_secret = <your generated OpenID Connect Client Secret"
scopes = openid profile email
auth_url = https://<your domain>.my.centrify.com/OAuth2/Authorize/<Application ID>
token_url = https://<your domain>.my.centrify.com/OAuth2/Token/<Application ID>
api_url = https://<your domain>.my.centrify.com/OAuth2/UserInfo/<Application ID>
```
## Set up OAuth2 with OneLogin
1. Create a new Custom Connector with the following settings:
@@ -106,63 +188,6 @@ allowed_organizations =
allowed_organizations =
```
## Set up OAuth2 with Auth0
1. Create a new Client in Auth0
- Name: Grafana
- Type: Regular Web Application
2. Go to the Settings tab and set:
- Allowed Callback URLs: `https://<grafana domain>/login/generic_oauth`
3. Click Save Changes, then use the values at the top of the page to configure Grafana:
```bash
[auth.generic_oauth]
enabled = true
allow_sign_up = true
team_ids =
allowed_organizations =
name = Auth0
client_id = <client id>
client_secret = <client secret>
scopes = openid profile email
auth_url = https://<domain>/authorize
token_url = https://<domain>/oauth/token
api_url = https://<domain>/userinfo
```
## Set up OAuth2 with Centrify
1. Create a new Custom OpenID Connect application configuration in the Centrify dashboard.
2. Create a memorable unique Application ID, e.g. "grafana", "grafana_aws", etc.
3. Put in other basic configuration (name, description, logo, category)
4. On the Trust tab, generate a long password and put it into the OpenID Connect Client Secret field.
5. Put the URL to the front page of your Grafana instance into the "Resource Application URL" field.
6. Add an authorized Redirect URI like https://your-grafana-server/login/generic_oauth
7. Set up permissions, policies, etc. just like any other Centrify app
8. Configure Grafana as follows:
```bash
[auth.generic_oauth]
name = Centrify
enabled = true
allow_sign_up = true
client_id = <OpenID Connect Client ID from Centrify>
client_secret = <your generated OpenID Connect Client Secret"
scopes = openid profile email
auth_url = https://<your domain>.my.centrify.com/OAuth2/Authorize/<Application ID>
token_url = https://<your domain>.my.centrify.com/OAuth2/Token/<Application ID>
api_url = https://<your domain>.my.centrify.com/OAuth2/UserInfo/<Application ID>
```
## JMESPath examples
To ease configuration of a proper JMESPath expression, you can test/evaluate expressions with custom payloads at http://jmespath.org/.

View File

@@ -59,11 +59,13 @@ Example:
# Login cookie name
login_cookie_name = grafana_session
# The lifetime (days) an authenticated user can be inactive before being required to login at next visit. Default is 7 days.
login_maximum_inactive_lifetime_days = 7
# The maximum lifetime (days) an authenticated user can be logged in since login time before being required to login. Default is 30 days.
login_maximum_lifetime_days = 30
# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation (token_rotation_interval_minutes).
login_maximum_inactive_lifetime_duration =
# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
login_maximum_lifetime_duration =
# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
token_rotation_interval_minutes = 10

View File

@@ -0,0 +1,11 @@
+++
title = "Best practices"
description = "Best practices for working with Grafana"
type = "docs"
[menu.docs]
weight = 200
+++
# Best practices
This section provides information about best practices for intermediate Grafana administrators and users.

View File

@@ -0,0 +1,55 @@
+++
title = "Best practices for creating dashboards"
description = "Best practices for creating dashboards in Grafana"
type = "docs"
[menu.docs]
weight = 200
+++
# Best practices for creating dashboards
This page outlines some best practices to follow when creating Grafana dashboards.
## Before you begin
Here are some principles to consider before you create a dashboard.
### A dashboard should tell a story or answer a question
What story are you trying to tell with your dashboard? Try to create a logical progression of data, such as large to small or general to specific. What is the goal for this dashboard? (Hint: If the dashboard doesn't have a goal, then ask yourself if you really need the dashboard.)
Keep your graphs simple and focused on answering the question that you are asking. For example, if your question is "which servers are in trouble?", then maybe you don't need to show all the server data. Just show data for the ones in trouble.
### Dashboards should reduce cognitive load, not add to it
_Cognitive load_ is basically how hard you need to think about something in order to figure it out. Make your dashboard easy to interpret. Other users and future you (when you're trying to figure out what broke at 2AM) will appreciate it.
Ask yourself:
- Can I tell what exactly each graph represents? Is it obvious, or do I have to think about it?
- If I show this to someone else, how long will it take them to figure it out? Will they get lost?
### Have a monitoring strategy
It's easy to make new dashboards. It's harder to optimize dashboard creation and adhere to a plan, but it's worth it. This strategy should govern both your overall dashboard scheme and enforce consistency in individual dashboard design.
Refer to [Common observability strategies]({{< relref "common-observability-strategies.md" >}}) and [Dashboard management maturity levels]({{< relref "dashboard-management-maturity-levels.md" >}}) for more information.
### Write it down
Once you have a strategy or design guidelines, write them down to help maintain consistency over time. Check out this [Wikimedia runbook example](https://wikitech.wikimedia.org/wiki/Performance/Runbook/Grafana_best_practices).
## Best practices to follow
- When creating a new dashboard, make sure it has a meaningful name.
- If you are creating a dashboard to play or experiment, then put the word `TEST` or `TMP` in the name.
- Consider including your name or initials in the dashboard name or as a tag so that people know who owns the dashboard.
- Remove temporary experiment dashboards when you are done with them.
- If you create many related dashboards, think about how to cross-reference them for easy navigation. Refer to [Best practices for managing dashboards]({{< relref "best-practices-for-managing-dashboards.md" >}}) for more information.
- Grafana retrieves data from a data source. A basic understanding of [data sources]({{< relref "../features/datasources/data-sources.md" >}}) in general and your specific is important.
- Avoid unnecessary dashboard refreshing to reduce the load on the network or backend. For example, if your data changes every hour, then you don't need to set the dashboard refresh rate to 30 seconds.
- Use the left and right Y-axes when displaying time series with different units or ranges.
- Add documentation to dashboards and panels.
- To add documentation to a dashboard, add a [Text panel visualization]({{< relref "../panels/visualizations/text-panel.md" >}}) to the dashboard. Record things like the purpose of the dashboard, useful resource links, and any instructions users might need to interact with the dashboard. Check out this [Wikimedia example](https://grafana.wikimedia.org/d/000000066/resourceloader?orgId=1).
- To add documentation to a panel, [edit the panel settings]({{< relref "../panels/add-a-panel.md#edit-panel-settings" >}}) and add a description. Any text you add will appear if you hover your cursor over the small `i` in the top left corner of the panel.
- Reuse your dashboards and enforce consistency by using [templates and variables]({{< relref "../variables/templates-and-variables.md" >}}).
- Be careful with stacking graph data. The visualizations can be misleading, and hide important data. We recommend turning it off in most cases.

View File

@@ -0,0 +1,39 @@
+++
title = "Best practices for managing dashboards"
description = "Best practices for managing dashboards in Grafana"
type = "docs"
[menu.docs]
weight = 200
+++
# Best practices for managing dashboards
This page outlines some best practices to follow when managing Grafana dashboards.
## Before you begin
Here are some principles to consider before you start managing dashboards.
### Strategic observability
There are several [common observability strategies]({{< relref "common-observability-strategies.md" >}}). You should research them and decide whether one of them works for you or if you want to come up with your own. Either way, have a plan, write it down, and stick to it.
Adapt your strategy to changing needs as necessary.
### Maturity level
What is your dashboard maturity level? Analyze your current dashboard setup and compare it to the [Dashboard management maturity model]({{< relref "dashboard-management-maturity-levels.md" >}}). Understanding where you are can help you decide how to get to where you want to be.
## Best practices to follow
- Avoid dashboard sprawl, meaning the uncontrolled growth of dashboards. Dashboard sprawl negatively affects time to find the right dashboard. Duplicating dashboards and changing “one thing” (worse: keeping original tags) is the easiest kind of sprawl.
- Periodically review the dashboards and remove unnecessary ones.
- If you create a temporary dashboard, perhaps to test something, prefix the name with `TEST: `. Delete the dashboard when you are finished.
- Copying dashboards with no significant changes is not a good idea.
- You miss out on updates to the original dashboard, such as documentation changes, bug fixes, or additions to metrics.
- In many cases copies are being made to simply customize the view by setting template parameters. This should instead be done by maintaining a link to the master dashboard and customizing the view with [URL parameters]({{< relref "../linking/data-link-variables.md" >}}).
- When you must copy a dashboard, clearly rename it and _do not_ copy the dashboard tags. Tags are important metadata for dashboards that are used during search. Copying tags can result in false matches.
- Maintain a dashboard of dashboards or cross-reference dashboards. This can be done in several ways:
- Create dashboard links, panel, or data links. Links can go to other dashboards or to external systems. For more information, refer to [Linking]({{< relref "../linking/_index.md" >}}).
- Add a [Dashboard list panel]({{< relref "../panels/visualizations/dashboard-list-panel.md" >}}). You can then customize what you see by doing tag or folder searches.
- Add a [Text panel]({{< relref "../panels/visualizations/text-panel.md" >}}) and use markdown to customize the display.

View File

@@ -0,0 +1,57 @@
+++
title = "Common observability strategies"
description = "Common observability strategies"
keywords = ["grafana", "intro", "guide", "concepts", "methods"]
aliases = ["/docs/grafana/latest/getting-started/strategies/"]
type = "docs"
[menu.docs]
weight = 500
+++
# Common observability strategies
When you have a lot to monitor, like a server farm, you need a strategy to decide what is important enough to monitor. This page describes several common methods for choosing what to monitor.
A logical strategy allows you to make uniform dashboards and scale your observability platform more easily.
## Guidelines for usage
- The USE method tells you how happy your machines are, the RED method tells you how happy your users are.
- USE reports on causes of issues.
- RED reports on user experience and is more likely to report symptoms of problems.
- The best practice of alerting is to alert on symptoms rather than causes, so alerting should be done on RED dashboards.
## USE method
USE stands for:
- **Utilization -** Percent time the resource is busy, such as node CPU usage
- **Saturation -** Amount of work a resource has to do, often queue length or node load
- **Errors -** Count of error events
This method is best for hardware resources in infrastructure, such as CPU, memory, and network devices. For more information, refer to [The USE Method](http://www.brendangregg.com/usemethod.html).
## RED method
RED stands for:
- **Rate -** Requests per second
- **Errors -** Number of requests that are failing
- **Duration -** Amount of time these requests take, distribution of latency measurements
This method is most applicable to services, especially a microservices environment. For each of your services, instrument the code to expose these metrics for each component. RED dashboards are good for alerting and SLAs. A well-designed RED dashboard is a proxy for user experience.
For more information, refer to Tom Wilkie's blog post [The RED method: How to instrument your services](https://grafana.com/blog/2018/08/02/the-red-method-how-to-instrument-your-services).
## The Four Golden Signals
According to the [Google SRE handbook](https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/#xref_monitoring_golden-signals), if you can only measure four metrics of your user-facing system, focus on these four.
This method is similar to the RED method, but it includes saturation.
- **Latency -** Time taken to serve a request
- **Traffic -** How much demand is placed on your system
- **Errors -** Rate of requests that are failing
- **Saturation -** How "full" your system is
[Here's an example from Grafana Play](https://play.grafana.org/d/000000109/the-four-golden-signals?orgId=1).

View File

@@ -0,0 +1,73 @@
+++
title = "Dashboard management maturity model"
description = "Explanation of dashboard management maturity model"
type = "docs"
[menu.docs]
weight = 200
+++
# Dashboard management maturity model
_Dashboard management maturity_ refers to how well-designed and efficient your dashboard ecosystem is. We recommend periodically reviewing your dashboard setup to gauge where you are and how you can improve.
Broadly speaking, dashboard maturity can be defined as low, medium, or high.
Much of the content for this topic was taken from the KubeCon 2019 talk [Fool-Proof Kubernetes Dashboards for Sleep-Deprived Oncalls](https://www.youtube.com/watch?v=YE2aQFiMGfY).
## Low - default state
At this stage, you have no coherent dashboard management strategy. Almost everyone starts here.
How can you tell you are here?
- Everyone can modify your dashboards.
- Lots of copied dashboards, little to no dashboard reuse.
- One-off dashboards that hang around forever.
- No version control (dashboard JSON in version control).
- Lots of browsing for dashboards, searching for the right dashboard. This means lots of wasted time trying to find the dashboard you need.
- Not having any alerts to direct you to the right dashboard.
## Medium - methodical dashboards
At this stage, you are starting to manage your dashboard use with methodical dashboards. You might have laid out a strategy, but there are some things you could improve.
How can you tell you are here?
- Prevent sprawl by using template variables. For example, you don't need a separate dashboard for each node, you can use query variables. Even better, you can make the data source a template variable too, so you can reuse the same dashboard across different clusters and monitoring backends.
Refer to the list of [Variable examples]({{< relref "../variables/variable-examples.md" >}}) if you want some ideas.
- 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" >}}
- 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" >}}
- 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.
- Example of meaningful color: Blue means it's good, red means it's bad. [Thresholds]({{< relref "../panels/thresholds.md" >}}) can help with that.
- Example of normalizing axes: When comparing CPU usage, measure by percentage rather than raw number, because machines can have a different number of cores. Normalizing CPU usage by the number of cores reduces cognitive load because the viewer can trust that at 100% all cores are being used, without having to know the number of CPUs.
- Directed browsing cuts down on "guessing."
- Template variables make it harder to “just browse” randomly or aimlessly.
- Most dashboards should be linked to by alerts.
- Browsing is directed with links. For more information, refer to [Linking]({{< relref "../linking/_index.md" >}}).
- Version-controlled dashboard JSON.
## High - optimized use
At this stage, you have optimized your dashboard management use with a consistent and thoughtful strategy. It requires maintenance, but the results are worth it.
- Actively reducing sprawl.
- Regularly review existing dashboards to make sure they are still relevant.
- Only approved dashboards added to master dashboard list.
- Tracking dashboard use. If you're an Enterprise user, you might take advantage of [Usage insights]({{< relref "../enterprise/usage-insights.md" >}}).
- Consistency by design.
- Use scripting libraries to generate dashboards, ensure consistency in pattern and style.
- grafonnet (Jsonnet)
- grafanalib (Python)
- No editing in the browser. Dashboard viewers change views with variables.
- Browsing for dashboards is the exception, not the rule.
- Perform experimentation and testing in a separate Grafana instance dedicated to that purpose, not your production instance. When a dashboard in the test environment is proven useful, then add that dashboard to your main Grafana instance.

View File

@@ -13,13 +13,15 @@ weight = 3
Folders are a way to organize and group dashboards - very useful if you have a lot of dashboards or multiple teams using the same Grafana instance.
> **Note:** Only Grafana Admins and Super Admins can create, edit, or delete folders. Refer to [Organization roles]({{< relref "../permissions/organization_roles.md" >}}) for more information.
## How To Create A Folder
- Create a folder by using the Create Folder link in the side menu (under the create menu (+ icon))
- Use the create Folder button on the Manage Dashboards page.
- When saving a dashboard, you can either choose a folder for the dashboard to be saved in or create a new folder
On the Create Folder page, fill in a unique name for the folder and press Create.
On the Create Folder page, fill in a unique name for the folder and then click Create.
## Manage Dashboards

View File

@@ -1,6 +1,7 @@
+++
title = "Developers"
type = "docs"
aliases = ["/docs/plugins/developing/"]
+++
# Developers

View File

@@ -1,5 +1,5 @@
+++
title = "Build a plugin"
title = "Build a plugin."
type = "docs"
+++
@@ -32,6 +32,7 @@ If you're looking to build your first plugin, check out these introductory tutor
- [Build a panel plugin]({{< relref "../../../../../tutorials/build-a-panel-plugin.md" >}})
- [Build a data source plugin]({{< relref "../../../../../tutorials/build-a-data-source-plugin.md" >}})
- [Build a data source backend plugin]({{< relref "../../../../../tutorials/build-a-data-source-backend-plugin.md" >}})
Ready to learn more? Check out our other tutorials:
@@ -47,6 +48,7 @@ Improve an existing plugin with one of our guides:
- [Add support for variables]({{< relref "add-support-for-variables.md" >}})
- [Build a logs data source plugin]({{< relref "build-a-logs-data-source-plugin.md" >}})
- [Build a streaming data source plugin]({{< relref "build-a-streaming-data-source-plugin.md" >}})
- [Error handling]({{< relref "error-handling.md" >}})
### Concepts

View File

@@ -85,7 +85,7 @@ Let users write custom annotation queries to only display the annotation events
> **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 plugin root directory, with the following content.
1. Create a file called `AnnotationQueryEditor.ts` in the `src` directory, with the following content.
```ts
export class AnnotationQueryEditor {
@@ -94,12 +94,12 @@ Let users write custom annotation queries to only display the annotation events
annotation: any;
constructor() {
this.annotation.rawQuery = this.annotation.rawQuery || '';
this.annotation.queryText = this.annotation.queryText || '';
}
}
```
1. Create a directory called `partials` in the plugin root directory.
1. Create a directory called `partials` in the `src` directory.
1. Create a file called `annotations.editor.html` in the `partials` directory you just created, with the following content.

View File

@@ -51,10 +51,152 @@ For data sources, you need to use the [getTemplateSrv]({{< relref "../../package
```ts
async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
const query = getTemplateSrv().replace('SELECT * FROM services WHERE id = "$service"'), options.scopedVars);
const query = getTemplateSrv().replace('SELECT * FROM services WHERE id = "$service"', options.scopedVars);
const data = makeDbQuery(query);
return { data };
}
```
## Format multi-value variables
When a user selects multiple values for variable, the value of the interpolated variable depends on the [variable format](https://grafana.com/docs/grafana/latest/variables/advanced-variable-format-options/).
A data source can define the default format option when no format is specified by adding a third argument to the interpolation function.
Let's change the SQL query to use CSV format by default:
```ts
getTemplateSrv().replace('SELECT * FROM services WHERE id IN ($service)', options.scopedVars, "csv");
```
Now, when users write `$service`, the query looks like this:
```sql
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/).
## Set a variable from your plugin
Not only can you read the value of a variable, you can also update the variable from your plugin. Use [LocationSrv.update()]({{< relref "../../packages_api/runtime/locationsrv.md/#update-method" >}}) to update a variable using query parameters.
The following example shows how to update a variable called `service`.
- `query` contains the query parameters you want to update. Query parameters controlling variables are prefixed with `var-`.
- `partial: true` makes the update only affect the query parameters listed in `query`, and leaves the other query parameters unchanged.
- `replace: true` tells Grafana to update the current URL state, rather than creating a new history entry.
```ts
import { getLocationSrv } from '@grafana/runtime';
```
```ts
getLocationSrv().update({
query: {
'var-service': 'billing',
},
partial: true,
replace: true,
});
```
> **Note:** Grafana queries your data source whenever you update a variable. Excessive updates to variables can slow down Grafana and lead to a poor user experience.
## Add support for query variables to your data source
[Query variables]({{< relref "../../variables/variable-types/add-query-variable.md" >}}) is a type of variable that allows you to query a data source for the values. By adding support for query variables to your data source plugin, users can create dynamic dashboards based on data from your data source.
Let's start by defining a query model for the variable query.
```ts
export interface MyVariableQuery {
namespace: string;
rawQuery: string;
}
```
For a data source to support query variables, you must override the [`metricFindQuery`]({{< relref "../../packages_api/data/datasourceapi.md#metricfindquery-method" >}}) in your `DataSourceApi` class. `metricFindQuery` returns an array of [`MetricFindValue`]({{< relref "../../packages_api/data/metricfindvalue.md" >}}) which has a single property, `text`:
```ts
async metricFindQuery(query: MyVariableQuery, options?: any) {
// Retrieve DataQueryResponse based on query.
const response = await this.fetchMetricNames(query.namespace, query.rawQuery);
// Convert query results to a MetricFindValue[]
const values = response.data.map(frame => ({ text: frame.name }));
return values;
}
```
> **Note:** By default, Grafana provides a default query model and editor for simple text queries. If that's all you need, then you can leave the query type as `string`.
>
> ```ts
> async metricFindQuery(query: string, options?: any)
> ```
Let's create a custom query editor to allow the user to edit the query model.
1. Create a `VariableQueryEditor` component.
```ts
import React, { useState } from 'react';
import { MyVariableQuery } from './types';
interface VariableQueryProps {
query: MyVariableQuery;
onChange: (query: MyVariableQuery, definition: string) => void;
}
export const VariableQueryEditor: React.FC<VariableQueryProps> = ({ onChange, query }) => {
const [state, setState] = useState(query);
const saveQuery = () => {
onChange(state, `${state.query} (${state.namespace})`);
};
const handleChange = (event: React.FormEvent<HTMLInputElement>) =>
setState({
...state,
[event.currentTarget.name]: event.currentTarget.value,
});
return (
<>
<div className="gf-form">
<span className="gf-form-label width-10">Namespace</span>
<input
name="namespace"
className="gf-form-input"
onBlur={saveQuery}
onChange={handleChange}
value={state.namespace}
/>
</div>
<div className="gf-form">
<span className="gf-form-label width-10">Query</span>
<input name="rawQuery" className="gf-form-input" onBlur={saveQuery} onChange={handleChange} value={state.rawQuery} />
</div>
</>
);
};
```
Grafana saves the query model whenever one of the text fields loses focus (`onBlur`) and then previews the values returned by `metricFindQuery`.
The second argument to `onChange` allows you to set a text representation of the query which will appear next to the name of the variable in the variables list.
1. Finally, configure your plugin to use the query editor.
```ts
import { VariableQueryEditor } from './VariableQueryEditor';
export const plugin = new DataSourcePlugin<DataSource, MyQuery, MyDataSourceOptions>(DataSource)
.setQueryEditor(QueryEditor)
.setVariableQueryEditor(VariableQueryEditor);
```
That's it! You can now try out the plugin by adding a [query variable]({{< relref "../../variables/variable-types/add-query-variable.md" >}}) to your dashboard.

View File

@@ -0,0 +1,64 @@
+++
title = "Error handling"
type = "docs"
+++
# Error handling
This guide explains how to handle errors in plugins.
## Provide usable defaults
Allow the user to learn your plugin in small steps. Provide a useful default configuration so that:
- The user can get started right away.
- You can avoid unnecessary error messages.
For example, by selecting the first field of an expected type, the panel can display a visualization without any user configuration. If a user explicitly selects a field, then use that one. Otherwise, default to the first field of type `string`:
```ts
const numberField = frame.fields.find(field =>
options.numberFieldName ? field.name === options.numberFieldName : field.type === FieldType.number
);
```
## Display error messages
To display an error message to the user, `throw` an `Error` with the message you want to display:
```ts
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" >}}
Avoid displaying overly-technical error messages to the user. If you want to let technical users report an error, consider logging it instead.
```ts
try {
failingFunction();
} catch (err) {
console.error(err);
throw new Error('Something went wrong');
}
```
> **Note:** Grafana displays the exception message in the UI as written, so we recommend using grammatically correct sentences. For more information, refer to the [Documentation style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/documentation-style-guide.md).
Here are some examples of situations where you might want to display an error to the user.
### Invalid query response
Users have full freedom when they create data source queries for panels. If your panel plugin requires a specific format for the query response, then use the panel canvas to guide the user.
```ts
if (!numberField) {
throw new Error('Query result is missing a number field')
}
if (frame.length === 0) {
throw new Error('Query returned an empty result')
}
```

View File

@@ -35,6 +35,7 @@ The plugin.json file is required for all plugins. When Grafana starts, it scans
| `partials` | [object](#partials) | No | |
| `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/). |
| `skipDataQuery` | boolean | No | For panel plugins. Hides the query editor. |
| `sort` | number | No | Internal property for sorting. Cannot be used as will be overwritten by Grafana. |
| `staticRoot` | string | No | |
| `streaming` | boolean | No | For data source plugins. If the plugin supports streaming. |
@@ -47,10 +48,11 @@ Plugin dependencies.
### Properties
| Property | Type | Required | Description |
|------------------|----------|----------|------------------------------------------------------------------------------------------------------------------|
| `grafanaVersion` | string | **Yes** | Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x. |
| `plugins` | string[] | No | An array of required plugins on which this plugin depends. |
| Property | Type | Required | Description |
|---------------------|----------|----------|-------------------------------------------------------------------------------------------------------------------------------|
| `grafanaDependency` | string | **Yes** | Required Grafana version for this plugin. Validated using https://github.com/npm/node-semver. |
| `grafanaVersion` | string | No | (Deprecated) Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x. |
| `plugins` | string[] | No | An array of required plugins on which this plugin depends. |
## includes

View File

@@ -0,0 +1,168 @@
+++
title = "Plugin migration guide"
type = "docs"
+++
# Plugin migration guide
This guide explains how to migrate pre-Grafana 7.0 plugins from Angular to the new React-based plugin platform introduced in Grafana 7.0.
It's written for:
- Plugin authors who want to migrate their plugins to Grafana 7.0+.
- Plugin users who are using custom plugins and want to know whether they can upgrade to Grafana 7.0 without losing functionality.
> If you've successfully migrated your plugin from Angular to React, please [submit an issue on GitHub](https://github.com/grafana/grafana/issues/new?title=Docs%20feedback:%20/developers/plugins/migration-guide.md) and share your experiences with us so that we can improve this guide!
## What's new in Grafana 7.0?
Grafana 7.0 introduced a whole new plugin platform based on React. The new platform supersedes the previous Angular-based plugin platform.
Plugins built using Angular still work for the foreseeable future, but we encourage new plugin authors to develop with the new platform.
### New data format
Along with the move to React, the new plugin platform introduced a new internal data format called [data frames]({{< relref "data-frames.md" >}}).
Previously, data source plugins could send data either as time series or tables. With data frames, data sources can send any data in a table-like structure. This gives you more flexibility to visualize your data in Grafana.
### Improved TypeScript support
While the previous Angular-based plugin SDK did support TypeScript, for the React platform, weve greatly improved the support. All our APIs are now TypeScript, which might require existing code to update to the new stricter type definitions. Grafana 7.0 also introduced several new APIs for plugin developers that take advantage of many of the new features in Grafana 7.0.
### Grafana Toolkit
With Grafana 7.0, we released a new tool for making it easier to develop plugins. Before, youd use Gulp, Grunt, or similar tools to generate the minified assets. Grafana Toolkit takes care of building and testing your plugin without complicated configuration files.
For more information, refer to [@grafana/toolkit](https://www.npmjs.com/package/@grafana/toolkit).
### Field configuration options
Grafana 7.0 introduced the concept of [_field configuration options_]({{< relref "../../panels/field-configuration-options.md#field-configuration-options" >}}), a new way of configuring your data before it gets visualized. Since this was not available in previous versions, any plugin that enables field-based configuration will not work in previous versions of Grafana.
For plugins prior to Grafana 7.0, all options are considered _Display options_. The tab for field configuration isn't available.
### Backend plugins
While backend plugins were available as an experimental feature in previous versions of Grafana, the support has been greatly improved for Grafana 7. Backend plugins for Grafana 7.0 are backwards-compatible and will continue to work. However, the old backend plugin system has been deprecated, and we recommend that you use the new SDK for backend plugins.
Since Grafana 7.0 introduced [signing of backend plugins]({{< relref "../../plugins/plugin-signature-verification.md" >}}), community plugins wont load by default if theyre unsigned.
To learn more, refer to [Backend plugins]({{< relref "backend" >}}).
## Why should I migrate my plugin?
There are several benefits in using the new plugin platform.
- **Better performance:** Components written in React are more responsive.
- **Support for field configuration options:** By migrating to the new data frame format, you can leverage the new field configuration options to let users customize their data and display options.
## Compatibility between Grafana versions
A plugin developed for Grafana 6 will work for Grafana 7.0. However, plugins developed using the new plugin platform in Grafana 7.0 will only work for Grafana 7.0 and up.
### Interoperability between data formats
Grafana detects the data format sent by the data source and transforms it for the panel, if needed.
For example:
- A legacy panel with data source that returns data frames: Grafana converts the response to the legacy format.
- A legacy data source with a panel using data frames: Grafana converts the response to the data frame format.
- If both panel and data source uses the same format, no transformations are made. Data is passed as is.
### target and jsonData are unchanged
The query model, `target`, and the configuration model, jsonData, are still the same. This means that if you use the same query model and configuration for your plugin, then the migrated plugin will use existing queries and configuration. You dont have to worry about breaking existing dashboards.
## Migrate a plugin from Angular to React
If youre looking to migrate a plugin to the new plugin platform, then we recommend that you release it under a new major version. Consider keeping a release branch for the previous version to be able to roll out patch releases for versions prior to Grafana 7.
While there's no 1-to-1 migration path from an Angular plugin to the new React platform, from early adopters, weve learned that one of the easiest ways to migrate is to:
1. Create a new branch called `migrate-to-react`.
1. Start from scratch with one of the templates provided by Grafana Toolkit.
1. Move the existing code into the new plugin incrementally, one component at a time.
### Migrate a panel plugin
Prior to Grafana 7.0, you would export a MetricsPanelCtrl from module.ts.
**src/module.ts**
```ts
import { MetricsPanelCtrl } from 'grafana/app/plugins/sdk';
class MyPanelCtrl extends MetricsPanelCtrl {
// ...
}
export { MyPanelCtrl as PanelCtrl };
```
Starting with 7.0, plugins now export a PanelPlugin from module.ts where MyPanel is a React component containing the props from PanelProps.
**src/module.ts**
```ts
import { PanelPlugin } from '@grafana/data';
export const plugin = new PanelPlugin<MyOptions>(MyPanel);
```
**src/MyPanel.tsx**
```ts
import { PanelProps } from '@grafana/data';
interface Props extends PanelProps<SimpleOptions> {}
export const MyPanel: React.FC<Props> = ({ options, data, width, height }) => {
// ...
}
```
### Migrate a data source plugin
While all plugins are different, we'd like to share a migration process that has worked for some of our users.
1. Define you configuration model and `ConfigEditor`. For many plugins, the config editor is the simplest component so it's a good candidate to start with.
1. Implement the `testDatasource()` method on the class that extends `DataSourceApi` using the settings in your configuration model to make sure you can successfully configure and access the external API.
1. Implement the `query()` method. At this point, you can hard-code your query, because we havent yet implemented the query editor. The `query()` method supports both the new data frame response and the old TimeSeries response, so dont worry about converting to the new format just yet.
1. Implement the `QueryEditor`. How much work this requires depends on how complex your query model is.
By now, you should be able to release your new version.
To fully migrate to the new plugin platform, convert the time series response to a data frame response.
### Migrate to data frames
Before 7.0, data source and panel plugins exchanged data using either time series or tables. Starting with 7.0, plugins use the new data frame format to pass data from data sources to panels.
Grafana 7.0 is backward compatible with the old data format used in previous versions. Panels and data sources using the old format will still work with plugins using the new data frame format.
The `DataQueryResponse` returned by the `query` method can be either a [LegacyResponseData](https://grafana.com/docs/grafana/latest/packages_api/data/legacyresponsedata/) or a [DataFrame](https://grafana.com/docs/grafana/latest/packages_api/data/dataframe/).
The [toDataFrame()](https://grafana.com/docs/grafana/latest/packages_api/data/todataframe/) function converts a legacy response, such as `TimeSeries` or `Table`, to a `DataFrame`. Use it to gradually move your code to the new format.
```ts
import { toDataFrame } from '@grafana/data';
```
```ts
async query(options: DataQueryRequest<MyQuery>): Promise<DataQueryResponse> {
return {
data: options.targets.map(query => {
const timeSeries: TimeSeries = await doLegacyRequest(query);
return toDataFrame(timeSeries);
}
};
}
```
For more information, refer to [Data frames](https://grafana.com/docs/grafana/latest/developers/plugins/data-frames/).
## 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-signature-verification.md#allow-unsigned-plugins" >}}).

View File

@@ -7,10 +7,14 @@
"required": ["type", "name", "id", "info", "dependencies"],
"additionalProperties": false,
"properties": {
"$schema": {
"type": "string",
"description": "Schema definition for the plugin.json file"
},
"id": {
"type": "string",
"description": "Unique name of the plugin. If the plugin is published on grafana.com, then the plugin id has to follow the naming conventions.",
"pattern": "^[0-9a-z\\-]+$"
"pattern": "^[0-9a-z]+\\-([0-9a-z]+\\-)?(app|panel|datasource)$"
},
"type": {
"type": "string",
@@ -23,8 +27,8 @@
},
"category": {
"type": "string",
"description": "Plugin category used on the Add data source page. Possible values are: `tsdb`, `logging`, `cloud`, `tracing`, and `sql`.",
"enum": ["tsdb", "logging", "cloud", "tracing", "sql"]
"description": "Plugin category used on the Add data source page. Possible values are: `tsdb`, `logging`, `cloud`, `tracing`, `sql`, `enterprise` and `other`.",
"enum": ["tsdb", "logging", "cloud", "tracing", "sql", "enterprise", "other"]
},
"annotations": {
"type": "boolean",
@@ -73,6 +77,10 @@
"type": "boolean",
"description": "For data source plugins. If the plugin supports logs."
},
"skipDataQuery": {
"type": "boolean",
"description": "For panel plugins. Hides the query editor."
},
"partials": {
"type": "object",
"additionalItems": false,
@@ -117,13 +125,18 @@
"dependencies": {
"type": "object",
"description": "Plugin dependencies.",
"required": ["grafanaVersion"],
"required": ["grafanaDependency"],
"additionalProperties": false,
"properties": {
"grafanaVersion": {
"type": "string",
"description": "Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x.",
"pattern": "^([0-9x]+\\.[0-9x]+\\.*[0-9x]*\\s*)+$"
"description": "(Deprecated) Required Grafana version for this plugin, e.g. `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or v7.x.x.",
"pattern": "^([0-9]+)(\\.[0-9x]+)?(\\.[0-9x])?$"
},
"grafanaDependency": {
"type": "string",
"description": "Required Grafana version for this plugin. Validated using https://github.com/npm/node-semver.",
"pattern": "^(<=|>=|<|>|=|~|\\^)?([0-9]+)(\\.[0-9x\\*]+)(\\.[0-9x\\*])?(\\s(<=|>=|<|=>)?([0-9]+)(\\.[0-9x]+)(\\.[0-9x]))?$"
},
"plugins": {
"type": "array",
@@ -137,7 +150,7 @@
"info": {
"type": "object",
"description": "Metadata for the plugin. Some fields are used on the plugins page in Grafana and others on grafana.com if the plugin is published.",
"required": ["logos", "version", "updated"],
"required": ["logos", "version", "updated", "keywords"],
"additionalProperties": false,
"properties": {
"author": {
@@ -168,6 +181,7 @@
"keywords": {
"type": "array",
"description": "Array of plugin keywords. Used for search on grafana.com.",
"minItems": 1,
"items": {
"type": "string"
}
@@ -270,8 +284,7 @@
},
"url": {
"type": "string",
"description": "For data source plugins. Route URL is where the request is proxied to.",
"format": "uri"
"description": "For data source plugins. Route URL is where the request is proxied to."
},
"reqSignedIn": {
"type": "boolean"

View File

@@ -0,0 +1,120 @@
+++
title = "Share a plugin"
type = "docs"
+++
# Share a plugin
You've just built your first plugin, and now you want to share it with the world. In this guide, you'll learn how to package and share your plugin with others.
When you build a plugin from source, a `dist` directory is created that contains the production build, or _plugin assets_, for your plugin.
When loading your plugin, Grafana only cares about the plugin assets. Specifically, when the Grafana server starts, it attempts to discover and load plugins like this:
1. Look for a `plugin.json` file in any of the subdirectories in the plugin directory.
1. If a `plugin.json` was found, try to load the plugin assets from a `dist` directory in the same directory as the `plugin.json` file.
1. If there's no `dist` directory, try to load the plugin assets from the same directory as the `plugin.json` file.
Now that you know what Grafana needs to load your plugin, let's see how you can share the plugin with other users.
The best way to share your plugin with the world is to publish it on [Grafana Plugins](https://grafana.com/plugins). However, if you're not ready to make your plugin public just yet, you can still share your plugin by hosting the plugin yourself.
## Publish your plugin on Grafana.com
To publish a plugin to [Grafana Plugins](https://grafana.com/grafana/plugins), your plugin first needs to be publicly available in a commit on [GitHub](https://github.com).
The commit you submit needs to either:
- Contain a `dist` directory with the plugin assets
- Contain the plugin assets in the root directory
We strongly recommend that you don't check in the plugin assets to the main branch. Instead, use the following steps to create a release branch that contains the plugin assets.
1. Create a release branch.
```
git checkout -b release-0.1.x
```
1. Build the plugin assets.
```
yarn build
```
1. Add the `dist` directory. The `-f` flag adds the directory even if it's ignored by `.gitignore`.
```
git add -f dist
```
1. Create the release commit.
```
git commit -m "Release v0.1.0"
```
1. Create a release tag. You can also [create the release on GitHub](https://docs.github.com/en/github/administering-a-repository/managing-releases-in-a-repository). If you do, then you can skip this step and the next one.
```
git tag -a v0.1.0 -m "Create release tag v0.1.0"
```
1. Push to GitHub. `follow-tags` tells Git to push the release tag along with our release branch.
```
git push --set-upstream origin release-0.1.x --follow-tags
```
The next step is to submit the URL to your repository, and the release commit, to the [Grafana Plugin Repository](https://github.com/grafana/grafana-plugin-repository).
## Host the plugin yourself
If you want to share your plugin by hosting it yourself, then we recommend that you package it by adding the plugin assets to a .zip archive. You can then make the archive available by hosting it yourself.
How you package the plugin depends on whether you want to include the source code or not.
### Package the plugin with source code
If you want to distribute the source code along with your plugin assets, then you can archive the entire plugin directory.
To create a .zip archive that contains the plugin assets and source code, run the following commands in your terminal:
```
cd my-plugin/
yarn build
zip my-plugin-0.2.0.src.zip . -r -x "node_modules/*" -x ".git/*"
```
### Package the plugin without source code
If you don't want to distribute the plugin with the source code, then you can archive the `dist` directory.
To create a .zip archive that only contains the bare minimum to load the plugin, run the following commands in your terminal:
```
cd my-plugin/
yarn build
cd dist/
zip my-plugin-0.2.0.nosrc.zip . -r
```
### Package and host your plugin using GitHub
If you host your plugin on GitHub, then you can share the plugin using the following URL:
```
https://github.com/GITHUB_USERNAME/GITHUB_REPO_NAME/archive/<VERSION>.zip
```
For example, you can download the [Worldmap Panel](https://github.com/grafana/worldmap-panel) using the following URL:
[https://github.com/grafana/worldmap-panel/archive/v0.3.2.zip](https://github.com/grafana/worldmap-panel/archive/v0.3.2.zip)
### Install a packaged plugin
After the user has downloaded the archive containing the plugin assets, they can install it by extracting the archive into their plugin directory.
```
unzip my-plugin-0.2.0.zip -d YOUR_PLUGIN_DIR/my-plugin
```

View File

@@ -13,9 +13,7 @@ weight = 100
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 adds enterprise data sources, advanced authentication options, more permission controls, 24x7x365 support, and training from the core Grafana team.
Grafana Enterprise includes all of the features found in the open source edition and more.
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.
[Learn more about Grafana Enterprise.](https://grafana.com/enterprise)

View File

@@ -33,6 +33,8 @@ When permissions are enabled for a data source in an organization, you restrict
<div class="clearfix"></div>
> **Caution:** Enabling permissions for the default data source makes users not listed in the permissions unable to invoke queries. Panels using default data source will return `Access denied to data source` error for those users.
## Allow users and teams to query a data source
{{< 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" >}}

View File

@@ -28,32 +28,40 @@ If your license has expired most of Grafana keeps working as normal. Some enterp
4. Replace the current `license.jwt`-file with the one you've just downloaded.
5. Restart Grafana.
## Data source permissions
## If your license expires
If your Grafana Enterprise license expires, the following functionality affected as follows.
### Data source permissions
Your current data source permissions will keep working as expected, but you'll be unable to add new data source permissions until the license has been renewed.
## LDAP authentication
### LDAP authentication
* LDAP synchronization is not affected by an expired license.
* Enhanced LDAP debugging is unavailable.
## SAML authentication
### SAML authentication
SAML authentication is not affected by an expired license.
## Reporting
### Reporting
* You're unable to configure new reports or generate previews.
* Scheduled reports are not generated or sent.
## Enterprise plugins
### Enterprise plugins
Enterprise plugins might stop working.
## White labeling
### White labeling
The white labeling feature is turned off, meaning that any white labeling options will not have any effect.
## Usage insights
### Usage insights
All the usage insights features are turned off, meaning that you won't be able to look at dashboard usage, presence indicator or to use improved search. Grafana still collects usage data and you will have access to it as soon as you update your license.
### Vault integration
Vault integration is not affected by an expired license.

View File

@@ -31,26 +31,30 @@ Currently only Organization Admins can create reports.
1. Click on the reports icon in the side menu. The Reports tab allows you to view, create, and update your 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.
* **Choose dashboard -** Select the dashboard to generate the report from.
* **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.
* **Reply to -** (optional) The address that will appear in the **Reply to** field of the email.
* **Custom message -** (optional) Message body in the email with the report.
1. **Preview** the report to make sure it appears as you expect. Update if necessary
1. Select the layout option for generated report: **Portrait** or **Landscape**.
* **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" >}}).
1. **Preview PDF**to make sure the report appears as you expect. Update if necessary.
1. Enter scheduling information. Options vary depending on the frequency you select.
1. Select the orientation option for generated report: **Portrait** or **Landscape**.
1. Select the layout option for generated report: **Simple** or **Grid**.
1. **Save** the report.
1. **Send test mail** after saving the report to verify that the whole configuration is working as expected.
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" >}}
### Layout
### Layout and orientation
> We're actively working on developing new report layout options. [Contact us](https://grafana.com/contact?about=grafana-enterprise&topic=design-process&value=reporting) if you would like to get involved in the design process.
Name | Support | Description | Preview
---- | ------- | ----------- | -------
Portrait | v6.4+ | Portrait 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" >}}
Landscape | v6.7+ | Landscape 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" >}}
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" >}}
### Scheduling
@@ -69,7 +73,7 @@ Hourly reports are generated once per hour. All fields are required.
Daily reports are generated once per day. All fields are required.
* **Time -** Time of day in 24 hours format when the report should be sent.
* **Time -** Time the report is sent, in 24-hour format.
* **Time zone -** Time zone for the **Time** field.
#### Weekly
@@ -77,7 +81,17 @@ Daily reports are generated once per day. All fields are required.
Weekly reports are generated once per week. All fields are required.
* **Day -** Weekday which the report should be sent on.
* **Time -** Time of day in 24 hours format when the report should be sent.
* **Time -** Time the report is sent, in 24-hour format.
* **Time zone -** Time zone for the **Time** field.
#### Monthly
> Only available in Grafana Enterprise v7.1+.
Monthly reports are generated once per month. All fields are required.
* **Day in month -** Day of the month when the report should be sent. You can select `last` for reports that should go out on the last day of the month.
* **Time -** Time the report is sent, in 24-hour format.
* **Time zone -** Time zone for the **Time** field.
#### Never
@@ -86,11 +100,11 @@ Weekly reports are generated once per week. All fields are required.
Reports which are scheduled to never be sent have no parameter and will not be sent to the scheduler. They may be manually generated from the **Send test email** prompt or via the [Reporting API]({{< relref "../http_api/reporting.md" >}}).
### Send test mail
### Send test email
> Only available in Grafana Enterprise v7.0+.
1. In the report, click **Send test mail**.
1. In the report, click **Send test email**.
1. In the Email field, enter the email address or addresses that you want to test, separated by semicolon.
If you want to use email addresses from the report, then select the **Use emails from report** check box.
1. Click **Send**.
@@ -109,7 +123,7 @@ When generating reports, each panel renders separately before being collected in
To modify the panels' clarity you can set a scale factor for the rendered images. A higher scale factor is more legible but will increase the file size of the generated PDF.
These options are available in the [configuration]({{< relref "../administration/configuration.md">}}) file.
These options are available in the [configuration]({{< relref "../administration/configuration.md">}}) file.
```ini
[reporting]
@@ -124,12 +138,35 @@ image_scale_factor = 2
## Report time range
Reports use the saved time range of the dashboard. Changing the time range of the report is done by saving a modified time range to the dashboard.
> Setting custom report time range is available in Grafana Enterprise v7.2+.
By default, reports use the saved time range of the dashboard. Changing the time range of the report can be done by:
- Saving a modified time range to the dashboard.
- Setting a time range via **Time range** field in the report form. If specified, then this custom time range overrides the one from the report's dashboard.
The page header of the report displays the time range for the dashboard's data queries. Dashboards set to use the browser's time zone will use the time zone on the Grafana server.
If the time zone is set differently between your Grafana server and its remote image renderer, then the time ranges in the report might be different between the page header and the time axes in the panels. We advise always setting the time zone to UTC for dashboards when using a remote renderer to avoid this.
## Reports settings
> Only available in Grafana Enterprise v7.2+.
You can configure organization-wide report settings in the **Settings** tab on the **Reporting** page. Settings are applied to all the reports for current organization.
You can customize the branding options.
Report branding:
**Company logo URL** - Company logo displayed in the report PDF. Defaults to the Grafana logo.
Email branding:
- **Company logo URL** - Company logo displayed in the report PDF. Defaults to the Grafana logo.
- **Email footer** - Toggle to enable report email footer. Select **Sent by** or **None**.
- **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" >}}
## Troubleshoot reporting
To troubleshoot and get more log information, enable debug logging in the configuration file. Refer to [Configuration]({{< relref "../administration/configuration.md#filters" >}}) for more information.

View File

@@ -187,7 +187,7 @@ With the [`allowed_organizations`]({{< relref "./enterprise-configuration.md#all
enabled = true
certificate_path = "/path/to/certificate.cert"
private_key_path = "/path/to/private_key.pem"
metadata_path = "/my/metadata.xml"
idp_metadata_path = "/my/metadata.xml"
max_issue_delay = 90s
metadata_valid_duration = 48h
assertion_attribute_name = displayName

View File

@@ -41,6 +41,7 @@ In addition to the data sources that you have configured in your Grafana, there
- **Mixed -** Select this to query multiple data sources in the same panel. When this data source is selected, Grafana allows you to select a data source for every new query that you add.
* The first query will use the data source that was selected before you selected **Mixed**.
* You cannot change an existing query to use the Mixed Data Source.
* Grafana Play example: [Mixed data sources](https://play.grafana.org/d/000000100/mixed-datasources?orgId=1)
- **Dashboard -** Select this to use a result set from another panel in the same dashboard.
## Data source plugins

View File

@@ -12,7 +12,7 @@ weight = 2
Before you create your first dashboard, you need to add your data source. Following are the list of instructions to create one.
> Only users with the Admin role can add data sources.
> **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
where you can add and edit data sources. You can also click the cog.

View File

@@ -21,9 +21,9 @@ The Azure Monitor data source supports multiple services in the Azure cloud:
- **[Azure Monitor]({{< relref "#querying-the-azure-monitor-service" >}})** is the platform service that provides a single source for monitoring Azure resources.
- **[Application Insights]({{< relref "#querying-the-application-insights-service" >}})** is an extensible Application Performance Management (APM) service for web developers on multiple platforms and can be used to monitor your live web application - it will automatically detect performance anomalies.
- **[Azure Log Analytics]({{< relref "#querying-the-azure-log-analytics-service" >}})** (or Azure Logs) gives you access to log data collected by Azure Monitor.
- **[Application Insights Analytics]({{< relref "#writing-analytics-queries-for-the-application-insights-service" >}})** allows you to query [Application Insights data](https://docs.microsoft.com/en-us/azure/azure-monitor/app/analytics) using the same query language used for Azure Log Analytics.
- **[Application Insights Analytics]({{< relref "#query-the-application-insights-analytics-service" >}})** allows you to query [Application Insights data](https://docs.microsoft.com/en-us/azure/azure-monitor/app/analytics) using the same query language used for Azure Log Analytics.
## Adding the data source
## Add the data source
The data source can access metrics from four different services. You can configure access to the services that you use. It is also possible to use the same credentials for multiple services if that is how you have set it up in Azure AD.
@@ -76,10 +76,13 @@ In the query editor for a panel, after choosing your Azure Monitor data source,
- `Azure Monitor`
- `Application Insights`
- `Azure Log Analytics`
- `Insights Analytics`
The query editor will change depending on which one you pick. Azure Monitor is the default.
The query editor changes depending on which one you pick. Azure Monitor is the default.
## Querying the Azure Monitor service
Starting in Grafana 7.1, Insights Analytics replaced the former edit mode from within Application Insights.
## Query the Azure Monitor service
The Azure Monitor service provides metrics for all the Azure services that you have running. It helps you understand how your applications on Azure are performing and to proactively find issues affecting your applications.
@@ -93,29 +96,34 @@ Examples of metrics that you can get from the service are:
{{< docs-imagebox img="/img/docs/v60/azuremonitor-service-query-editor.png" class="docs-image--no-shadow" caption="Azure Monitor Query Editor" >}}
### Formatting legend keys with aliases for Azure Monitor
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.
### Format legend keys with aliases for Azure Monitor
The default legend formatting for the Azure Monitor API is:
`resourceName{dimensionValue=dimensionName}.metricName`
`metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}`
These can be quite long but this formatting can be changed using aliases. In the Legend Format field, the aliases which are defined below can be combined any way you want.
> **Note:** Before Grafana 7.1, the formatting included the resource name in the default: `resourceName{dimensionName=dimensionValue}.metricName`. As of Grafana 7.1, the resource name has been removed from the default legend.
Azure Monitor Examples:
These can be quite long, but this formatting can be changed by using aliases. In the **Legend Format** field, you can combine the aliases defined below any way you want.
- `dimension: {{dimensionvalue}}`
- `{{resourcegroup}} - {{resourcename}}`
Azure Monitor examples:
- `Blob Type: {{ blobtype }}`
- `{{ resourcegroup }} - {{ resourcename }}`
### Alias patterns for Azure Monitor
- `{{resourcegroup}}` = replaced with the value of the Resource Group
- `{{namespace}}` = replaced with the value of the Namespace (e.g. Microsoft.Compute/virtualMachines)
- `{{resourcename}}` = replaced with the value of the Resource Name
- `{{metric}}` = replaced with metric name (e.g. Percentage CPU)
- `{{dimensionname}}` = replaced with dimension key/label (e.g. blobtype)
- `{{dimensionvalue}}` = replaced with dimension value (e.g. BlockBlob)
- `{{ resourcegroup }}` = replaced with the value of the Resource Group
- `{{ namespace }}` = replaced with the value of the Namespace (e.g. Microsoft.Compute/virtualMachines)
- `{{ resourcename }}` = replaced with the value of the Resource Name
- `{{ metric }}` = replaced with metric name (e.g. Percentage CPU)
- `{{ dimensionname }}` = *Legacy as of 7.1+ (for backwards compatibility)* replaced with the first dimension's key/label (as sorted by the key/label) (e.g. blobtype)
- `{{ dimensionvalue }}` = *Legacy as of 7.1+ (for backwards compatibility)* replaced with first dimension's value (as sorted by the key/label) (e.g. BlockBlob)
- `{{ arbitraryDim }}` = *Available in 7.1+* replaced with the value of the corresponding dimension. (e.g. `{{ blobtype }}` becomes BlockBlob)
### Templating with variables for Azure Monitor
### Create template variables for Azure Monitor
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place. Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data being displayed in your dashboard.
@@ -159,29 +167,31 @@ Grafana alerting is supported for the Azure Monitor service. This is not Azure A
{{< docs-imagebox img="/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
## Querying the Application Insights Service
## Query the Application Insights Service
{{< docs-imagebox img="/img/docs/v60/appinsights-service-query-editor.png" class="docs-image--no-shadow" caption="Application Insights Query Editor" >}}
{{< docs-imagebox img="/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.
### Formatting legend keys with aliases for Application Insights
The default legend formatting is:
`metric/name{group/by="groupbyvalue"}`
`metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}`
In the Legend Format field, the aliases which are defined below can be combined any way you want.
Application Insights Examples:
Application Insights examples:
- `server: {{groupbyvalue}}`
- `city: {{groupbyvalue}}`
- `{{groupbyname}}: {{groupbyvalue}}`
- `city: {{ client/city }}`
- `{{ metric }} [Location: {{ client/countryOrRegion }}, {{ client/city }}]`
### Alias patterns for Application Insights
- `{{groupbyvalue}}` = replaced with the value of the group by
- `{{groupbyname}}` = replaced with the name/label of the group by
- `{{metric}}` = replaced with metric name (e.g. requests/count)
- `{{ groupbyvalue }}` = *Legacy as of 7.1+ (for backwards compatibility)* replaced with the first dimension's key/label (as sorted by the key/label)
- `{{ groupbyname }}` = *Legacy as of 7.1+ (for backwards compatibility)* replaced with first dimension's value (as sorted by the key/label) (e.g. BlockBlob)
- `{{ metric }}` = replaced with metric name (e.g. requests/count)
- `{{ arbitraryDim }}` = *Available in 7.1+* replaced with the value of the corresponding dimension. (e.g. `{{ client/city }}` becomes Chicago)
### Filter expressions for Application Insights
@@ -222,29 +232,64 @@ Grafana alerting is supported for Application Insights. This is not Azure Alerts
## Querying the Azure Log Analytics service
Queries are written in the new [Azure Log Analytics (or KustoDB) Query Language](https://docs.loganalytics.io/index). A Log Analytics Query can be formatted as Time Series data or as Table data.
Queries are written in the new [Azure Log Analytics (or KustoDB) Query Language](https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/query-language). A Log Analytics query can be formatted as time series data or as table data.
Time Series queries are for the Graph Panel (and other panels like the Single Stat panel) and must contain a datetime column, a metric name column and a value column. Here is an example query that returns the aggregated count grouped by the Category column and grouped by hour:
If your credentials give you access to multiple subscriptions, then choose the appropriate subscription before entering queries.
```
AzureActivity
### Time series queries
Time series queries are for the Graph panel and other panels like the SingleStat panel. Each query must contain at least a datetime column and a numeric value column. The result must also be sorted in ascending order by the datetime column.
Here is an example query that returns the aggregated count grouped by hour:
```kusto
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by Category, bin(TimeGenerated, 1h)
| summarize count() by bin(TimeGenerated, 1h)
| order by TimeGenerated asc
```
Table queries are mainly used in the Table panel and row a list of columns and rows. This example query returns rows with the 6 specified columns:
A query can also have one or more non-numeric/non-datetime columns, and those columns are considered dimensions and become labels in the response. For example, a query that returns the aggregated count grouped by hour, Computer, and the CounterName:
```kusto
Perf
| where $__timeFilter(TimeGenerated)
| summarize count() by bin(TimeGenerated, 1h), Computer, CounterName
| order by TimeGenerated asc
```
You can also select additional number value columns (with, or without multiple dimensions). For example, getting a count and average value by hour, Computer, CounterName, and InstanceName:
```kusto
Perf
| where $__timeFilter(TimeGenerated)
| summarize Samples=count(), ["Avg Value"]=avg(CounterValue)
by bin(TimeGenerated, $__interval), Computer, CounterName, InstanceName
| order by TimeGenerated asc
```
> **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" >}}
### Table queries
Table queries are mainly used in the Table panel and show a list of columns and rows. This example query returns rows with the six specified columns:
```kusto
AzureActivity
| where $__timeFilter()
| project TimeGenerated, ResourceGroup, Category, OperationName, ActivityStatus, Caller
| order by TimeGenerated desc
```
If your credentials give you access to multiple subscriptions then choose the appropriate subscription first.
### Format the display name for Log Analytics
{{< docs-imagebox img="/img/docs/v60/azureloganalytics-service-query-editor.png" class="docs-image--no-shadow" caption="Azure Log Analytics Query Editor" >}}
The default display name format is:
`metricName{dimensionName=dimensionValue,dimensionTwoName=DimensionTwoValue}`
This can be customized by using the [display name field configuration option]({{< relref "../../panels/field-configuration-options.md#display-name" >}}).
### Azure Log Analytics macros
@@ -304,7 +349,7 @@ Example variable queries:
Example of a time series query using variables:
```
```kusto
Perf
| where ObjectName == "$object" and CounterName == "$metric"
| where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo()
@@ -331,21 +376,11 @@ If you're not currently logged in to the Azure Portal, then the link opens the l
Grafana alerting is supported for Application Insights. This is not Azure Alerts support. Read more about how alerting in Grafana works in [Alerting rules]({{< relref "../../alerting/alerts-overview.md" >}}).
### Writing analytics queries For the Application Insights service
## Query the Application Insights Analytics service
If you change the service type to "Application Insights", the menu icon to the right adds another option, "Toggle Edit Mode". Once clicked, the query edit mode changes to give you a full text area in which to write log analytics queries. (This is identical to how the InfluxDB data source lets you write raw queries.)
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.
Once a query is written, the column names are automatically parsed out of the response data. You can then select them in the "X-axis", "Y-axis", and "Split On" dropdown menus, or just type them out.
There are some important caveats to remember:
- You'll want to order your y-axis in the query, eg. `order by timestamp asc`. The graph may come out looking bizarre otherwise. It's better to have Microsoft sort it on their side where it's faster, than to implement this in the plugin.
- If you copy a log analytics query, typically they'll end with a render instruction, like `render barchart`. This is unnecessary, but harmless.
- Currently, four default dashboard variables are supported: `$__timeFilter()`, `$__from`, `$__to`, and `$__interval`. If you're searching in timestamped data, replace the beginning of your where clause to `where $__timeFilter()`. Dashboard changes by time region are handled as you'd expect, as long as you leave the name of the `timestamp` column alone. Likewise, `$__interval` will automatically change based on the dashboard's time region _and_ the width of the chart being displayed. Use it in bins, so `bin(timestamp,$__interval)` changes into something like `bin(timestamp,1s)`. Use `$__from` and `$__to` if you just want the formatted dates to be inserted.
- Templated dashboard variables are not yet supported! They will come in a future version.
{{< 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" >}}
## Configure the data source with provisioning

View File

@@ -26,7 +26,7 @@ Grafana ships with built-in support for Google Cloud Monitoring. Just add it as
4. Select `Google Cloud Monitoring` from the _Type_ dropdown.
5. Upload or paste in the Service Account Key file. See below for steps on how to create a Service Account Key file.
> 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.
> **Note:** If you're not seeing the `Data Sources` link in your side menu, then your current user account does not have the `Admin` role for the current organization.
| Name | Description |
| --------------------- | ------------------------------------------------------------------------------------- |
@@ -83,7 +83,7 @@ If Grafana is running on a Google Compute Engine (GCE) virtual machine, it is po
1. First of all, you need to create a Service Account that can be used by the GCE virtual machine. See detailed instructions on how to do that [here](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#createanewserviceaccount).
2. Make sure the GCE virtual machine instance is being run as the service account that you just created. See instructions [here](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#using).
3. Allow access to the `Cloud Monitoring Monitoring API` scope.
3. Allow access to the `Cloud Monitoring API` scope.
Read more about creating and enabling service accounts for GCE VM instances [here](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances).

View File

@@ -25,15 +25,16 @@ build dashboards or use Explore with CloudWatch metrics and CloudWatch Logs.
> 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).
| 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. |
| _Default Region_ | Used in query editor to set region (can be changed on per query basis) |
| _Custom Metrics namespace_ | Specify the CloudWatch namespace of Custom metrics |
| _Auth Provider_ | Specify the provider to get credentials. |
| _Credentials_ profile name | Specify the name of the profile to use (if you use `~/.aws/credentials` file), leave blank for default. |
| _Assume Role Arn_ | Specify the ARN of the role to assume |
| 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. |
| _Default Region_ | Used in query editor to set region (can be changed on per query basis) |
| _Custom Metrics namespace_ | Specify the CloudWatch namespace of Custom metrics |
| _Auth Provider_ | Specify the provider to get credentials. |
| _Credentials_ profile name | Specify the name of the profile to use (if you use `~/.aws/credentials` file), leave blank for default. |
| _Assume Role Arn_ | Specify the ARN of the role to assume |
| _External ID_ | If you are assuming a role in another account, that has been created with an external ID, specify the exterrnal ID here. |
## Authentication
@@ -229,8 +230,6 @@ 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.
TODO: will need to be update when we have the dashboards for logs.
{{< docs-imagebox img="/img/docs/v65/cloudwatch-dashboard-import.png" caption="CloudWatch dashboard import" >}}
## Templated queries
@@ -384,6 +383,7 @@ datasources:
jsonData:
authType: credentials
defaultRegion: eu-west-2
customMetricsNamespaces: 'CWAgent,CustomNameSpace'
```
### Using `accessKey` and `secretKey`

View File

@@ -98,7 +98,7 @@ Data links create a link from a specified field that can be accessed in logs vie
Each data link configuration consists of:
- **Field -** Name of the field used by the data link.
- **URL/query -** If the link is external, then enter the full link URL. If the link is internal link, then this input serves as query for the target data source. In both cases, you can interpolate the value from the field with `${__value.raw }` macro.
- **Internal link -** Select if the link is internal or external. In case of internal link, a data source selectorallows you to select the target data source. Only tracing data sources are supported.
- **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.
## Metric Query editor

View File

@@ -17,92 +17,125 @@ Grafana has an advanced Graphite query editor that lets you quickly navigate the
change function parameters and much more. The editor can handle all types of graphite queries. It can even handle complex nested
queries through the use of query references.
## Adding the 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 organization admins can add data sources.
1. Open the side menu by clicking the Grafana icon in the top header.
2. In the side menu under the `Configuration` link you should find a link named `Data Sources`.
3. Click the `+ Add data source` button in the top header.
4. Select `Graphite` from the *Type* dropdown.
## Graphite 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 Graphite settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Graphite 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.
*Url* | The HTTP protocol, IP, and port of your graphite-web or graphite-api install.
*Access* | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser.
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.
URL | The HTTP protocol, IP, and port of your graphite-web or graphite-api install.
Access | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser.
Auth | Refer to [Authentication]({{< relref "../../auth/_index.md" >}}) for more information.
Basic Auth | Enable basic authentication to the data source.
User | User name for basic authentication.
Password | Password for basic authentication.
Custom HTTP Headers | Click **Add header** to add a custom HTTP header.
Header | Enter the custom header name.
Value | Enter the custom header value.
Graphite details |
Version | Select your version of Graphite.
Type | Select your type of Graphite.
Access mode controls how requests to the data source will be handled. Server should be the preferred way if nothing else stated.
Access mode controls how requests to the data source will be handled. Server should be the preferred way if nothing else is stated.
### Server access mode (Default)
### Server access mode (default)
All requests will be made from the browser to Grafana backend/server which in turn will forward the requests to the data source and by that circumvent possible Cross-Origin Resource Sharing (CORS) requirements. The URL needs to be accessible from the grafana backend/server if you select this access mode.
All requests will be made from the browser to Grafana backend/server which in turn will forward the requests to the data source and by that circumvent possible Cross-Origin Resource Sharing (CORS) requirements. The URL needs to be accessible from the Grafana backend/server if you select this access mode.
### Browser access mode
All requests will be made from the browser directly to the data source and may be subject to Cross-Origin Resource Sharing (CORS) requirements. The URL needs to be accessible from the browser if you select this access mode.
## Metric editor
## Graphite query editor
### Navigate metric segments
Grafana includes a Graphite-specific query editor to help you build your queries.
Click the ``Select metric`` link 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.
To see the raw text of the query that is sent to Graphite, click the **Toggle text edit mode** (pencil) icon.
{{< docs-imagebox img="/img/docs/v45/graphite_query1_still.png"
animated-gif="/img/docs/v45/graphite_query1.gif" >}}
### Choose metrics to query
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" >}}
### Functions
Click the plus icon to the right to add a function. You can search for the function or select it from the menu. Once
a function is selected it will be added and your focus will be in the text box of the first parameter. To later change
a parameter just click on it and it will turn into a text box. To delete a function click the function name followed
by the x icon.
Click the plus icon next to **Function** to add a function. You can search for the function or select it from the menu. Once
a function is selected, it will be added and your focus will be in the text box of the first parameter.
- 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/v45/graphite_query2_still.png"
animated-gif="/img/docs/v45/graphite_query2.gif" >}}
{{< docs-imagebox img="/img/docs/graphite/graphite-functions-still.png"
animated-gif="/img/docs/graphite/graphite-functions-demo.gif" >}}
### Optional parameters
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.
Some functions like aliasByNode support an optional second argument. To add this parameter specify for example 3,-2 as the first parameter and the function editor will adapt and move the -2 to a second parameter. To remove the second optional parameter just click on it and leave it blank and the editor will remove it.
### Sort labels
{{< docs-imagebox img="/img/docs/v45/graphite_query3_still.png"
animated-gif="/img/docs/v45/graphite_query3.gif" >}}
If you want consistent ordering, use sortByName. This can be particularly annoying when you have the same labels on multiple graphs, and they are both sorted differently and using different colors. To fix this, use `sortByName()`.
### Nested Queries
### Nested queries
You can reference queries by the row “letter” that theyre on (similar to Microsoft Excel). If you add a second query to a graph, you can reference the first query simply by typing in #A. This provides an easy and convenient way to build compounded queries.
{{< docs-imagebox img="/img/docs/v45/graphite_nested_queries_still.png"
animated-gif="/img/docs/v45/graphite_nested_queries.gif" >}}
### Avoiding many queries by using wildcards
Occasionally one would like to see multiple time series plotted on the same graph. For example we might want to see how the CPU is being utilized on a machine. You might
initially create the graph by adding a query for each time series, such as `cpu.percent.user.g`,
`cpu.percent.system.g`, and so on. This results in *n* queries made to the data source, which is inefficient.
To be more efficient one can use wildcards in your search, returning all the time series in one query. For example, `cpu.percent.*.g`.
### Modify the metric name in my tables or charts
Use `alias` functions to change metric names on Grafana tables or graphs For example `aliasByNode()` or `aliasSub()`.
## Point consolidation
All Graphite metrics are consolidated so that Graphite doesn't return more data points than there are pixels in the graph. By default,
this consolidation is done using `avg` function. You can control how Graphite consolidates metrics by adding the Graphite consolidateBy function.
> *Notice* This means that legend summary values (max, min, total) cannot be all correct at the same time. They are calculated
> client side by Grafana. And depending on your consolidation function only one or two can be correct at the same time.
> **Note:** This means that legend summary values (max, min, total) cannot all be correct at the same time. They are calculated
> client-side by Grafana. And depending on your consolidation function, only one or two can be correct at the same time.
## Templating
## Combine time series
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
To combine time series, click **Combine** in the **Functions** list.
## Data exploration and tags
In Graphite, _everything_ is a tag.
When exploring data, previously-selected tags are used to filter the remaining result set. To select data, you use the
`seriesByTag` function, which takes tag expressions (`=`, `!=`, `=~`, `!=~`) to filter timeseries.
The Grafana query builder does this for you automatically when you select a tag.
> **Tip:** The regular expression search can be quite slow on high-cardinality tags, so try to use other tags to reduce the scope first.
Starting off with a particular name/namespace can help reduce the results.
## Template variables
Instead of hard-coding things like server, application, and sensor name in your metric queries, you can use variables in their place.
Variables are shown as drop-down select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../variables/templates-and-variables.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
For more information, refer to [Variables and templates]({{< relref "../../variables/templates-and-variables.md" >}}).
Graphite 1.1 introduced tags and Grafana added support for Graphite queries with tags in version 5.0. To create a variable using tag values, then you need to use the Grafana functions `tags` and `tag_values`.
Graphite 1.1 introduced tags and Grafana added support for Graphite queries with tags in version 5.0. To create a variable using tag values, use the Grafana functions `tags` and `tag_values`.
Query | Description
------------ | -------------
*tags()* | Returns all tags.
*tags(server=~backend\*)* | Returns only tags that occur in series matching the filter expression.
*tag_values(server)* | Return tag values for the specified tag.
*tag_values(server, server=~backend\*)* | Returns filtered tag values that occur for the specified tag in series matching those expressions.
*tag_values(server, server=~backend\*, app=~${apps:regex})* | Multiple filter expressions and expressions can contain other variables.
tags() | Returns all tags.
tags(server=~backend\*) | Returns only tags that occur in series matching the filter expression.
tag_values(server) | Return tag values for the specified tag.
tag_values(server, server=~backend\*) | Returns filtered tag values that occur for the specified tag in series matching those expressions.
tag_values(server, server=~backend\*, app=~${apps:regex}) | Multiple filter expressions and expressions can contain other variables.
For more details, see the [Graphite docs on the autocomplete API for tags](http://graphite.readthedocs.io/en/latest/tags.html#auto-complete-support).
@@ -114,7 +147,7 @@ variable with all possible values that exist in the wildcard position.
You can also create nested variables that use other variables in their definition. For example
`apps.$app.servers.*` uses the variable `$app` in its query definition.
#### Using `__searchFilter` to filter results in Query Variable
#### Using `__searchFilter` to filter query variable results
> Available from Grafana 6.5 and above
Using `__searchFilter` in the query field will filter the query result based on what the user types in the dropdown select box.
@@ -132,7 +165,7 @@ TagValues
tag_values(server, server=~${__searchFilter:regex})
```
### Variable Usage
### 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)
@@ -140,15 +173,15 @@ You can use a variable in a metric node path or as a parameter to a function.
There are two syntaxes:
- `$<varname>` Example: apps.frontend.$server.requests.count
- `[[varname]]` Example: apps.frontend.[[server]].requests.count
- `${varname}` Example: apps.frontend.${server}.requests.count
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. Use
the second syntax in expressions like `my.server[[serverNumber]].count`.
the second syntax in expressions like `my.server${serverNumber}.count`.
Example:
[Graphite Templated Dashboard](https://play.grafana.org/dashboard/db/graphite-templated-nested)
### Variable Usage in Tag Queries
### Variable usage in tag queries
Multi-value variables in tag queries use the advanced formatting syntax introduced in Grafana 5.0 for variables: `{var:regex}`. Non-tag queries will use the default glob formatting for multi-value variables.
@@ -158,7 +191,7 @@ Example of a tag expression with regex formatting and using the Equal Tilde oper
server=~${servers:regex}
```
Check out the [Advanced Formatting Options section in the Variables]({{< relref "../../variables/templates-and-variables.md#advanced-formatting-options" >}}) documentation for examples and details.
For more information, refer to [Advanced variable format options]({{< relref "../../variables/advanced-variable-format-options.md" >}}).
## Annotations
@@ -168,7 +201,7 @@ queries via the Dashboard menu / Annotations view.
Graphite supports two ways to query annotations. A regular metric query, for this you use the `Graphite query` textbox. A Graphite events query, use the `Graphite event tags` textbox,
specify a tag or wildcard (leave empty should also work)
## Getting Grafana metrics into Graphite
## Get Grafana metrics into Graphite
Grafana exposes metrics for Graphite on the `/metrics` endpoint. For detailed instructions, refer to [Internal Grafana metrics]({{< relref "../../administration/metrics.md">}}).

View File

@@ -1,7 +1,7 @@
+++
title = "Using InfluxDB in Grafana"
description = "Guide for using InfluxDB in Grafana"
keywords = ["grafana", "influxdb", "guide"]
keywords = ["grafana", "influxdb", "guide", "flux"]
type = "docs"
aliases = ["/docs/grafana/latest/datasources/influxdb"]
[menu.docs]
@@ -20,14 +20,18 @@ Grafana ships with a feature-rich data source plugin for InfluxDB. The plugin in
2. In the side menu under the `Dashboards` link you should find a link named `Data Sources`.
3. Click the `+ Add data source` button in the top header.
4. Select *InfluxDB* from the *Type* dropdown.
5. Select *InfluxQL* or *Flux* from the `Query Language` list.
> 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.
> **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.
### InfluxQL (classic InfluxDB query)
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.
*Url* | The HTTP protocol, IP address and port of your InfluxDB API (InfluxDB API port is by default 8086)
*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.
*Database* | Name of your InfluxDB database
*User* | Name of your database user
@@ -93,7 +97,7 @@ 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.
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`.
@@ -117,6 +121,61 @@ You can switch to raw query mode by clicking hamburger icon and then `Switch edi
You can remove the group by time by clicking on the `time` part and then the `x` icon. You can
change the option `Format As` to `Table` if you want to show raw data in the `Table` panel.
## Flux support
> Starting in v7.1, Grafana can execute Flux queries.
The client 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
------------ | -------------
*URL* | The HTTP protocol, IP address and port of your InfluxDB API (InfluxDB 2.0 API port is by default 9999)
*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* | The [Influx bucket](https://v2.docs.influxdata.com/v2.0/organizations/buckets/) that will be used for the `v.defaultBucket` macro in Flux queries
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.timeRangeEnd`* | 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.
## Querying Logs (BETA)
> Only available in Grafana v6.3+.
@@ -219,11 +278,12 @@ You can now configure data sources using config files with Grafana's provisionin
Here are some provisioning examples for this data source.
### InfluxDB 1.x example
```yaml
apiVersion: 1
datasources:
- name: InfluxDB
- name: InfluxDB_v1
type: influxdb
access: proxy
database: site
@@ -233,3 +293,21 @@ datasources:
jsonData:
httpMode: GET
```
### InfluxDB 2.x example
```yaml
apiVersion: 1
datasources:
- name: InfluxDB_v2
type: influxdb
access: proxy
url: http://localhost:8086
secureJsonData:
token: token
jsonData:
version: Flux
organization: organization
defaultBucket: bucket
tlsSkipVerify: true
```

View File

@@ -38,18 +38,19 @@ Just add it as a data source and you are ready to query your log data in [Explor
### Derived fields
The Derived Fields configuration allows you to:
The Derived Fields configuration allows you to:
* Add fields parsed from the log message.
* Add a link that uses the value of the field.
* Add fields parsed from the log message.
* 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](/features/explore/#labels-and-parsed-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.
- **Regex:** A Regex pattern that runs on the log message and captures part of it as the value of the new field. Can only contain a single capture group.
- **URL**: A URL template used to construct a link next to the field value in log details. Use special `${__value.raw}` value in your template to interpolate the real field value into your URL template.
- **Name -** Shown in the log details as a label.
- **Regex -** A Regex pattern that runs on the log message and captures part of it as the value of the new field. Can only contain a single capture group.
- **URL/query -** If the link is external, then enter the full link URL. If the link is internal link, then this input serves as query for the target data source. In both cases, you can interpolate the value from the field with `${__value.raw }` macro.
- **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" >}}
@@ -59,7 +60,7 @@ The new field with the link shown in log details:
## Querying Logs
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 log query to display your logs.
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.
### Log Queries
@@ -123,7 +124,7 @@ The following filter types are currently supported:
* `|~` line matches regular expression.
* `!~` line does not match regular expression.
> Note: For more details about LogQL, Loki's query language, refer to the [documentation](https://github.com/grafana/loki/blob/master/docs/logql.md)
> Note: For more details about LogQL, Loki's query language, refer to the [documentation](https://grafana.com/docs/loki/latest/logql/)
## Live tailing
@@ -193,6 +194,7 @@ datasources:
derivedFields:
# Field with internal link pointing to data source in Grafana.
# Right now, Grafana supports only Jaeger and Zipkin data sources as link targets.
# datasourceUid value can be anything, but it should be unique across all defined data source uids.
- datasourceUid: my_jaeger_uid
matcherRegex: "traceID=(\\w+)"
name: TraceID

View File

@@ -149,7 +149,7 @@ SELECT
1.11, 2.22, 3.33,
'char10', 'varchar10', 'text',
N'☺nchar12☺', N'☺nvarchar12☺', N'☺text☺',
GETDATE(), CAST(GETDATE() AS DATETIME2), CAST(GETDATE() AS SMALLDATETIME), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), SWITCHOFFSET(CAST(GETDATE() AS DATETIMEOFFSET), '-07:00'))
GETDATE(), CAST(GETDATE() AS DATETIME2), CAST(GETDATE() AS SMALLDATETIME), CAST(GETDATE() AS DATE), CAST(GETDATE() AS TIME), SWITCHOFFSET(CAST(GETDATE() AS DATETIMEOFFSET), '-07:00')
```
Query editor with example query:

View File

@@ -26,7 +26,7 @@ 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 PostgreSQL instance.
*Host* | The IP address/hostname and optional port of your PostgreSQL instance. _Do not_ include the database name. The connection string for connecting to Postgres will not be correct and will cause errors.
*Database* | Name of your PostgreSQL database.
*User* | Database user's login/username
*Password* | Database user's password
@@ -55,7 +55,7 @@ Identifier | Description
`s` | second
`ms` | millisecond
### Database User Permissions (Important!)
### Database user permissions (Important!)
The database user you specify when you add the data source should only be granted SELECT permissions on
the specified database and tables you want to query. Grafana does not validate that the query is safe. The query
@@ -72,9 +72,7 @@ Example:
Make sure the user does not get any unwanted privileges from the public role.
## Query Editor
> Only available in Grafana v5.3+.
## 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" >}}
@@ -97,7 +95,7 @@ If you want to use a column with a different datatype as metric column you may e
You may also enter arbitrary SQL expressions in the metric column field that evaluate to a text datatype like
`hostname || ' ' || container_name`.
### Columns, Window and Aggregation functions (SELECT)
### Columns, window, and aggregation functions (SELECT)
In the `SELECT` row you can specify what columns and functions you want to use.
In the column field you may write arbitrary expressions instead of a column name like `column1 * column2 / column3`.
@@ -120,17 +118,17 @@ You may add further value columns by clicking the plus button and selecting `Col
To add a filter click the plus icon to the right of the `WHERE` condition. You can remove filters by clicking on
the filter and selecting `Remove`. A filter for the current selected timerange is automatically added to new queries.
### Group By
### Group by
To group by time or any other columns click the plus icon at the end of the GROUP BY row. The suggestion dropdown will only show text columns of your currently selected table but you may manually enter any column.
You can remove the group by clicking on the item and then selecting `Remove`.
If you add any grouping, all selected columns need to have an aggregate function applied. The query builder will automatically add aggregate functions to all columns without aggregate functions when you add groupings.
#### Gap Filling
#### Gap filling
Grafana can fill in missing values when you group by time. The time function accepts two arguments. The first argument is the time window that you would like to group by, and the second argument is the value you want Grafana to fill missing items with.
### Text Editor Mode (RAW)
### Text editor mode (RAW)
You can switch to the raw query editor mode by clicking the hamburger icon and selecting `Switch editor mode` or by clicking `Edit SQL` below the query.
> If you use the raw query editor, be sure your query at minimum has `ORDER BY time` and a filter on the returned time range.
@@ -242,9 +240,9 @@ ORDER BY time
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place. Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data being displayed in your dashboard.
Check out the [Templating]({{< relref "../../variables/templates-and-variables.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
Refer to [Templates and variables]({{< relref "../../variables/templates-and-variables.md" >}}) for an introduction to the templating feature and the different types of template variables.
### Query Variable
### Query variable
If you add a template variable of the type `Query`, you can write a PostgreSQL query that can
return things like measurement names, key names or key values that are shown as a dropdown select box.
@@ -327,7 +325,7 @@ WHERE $__timeFilter(atimestamp) and hostname in([[hostname]])
ORDER BY atimestamp ASC
```
#### Disabling Quoting for Multi-value Variables
#### Disabling quoting for multi-value variables
Grafana automatically creates a quoted, comma-separated string for multi-value variables. For example: if `server01` and `server02` are selected then it will be formatted as: `'server01', 'server02'`. To disable quoting, use the csv formatting option for variables:
@@ -418,3 +416,7 @@ datasources:
postgresVersion: 903 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
timescaledb: false
```
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.
- Make sure the `database` name is not included in the `url`.

View File

@@ -12,11 +12,11 @@ weight = 1
# Prometheus data source
Grafana includes built-in support for Prometheus. This topic explains options, variables, querying, and other options specific to the Prometheus 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.
Grafana includes built-in support for Prometheus. This topic explains options, variables, querying, and other options specific to the Prometheus 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.
## Prometheus settings
To access Prometheus settings, click the **Configuration** (gear) icon, then click **Data Sources**, and then click **Prometheus**.
To access Prometheus settings, hover your mouse over the **Configuration** (gear) icon, then click **Data Sources**, and then click the Prometheus data source.
| Name | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
@@ -28,6 +28,7 @@ To access Prometheus settings, click the **Configuration** (gear) icon, then cli
| _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. |
| _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;'. |
## Prometheus query editor
@@ -41,7 +42,7 @@ Open a graph in edit mode by clicking the title > Edit (or by pressing `e` key w
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| _Query expression_ | Prometheus query expression, check out the [Prometheus documentation](http://prometheus.io/docs/querying/basics/). |
| _Legend format_ | Controls the name of the time series, using name or pattern. For example `{{hostname}}` is replaced with the label value for the label `hostname`. |
| _Min step_ | An additional lower limit for the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) and for the `$__interval` variable. The limit is absolute and not modified by the _Resolution_ setting. |
| _Min step_ | An additional lower limit for the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) and for the `$__interval` and `$__rate_interval` variables. The limit is absolute and not modified by the _Resolution_ setting. |
| _Resolution_ | `1/1` sets both the `$__interval` variable and the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) such that each pixel corresponds to one data point. For better performance, lower resolutions can be picked. `1/2` only retrieves a data point for every other pixel, and `1/10` retrieves one data point per 10 pixels. Note that both _Min time interval_ and _Min step_ limit the final value of `$__interval` and `step`. |
| _Metric lookup_ | Search for metric names in this input field. |
| _Format as_ | Switch between `Table`, `Time series` or `Heatmap`. `Table` will only work in the Table panel. `Heatmap` is suitable for displaying metrics of the Histogram type on a Heatmap panel. Under the hood, it converts cumulative histograms to regular ones and sorts series by the bucket bound. |
@@ -89,7 +90,7 @@ For details of what _metric names_, _label names_ and _label values_ are please
> Support for `$__range`, `$__range_s` and `$__range_ms` only available from Grafana v5.3
You can use some global built-in variables in query variables; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` and `$__range_ms`, see [Global built-in variables]({{< relref "../../variables/global-variables.md" >}}) for more information. These can be convenient to use in conjunction with the `query_result` function when you need to filter variable queries since
You can use some global built-in variables in query variables; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` and `$__range_ms`, see [Global built-in variables]({{< relref "../../variables/variable-types/global-variables.md" >}}) for more information. These can be convenient to use in conjunction with the `query_result` function when you need to filter variable queries since
`label_values` function doesn't support queries.
@@ -110,6 +111,11 @@ Populate a variable with the instances having a certain state over the time rang
Query: query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
Regex:
```
### Using `$__rate_interval` variable
> **Note:** Available in Grafana 7.2 and above
The `$__rate_interval` variable is meant to be used in the rate function. It is defined as max( `$__interval` + _Scrape interval_, 4 * _Scrape interval_), where _Scrape interval_ is the Min step setting (AKA query_interval, a setting per PromQL query), if any is set, and otherwise the _Scrape interval_ as set in the Prometheus data source (but ignoring any Min interval setting in the panel, because the latter is modified by the resolution setting).
### Using variables in queries

View File

@@ -49,4 +49,4 @@ Zipkin annotations are shown in the trace view as logs with annotation value sho
## Linking Trace ID from logs
You can link to Zipkin trace from logs in Loki by configuring a derived field with internal link. See [Loki documentation]([Explore]({{< relref "./loki#derived-fields" >}})) for details.
You can link to Zipkin trace from logs in Loki by configuring a derived field with internal link. See [Loki documentation]({{< relref "./loki#derived-fields" >}}) for details.

View File

@@ -31,11 +31,11 @@ There is an Explore icon on the menu bar to the left. This opens an empty Explor
{{< docs-imagebox img="/img/docs/v65/explore_menu.png" class="docs-image--no-shadow" caption="Screenshot of the new Explore Icon" >}}
If you want to start with an existing query in a panel then choose the Explore option from the Panel menu. This opens an Explore tab with the query from the panel and allows you to tweak or iterate in the query outside of your dashboard.
If you want to start with an existing query in a panel, choose the Explore option from the Panel menu. This opens an Explore tab with the query from the panel and allows you to tweak or iterate in the query outside of your dashboard.
{{< docs-imagebox img="/img/docs/v65/explore_panel_menu.png" class="docs-image--no-shadow" caption="Screenshot of the new Explore option in the panel menu" >}}
Choose your data source from the dropdown in the top left. Prometheus has a custom Explore implementation, the other data sources (for now) use their standard query editor.
Choose your data source from the dropdown in the top left. Prometheus has a custom Explore implementation, the other data sources use their standard query editor.
The query field is where you can write your query and explore your data. There are three buttons beside the query field, a clear button (X), an add query button (+) and the remove query button (-). Just like the normal query editor, you can add and remove multiple queries.
@@ -84,7 +84,7 @@ By default, query history shows you the most recent queries. You can sort your h
Filter query history in Query history and Starred tab by data source name:
1. Click the **Filter queries for specific data source(s)** field
1. Click the **Filter queries for specific data source(s)** field.
2. Select the data source for which you would like to filter your history. You can select multiple data sources.
In **Query history** tab it is also possible to filter queries by date using the slider:
@@ -95,6 +95,13 @@ In **Query history** tab it is also possible to filter queries by date using the
> Note: If you are in split mode, filters are applied only to your currently active panel.
### Search in query history
You can search in your history across queries and your comments. Search is possible for queries in the Query history tab and Starred tab.
1. Click the **Search queries** field.
1. Type the term you are searching for into search field.
### Query history settings
You can customize the query history in the Settings tab. Options are described in the table below.
@@ -103,7 +110,7 @@ You can customize the query history in the Settings tab. Options are described i
| ------------------------------------------------------------- | --------------------------------------- |
| Period of time for which Grafana will save your query history | 1 week |
| Change the default active tab | Query history tab |
| Only show queries for datasource currently active in Explore | False |
| Only show queries for data source currently active in Explore | True |
| Clear query history | Permanently deletes all stored queries. |
> Note: Query history settings are global, and applied to both panels in split mode.
@@ -146,14 +153,6 @@ Along with metrics, Explore allows you to investigate your logs with the followi
You can customize how logs are displayed and select which columns are shown.
#### Deduping
Log data can be very repetitive and Explore can help by hiding duplicate log lines. There are a few different deduplication algorithms that you can use:
- `exact` Exact matches are done on the whole line, except for date fields.
- `numbers` Matches on the line after stripping out numbers (durations, IP addresses etc.).
- `signature` The most aggressive deduping - strips all letters and numbers, and matches on the remaining whitespace and punctuation.
#### Time
Shows or hides the time column. This is the timestamp associated with the log line as reported from the data source.
@@ -166,6 +165,18 @@ Shows or hides the unique labels column that includes only non-common labels. Al
Set this to True if you want the display to use line wrapping. If set to False, it will result in horizontal scrolling.
#### Deduping
Log data can be very repetitive and Explore can help by hiding duplicate log lines. There are a few different deduplication algorithms that you can use:
- **Exact -** Exact matches are done on the whole line except for date fields.
- **Numbers -** Matches on the line after stripping out numbers such as durations, IP addresses, and so on.
- **Signature -** The most aggressive deduping, this strips all letters and numbers and matches on the remaining whitespace and punctuation.
#### Flip results order
You can change the order of received logs from the default descending order (newest first) to ascending order (oldest first).
### Labels and parsed fields
Each log row has an extendable area with its labels and parsed fields, for more robust interaction. For all labels we have added the ability to filter for (positive filter) and filter out (negative filter) selected labels. Each field or label also has a stats icon to display ad-hoc statistics in relation to all displayed logs.
@@ -199,6 +210,7 @@ While in Live tail view new logs will come from the bottom of the screen and wil
{{< docs-imagebox img="/img/docs/v64/explore_live_tailing.gif" class="docs-image--no-shadow" caption="Explore Live tailing in action" >}}
## Tracing integration
> Only available in Grafana v7.0+.
You can visualize traces from tracing data sources in explore. Data sources currently supported:
@@ -229,12 +241,13 @@ Shows condensed view or the trace timeline. Drag your mouse over the minimap to
{{< docs-imagebox img="/img/docs/v70/explore-trace-view-timeline.png" class="docs-image--no-shadow" caption="Screenshot of the trace view timeline" >}}
Shows list of spans within the trace. Each span row consists of these components:
- Expand children button: Expands or collapses all the children spans of selected span.
- Service name: Name of the service logged the span.
- Operation name: Name of the operation that this span represents.
- Span duration bar: Visual representation of the operation duration within the trace.
Clicking anywhere on the span row will show span details.
Clicking anywhere on the span row shows span details.
##### Span details
@@ -261,3 +274,11 @@ Simply clicking the button will return you to the origin dashboard, or, if you'd
the arrow next to the button to reveal a "Return to panel with changes" menu item.
{{< docs-imagebox img="/img/docs/v64/explore_return_dropdown.png" class="docs-image--no-shadow" caption="Screenshot of the expanded explore return dropdown" >}}
## Query inspector
To help with debugging queries, Explore allows you to investigate query requests and responses, as well as query statistics, via the Query inspector.
This functionality is similar to the panel inspector [Stats tab]({{< relref "../../panels/inspect-panel.md#inspect-query-performance" >}}) and
[Query tab]({{< relref "../../panels/inspect-panel.md##view-raw-request-and-response-to-data-source" >}}).
{{< docs-imagebox img="/img/docs/v71/query_inspector_explore.png" class="docs-image--no-shadow" caption="Screenshot of the query inspector button in Explore" >}}

View File

@@ -9,4 +9,4 @@ weight = 100
# Getting started
These guides will help you get started and acquainted with Grafana. To learn more about Grafana in general, refer to [What is Grafana?]({{< relref "what-is-grafana.md" >}}).
These guides will help beginners get started and acquainted with Grafana. To learn more about Grafana in general, refer to [What is Grafana?]({{< relref "what-is-grafana.md" >}}).

View File

@@ -0,0 +1,90 @@
+++
title = "Time series dimensions"
description = "time series dimensions"
keywords = ["grafana", "intro", "guide", "concepts", "timeseries", "labels"]
type = "docs"
aliases = ["/docs/grafana/latest/guides/timeseries-dimensions"]
[menu.docs]
name = "Time series dimensions"
identifier = "time_series_dimensions"
parent = "guides"
weight = 300
+++
# Time series dimensions
At the end of the ["Time series databases" section of "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.
{{< docs-imagebox img="/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 for SQL data sources is currently only supported in the Analytics services with the Azure monitor service as of version 7.1. Support for SQL data sources such as MySQL, Postgres, and MSSQL is planned to be added for 7.2.
**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, without 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

@@ -3,8 +3,8 @@ title = "Time series"
description = "Introduction to time series"
keywords = ["grafana", "intro", "guide", "concepts", "timeseries"]
type = "docs"
[menu.docs]
aliases = ["/docs/grafana/latest/guides/timeseries"]
[menu.docs]
name = "Time series"
identifier = "time_series"
parent = "guides"

View File

@@ -51,7 +51,7 @@ The Prometheus data source now support transforming Prometheus histograms to the
really happy to finally allow our users to render those as heatmaps. Please read [Heatmap panel documentation](/features/panels/heatmap/#pre-bucketed-data)
for more information on how to use it.
Prometheus query editor also got support for autocomplete of template variables. More information in the [Prometheus data source documentation](/features/datasources/prometheus/).
Prometheus query editor also got support for autocomplete of template variables. More information in the [Prometheus data source documentation]({{< relref "../features/datasources/prometheus/" >}}).
<div class="clearfix"></div>
@@ -63,7 +63,7 @@ Grafana v5.1 now ships with a built-in Microsoft SQL Server (MSSQL) data source
Microsoft SQL Server 2005 or newer, including Microsoft Azure SQL Database. Do you have metric or log data in MSSQL? You can now visualize
that data and define alert rules on it like with any of Grafana's other core data sources.
Please read [Using Microsoft SQL Server in Grafana documentation](/features/datasources/mssql/) for more detailed information on how to get started and use it.
Please read [Using Microsoft SQL Server in Grafana documentation]({{< relref "../features/datasources/mssql/" >}}) for more detailed information on how to get started and use it.
<div class="clearfix"></div>

View File

@@ -39,7 +39,7 @@ The Grafana Stackdriver plugin comes with support for automatic unit detection.
The data source is still in the `beta` phase, meaning it's currently in active development and is still missing one important feature - templating queries.
Please try it out, but be aware of that it might be subject to changes and possible bugs. We would love to hear your feedback.
Please read [Using Google Stackdriver in Grafana](/features/datasources/stackdriver/) for more detailed information on how to get started and use it.
Please read [Using Google Stackdriver in Grafana]({{< relref "../features/datasources/cloudmonitoring/" >}}) for more detailed information on how to get started and use it.
## TV and Kiosk Mode
@@ -65,7 +65,7 @@ Learn how to enable and configure reminders [here](/alerting/notifications/#send
## Postgres Query Builder
Grafana 5.3 comes with a new graphical query builder for Postgres. This brings Postgres integration more in line with some of the other data sources and makes it easier for both advanced users and beginners to work with timeseries in Postgres. Learn more about it in the [documentation](/features/datasources/postgres/#query-editor).
Grafana 5.3 comes with a new graphical query builder for Postgres. This brings Postgres integration more in line with some of the other data sources and makes it easier for both advanced users and beginners to work with timeseries in Postgres. Learn more about it in the [documentation]({{< relref "../features/datasources/postgres/#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" >}}

View File

@@ -47,15 +47,15 @@ Stackdriver is the first data source which has support for a custom templating q
create their very own templating query editor.
Additionally, if Grafana is running on a Google Compute Engine (GCE) virtual machine, it is now possible for Grafana to automatically retrieve default credentials from the metadata server.
This has the advantage of not needing to generate a private key file for the service account and also not having to upload the file to Grafana. [Learn more](/features/datasources/stackdriver/#using-gce-default-service-account).
This has the advantage of not needing to generate a private key file for the service account and also not having to upload the file to Grafana. [Learn more]({{< relref "../features/datasources/cloudmonitoring/#using-gce-default-service-account" >}}).
Please read [Using Google Stackdriver in Grafana](/features/datasources/stackdriver/) for more detailed information on how to get started and use it.
Please read [Using Google Stackdriver in Grafana]({{< relref "../features/datasources/cloudmonitoring/" >}}) for more detailed information on how to get started and use it.
<div class="clearfix"></div>
## MySQL Query Builder
Grafana v5.4 comes with a new graphical query builder for MySQL. This brings MySQL integration more in line with some of the other data sources and makes it easier for both advanced users and beginners to work with timeseries in MySQL. Learn more about it in the [documentation](/features/datasources/mysql/#query-editor).
Grafana v5.4 comes with a new graphical query builder for MySQL. This brings MySQL integration more in line with some of the other data sources and makes it easier for both advanced users and beginners to work with timeseries in MySQL. Learn more about it in the [documentation]({{< relref "../features/datasources/mysql/#query-editor" >}}).
{{< docs-imagebox img="/img/docs/v54/mysql_query_still.png" animated-gif="/img/docs/v54/mysql_query.gif" >}}

View File

@@ -135,7 +135,7 @@ We are introducing a new unique identifier (`uid`) in the dashboard JSON model.
generated if not provided when creating a dashboard and will have a length of 9-12 characters.
The unique identifier allows having persistent URLs for accessing dashboards, sharing them
between instances and when using [dashboard provisioning](#dashboards). This means that dashboard can
between instances and when using [dashboard provisioning]((/administration/provisioning/#reusable-dashboard-urls)). This means that dashboard can
be renamed without breaking any links. We're changing the URL format for dashboards
from `/dashboard/db/:slug` to `/d/:uid/:slug`. We'll keep supporting the old slug-based URLs for dashboards
and redirects to the new one for backward compatibility. Please note that the old slug-based URLs

View File

@@ -21,8 +21,8 @@ The main highlights are:
- [Gauge Panel]({{< relref "#gauge-panel" >}}) - A new standalone panel for gauges.
- [New Panel Editor UX]({{< relref "#new-panel-editor" >}}) improves panel editing
and enables easy switching between different visualizations.
- [Google Stackdriver data source]({{< relref "#google-stackdriver-datasource" >}}) is out of beta and is officially released.
- [Azure Monitor]({{< relref "#azure-monitor-datasource" >}}) plugin is ported from being an external plugin to being a core data source
- [Google Stackdriver data source]({{< relref "#google-stackdriver-data-source" >}}) is out of beta and is officially released.
- [Azure Monitor]({{< relref "#azure-monitor-data-source" >}}) plugin is ported from being an external plugin to being a core data source
- [React Plugin]({{< relref "#react-panels-query-editors" >}}) support enables an easier way to build plugins.
- [Named Colors]({{< relref "#named-colors" >}}) in our new improved color picker.
- [Removal of user session storage]({{< relref "#easier-to-deploy-improved-security" >}}) makes Grafana easier to deploy and improves security.
@@ -116,7 +116,7 @@ will be shared soon.
Built-in support for [Google Stackdriver](https://cloud.google.com/stackdriver/) is officially released in Grafana 6.0. Beta support was added in Grafana 5.3 and we have added lots of improvements since then.
To get started read the guide: [Using Google Stackdriver in Grafana](/features/datasources/stackdriver/).
To get started read the guide: [Using Google Stackdriver in Grafana]({{< relref "../features/datasources/cloudmonitoring/" >}}).
## Azure Monitor data source
@@ -124,7 +124,7 @@ One of the goals of the Grafana v6.0 release is to add support for the three maj
The Azure Monitor data source integrates four Azure services with Grafana - Azure Monitor, Azure Log Analytics, Azure Application Insights and Azure Application Insights Analytics.
Please read [Using Azure Monitor in Grafana documentation](/features/datasources/azuremonitor/) for more detailed information on how to get started and use it.
Please read [Using Azure Monitor in Grafana documentation]({{< relref "../features/datasources/azuremonitor/" >}}) for more detailed information on how to get started and use it.
## Provisioning support for alert notifiers

View File

@@ -37,7 +37,7 @@ To mitigate the risk of sensitive information being cached in browser after a us
## Official support for Elasticsearch 7
Grafana v6.2 ships with official support for Elasticsearch v7, see [Using Elasticsearch in Grafana](/features/datasources/elasticsearch/#elasticsearch-version) for more information.
Grafana v6.2 ships with official support for Elasticsearch v7, see [Using Elasticsearch in Grafana]({{< relref "../features/datasources/elasticsearch/#elasticsearch-version" >}}) for more information.
## Bar Gauge Panel

View File

@@ -50,7 +50,7 @@ simplified query interface specifically designed for logs search.
{{< docs-imagebox img="/img/docs/v63/elasticsearch_explore_logs.png" max-width="600px" caption="New Time Picker" >}}
Please read [Using Elasticsearch in Grafana](/features/datasources/elasticsearch/#querying-logs-beta) for more detailed information on how to get started and use it.
Please read [Using Elasticsearch in Grafana]({{< relref "../features/datasources/elasticsearch/#elasticsearch-version" >}}) for more detailed information on how to get started and use it.
### InfluxDB logs support
@@ -59,7 +59,7 @@ simplified query interface specifically designed for logs search.
{{< docs-imagebox img="/img/docs/v63/influxdb_explore_logs.png" max-width="600px" caption="New Time Picker" >}}
Please read [Using InfluxDB in Grafana](/features/datasources/influxdb/#querying-logs-beta) for more detailed information on how to get started and use it.
Please read [Using InfluxDB in Grafana]({{< relref "../features/datasources/influxdb/#querying-logs-beta" >}}) for more detailed information on how to get started and use it.
## Data Links

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