Compare commits

..

1499 Commits

Author SHA1 Message Date
Sofia Papagiannaki
3fa63cfc34 Fix linting issues 2020-02-20 14:03:49 +02:00
Arve Knudsen
f416c57743 Docker: Downgrade to 18.04 LTS (#22313)
Downgrade Ubuntu Docker images to 18.04 LTS since 18.10 has reached EOL.
2020-02-20 14:03:49 +02:00
Carl Bergquist
4127f8374c Metrics: Add gauge for requests currently in flight (#22168)
Add gauge for requests currently in flight.

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit b0b46991ec)
2020-02-20 14:03:49 +02:00
Arve Knudsen
7163726493 OAuth: Enforce auto_assign_org_id setting when role mapping enabled using Generic OAuth (#22268)
* OAuth: Make use of auto_assign_org_id setting

(cherry picked from commit 8d1bef3769)
2020-02-20 14:03:49 +02:00
Dominik Prokop
daa8035c48 Circle: Introduce es-check to branches & pr workflow (#21677)
* Transpile selected es6 node deps

* Add es-check to build-fast-frontend

* change es-check is used

* transpile react-hook-form

(cherry picked from commit 814020c05c)
2020-02-20 14:03:49 +02:00
Andrej Ocenas
448cf2a74d Elastic: Replace range as number not string (#22173)
(cherry picked from commit 9c55500cc0)
2020-02-20 14:03:49 +02:00
Sofia Papagiannaki
b7f77459c4 release 6.6.2 2020-02-20 14:03:49 +02:00
Dominik Prokop
4d02406d6d Make Explore panel link work when grafana served from sub url (#22202)
* Make explore url work when grafana served from sub url

* Update public/app/core/utils/explore.ts

(cherry picked from commit fa34a7692e)
2020-02-20 14:03:49 +02:00
Marcus Efraimsson
b2034d693d API: Improve recovery middleware when response already been written (#22256)
Suppresses stacktrace in recovery middleware if error is
http.ErrAbortHandler.
Skips writing response error in recovery middleware if
resoonse have already been written.
Skips try rotate of auth token if response have already
been written.
Skips adding default response headers if response have
already been written.

Fixes #15728
Ref #18082

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit fd52570b7f)
2020-02-20 14:03:49 +02:00
Adrian Coveney
95e304b277 Reorder cipher suites for better security (#22101)
Put the cipher suites with Forward Secrecy at or nearer the top, keeping any TLS v1.3 suites at the top, following best practice guides for the ordering of the rest. There is no change to the selection of suites only reordering.

(cherry picked from commit 39e0ce305b)
2020-02-20 14:03:49 +02:00
Carl Bergquist
1fb7155a58 Data proxy: Log proxy errors using Grafana logger (#22174)
Now any errors logged by http.ReverseProxy are forwarded to 
Grafana's logger and includes more contextual information like
level (error), user id, org id, username, proxy path, referer and 
IP address.

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
(cherry picked from commit ff9556229a)
2020-02-20 14:03:49 +02:00
Marcus Andersson
7656e72df9 TimePicker: fixing weird behavior with calendar when switching between months/years (#22253)
* fixed issues with timepicker closing when month is changed.

* removed console.logs.

* fixed so calendar isn't changing size when selecting several dates.

* Prevent calendar from closing when changing year.

* fixed according to PR feedback.

(cherry picked from commit 08bf2a5452)
2020-02-20 14:03:49 +02:00
Carl Bergquist
61ac3085de Auth: Don't rotate auth token when requests are cancelled by client (#22106)
if the client closes the connection we should not
rotate token since the client will never receive the
new token.

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit fe16028e02)
2020-02-20 14:03:49 +02:00
Andrej Ocenas
d016a08303 Elastic: Map level field based on config. (#22182)
* Map level field based on config.

* Fix type

(cherry picked from commit 934d93ad94)
2020-02-20 14:03:49 +02:00
Brian Gann
d2ab56961f API: Fix redirect issue when configured to use a subpath (#21652)
* request uri will contain the subpath

(cherry picked from commit 0e2d874ecf)
2020-02-20 14:03:49 +02:00
kay delaney
c0cfcc2b32 Datasource/Loki: Fixes issue where live tailing displayed date as invalid (#22128)
Closes #21929

(cherry picked from commit 003fb4a3d0)
2020-02-20 14:03:49 +02:00
Ivana Huckova
90e7909cef Loki, Prometheus: Fix PromQL and LogQL syntax highlighting (#21944)
* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField

* Loki, Prometheus: Fix syntax to not highlight # in quotes as a comment in queryField

* Fix regex

* PromQL, LogQL: Update syntax

* LogQL, PromQL highlighting: Add tests

(cherry picked from commit 1448767c08)
2020-02-20 14:03:49 +02:00
Dominik Prokop
23f4477cfd Links: Assure base url when single stat, panel and data links are built (#21956)
* Assure base url when single stat, panel and data links are built

* Update public/app/features/dashboard/dashgrid/PanelHeader/PanelHeaderCorner.tsx

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

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

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

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

* Review updates

* Remove unnecessary code

(cherry picked from commit dd37d003ef)
2020-02-20 14:03:49 +02:00
Marcus Efraimsson
5f42c258a5 Chore: Resolve random failure with golangci-lint (#21970)
(cherry picked from commit 285ebd3413)
2020-02-20 14:03:49 +02:00
Lukas Siatka
5f786b0824 Datasource: updates PromExploreQueryEditor to prevent it from throwing error on edit (#21605)
* Datasource: updates PromExploreQueryEditor - rewrite to functional component

* Datasource: updates PromQueryField - moves an extra field from children to the separate prop

* Datasource: adds PromExploreExtraField

* Datasource: updates PromExploreQueryEditor - fixes typo

* Datasource: updates prometheus explore editor snapshots

* Datasource: updates PromExploreExtraField export

* Datasource: removes unnecessary div from PromExploreQueryEditor

* Datasource: adds basic PromExploreExtraField snapshot test

* Datasource: adds basic PromExploreQueryEditor test

* Datasource: updates PromExploreQueryEditor snapshot to fix timezone issues

* Datasource: updates PromExploreQueryEditor - onChangeQueryStep cleanup

* Datasource: updates PromExploreQueryEditor test to check ExtraFieldElement render

* Datasource: simplified PromExploreQueryEditor onStepChange method

* Datasource: updates Prometheus module import

* Datasource: updates PromExploreQueryEditor test

* Datasource: updates PromExploreQueryEditor tests

* Datasource: fixes PromExploreQueryEditor error on empty interval init

* Datasource: adds a tooltip to PromExploreExtraField mounted in PromExploreQueryEditor

* Datasource: updates PromExploreQueryEditor snapshots

(cherry picked from commit 2d3c5064e1)
2020-02-20 14:03:49 +02:00
Ivana Huckova
5071be541b @grafana/ui: Fix displaying of bars in React Graph (#21968)
(cherry picked from commit 9b9f1ad1b9)
2020-02-20 14:03:49 +02:00
Ivana Huckova
b6564b85b1 Elastic: Limit the number of datapoints for the counts query (#21937)
(cherry picked from commit 89d1ab37de)
2020-02-20 14:03:49 +02:00
Hugo Häggmark
4770126073 Chore: Removes Cypress record (#21782)
(cherry picked from commit 9e5eb05769)
2020-02-07 09:48:37 +01:00
Hugo Häggmark
21bf8b71bc Chore: Fixes test based on master branch 2020-02-06 12:53:10 +03:00
Alexander Zobnin
dcb8beecb1 release 6.6.1 2020-02-06 12:53:10 +03:00
Leonard Gram
64568a1938 Quota: Makes sure we provide the request context to the quota service (#21949)
It was missing for ldap_login which means that the first signup failed
for users with LDAP+quota enabled. There's also potential cases where we
can't provide a request context (background jobs) which is also covered,
but needs a refactoring.

(cherry picked from commit 59530e4758)
2020-02-06 12:53:10 +03:00
Sofia Papagiannaki
9b3241a629 Annotations: Change indices and rewrites annotation find query to improve database query performance (#21915)
Drop indices and create new ones and rewrites annotation find query
to address performance issues when querying annotation table and
there is a large amount of rows.

Fixes #21902

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
(cherry picked from commit 5ae95190ed)
2020-02-06 12:53:10 +03:00
Hugo Häggmark
4bc6bf5e54 Prometheus: Fixes default step value for annotation query (#21934)
Fixes #21914

(cherry picked from commit 26d71c90f5)
2020-02-06 12:53:10 +03:00
Dominik Prokop
828ba74674 Dashboard edit: Fix 404 when making dashboard editable
(cherry picked from commit 90d415861d)
2020-02-06 12:53:10 +03:00
Mark Carey
568bbf4ff7 Metrics: Adds back missing summary quantiles (#21858)
Adds back missing summary quantiles which was mistakenly
removed in v6.6.0.

Fixes #21857

(cherry picked from commit 28230bbf52)
2020-02-06 12:53:10 +03:00
Ivana Huckova
17fc5251e1 grafana/ui: Fix displaying of bars in React Graph (#21922)
(cherry picked from commit 88226672f1)
2020-02-06 12:53:10 +03:00
Erik Sundell
b1d3fec9a8 Fix formatting (#21894)
(cherry picked from commit 78b1ab8360)
2020-02-06 12:53:10 +03:00
Edgar Orendain
12d3576666 Graph Panel: Fixed typo in thresholds form (#21903)
(cherry picked from commit bb8e15ceab)
2020-02-06 12:53:10 +03:00
Tobias Skarhed
476f9b6224 Disable logging in button (#21900)
(cherry picked from commit 959c49f6d8)
2020-02-06 12:53:10 +03:00
Jorge Luis Betancourt
29c6fa4114 Datasource: Show access (Browser/Server) select on the Prometheus datasource (#21833)
* Datasource: Show access (Browser/Server) select on the Prometheus datasource configuration editor

* Trigger build

(cherry picked from commit 96099636dc)
2020-02-06 12:53:10 +03:00
Shavonn Brown
248f73a00f deps so can mock in tests (#21827)
(cherry picked from commit c4e3110034)
2020-02-06 12:53:10 +03:00
Peter Holmberg
4fa2e9b90a Fix: Reimplement HideFromTabs in Tabs component (#21863)
* reimplement hidefromtabs

* remove console log

* going with option b instead

* less explicit

(cherry picked from commit 93195facba)
2020-02-06 12:53:10 +03:00
Marcus Efraimsson
04c2e41733 Image Rendering: Fix render of graph panel legend aligned to the right using Grafana image renderer plugin/service (#21854)
Don't render class body--phantomjs on body element when
PhantomJS renderer not is in use.

Fixes #21830

(cherry picked from commit 6e80315531)
2020-02-06 12:53:10 +03:00
Dominik Prokop
4c21a1e016 grafana/toolkit: Fix failing linter when there were lint issues (#21849)
(cherry picked from commit f8654a3a2f)
2020-02-06 12:53:10 +03:00
Torkel Ödegaard
604a603e82 DatasourceSettings: Fixed issue navigating away from data source settings page (#21841)
(cherry picked from commit b7faa9023e)
2020-02-06 12:53:10 +03:00
Dominik Prokop
9dd964f503 AppPageCtrl: Fix digest issue with app page initialisation (#21847)
(cherry picked from commit 050d902ed1)
2020-02-06 12:53:10 +03:00
Dominik Prokop
338c2b738e Fix digest issue with query part editor's actions menu (#21834)
(cherry picked from commit 1ef91e3fc4)
2020-02-06 12:53:10 +03:00
Torkel Ödegaard
5bc6a3505d Graphite: Fixed issue with functions with multiple required params and no defaults caused params that could not be edited (groupByNodes groupByTags) (#21814)
* Graphite: Fixed issue functions with multiple required params and no defaults

* removed some prev changes

* Update public/app/plugins/datasource/graphite/func_editor.ts

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
(cherry picked from commit 0fd088c757)
2020-02-06 12:53:10 +03:00
Evgeny Bibko
3b5efdbc84 TimePicker: Should display in kiosk mode (#21816)
* Timepicker class fixed

* Missed arrow in dashboard title

(cherry picked from commit 7638156666)
2020-02-06 12:53:10 +03:00
Torkel Ödegaard
a3cea78f40 StatPanels: Fixed migration from old singlestat and default min & max being copied even when gauge was disbled (#21820)
(cherry picked from commit 13948c0b76)
2020-02-06 12:53:10 +03:00
Marcus Andersson
36f02aaef7 Fixed strict errors (#21823)
(cherry picked from commit ffe0a1f975)
2020-02-06 12:53:10 +03:00
Marcus Andersson
2aefb73876 Fix: prevents the BarGauge from exploding when the datasource returns empty result. (#21791)
* Fixed issue where gauge throw error on empty result.

* Some refactorings to improve the code.

* Added some tests to make sure this doesn't happen again.

(cherry picked from commit cab082438e)
2020-02-06 12:53:10 +03:00
Shavonn Brown
94c374d187 Azure Monitor: Fix Application Insights API key field to allow input (#21738)
* Fix update api key input

* update snapshot

(cherry picked from commit 0fa20cb231)
2020-02-06 12:53:10 +03:00
Andrej Ocenas
6eb60b943a Influxdb: Fix cascader when doing log query in explore (#21787)
* Fix cascader options and add tests

* Add comment

* Fix typo

(cherry picked from commit 85dad73e9d)
2020-02-06 12:53:10 +03:00
Leonard Gram
8c14a6e070 MSI: License for Enterprise (#21794)
(cherry picked from commit 20e96a9241)
2020-02-06 12:53:10 +03:00
Shavonn Brown
a069b5d639 Make importDataSourcePlugin cancelable (#21430)
* make importDataSourcePlugin cancelable

* fix imported plugin assignment

* init datasource plugin to redux

* remove commented

* testDataSource to redux

* add err console log

* isTesting is never used

* tests, loadError type

* more tests, testingStatus obj

(cherry picked from commit b3d5e678f4)
2020-02-06 12:53:10 +03:00
Marcus Efraimsson
49255fbb6a OpenTSDB: Add back missing ngInject (#21796)
Adds back missing ngInject on datasource constructor
to make it work again.

Fixes #21770

(cherry picked from commit b75412d6ae)
2020-02-06 12:53:10 +03:00
Emil Tullstedt
0c843ae8d2 Config: add meta feature toggle (#21786)
(cherry picked from commit e95bcc4ba2)
2020-02-06 12:53:10 +03:00
Ivana Huckova
52a5645c85 Logs panel: Rename labels to unique labels (#21783)
(cherry picked from commit b3bcbcccce)
2020-02-06 12:53:10 +03:00
Ryan McKinley
9ad66b7fed grafana/data: Add type for secure json in DataSourceAPI (#21772)
(cherry picked from commit 67c5531961)
2020-02-06 12:53:10 +03:00
kay delaney
af10ba3f1f Explore/Loki: Fix handling of legacy log row context request (#21767)
Closes #21695

(cherry picked from commit 7569a8608a)
2020-02-06 12:53:10 +03:00
Leonard Gram
5c11bbdfb4 release 6.6.0 2020-01-27 13:32:03 +01:00
Emil Tullstedt
872bc2d973 Footer: Display Grafana edition (#21717)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
(cherry picked from commit 3fabbbff4d)
2020-01-27 13:32:03 +01:00
Andrej Ocenas
cbace87b56 Explore: Fix context view in logs, where some rows may have been filtered out. (#21729)
* Fix timestamp formats and use uid to filter context rows

* Remove timestamps from tests

(cherry picked from commit 0fda3c4f44)
2020-01-27 13:32:03 +01:00
Ryan McKinley
f59b9b6545 Toolkit: add canvas-mock to test setup (#21739)
(cherry picked from commit ed140346a7)
2020-01-27 13:32:03 +01:00
Tobias Skarhed
3ac81e50d7 TablePabel: Sanitize column link (#21735)
(cherry picked from commit 751eb2c8bb)
2020-01-27 13:32:03 +01:00
Tobias Skarhed
0378c66dcd Template vars: Add error message for failed query var (#21731)
(cherry picked from commit 4c41d7e7fb)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
79de911d0a Devenv: Fixed devenv dashboard template var datasource (#21715)
(cherry picked from commit b28eac2626)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
eecd09d1c8 Footer: added back missing footer to login page (#21720)
(cherry picked from commit 198f561541)
2020-01-27 13:32:03 +01:00
Marcus Efraimsson
14ae363aaa Admin: Viewer should not see link to teams in side menu (#21716)
Fixes so that viewers don't see a link to teams in side menu when
editors_can_admin setting is enabled.

(cherry picked from commit 63a912629d)
2020-01-27 13:32:03 +01:00
Dominik Prokop
18a92cc540 Annotations: Fix issue with annotation queries editors (#21712)
(cherry picked from commit d9e1cb44c8)
2020-01-27 13:32:03 +01:00
Dominik Prokop
cfb8912200 grafana/ui: Remove path import from grafana-data (#21707)
(cherry picked from commit 5e87af8b2a)
2020-01-27 13:32:03 +01:00
Ivana Huckova
47c57a1b9d Loki: Fix Loki with repeated panels and interpolation for Explore (#21685)
(cherry picked from commit e75840737e)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
ce3f43c6d0 StatPanels: Fixed possible migration issue (#21681)
(cherry picked from commit 8266959681)
2020-01-27 13:32:03 +01:00
Dominik Prokop
6717d43921 PhantomJS: Fix rendering of panels using Prometheus datasource
In 043bb59 a URLSearchParams usage was introduced which is not supported by PhantomJS. @babel/polyfill(deprecated) does not contain polyfill for URLSearchParams, hence the code (and Prometheus graphs rendering) was failing in PhantomJS environment.

The solution is to add https://www.npmjs.com/package/url-search-params-polyfill that takes care of the URLSearchParams

(cherry picked from commit cdfac32dfd)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
a951bab782 StatPanel: minor height tweak (#21663)
(cherry picked from commit a734cd3640)
2020-01-27 13:32:03 +01:00
Erik Sundell
841e140f5b Run query when region, namespace and metric changes (#21633)
(cherry picked from commit 296af36a6f)
2020-01-27 13:32:03 +01:00
kay delaney
bbd2014e9d Explore: Fixes some LogDetailsRow markup (#21671)
- Moves filter titles to icons rather than table cell
- Increases colspan of ad-hoc stats cell instead of
rendering empty cells for parsed fields

(cherry picked from commit a115729c55)
2020-01-27 13:32:03 +01:00
Sofia Papagiannaki
8ce48b98dc SQLStore: Fix PostgreSQL failure to create organisation for first time (#21648)
* Fix PostgreSQL failure to create organisation for first time

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
(cherry picked from commit 2283ceec09)
2020-01-27 13:32:03 +01:00
Erik Sundell
60419f7e72 CloudWatch: Auto period snap to next higher period (#21659)
* Snap to next higher period instead of closest

* Adjust period calc

(cherry picked from commit 685c9043a8)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
38e4db88d1 Login: Better auto sizing of login logo (#21645)
(cherry picked from commit 741e1bb7e9)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
d619c529f0 Alert: Minor tweak to work with license warnings (#21654)
(cherry picked from commit c228cde2b6)
2020-01-27 13:32:03 +01:00
Ryan McKinley
a8643d89be Toolkit: copyIfNonExistent order swapped (#21653)
(cherry picked from commit aee07949a3)
2020-01-27 13:32:03 +01:00
Ivana Huckova
a7c52c7dc8 Explore: Fix log level color and add tests (#21646)
(cherry picked from commit 6feb4a3221)
2020-01-27 13:32:03 +01:00
Torkel Ödegaard
7ad14532a3 Templating: A way to support object syntax for global vars (#21634)
(cherry picked from commit 92ef8644c5)
2020-01-27 13:32:03 +01:00
kenju
23f977f000 CloudWatch: Add DynamoDB Accelerator (DAX) metrics & dimensions (#21644)
Closes #10494

(cherry picked from commit 935d447c6a)
2020-01-27 13:32:03 +01:00
Emil Hessman
c172fe8915 Plugins: Apply adhoc filter in Elasticsearch logs query (#21346)
Fixes #21086

(cherry picked from commit 25e2f1c2dd)
2020-01-27 13:32:03 +01:00
Ryan McKinley
ddeee1820d TestData: allow negative values for random_walk parameters (#21627)
(cherry picked from commit 5f14d62c0d)
2020-01-27 13:32:03 +01:00
Sofia Papagiannaki
f28fd41c3b Update musl checksums (#21621)
(cherry picked from commit 2021a2df74)
2020-01-27 13:32:03 +01:00
Erik Sundell
57fb967fec CloudWatch: Expand dimension value in alias correctly (#21626)
* Make sure dimension value is being returned, and not just label

* Fix typo

(cherry picked from commit a1733bb412)
2020-01-27 13:32:03 +01:00
Leonard Gram
9046263122 Build: adds missing filters required to build oss msi (#21618)
(cherry picked from commit 7e0890d57d)
2020-01-20 14:39:44 +01:00
Leonard Gram
2306826cff release 6.6.0-beta1 2020-01-20 13:34:39 +01:00
Torkel Ödegaard
a0b04559e4 BigValue: Updated test dashboard and made some chart sizing tweaks (#21616) 2020-01-20 13:07:39 +01:00
Torkel Ödegaard
2732aca05c TestData: Adds important new features to the random walk scenario (#21613)
* test data refactor

* new random walk options

* fixed test

* Added automatic names
2020-01-20 12:42:42 +01:00
Daniel Lee
79255fafaf graphite: does not modify last segment when... (#21588)
opening the Graphite query editor and there is no data
for the last segment value.

Fixes #21563
2020-01-20 10:18:41 +01:00
Ivana Huckova
dfeee3dd4a grafana/ui: Add synced timepickers styling to TimePicker (#21598) 2020-01-20 09:59:35 +01:00
Ivana Huckova
e84a047a67 Explore: Remove destructuring of empty state in LogRowMessage (#21579) 2020-01-20 09:53:52 +01:00
Leonard Gram
b2c235c46d Build: enables deployment of enterprise msi (#21607) 2020-01-20 09:26:27 +01:00
Leonard Gram
cc2586d250 CI: MSI for Enterprise (#21569)
* CI: ee msi build

* shellcheck

* Fake it so that we get a ee msi build on pull request runs

* fix error in prep job

* save msi for testing

* get enterprise zip

* Fixes to version and hash detection.

* Removes ci test code
2020-01-20 08:35:45 +01:00
Dominik Prokop
aba402f98e E2E docs: Add guide to debuging PhantomJS (#21606)
* Add guide to debuging PhanomJS

* Update contribute/style-guides/e2e.md
2020-01-20 08:34:36 +01:00
Ryan McKinley
152059fec9 Toolkit: fix prettier error reporting (#21599) 2020-01-19 18:42:41 -08:00
Marcus Efraimsson
d2b08c8368 Render: Use https as protocol when rendering if HTTP2 enabled (#21600)
This fixes so that protocol is https instead of h2 when rendering
image if Grafana is configured to use HTTP2.

Ref grafana/grafana-image-renderer#77
2020-01-20 00:43:02 +01:00
Torkel Ödegaard
b087edc224 Typescript: null check fixes, and news panel fix (#21595) 2020-01-19 19:16:31 +01:00
Peter Holmberg
e762190616 Inspect: table take full height in drawer (#21580) 2020-01-18 08:24:17 +01:00
Sean Johnson
7cbf3d8dab OAuth: Fix role mapping from id token (#20300)
As part of the new improvements to JMESPath in #17149 a 
commit ensuring Role and Email data could be queried from 
id_token was lost.
This refactors and fixes extracting from both token and user 
info api consistently where before only either token or 
either user info api was used for extracting data/attributes.

Fixes #20243

Co-authored-by: Timo Wendt <timo@tjwendt.de>
Co-authored-by: twendt <timo@tjwendt.de>
Co-authored-by: henninge <henning@eggers.name>
Co-Authored-by: Henning Eggers <henning.eggers@inovex.de>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-01-17 18:57:23 +01:00
Tobias Skarhed
fef31acbf2 ButtonCascader: Fix error in Explore (#21585)
* Add children and remove nullified icon

* Revert data format with children

* Update test

* Revert styles

* Update types
2020-01-17 18:07:40 +01:00
Marcus Efraimsson
59469e14cf CloudWatch: Fix ordering of map to resolve flaky test take 2 (#21577) 2020-01-17 16:30:42 +01:00
Torkel Ödegaard
5af7b15c10 Redux: Fixed function adding a new reducer (#21575) 2020-01-17 16:05:08 +01:00
Torkel Ödegaard
66d8871415 Minor style changes on upgrade page (#21566) 2020-01-17 16:02:43 +01:00
Dominik Prokop
8bc4ef3e9c Revert "Babel: use babel-loader instead of ts-loader, ng-annotate with babel-plugin-angularjs-annotate (#21554)" (#21570)
This reverts #21554 which caused problems with e2e.
This reverts commit e7e0d18bc8.
2020-01-17 15:52:56 +01:00
Ivana Huckova
c738a889ed Explore: Context tooltip to copy labels and values from graph (#21405) 2020-01-17 15:52:08 +01:00
Emil Tullstedt
26f72ccc4e Config: Use license info instead of build info for feature toggling (#21558) 2020-01-17 15:44:12 +01:00
Erik Sundell
0e3a7b1a6f Fix merge problem (#21574) 2020-01-17 15:30:54 +01:00
Marcus Efraimsson
303bbb9900 CloudWatch: Fix ordering of map to resolve flaky test (#21572) 2020-01-17 15:27:03 +01:00
Sofia Papagiannaki
e18d35add4 Docs: What's new in Grafana v6.6 Draft (#21562)
* Docs: What's new in Grafana v6.6 Draft
2020-01-17 16:07:53 +02:00
Ivana Huckova
9ebd99d595 Explore: Create unique ids and deduplicate Loki logs (#21493) 2020-01-17 14:28:00 +01:00
Erik Sundell
8616f1beac Chore: Fix go vet problem (#21568) 2020-01-17 13:48:09 +01:00
Marcus Efraimsson
ca84829647 Provisioning: Start provision dashboards after Grafana server have started (#21564)
6.2-beta1 changed so that data sources, dashboards and alert notifiers 
are provisioned on service Init where's before only data sources and 
alert notifiers was provisioned on service Init and dashboards was first
provisioned in service Run which happens after Grafana server have 
started.
This change reverts so that dashboard provisioning are first happening 
in service Run, after Grafana server have started.

Fixes #21133
2020-01-17 13:39:41 +01:00
Erik Sundell
d40b66f1c1 CloudWatch: Calculate period based on time range (#21471)
* Calculate min period based on time range and no of queries

* Use hardcoded array of periods if period is not defined actively by the user

* Fix broken tests

* Use a smaller max period for auto interval

* Fix broken tests

* Test period calculation

* Test min retention period

* Fix broken test
2020-01-17 13:22:43 +01:00
Peter Holmberg
5f3d913cec Inspect: Download DataFrame to Csv (#21549)
* basic setup for csv export

* tinkering with flex-grow

* fixed layout

* align select and button

* using stylesfactory
2020-01-17 12:55:21 +01:00
Erik Sundell
b398bc592b CloudWatch: Multi-valued template variable dimension alias fix (#21541)
* Match dimension value with label substring

* Add unit tests
2020-01-17 12:47:40 +01:00
Steven Vachon
e7e0d18bc8 Babel: use babel-loader instead of ts-loader, ng-annotate with babel-plugin-angularjs-annotate (#21554)
* Applied prettier to some webpack configs

* Removed ng-annotate

… and used same annotation approach as webpack.hot.js

* Removed redundant import

… that is problematic with Babel's module resolver

* Updated lockfile

* Replace ts-loader with babel-loader in webpack.dev

* Change tslint-loade order in dev webpack config

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-17 12:36:46 +01:00
Erik Sundell
260239d98b Stackdriver: Support meta labels (#21373)
* Rewrite angular segments for filter and group by in react

* wip: refactoring

* Update metric find queries

* Remove old maps used to create labels - use one map for all types instead

* Use value as label (again) for filters ang groupby

* Remove old filter

* Remove not used code

* Fixes after pr feedback

* Fix broken tests and add new metadata tests

* Add index file to make imports cleaner

* Cleanup. Remove old angular filter code

* Fix broken tests

* Use type switching instead of if statements

* Use globals for regex

* Updates after pr feedback

* Make sure it's possible to filter using the same key multiple times

* Replace metric select with segment component

* Pass template vars as props

* Refactor meta labels code

* Reorder template variables

* Fix broken tests

* Reset metric value when changing service

* Fix lint issue.

* Make tests independant of element order

* Include kubernetes.io in regex

* Add instruction in help section
2020-01-17 12:25:47 +01:00
Leonard Gram
72023d90bd CI: Revert msi build (#21561)
* Revert "CI: adds missing files for ee msi (#21559)"

This reverts commit 6e412d88c9.

* Revert "CI: Enterprise MSI (#21518)"

This reverts commit d910f69b2c.
2020-01-17 12:10:29 +01:00
Marcus Efraimsson
71ffd1d108 Alerting: Fix image rendering and uploading timeout preventing to send alert notifications (#21536)
* svc alerting - use a shorter ctx to upload the img
This will prevent timeout on img upload to cancel the notifications from being sent

* components img uploader - pass the ctx to aws lib

* make webdavuploader use the ctx

* make azureblobuploader use the ctx

* rename uploadImage() to renderAndUploadImage()
for better clarity about what this method work

* Use timeout + 2s for plugin renderer (same as service and phantomjs)

* Make sure that original EvalContext is updated after render and upload

* Verify notification sent even if render or image upload times out

* fix lint

* fixes after review

Co-authored-by: Edouard Hur <3418467+hekmon@users.noreply.github.com>

Fixes #21018
2020-01-17 12:07:16 +01:00
Leonard Gram
6e412d88c9 CI: adds missing files for ee msi (#21559) 2020-01-17 12:06:08 +01:00
Leonard Gram
d910f69b2c CI: Enterprise MSI (#21518)
* build: builds msi for enterprise

* build: renamed msi generator directory

* build: build and deploy enterprise msi

* Build: placeholder license file for enterprise

* Build: correct name for ee msi
2020-01-17 11:33:43 +01:00
Tobias Skarhed
aa0982da56 Add component: Cascader (#21410)
* Rename old cascader

* Change name of old cascader

* Add basic cascader without search

* Add basic cascader without search

* Flatten options to make it searchable

* Add regex search and make backspace work

* Add barebone search without styles

* Add SearchResult list

* Add search navigation

* Rewrite of cascader and add some things to SelectBase

* Make SelectBase controlllable

* Cleanup

* Add initial value functionality

* Add onblur to hand caret direction

* New storyboom format for ButtonCascader

* Add knobs to story

* Add story and docs for UnitPicker

* Make UnitPicker use Cascader

* Fix backspace issue and empty value

* Fix backspace issue for real

* Remove unused code

* Fix focus issue

* Change children to items and remove ButtonCascaderProps

* Remove local CascaderOption

* Fix failed test

* Revert UnitPicker changes and change format for ButtonCascader

* Fix failing tests
2020-01-17 11:30:33 +01:00
Erik Sundell
20aac7f04b CloudWatch: Display partial result in graph when max DP/call limit is reached (#21533)
* Return data and warning in case dp limit is reached

* Change warning text
2020-01-17 11:18:28 +01:00
Torkel Ödegaard
15b2bf3e5c Dashboards: Default Home Dashboard Update (#21534)
* HomeLinks: WIP panel for getting started links

* Progress

* progress

* Updated styling

* Updated default home dashboard

* Update light card styles

* Tweaks based on feedback
2020-01-17 09:43:17 +01:00
Diana Payton
1e2f7567f0 Docs: Update rpm.md (#21547)
Minor format fix
2020-01-16 13:53:07 -08:00
Diana Payton
e64b5fd018 Docs: Update mac.md (#20782)
* Update mac.md

Reviewed and edited macOS install instructions.

* Updated mac.md and configuration.md

Removed developer build instructions from mac.md and moved configuration information from mac.md to configuration.md.

* Update mac.md

Updated to reflect the new fields on the Downloads page

* Update mac.md

* Update mac.md
2020-01-16 13:29:20 -08:00
Ryan McKinley
0f0374544f Templating: update variables on location changed (#21480) 2020-01-16 10:55:54 -08:00
Kyle Brandt
5a31e48548 Vendor: grafana-plugin-sdk-go v0.11.0 (#21552)
upgrades https://github.com/grafana/grafana-plugin-sdk-go from v0.6.0 to v0.11.0
2020-01-16 12:53:51 -05:00
Alexander Zobnin
0cfcc85dec fix dateMath import in grafana-ui (#21546) 2020-01-16 19:16:51 +03:00
kay delaney
451e9beaf0 Explore/Loki: Filter expression only treated as regex when regex operator is used (#21538)
* Explore/Loki: Filter expression only treated as regex when regex operator is used
Closes #17963

* Adds test cases to verify new behavior
2020-01-16 16:09:49 +00:00
Sofia Papagiannaki
1636e8873b Fix TypeScript error (#21545) 2020-01-16 17:38:49 +02:00
Emil Tullstedt
23f3ec020a Build: Ignore content of /pkg/extensions, not directory (#21540) 2020-01-16 14:29:48 +01:00
Andrej Ocenas
1a0df77b32 Update latest to 6.5.3 (#21509) 2020-01-16 14:16:58 +01:00
kay delaney
cc1d468041 Explore: Ensures queries aren't updated when returning to dashboard if browser back is used (#20897)
* Explore: Ensures queries aren't updated when returning to dashboard if browser back is used
Closes #20873
2020-01-16 11:44:05 +00:00
Peter Holmberg
43dbbe51f0 Inspect: Use AutoSizer for managing width for content in tabs. (#21511)
* wrap content in autosizer

* replace lib

* removing react-virtualized, correct type in editor.ts

* remove caret

* remove dep from grafana/ui and remove story util
2020-01-16 11:11:33 +01:00
Dominik Prokop
18fda3b8b4 Changelog generation: Generate grafana/ui changelog (#21531) 2020-01-16 10:49:35 +01:00
Roman Misyurin
1a9bf91542 Toolkit: support less loader (#21527) 2020-01-15 16:24:13 -08:00
Ryan McKinley
c5da1864a6 AppPlugin: remove simple app from the core repo (#21526) 2020-01-15 16:10:27 -08:00
Steven Vachon
f6130db03d @grafana/toolkit: cleanup (#21441)
* Clarify readme for extended webpack config

* Add support for ES2019 features

* Build task: path.resolve → resolvePath

* Build task: avoid fs race conditions

* Build task: use async fs functions

* Build task: use rimraf directly

... because depending on the workspace parent to have it installed is fragile, and a child process is always slower.

* Build task: misc
2020-01-15 18:51:37 -05:00
Ryan McKinley
29e9b1f774 DataFrames: add arrow test and capture metadata parsing errors (#21524) 2020-01-15 14:33:56 -08:00
Ryan McKinley
76ba2db4e7 DataLinks: allow using values from other fields in the same row (#21478) 2020-01-15 12:02:52 -08:00
Dominik Prokop
3f957a3735 grafana/data: Update plugin config page typings (BREAKING) (#21503)
* Change typyings of plugins config pages

* Update plugin config page types of core plugins
2020-01-15 19:42:44 +01:00
Ivana Huckova
dce4d184a1 Fix regex in convertCSSToStyle, add test coverage (#21508) 2020-01-15 17:25:51 +01:00
Erik Sundell
a35b2ac463 CloudWatch: Annotation Editor rewrite (#20765)
* wip: react rewrite

* Cleanup

* Break out non annontations specific fields

* Cleanup. Make annontations editor a functional component

* Remove redundant classnames

* Add paneldata to props

* Cleanup

* Fix rebase merge problem

* Updates after pr feedback

* Fix conflict with master
2020-01-15 16:38:15 +01:00
Emil Tullstedt
29687903f8 Admin: Add promotional page for Grafana Enterprise (#21422)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-01-15 14:50:44 +01:00
Andrej Ocenas
32f055111c Add changelog for 6.5.3 2020-01-15 14:34:46 +01:00
Marcus Efraimsson
5c711bfb79 Backend Plugins: Collect and expose metrics and plugin process health check (#21481)
Adds support for collecting metrics from backend plugins and 
exposing them thru Grafana's Prometheus metrics endpoint. 
Enables to check health of backend plugin by using the route
`/api/plugins/<plugin id>/health`.
Uses sdk v0.6.0.

Closes #20984
2020-01-15 13:10:48 +01:00
Anthony Woods
f56f54b1a3 Auth: Rotate auth tokens at the end of requests (#21347)
By rotating the auth tokens at the end of the request we ensure
that there is minimum delay between a new token being generated
and the client receiving it.
Adds auth token slow load test which uses random latency for all 
tsdb queries..
Cleans up datasource proxy response handling.
DefaultHandler in middleware tests should write a response, the 
responseWriter BeforeFuncs wont get executed unless a response
is written.

Fixes #18644 

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-01-15 13:03:12 +01:00
Peter Holmberg
16ded9fe6e Tabs: Hide Tabs on Page header on small screens (#21489)
* Adding className to hide tabs on small screens

* update snapshot

* Readd border on pageheader

* update snap
2020-01-15 12:54:35 +01:00
Marcus Efraimsson
54c9b11ae8 Fix importing plugin dashboards (#21501)
#21350 introduced a bug regarding import of plugin dashboards. 
This should fix this and add custom validation if not importing 
plugin dashboard and dashboard property is missing.

Ref #21350

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-01-15 12:10:02 +01:00
Torkel Ödegaard
98bbdea69d SideMenu: Fixes issue with logout link opened in new tab (#21488)
* SideMenu: Fixes issue with logout link opened in new tab

* Updated snapshot
2020-01-15 10:29:27 +01:00
Dominik Prokop
2355d0901a DataLinks: Make data links input grow again (#21499) 2020-01-15 08:20:24 +01:00
Ryan McKinley
f6c94b9c40 Templating: use default datasource when missing (#21495) 2020-01-14 22:51:25 -08:00
Ivana Huckova
ba7d8c1a3d Explore: Fix timepicker when browsing back after switching datasource (#21454) 2020-01-14 19:20:17 +01:00
Marcus Efraimsson
a1579283a6 Add disabled option for cookie samesite attribute (#21472)
Breaking change: If disabled the cookie samesite cookie attribute
will not be set, but if none the attribute will be set and is a
breaking change compared to before where none did not render the
attribute. This was due to a known issue in Safari.

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>

Fixes #19847
2020-01-14 17:41:54 +01:00
Marcus Efraimsson
492912845f Chore: Adds basic alerting notification service tests (#21467)
Adds basic alerting notification tests. First steps towards 
getting #18011 merged.

Ref #18011
2020-01-14 17:27:16 +01:00
Arve Knudsen
d26075644c ImportDashboardCommand: Validate JSON fields (#21350)
* ImportDashboardCommand: Validate JSON fields
2020-01-14 16:26:54 +01:00
Robby Milo
a6fac58088 Docs: add test for website build (#21364)
* add build-docs-website job to circleci

* update commands

* update readme command

* remove container when test finishes

* move build-docs-website to build-branches-and-prs

* update readme
2020-01-14 16:26:00 +01:00
Marcus Andersson
45dc4a834e Fix: when clicking a plot on a touch device we won't display the annotation menu (#21479)
* Fixed so when clicking a plot on a touch device we won't display the annotation context menue.

* Refactorings after feedback.

* changed to standard-ish comment.
2020-01-14 14:16:44 +01:00
Ryan McKinley
a0d43de761 Backend Plugins: add a common implementation (#21408)
* add common backend

* use const for range

* likely not differnt

* send the right orgId

* Add DataSourceWithBackend to @grafana/runtime mock in root reducer test

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-14 12:59:48 +01:00
Sofia Papagiannaki
d135f1229d Alerting: new min_interval_seconds options to enforce a minimum eval frequency (#21188)
* add min_interval_seconds setting to alerting config

It will let operator enforce a minimum time for the scheduler to enqueue evaluations

* Introduce UI modifications

* Update docs

Co-authored-by: Martin <uepoch@users.noreply.github.com>
2020-01-14 11:13:34 +02:00
Peter Holmberg
6b3041d358 Panel: Use Tabs in panel inspector (#21468)
* replace select with tabs

* storybook example

* Update snapshot, move styles to component files
2020-01-14 09:03:14 +01:00
Diana Payton
962d0f6a0e Docs: Update rpm install (#21475)
* Update rpm.md

* Update rpm.md

* Moved content to troubleshooting

Updated rpm.md and moved content from rpm.md to troubleshooting.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update docs/sources/installation/rpm.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/rpm.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

Co-authored-by: Dan Cech <dan@aussiedan.com>
2020-01-13 14:46:32 -08:00
zabullet
bcac76f5d4 Alerting: Enable setting of OpsGenie priority via a tag (#21298)
OpsGenie's model works heavily off of the priority of an alert, 
e.g. routing and escalation. Currently this plugin only supports 
the default "P3".
Setting a tag og_priority to the correct P-value, e.g. P1, P2, P3, 
P4 or P5, will call the OpsGenie API with the correct priority value 
set.
2020-01-13 21:04:24 +01:00
Alvaro Olmedo Rodriguez
abc806e17b Alerting: fallbackText added to Google Chat notifier (#21464)
Add fallbackText to Google Chat notifications. 
Definition of fallbackText: A plain-text description of the message's 
cards, used when the actual cards cannot be displayed, 
e.g. mobile notifications.

Fixes #21463
2020-01-13 20:42:52 +01:00
Marcus Efraimsson
1a810ebfe4 Plugins: Move backend plugin manager to service (#21474)
Moves backend plugin manager to service instead of
global functions in backendplugin package.

Closes #20053
2020-01-13 20:18:45 +01:00
Marcus Efraimsson
bb849d53bf Backend Plugins: Refactor backend plugin registration and start (#21452)
Moves the details of loading plugins into the backend
plugin manager from the respective plugin (datasource,
transform and renderer).
2020-01-13 17:13:17 +01:00
Alexander Zobnin
8505d90768 Admin: New Admin User page (#20498)
* admin: user page to react WIP

* admin user page: basic view

* admin user page: refactor, extract orgs and permissions components

* admin user: change sessions actions styles

* admin user: add disable button

* user admin: add change grafana admin action

* user admin: able to change org role and remove org

* user admin: confirm force logout

* user admin: change org button style

* user admin: add confirm modals for critical actions

* user admin: lock down ldap user info

* user admin: align with latest design changes

* user admin: add LDAP sync

* admin user: confirm button

* user admin: add to org modal

* user admin: fix ConfirmButton story

* admin user: handle grafana admin change

* ConfirmButton: make styled component

* ConfirmButton: completely styled component

* User Admin: permissions section refactor

* admin user: refactor (orgs and sessions)

* ConfirmButton: able to set confirm variant

* admin user: inline org removal

* admin user: show ldap sync info only for ldap users

* admin user: edit profile

* ConfirmButton: some fixes after review

* Chore: fix storybook build

* admin user: rename handlers

* admin user: remove LdapUserPage import from routes

* Chore: fix ConfirmButton tests

* Chore: fix user api endpoint tests

* Chore: update failed test snapshots

* admin user: redux actions WIP

* admin user: use new ConfirmModal component for user profile

* admin user: use new ConfirmModal component for sessions

* admin user: use lockMessage

* ConfirmButton: use primary button as default

* admin user: fix ActionButton color

* UI: use Icon component for Modal

* UI: refactor ConfirmModal after Modal changes

* UI: add link button variant

* UI: able to use custom ConfirmButton

* Chore: fix type errors after ConfirmButton refactor

* Chore: revert Graph component changes (works with TS 3.7)

* Chore: use Forms.Button instead of ActionButton

* admin user: align items

* admin user: align add to org modal

* UI: organization picker component

* admin user: use org picker for AddToOrgModal

* admin user: org actions

* admin user: connect sessions actions

* admin user: updateUserPermissions action

* admin user: enable delete user action

* admin user: sync ldap user

* Chore: refactor, remove unused code

* Chore: refactor, move api calls to actions

* admin user: set user password action

* Chore: refactor, remove unused components

* admin user: set input focus on edit

* admin user: pass user into debug LDAP mapping

* UserAdminPage: Ux changes

* UserAdminPage: align buttons to the left

* UserAdminPage: align delete user button

* UserAdminPage: swap add to org modal buttons

* UserAdminPage: set password field to empty when editing

* UserAdminPage: fix tests

* Updated button border

* Chore: fix ConfirmButton after changes introduced in #21092

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-01-13 17:10:19 +01:00
Diana Payton
108039af33 Docs: Update cli.md (#21470)
* Update cli.md

* update links

Co-authored-by: Robby Milo <robbymilo@gmail.com>
2020-01-13 07:38:52 -08:00
Peter Holmberg
891b84e986 Fix: Tab icons not showing (#21465)
* revert back to i element

* snap
2020-01-13 13:53:39 +01:00
Peter Holmberg
30eef76162 Chore: Add react-table typings to Table (#21418)
* add typings

* introduce tyings and refactor accordingly

* extract setting celltype

* update tests to reflect changes

* removing unused things

* renaming getCellType -> getCellDisplayType

* fix width type error

* remove caret

* move cell back to utils, fix story

* remove unused import

* rename type
2020-01-13 11:12:19 +01:00
Torkel Ödegaard
b6c75b10d1 Login: Refactoring how login background is rendered (#21446)
* Login: Refactoring how login background is rendered

* Tweak
2020-01-13 09:42:21 +01:00
Torkel Ödegaard
27a77f588c StatPanel: Refactoring & fixes (#21437)
* refactoring BigValue layout to use polymorphism

* Renamed file

* StatPanel: Fixed min & max handling, white theme background

* Typescript and test fixes

* Fixed justify center logic

* Updated test dashboard

* Updated test dashboard

* Adjust time xMax to align with last data point if it's close

* Fixed color issue

* removed text shadow

* Removed unused stuff

* Fixed auto min max

* Fixed strict typescript issues

* Updated
2020-01-13 09:41:35 +01:00
Hugo Häggmark
4f0fa776be Chore: Migrates reducers and actions to Redux Toolkit (#21287)
* Refactor: Adds Redux Toolkit package

* Refactor: Uses configureStore from Redux Toolkit

* Refactor: Migrates applicationReducer

* Refactor: Migrates appNotificationsReducer

* Refactor: Migrates locationReducer

* Refactor: Migrates navModelReducer

* Refactor: Migrates teamsReducer and teamReducer

* Refactor: Migrates cleanUpAction

* Refactor: Migrates alertRulesReducer

* Refactor: Cleans up recursiveCleanState

* Refactor: Switched to Angular compatible reducers

* Refactor: Migrates folderReducer

* Refactor: Migrates dashboardReducer

* Migrates panelEditorReducer

* Refactor: Migrates dataSourcesReducer

* Refactor: Migrates usersReducer

* Refactor: Migrates organizationReducer

* Refactor: Migrates pluginsReducer

* Refactor: Migrates ldapReducer and ldapUserReducer

* Refactor: Migrates apiKeysReducer

* Refactor: Migrates exploreReducer and itemReducer

* Refactor: Removes actionCreatorFactory and reducerFactory

* Refactor: Moves mocks to test section

* Docs: Removes sections about home grown framework

* Update contribute/style-guides/redux.md

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

* Refactor: Cleans up some code

* Refactor: Adds state typings

* Refactor: Cleans up typings

* Refactor: Adds comment about ImmerJs autoFreeze

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-01-13 08:03:22 +01:00
Marcus Andersson
b0515f46cc DeleteButton: Button with icon only was not centered correctly. (#21432)
* Refactoring to get the correct spacing between the first icon and button border.

* Should not be smaller then 8px to the left.

* Removed unused dependency.

* Updated snapshot for LinkButton.
2020-01-12 19:55:10 +01:00
Torkel Ödegaard
35679d4689 Logos: Refactoring a bit how logos are rendered (#21421) 2020-01-10 22:15:16 +01:00
Diana Payton
cfba25630e Docs: Update documentation-style-guide.md (#21322)
* Update documentation-style-guide.md

Added Commands and code section.

* Update documentation-style-guide.md

* Update documentation-style-guide.md

Added code block examples

* Update documentation-style-guide.md
2020-01-10 11:53:05 -08:00
Shavonn Brown
a7509d2ca0 More datasource funcs poc (#21047)
* remove anon funcs, removed options from state, removed update method, static selects as constants

* cancellable promise

* cancel promise on unmount

* use new datasource funcs for dryer component

* event handler funcs

* updated funcs and moved to utils, updating config editors

* S has no keys. never will never work

* remove report json

* update azure snapshot

* DataSourceSettings keyof

* rename reset funcs
2020-01-10 14:26:33 -05:00
Diana Payton
aada45a4cb Docs: Update plugin installation and CLI (#21179)
* Update plugin docs

* Updated plugins installation documentation

Moved all Grafana CLI commands into cli.md, moved API script into user.md, rewrote installation.md as an actual task that refers the user to the plugins installation page

* Update cli.md

* Update cli.md

* Update docs/sources/administration/cli.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/administration/cli.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/http_api/user.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/http_api/user.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update cli.md

* Fixed links

* Update cli.md

* Update cli.md

* Update cli.md

* Update cli.md

Co-authored-by: Dan Cech <dan@aussiedan.com>
2020-01-10 09:41:39 -08:00
Diana Payton
77ec7afa2b Docs: Update debian.md (#21339)
* Docs: Update debian.md

Simplified the APT install instructions by bundling the commands into one block, added steps in the .deb instructions to refer to new fields on the installation page.

* Update debian.md

* Update debian.md

* Update debian.md

* Update debian.md

* Update debian.md

* Update debian.md
2020-01-10 09:38:54 -08:00
Marcus Efraimsson
0f0772b629 Alerting: Adds support for sending a single email to all recipients in notification channel (#21091)
When an alert is sent by e-mail, the process sends an e-mail to 
each recipient separately. This PR is a single delivery to all recipients.
For companies that use e-mail extensively, this is necessary in order 
not to overload the sending queue.

Replaces #18013
Fixes #12650

Co-authored-by: Henrique Oliveira <holiiveira@users.noreply.github.com>
2020-01-10 16:06:33 +01:00
Danilo Bargen
8a02fa7691 ThreemaNotifier: Use fully qualified status emoji (#21305) 2020-01-10 16:00:20 +01:00
Leonard Gram
673ccdc448 Settings: Env override support for dynamic settings (#21439)
* Settings: supports env overrrides for dynamic settings

* Settings: makes it possible to explicitly get env override support for dynamic settings

* Make linter happy
2020-01-10 15:33:54 +01:00
Jeffrey Descan
c5f906f472 Security: refactor 'redirect_to' cookie to use 'Secure' flag (#19787)
* Refactor redirect_to cookie with secure flag in middleware

* Refactor redirect_to cookie with secure flag in api/login

* Refactor redirect_to cookie with secure flag in api/login_oauth

* Removed the deletion of 'Set-Cookie' header to prevent logout

* Removed the deletion of 'Set-Cookie' at top of api/login.go

* Add HttpOnly flag on redirect_to cookies where missing

* Refactor duplicated code

* Add tests

* Refactor cookie options

* Replace local function for deleting cookie

* Delete redundant calls

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-01-10 15:55:30 +02:00
David
a3c99f4871 Logs: Fix parsing for logfmt fields that have parens (#21407)
* Logs: Fix parsing for logfmt fields that have parens

- added `()`, `[]`, and `{}` to be allowed in logfmt field names

* Fix matcher
2020-01-10 13:53:31 +01:00
Björn Rabenstein
e9bcee30fa Improve documentation for the Prometheus data source (#21415)
Besides minor language corrections, this tries in particular to
provide some clarity about the `step` setting in the Prometheus range
query and the `$__interval` variable:

- First of all: They are both always the same.

- What's really confusing (and arguably really un-helpful) is that the
  _Min time interval_ is multiplied by the resolution
  factor. Therefore, I just state the fact here now but don't add
  anything like "This should be the scrape interval" because it is not
  true (if resolution is `1/10`, a meaningful _Min time interval_ is
  generally a tenth of the scrape interval).

- More helpful is the _Min step_ parameter, because it is not
  multiplied by the resolution factor (which I have now stated
  explicitly). Of course, the _Min time interval_ has to be set to
  something small so that the _Min step_ parameter can kick in.

It would be good if we could also override the _Min time interval_
tool tip because that is where most people will look, and the current,
very Graphite-centric tool tip is very confusing for the Prometheus
query editor, in particular because it doesn't have any hint about the
resolution factor being applied. See #21413.

Signed-off-by: beorn7 <beorn@grafana.com>
2020-01-10 13:51:32 +01:00
Ryan McKinley
7521d2bba0 Heatmap: fix formatting (#21433)
* add formatting

* remove logging
2020-01-10 12:50:30 +01:00
vikkyomkar
15fe58f193 Docs: Fixed broken links of Datasource doc at Grafana plugin page (#21363)
Fixes #21362
2020-01-10 12:38:16 +01:00
Pavlos Daoglou
53007e07e3 ApiUser: Fix response when enabling, disabling or deleting a nonexistent user (#21391)
* ApiUser: Fix response when enabling, disabling or deleting a nonexistent user
2020-01-10 11:43:44 +01:00
Peter Holmberg
bb649489c8 grafana/ui: Create Tabs component (#21328)
* create tabs component

* replace tabs in pageheader

* splitting two different types of tabitems

* fix index and conditionals in tabs

* redo tabs to not render anchor links

* rename to className and use cx to combine classes

* reverting back to a simpler use case

* moving type to types file

* fix import

* redoing Tabs to simpler composition components

* pr feedback

* update snapshot

* use icon component, added knob for storybook
2020-01-10 10:38:43 +01:00
Ryan McKinley
bf18704490 Inspector: support custom metadata display (#20854) 2020-01-09 22:59:23 -08:00
teodoryantcheff
0bf9e9bc28 Table: Added text align option to column styles (#21175)
* Added text align option to column styles, tests

* table panel migrations

* added tests

* default column style is now auto

* tests and fixtures...

* wrong comments need removing

* xss guard

* test

* Some test for invalid options, formatting.

* Remote branch tracking.
2020-01-09 16:01:12 +01:00
Martin Brenner
7784b519a0 PluginPage: Add appSubUrl string to config pages url (#21414) 2020-01-09 14:02:58 +01:00
Martin Lehmann
418cb9a8da Docs: Remove comment about upcoming alerting for singlestat and table panels (#21416)
This might help with the general tone of voice in https://github.com/grafana/grafana/issues/6983 😕
2020-01-09 14:02:08 +01:00
Torkel Ödegaard
91ea3b15fa Footer: Single footer component for both react & angular pages (#21389)
* Footer: Single footer implementation for both react & angular pages

* Export type

* Updates

* Use footer links in help menu

* Updates & Fixes

* Updated snapshot

* updated snapshot
2020-01-09 11:25:52 +01:00
vikkyomkar
3866f609ce API: Added alert state validation before changing its state (#21375)
* added alert state validation before changing its state

* modified boolean condition

* converted most occurring string into const

* referred the const of alert models
2020-01-09 11:18:51 +01:00
Torkel Ödegaard
fe61f6b7a7 AddDataSource: Added missing phantom plugin (#21406)
* AddDataSource: Added missing phantom plugin

* Fixed test
2020-01-09 08:26:32 +01:00
Marcus Efraimsson
baba1634b8 Plugins: Use grafana-plugin-sdk-go v0.5.0 (#21116)
* fix dispense

* plugin loading refactor

Moves common functionality of registering, starting,
stopping and restarting backend plugins to
backendplugin package.

* simplify plugin descriptors

* target sdk v0.5.0

Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
2020-01-08 11:43:28 -05:00
Ryan McKinley
5321e7536f UnitPicker: show custom units on load (#21397) 2020-01-08 07:16:42 -08:00
Shavonn Brown
cd5d5bcbba Cloud Watch: Standardize Config Editor Implementation (#20489)
* remove anon funcs, removed options from state, removed update method, static selects as constants

* cancellable promise

* cancel promise on unmount

* use new datasource funcs for dryer component
2020-01-08 08:57:52 -05:00
Erik Sundell
cf2dd51827 CloudWatch: dimension_values templating fix (#21401)
* Handle dimension value if passed as array

* Break out dimension value loading into its own func
2020-01-08 12:24:10 +01:00
Leonard Gram
d22e53bba8 Docs: explain how to setup the apt repo without helpers (#21194)
* Docs: explain how to setup the apt repo without helpers

* Docs: re-structured apt install docs

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Docs: improvements based on feedback

* Docs: appending is safer if the user for some reason wants both beta and non beta

* Docs: repo -> repository

* Update docs/sources/installation/debian.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-01-08 10:38:31 +01:00
Marcus Andersson
1ba5ccb159 Build: prevent changes to pkg/extentions/main.go from throwing error on merge 2020-01-08 07:08:59 +01:00
Ryan McKinley
f7053e19d2 TimeZones: fix utc test (#21393) 2020-01-07 14:01:06 -08:00
Leonard Gram
1c71637d11 Build: package all binaries for enterprise (#21381) 2020-01-07 16:00:58 +01:00
Lukas Siatka
34d9274c4c Datasource: fixes prometheus datasource tests - adds align range 2020-01-07 15:41:01 +01:00
Torkel Ödegaard
9492742812 CircleCI: Testing upgrade to CircleCI 2.1 (#21374) 2020-01-07 13:43:31 +01:00
Dominik Prokop
386035da4d Storybook: Remove reference to jquery.flot.pie file from storybook config (#21378) 2020-01-07 13:35:10 +01:00
Torkel Ödegaard
f774c4a076 Cloudwatch: Fixed crash when switching from cloudwatch data source (#21376) 2020-01-07 13:05:14 +01:00
Raghu Chinnannan
b4fa27b8a4 Docs: Added Squadcast notifications (#21372)
- Added Squadcast section 
- Added Squadcast to the **All supported notifiers** table.
2020-01-07 12:59:53 +01:00
Ryan McKinley
8233c407a2 Chore: upgrade d3 (#21368) 2020-01-07 02:59:11 -08:00
lzd
ee77e1a791 Datasource: fix a bug where deleting data source will trigger save and test events (#21300) 2020-01-07 09:48:46 +01:00
Dominik Prokop
630f75d3ef Forms: revamped select (#21092) 2020-01-07 09:20:06 +01:00
Ryan McKinley
eac66813ca Toolkit: add git log info to the plugin build report (#21344) 2020-01-06 17:10:15 -08:00
Emil Hessman
f0764ceda8 Docs: Use https scheme for Grafana playground links (#21360) 2020-01-06 08:25:13 -08:00
Robby Milo
90d20ec5af fix docs links (#21359) 2020-01-06 17:16:14 +01:00
Torkel Ödegaard
e78074992b AddDatasourcePage: Refactoring & more Phantom plugins (#21261)
* WIP: New types and state refactoring

* Added buildCategories & tests

* Added phantom plugins

* fixed tests

* Minor changes, force enterprise plugins to enterprise category

* Fixed tests
2020-01-06 16:56:34 +01:00
Torkel Ödegaard
f93f1c4b51 Chore: Remove empty flot.pie file (#21356) 2020-01-06 16:53:38 +01:00
Andrej Ocenas
27a308a3a4 Docs: Fix link (#21358) 2020-01-06 07:43:01 -08:00
Emil Hessman
06dee734bd Docs: Fix InfluxDB templated dashboard link (#21343) 2020-01-06 07:32:27 -08:00
Boris Granveaud
b8b618241e Rendering: Fix panel PNG rendering when using sub url & serve_from_sub_path = true (#21306)
* Rendering: fix dashboard rendering when using sub url

* rollback on render.go: no need to add sub-path
2020-01-06 08:12:18 +01:00
Ryan McKinley
1ba072cd58 NewsPanel: update default feed url (#21342) 2020-01-04 13:41:43 -08:00
Emil Hessman
aa58a21833 docs: fix influxdb templated dashboard link (#21336)
Fixes #21320
2020-01-03 15:12:38 -08:00
Diana Payton
8febceb67a Docs: Update Windows.md (#21333)
Updated instructions to reflect the changes to the installation page.
2020-01-03 15:10:57 -08:00
Ryan McKinley
1aa52f259c Arrow: don't export arrow... breaking phantomjs e2e test (#21331) 2020-01-03 10:00:30 -08:00
Ryan McKinley
e550572033 DataFrame: round trip metadata to arrow Table (#21277) 2020-01-03 08:12:19 -08:00
David
cb3d91b53c Prometheus: user metrics metadata to inform query hints (#21304)
* Prometheus: user metrics metadata to inform query hints

- no longer analyse datapoints
- either use metrics metadata to determine metrics type or use metric
name suffix
- removed testcases based on datapoints

* Added hint certainty and tests
2020-01-03 12:55:50 +01:00
okhowang
512a42d2c6 Panel: disable edit/duplicate/delete entry for repeat panel (#21257) 2020-01-03 12:18:39 +01:00
David
d63ad9ac93 Prometheus: Disable suggestions at beginning of value (#21302)
* Prometheus: Disable suggestions at beginning of value

- fixed comparison operator regex
- no longer suggest anything at beginning of label value

* Detect cursor in front of label values
2020-01-03 12:16:27 +01:00
Dominik Prokop
41fd265c64 grafana/ui: Do not build in strict mode as grafana/ui depends on non-strict libs (#21319) 2020-01-03 10:02:27 +01:00
Diana Payton
534e343c71 Docs: Update security.md (#20981)
* Update security.md

* Update security.md

* Update docs/sources/installation/security.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update security.md

* Update security.md

* Update security.md

Co-authored-by: Dan Cech <dan@aussiedan.com>
2020-01-02 13:51:49 -08:00
Ryan McKinley
e1acc77297 @grafana/data: use timeZone parameter rather than isUtc (#21276) 2020-01-02 08:11:28 -08:00
Ryan McKinley
c1b707874d Units: support dynamic count and currency units (#21279) 2020-01-02 07:46:49 -08:00
JJ Asghar
1764c2417f Docs: Added sudo and removed $ where inconsistent. (#21314)
I standardized the readme for `sudo` and removed the `$`.

Now you can copy paste the commands and just "install" via the rpm
based distros.

Signed-off-by: JJ Asghar <jjasghar@gmail.com>
Signed-off-by: JJ Asghar <awesome@ibm.com>
2020-01-02 07:40:09 -08:00
Paul Emmerich
42032f6c03 ImgUploader: add support for non-amazon S3 (#20354)
* imguploader: add support for non-Amazon S3 endpoints and forcing of path-style S3 addressing

fixes #11240

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-01-02 15:10:20 +01:00
okhowang
85072b78a4 Fix: tooltips value disappear when label has too long word (#21267) 2020-01-02 10:36:15 +01:00
Serhii Varakuta
48a93a5bd3 Docs: Update provisioning.md (#21303) 2019-12-31 07:32:05 -08:00
Diana Payton
ea934048f0 Docs: Update alerting_notification_channels.md (#21245)
* Update alerting_notification_channels.md

Minor edits and fixed stacked heading issue.

* Update docs/sources/http_api/alerting_notification_channels.md

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-12-31 07:30:53 -08:00
David
3667781e6f Loki: fix filter expression suggestions (#21290)
* Loki: fix filter expression suggestions

- dont suggest term completion items in filter expression
- allow at least one character before suggesting term items
- keep logql expression when switching between Metrics/Logs mode
- show only history by default in completion items

* Clear results when changing mode
2019-12-31 09:53:30 +01:00
David
334b89f3ee Prometheus: Fix label value suggestion (#21294)
* Prometheus: Fix label value suggestion

- remove quotes from typeahead input to suggest correct label values
- fix acceptance of partial label values

* Disable mid-word suggestions

* Fix test
2019-12-31 08:56:57 +01:00
David
649fa6789e Prometheus: Fix term completion that contain keywords (#21295)
- `unless`, `or` and `and` are binary operators
- if they appear in a query the query was broken up so the suggestor
only works on the current term
- this change fixes the splitter logic to make sure those keywords are
not inside a word
2019-12-30 18:03:35 +01:00
Diana Payton
355b906493 Docs: Fixed broken links in Basic Concepts (#21035)
* Fixed broken links

* Update basic_concepts.md

* Fix REF_NOT_FOUND errors

* add shortcode

Co-authored-by: Robby Milo <robbymilo@gmail.com>
2019-12-30 08:04:02 -08:00
Diana Payton
71411490bf Docs: Edited Windows install instructions (#20780)
* Edited Windows install instructions

Moved one section from Windows install guide to developer-guide.md. Edited some content in windows.md and will add questions.

* Updated per comments

* Fixed broken links in basic_concepts.md

* Revert "Fixed broken links in basic_concepts.md"

This reverts commit e524ea9e7b.

* Update windows.md
2019-12-30 07:53:38 -08:00
Diana Payton
de1e51448a Docs: Update troubleshooting.md (#21244)
Fixed a few minor grammar errors.

Fixes #19295
2019-12-30 08:38:51 +01:00
Alexandre de Verteuil
4f10dca058 Fix internal links in http_api/dashboard.md (#21255) 2019-12-30 08:38:08 +01:00
stephenbjm
b630e57290 Docs: Update README.md (#21274) 2019-12-30 08:18:51 +01:00
Marcus Efraimsson
4835539248 Docs: Fix aliases/redirects (#21241)
Makes all aliases rooted to /docs/grafana/latest.

Fixes #21240
2019-12-30 08:17:03 +01:00
Dave Henderson
e2375593fc Docs: Document tracing.jaeger configuration (#21181)
* Docs: Document tracing.jaeger configuration

Signed-off-by: Dave Henderson <dhenderson@gmail.com>

* Apply suggestions from code review

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

* Grammar fixes

Signed-off-by: Dave Henderson <dhenderson@gmail.com>

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2019-12-30 08:15:49 +01:00
Ryan McKinley
57c8155971 Websockets: upgrade websocket libray to 1.4.1 (#21280) 2019-12-29 23:07:38 -08:00
Ryan McKinley
d9e9843a10 FieldConfig: add thresholds and color modes (#21273) 2019-12-28 17:32:58 -08:00
Björn Rabenstein
36aad1c101 Prometheus: improve tooltips (#21247)
* Prometheus data source: Update tooltip for _Scrape interval_

The old tool tip was plainly wrong. The globally configured scrape
interval is not necessarily the most used scrape interval, so the new
wording is describing what actually matters. The evaluation interval
wasn't even mentioned before. And finally, the configured value is
not strictly a lower limit for the step query parameter as it can be
overridden by the panel option _Min time interval_.

I plan to explain the overriding intricacies in the tool tip for _Min
time interval_.

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

* Improve tooltip for _Min step_

The previous tool tip was mostly addressing aspects that are not
specific to _Min step_ (and might be more appropriate to be added to
the _Min time interval_ tool tip as that setting has a wider
scope). The new version emphasizes the important gotchas: that this is
an _additional_ lower limit, and that it is _not_ multiplied by the
resolution factor.

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

* Fixed snapshot

Co-authored-by: David <david.kaltschmidt@gmail.com>
2019-12-27 09:49:42 +01:00
Torkel Ödegaard
45b7de1910 Explore: Moves PromContext from query level to DataQueryRequest level (#21260)
Closes #19598

Fixes bug introduced recently where the new PromQueryEditor did not preserve
the PromContext.Explore set on the query model by PromQueryField which caused
the table to be empty for Prometheus in explore.
2019-12-27 09:11:16 +01:00
Łukasz Szczęsny
545b72da33 BridgeSrv: do not strip base from state.location.url (#20161) 2019-12-26 16:08:04 +01:00
Torkel Ödegaard
8477104925 Graph: another tooltip fix (#21251) 2019-12-25 08:15:31 +01:00
Zach Bagnall
d0360de8f1 Alerting: Add configurable severity support for PagerDuty notifier (#19425)
* Pagerduty notifier: configurable severity

Instead of hardcoding `critical` make it configurable per notification channel instance.

* fix html

* Add a test to ensure default severity is correct

* Notifications doc

* Add a non-default test

* Add err check on NewJson (all tests)

* Add default severity (critical) to AlertNotificationEditCtrl class
2019-12-24 09:32:05 +02:00
Torkel Ödegaard
8740c66218 Graph: Fixed no value in graph tooltip (#21246) 2019-12-24 08:25:17 +01:00
Ryan McKinley
af2cd77655 Units: support farenheit (existing misspelling) (#21249) 2019-12-23 22:05:26 -08:00
Maisy Kim
e031cbb1a1 Docs: fix typo (#21190) 2019-12-23 14:21:38 -08:00
David
d0ba644355 Promtheus: Fix hint and error display for query rows (#21242)
- prometheus explore editor introduced new styles for the hint display
- when multiple rows are rendered the hints are covered because they are
forced to have 0 height
- this change removes the 0-height
2019-12-23 19:53:42 +01:00
vikkyomkar
bc10a69626 Docs: fixed broken doc link for graph and table panels (#21238)
* fixed  broken doc link

* fixed broken doc link
2019-12-23 17:41:27 +01:00
vikkyomkar
68f73b18fb Docs: fix of broken doc link in the dashlist panel's help section (#21230)
* fixed the broker link of dashlist panel docs

* fixed broken document link
2019-12-23 17:40:43 +01:00
mpursley
bf79b97b6e Docs: Update the link to docs for singlestat (#21225) 2019-12-23 17:39:38 +01:00
yeungalan0
15fed09c48 Docks: Update provisioning.md with proper Slack settings (#21227)
From the below link seems that these are the proper slack settings, and I was able to test/verify. 
https://github.com/grafana/grafana/blob/master/pkg/services/alerting/notifiers/slack.go
2019-12-23 07:45:06 -08:00
David
6ac53a1312 Editor: Ignore closing brace when it was added by editor (#21172)
* Editor: Ignore closing brace when it was added by editor

- brace completion gets annoying if the user still types closing brace
- this change marks automatically added closing braces and when the user
types a closing brace at that position, it will be overridden instead of
added

* Fix label suggestions

* Correct brace behavior, but broken completion

* Rewrite auto-match detection with annotations
2019-12-23 12:49:55 +01:00
Lukas Siatka
74924c8284 Explore: moves add query row button below query rows (#20522)
* Explore: updates Query Row component, moves latency to query row actions

* Explore: updates query row actions - adds latency and removes add row button

* Explore: updates explore toolbar props, adds index of the last query row

* Explore: updates toolbar, adds add new row button

* Explore: updates add new query row toolbar button title to add query

* Explore: updates query row actions - adds disabled property on latency button

* Explore: updates query row actions snapshot

* Explore: updates styles

* Explore: updates query row, removes latency

* Explore: updates query row actions, removed latency

* Explore: updates query row actions test and snapshot

* Explore: updates toolbar, moves add new query row button below query rows

* Explore: updates add query row button color and adds transparent background to latency div

* Explore: updates styles for add query row button responsiveness

* Explore: updates query row with latency button, fixes alignment of overall latency

* Explore: updates query row actions snapshot

* Explore: removes overall latency

* Explore: updates query row latency - removes mouseover-triggered style changes

* Explore: updates query row actions snapshot

* Explore: moves styles from scss to emotion

* Add row button: Removed responsiveness, reused query row styles

Co-authored-by: David <david.kaltschmidt@gmail.com>
2019-12-23 12:29:00 +01:00
Lukas Siatka
1de24cc929 Explore: adds PrometheusExploreQueryEditor (#20195)
* Explore: updates prom query field styles with flex-grow

* Explore: adds prometheus explore query editor

* Explore: updates step input width in prom explore query editor

* Explore: updates prom explore query editor step field input placeholder to auto

* Explore: updates prom explore query editor to include history

* Explore: updates prom explore query editor, removes unused lodash import

* Explore: updates step spacing in prom explore query editor

* Explore: updates prom explore query editor - moves logic to query field

* Explore: updates prom query field - adds step field with conditional rendering

* Explore: updates promql cheat sheet with step description

* Explore: updates prom cheat sheet  step description

* Explore: updates styles - adds query row break class

* Explore: moves back step markup to PromExploreQueryEditor
2019-12-23 11:42:31 +01:00
Björn Rabenstein
7e8f4d0b0e Simplify adjustInterval (#21226)
Much easier to wrap one's head around it if it is expressed more
directly.

This is not mathematically the same as the previous version involved
more rounding than necessary because of the way the intervalFactor was
handled. I'd argue the new version is better because it gets closer to
the 11,000 points limit and thus approaches better what the user
wanted within the limits of Prometheus.

Note that in practice, the 11,000 points limit should never be of
relevance. (Even a 4k screen doesn't have 11k points on the x axis.)

Signed-off-by: beorn7 <beorn@grafana.com>
2019-12-23 08:28:08 +01:00
Torkel Ödegaard
31c59f3de9 Sass: Checked in tmpl files 2019-12-23 07:22:44 +01:00
Torkel Ödegaard
3347b45a95 Table: Component progress & custom FieldConfig options (#21231)
* Table: Set & use field display processor

* Use applyFieldOverrides outside in story instead

* Change types a bit

* Table: Move to flexible layout

* Simplest possible custom field option

* Skip default column

* Added textAlign

* Explore: Set display processor for table data frame

* Fixed storybook

* Refactoring

* Progress on cell display mode

* Major progress

* Progress & refactoring

* Fixes

* Updated tests

* Added more tests

* Table: Progress on cell style customization

* Restored testdata random walk table scenario

* put back unrelated change

* remove unused things

* Updated table story

* Renamed property

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2019-12-23 06:22:54 +01:00
Ryan McKinley
8d537b7afb Chore: remove StreamHandler and DataStreamState (#21234)
* remove StreamHandler

* remove DataStreamState
2019-12-23 06:16:04 +01:00
Torkel Ödegaard
6c2375e495 DashboardGrid: Fixed flickering while resizing (#21221) 2019-12-21 08:01:26 +01:00
Dan Cech
5addf9fafd docs: rename premium plugins to enterprise plugins (#21222)
* rename premium plugins to enterprise plugins

* Update docs/sources/enterprise/_index.md

Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2019-12-20 18:40:25 -05:00
Ryan McKinley
b8c0924ab1 NewsPanel: add news as a builtin panel (#21128) 2019-12-20 10:47:45 -08:00
Dominik Prokop
22ff0eab15 grafana/toolkit: Readme update (#21218) 2019-12-20 17:32:30 +01:00
Dominik Prokop
d98fa28287 grafana/toolkit: Resolve modules correctly (#21216) 2019-12-20 16:16:55 +01:00
Torkel Ödegaard
392819c5d0 New bar gauge style: Unfilled (#21201)
* BarGauge: Added unfilled option

* Fixed white theme and added 2 unit tests

* Added another demo dashboard

* Fixed dev env dashboards
2019-12-20 16:05:37 +01:00
Marcus Andersson
587e4009f3 Dashboard: new updated time picker (#20931)
* Dashboard: started to implement new time picker.

* TimePicker: working in full screen (except calendar).

* TimePicker: first draft on narrow screen variant.

* TimePicker: small adjustments to the narrow design.

* TimePicker: enabled range selection and started to style calendar.

* TimePicker: applied some more styling.

* Calendar: added so the calendar range selection is styled properly.

* Calendar: added styling for timepicker calendar in narrow screen.

* TimePicker: made it possible to select range from calendar.

* TimePicker: made the calendar have previous selected value.

* TimePicker: moved calendar to be able to update form state.

* TimePicker: calendar is now displayed onFocus or onClick.

* TimePicker: calendar will be closed if click outside input.

* Calendar: fixed the styling of the calendar in narrow screen.

* Calendar: made it work properly with narrow screen.

* TimePicker: connected recent to absolute time range.

* TimePicker: changed the label on recent ranges.

* TimePicker: cleaned up the range list and options.

* TimePicker: some more cleaning up.

* TimePicker: cleaned up the calendar a bit.

* TimePicker: some more refactorings.

* TimePicker: refactorings.

* TimePicker: styled modal properly.

* TimePicker: empty recent list.

* TimePicker: width when calendar in full screen.

* TimePicker: will validate input value.

* TimePicker: removed unused code.

* TimePicker: positioning with emotion instead of sass.

* Calendar: Made sure we send the dates in the correct order to the calendar.

* TimePicker: fixed theme.

* TimePicker: fixed positioning of the content.

* TimePicker: positioning of narrow.

* TimePicker: added some simple tets.

* TimePicker: fixed issue with invalid and added error message.

* TimePicker: added history.

* TimePicker: cleaned up snapshot data.

* TimePicker: fixed so we keep the quick values in the input.

* TimePicker: fixed the missing styling on UTC.

* TimePicker: added missing caret icon.

* TimePicker: fixed formatting on recent time ranges.

* TimePicker: added missing -.

* TimePicker: refactorings after feedback.

* TimePicker: renamed reserved prop name.

* TimePicker: added missing onChange call.

* TimePicker: removed alternative return type.

* TimePicker: fixed the sorting order on the recent list.

* TimePicker: added useCallback for the onEvent functions.

* TimePicker: moving away from default export.

* TimePicker: used the isMathString instead of private function.

* TimePicker: minor refactoring simplify the code.

* TimePicker: Added empty container that will expand when less then 4 recent searches.

* TimePicker: changed the top to be absolute relative to the container.

* TimePicker: updated snapshots for failing tests.

* Fixed shadow

* Move it down a bit

* added some more tests.

* Fixed so we change the anchor point of the time picker in really small screens.

* removed memo.

* fixed snapshot.

* Make sure that we always use the correct timeZone when formatting output.

* Fixed form background.

* Some minor fixes after demo.

* Making sure that empty info box is centered.

* updated snapshots for timepicker after css changes.

* fixed so we don't overflow when input validation error.

* adjusted final things on the time picker.

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2019-12-20 15:31:58 +01:00
Ryan McKinley
104c2e3636 Metrictank: fix bundled dashboard (#21209)
* update metrictank dashboard

* Restored dashboard datasource variable, and improved error handling in the import api handler

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2019-12-20 11:42:47 +01:00
Marcus Andersson
05d831df29 Tooltip: preventing xss injections via the colors variable. (#21203)
* Tooltip: preventing xss injections via the colors variable.

* added xss check for single series tooltop color.

* added sanitize to the hoverInfo.value.
2019-12-20 11:28:10 +01:00
Ivana Huckova
14b2dad9da Livetailing: set table withd to 100% (#21213) 2019-12-20 11:21:04 +01:00
Diana Payton
6cad058018 Docs: Fix broken link in debian.md (#21199)
Fixes #21169
2019-12-19 15:09:25 -08:00
Diana Payton
75c1b73064 Added back logo file (#21198) 2019-12-19 09:09:48 -08:00
Leonard Gram
f33a917af2 Docs: fix ordering of apt setup (#21192) 2019-12-19 15:48:16 +01:00
Sriramajeyam
88aab3e6c1 Docs: Fix Azure ad generic OAuth code markdown formatting (#21189) 2019-12-19 15:27:05 +01:00
Leonard Gram
15547290c1 docs: rendering plugin required for reporting (#21162)
* docs: rendering plugin required for reporting

* Update docs/sources/features/reporting.md

Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2019-12-19 14:55:18 +01:00
Hugo Häggmark
052d6984aa Chore: Fixes wrong e2e path in .gitignore (#21186) 2019-12-19 09:12:03 +01:00
Hugo Häggmark
f1b675b12e e2e: Waits for login before moving forward (#21185) 2019-12-19 07:51:32 +01:00
Torkel Ödegaard
0676189291 PanelChrome: Mini refactor (#21171) 2019-12-19 07:01:35 +01:00
Dave Henderson
66b70b50b8 Tracing: Support configuring Jaeger client from environment (#21103)
* Tracing: Support configuring Jaeger client from environment
* Tracing: Replace deprecated Jaeger Client call
2019-12-18 20:09:15 +01:00
Steven Vachon
7aeba652c9 @grafana/toolkit: webpack extend TS→JS (#21176) 2019-12-18 13:47:03 -05:00
Sriramajeyam
06347e3f86 [docs] Azure monitor link in templating (#21173)
Docs: Added missing azure monitor reference in Templating topic.
2019-12-18 07:30:12 -08:00
Sebastian Markgraf
f1845d8084 grafana/toolkit: Add option to override webpack config (#20872)
* Toolkit: Add possibility to add custom webpack config

* Toolkit: Refactor webpack to utilize async-await

* Toolkit: Rename config file and allow named export
2019-12-18 10:13:58 -05:00
Hugo Häggmark
34aaa3d1f7 Docs: Adds best practices after visit and a link back to e2e.md (#21117)
* Docs: Adds best practices after visit and a link back to e2e.md in grafana-e2e

* Update contribute/style-guides/e2e.md

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>

* Update packages/grafana-e2e/README.md

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>

* Docs: Changes after PR comments

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Docs: Changes after PR comments
2019-12-18 16:09:27 +01:00
Arve Knudsen
653e427433 Changelog: Add PagerDuty breaking change (#21170) 2019-12-18 15:00:43 +01:00
Torkel Ödegaard
10413c4aa5 DashboardGrid: Change grid margin to 8, to align to 8px grid (#21167) 2019-12-18 14:30:17 +01:00
michael-az
5b3ff90377 Alerting: Add more information to webhook notifications (#20420)
Adds the orgId, dashboardId and panelId of the Webhook alert notifier.
2019-12-18 14:03:59 +01:00
Peter Holmberg
2e60752258 Panel: Show inspect panel in Drawer instead of Modal (#21148) 2019-12-18 13:57:07 +01:00
David
34c1433ba4 Prometheus: Fix typehead after binary operators (#21152)
- no longer do right-trim to prevent suggestions after space
- rely on splitting on syntax elements to identify relevant prefix
- added tests
2019-12-18 13:35:31 +01:00
Leonard Gram
ff422be961 docs: always updates docker image before building docs site (#21165) 2019-12-18 13:26:47 +01:00
Hugo Häggmark
05cb85feba Table: Matches column names with unescaped regex characters (#21164)
* Table: Matches column names with unescaped regex characters
Fixes #21106

* Chore: Cleans up unused code
2019-12-18 12:38:39 +01:00
Dominik Prokop
26aa1f0cca DataLinks: Sanitize data/panel link URLs (#21140)
* Sanitize html in panel links

* Add sanitize-url package

* Enable config mocking

* Sanitize datalinks urls

* Update public/app/core/config.ts

* Minor test update

* Remove sanitize-url dependency

* Remove typings

* Review update

* Revert "Remove sanitize-url dependency"

This reverts commit c4f38e6de6.

* Revert "Remove typings"

This reverts commit 676d47e8c2.

* Sanitaze, don't escape html when sanitizing URL
2019-12-18 11:31:11 +01:00
Torkel Ödegaard
475bd7ad09 Dashboard: Only show resize-handle on hover (#21160) 2019-12-18 11:15:59 +01:00
Christoph
8c089b98b3 PagerDuty: Fix custom_details to be a JSON object instead of a string (#21150) 2019-12-18 11:42:25 +02:00
Peter Holmberg
e9079c3faa grafana/ui: New table component (#20991)
* first working example

* Support sorting, adding types while waiting for official ones

* using react-window for windowing

* styles via emotion

* sizing

* set an offset for the table

* change table export

* fixing table cell widths

* Explore: Use new table component in explore (#21031)

* Explore: Use new table component in explore

* enable oncellclick

* only let filterable columns be clickable, refactor renderrow

* remove explore table

* Keep using old merge tables logic

* prettier

* remove unused typings file

* fixing tests

* Fixed explore table issue

* NewTable: Updated styles

* Fixed unit test

* Updated TableModel

* Minor update to explore table height

* typing
2019-12-18 08:38:50 +01:00
Hugo Häggmark
841cffbe9a e2e: Migrates query variable CRUD tests to new framework (#21146)
* Refactor: Adds params to visit

* Refactor: Restructures exported Pages somewhat

* Refactor: Moves more into new framework but holdup because of bugs in digest

* Refactor: Finish migrating templating e2e tests to new framework

* Refactor: Changes after merge with master

* Refactor: Removes weird change

* Refactor: Adds duplication test

* Refactor: Adds move down and move up variable asserts

* Refactor: Adds some test to value select dropdown
2019-12-18 06:13:58 +01:00
Boyko
331bc173cc Chore: Upgrade react, react-dom, react-test-renderer versions (#21130)
* Chore: Upgrade react, react-dom, react-test-renderer versions

* Chore: Normalize windows path for webpack plugin test

* Chore: Replace deprecated react-testing-hooks-library
2019-12-17 13:42:30 +01:00
Ivana Huckova
f8fa140ad1 Fix log row when query is short (#21126) 2019-12-17 12:11:50 +01:00
David
13073fa6ba Prometheus: Display HELP and TYPE of metrics if available (#21124)
* Prometheus: Display HELP and TYPE of metrics if available

- Prometheus recently added a metadata API around HELP and TYPE of
metrics
- request metadata when datasource instance is created
- use metadata to show help and type in typeahead suggestions and in
metrics selector as tooltip

* Fix types
2019-12-17 11:06:43 +01:00
Hugo Häggmark
7d21868931 e2e: Updates truth image (#21132) 2019-12-17 09:15:53 +01:00
Brian Curtich
cef328d1d6 Cloudwatch ECS Container Insights Support (#21125) 2019-12-17 09:58:24 +02:00
Torkel Ödegaard
4f1fffb948 FontSize: Change base font size to 14px (#21104) 2019-12-16 17:45:33 +01:00
Ivana Huckova
842dde3dc9 Explore: Refactor log rows (#21066) 2019-12-16 16:07:36 +01:00
Marcus Efraimsson
71382ae7ed phantomjs: performance.getEntriesByType not supported (#21009) 2019-12-16 09:40:12 +01:00
Torkel Ödegaard
16f0e75448 New panel editor (behind feature toggle) (#21097)
* WIP: initial 10min poc of new panel editor

* added queries

* PanelEditor: copy panel model when going into edit mode

* Added option
2019-12-16 09:18:48 +01:00
Hugo Häggmark
664cb5f8f1 e2e: Adds ScenarioContext and video recordings to e2e (#21110)
* Refactor: Adds ScenarioContext

* Refactor: Removes async

* Refactor: Adds video and reverts CIRCLE_SHA2 to CIRCLE_SHA1

* Refactor: Adds videos to release job as well
2019-12-16 08:49:36 +01:00
Torkel Ödegaard
fcc74ad2b4 DashboardImport: Fixes broken import page in prod builds (#21101) 2019-12-14 17:50:31 +01:00
dependabot[bot]
8283cd4b4c Dependencies: Bump npm from 6.9.0 to 6.13.4 (#21095)
Bumps [npm](https://github.com/npm/cli) from 6.9.0 to 6.13.4.
- [Release notes](https://github.com/npm/cli/releases)
- [Changelog](https://github.com/npm/cli/blob/latest/CHANGELOG.md)
- [Commits](https://github.com/npm/cli/compare/v6.9.0...v6.13.4)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-14 06:38:44 +01:00
Diana Payton
c91a20f822 Docs: Fix broken link in loki.md (#21098)
Fixed broken video link
2019-12-13 17:21:11 -08:00
Marcus Efraimsson
1ff7496748 Dependencies: Upgrade grunt-contrib-compress to resolve issues with iltorb (#21096) 2019-12-13 20:46:49 +01:00
Diana Payton
5baf070bc3 Update CODEOWNERS (#21093)
* Update CODEOWNERS

Made myself the codeowner of `contribute` so I have visibility on updates

* Update CODEOWNERS
2019-12-13 11:16:22 -08:00
Torkel Ödegaard
d28c5ff113 E2E: Testing recording e2e tests (#21094) 2019-12-13 19:56:33 +01:00
Ryan McKinley
6de4933a4a FieldConfig: set min/max automatically for gauge (#21073) 2019-12-13 08:36:49 -08:00
Jerry Ylilammi
e27ab89aed Postgres/MySQL/MSSQL: Adds support for region annotations (#20752)
Adds support for region annotations in Postgres, MySQL and 
MSSQL data sources by adding a column named timeend to 
annotation query.

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

Closes #20918
Ref #10589
2019-12-13 17:25:36 +01:00
Shavonn Brown
f65da93d72 Azure Monitor: Use default from datasource if not saved on dashboard/query (#20899)
* use default from datasource if not saved on dash/query

* find datasource default workspace in returned workspace list

* don't need the find

* fix dropdown
2019-12-13 11:03:08 -05:00
Shavonn Brown
c14398edc8 Azure Monitor: Copy AM Creds to Log Analytics When Using Same As (#21032)
* copy creds draft

* copy azure monitor creds to log analystics for sameas

* alert

* update snapshot
2019-12-13 11:02:39 -05:00
Robby Milo
e5695b155b Docs: Add minimal hugo build, update docs README (#20905)
* initial commit

* remove menu and submenu

* improve layout templates, improve README

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* fix typo

* remove layouts

* update readme, makefile

* update docs command

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2019-12-13 15:47:28 +01:00
Torkel Ödegaard
096b82027c CI: Added junit test report (#21084)
* CI: Added junit test report

* Removed leftover

* Tesing

* removed reporter

* set max workers 2

* another test

* Fixed unit test

* Restored ci stuff
2019-12-13 14:56:25 +01:00
Alexander Zobnin
fd2131c1e3 UI: ConfirmButton component (#20993)
* UI: ConfirmButton component

* UI: add link button variant

* UI: add ConfirmButton story with delete option

* Chore: use ConfirmButton instead of DeleteButton

* UI: remove DeleteButton

* UI: rename confirmButtonVariant to confirmVariant

* UI: use Form.Button in ConfirmButton

* Chore: use sm ConfirmButton size after changing defaults

* Revert "UI: add link button variant"

This reverts commit 4372350daa.

* Chore: add 'link' variant type to the Button

* UI: DeleteButton component on top of ConfirmButton

* Chore: use DeleteButton instead of ConfirmButton

* Chore: DeleteButton, use md size by default

* Chore: update test snapshots
2019-12-13 14:42:18 +03:00
kay delaney
4dba02dd20 Angular/React: Migrates team creation form to react (#21058) 2019-12-13 08:51:10 +00:00
Hugo Häggmark
483415ac7c Templating: Fixes digest issues in Template Variable Editor (#21079)
* Fix: Adds extra digest after promises

* Feature: Adds promise to digest utility
2019-12-13 09:47:53 +01:00
Torkel Ödegaard
98bea0990f OrgSwitcher: Fixed issue rendering org switcher even when it's not open (#21061)
* OrgSwitcher: Fixed issue rendering org switcher even when it's not open

* Updated test

* Fixed unit test
2019-12-13 09:27:45 +01:00
Witek Bedyk
818972f11b Chore: Remove rejected files (#21072)
These files get created when applying a patch with some hunks being
rejected. These two files can be safely ignored.
2019-12-13 09:05:54 +01:00
Hugo Häggmark
e96f962076 e2e: Uses should on first element after visit to prevent flakiness (#21077) 2019-12-13 08:39:12 +01:00
Ryan McKinley
1aa39ee458 FieldConfig: support overrides model (#20986) 2019-12-12 14:55:30 -08:00
Torkel Ödegaard
1f73e2aadf AngularPanels: fixed transparency issue (#21070) 2019-12-12 22:35:37 +01:00
Diana Payton
c27262c50c Docs: Update configuration.md for #3349 (#21069)
* Update configuration.md

Updated logs section and clarified some of the file location and commenting information.

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-12-12 11:19:41 -08:00
Alexander Morozov
06bf7e8ef1 OAuth: Removes send_client_credentials_via_post setting (#20044)
Removes send_client_credentials_via_post oauth setting and 
use auto-detect mechanism instead.
By these changes also fixes statichcheck errors

Ref #8968
2019-12-12 20:00:56 +01:00
Sofia Papagiannaki
b12dc890b8 API: Validate redirect_to cookie has valid (Grafana) url (#21057)
* Restrict redirect_to to valid relative paths

* Add tests
2019-12-12 17:08:34 +02:00
Ivana Huckova
cd39c2bd25 Explore: Refactor log details table (#21044) 2019-12-12 16:00:41 +01:00
Hugo Häggmark
a187500c0e Prometheus: Prevents validation of inputs when clicking in them without changing the value (#21059)
Fixes #21056
2019-12-12 13:26:12 +01:00
Hugo Häggmark
e69ec6ca53 Prometheus: Fixes so user can change HTTP Method in config (#21055)
Fixes #21004
2019-12-12 11:52:03 +01:00
Torkel Ödegaard
4e1e0b9065 MetricSegment: Fix metric segment UI crash in prod builds (#21053) 2019-12-12 09:22:25 +01:00
Itamar Turner-Trauring
70e38ec352 OpenTSDB: Adding lookup limit to OpenTSDB datasource settings (#20647)
* feat: adding lookup limit to OpenTSDB settings

Adding lookup to OpenTSDB datasource settings and using it in the datasource for tag value lookup and suggest

* Document the change.

* feat: UI for configuring OpenTSDB lookup limit.

* Apply prettier.

* Fix compilation error.
2019-12-12 09:02:50 +01:00
Hugo Häggmark
8fd1931e1c Templating: Fixes default visibility for submenu to same as dashboard (#21050) 2019-12-12 08:04:36 +01:00
Diana Payton
3e73258c1a Create CODEOWNERS (#21045)
Added CODEOWNERS file, made myself the owner of the docs directory.
2019-12-11 13:34:32 -08:00
Andrej Ocenas
5a3c1dc6a4 Elastic: Add data links in datasource config (#20186) 2019-12-11 17:40:56 +01:00
csyangchen
34299a1bd2 Alerting: Fix panic in dingding notifier (#20378)
dingding notifier fails to send alert messages containing JSON, 
This change use map and json.Marshal to always produce valid 
JSON body.

Fixes #9771
2019-12-11 17:01:01 +01:00
David
e7ae220cde Logs: Optional logs label column (#21025)
* Logs: Optional logs label column

- reintroduces label column that was removed when log details were
introduced
- added to explore and also as a new option to logs panel
- explore column settings now stored in localstorage
- labels are rendered with font size xs
- labels that start with `_` or are called `level` or `filename` are not
displayed
- removed click handlers and moved remaining `LogLabel` logic into `LogLabels`

* Added prop to satisfy interface

* Review feedback

* removed comment

* Changed label of label column switch
2019-12-11 16:11:32 +01:00
Marcus Andersson
c1b74becce Chore: updated to latest stable version (#21033) 2019-12-11 15:55:27 +01:00
Marcus Andersson
5568b32c9b Docs: change log for release v6.5.2 (#21028) 2019-12-11 15:14:48 +01:00
Marcus Efraimsson
34236ca1ae Chore: Improve rendering logging (#21008)
Moving info log from phantomjs to rendering service 
so it's logged for all kinds of renderers.
Add debug log for image renderer plugin and remote 
renderer.
2019-12-11 15:06:59 +01:00
Emil Tullstedt
fe8b533497 Modules: Add patched goavro dependency for extensions (#21027) 2019-12-11 14:44:29 +01:00
Ivana Huckova
32c9d558f9 Explore: Sync timepicker and logs after live-tailing stops (#20979) 2019-12-11 14:14:39 +01:00
Hugo Häggmark
8495af4c52 Fix: Shows SubMenu when filtering directly from table (#21017)
* Fix: Shows SubMenu when filtering from table
Fixes #20270

* Tests: Updates snapshots

* Refactor: Changes after PR comments

* Refactor: Changes template
2019-12-11 14:09:57 +01:00
okhowang
4698cef2a2 Alerting: Fix template variable in query check (#20721) 2019-12-11 11:11:37 +01:00
Ryan McKinley
23510f95a3 Toolkit: remove unused plugin-ci report types (#21012) 2019-12-10 16:06:41 -08:00
Torkel Ödegaard
72ee1b9a94 MixedDatasources: Do not filter out all mixed data sources in add mixed query dropdown (#20990) 2019-12-10 23:17:55 +01:00
Sebastian Markgraf
7d6bd78e0b Docs: Change checkout to check out where necessary (#20926)
Fixes #20775
2019-12-10 10:23:07 -08:00
David
75923c43d1 Promtheus: Improve tab completion (#20938)
Change in behavior:

- no longer suggest everything in empty field, only history
- term suggestions need at least one character
2019-12-10 16:11:31 +01:00
Leonard Gram
67d83d1ffc build: adds IANA timezone info to windows build (#21001) 2019-12-10 16:00:37 +01:00
David
2d5dc5d6b2 Loki: fix labels fetching when no initial range given (#21000) 2019-12-10 15:29:32 +01:00
Sofia Papagiannaki
3f48033b38 Docs: Update datasource API examples (#20951)
* Update requests and responses

* Add basic auth example
2019-12-10 15:30:06 +02:00
Erik Sundell
0e4850f203 UI: Segment fixes (#20947)
* Add support for primitive values/onchange

* Fix segment clickaway bug

* Fix onchange

* Use primitive in cloudwatch

* Add placeholder

* Use placeholder in cloudwatch editor

* Fix lint error

* Fix lodash import

* Use new component story format

* Add support for autofocus

* Use selectable value for onchange event

* Fix lint error
2019-12-10 13:00:22 +01:00
Labesse Kévin
26789d1eb6 Stackdriver: Make service list searchable (#20989)
* remove non-searchable option

* fix unit test

Signed-off-by: Kevin Labesse <kevin@labesse.me>

* fix unit test
2019-12-10 12:29:25 +01:00
Vilhelm Prytz
83b402165d Remove un-used imports (#20937) 2019-12-10 11:29:15 +01:00
Mitsuhiro Tanda
0c89b93ce0 upgrade aws-sdk-go (#20957)
Upgrading aws-sdk-go since there's additional changes 
for IMDSv2 support.
2019-12-10 10:26:53 +01:00
Alexander Zobnin
f24b84faef UI: ConfirmModal component (#20965)
* UI: ConfirmModal component based on Modal

* UI: refactor ConfirmModal after Modal changes

* UI: use Icon component for Modal

* UI: ConfirmModal tests

* UI: ConfirmModal story
2019-12-10 11:57:34 +03:00
Hugo Häggmark
1774b8f7e9 Docs: Updates from puppeteer to Cypress (#20962)
* Docs: Updates from puppeteer to Cypress

* e2e: Adds documentation

* Docs: Adds link to e2e framework from contributing

* Docs: Updates after PR comments

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>

* Update contribute/style-guides/e2e.md

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

* Docs: Breaks a long sentance in two
2019-12-10 09:49:12 +01:00
Hugo Häggmark
c530426506 e2e: Adds better log information during test runs (#20987)
* e2e: Adds log output when you use a selector

* e2e: Adds more log output

* Refactor: Changes after PR comments
2019-12-10 09:47:03 +01:00
lzd
6efadc9d79 Alert: If the permission is forbidden, keep the historical alarm data present. (#19007) 2019-12-10 09:22:49 +01:00
Hendrik van Huyssteen
bf0d87aaf6 Graph: Add fill gradient option to series override line fill (#20941) 2019-12-10 09:09:48 +01:00
Jiajun Huang
5e34e061d5 use https for fetch gravatar by default (#20964) 2019-12-10 08:59:11 +01:00
David
1a2dad9d0c Prometheus: disable dynamic label lookup on big datasources (#20936)
* Prometheus: disable dynamic label lookup on big datasources

- when a prometheus datasource has more than 10000 metrics, label lookup
for the query field is disabled
- installations of that size have slow typehead lookup times and make
the editor sluggish

* Raise dynamic lookup threshold to 10000 metrics

* Run start tasks again
2019-12-09 17:02:17 +01:00
David
7665dcc867 Loki: Fix datasource config page test run (#20971)
- since the API update, the URL fallback was working, but the response
format also needed adapting: `data` (v1) vs `values` (pre-v1)
- this change looks for either data or values in the response for test
and metadata requests
2019-12-09 16:45:56 +01:00
David
36ff6d8635 Devenv: Fix loki block (#20967) 2019-12-09 15:29:47 +01:00
Hugo Häggmark
8140c9bab7 e2e: Replaces truth image (#20966) 2019-12-09 14:45:24 +01:00
Dominik Prokop
5d6d5bf64d Forms: introduce RadioButtonGroup (#20828)
* introduce checkbox theme variables

* Add checkbox component

* Style tweaks

* Namespace form styles returned from getFormStyles

* wip

* Radio button ui

* Add simple docs for RadioButtonGroup

* Merge fix

* Move radio button variables from theme to component style getter
2019-12-09 14:41:30 +01:00
Hugo Häggmark
a3ab04c0de Fix: Adds e2e as a package that needs to be built (#20961) 2019-12-09 11:56:11 +01:00
Erik Sundell
93ab0532c7 Make sure datasource variable is being used everywhere (#20917) 2019-12-09 11:35:26 +01:00
Hugo Häggmark
0e952d5e5f Refactor: Navigates directly to add data source page instead (#20959) 2019-12-09 02:20:13 -08:00
Torkel Ödegaard
fc00d8336f Alerting: Improve alert threshold handle dragging behavior (#20922) 2019-12-09 10:49:35 +01:00
Hendrik van Huyssteen
caa3c6c9a5 DisplayProcessor: Interpret empty strings as NaN instead of 0 to support empty value map texts in Singlestat (#20952) 2019-12-09 10:07:31 +01:00
Andrej Ocenas
a7f4e4c56a Prometheus: Refactor labels caching (#20898) 2019-12-09 09:46:52 +01:00
Hugo Häggmark
58cffde0f2 e2e: Uses Cypress instead of Puppeteer (#20753)
* WIP: intial commit

* Tests: Runs e2e tests

* Refactor: Adds BASE_URL support

* Refactor: Adds namespacing

* Refactor: Cleans up the Page api

* Build: Adds to build-branches-and-prs job for testing

* Build: Hardcoded image for now

* Refactor: Uses Selectors in App

* Refactor: Adds addDataSource flow

* WIP

* Refactor: Adds e2eScenario

* Refactor: Adds add and delete scenarios

* Refactor: Adds logging

* Refactor: Adds ability to for Selectors with variables

* Refactor: Using variable selectors instead

* Refactor: Adds flow until Share Panel

* Refactor: Adds clicking on rendered image link

* Refactor: Deletes log output

* Refactor: Updates snapshots

* Chore: Reverts changes

* Refactor: Removes log plugin because maybe it breaks yarn build

* Refactor: Adds rendered image download

* Refactor: Adds image comparison

* Refactor: Removes uncaught errors override

* Refactor: Changes order of images to compare

* Refactor: Updates truth image

* Build: Updates path to CI artifacts

* Refactor: Cleaning up types and config

* wip

* Refactor: Cleans up external api

* Refactor: More cleanup

* Refactor: More cleanup

* Refactor: Removes usages of Pages and Flows

* Refactor: Removes last traces of Cypress in spec

* Refactor: Adds comments
2019-12-09 00:14:25 -08:00
Paul Traylor
10d36b282b Renderer: Add user-agent to rendering plugin requests (#20956) 2019-12-09 09:11:40 +01:00
Ryan McKinley
4ba5d946f2 DataSource: remove delta option (#20949) 2019-12-08 16:13:14 -08:00
Sofia Papagiannaki
4ad8b6f030 Elasticsearch: set default port to 9200 in ConfigEditor (#20948) 2019-12-07 21:50:54 -08:00
Ivana Huckova
23327fcdea Loki: Remove appending of (?i) in Loki query editor if not added by user (#20908) 2019-12-06 18:04:13 +01:00
kay delaney
b4736558ac Datasource/Loki: Loki now goes to Logs mode when importing prom queries (#20890)
* Datasource/Loki: Loki now goes to Logs mode when importing prom queries
Closes #20831

* Fixes behavior and adds tests

* Update public/app/features/explore/state/actions.test.ts
2019-12-06 17:00:05 +01:00
David
ab3df98523 Cloudwatch: Defined explore query editor for cloudwatch (#20909)
* Defined explore query editor for cloudwatch

* Fix types
2019-12-06 16:04:31 +01:00
kay delaney
6f4f327887 Datasource/Loki: Empty metric name no longer replaced by query (#20924)
Closes #20762
2019-12-06 14:30:27 +00:00
Emil Tullstedt
30771f25bf Revert "Modules: Add goavro dependency for extensions (#20920)" (#20928)
Goavro doesn't compile on 32-bit systems.

This reverts commit 413be3a6a0.
2019-12-06 14:10:07 +01:00
Diana Payton
1d2a7a2c37 Docs: Update debian.md (#20910)
Minor edits
2019-12-06 12:04:29 +01:00
Erik Sundell
6f468c670a UI: Segment Input change (#20925)
* Add input segment

* Rename story

* Cleanup

* Fix lint error

* More cleanup

* Use measure text util

* Keep value in local state
2019-12-06 11:50:45 +01:00
Emil Tullstedt
413be3a6a0 Modules: Add goavro dependency for extensions (#20920) 2019-12-06 10:33:19 +01:00
Erik Sundell
047abc87c2 UI: Segment Input (#20904)
* Add input segment

* Rename story

* Cleanup

* Fix lint error

* More cleanup

* Export ui component

* Use measure text util
2019-12-06 10:24:34 +01:00
Erik Sundell
a533e00622 Remove escaping of \ ( ) characters (#20915) 2019-12-06 09:59:33 +01:00
Torkel Ödegaard
2a44cbd137 AngularPanels: Check for digest cycle on root scope (#20919) 2019-12-06 09:03:14 +01:00
Shavonn Brown
ced13da889 InfluxDB: Use new datasource update option funcs (#20907) 2019-12-06 08:57:05 +01:00
Diana Payton
4a25ec0d36 Docs: Update debian-ubuntu installation instructions (#20875)
* Update debian-ubuntu installation

Major rework of debian.md, minor updates to a configuration.md and upgrading.md.

* updated docs

Updated per Torkel's comments

* Update debian.md

Added wget to common properties install command

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update docs/sources/installation/debian.md

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Apply suggestions from code review

Co-Authored-By: Dan Cech <dcech@grafana.com>

* Update upgrading.md

* Update upgrading.md

* Update debian.md

Added ARM link
2019-12-05 10:51:08 -08:00
Torkel Ödegaard
a9bf8f80e9 Search: Fixed angular digest issues (#20906) 2019-12-05 19:17:26 +01:00
Erik Sundell
9d9f0e1b8c Remove false positive error message for expression and id field (#20864) 2019-12-05 18:38:40 +01:00
Robby Milo
d8984d211c fix notifications page (#20903) 2019-12-05 17:12:00 +01:00
Diana Payton
4a7c514727 Update documentation-style-guide.md (#20871)
Updated "open source" word usage.
2019-12-05 07:24:32 -08:00
Robby Milo
cbd81ffeb8 Docs: update content to work with website repo (#20693)
Updates the docs to work with the website repo - mainly 
relative link updates.
Adds a menu.yaml file to build the sidebar menu (no longer 
using front matter weight).
2019-12-05 13:09:57 +01:00
Ivana Huckova
827688f152 Elastic: Fix multiselect variable interpolation for logs (#20894) 2019-12-05 11:55:03 +01:00
Torkel Ödegaard
20fad92a80 Singlestat: Fixed unit not showing and switched to new unit picker (#20892) 2019-12-05 11:54:14 +01:00
Torkel Ödegaard
87485e24a4 MetaAnalytics: Minor fix for meta analytics event (#20888)
* Minor fix for meta analytics event

* Fixed dashboardSrv issue

* Added timeSinceNavigationStart
2019-12-05 11:51:38 +01:00
Andrej Ocenas
c4c031ef43 Explore: Cleanup redundant state variables and unused actions (#20837) 2019-12-05 11:22:46 +01:00
kay delaney
880fbcb09a Chore/Tech debt: Remove (most) instances of $q angular service use (#20668)
* Chore/Tech debt: Remove (most) instances of $q angular service use
Removes instances where the angular $q service is used and replaces
it with native Promises.
2019-12-05 09:04:03 +00:00
Torkel Ödegaard
62f0aca3e6 AngularPanels: Fixed loading spinner being stuck in some rare cases (#20878) 2019-12-05 08:59:07 +01:00
Hendrik van Huyssteen
9a7a1b86ee TeamPicker: Increase size limit from 10 to 100 (#20882) 2019-12-05 08:32:18 +01:00
Dominik Prokop
178bb1d3ab Echo: mechanism for collecting custom events lazily (#20365)
* Introduce Echo for collecting frontend metrics

* Update public/app/core/services/echo/Echo.ts

Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com>

* Custom meta when adding event

* Rename consumer to backend

* Remove buffer from Echo

* Minor tweaks

* Update package.json

* Update public/app/app.ts

* Update public/app/app.ts

* Collect paint metrics when collecting tti. Remove echoBackendFactory

* Update yarn.lock

* Move Echo interfaces to runtime

* progress on meta and echo

* Collect meta analytics events

* Move MetaanalyticsBackend to enterprise repo

* Fixed unit tests

* Removed unused type from test

* Fixed issues with chunk loading (reverted index-template changes)

* Restored changes

* Fixed webpack prod
2019-12-05 08:30:39 +01:00
Torkel Ödegaard
4b8a50e70b StatPanel: change to beta 2019-12-04 21:34:33 +01:00
Shavonn Brown
2098b9eb44 Azure Monitor: Standardize Config Editor Implementation (#20455)
* initial changes - removal from state, remove anon functions, reset secrets empty

* post testing cleanup

* init promise cancellation, other cleanup

* workspaces response parser, remove version incrementing

* update datasource funcs - DRYer

* remove prop mutation

* func to modify root config opt

* fix version issue

* update snapshot
2019-12-04 14:35:53 -05:00
Marcus Andersson
5f72bfe6e7 GraphTooltip: added boundaries so we never render tooltip outside window. (#20874) 2019-12-04 18:08:49 +01:00
Dominik Prokop
ad33d95dd3 Graphite: Use data frames when procesing annotation query in graphite ds (#20857)
* Use data frames when procesing annotation query in graphite ds

* Remove destruct
2019-12-04 18:07:11 +01:00
Andrej Ocenas
4c9cb415ec Elastic: Fix parsing for millisecond number timestamps (#20290)
* Stop parsing 'field'

* Remove time field from query for docs queries

* Test refactor to test all versions

* Fix tests
2019-12-04 14:43:43 +01:00
Robby Milo
c43aa3485c Docs: Sync docs with website repo via GitHub Action (#20694)
* add GitHub action to sync docs with website repo

* remove trigger-docs-update from circleci jobs

* update access token
2019-12-04 14:36:50 +01:00
Marcus Andersson
7a710737ae Gauge/BarGauge: Added support for value mapping of "no data"-state to text/value (#20842)
* FieldDisplay: added support for value mapping of no data state.

 Committer: Marcus Andersson <marcus.andersson@grafana.com>

* FieldDisplay: fixed issue when switching between modes and display numeric was null.

* ValueMapping: introduced a private function for checking null values.

* FieldDisplay: refactoring of test setup to reduce duplication.

* Docs: added info about new 'no data' value to text mapping.

* Docs: improved according to feedback. Reverted prettier formatting changes.

* FieldDisplay: removed unused import.
2019-12-04 14:29:42 +01:00
Erik Sundell
e0229045f2 UI: Use SelectableValue as Segment value (#20867)
* Use SelectableValue for segment value

* Update cloudwatch components to use new segment props
2019-12-04 13:55:23 +01:00
kay delaney
b111fee642 Datasource/Loki: Fixes issue where time range wasn't being supplied with annotation query (#20829)
* Datasource/Loki: Fixes issue where time range wasn't being supplied with annotation query
Closes #20667

* Add test to verify new behavior

* Added end/start check to test
2019-12-04 12:43:22 +00:00
Arve Knudsen
abc7893fdc Server: Return 404 when non-pending invite is requested (#20863)
Server API: Return 404 when non-pending invite is requested
2019-12-04 13:01:37 +01:00
Andrej Ocenas
6682a36b8a Explore: Fix reset reducer duplication (#20838) 2019-12-04 12:51:15 +01:00
Marcus Efraimsson
79c0fa4ca5 CLI: Return error and aborts when plugin file extraction fails (#20849)
Return error and aborts when plugin file extraction fails.
If file is in use, a somewhat user-friendly message is returned.

Fixes #20841
2019-12-04 12:48:40 +01:00
kay delaney
02bbdca604 Datasource/Loki: Simplifies autocompletion (#20840)
Unifies loki autocomplete so behavior isn't different
across explore modes.
Closes #20769
2019-12-04 09:00:35 +00:00
Milan Pavlik
fd2b39a3e9 Update README.md (#20820) 2019-12-04 09:09:23 +01:00
Ryan McKinley
d7c76dacad ValueFormats: dynamically create units (#20763)
* update fixed

* update fixed

* update fixed

* don't change any tests

* add mising space

* Custom unit formats

* return a string for kbn

* return a string for kbn

* return a string for kbn

* Simplify unit tests

* More units

* fix more tests

* fix more tests

* fix more tests

* format values

* format values

* TimeSeries to string

* more kbn tests

* use the formatted value

* BarGauge: Fixed font size calculations

* support prefix

* add si support

* avoid npe

* BarGauge/BigValue: value formatting

* fix some tests

* fix tests

* remove displayDateFormat

* another unicode char

* Graph: Use react unit picker

* Updated unit picker

* Fixed build errors

* more formatting

* graph2 tooltip formatting

* optional chaining
2019-12-04 09:08:07 +01:00
Ryan McKinley
3289ee8b77 @grafana/data: don't export ArrowDataFrame (#20855) 2019-12-03 23:17:48 -08:00
Kyle Brandt
431bf2b179 @grafana/data: export ArrowDataFrame (#20832) 2019-12-03 21:17:36 -08:00
Andrej Ocenas
700b93a75c Docs: Add section about derived fields for Loki (#20648) 2019-12-03 23:38:25 +01:00
kay delaney
a093fbb51a Migration: Migrate org switcher to react (#19607)
* Migration: Migrate org switcher to react

* Improve modal overflow behavior

* Updated modal backdrop

* Renamed type

* Modal: Refactoring and reducing duplication
2019-12-03 22:47:19 +01:00
Diana Payton
5cd4ffffe3 Remove screencasts.md (#20845)
Deleted file and removed link
2019-12-03 13:24:08 -08:00
Diana Payton
363bd1174a Update requirements.md (#20778)
* Update requirements.md

Thoroughly read through and edited requirements.md

* Update requirements.md

Changed line 41 to Grafana data source proxy
2019-12-03 08:06:43 -08:00
Ivana Huckova
5a4465a382 Explore: Log message line wrapping options for logs (#20360) 2019-12-03 13:02:44 +01:00
Dima Ryskin
2027e1aaee AlertNotifier: Support alert tags in OpsGenie notifier (#20810)
* support alert tags in OpsGenie notifier

* update readme: OpsGenie alert tags support

* lintfix: remove redundant string formatting
2019-12-03 11:54:37 +01:00
Dominik Prokop
3f348287aa Fix prettier (#20827) 2019-12-03 10:23:41 +01:00
Ivana Huckova
45259f4362 Loki: Support for template variable queries (#20697) 2019-12-03 09:40:22 +01:00
Ivana Huckova
5710e52c11 Explore: Export timezone from redux state (#20812) 2019-12-03 09:38:47 +01:00
Dominik Prokop
31181c9981 Forms: introduce checkbox (#20701)
* introduce checkbox theme variables

* Add checkbox component

* Style tweaks

* Namespace form styles returned from getFormStyles

* Name fix
2019-12-03 09:29:44 +01:00
Peter Holmberg
aa9d00d019 OpenTsdb: Migrate Config Editor to React (#20808) 2019-12-03 08:56:05 +01:00
Philipp Nowak
64916cd7a9 TablePanel, GraphPanel: Exclude hidden columns from CSV (#19925)
* TablePanel: Don't include hidden columns in CSV export

Fixes #12076

* GraphPanel: Don't include hidden series in CSV export

Series are hidden if all values are zero/empty and the relevant graph
option is enabled as well. (e.g. "Hide series: With only nulls")

Fixes #12076
2019-12-02 21:58:36 +01:00
Ryan McKinley
e216044c75 DataFrame: add utilities to @grafana/data that support apache arrow (#20813) 2019-12-02 12:39:50 -08:00
Torkel Ödegaard
74ac73716f Panels: Fixed transparency option for angular panels (#20814) 2019-12-02 20:28:38 +01:00
Mitsuhiro Tanda
a1605c58d9 CloudWatch: Upgrade aws-sdk-go (#20510)
There is security risk of SSRF if Grafana is running on EC2.

#20508
2019-12-02 19:25:44 +01:00
Diana Payton
899de7fe27 Update documentation-style-guide.md (#20777)
Updated the word usage in the documentation style guide with checkout and check out.
2019-12-02 09:47:45 -08:00
Ivana Huckova
e68e93f595 Chore: Move Prometheus datasorce tests from specs folder and merge duplicated test files (#20755) 2019-12-02 18:14:26 +01:00
Torkel Ödegaard
87d19787b4 Profile: Remove sign-out tab from profile page (#20802)
* Profile: Remove sign-out tab

* Fixed formatting

* Updated formatting
2019-12-02 18:03:28 +01:00
Sebastian Markgraf
a7a9bcbcbb Doc: Change inline comment on interface to doc comment (#20794) 2019-12-02 16:38:04 +01:00
Arve Knudsen
b1af28122b Server: Fail when unable to create log directory (#20804) 2019-12-02 15:40:32 +01:00
Torkel Ödegaard
8b7cd15314 Update stale.yml 2019-12-02 15:20:07 +01:00
Torkel Ödegaard
6c20dc6463 Rename config.yaml to config.yml 2019-12-02 13:52:20 +01:00
Torkel Ödegaard
31408d4912 GitHub: Add link to forum when adding new issue (#20798)
* GitHub: Add link to forum when adding new issue

* removed question template

* Moved to correct folder
2019-12-02 13:37:32 +01:00
kay delaney
68944f8286 Datasource/Loki: Fixes regression where enhanceDataFrame was not called (#20660)
* Datasource/Loki: Fixes regression where enhanceDataFrame was not called
Closes #20642
2019-12-02 12:05:40 +00:00
Torkel Ödegaard
d571e29aac Updated changelog 2019-12-02 12:51:44 +01:00
Torkel Ödegaard
2e6974c7f8 Docs: Updated changelog 2019-12-02 12:51:44 +01:00
Sofia Papagiannaki
0b7a5d4ed1 SQLStore: Test admins/editors/viewers stats validity (#20751)
* Test admins/editors/viewers stats validity

*  Use standard testing library instead of Convey
2019-12-02 10:14:20 +02:00
Christian Lamberty
6eb7813565 Graph-Panel: Center option for bar charts (#19723) 2019-12-01 22:53:29 -08:00
Torkel Ödegaard
cdb5e6a944 Packages: Fixed rollup issue with grafana-ui (#20790) 2019-12-02 07:44:42 +01:00
Torkel Ödegaard
7cda134762 Stalebot: update issue config (#20789) 2019-12-02 07:24:33 +01:00
Torkel Ödegaard
9b29842766 Stalebot: Automatically label PRs with no activity after 14 days as stale, then after 30 days close (#20179)
* WIP: Stalebot config draft

* Comment out issue stateless for now
2019-12-01 19:17:35 +01:00
Torkel Ödegaard
8894e2858c StatPanel: ColorMode, GraphMode & JustifyMode changes (#20680)
* StatPanel: Options rethink

* Changed options to string based

* -Fixed tests

* Refactoring moving files

* Refactoring alignment factors

* Added alignment factors

* Added basic test

* Added unit test for layout

* Font size handling

* Font sizing works

* Progress on sizing

* Updated

* Minor update

* Updated

* Updated

* Removed line option

* updated

* Updated

* Updated

* Updated

* Highlight last point

* Fixed tests

* Code refactoring and cleanup

* updated

* Updated snapshot
2019-12-01 17:02:44 +01:00
Adam Zegelin
fcde26e2db Units: Remove SI prefix symbol from new milli/microSievert(/h) (#20650) 2019-11-29 16:47:16 -08:00
Dieter Plaetinck
67bfdaeb3c Graphite: Add metrictank dashboard to Graphite datasource (#20776)
Adds the latest metrictank dashboard (v0.13.1)
per https://github.com/grafana/metrictank/pull/1557
(same version lives on https://grafana.com/grafana/dashboards/279)

fixes #20658

Note: for older versions of metrictank, some metrics may be a bit
different and thus some charts might not work.
2019-11-29 12:40:02 -08:00
Manaswini Das
fad098c9d1 Docs: Remove typo from mssql.md (#20748) 2019-11-29 07:38:53 -08:00
Peter Holmberg
b3816a2727 Navigation: Fix navigation when new password is chosen (#20747) 2019-11-29 07:38:03 -08:00
Guangzhe Huang
71792d698b Cleanup: use the local variable (#20767)
Signed-off-by: huanggze <loganhuang@yunify.com>
2019-11-29 07:34:20 -08:00
Andrej Ocenas
f2574f4944 Prometheus: Fix caching for default labels request (#20718) 2019-11-28 16:55:38 +01:00
Hugo Häggmark
130fb02b17 Release: Updates latest.json and grafana/packages/*/package.json (#20734)
* Update latest.json

* Chore: Changes version to canary

* Chore: Changes version to 6.6.0-pre
2019-11-28 03:47:48 -08:00
Hugo Häggmark
75f04c731f Release: Updates Changelog for 6.5.1 (#20723)
* Release: Changes for 6.5.1

* Add issue to 6.5.1 release

* Changed PR title
2019-11-28 01:49:48 -08:00
Peter Holmberg
c5ff7fa580 ReactMigration: Migrate Graphite config page to React (#20444)
* adding configeditor

* fix method signature and add state for metrictankhelper

* fix onChangeHandler

* prettier fix

* remove config and fix autoversion

* adding optional parameter to make this build

* set default version if none specified

* Graphite: removed version detection
2019-11-27 15:45:35 -08:00
Sofia Papagiannaki
02d7d00560 SQLStore: Rewrite system statistics query to count users once (#20711)
Fix system statistics query to count only once users that are 
part of several organisations.

Fixes #20681
2019-11-27 18:57:08 +01:00
Ernie Hershey
5cfc681175 Docs: Clean up influxdb.md (#20618)
* Clean up influxdb.md

Mostly typos, some wording consistency and clarification

* feature-rich

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Query editor wording

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

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

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* One less "you can"

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Query example wording

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Remove extraneous newline

* Use less words

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Remove more newlines

* Use present tense

* Add missing 'to'

* Summary fixup

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

* Down with gerunds in headers

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

* consistent tenses

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

* Remove br html tag #1

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

* Remove br html tag #2

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

* Less future tense

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

* Spell out location of annotations view

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

* Query input fixups

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

* More detail on where to access InfluxDB editor

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

* Provisioning fixups

Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2019-11-27 08:45:08 -08:00
Erik Sundell
116b6188a6 CloudWatch: Region template query fix (#20661)
* Make region an optional parameter

* Test region template query
2019-11-27 17:06:11 +01:00
Sparkle
49dfb9a5d3 Units: remove unreachable code (#20684)
* Refactor: Remove the code which can't reach

* Test: Add more unit tests for toFixed and scaledUnits methods

- To make them easier to understand
2019-11-27 08:03:22 -08:00
Hugo Häggmark
a538e67d4d Tests: Skipping Template Variable tests for now (#20707) 2019-11-27 16:01:39 +01:00
kay delaney
d6ef02b3b3 Datasource/Loki: Fix issue where annotation queries weren't getting their variables interpolated (#20702)
Closes #20667
2019-11-27 15:58:21 +01:00
Hans-Peter Schadler
616e2eb29f Documentation: Add missing blank in docker run command (#20705) 2019-11-27 15:45:45 +01:00
Arve Knudsen
3c7cfbebe8 Server: Defer wg.Done call to ensure it's called (#20700) 2019-11-27 13:42:15 +01:00
Hugo Häggmark
1751770394 Fix: Fixes templateSrv is undefined for plugins that do not use @@ngInject (#20696)
Fixes #20662
2019-11-27 12:48:56 +01:00
Arve Knudsen
29d27fbaf0 Server: Clean up startup logic/error checking (#20679)
* Server: Clean up startup logic/error checking
2019-11-27 12:07:21 +01:00
Erik Sundell
2929649fd4 CloudWatch: Annotations query editor loading fix (#20687)
* Re-adding lost import

* Make sure wildcard is not in annotations editor
2019-11-27 11:48:58 +01:00
Sofia Papagiannaki
21fed8c5f1 OAuth: Add missing setting from defaults.ini (#20691) 2019-11-27 11:08:08 +02:00
Andrej Ocenas
2f101d1db5 DataLinks: Refactor title state (#20256) 2019-11-27 09:52:41 +01:00
Peter Holmberg
758201e862 Forms: TextArea component (#20484)
* Adding component, story and documentation file

* forgot files

* Add label and formvalidation

* fix for error/invalid message

* fixing font color when input is disabled

* red border if invalid

* fixing props and label margin

* added support for icon in input

* support for button and loading state

* redoing some of the markup

* fixing height on addons

* Adding some basic documentation

* remove not used types file

* Add some more knobs

* move component to it's own directory, updated styling

* create component and  extract some shared styles

* update story name

* Adding focusstyle and knobs

* Sorting knobs, fix paddings

* accidentaly put in a line break

* use variable names in commonStyles

* add simple mdx docs

* Adding size to TextArea

* more shared styles

* remove unused import
2019-11-27 08:30:23 +01:00
Ivana Huckova
e9f9912dea Explore: Adjust the max-width of the tooltip (#20675) 2019-11-26 21:41:14 +01:00
Anirudh Ramesh
0a3662c359 Units: Add currency and energy units (#20428)
* Units: Add unit for currency - South Korean Won

* Units: Add support for 'femto' and 'pico' decimal SI prefix

* Units: Expand library of energy units

Add:
Power - Giga-watt (useful for viewing metrics of power flow through large-scale electrical infrastructure)
Electrical Resistance - Kilo-ohm, Mega-ohm (useful for viewing metrics of energy storage e.g. internal resistance of a battery and more)
Electrical Capacitance - Farad, Micro-farad, Nano-farad, Pico-farad, Femto-farad
Electrical Inductance - Henry, Milli-henry, Micro-henry

* Units: Add unit test for currency ₩

* Units: Add unit tests for energy units
2019-11-26 20:02:53 +01:00
Kyle Brandt
4afd40018b transform: update to use sdk with frame.labels moved to frame.[]field.labels (#20670)
sdk v0.4.0
2019-11-26 13:28:16 -05:00
Kyle Brandt
1776c11fc6 dev: fix pre-commit typo in toolkit (#20673)
s/not/no/
2019-11-26 12:03:44 -05:00
Marcus Efraimsson
1b8701d4c8 Docs: Update change user password payload in http api (#20666)
Fixes #19995
2019-11-26 17:21:25 +01:00
Marcus Efraimsson
4a2104a1de Chore: Sync defaults.ini with sample.ini (#20645)
Make sure that configuration sections/keys from defaults.ini 
is mirrored in the sample.ini.

Fixes #20622
2019-11-26 17:14:26 +01:00
David
c53ed5bbac Loki: Fix query error for step parameter (#20607)
* Loki: Fix query error for step parameter

- Loki does not fully support float steps like prometheus and returns a
query error
- this change makes sure that the step parameter is rounded to an
integer

* Added test and comments
2019-11-26 05:43:24 -08:00
Peter Holmberg
cd07c3e652 Fix: Disable draggable panels on small devices (#20629)
* fix for draggable on mobile

* elaborate in code comment
2019-11-26 12:58:20 +01:00
kay delaney
514f2beafc Chore: Remove several instances of non-strict null usage (#20563) 2019-11-26 09:01:32 +00:00
Torkel Ödegaard
665079dc8c StatPanel: Rename singlestat2 to stat (#20651) 2019-11-25 16:13:14 -08:00
Torkel Ödegaard
65942efb95 Panels: Add support for panels with no padding (#20012)
* Panels: Added support to set panel padding to zero

* WIP: fullChromeControl work

* Tweaks to header position

* Reverted some overlay mechanic and now back to no title only

* Fixed test

* Fixed transparent flag

* Added show title

* Added font weight to value

* Reverted back to no padding option

* Fixed issue with border and width and height
2019-11-25 13:26:18 -08:00
Erik Sundell
a4a9715237 CloudWatch: Docs updates after feedback (#20643)
* Docs updates after feedback

* Update upgrading doc

* Remove line break
2019-11-25 19:00:31 +01:00
Ivana Huckova
d17d82b3d0 Explore: Update docs with updated images (#20633) 2019-11-25 17:56:22 +01:00
Arve Knudsen
fc3be40bc0 Build: Update latest.json (#20638) 2019-11-25 17:01:07 +01:00
Dominik Prokop
1bd0c87f66 Forms: Introduce form field (#20632)
* Introduce new Switch component

* Experiment with different focus style

* Review update

* Update on/off swtch colors

* Introduce Form.Field component

* Enable className prop on form's field

* Remove not used imports

* Update packages/grafana-ui/src/components/Forms/Field.tsx

Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com>

* Make switch usable in field story

* Add predefined input sizes

* Add util to display story on a debug canvas

* Test form

* Updated the test form

* Fix snapshot
2019-11-25 16:38:06 +01:00
Marcus Efraimsson
e7f0bbf1ff docs: update versions (#20635) 2019-11-25 15:40:27 +01:00
Marcus Efraimsson
b83fdd1a14 Changelog: 6.4.5 (#20625)
Updates changelog for 6.4.5 release.
2019-11-25 12:25:12 +01:00
Marcus Efraimsson
ac8aa4b300 Changelog: 6.5.0 (#20620)
Updates changelog for 6.5.0.
2019-11-25 12:00:14 +01:00
Marcus Efraimsson
05c951ead6 Docs: 6.5 update (#20617)
Updates index page to point at What's new in 6.5.
Updates What's new in 6.5 article.
2019-11-25 11:54:33 +01:00
Sofia Papagiannaki
b16cb92b32 Chore: Improve grafana-server profiling and tracing (#20593)
Profiling and tracing can now be enabled/disabled separately.
Adds argument for trace file path.
Support overriding profiling and tracing argument using 
environment variables.
Update docs.

Fixes #20576
2019-11-25 09:40:10 +01:00
Dominik Prokop
b7a3758799 grafana/toolkit: Update FAQ (#20592) 2019-11-25 09:05:02 +01:00
Dominik Prokop
17362b4180 Forms: Introduce new Switch component (#20470)
* Introduce new Switch component

* Experiment with different focus style

* Review update

* Update on/off swtch colors
2019-11-25 08:25:56 +01:00
Hugo Häggmark
2c2ed8371d E2E: Adds tests for QueryVariable CRUD (#20448)
* WIP: Adds basic template variables CRUD start

* e2eTests: Adds aria-labels in VariableEditorCtrl

* Refactor: Simplifies a bit

* e2eTests: Adds first Template Variable CRUD for QueryVariable

* Tests: Adds ArrayPageOjbectType

* Tests: Adds createQueryVariable method

* Tests: Refactor CRUD test

* Tests: Adds datasource and dashboard to scenario

* Refactor: Fixes type errors

* Refactor: Move pages to toolkit
2019-11-25 07:29:01 +01:00
Šimon Podlipský
31f4dea3d0 Toolkit: Do not continue after compile error (#20590)
Resolves #20560
2019-11-24 21:43:32 -08:00
Torkel Ödegaard
6c50feb252 BarGauge/Gauge: Add back missing title option field display options (#20616)
Fixes #20615
2019-11-24 17:49:39 +01:00
Ryan McKinley
cbdca6cce8 VizRepeater/BarGauge: Use common font dimensions across repeated visualisations (#19983)
* calculate metrics

* fix tests

* update test

* update names

* BarGauge: measure title width

* BarGauge: added tests

* BarGauge: Improved font size handling

* Removed unused var

* BarGauge: Further font size tweaks

* BarGauge: added comments

* BarGauge: final tweak

* Updated snapshot*

* Fixed issues
2019-11-24 01:00:08 +01:00
Brenda Harjala
662e514f1d Update services.md (#20604)
Fixed a typo.
2019-11-23 13:03:59 +01:00
Erik Sundell
161f481f12 Docs: CloudWatch docs fixes (#20609)
* Updates after feedback

* docs: remove br tag in whats new
2019-11-23 13:01:55 +01:00
Arve Knudsen
b028ffa21e Changelog: Add v6.3.7 (#20602) 2019-11-23 00:02:59 +01:00
Erik Sundell
de94298d3a Cloudwatch: Docs improvements (#20100)
* Add Service Quota part

* Update docs after pr feedback

* Describing new features

* Divide into subheaders

* Changes after feedback

* cloudwatch: add min time interval section to docs

* docs: json format fix

* cloudwatch: move min time interval section in docs

* cloudwatch: docs fix

* docs: cloudwatch fixes

* docs: s/you are/you're

* docs: Cloudwatch - escapes underscores in tables
2019-11-22 14:51:35 +01:00
Peter Holmberg
ccc7f39b8a Fix: Wrong path when sending package build time (#20595) 2019-11-22 14:24:24 +01:00
Marcus Efraimsson
3fc5f4552a CloudWatch: Fix high CPU load (#20579)
* Cache decrypted securejsondata
* Models: Add datasource cache tests
2019-11-22 14:21:23 +01:00
Ivana Huckova
29b46f7a28 Explore: UI changes for split view and live tailing (#20516) 2019-11-22 12:26:14 +01:00
Ivana Huckova
c6a9a83bf3 Explore: Keep logQL filters when selecting labels in log row details (#20570) 2019-11-22 12:23:21 +01:00
Jon Gyllenswärd
bccc5397f6 Instrumentation: Edition and license info to usage stats (#20589)
* Added edition and licensing info to usage stats
2019-11-22 12:19:00 +01:00
Peter Holmberg
be6a4e806a Metrics: Add metric for each package build time (#20566)
* add loop to get invdividual packages build time

* run only on master
2019-11-22 11:08:26 +01:00
Ryan McKinley
d9abf01ce1 grafana/toolkit: Smaller output after successful upload (#20580)
After toolkit uploads a report successfully, it should only show the 
response data, not the whole request info.
2019-11-22 10:38:14 +01:00
Ryan McKinley
f78b3b1329 Table: Use the configured field formatter if it exists (#20584)
This PR lets the alpha Table component use a Fields configured 
formatter rather than the super hacky ColumnStyle.
2019-11-22 10:35:26 +01:00
Torkel Ödegaard
f47759b98e TextPanel: Fixes issue with template variable value not properly html escaped (#20588)
* sanitize html after replacing variables

* TextPanel: Always html escape variable values
2019-11-22 10:28:54 +01:00
Ivana Huckova
11304b14b6 Docs: Update Explore docs for 6.5 (time-sync button & log details) (#20390) 2019-11-21 18:19:04 +01:00
Ivana Huckova
569c81d07e Explore: UI changes for derived fields (#20557) 2019-11-21 18:15:40 +01:00
Marcus Efraimsson
2484b24c75 Docker: Custom dockerfiles, docker and image rendering docs update (#20492)
Adds support for using custom dockerfiles to pre-install image 
renderer plugins.
Updates docs for docker and image rendering.

Fixes #20241

Co-Authored-By: Leonard Gram <leo@xlson.com>
2019-11-21 18:05:26 +01:00
Dominik Prokop
caff9146ea Tooltip: Fix issue with tooltip throwing an error when retrieving values (#20565) 2019-11-21 17:07:11 +01:00
Erik Sundell
83fa91b1f4 Changelog: Reference a few more issues that were fixed (#20562)
* Reference a few more issues that were fixed

* Remove dashboard entry - it will be added automatically
2019-11-21 16:53:24 +01:00
Dominik Prokop
bff08ab99f Enable theme context mocking in tests (#20519)
* Enable theme context mocking in tests

* Expose mockThemeContext from grafana/ui

* Add docs

* Update contribute/style-guides/themes.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update packages/grafana-ui/src/themes/ThemeContext.tsx

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update contribute/style-guides/themes.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Docs update

* Update contribute/style-guides/themes.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
2019-11-21 16:52:57 +01:00
kay delaney
fcad439c29 Chore: Remove angular dependency from prometheus datasource (#20536)
* Chore: Remove angular dependency from prometheus datasource
2019-11-21 15:36:56 +00:00
Arve Knudsen
37051cd844 Build: Verify checksums when downloading PhantomJS (#20558)
* Build: Supply curl -f when downloading phantomjs
* Build: Verify checksums of downloaded PhantomJS zips
2019-11-21 15:19:48 +01:00
Lukas Siatka
0a080beffa DevEnv: updates nodejs from 10.x to 12.x and golang to 1.13 in ci-deploy dockerfile. (#20405)
* DevEnv: updates nodejs to 12.x and golang to 1.13

* Updates CI-build and CI-deploy image versions

* DevEnv: updates update repo readme

* DevEnv: updates build container version
2019-11-21 15:16:32 +01:00
Lukas Siatka
4ddb113b79 Explore: updates responsive button to pass all the div element props 2019-11-21 15:06:16 +01:00
Łukasz Siatka
013179eebc Explore: fixes explore responsive button ref 2019-11-21 15:06:16 +01:00
Łukasz Siatka
1cc1e545a0 Explore: adds a ref to responsive button 2019-11-21 15:06:16 +01:00
Łukasz Siatka
231e620f95 Explore: updates responsive button to forward ref 2019-11-21 15:06:16 +01:00
Ivana Huckova
c9645a96c6 Explore: UI fixes for log details (#20485) 2019-11-21 13:18:29 +01:00
Arve Knudsen
4f4898a782 Document required Go version in developer guide (#20546)
* Docs: Document required Go version in developer guide
2019-11-21 12:05:29 +01:00
Eric Leijonmarck
f05607d4c0 UserTableView: Show user name in table view (#18108)
* refactor to multiple rows

* added name for org user struct

* added name getorgusers

* added user name to tableview

* made test pass

* updated userMocks to user name field

* added missing UsersTable snapshot

* added name on teammembers page, be able to search query for name, login and email

* added the updated snapshots

* conform to same sorting as output form

* conform to previous way of using it

* sort first by login and after by email, as it was before
2019-11-21 12:44:46 +02:00
Mitsuhiro Tanda
e33cf32b97 CloudWatch: enable min_interval (#20260) 2019-11-21 11:42:48 +01:00
Leonard Gram
65bacf2df6 CI: fix release script remove filtering (#20552) 2019-11-21 11:32:25 +01:00
Erik Sundell
22edacd4a8 Update dashboards (#20486) 2019-11-21 10:46:15 +01:00
Leonard Gram
d630ac4b68 CI: Build all platforms for Enterprise (#20389)
* CI: Build all platforms for Enterprise

* CI: publishes new enterprise builds to grafana.com
2019-11-21 09:41:32 +01:00
Sofia Papagiannaki
ea7ccda647 Alerting: Propagate failures to delete dashboard alerts (#20507)
* Propagate failures to delete dashboard alerts
2019-11-21 10:29:51 +02:00
Erik Sundell
359416b89f Cloudwatch: Fix LaunchTime attribute tag bug (#20237)
* Cast tags of type Time to string

* Fig go lint issue
2019-11-21 09:20:44 +01:00
Hugo Häggmark
e03d702d0c Fix: Prevents crash when searchFilter is non string (#20526) 2019-11-21 06:21:36 +01:00
Marcus Efraimsson
2079386a7d docs: what's new fixes (#20535)
What's new in v6.5 fixes.
2019-11-20 19:28:18 +01:00
Erik Sundell
49685a92fd What's new in 6.5 - adding CloudWatch topics (#20497)
* Adding cloudwatch related stuff - images will come later on

* Changes after pr feedback

* Add images

* Update image path

* Remove react migration part - might not be so interesting for our users

* Removing part about curated dashboards since it's not released yet - will be re-added later on
2019-11-20 18:36:46 +01:00
Dominik Prokop
9f94e059cf grafana/ui: Expose Icon component (#20524) 2019-11-20 17:45:04 +01:00
Marcus Efraimsson
6a4ad136dc Backend plugins: Log wrapper args formatting fix (#20521)
Formatting fix missed in #20514
2019-11-20 16:57:55 +01:00
Arve Knudsen
cc21e3efbe Build: Clean up scripts/grunt/options/phantomjs.js (#20503) 2019-11-20 15:17:55 +01:00
Peter Holmberg
d3d595a776 MySql: Fix tls auth settings in config page (#20501) 2019-11-20 14:33:10 +01:00
Marcus Efraimsson
58b7958952 Backend plugins: Log wrapper args formatting (#20514)
Backend plugins is recommended to use hclog with json 
formatting to get proper log output in grafana server log.
Old hclog-wrapper.go that I deleted while back is still in 
the repo so deletes that.
2019-11-20 14:27:28 +01:00
Erik Sundell
ec18e2bfc3 CloudWatch: Remove HighResolution toggle since it's not being used (#20440)
* Remove highres flag since it's not being used

* Remove not used code. Init id field correctly

* Fix broken tests

* Remove GMS related calculations

* Rename period field

* Add breaking changes to changelog. Also update upgrading docs

* Update snapshot

* Update docs after feedback

* Changes after feedback
2019-11-20 13:34:44 +01:00
Sofia Papagiannaki
d1c523838b API: Optionally list expired keys (#20468)
* API: Optionally list expired keys

* Update docs
2019-11-20 13:14:57 +02:00
Jon Gyllenswärd
1b38d94537 Image-rendering: Cleanup of rendering code (#20496) 2019-11-20 09:26:59 +01:00
Hugo Häggmark
432f36024b Build: Reports times and outcomes from CircleCI jobs (#20474)
* Build: Adds start and stop job

* WIP: Testing passing env variables

* Fix: Fixes shellcheck errors

* WIP: Uses $BASH_ENV

* WIP: bash update

* WIP: adds stats echo

* WIP: Adds reporting

* Fix: Fixes reporting

* Fix: Fixes reporting

* Refactor: Adds outcomes and timing to build-fast-frontend

* Build: Adds stats to all jobs

* Fix: Fixes invalid yml

* Refactor: Adds stats to integration tests

* Refactor: Run stats on master only
2019-11-20 07:21:07 +01:00
kay delaney
a30cc9e62c Chore: Upgrade prettier for grafana-toolkit (#20476) 2019-11-19 20:25:37 +00:00
Torkel Ödegaard
322c110b89 TimePicker: Fixed update issue after plugin uses getLocationSrv().update (#20466)
* TimePicker: Fixed update issue after plugin uses getLocationSrv().update

* comment fix

* don't mess with the text panel
2019-11-19 21:19:10 +01:00
Ivana Huckova
c2e401667c Docs: Add explore images to What's new in v6.5 (#20442) 2019-11-19 20:34:55 +01:00
kay delaney
ca3dff99e8 Chore: Bumps prettier version for new typescript syntax support (#20463)
* Chore: Bumps prettier version for new typescript syntax support

* Ran new version of prettier against the codebase
2019-11-19 13:59:39 +00:00
Mitsuhiro Tanda
af35e081c2 handle PartialData status (#20459) 2019-11-19 13:36:32 +01:00
Erik Sundell
38d5abfadb CloudWatch: Make sure period variable is being interpreted correctly (#20447)
* Make sure variable is interpreted before parsing int

* Use correct datatype in tests
2019-11-19 12:36:50 +01:00
Peter Holmberg
99e635071e Forms: New Input component (#20159)
* Adding component, story and documentation file

* forgot files

* Add label and formvalidation

* fix for error/invalid message

* fixing font color when input is disabled

* red border if invalid

* fixing props and label margin

* added support for icon in input

* support for button and loading state

* redoing some of the markup

* fixing height on addons

* Adding some basic documentation

* remove not used types file

* Add some more knobs

* move component to it's own directory, updated styling

* Adding component, story and documentation file

* forgot files

* Add label and formvalidation

* fix for error/invalid message

* fixing font color when input is disabled

* red border if invalid

* fixing props and label margin

* added support for icon in input

* support for button and loading state

* redoing some of the markup

* fixing height on addons

* Adding some basic documentation

* remove not used types file

* Add some more knobs

* move component to it's own directory, updated styling

* Add Icon component

* Add useClientRect helper hook

* Add missing Icon types

* Simplify Inputs styling (POC)

* Render theme knob in a separate group

* Update packages/grafana-ui/src/components/Forms/Input/Input.tsx

Co-Authored-By: Peter Holmberg <peterholmberg@users.noreply.github.com>

* Update packages/grafana-ui/src/components/Forms/Input/Input.tsx

* Improve comment

* Restore increase/decrease spinner on number inputs

* Add period

* use input color variables

* fix test

* Expose input styles from getFormStyles
2019-11-19 10:42:59 +01:00
Torkel Ödegaard
785584a690 UsersPage: Removed icon in external button (#20441) 2019-11-19 09:28:17 +01:00
Arve Knudsen
4b8249341c Build: Fix RPM verification (#20460) 2019-11-19 09:22:51 +01:00
Gabriel Kent
836cf8e639 Dashboard Migrator: persist thresholds param if already set (#20458) 2019-11-18 19:45:12 -08:00
Dave
d02f4ea64b Docs: Fix developer guide link (#20434)
Fixes #20410
2019-11-19 01:16:22 +01:00
Arve Knudsen
90b41e86f2 Fix package signing (#20451)
* Build: Fix package signing
2019-11-18 21:23:32 +01:00
Arve Knudsen
5ecc12505f Build: Fix signing (#20450)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-11-18 18:50:47 +01:00
Kyle Brandt
c9309edbb0 transform: changes to support sdk v0.2.0 (#20426)
and update vendor
2019-11-18 11:40:40 -05:00
Jon Gyllenswärd
7a8c6a9b54 Reporting: Handle timeouts in rendering (#20415)
* Added timeout in grpc call to plugins for rendering
2019-11-18 16:58:15 +01:00
Arve Knudsen
e7e416cf8a Build: Upgrade build-container Docker image version (#20443)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-11-18 16:12:06 +01:00
Arve Knudsen
4f6b49bc70 Upgrade build-container image (#20438)
* grafana/build-container: Upgrade to Ubuntu 18.04 base image
* grafana/build-container: Upgrade to Go 1.13.4
* grafana/build-container: Upgrade to Node 10.17.0
2019-11-18 15:07:08 +01:00
Andrej Ocenas
3f144bdd05 Provisioning: Fix unmarshaling nested jsonData values (#20399)
Problem was that yaml unmarshal returned nested maps as
 map[interface{}]interface{} which are then not marshal-able 
to json because of that interface{} key type. This adds explicit 
casting of the keys in the yaml value types to string which 
then makes the values marshal-able to JSON in DB.

Fixes: #11537
2019-11-18 11:06:39 +01:00
Arve Knudsen
82f4fc2783 Fail when server is unable to bind port (#20409)
* Server: Return error when unable to bind port
* Server: Exit if a service fails
* Build: Remove graceful kill from Bra config
2019-11-18 09:49:08 +01:00
Sofia Papagiannaki
85b7ddefc0 Devenv: Fix integration of postgres and fake-data-gen containers (#20329)
* Fix integration of postgres and fake-data-gen containers

This fix introduces the following modifications:
- Upgrades to 2.1 docker-compose file format
- Adds a health check for determining that postgrestest service is healthy
- Modifies the fake-postgres-data service to wait for postgrestest to be
"healthy" before starting.
- Renames postgrestest to postgres
2019-11-18 10:48:21 +02:00
Sofia Papagiannaki
886bad2fd5 Util: Modify SplitHostPortDefault not to return an error for empty input (#20351)
* Util: Optionally allow empty input in SplitHostPortDefault

Due to a recent change the SQL Server tests failed because passing an
empty datasource url in `util.SplitHostPortDefault` was no more allowed.
This fix contains the following modifications:
- Modifies the util.SplitHostPortDefault not to return an error for empty input.
- Modifies the util.SplitHostPort to return an error for empty input.
- Introduces an additional test for empty input.
2019-11-18 10:42:51 +02:00
Shavonn Brown
eadf324062 InfluxDB: convert config editor to react (#20282)
* convert config editor to react

* tests and some cleanup

* test

* snaps

* updating per comments

* remove anonymous funcs, remove config from state

* remove unecessaries
2019-11-18 09:39:58 +01:00
Dominik Prokop
de9ea829a4 Packages: stable release tags update (#20417)
* Update next npm tag when publishing stable release

* shellcheck fix
2019-11-17 19:51:57 +01:00
Kyle Brandt
ef4d98b441 Chore/Go-dep: change sdk to use new tag (#20422)
dependency code is the same, just new tag for same commit
2019-11-15 12:10:20 -05:00
Marcus Efraimsson
dfa2f3d2fb Chore: Log actual error when oauth pass thru fails (#20419)
Logs the actual error when failing to retreive access token
when OAuth pass true is enabled for a datasource.

Ref: #20407
2019-11-15 17:14:53 +01:00
kay delaney
e0a2d4beac Grafana/Loki: Adds support for new Loki endpoints and metrics (#20158)
* Grafana/Loki: Adds support for new Loki endpoints and metrics

* Adds `/loki/` prefix to new loki endpoints and updates response interfaces

* Improved legacy support

* Removed changes related to plugin.json and added Loki-specific hacks

* Fixes live streaming for legacy loki datasources
2019-11-15 16:38:25 +01:00
kay delaney
1248457fee Chore: Fix error caused by typescript upgrade (#20408) 2019-11-15 10:13:49 +00:00
kay delaney
f1c8330877 Chore: Upgrade typescript to 3.7 (#20375)
* Chore: Upgrade typescript to 3.7
2019-11-15 09:18:09 +00:00
Emil Tullstedt
d4e013fd44 NavLinks: Make ordering in navigation configurable (#20382)
The ordering of links in the navigation bar is currently based the order of the slice containing the navigation tree. Since Grafana supports adding more links to the navigation bar with `RunIndexDataHooks` which runs at the very end of the function this means that any link registered through a hook will be placed last in the slice and be displayed last in the menu. With this PR the ordering can be specified with a weight which allows for placing links created by extensions in a more intuitive place where applicable.

Stable sorting is used to ensure that the current FIFO ordering is preserved when either no weight is set or two items shares the same weight.
2019-11-15 09:28:55 +01:00
Dominik Prokop
d602da20f6 Fix flot overriding onselectstart/ondrag events (#20381) 2019-11-15 09:21:45 +01:00
Hugo Häggmark
e60f7d008e Docs: Updates docs for redux framework (#20377)
* Docs: Updates docs for redux framework

* Update contribute/style-guides/redux.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update contribute/style-guides/redux.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update contribute/style-guides/redux.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update contribute/style-guides/redux.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Docs: Updates after PR comments

* Update redux.md
2019-11-15 07:30:50 +01:00
Kyle Brandt
5b84a3cd53 chore: fix "testing" version is latest.json (#20398)
earlier commit has typo
2019-11-14 16:21:09 -05:00
Kyle Brandt
da1df02813 transform_plugin: stop plugin when grafana stops (#20397)
fixes https://github.com/grafana/gel-app/issues/49
until #20362
2019-11-14 15:49:31 -05:00
Kyle Brandt
860411cb4d Chore: Update latest.json (#20393) 2019-11-14 12:03:45 -05:00
Marcus Efraimsson
073e9ef9e7 Docs: What's new in Grafana v6.5 Draft (#20368)
Fixes incorrect auth proxy link.
Update index page to link to v6.4 (currently latest).
Adds What's new in v6.5 draft article.
2019-11-14 13:50:03 +01:00
Erik Sundell
771ee549fb Update changelog for v6.5.0-beta1 (#20350)
Updates changelog for v6.5 including breaking changes
 and docs/upgrading to v6.5 notes.
2019-11-14 11:57:21 +01:00
kay delaney
4483bcadec Chore: Move and wrap Cascader component to @grafana/ui (#20246)
* Chore: Move and wrap Cascader component to @grafana/ui
Closes #19042

* Removes unneeded props from interface and removes rc-trigger

* Removes more unneeded props
2019-11-14 10:26:42 +00:00
Sofia Papagiannaki
2ca1cc5645 MySql: Fix password regression in MySQL datasource (#20376) 2019-11-14 12:16:38 +02:00
Erik Sundell
00bef917ee CloudWatch: Datasource improvements (#20268)
* CloudWatch: Datasource improvements

* Add statistic as template variale

* Add wildcard to list of values

* Template variable intercept dimension key

* Return row specific errors when transformation error occured

* Add meta feedback

* Make it possible to retrieve values without known metrics

* Add curated dashboard for EC2

* Fix broken tests

* Use correct dashboard name

* Display alert in case multi template var is being used for some certain props in the cloudwatch query

* Minor fixes after feedback

* Update dashboard json

* Update snapshot test

* Make sure region default is intercepted in cloudwatch link

* Update dashboards

* Include ec2 dashboard in ds

* Do not include ec2 dashboard in beta1

* Display actual region
2019-11-14 10:59:41 +01:00
Ryan McKinley
1f018adbf3 grafana/toolkit: remove aws-sdk and upload to grafana.com API endpoint (#20372)
* remove aws-sdk and upload directly

* remove unused imports

* put the plugin file in the root directory
2019-11-14 09:15:36 +01:00
Leonard Gram
e9668fd251 LDAP: last org admin can login but wont be removed (#20326)
* LDAP: last org admin (that's going to be removed) can login
Previously, if you tried to login with LDAP but were that last org admin
of an org that you would no longer be an admin of after sync (which
happens at login), you wouldn't be able to login due to an error.
2019-11-13 15:39:15 +01:00
Sofia Papagiannaki
d46690ddc9 Devenv: Replace deprecated SQL Server docker image (#20352) 2019-11-13 16:36:52 +02:00
Šimon Podlipský
4260cd548f DataFrame processing: Require table rows to be array (#20357) 2019-11-13 14:30:08 +01:00
Dominik Prokop
17fe704ae8 grafana/ui: Add Icon component (#20353)
* Add Icon component

* Add missing Icon types

* Polish icon story

* Update packages/grafana-ui/src/components/Icon/Icon.mdx
2019-11-13 13:33:29 +01:00
Marcus Efraimsson
5b42bb58f6 Telegram: Check error before adding defer close of image (#20331)
Properly handles file opening error and returns before deferring 
close of file.

Fixes #20156
2019-11-13 13:33:03 +01:00
Henrique Oliveira
9e0499000c ValueFormats: fix description for dateTimeAsUS (#20355) 2019-11-13 13:16:31 +01:00
Marcus Olsson
e9f9f628ea Fix alert names in dev dashboard (#20306) 2019-11-13 04:06:50 -08:00
oddlittlebird
85b371a02a Docs: Getting started edits (#19915)
* Getting started edits

Adjusted weights, moved some from mac.md to configuration.md, have some questions

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Edited configuration.md

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/configuration.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/mac.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/mac.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/installation/mac.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update requirements.md

* Update requirements.md

* Update building_from_source.md
2019-11-13 04:04:06 -08:00
Marcus Olsson
17724e9f84 Bus: Remove unused wildcard handlers and clean up tests (#20327)
* Refactor bus tests

* Remove wildcard listeners

* Fix review comments
2019-11-13 04:02:44 -08:00
Lukas Siatka
adc84c6ac5 Explore: updates breakpoint used to collapse datasource picker 2019-11-13 12:01:19 +01:00
Ivana Huckova
822b0b2708 Elastic: Fix Elastic template variables interpolation when redirecting to Explore (#20314) 2019-11-13 10:41:57 +01:00
Kyle Brandt
b8029dcd4e transform_plugin: pass encoded dataframes through (#20333) 2019-11-12 16:21:10 -05:00
Torkel Ödegaard
6959cf77ca Links: Updated links to grafana.com (#20320)
* Links: Updated links to grafana.com

* Updated snapshot
2019-11-12 19:26:44 +01:00
Arve Knudsen
3a8cd7b76c Avatar: Don't log failure to add existing item to cache (#19947)
Checks if avatar was found in cache before trying to add it to cache.

Fixes #19946
2019-11-12 18:49:09 +01:00
David
6d70545c07 Devenv: Enable tracing for loki docker block (#20309) 2019-11-12 13:26:35 +01:00
Leonard Gram
2850419470 Build: adds make target run-frontend (#20227)
Adds a target that will run yarn install if needed and then build and start watching for changes.
2019-11-12 11:08:40 +01:00
David
9f81fcdd2f Devenv: fix kibana in elastic7 docker block (#20308)
* Devenv: fix kibana in elastic7 docker block

* Remove network host mode for metricbeat container
2019-11-12 09:45:12 +01:00
Arve Knudsen
08fcff107d Build: Fix Docker builds (#20312) 2019-11-11 21:49:53 +01:00
Arve Knudsen
ceb7f51b40 Devenv: Add nginx_proxy_mac/nginx_login_only.conf (#20310)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-11-11 20:05:16 +01:00
Arve Knudsen
ff47238b26 Build: Build Ubuntu based Docker images also for ARM (#20267)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-11-11 18:05:46 +01:00
David
fa91462d53 Devenv: fix connection in elastic 5 and 6 blocks (#20304)
* Docker block: fix failed connection in elastic5 block

* Fix docker block elastic6 data link

* Fix elastic7 datagenerator
2019-11-11 17:06:03 +01:00
Torkel Ödegaard
b756aa0bb1 Prometheus: Adds hint support to dashboard and fixes prometheus link in query editor (#20275)
* Prometheus: moved hints into query editor, and fixed missing refIds in responses

* Minor fix

* Removed unused type import
2019-11-11 16:47:17 +01:00
Ivana Huckova
78520ac3d1 Explore: Fix always disabled QueryField for InfluxDB (#20299) 2019-11-11 16:34:37 +01:00
David
c941718a5f Docker blocks: Add loki blocks for loki releases (#20172)
* Docker blocks: Add loki blocks for loki releases

- Loki did major API changes between 0.3 and 0.4
- Adding blocks to simplify Grafana datasource testing for different
versions
- keeing `loki` block pointing at loki master
- Run all versions in parallel:
```
./create_docker_compose.sh loki0.3 loki0.4 loki
```
- all versions have different hostnames and ports internally
- datasource url depends on version so you can set them up as separate
datasources:
  - master: http://localhost:3100/
  - 0.3.0: http://localhost:3103/
  - 0.4.0: http://localhost:3104/

* Add loki minor version datasources
2019-11-11 16:31:45 +01:00
Andrej Ocenas
a08c2c43db Explore: Fix interpolation of error message (#20301) 2019-11-11 16:29:11 +01:00
Torkel Ödegaard
6f3f0bf3e0 PanelLinks: fixed issue with old panel links and grafana behind a subpath (#20298) 2019-11-11 12:18:58 +01:00
Dominik Prokop
422a94707d ColorPicker: Fixes issue with ColorPicker disappearing too quickly (#20289) 2019-11-11 12:18:03 +01:00
Thomas Casteleyn
9fa18a2df5 Configuration: Update root_url to reflect the default value (#20278) 2019-11-11 10:05:32 +01:00
Torkel Ödegaard
dd6f5efabe Templating: Made default template variable query editor field a text area with dynamic automatic height (#20288) 2019-11-11 10:04:22 +01:00
Ryan McKinley
8430a182ef Transformations: filter results by refId (#20261) 2019-11-08 11:47:35 -08:00
Torkel Ödegaard
767c672a2f PanelData: Support showing data and errors in angular panels (#20286) 2019-11-08 16:38:43 +01:00
gotjosh
7e96a57c37 Fix: URL Encode Groupd IDs for external team sync (#20280)
* Fix: URL Encode Group IDs for external team sync

External Group IDs can have special characters. Encode them to make them
URL-safe.
2019-11-08 15:28:21 +01:00
Dominik Prokop
4d741ea387 Build: Collect frontend build time metric (#20254) 2019-11-08 12:48:32 +01:00
Lukas Siatka
26c030667a Datasource: fixes prometheus metrics query query field definition (#20273)
* Datasource: fixes prometheus metrics query query field definition

* Fix query editor for panels
2019-11-08 11:12:34 +00:00
Arve Knudsen
f0ccfd9ed6 Update version (#20271)
Update version to 6.6.
2019-11-08 12:02:47 +01:00
Shavonn Brown
3e5abe7c21 Admin: Adds setting to disable creating initial admin user (#19505)
Adds a new setting disable_admin_user and when true the default 
admin user will not be created when Grafana starts for the first 
time (or no users exists in the system).

Closes #19038
2019-11-08 11:11:03 +01:00
Hugo Häggmark
7ebc4a1568 Tests: We should not click on default button when there is only one ds (#20266) 2019-11-08 10:51:42 +01:00
Jon Gyllenswärd
3111c3620b AuthProxy: additions to ttl config change (#20249)
* fixes according to feedback

* additions to config and docs
2019-11-08 10:51:15 +01:00
Ryan McKinley
026d13469f Graphite: add metrictank meta in response (#20138)
* metric tank meta

* add metric tank info

* fixed info box

* process meta

* attach metrictank meta to response

* remove extra logging

* response is now DataFrame

* Minor refactoring and renaming of the prop

* Graphite: minor fixes
2019-11-08 10:38:10 +01:00
Brian Gann
b63e4a9f52 Docker: Add dependencies to support oracle plugin in alpine (#20214)
* add dependencies to support oracle plugin in alpine

* fix typo

* add generated docker image for PR to artifacts to make testing easier

* update path to artifact

* debug path to artifact

* debug path to artifact

* debug path to artifact

* fix ld.so.cache conflict

* only add glibc-compat for x86_64 builds

* do not store docker image in artifacts

* fix missing fi
2019-11-08 10:04:15 +01:00
Peter Holmberg
dcfc74ef00 ReactMigration: Migrate Prometheus config page to React (#20248)
* add basic components

* adding onchange handler for Prom settings

* move options outside component

* reorder imports

* Add missing setting
2019-11-08 10:02:51 +01:00
Torkel Ödegaard
ba7049dd0f Templating: highlight first item when searching a variable dropdown (#20264) 2019-11-08 09:57:32 +01:00
Hugo Häggmark
85c4311c9f e2eTests: Adds cleanup of created datasource and dashboard (#20244)
* e2eTests: Adds cleanup of created datasource and dashboard

* Chore: Fixes Prettier error

* Tests: Updates snapshots
2019-11-08 09:48:33 +01:00
lzd
f2415a319e Gauge Panel: fix the default value of thresholds cannot be modified (#20190)
* Panel: fix the default value of thresholds cannot be modified in Gauge panel

* Panel: fix the default value of thresholds cannot be modified in Gauge panel
2019-11-08 09:46:53 +01:00
Torkel Ödegaard
be2bf1a297 AuthProxy: Can now login with auth proxy and get a login token (#20175)
* AuthProxy: Can now login with auth proxy and get a login token

* added unit tests

* renamed setting and updated docs

* AuthProxy: minor tweak

* Fixed tests and namings

* spellfix

* fix

* remove unused setting, probably from merge conflict

* fix
2019-11-07 17:48:56 +01:00
Ryan McKinley
818aa8eefa DataFrame: move labels to field (#19926) 2019-11-07 07:50:45 -08:00
Arve Knudsen
e487c68156 Add Dockerfiles for Ubuntu (#20196)
* Build: Add /Dockerfile.ubuntu
* Build: Add packaging/docker/Dockerfile.ubuntu
* Build: Add grafana-docker-ubuntu-pr CircleCI job
* Build: Add CircleCI jobs for building master/release Ubuntu based Docker images
2019-11-07 16:36:40 +01:00
Torkel Ödegaard
b9bc8ade70 Graph: Fixed no graph in panel edit mode (#20247) 2019-11-07 16:10:45 +01:00
Dominik Prokop
225ecd680a Explore: Configure explore series colours via field config (#20239) 2019-11-07 14:58:50 +01:00
gotjosh
e4afc8d518 LDAP: Fixing sync issues (#19446)
The arching goal of this commit is to enable single user
synchronisation with LDAP. Also, it included minor fixes of style,
error messages and minor bug fixing.

The changes are:

- bug: The `multildap` package has its own errors when the user is
  not found. We fixed the conditional branch on this error by asserting
on the `multildap` errors as opposed to the `ldap` one

- bug: The previous interface usage of `RevokeAllUserTokens` did not
  work as expected. This replaces the manual injection of the service by
leveraging the service injected as part of the `server` struct.

- chore: Better error messages around not finding the user in LDAP.

- fix: Enable the single sync button and disable it when we receive an
  error from LDAP. Please note, that you can enable it by dispatching
the error. This allows you to try again without having to reload the
page.

- fix: Move the sync info to the top, then move the sync button above
  that information and clearfix to have more harmony with the UI.
2019-11-07 14:31:44 +01:00
Torkel Ödegaard
9de1fa0213 Docs: Added alias for old reporting page location (#20238) 2019-11-07 14:10:52 +01:00
Hugo Häggmark
e66fc3d47a ReactPanels: Adds Explore menu item (#20236)
* Fix: Adds Explore menuitem to React Panels
Fixes #19865

* Refactor: Adds CMD|CTRL+click to Explore menu item
2019-11-07 13:49:45 +01:00
David
a499586f15 Elasticsearch: Support rendering in logs panel (#20229)
* Elasticsearch: Support rendering in logs panel

- add "Logs" metric query type so panels can inform the datasource that
the query is a logs query
- datasource modifies target when metric query type `logs` is detected
- then existing log result processeing paths are followed

* Fix failing test, number of agg types changed
2019-11-07 12:13:24 +00:00
stratomonitor
4d7d13175c Alerting: Add alert_state to the kafka message Fixes #11401 (#20099)
* Notifications: Add alert_state to the kafka message Fixes #11401
2019-11-07 14:08:58 +02:00
Dominik Prokop
96dbed5efc Graph: introduce Tooltip to React graph (#20046) 2019-11-07 12:37:46 +01:00
Ryan McKinley
08ada20270 @grafana/runtime: Expose datasourceRequest in backendSrv 2019-11-07 11:29:49 +01:00
Jon Gyllenswärd
53f8088316 Auth Proxy: replace ini setting ldap_sync_ttl with sync_ttl (#20191)
* Renamed ttl config in code to be more consistent with behaviour
* Introduced new setting `sync_ttl` in .ini file
* Keeping the old setting `ldap_sync_ttl` in the .ini file as fallback and compatibility.
2019-11-07 11:24:54 +01:00
Lukas Siatka
0a7fcb1a37 DevEnv: updates prometheus random data golang image to 1.13.0 2019-11-07 10:51:18 +01:00
Jon Gyllenswärd
b489c75aaf Provisioning: fix for cannot save provisioned dashboard (#20218)
Provisioning of dashboards now always overwrite existing ones and does not look at the configuration `allowUiUpdates` anymore
2019-11-07 10:49:24 +01:00
Ryan McKinley
8484b43001 DisplayProcessor: improve time field support (#20223) 2019-11-07 00:08:25 -08:00
Joachim Lindborg
a883350305 Docs: Adding how to use plugin version, through docker env variable (#19924)
* Adding grafana plugin version info

It was unclear if one can specify the plugin version to the environment variable. It is possible and works fine. Added it to the plugin information.

* Update typo docs/sources/installation/docker.md

* Applied all comments

Moved the information to make it more readable, fixed typos and added missing punctuation.

* Rewording and better example

More feedback, added example text. Did not manage to get newline for the example.

* added the missing space
2019-11-07 10:07:50 +02:00
Dominik Prokop
1c774df823 Docs: Add docs abooout time range URL query params (#20215) 2019-11-07 07:40:50 +01:00
Ryan McKinley
eaba50283e MixedQuery: refactor so other components could also batch queries (#20219)
* query mixed

* query mixed

* batch queries

* check that the values only have 3 rows at the *end* as well
2019-11-07 07:18:27 +01:00
Ryan McKinley
dbc68ef6e0 SharedQuery: don't explode when missing logo (#20187)
* don't explode when missing logo

* add path to a real icon
2019-11-07 07:13:20 +01:00
Torkel Ödegaard
4ffff1a312 LDAP: Interpolate env variable expressions in ldap.toml file (#20173)
* LDAP: Interpolate env variable expressions in ldap.toml file

* Removed comment
2019-11-06 21:41:21 +01:00
Sofia Papagiannaki
51a0e5fdf9 Chore: Update latest.json (#20216) 2019-11-06 21:17:42 +01:00
Shavonn Brown
02a9bfb671 build: Ignore Azure test snapshot for msi build (long file name) (#20217)
assumption is that msi MAX_PATH is effectively 130 (260/2) for the full path of the filename (Dir + filename), and this causes error LGHT0103 : The system cannot find the file in the msi build.
2019-11-06 15:05:50 -05:00
Lukas Siatka
a79f5980d3 Explore: fixes toolbars datasource selector and date picker responsiveness (#19718)
* Explore: fixes toolbars datasource selector and date picker responsiveness

* Explore: updates grafana UI time picker component - adds a class on long date

* Explore: updates styles for responsive long date without split

* Explore: adds styles for responsive time picker with long date during split

* Explore: updates long datetime detector to isDateTime, renames isAbsolute to hasAbsolute

* Explore: updates datasource responsiveness

* Explore: moves time picker styles

* Explore: updates datasource picker and select component responsiveness

* Explore: updates data source picker

* Explore: updates explore toolbar to use container width

* Explore: updates styles for datasource picker

* Explore: updates Grafana UI elements - select and single value with an ability to hide text

* Explore: updates time picker styles

* Explore: updates datasource select and date picker

* Explore: updates toolbar elements margin

* Explore: updates toolbar elements split breakpoints

* Explore: updates datasource picker label length with substrings

* Explore: updates the datasource picker label length

* Explore: removes refresh picker hide media query

* Explore: updates refresh picker style query to use xs breakpoint
2019-11-06 19:19:50 +00:00
Ivana Huckova
08f7edbf5a Logs Panel: Generate valid logQL for multi-select template variable (#20200) 2019-11-06 17:29:44 +01:00
Andrej Ocenas
0f709cffbc Fix when only icon is present (#20208) 2019-11-06 17:28:41 +01:00
Hugo Häggmark
89c553cfe6 TablePanel: Prevents crash when data contains mixed data formats (#20202)
* Fix: Prevents crash when table receives mixed data formats
Fixes #20075

* Tests: Adds tests for data format reducers

* Refactor: Updates after PR comments

* Refactor: Missed a couple of places where filtering was needed
2019-11-06 16:57:15 +01:00
Dominik Prokop
df6d8851d0 OAuth: Make the login button display name of custom OAuth provider (#20209) 2019-11-06 16:38:54 +01:00
Andrej Ocenas
0a78652404 Explore: Add custom DataLinks on datasource level for Loki (#20060)
Adds a config section with derived fields which is a config that allows you to create a new field based on a regex matcher run on a log message create DataLink to it which is the clickable in the log detail.
2019-11-06 16:15:08 +01:00
David
9507eda9d1 QueryField: Prevent query runs on blur in Explore (#20180)
As discussed in a UX feedback session, it's annoying that queries are
automatically executed in Explore. This change adds props to override
the blur behavior.

- add `onBlur` to Explore query field props
- Explore's query row will pass down an empty function for onBlur to the
query fields
- pass onBlur through to the QueryField component for Loki and
Prometheus
- add test to QueryField to make sure if onBlur is specified, the
onRunQuery is not executed
2019-11-06 15:08:30 +00:00
Shavonn Brown
620a3f2f9a Azure Monitor: Datasource Config Type (#20183)
* fix subscriptions getting, move subscriptions and workspace fetching into react

* config typed

* moved ConfigEditor to components, parser for select objs

* AzureDataSourceSettings type on state

* typing datasource
2019-11-06 09:29:07 -05:00
Ryan McKinley
b1e0a4d2c2 PluginLoader: export classes on @grafana/ui (#20188) 2019-11-06 05:27:14 -08:00
Sofia Papagiannaki
9525f318b8 Changelog: 6.4.4 release (#20201)
* Changelog: 6.4.4 release
2019-11-06 15:07:42 +02:00
Olivier Lemasle
b4712ec4b9 CLI: Reduce memory usage for plugin installation (#19639)
* grafana-cli: use tmp file when downloading plugin install file
2019-11-06 13:42:58 +01:00
Dominik Prokop
46a4118461 DataLinks: fix syntax highlighting not being applied on first render (#20199)
* Enable prism syntax for data links outside of effect

* Retrieve theme with useTheme hook
2019-11-06 12:41:41 +01:00
Hugo Häggmark
54602f16a8 SafeDynamicImport: Updates so that it does not act as an ErrorBoundary (#20170)
* SafeDynamicImport: Fixes so that it shows different messages depending on error

* Refactor: Fixes type error

* Refactor: Adds grafana constant to error message

* Refactor: Renames components and adds exports

* Refactor: Uses react-loader instead

* Refactor: Updates after PR comments

* Tests: Adds tests for loadComponentHandler
2019-11-06 11:04:27 +01:00
Dominik Prokop
9117fab43a grafana/data: Make display processor work with time fields (#20174)
* Enable display processor on time fields

* Export default date time formats from grafana/data

* Add data time formatter for timezone

* Move date format from display process options to field config
2019-11-06 11:03:43 +01:00
Anthony Woods
5b067e2868 update triggers to use new deployment_tools location (#20194)
raintank/deployment_tools repo is being moved to grafana/deployment_tools
2019-11-06 10:53:16 +01:00
Sofia Papagiannaki
19dbd27c5c mysql: fix encoding in connection string (#20192) 2019-11-06 10:54:53 +02:00
Stephan Eicher
8cf75b4e75 pkg/util: Replace custom pbkdf2 implementation by maintained version (#19941) 2019-11-06 10:03:10 +02:00
lzd
31e7e35bff Datasource/Elasticsearch: Fix logs which were displayed with incorrect timestamp in Explore logs tab (#20009) 2019-11-06 07:42:36 +00:00
Ryan McKinley
92ab4d80f0 Error Handling: support errors and data in a response (#20169) 2019-11-05 15:20:04 -08:00
Martin Reinhardt
7a3d1c0e4b OAuth: Generic OAuth role mapping support (#17149)
Adds support for Generic OAuth role mapping. A new 
configuration setting for generic oauth is added named 
role_attribute_path which accepts a JMESPath expression.
Only Grafana roles named Viewer, Editor or Admin are
accepted.

Closes #9766
2019-11-05 21:56:42 +01:00
Kyle Brandt
17f36d0492 sdk: update to latest (#20182)
which removes an unused field from the Transform api
2019-11-05 14:12:54 -05:00
Marcus Olsson
dca84145f6 Docs: Add introduction to time series (#20068)
This adds a guide to time series that explains some of the concepts, commonly used by Grafana.
2019-11-05 07:56:39 -08:00
Brenda Harjala
5b1ac78004 Docs: Simplify headings and make active (#20163)
* Docs: Add additional capitalization rules

What this PR does / why we need it:

This updates the Documentation style guide to include more details on the capitalization rules. Capitalization rules get confused easily, especially between terms like Dashboards (menu title) and dashboards (plural).

Which issue(s) this PR fixes:

No fix, just an addition.

* Revert "Docs: Add additional capitalization rules"

This reverts commit 75cbc6303c.

* Docs: Docs: Add additional capitalization rules

* Docs: Simplify headings and make active #19268
2019-11-05 01:23:00 -08:00
Vilhelm Prytz
add0614aee Docs: Add "the" to license reference in README (#20167)
Add 'the' to license reference in README
2019-11-05 01:22:24 -08:00
Jon Gyllenswärd
cce5557145 LDAP: All LDAP servers should be tried even if one of them returns a connection error (#20077)
All ldap servers are now being tried and the first one that gives back an answer is used if a previous one is failing. Applies to login and syncing
2019-11-05 08:58:59 +01:00
Ryan McKinley
5210a8f2f4 Dashboards: add panel inspector (#20052) 2019-11-04 11:53:44 -08:00
Shubham Bhattar
4424c2f43f Docker: Reduce layers in build container and modified initialization of PATH env in final container (#20132)
Multiple local files copied to same destination in one COPY instruction in 0th build container. PATH env variable is modified using the default PATH env variable available in alpine container to achieve the same effect.
2019-11-04 10:55:40 -08:00
olcbean
64bf3b3c04 Docs: Display panels alphabetically (#20130)
Using the same weight for all panels, so that the panels are displayed
in an alphabetical order.
2019-11-04 08:26:52 -08:00
venkatbvc
b2be71ccce Docs: Updates getting_started.md for spelling mistake "configuered" to "configured" (#20027)
There was a spelling mistake. Corrected it.
2019-11-04 13:53:02 +01:00
Borna Skukan
26f377c433 fix: modifying AWS Kafka dimension names to correct ones (#19986) 2019-11-04 09:33:31 +01:00
Hugo Häggmark
7aeed4d987 Templating: Makes so __searchFilter can be used as part of regular expression (#20103)
* Fix: Fixes searchfilter wildcard char in regular expressions
Fixes: #20006

* Refactor: Uses TemplateSrv and ScopedVars instead

* Docs: Updates docs with new format

* Tests: Corrects test description
2019-11-04 06:43:03 +01:00
Jorge Luis Betancourt
fc5cc4cbf9 Dashboard Editor: use chevron icon rather than &gt; (#19588) 2019-11-02 09:48:46 -07:00
Brian Gann
00ecd8418a Docs: update datasources that support alerting (#20066) 2019-11-02 09:43:37 -07:00
Ryan McKinley
4acceff0de Units: Add milli/microSievert, milli/microSievert/h and pixels (#20144)
* add more radiation units

* add pixels
2019-11-01 15:33:58 -04:00
Ryan McKinley
dc1fa7ac70 Toolkit: copy full directory structure for img,libs,static (#20145) 2019-11-01 09:39:20 -07:00
Martin Brenner
69cc107961 Heatmap: Insert div to fix layout (#20056) 2019-11-01 09:08:52 -07:00
Leonard Gram
30775a3f49 Build: adds the pkg/errors dependency that was missing from go.mod (#20143)
This dependency was added a while back and exists in the vendor
directory but was never properly added to go.mod.
2019-11-01 16:54:44 +01:00
Andrej Ocenas
dca872f75f Explore: Memory leak fix due to dedup selector (#20107)
Change custom hashing and lodash.memoize based selector for standard reselect.
2019-11-01 16:38:34 +01:00
Jacob Colvin
fe584efc70 DataLinks: Fix access to labels when using Prometheus instant queries (#20113) 2019-11-01 08:33:04 -07:00
Huan Wang
428267b924 PluginLoader: fix imports for react-redux (#19780) 2019-11-01 08:05:18 -07:00
Leonard Gram
730bedf36f LDAP Debug: No longer shows incorrectly matching groups based on role (#20018)
* LDAP Debug: No longer shows incorrectly matching groups based on role

Org Role was used as a shortcut to figure out what groups were matching
and which weren't. That lead to too all groups matching a specific role
to show up for a user if that user got that role.

* LDAP Debug: Fixes ordering of matches

The order of groups in the ldap.toml file is important, only the first
match for an organisation will be used. This means we have to iterate
based on the config and stop matching when a match is found.

We might want to think about showing further matches as potential
matches that are shadowed by the first match. That would possibly make
it easier to understand why one match is used instead of another one.

* LDAP Debug: never display more than one match for the same LDAP group/mapping.

* LDAP Debug: show all matches, even if they aren't used

* Update public/app/features/admin/ldap/LdapUserGroups.tsx

Co-Authored-By: gotjosh <josue.abreu@gmail.com>

* Update public/app/features/admin/ldap/LdapUserGroups.tsx

Co-Authored-By: gotjosh <josue.abreu@gmail.com>
2019-11-01 15:42:22 +01:00
Leonard Gram
992b4b8adf Licensing service (#19903)
* Licensing: supplies a service to handle licensing information

* Licensing: uses the license service further

Uses the license service instead of settings.isEnterprise:
- external team members
- saml
- usage stats

* Licensing: fixes broken tests due to new Licensing service dependency

* Licensing: fixes linting errors

* Licensing: exposes license expiry information to the frontend
2019-11-01 14:56:12 +01:00
Ivana Huckova
0ecc9a57f1 Explore: Add titles to query row action buttons (#20128) 2019-11-01 14:48:35 +01:00
Gaurav M Shah
069d718b84 Graph: Added series override option to have hidden series be persisted (#20124) 2019-11-01 14:46:35 +01:00
Peter Holmberg
ca75a29de3 grafana/ui: Drawer component (#20078)
* basic setup

* onclose fix

* styling and inline drawer

* add options and mdx

* remove blank line

* disable pushing page when opening drawer, re add mask opacity

* small fixes from pr review

* Add knobs and story with long content

* set redone markup and made title sticky

* Minor style update

* Minor style updates 2

* More explicit width prop

* fix import
2019-11-01 12:27:24 +01:00
gotjosh
378208c6ae Depedency: Bump crewjam/saml to the latest master (#20126)
* Dependency: Bump our SAML Library to the latest version
Fixes a non-obligatory check for RSA encrypted assertions. Previously they required a certificate embedded in the assertion, this is not mandatory according to the SAML standard.
2019-11-01 10:32:47 +00:00
Andrej Ocenas
6dde81d839 grafana/ui: fix button icon styles (#20084)
Fix spacing and margins in case you use icon only button.
2019-11-01 10:25:44 +01:00
Ivana Huckova
a5e8e0e291 Explore: UI change for log row details (#20034)
Add LogDetail section that is shown when log line is clicked and expanded. Contains labels/fields and actions to show stats and add/remove label filter.
2019-11-01 10:01:00 +01:00
Kyle Brandt
750e8d27bf api/dashboard: fix panic on UI save (#20137) 2019-11-01 07:57:03 +01:00
Andreas Motl
e3922c6e4e grafana/toolkit: Fixup save artifacts in a zip id in the folder (#20071) (#20139) 2019-10-31 18:59:04 -07:00
Drew
f0b3dc2211 Docs: Fix InfluxDB Typos (#20004)
Fix capitalization & typos in the InfluxDB data source docs.
2019-10-31 16:57:31 -07:00
olcbean
88c9b5ad0a Docs: Data Sources subsection naming (#20127)
In the data sources docs two similar subsection names were used.
This PR renames `Adding the data source to Grafana` subsection to
`Adding data source` so that all data sources have the same
subsection name.
2019-10-31 16:55:44 -07:00
olcbean
878a15c9c8 Docs: Update basic_concepts.md (#20102)
Adding all currently available panels to the basic_concepts.md
2019-10-31 16:54:21 -07:00
Ryan McKinley
4d1b969a5c GEL: include the expression count in the request (#20114) 2019-10-31 16:22:00 -07:00
Ryan McKinley
bbff282b89 GEL: wrap arrow utils in async load (#20134) 2019-10-31 15:54:10 -07:00
Dominik Prokop
2d7d171e06 grafana/toolkit: save artifacts in a zip id in the folder (#20123) 2019-10-31 15:08:42 -07:00
Shavonn Brown
c032399ec6 remove editor keys and null coalescing (#20115)
* remove editor keys and null coalescing

* remove commented, update snap
2019-10-31 16:17:59 -04:00
Olivier Lemasle
64752f38e8 Emails: Update notification templates (#19662)
- Update copyright year
- Remove duplicated xmlns
2019-10-31 10:33:33 -07:00
Matt
f6bdcb260a Docs: Ordering and formatting of datasources in docs (#19485)
Fixed ordering in both the initially suggested guides/basic_concepts.md and the datasources/index.md

Closes #19285
2019-10-31 09:29:26 -07:00
Sofia Papagiannaki
b52c2c9a54 Docs: Improve remote image renderer documentation (#20031)
* Add docker-compose example for running grafana with remote renderer

* Update docs/sources/administration/image_rendering.md

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-10-31 16:01:01 +02:00
Sofia Papagiannaki
55248f9269 Add devenv block for apache proxy working for Mac (#20119) 2019-10-31 15:57:58 +02:00
Jon Gyllenswärd
a45ce36566 Allow saving of provisioned dashboards (#19820)
Allows saving of provisioned dashboards if the config value allowUiUpdates is set to true

Fixes #11778
2019-10-31 14:27:31 +01:00
Alexandre de Verteuil
782eda3e9a Update Azure AD instructions in generic-oauth.md (#20091)
Update Azure AD instructions to follow heading changes in Azure Portal.

> In the legacy experience, an app had Keys page. In the new experience, it has been renamed to Certificates & secrets. In addition, Public keys are referred to as Certificates and Passwords are referred to as Client secrets.

Source: https://docs.microsoft.com/en-us/azure/active-directory/develop/app-registrations-training-guide#keyscertificates--secrets

I verified by logging in Azure AD and walking through the steps.
2019-10-31 15:07:09 +02:00
Joe Elliott
372c290d03 Docs: Fixed a broken link to LogQL in the docs (#20106)
Signed-off-by: Joe Elliott <number101010@gmail.com>
2019-10-31 12:22:22 +01:00
Andrej Ocenas
2715d6535f Explore: Fix deferred rendering of logs (#20110)
Remove artificial delay before first 100 rows were rendered and defer just the rest.
2019-10-31 11:06:11 +01:00
Hugo Häggmark
8b672c8aed Templating: Adds typings to Variables (#20117)
* Refactor: Adds typings and changes AdHocVariable to conform to new typings

* Refactor: Adds typings to ConstantVariable

* Refactor: Adds typings to IntervalVariable

* Refactor: Adds typings to QueryVariable

* Refactor: Adds typings to TextBoxVariable

* Refactor: Adds typings to CustomVariable
2019-10-31 10:59:30 +01:00
Dominik Prokop
9b7748ec13 Chore: Reorg packages (#20111)
Primarily- moving majority of the types and utils from @grafana/ui to @grafana/data

* Move types from grafana-ui to grafana-data

* Move valueFormats to grafana-data

* Move utils from grafana-ui to grafana-data

* Update imports in grafana-ui

* revert data's tsconfig change

* Update imports in grafana-runtime

* Fix import paths in grafana-ui

* Move rxjs to devDeps

* Core import updates batch 1

* Import updates batch 2

* Imports fix batch 3

* Imports fixes batch i don't know

* Fix imorts in grafana-toolkit

* Fix imports after master merge
2019-10-31 10:48:05 +01:00
kay delaney
3e8c00dad1 Chore: Moves QueryField to @grafana/ui (#19678)
Closes #19626
2019-10-31 08:27:01 +00:00
Marcus Olsson
69906f73a2 Docs: Consolidate backend guidelines (#19823)
* Consolidate backend guidelines

* Fix link

* Fix review comments
2019-10-30 13:59:27 -07:00
Ryan McKinley
861eb72113 transform: add expressions to query editor (w/ feature flag) (#20072)
for use with gel which is not released yet.
2019-10-30 14:38:28 -04:00
Ryan McKinley
2bb4684741 DataSource: don't filter hidden queries automatically (#20088) 2019-10-30 09:51:13 -07:00
Leonard Gram
e940edc79f Docker: makes it possible to parse timezones in the docker image (#20081) 2019-10-30 09:33:27 +01:00
Kyle Brandt
009d58c4a2 Plugins: Transform plugin support (#20036)
currently temporary separate http api
2019-10-29 12:22:31 -04:00
Erik Sundell
69691fbd6e Add data link from panel to cloudwatch console (#20061)
* Add data link from panel to cloudwatch console

* Change conf variable name

* Fixes according to pr feedback

* Cleanup. Fix broken tests
2019-10-29 17:02:55 +01:00
Andrej Ocenas
a1e8157969 DataLinks: Fix blur issues (#19883) 2019-10-29 14:27:39 +01:00
David
781cff07af Explore: Remove datasource testing on selector (#19910)
* Explore: Remove datasource testing on selector

- datasource testing gets in the way of fast query iteration: switching
between datasources can take seconds
- it should not be explore's duty to test datasources in the first place
- removed the concept of datasourceError in Explore, should not be its
concern
- datasource erorrs will express themselves in query errors just fine
- connection errors are still bubbled up
- removed reconnection logic from explore, should not be its concern
- missing labels in loki are still "visible" via an empty label selector
- Loki and Prometheus treated connection errors differently than other
datasources, making sure to pass through the original error message

* Show datasource error in query field for prom/loki/influx

* Removed connection test case, fixed disabled state
2019-10-29 10:37:36 +00:00
Andrej Ocenas
49c44da73b Grafana/ui: Refactor button and add default type = button (#20042) 2019-10-29 09:39:44 +01:00
Andrej Ocenas
18d72ab327 Add some typings for react events (#20038) 2019-10-29 09:38:59 +01:00
Ryan McKinley
5165e85fae PanelQuerRunnerrremove logging (#20073) 2019-10-29 06:17:36 +01:00
Arve Knudsen
f9774acc4c Enable errcheck for golangci-lint (#19976)
* Enable `errcheck` for golangci-lint
* Fix linting errors
* pkg/plugins: Fix tests
* pkg/plugins: Add test
2019-10-28 17:25:35 +01:00
Ryan McKinley
9e004b9211 DataLinks: Implement javascript callback (#19851) 2019-10-28 04:08:19 -07:00
Martina Catizone
040801256f Chore: correct typo in word Fahrenheit (#20040)
fixes: #20039
2019-10-26 13:34:37 -07:00
Andrej Ocenas
551e24f9f8 ReactMigration: Migrate Loki and Elastic config pages to React (#19979) 2019-10-25 16:43:20 +02:00
Marcus Efraimsson
771f21ed09 api: new v2 metrics query endpoint
Requests to endpoint will currently will error unless expressions feature flag is true.

Co-authored-by: Sofia Papagiannaki <papagian@gmail.com>
2019-10-25 09:28:26 -04:00
Peter Holmberg
24183ba390 Forms: Introduce new Primary, Secondary and Destructive buttons (#19973)
* Implement Label component

* Expose next-gen form components from grafana-ui under Forms namespace

* adding knobs to story, setting new variants and sizes

* handle next gen button in their own component

* removing duplication

* fix Thresholds test

* removing blank lines

* moving noUnusedLocals

* new button should not need theme

* remove not used export

* pseudo classes for focus state

* remove not used things

* use correct border radius

* extracting focus styles to commonStyles for reuse

* tidying up getButtonStyles

* Adding a few examples to the doc

* Adding props table
2019-10-25 14:35:29 +02:00
Andrej Ocenas
fc1ded5026 grafana/ui: Fix modal component (#19987)
* Fix modal

* Fix test message
2019-10-25 09:41:58 +02:00
Sofia Papagiannaki
fc08c26025 WIP: Spawn backend plugins v2 (#19835)
* WIP: Spawn backend plugins v2

* Add test for plugin version

* Fix support for SDK plugins

Co-authored-by: Kyle Brandt <kyle@kbrandt.com>
Co-authored-by: Marcus Olsson <olsson.e.marcus@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* WIP: Draft PR for fork of V2 sdk / bi-directional support (#19890)

* temporary use export-datasource-plugin branch of grafana-plugin-sdk

* fix failing test

* remove debug (spew) lines

* misc cleanup

* add expressions feature toggle

* use latest grafana-plugin-sdk-go
2019-10-24 17:15:27 +02:00
Arve Knudsen
b0198e7c9c build: Fix building of Enterprise Docker images (#19992) 2019-10-24 15:49:42 +02:00
Arve Knudsen
b3c00e4c32 Docker: Build and use musl-based binaries in alpine images to resolve glibc incompatibility issues (#19798)
* build: Install musl cross compilers as part of build Docker image
* build: Build also musl packages in scripts/build/build.sh
* scripts/build/build-all.sh: Build musl Linux targets
* build: Upgrade build-container to 1.2.11
* build.go: De-duplicate code
* build: Base Docker images on musl binaries
2019-10-24 14:34:14 +02:00
Roman Misyurin
63b561b39d PluginPage: replace plugin absolute url with relative (#19956) 2019-10-24 08:43:54 +02:00
Dominik Prokop
6edc91aca8 Add info about static files (#19965) 2019-10-23 14:09:25 +02:00
Ivana Huckova
6390e51b8c Explore: Change loading state to done after live-tailing stops (#19955) 2019-10-23 13:54:20 +02:00
Arve Knudsen
35e0e078b7 pkg/util: Check errors (#19832)
* pkg/util: Check errors
* pkg/services: DRY up code
2019-10-23 10:40:12 +02:00
Peter Holmberg
31a346fcf2 Core: Show browser not supported notification (#19904)
* display appEvent on load

* move to app.ts, create util and tests

* adding case for ie edge

* Updated browser notice text
2019-10-23 10:30:31 +02:00
Dominik Prokop
8e824f0b25 grafana/toolkit: Support js plugins (#19952)
* Making flowchart work

* Enable testEnvironment jest option

* Add babel-jest to grafana-toolkit

* Fix test

* Resolve either js or ts jest setup files

* Update packages/grafana-toolkit/src/config/jest.plugin.config.ts

* Update packages/grafana-toolkit/src/config/webpack.plugin.config.ts
2019-10-22 23:23:37 +02:00
Dominik Prokop
64e609e19e Forms: Introduce typographic form elements (#19879)
* Implement Label component

* Expose next-gen form components from grafana-ui under Forms namespace

* Minor Label update

* Add Legend component

* Test form story

* Expose Legend class name via getFormStyles

* Test

* FieldValidationMessage spacing

* Expose FieldValidationMessage styles via getFormStyles

* Update snapshot
2019-10-22 17:36:07 +02:00
Ryan McKinley
8232659012 SingleStat: apply mappings to no data response (#19951) 2019-10-22 16:31:56 +02:00
Marcus Olsson
73944c18fd Docs: Clean up contribute docs (#19716) 2019-10-22 16:23:46 +02:00
Arve Knudsen
9843a886f7 pkg/models: Check errors (#19839)
Check errors in pkg/models.
2019-10-22 16:18:36 +02:00
Arve Knudsen
8ba5509614 pkg/setting: Check errors (#19838)
Check errors in pkg/setting.
2019-10-22 16:17:49 +02:00
Arve Knudsen
bb50fc5965 pkg/tsdb: Check errors (#19837)
Check errors in pkg/tsdb.
2019-10-22 16:16:53 +02:00
Marcus Olsson
79cbe191b6 Docs: Document Makefile (#19720)
* Document Makefile

* Fix review comments

* Rename group to Services

* Fix review comments
2019-10-22 16:03:22 +02:00
Ivana Huckova
7a1eff197d Explore: Add functionality to show/hide query row results (#19794) 2019-10-22 14:57:46 +02:00
Arve Knudsen
2a78d2a61c pkg/services: Check errors (#19712)
* pkg/services: Check errors
* pkg/services: Don't treat context.Canceled|context.DeadlineExceeded as error
2019-10-22 14:08:18 +02:00
Oleg Utkin
de5038441f API: Fix logging of dynamic listening port (#19644)
Logs the real (dynamic) HTTP port when configured 
Grafana using setting.HttpPort = 0.

Fixes #16709
2019-10-22 13:07:43 +02:00
Erik Sundell
0f4b970de8 Cloudwatch: Make it clear that role switching is not supported (#19706)
* Make it clear that role switching is not supported

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

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-10-22 11:28:25 +02:00
Sofia Papagiannaki
0196eca5ac Update Apache configuration to work with MPMs as shared modules (#19900) 2019-10-22 11:22:24 +02:00
Nils Diefenbach
7a8f2cd75d Cloudwatch: Lowercase Redshift Dimension entry for service class and stage (#19897)
fixes #19761
2019-10-22 10:33:58 +02:00
Karan96Kaushik
0303aad98f Units: Added mega ampere and watt-hour per kg Units (#19922) 2019-10-22 10:26:03 +02:00
Daniel Lee
87ca14c502 Merge branch 'oddlittlebird-doc-styleguide-edits' 2019-10-22 10:04:01 +02:00
Daniel Lee
76598cc831 docs: fix merge conflicts 2019-10-22 10:01:51 +02:00
Patrick O'Keeffe
42478342c7 Clarify use of custom.ini on deb/rpm platforms (#19939) 2019-10-22 09:51:53 +02:00
oddlittlebird
3afffedc0a Update ISSUE_TRIAGE.md (#19942)
Clarified the audience for ISSUE_TRIAGE.md
2019-10-22 09:50:10 +02:00
Leonard Gram
7daa660584 docs: improved setup instructions for reporting (#19935) 2019-10-22 09:38:28 +02:00
Dominik Prokop
2a8762f6a3 grafana/ui: Enable mdx imports in stories (#19937) 2019-10-22 09:05:14 +02:00
Andrej Ocenas
80a6853fd4 Refactor: Suggestion plugin for slate (#19825) 2019-10-21 18:53:35 +02:00
Dominik Prokop
3119f35715 grafana/ui: Enable storybook docs (#19930) 2019-10-21 16:39:43 +02:00
Peter Holmberg
055ca7bdf1 Fix: Correct color on TagItems (#19933) 2019-10-21 13:41:39 +02:00
Ryan McKinley
09cf9711a0 Dependencies: Update yarn.lock (#19927) 2019-10-21 08:55:08 +02:00
Hugo Häggmark
e4c33e0be8 Chore: Updates yarn.lock (#19919)
* Chore: Updates yarn.lock

* Chore: Fixes @types/webpack conflict
2019-10-19 09:30:12 +02:00
Arve Knudsen
31735422ef pkg/plugins: Only warn if plugins fail to load. Fixes #19846 (#19859)
pkg/plugins: Only warn if plugins fail to load. Fixes #19846
2019-10-18 14:39:38 +02:00
Dominik Prokop
ccf42ccbd9 Chore: Bump storybook to 5.2.4 (#19895)
* Bump storybook to 5.2.4

* Update yarn.lock

* Babel bump

* Add core-js 2 to dev deps for babel to resolve dependencies correctly

This is because storybook 5.2 introduced core-js 3.x which caused babel to have problems resolving core-js dependencies
2019-10-18 13:45:52 +02:00
Ryan McKinley
060fab8f1c QueryEditor: move QueryEditorRows to its own component (#19756) 2019-10-18 13:09:55 +02:00
Dominik Prokop
c9b11bfc7a ReactMigration: Migrate DataSource HTTP Settings to React (#19452)
* Basic components for HTTP settings migration WIP

* Add secureJsonFields to DataSourceSettings

* Introduce datasource-http-settings-next directive for backward compatibility

* fix lint

* renames

* rename fix

* TagsInput component

* move tags from app to grafana/ui

* implement tagsinput on datasourcesettings

* capitalize

* new file for react directive for testing

* some layout touch ups

* FormField story

* Minor touch ups

* add url validation

* using prevent default to prevent updating datasource when adding tag

* using Stylefactory and fix tslint issue on MouseEvent

* only show tlsauthsettings if tls or ca cert

* fix url input length

* fix for showAccessOptions

* Implemented CertTextArea, removed commented code

* removed commented / not used code

* Rename and add more elements to Certification component

* fixing newSecureJsonData

* spelling

* Fix issue with checkboxes being undefined

* Removed old partials and minor fix

* removed unused props from story
2019-10-18 12:09:53 +02:00
Hugo Häggmark
cb0e80e7b9 TemplateVariables: Introduces $__searchFilter to Query Variables (#19858)
* WIP: Initial hardcoded version

* Feature: Introduces SearchFiltering to Graphite

* Feature: Adds searchFiltering to MySql

* Tests: Adds tests to Graphite and MySql

* Feature: Adds $__searchFilter to TestData

* Refactor: Adds searchFilter to Postgres and extracts function

* Tests: Adds tests to variable

* Refactor: Adds debounce and lodash import optimization

* Docs: Adds documentation

* Refactor: Removes unused function and fixes typo

* Docs: Updates docs

* Fixed issue with UI not updating when no  was used due to async func and no .apply in the non lazy path
2019-10-18 11:40:08 +02:00
Dominik Prokop
c674fa1d79 Forms: Introduce new spacing variables to GrafanaTheme (#19875)
* Introduce next-gen form spacing variables
* Update snapshots
2019-10-17 16:13:55 +02:00
Dominik Prokop
1e3b19acd5 Forms: Introduce new color variables to GrafanaTheme (#19874)
* Introduce new color primitives for next-gen forms
* Introduce next-gen form functional colors palette
* Update snapshot
2019-10-17 15:56:17 +02:00
Peter Holmberg
cf7bc399f9 Chore: Bump Angularjs 1.6.6 -> 1.6.9 (#19849)
* bumping angular from 1.6.6 -> 1.6.9

* forgot lock file
2019-10-17 13:27:02 +02:00
oddlittlebird
651fac3e5f Update documentation.md
Minor edit
2019-10-16 19:52:36 -07:00
Oddlittlebird
830cd21cd5 Edited Contribute docs
Edited several docs in the contribute folder.
2019-10-16 19:49:47 -07:00
Kyle Brandt
55d7fbf04c devenv: have bra watch attempt graceful shutdown (#19857)
This is useful when working with backend plugins and grafana at the same time. Makes it so Grafana has a chance to shutdown the external process. An os.Interrupt signal is first sent, then after a five second wait a a force kill will be sent if the process is still running.
2019-10-16 12:24:28 -04:00
Sofia Papagiannaki
f1a63ecf24 Release: Update latest (#19866) 2019-10-16 19:12:21 +03:00
Sofia Papagiannaki
5d9a45bbd5 Changelog: 6.4.3 release (#19862)
* Changelog: 6.4.3 release

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-10-16 18:49:54 +03:00
Kyle Brandt
1ffcb002db DataFrame: guess number field when on NaN (#19833) 2019-10-16 15:13:27 +02:00
Andrej Ocenas
4d214f5aea Loki: Remove param (#19854) 2019-10-16 14:20:21 +02:00
Torkel Ödegaard
b37444f3ea InputDataSource: Fixed issue with config editor (#19818) 2019-10-16 12:58:49 +02:00
Andrej Ocenas
945b815fe0 Fix: Unsubscribe from events in dashboards (#19788)
* Unsubscribe on unmount

* Fix unsubscribe
2019-10-16 12:54:13 +02:00
Ivana Huckova
f8c474fa1b Explore: Add unit test to TimeSyncButton (#19836) 2019-10-16 11:48:10 +02:00
Kyle Brandt
84609abdfa build: update scripts go.(mod|sum) (#19834)
* build: update scripts go.(mod|sum)

* build: exclude gosec rule G108

Gosec rule G108: Profiling endpoint automatically exposed on /debug/pprof
is not applicable since we only enable /debug/pprof endpoint if -profile
flag is provided when starting grafana.
2019-10-16 10:52:51 +02:00
Ivana Huckova
af885b2350 Loki: Return empty result if no valid targets (#19830) 2019-10-16 10:25:10 +02:00
Andrej Ocenas
09a599900c DataLinks: Fix url field not releasing focus (#19804) 2019-10-16 09:57:51 +02:00
Abhilash Gnan
7f702f881c Alerting: All notification channels should always send (#19807)
Fixes so that all notification channels configured for an alert should 
try to send notification even if one notification channel fails to send
a notification.

Signed-off-by: Abhilash Gnan <abhilashgnan@gmail.com>

Fixes #19768
2019-10-16 09:55:51 +02:00
Dominik Prokop
2e18930285 @grafana/toolkit: Check if git user.name config is set (#19821) 2019-10-16 08:04:24 +02:00
Arve Knudsen
6e7c18fc1c pkg/middleware: Check errors (#19749)
* pkg/middleware: Check errors
* pkg/middleware: Log when gzip middleware handler fails
2019-10-15 18:08:06 +02:00
Andrej Ocenas
5cf5d89dff Fix: clicking outside of some query editors required 2 clicks (#19822) 2019-10-15 17:04:11 +02:00
Arve Knudsen
573e78feeb pkg/cmd: Check errors (#19700)
* pkg/cmd: Check errors
* pkg/cmd: Make sure server waits on services, even in case of error
* pkg/cmd: Inform of error to show help
* pkg/cmd: Only warn on failure to send systemd notification
* pkg/cmd: Don't log errors stemming from context cancelation
* pkg/cmd: Don't fail if unable to write to systemd
2019-10-15 16:44:15 +02:00
Huan Wang
7da2156237 grafana/toolkit: Add font file loader (#19781)
* add file loader for fonts

* Add public path to resolve fonts correctly

* Do not specify font's output path

* Output fonts to fonts directory
2019-10-15 16:03:34 +02:00
Torkel Ödegaard
d0d59b8001 Select: Allow custom value for selects (#19775)
* WIP: simple poc of allow custom value for selects

* Add support for custom value in segment

* Update snapshots
2019-10-15 15:08:56 +02:00
Marcus Olsson
7963422df0 Docs: Add database architecture docs (#19800) 2019-10-15 15:05:38 +02:00
Andrej Ocenas
14cf2a3514 Call next in azure editor (#19799) 2019-10-15 14:56:54 +02:00
Ryan McKinley
3ca01c3255 grafana/toolkit: Use http rather than ssh for git checkout (#19754) 2019-10-15 14:18:15 +02:00
Dominik Prokop
00d0640b6e DataLinks: Fix context menu not showing in singlestat-ish visualisations (#19809)
* Fix data links menu being hidden in siglestat-ish visualizations

* ts fix

* Review updates
2019-10-15 13:38:22 +02:00
Morten Fangel
66c6547e7c Elasticsearch: Adds support for region annotations (#17602)
It is now possible to specify a field containing time-end in 
Elasticsearch annotations.
Any annotations with a time-end will become a region between 
time and time-end. Any annotations without the time-end field 
will remain a single-point annotation.

Ref #10589
2019-10-15 13:16:08 +02:00
Brenda Harjala
16fa712b59 Docs: Add additional capitalization rules (#19805)
* Docs: Add additional capitalization rules

What this PR does / why we need it:

This updates the Documentation style guide to include more details on the capitalization rules. Capitalization rules get confused easily, especially between terms like Dashboards (menu title) and dashboards (plural).

Which issue(s) this PR fixes:

No fix, just an addition.

* Revert "Docs: Add additional capitalization rules"

This reverts commit 75cbc6303c.

* Docs: Docs: Add additional capitalization rules
2019-10-15 11:44:51 +02:00
Manoj
397e30e2bf Docs: Add additional word usage rule (#19812)
Resolves #19810
2019-10-15 11:44:02 +02:00
Patrik Karlström
b848276fb8 Update aws-sdk-go (#19138)
With the recent release of IAM roles for service accounts 
the AWS sdk needs to be updated to at least 1.23.13 in 
order to utilize this feature.
2019-10-14 20:39:54 +02:00
Amarnath Karthi
74557a4c40 Dashboard: Allows the d-solo route to be used without slug (#19640)
Allows the d-solo route to be used with UID and without 
a slug.

Fixes #11617
2019-10-14 18:21:44 +02:00
Arve Knudsen
08f01a6c4f pkg/bus: Check errors (#19748)
* pkg/bus: Check errors
* pkg/bus: Convert tests to testify
2019-10-14 17:23:31 +02:00
Hugo Häggmark
24b475e414 Panels: Fixes default tab for visualizations without Queries Tab (#19803)
Fixes #19762
2019-10-14 16:19:20 +02:00
Marcus Olsson
428ca600c0 Chore: Refactor grafana-server (#19796)
* Rename GrafanaServerImpl to Server

* Make flag dependencies explicit

* Extract method for building service graph

* Document and clarify methods

* Rename HttpServer to HTTPServer
2019-10-14 14:18:22 +02:00
Dominik Prokop
6f7f9aa774 Add missing info about stylesFactory 2019-10-14 12:29:10 +02:00
kay delaney
99411bf37a Types: Adds type safety to appEvents (#19418)
* Types: Add type safety to appEvents
2019-10-14 09:27:47 +01:00
Ben Patterson
e7c37cc316 Docs: Split up Sharing topic (#19680) 2019-10-14 10:14:53 +02:00
oddlittlebird
0a7335c643 Update README.md (#19457)
* Update README.md

Minor grammar and format edits

* Update README.md
2019-10-12 12:53:47 +02:00
Marcus Olsson
2bdd119976 Docs: Link to architecture docs from Developer guide (#19778)
* Link to architecture docs from Developer guide

* Fix link
2019-10-12 11:18:33 +02:00
Huan Wang
7562959e44 toolkit linter line number off by one (#19782)
it is actually an intended feature by tslint:
https://github.com/palantir/tslint/issues/4528

So adding 1 to the line number here in the plugin
2019-10-12 08:48:22 +02:00
Arve Knudsen
0b1913af6f pkg/plugins: Check errors (#19715)
* pkg/plugins: Check errors
2019-10-11 21:02:15 +02:00
Łukasz Siatka
f0264ebe43 Explore: updates live button to responsive button 2019-10-11 19:49:56 +02:00
Łukasz Siatka
8d9197bed2 Explore: fixes live button margin 2019-10-11 19:49:56 +02:00
Łukasz Siatka
deaddef090 Explore: fixes a responsive fold of live tailing button 2019-10-11 19:49:56 +02:00
Łukasz Siatka
e2ea2d3050 updated live tailing text 2019-10-11 19:49:56 +02:00
Łukasz Siatka
f8cef9b900 updated live tail button - responsive fold 2019-10-11 19:49:56 +02:00
Łukasz Siatka
33f8b36b44 updated toolbar - added media query for tail buttons 2019-10-11 19:49:56 +02:00
Marcus Olsson
6798ad9762 Docs: Add docs on services (#19741)
* Add docs on services

* Apply suggestions from code review

Co-Authored-By: gotjosh <josue.abreu@gmail.com>

* Fix review comments

* Extract communication to its own document

* Minor fixes

* Minor fix

* Apply suggestions from code review

Co-Authored-By: gotjosh <josue.abreu@gmail.com>

* Add comment on exported field
2019-10-11 18:26:18 +02:00
Kyle Brandt
2c3c576ca6 fix: export Bus on search service (#19773)
fix pkg/services/search/service.go:52:3: s.bus undefined (type *SearchService has no field or method bus, but does have Bus)

fixes issue introduced by #19765
2019-10-11 11:46:44 -04:00
Marcus Olsson
60f86c3b9c Chore: Refactor GoConvey into stdlib for search service (#19765)
* Refactor GoConvey into stdlib

* Fix review comments
2019-10-11 17:08:15 +02:00
Scott Brenner
aa87f62c3a Quick typo fix (#19759) 2019-10-11 14:57:29 +01:00
vishesh92
fbe0bc6fce Docs: Fixes go get command in developer guide (#19766) 2019-10-11 14:08:48 +01:00
Weeco
8cd93f0b88 Datasource: Add custom headers on alerting queries (#19508)
* Add custom headers on alerting queries

Reference issue #15381

Signed-off-by: Martin Schneppenheim <martin.schneppenheim@rewe-digital.com>

* Fix datasource transport tests

* Migrate decrypting header test to models pkg

* Check correct header

* Add HTTP transport test

Fixes #15381
2019-10-11 14:28:52 +02:00
HG00
a427ff7f8d Docs: Add API style/casing rule (#19627)
* Docs: Update Centrify Section In Generic Oauth Ref #18207

* Docs: Alphabetise Features / Data Sources (#19289)

* Docs: Add Title Case rule for API names (#19620)

* Update contribute/style-guides/documentation-style-guide.md

wfm, thanks!

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
2019-10-11 13:07:16 +02:00
Lukas Siatka
4bd00491bd Explore: updates clear all button to responsive button (#19719)
* Explore: updates clear all button to responsive button

* Explore: update toolbar icons alignment

* Explore: adds responsive styles for explore icon alignment
2019-10-10 21:53:02 +02:00
Arve Knudsen
7349a6b96c pkg/infra: Check errors (#19705)
* pkg/infra: Check errors

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

* pkg/infra: Handle errors

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

* Update pkg/infra/usagestats/usage_stats.go

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-10-10 16:42:11 +02:00
Tom Wilkie
f971b808b8 Docs: Update Prometheus Custom Query Parameters docs. (#19524)
* Update Prometheus Custom Query Parameters docs.

After discussion with @davkal

* Update prometheus.md
2019-10-10 15:51:39 +02:00
Marcus Olsson
241a0ee79d Docs: Fix playlist layout issues (#19739) 2019-10-10 12:33:56 +02:00
Brenda Harjala
3825c5fbf0 Docs: Update instructions and flows in Playlist.md (#19590)
* Docs: Update Playlist.md

* Docs: Update Playlist.md

* Docs: Update Playlist.md

* Docs: Update Playlist.md

* Docs: Update Playlist.md

* Docs: Update Playlist.md
2019-10-10 11:44:18 +02:00
Arve Knudsen
fe8d0d27d2 pkg/components: Check errors (#19703)
* pkg/components: Check errors
2019-10-10 09:06:55 +02:00
Andrej Ocenas
9b483e765b UX: Fix empty space in select (#19713) 2019-10-09 14:11:45 +02:00
Arve Knudsen
f7ad580356 pkg/login: Check errors (#19714)
* pkg/login: Check errors
* pkg/login: Introduce "login" logger

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-10-09 12:57:44 +02:00
Marcus Efraimsson
b76c6daf85 enforce GO111MODULE=on when running make run (#19724)
Fixes so make run works on older Go versions than 1.13.
2019-10-09 11:01:42 +02:00
Marcus Olsson
957b552dd1 Docs: Add Troubleshooting section to Developer guide (#19721)
* Add Troubleshooting section to Developer guide

* Remove unintended newline
2019-10-09 10:01:05 +02:00
oddlittlebird
fbbf9cecac Update README.md (#19551)
* Update README.md

Minor grammar and formatting changes.

Took a stab at adding an intro, feel free to improve.

* Update README.md
2019-10-09 09:41:11 +02:00
Torkel Ödegaard
22fbaa7ac8 Singlestat: Fixed issue with mapping null to text (#19689) 2019-10-09 09:00:39 +02:00
Arve Knudsen
b858a5f496 Don't truncate IPv6 addresses (#19573)
* Bugfix: Fix parsing of IPv6 addresses

Make sure that IPv6 addresses aren't truncated when parsing. Fixes #18924
* util: Change network address parsing funcs to return error
* pkg/api: Return NetworkAddress instead of host/port
2019-10-09 08:58:45 +02:00
Ivana Huckova
feedf48e90 Tests: Fix runRequest test (#19711) 2019-10-09 08:41:52 +02:00
oddlittlebird
8b064fc141 Docs: Update pkg\README.md (#19615)
* Update README.md

Grammar and spelling edits

* Update pkg/README.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update README.md

* Update README.md
2019-10-09 08:04:56 +02:00
Hugo Häggmark
133ddc9afb Feature: Adds connectWithCleanup HOC (#19629)
* Feature: Adds connectWithCleanup HOC

* Refactor: Small typings

* Refactor: Makes UseEffect run on Mount and UnMount only

* Refactor: Adds tests and rootReducer

* Refactor: Fixes adding of reducers on startup
2019-10-08 21:37:07 -07:00
Robert Lowry
b0bf2ea09f Docs: Add "repository" case, and "open source" to style guide
closes #19404
closes #19281
2019-10-08 23:22:30 +02:00
Erik Sundell
862f2e4821 React group by segment poc (#19436)
* Add simple group by component

* Make segment generic

* Refactoring segments. Add support for lazy loading

* Use base props

* Add example with grouped options

* Move examples to storybook

* Fixes according to pr feedback

* Cleanup

* added className

* Fixes according to feed back

* Add query string to api so that search can be imlemented in the future
2019-10-08 20:54:00 +02:00
Miguel Carvajal
c2749052d7 Graph: make ContextMenu potitioning aware of the viewport width (#19699) 2019-10-08 19:57:50 +02:00
Arve Knudsen
0a2d5e16dd pkg/api: Check errors (#19657)
* pkg/api: Check errors
* pkg/api: Remove unused function HashEmail
2019-10-08 18:57:53 +02:00
Ivana Huckova
dabc848e11 Explore: Synchronise time ranges in split mode (#19274)
* Explore: create connected sync button when screen is splitted

* Explore: create attachable button to TimePicker

* WIP/Explore: set up redux boilerplate for synced state

* WIP/Explore: add toggling functionality to sync buttons

* WIP/Explore: Fix styling issue

* First pass solution working

* Explore: Clean up, update comments

* Explore: refactore Timepicker, remove newly introduced class names

* Explore: refactore ExploreTimeControls

* Explore: more semantic variables naming

* Explore: run query on syncable item when synced times activated

* Explore: Add tooltip to sync times button

* Explore: Remove typo

* Explore: check exploreId

* Explore: refactor ExploreTimeControls

* Explore: refactor to include suggested changes

* Explore: Create TimeSyncButton component, update colors

* Explore: Toggle tooltip, use stylesFactory
2019-10-08 18:55:53 +02:00
Kyle Brandt
0f32e15a88 build: use vendored packages for circle backend tests (#19708) 2019-10-08 12:03:23 -04:00
Manish Yadav
2ac9fad603 Docs: Add correct casing for API and ID to style guide (#19625) 2019-10-08 18:00:41 +02:00
Jon Gyllenswärd
606392b4c6 API: added dashboardId and slug in response after import (#19692) 2019-10-08 17:47:18 +02:00
Marcus Olsson
096e0e761e Docs: Simplify README (#19702)
* Simplify README

* Fix review comments

* Rename Developer guide
2019-10-08 17:22:37 +02:00
Marcus Olsson
9bff81e590 Docs: Move dev guide from README (#19707)
* Add docs for overriding default configuration

* Add instructions for building Docker image

* Add docs for end-to-end tests

* Rename to Developer guide
2019-10-08 17:16:21 +02:00
Ivana Huckova
90b0953620 Explore: Expand template variables when redirecting from dashboard panel (#19582)
* Fix redirect but adding getExploreState method to graphite

* Explore: Create interpolateVariablesInQueries function for datasources

* Explore: Add interpolateVariablesInQueries method to elasticsearch datasource

* Add interpolateVariablesInQueries function to influx and postgres

* Explore: Add interpolateVariablesInQueries to Mssql and Mysql datasources

* Explore: Add datasources to queries

* Explore: Code formatting

* Prettier formating fix

* Explore: Add rawQuery expanding of variables for influxdb

* Remove console.logs

* Explore: Add rawQuery expanding of multiple variables for influxdb

* Explore: If no queries in Influxdb, return early []

* Explore: Refactor influxDb to follow the code structure
2019-10-08 17:01:20 +02:00
Ben Patterson
9904e14f8e Alerting: Fix dates stored in local time when pausing alerts (#19525)
* Make tests more sensitive to timezone.

* Time stamps should use UTC for consistency.

* Test: Assert state is paused after pauseAllAlerts call.
2019-10-08 17:25:15 +03:00
kay delaney
82ce5a194d Explore/UI: Removes unnecessary grafana-info-box wrapper around InfluxCheatSheet (#19701) 2019-10-08 12:45:38 +01:00
Hugo Häggmark
5cf69e6b25 Docs: Updating to 6.4.0 (#19698) 2019-10-08 04:35:41 -07:00
Hugo Häggmark
13ffb03b57 Chore: Fixes lines that exceeded 150 chars (#19694)
(cherry picked from commit c29b3e2433)
2019-10-08 03:35:44 -07:00
Hugo Häggmark
aab755b936 Chore: Updates latest.json for 6.4.2 (#19697) 2019-10-08 03:22:21 -07:00
Hugo Häggmark
4c8f9ebb81 Chore: Updates Changelog for 6.4.2 (#19696) 2019-10-08 03:15:38 -07:00
Yuvaraj Subramanian
6a2a3abccb Docs: Update folder.md (#19674)
Typo fixes
2019-10-08 10:21:47 +02:00
Kyle Brandt
29a04ad69c build: use vendor folder for building (#19677)
* build: use vendor folder for building
not sure if this is a good idea or not, but this stops module fetching

* untouch yarn.lock

Signed-off-by: Kyle Brandt <kyle@grafana.com>

* modules on in runPrint
2019-10-08 10:17:31 +02:00
Marcus Efraimsson
0ad2242fb8 Table: Proper handling of json data with dataframes (#19596)
When using Raw Document query with Elasticsearch there's a special 
response from datasource that is used which includes a type field with 
the value json. In the table panel there is a transformation for JSON 
data which up until this fix didn't work at all due to the new data 
structure we call data frames.

Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>

Fixes #19531
2019-10-08 09:33:33 +02:00
Torkel Ödegaard
7c2ed5c1fc SharedQuery: Fixed issue when using rows (#19610) 2019-10-08 09:31:01 +02:00
Hugo Häggmark
58badd70b0 SingleStat: Fixes $__name postfix/prefix usage (#19687)
Fixes #19567
2019-10-07 23:32:39 -07:00
Arve Knudsen
d8b6a873d8 Chore: Upgrade Docker images to Go 1.13.1 (#19576)
* Chore: Upgrade Docker image/CI to Go 1.13.1

Fixes #18878

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

* Use golangci-lint master revision
2019-10-08 08:32:18 +02:00
Hugo Häggmark
5202770bdc Grafana Image Renderer: Fixes plugin page (#19664)
Fixes #19659
2019-10-07 21:38:45 -07:00
Reinier van der Leer
ec6d69f468 Units: consistent Meter spelling and abbreviations (#19648)
* fixed unit symbols and description consistency in valueFormats/categories.ts

The preferred English spelling is "litre" (vs "liter") and "metre" (vs "meter"), except in American english. Also, the symbol for Litre is an uppercase 'L', not lowercase.

* Changed metre -> meter in units
2019-10-07 17:12:02 -07:00
Anthony Templeton
6c0b5163dd CloudWatch: Changes incorrect dimension wmlid to wlmid (#19679)
Fixes #19476
2019-10-07 23:47:07 +02:00
Andrej Ocenas
5238faf6da Loki: Fix lookup for label key token (#19579) 2019-10-07 19:36:52 +02:00
Carlos Mondragon
dde059abaa Documentation: Fix time range controls formatting (#19589)
* Fixes Time Range Controls formatting #19339

Image was updated to reflect the latest UI but after reading the
documentation README it looks like someone else will have to upload it.

Thanks for your amazing tool Grafana team!

* Update docs/sources/reference/timerange.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update docs/sources/reference/timerange.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>
2019-10-07 19:21:23 +02:00
oddlittlebird
42a93d2745 Docs: Add additional style rules (#19634)
* Update documentation-style-guide.md

Added items to the documentation style guide.

* Update contribute/style-guides/documentation-style-guide.md

Co-Authored-By: Marcus Olsson <olsson.e.marcus@gmail.com>

* Update documentation-style-guide.md

Removed extra lines
2019-10-07 16:48:32 +02:00
Arve Knudsen
6024260ffc De-duplicate lint-go step (#19675)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-10-07 16:40:08 +02:00
Linus Groh
b21a130118 Docs: Update keyboard shortcuts formatting (#19637)
* Docs: Update keyboard shortcuts formatting in docs

* Docs: Update keystroke separators

* Docs: Remove spaces in keyboard shortcuts
2019-10-07 14:56:00 +02:00
Chad Nedzlek
20faef8de5 AzureMonitor: Alerting for Azure Application Insights (#19381)
* Convert Azure Application Insights datasource to Go

Allows for alerting of Application Insights data source

Closes: #15153

* Fix timeGrainReset

* Default time interval for querys for alerts

* Fix a few rename related bugs

* Update readme to indicate App Insights alerting

* Fix typo and add tests to ensure migration is happening

* Address code review feedback (mostly typos and unintended changes)
2019-10-07 14:18:14 +02:00
Arve Knudsen
92765a6c6f ci-build: Improve build-deploy script (#19653)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-10-07 14:17:17 +02:00
David
cf7ace6aad Rename live option in queries (#19658) 2019-10-07 14:09:46 +02:00
oddlittlebird
aa70abb35d Docs: Update README.md (#19456)
* Update README.md

Minor grammar and format edits

* Update README.md

* Update README.md
2019-10-07 13:26:31 +02:00
dadosch
9caa26ce8c Docs: Update typos, make docs more consistent. (#19633) 2019-10-07 13:23:32 +02:00
Linus Groh
d9257aa38a Docs: Fix operating system names (#19638)
* Docs: Replace "linux" with "Linux"

* Docs: Replace "windows" with "Windows"

* Docs: Replace "Mac/OSX/Mac OS X/MacOS" with "macOS"

* Docs: Replace "unix/UNIX" with "Unix"
2019-10-07 13:20:30 +02:00
Marcus Olsson
f2089bab31 Docs: Move issue triage docs to contribute (#19652) 2019-10-07 11:03:02 +02:00
Torkel Ödegaard
99c1c16a04 DataFormats: When transforming TableModel -> DataFrame -> Table preserve the type attribute (#19621) 2019-10-07 09:06:25 +02:00
Torkel Ödegaard
6f0faa595b Graph: Updated auto decimals logic and test dashboard (#19618) 2019-10-07 09:06:15 +02:00
Torkel Ödegaard
0016189f28 Graph: Switching to series mode should re-render graph (#19623) 2019-10-07 08:58:05 +02:00
Hugo Häggmark
3e603cd88a Revert "Feature: Adds connectWithCleanup HOC (#19392)" (#19628)
This reverts commit 989f98efda.
2019-10-04 05:24:47 -07:00
Hugo Häggmark
989f98efda Feature: Adds connectWithCleanup HOC (#19392)
* Feature: Adds connectWithCleanup HOC

* Refactor: Small typings

* Refactor: Makes UseEffect run on Mount and UnMount only

* Refactor: Adds tests and rootReducer
2019-10-04 04:37:16 -07:00
Torkel Ödegaard
81dd57524d Panels: Progress on new singlestat / BigValue (#19374)
* POC: friday hack

* exploring new singlestat styles

* minor changes

* Testing bizcharts

* style tweaks

* Updated

* minor progress

* updated

* Updated layout handling

* Updated editor

* added editor options

* adding mode

* progress on new display mode

* tweaks

* Added classic style

* Added final mode

* Minor tweak

* tweaks

* minor tweak

* Singlestat: Adjust colors for light theme

* fixed build issues with bizcharts

* fixed typescript issue

* updated snapshot

* Added demo dashboard
2019-10-04 12:01:42 +02:00
andreaslangnevyjel
45e0ebcc57 Units: fixed wrong id for Terabits/sec (#19611) 2019-10-04 09:21:48 +02:00
HG00
f58ec04c12 Docs: General improvements to docs, and a fix in oauth (#19587)
* Docs: Update Centrify Section In Generic Oauth Ref #18207

* Docs: Alphabetise Features / Data Sources (#19289)

* Docs: guides/getting started cleanup (#19449)
2019-10-03 20:28:30 +02:00
brew-install-buzzwords
618652d16e Docs: Replace ampersands with and (#19609) 2019-10-03 18:20:52 +02:00
Ha Huynh
4b042c89fe Profile: Fix issue with user profile not showing more than sessions some times (#19578)
* fix <react-profile-wrapper> crashing

* refix crashing profile page
2019-10-03 18:09:16 +02:00
Sriramajeyam
50acb37a17 Azure Monitor : Query more than 10 dimensions ( Fixes #17230 ) (#18693)
* Fixes #17230

* Resovled comments

* Resolved comments

* spell fix
2019-10-03 16:53:11 +02:00
Sofia Papagiannaki
a62dea47b4 Login: Show SAML login button if SAML is enabled (#19591)
* Show SAML login button if SAML is enabled

Move logic inside LoginServiceButtons

* Prevent from rendering login-oauth div if no login service is enabled
2019-10-03 15:35:38 +02:00
kay delaney
e16064b9b0 UI: Adds Modal component (#19369)
* UI: Adds Modal component
2019-10-03 13:30:24 +01:00
Hugo Häggmark
f9611250ea Prometheus: Fixes so results in Panel always are sorted by query order (#19597)
Fixes #19529
2019-10-03 05:15:59 -07:00
Marcus Olsson
2fb301ccaf Docs: Improve guides for contributing (#19575)
* Move style guides into contribute directory

* Move contribution guides into contribute directory

* Refactor CONTRIBUTING.md

* Clean up docs/README.md

* Update reference to style guide and minor formatting fixes

* Apply suggestions from code review

Co-Authored-By: gotjosh <josue.abreu@gmail.com>

* Update CONTRIBUTING.md

Co-Authored-By: gotjosh <josue.abreu@gmail.com>
2019-10-03 14:13:58 +02:00
kay delaney
27ddd2d60f Migration: Migrates Admin settings from angular to react (#19594) 2019-10-03 13:11:21 +01:00
kay delaney
dafc955338 Chore: Converts HelpModal from angular to react (#19474) 2019-10-02 14:57:40 +01:00
Andreas Kohn
b0b306a1f4 Fix typo (#19571) 2019-10-02 14:19:07 +02:00
Arve Knudsen
39d8e73412 Chore: Upgrade to Go 1.13 (#19502)
* Chore: Upgrade to Go 1.13

Fixes: #18878

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

* Chore: Upgrade lint tools in order to work with Go 1.13

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

* Chore: Fix Go linting issues

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-10-02 13:59:05 +02:00
Andrej Ocenas
16b041608d Explore: Move data source loader into the select (#19465) 2019-10-02 10:15:06 +02:00
Torkel Ödegaard
9a68236d8d Theme: fixed issue with theme always beeing modified (#19517)
* Theme: fixed issue with theme always beeing modified

* Updated snapshot
2019-10-02 10:12:23 +02:00
Torkel Ödegaard
781b679d47 Release: Fix issue with tag script on osx (#19557)
* Release: Fix issue with release script on osx

* Added shellcheck ignore rule
2019-10-02 10:11:15 +02:00
Torkel Ödegaard
1336147a10 Release: Update latest (#19559) 2019-10-02 10:10:30 +02:00
Andrej Ocenas
3e99e8fb6c Docs: Updates about Loki annotations (#19537) 2019-10-02 10:00:23 +02:00
Torkel Ödegaard
b01cc850b6 Theme: follow-up fix for snapshot 2019-10-02 09:59:29 +02:00
Ivana Huckova
41cbad252a UI: Centers the filter tags in input field (#19546)
* UI: Adjust padding to center tags

* UI: Adjust padding to center tags
2019-10-02 09:50:41 +02:00
oddlittlebird
2eb4f64b62 Update README.md (#19515)
Minor grammar and format edits
2019-10-02 09:50:13 +02:00
Torkel Ödegaard
738a1dd6f0 Docs: Updated changelog (#19558) 2019-10-02 09:43:40 +02:00
Torkel Ödegaard
3570d338cf Theme: fix theme issue 2019-10-02 09:13:41 +02:00
gotjosh
8e508e5ce4 Provisioning: Handle empty nested keys on YAML provisioning datasources (#19547)
* Fix: Handle empty nested keys on YAML provisioning datasources

As we provision a datasource via a YAML file, we attempt to transform the
file into sensible Go types that the provisioning code can use.

While this happens, there is a chance some of the keys nested within
the YAML array are empty.

This fix allows the YAML parser to handle empty keys by null checking
the return of `reflect.TypeOf` which according to the documentation:

> TypeOf returns the reflection Type that represents the dynamic type of i. If i is a nil interface value, TypeOf returns nil.

Can return nil.

* Add tests
2019-10-02 08:48:19 +02:00
Torkel Ödegaard
ac11352e3e Docs: updates to what's new in 6.4 (#19539) 2019-10-01 18:11:04 +02:00
David
942f702d80 Loki: remove live option for logs panel (#19533)
* Loki: remote live option for logs panel

* Remove live from logs panel docs
2019-10-01 16:31:45 +02:00
Hugo Häggmark
ed03338d68 Chore: Updates to 6.4.0 stable (#19528) 2019-10-01 05:58:19 -07:00
Sean Nessworthy
404bf2e0dd CloudWatch: Add ap-east-1 to hard-coded region lists (#19523)
* CloudWatch: Add ap-east-1 to hard-coded region lists (#17448)

* CloudWatch: Fix handleGetRegion tests
2019-10-01 14:23:43 +02:00
Hugo Häggmark
8de6ba6aad ChangeLog: Release 6.4.0 Stable (#19526)
* ChangeLog: Release 6.4.0 Stable

* Update CHANGELOG.md

* Update CHANGELOG.md
2019-10-01 04:51:58 -07:00
Torkel Ödegaard
48813779c5 Docs: Add notice about plugins that need updating (#19519)
* Docs: Add notice about plugins that need updating

* Updated changelog notice
2019-10-01 13:29:58 +02:00
Torkel Ödegaard
0ec8303878 Panels: Skip re-rendering panel/visualisation in loading state (#19518)
* Loading states and partial rendering, set loading state in mixed data source, and do not render loading states for react panels

* Updated mixed data source tests
2019-10-01 01:22:41 -07:00
gotjosh
f2ef49f950 Docs: LDAP Debug View documentation (#19513)
* Docs: Add information regarding the LDAP Debug View

* Add instructions to compress image when adding them to the documentation

* Add a troubleshooting section to the docs documentation
2019-10-01 09:18:59 +01:00
Leonard Gram
f9b2204514 Docs: reports feature (#19472)
* Docs: Reporting
2019-10-01 09:16:07 +01:00
Torkel Ödegaard
c712b4f824 SeriesOverrides: Fixed issue with color picker 2019-10-01 09:46:03 +02:00
Arve Knudsen
fc2282009e Build: Fix building when $LDFLAGS is set (#19509)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2019-10-01 09:31:25 +02:00
gotjosh
4181b30b75 API: Add createdAt and updatedAt to api/users/lookup (#19496)
* API: Add `createdAt` and `updatedAt` to api/users/lookup

In the past, we have added both `updatedAt` (#19004) and `createdAt` (#19475) to /api/users/:id

Turns out, api/users/lookup uses the same DTO for both. This fixes the serialization of both `createdAt` and `updatedAt`for this endpoint.

Also, adds a test to ensure no further regressions.

* Updated API documentation
2019-09-30 20:54:09 +01:00
David Kaltschmidt
47432e9349 Fix logs panel image path 2019-09-30 20:43:51 +02:00
David
265669710c Logs: Publish logs panel (#19504)
* Logs: Publish logs panel

- remove alpha state from plugins definition
- add panel documentation
- updated panel reference in Loki docs

* Review feedback
2019-09-30 20:39:42 +02:00
Ivana Huckova
9b5bc819f4 Explore: Update broken link to logql docs (#19510)
* Explore: Update broken link to logql docs

* Explore: Remove console logs

* Explore: Add filter expression heading to link target
2019-09-30 20:39:14 +02:00
Marcus Efraimsson
44add8d9ca Chore: Remove console.log (#19412) 2019-09-30 18:36:42 +02:00
Andrej Ocenas
72c15d7aa3 Refactor: Split LogRow component (#19471) 2019-09-30 16:01:30 +02:00
Marcus Efraimsson
d65a3318ab Build: Upgrade go to 1.12.10 (#19499)
Fixes #19451
2019-09-30 15:41:25 +02:00
Andrej Ocenas
3866814ea9 CLI: Fix version selection for plugin install (#19498) 2019-09-30 15:34:09 +02:00
Marcus Efraimsson
93919427f8 Upgrade grafana-plugin-model (#19438)
* use grafana-plugin-model dependency that uses go modules

* use grafana-plugin-model with updated hashicorp/go-plugin

* use grafana-plugin-model with re-compiled protos

* test using protoc-gen-go v1.2.0 tag

* use grafana-plugin-model with re-compiled protos

* chore: fix deprecation warning for lint

* use latest grafana-plugin-model

Fixes #19454
2019-09-30 15:16:04 +02:00
kay delaney
44de6812be grafana-ui: Moves slate types from devDependencies to dependencies (#19470) 2019-09-30 13:49:09 +01:00
Brenda Harjala
e57e8ede46 Docs: Improve guide descriptions on docs start page #19109 (#19479) 2019-09-30 14:48:21 +02:00
Andrej Ocenas
0490dbb88d Explore: Generate log row uid (#18994) 2019-09-30 14:44:15 +02:00
kay delaney
ccba986bc2 Editor: Brings up suggestions menu after clicking suggestion (#19359) 2019-09-30 12:41:47 +01:00
Andrej Ocenas
649d745262 Docs: Add Live tail section in Explore (#19321) 2019-09-30 12:06:00 +02:00
Marcus Olsson
92ef073456 Docs: Add guide for developing on macOS (#19464) 2019-09-30 10:07:57 +02:00
Rafael George
e1b2bf711d API: Add createdAt field to /api/users/:id (#19475)
It would help for auditing purposes to have the user's created date exposed via the API along with the other fields already exposed via the API.
2019-09-28 12:12:33 +01:00
Marcus Olsson
3c0976afab Docs: Updated heading to sentence case (#19450) 2019-09-27 18:14:18 +02:00
Dominik Prokop
1b5e7ceee7 grafana/toolkit: Remove hack to expose plugin/e2e exports & types (#19467) 2019-09-27 08:07:20 -07:00
Marcus Efraimsson
00e7c7c4b7 Testdata: Rename package to circumvent convention in go (#19409)
Before this change the tests for test datasource was not run.
2019-09-27 16:18:24 +02:00
Dominik Prokop
d6eb4e8459 Docs: Update package's manual release guide (#19469) 2019-09-27 14:32:52 +02:00
Alexander Zobnin
3520db1c66 Users: revert LDAP admin user page (#19463) 2019-09-27 13:06:26 +03:00
Ivana Huckova
40fbea977e Explore: Take root_url setting into account when redirecting from dashboard to explore (#19447)
* Explore: Take root_url setting into account when redirecting from dashboard to explore

* Explore: Move adding of subath to getExploreUrl function

* Explore: Fix explore redirect for key bindings
2019-09-27 10:17:07 +02:00
Andrej Ocenas
234a2c599d Refactor: RefreshPicker export things as statics on class (#19443) 2019-09-27 10:15:05 +02:00
Peter Holmberg
8024c39435 grafana/ui: Fix value time zone names to be capitalized (#19417) 2019-09-27 09:27:44 +02:00
Dominik Prokop
dadc2925a2 Release: Make sure packages are released from clean git state (#19402) 2019-09-26 20:33:14 +02:00
Dominik Prokop
75b21c7603 Docs: Add styling.md with guide to Emotion at Grafana (#19411)
* Add styling.md with guide to emotion

* Update style_guides/styling.md

* Update style_guides/styling.md

* Update style_guides/styling.md

* Update PR guide

* Add stylesFactory helper function

* Simplify styles creator signature

* Make styles factory deps optional

* Update typing

* First batch of updates

* Remove unused import

* Update tests
2019-09-26 20:32:44 +02:00
oddlittlebird
a3008ffb05 Docs: Update SECURITY.md (#19385)
* Update SECURITY.md

Minor grammar edits

* Update SECURITY.md
2019-09-26 12:42:23 +02:00
kay delaney
0991032fef Debt: Simplifies actionCreatorFactory (#19433)
- Use sets to keep track of previously defined actionCreators
- Remove noPayloadActionCreatorFactory
2019-09-26 11:41:37 +01:00
oddlittlebird
651b59b81b Update PLUGIN_DEV.md (#19387)
Minor edits, removed a broken link. It led to a 404 page.
2019-09-26 12:40:47 +02:00
Ivana Huckova
2cdd73cfd4 Release: Create cherrypick task work for enterprise repo (#19424) 2019-09-26 10:30:02 +02:00
Ivana Huckova
8f01e9c0aa Theme: Generate colors SASS 2019-09-26 10:11:03 +02:00
Ryan McKinley
f06fd5bce2 DisplayFormat: use toLocaleString for infinity 2019-09-25 09:56:25 -07:00
Andrej Ocenas
0b85e34b20 Docs: Update Loki docs with new syntax and features (#19370) 2019-09-25 18:16:22 +02:00
Ivana Huckova
ff834afdc3 UI: Add orangeDark color to theme (#19407) 2019-09-25 18:09:08 +02:00
Dominik Prokop
2aaaa98eee grafana/toolkit: Improve contribution readme (#19400)
* Improve toolkit's readme about contributing

* Update packages/grafana-toolkit/README.md

Co-Authored-By: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2019-09-25 16:23:59 +02:00
Marcus Olsson
45c7f211f1 Docs: Remove hard wrap (#19413) 2019-09-25 15:52:49 +02:00
Hugo Häggmark
0598d60234 Tests: Adds throwUnhandledRejections to jest setup (#19398)
* Chore: Adds throwUnhandledRejections to jest setup

* Bring back @grafana/runtime import

* Fix broken metric metadata aggregation test
2019-09-25 05:10:11 -07:00
Dominik Prokop
97beb26f0c DataLinks: suggestions menu improvements (#19396)
* Deduplicate series labels in datalinks variables suggestions

* Allways show all variables available in datalinks suggestions
2019-09-25 12:46:37 +02:00
kay delaney
c60882b497 Dev: Sets preserveSymlinks to false in top-level tsconfig (#19395)
* Dev: Sets `preserveSymlinks` to `false` in top-level tsconfig
Improves dev experience in vscode

* Removed preserveSymlinks from tsconfig since default option is false
2019-09-25 10:50:41 +01:00
Torkel Ödegaard
680a22b898 Build: fixed signing script issue with circle-ci (#19397) 2019-09-25 11:43:10 +02:00
Andrej Ocenas
3bd04d63c4 Docs: Update readme with info about ongoing migration (#19362) 2019-09-25 11:27:20 +02:00
Hugo Häggmark
889f8e3131 PanelData: Adds timeRange prop to PanelData (#19361)
* Refactor: Adds newTimeRange property to PanelData

* Refactor: Handles timeRange prop after requests

* Refactor: Makes timeRange mandatory

* Refactor: Adds DefaultTimeRange
2019-09-25 11:19:17 +02:00
Marcus Efraimsson
e35de167f9 Changelog: 6.4.0-beta2 release (#19380)
* changelog: add 6.4.0-beta2 release

* add back toolkit changes to main changelog
2019-09-25 11:04:41 +02:00
Brenda Harjala
a356b4ed44 Docs: Update Playlist.md (#19382)
* Update playlist.md

Docs: Change gerunds to verbs in Playlist and fix formatting #19341

* Docs: Update Playlist.md #19382
2019-09-25 10:43:55 +02:00
Brenda Harjala
dff5b20c5f Update documentation-style-guide.md (#19389)
Fixed typo: "Documention" becomes "Documentation"
2019-09-25 10:39:03 +02:00
Marcus Efraimsson
c4a03f482c Build: Fix correct sort order of merged pr's in cherrypick task (#19379) 2019-09-25 09:06:44 +02:00
Šimon Podlipský
6be4a67a97 dependencies: Update yarn.lock (#19377) 2019-09-25 09:05:46 +02:00
Ryan McKinley
32b73bb496 ValueFormats: check for inf (#19376) 2019-09-25 09:04:51 +02:00
oddlittlebird
94d7af888c Update UPGRADING_DEPENDENCIES.md (#19386)
Minor grammar edits, mostly bringing headings in line with the style guide.
2019-09-25 07:28:44 +02:00
oddlittlebird
f7a2fe5868 Update ROADMAP.md (#19384) 2019-09-25 07:18:35 +02:00
oddlittlebird
eb80b3249f Update SUPPORT.md (#19383)
Clarified how to get support, added link to official documentation
2019-09-25 07:17:01 +02:00
oddlittlebird
73fdda6f41 Update ISSUE_TRIAGE.md (#19280)
* Update ISSUE_TRIAGE.md

* Update ISSUE_TRIAGE.md

Minor edits

* Update ISSUE_TRIAGE.md

Reverted heading change

* Update ISSUE_TRIAGE.md
2019-09-25 06:39:04 +02:00
oddlittlebird
1fc447eba4 Update datasource_permissions.md (#19336)
Minor grammar and format edits
2019-09-24 23:46:55 +02:00
Marcus Efraimsson
3de693af49 MySQL: Limit datasource error details returned from the backend (#19373)
Only return certain mysql errors from backend.
The following errors is returned as is from backend:
error code 1064 (parse error)
error code 1054 (bad column/field selected)
error code 1146 (table not exists)
Any other errors is logged and returned as a generic
error.
Restrict use of certain functions:
Do not allow usage of the following in query:
system_user()
session_user()
current_user() or current_user
user()
show grants

Fixes #19360
2019-09-24 20:50:49 +02:00
Marcus Efraimsson
7c499ffdd8 MySQL, Postgres: Update raw sql when query builder updates (#19209)
Raw sql now updates when changing query using 
graphical query editor for mysql and postgres.

Fixes #19063
2019-09-24 20:47:21 +02:00
Marcus Efraimsson
96046a7ba6 MySQL, Postgres, MSSQL: Fix validating query with template variables in alert (#19237)
Adds support for validating query in alert for mysql, 
postgres and mssql.

Fixes #13155
2019-09-24 20:46:07 +02:00
Andrej Ocenas
f203e82b40 Explore: Do not send explicit maxDataPoints for logs. (#19235) 2019-09-24 16:20:45 +02:00
Peter Holmberg
bb0a438705 grafana/ui: Add Timezone picker (#19364)
* first things and story

* fixed data structure and fixed picker

* remove console log

* move variables into global scope
2019-09-24 15:34:12 +02:00
Ryan McKinley
2474511d03 Heatmap: use DataFrame rather than LegacyResponseData (#19026)
* merge master

* TimeSeries: datasources with labels should export tags (not labels) (#18977)

* merge master

* export prometheus tags

* Annotations: Add annotations support to Loki (#18949)

* Explore: Unify background color for fresh logs (#18973)

* Singlestat: render lines on the panel when sparklines are enabled (#18984)

* Image rendering: Add deprecation warning when PhantomJS is used for rendering images (#18933)

* Add deprecation warning

* Update pkg/services/rendering/rendering.go

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>

* Units: Adding T,P,E,Z,and Y bytes (#18706)

* Adding T and P for bytes

Luckily, all the hard work was done before; just added in these prefixes for our production environment.

* Future-proofing with other values (why not?)

* Yottaflops?

* Cutting back down to Peta sizes, except for hashes

* Refactor: move ScopedVars to grafana/data (#18992)

* Refactor: Move sql_engine to sub package of tsdb (#18991)

this way importing the tsdb package does not come with xorm dependencies

* use DataFrame in heatmaps

* actually use the setting :)

* remove unused timeSrv

* merge with master / useDataFrames

* fix test function

* merge master

* fix datasource type on snapshot

* reuse DataFrame calcs from graph panel

* update comments
2019-09-24 14:56:15 +02:00
Andrej Ocenas
6a699af27b Explore: Refactor mode selection (#19356) 2019-09-24 12:19:48 +02:00
Torkel Ödegaard
ac3fb6452d Dashboard: Fix export for sharing when panels use default data source (#19315)
* PanelModel: moved datasource: null away from defaults that are removed

* Added unit test
2019-09-24 12:15:35 +02:00
Erik Sundell
4dbedb8405 Azure Monitor: Revert support for cross resource queries (#19115)" (#19346)
This reverts commit 88051258e9.
2019-09-24 12:01:12 +02:00
Dominic Miglar
bb91966180 grafana/ui: Add electrical units mAh and kAh (#19314) 2019-09-24 11:47:56 +02:00
Badri
235a69527e grafana/ui: Add Indian Rupee (INR) to currencies (#19201)
* Adding Indian Rupee (INR) to currencies

This change adds formal support for the Indian Rupee in the list of currencies.

* fix comma
2019-09-24 11:46:15 +02:00
kay delaney
c93325cdd8 Chore: Bump typescript to version 3.6.3 (#19308) 2019-09-24 10:40:16 +01:00
Andrej Ocenas
b0d6ac5f42 Explore: Refactor live tail controls (#19328) 2019-09-24 10:18:34 +02:00
kay delaney
22c6401867 Docs: Documentation for return-to-dashboard feature (#19198) 2019-09-24 10:14:07 +02:00
Peter Holmberg
2c9577fcc5 Select: Set placeholder color (#19309) 2019-09-24 09:06:40 +02:00
Torkel Ödegaard
08cc4f0c8a Keybindings: Improve esc / exit / blur logic (#19320)
* Keybindings: Improve esc / exit / blur logic

* Slight modifications

* removed use of jquery
2019-09-24 09:03:14 +02:00
Hugo Häggmark
75dcaecc99 Plugins: Skips existence of module.js for renderer plugins (#19318)
* Fix: Skips test for module.js for plugins of renderer type
Fixes #19130

* Refactor: Changes after PR comments

* Chore: Fixes go lint issue
2019-09-23 22:54:28 -07:00
Andrej Ocenas
4c1bc59889 Explore: Fix unsubscribing from Loki websocket (#19263) 2019-09-23 22:48:39 +02:00
Sofia Papagiannaki
9018050eca Release: update latest.json (#19312) 2019-09-23 16:43:22 +02:00
Jérémy Lugand
0516315620 Docs: Uppercase HTTP acronyms (#19317) 2019-09-23 16:07:11 +02:00
gotjosh
279249ef56 Multi-LDAP: Do not fail-fast on invalid credentials (#19261)
* Multi-LDAP: Do not fail-fast on invalid credentials

When configuring LDAP authentication, it is very common to have multiple
servers configured. When using user bind (authenticating with LDAP using
the same credentials as the user authenticating to Grafana) we don't
expect all the users to be on all LDAP servers.

Because of this use-case, we should not fail-fast when authenticating on
multiple LDAP server configurations. Instead, we should continue to try
the credentials with the next LDAP server configured.

Fixes #19066
2019-09-23 13:34:05 +01:00
Dominik Prokop
feb6bc6747 DataLinks: Small UX improvements to DataLinksInput (#19313)
Closes #19257
2019-09-23 14:17:17 +02:00
Hugo Häggmark
9bd6ed887c Alerting: Prevents creating alerts from unsupported queries (#19250)
* Refactor: Makes PanelEditor use state and shows validation message on AlerTab

* Refactor: Makes validation message nicer looking

* Refactor: Changes imports

* Refactor: Removes conditional props

* Refactor: Changes after feedback from PR review

* Refactor: Removes unused action
2019-09-23 05:17:00 -07:00
kay delaney
68d6da77da Chore: Update Slate to 0.47.8 (#19197)
* Chore: Update Slate to 0.47.8
Closes #17430
2019-09-23 12:26:05 +01:00
kay delaney
918cb78092 Chore: Upgrades react-redux to version 7.1.1 (#19272) 2019-09-23 12:01:08 +01:00
oddlittlebird
6fcbe60a8e Docs: Update documentation-style-guide.md (#19292)
* Update documentation-style-guide.md

Added heading rules

* Update documentation-style-guide.md

Added ampersand rule
2019-09-23 12:53:15 +02:00
lzd
50b4695cf5 Admin/user: fix textarea postion in 'Pending Invites' to avoid page scrolling (#19288)
* hide textarea element after click 'Copy Invite' button on firefox
2019-09-23 12:50:35 +02:00
Sofia Papagiannaki
2d8635054e Changelog update for 6.3.6 2019-09-23 13:49:49 +03:00
Sofia Papagiannaki
44aa90dc60 Revert "Changelog update for 6.3.6"
This reverts commit 98c2e24c73.
2019-09-23 13:49:49 +03:00
Sofia Papagiannaki
8513e742bc Changelog update for 6.3.6 2019-09-23 13:49:49 +03:00
Marcus Efraimsson
4386604751 Build: Split up task in the CI pipeline to ease running outside circleci (#18861)
* build: make sign rpm packages not depend on checking out private key

* build: move commands from circleci config into verify signed packages script

* build: split update and publish of deb and rpm into two scripts

* use files argument for sign and verify packages

* validate files argument for sign and verify packages

* update test publish of deb/rpm readme
2019-09-23 12:00:18 +02:00
Marcus Efraimsson
8f9c487c44 Build: Scanning grafana master docker image with trivy in ci (#19195)
Adds support for scanning the grafana/grafana:master docker image 
using trivy in circle ci each night.
2019-09-23 11:34:43 +02:00
Hugo Häggmark
f01836c17a Dashboard: Hides alpha icon for visualization that is not in alpha/beta stage #19300
Fixes #19251
2019-09-23 02:34:00 -07:00
Dominik Prokop
b7752b8c02 Update changelog task to generate toolkit changelog too (#19262) 2019-09-23 11:19:34 +02:00
Torkel Ödegaard
bbf2bd18fd QueryEditor: Clean-up interface to only have one PanelData (#19249)
* QueryEditor: Clean-up interface to only have one PanelData

* Renamed to prop name to data
2019-09-23 11:13:33 +02:00
Marcus Olsson
fd7e2a21a1 Docs: Add style rule for Git (#19277) 2019-09-23 10:33:56 +02:00
oddlittlebird
cff3e37e9e Docs: Update CONTRIBUTING.md (#19273)
Minor grammar and clarity improvements
2019-09-22 20:15:35 +02:00
oddlittlebird
cb9637b21a Docs: Add glossary (#19148)
* Create glossary.md

* Update glossary.md

Added definition for panel

* Update glossary.md

* Update glossary.md

* Update glossary.md

Fixed closing table tag
2019-09-20 18:55:31 +02:00
oddlittlebird
94893788aa Docs: Add style guide for docs (#19190)
* Create STYLEGUIDE.md

* Update STYLEGUIDE.md

Added a placeholder for image guidelines, someone needs to add specificity

Added Capitalization section

Expanded Word usage

* Update STYLEGUIDE.md

Edited panel definition

* Update STYLEGUIDE.md

Applied Brenda and Marcus's edits

* Moved style guide to style_guides folder and renamed, added README to the style_guides folder, other minor edits

* Update doc-style-guide.md

* Style updates

Changed a couple doc names for consistency, updated file naming conventions and README links

* Corrected file names

Changed file names back to original, clarified file naming convention in documentation-style-guide
2019-09-20 18:45:06 +02:00
Ryan McKinley
6787e7b5ab Vector: remove toJSON() from interface (#19254) 2019-09-20 08:22:33 -07:00
Marcus Efraimsson
19f3ec4891 MySQL, Postgres, MSSQL: Only debug log when in development (#19239)
Found some additional debug statements in relation to #19049 that 
can cause memory issues.

Ref #19049
2019-09-20 15:00:28 +02:00
Torkel Ödegaard
d95318b325 Graphite: Changed range expansion from 1m to 1s (#19246)
Fixes #11472
2019-09-20 14:37:03 +02:00
srid12
2a1e130000 AlertBox: Merged Alertbox into Alert (#19212)
* refatoring alert box and using alert

* refactoring alertbox to alert

* Changed default to Error

* added buttonText, onButtonClick, omRemove

* Minor fix to buttons

* fixed onRemove
2019-09-20 13:41:00 +02:00
Andrej Ocenas
bf24cbba76 Explore: live tail UI fixes and improvements (#19187) 2019-09-20 13:00:11 +02:00
Dominik Prokop
9feac7753b Docs: Update theming docs (#19248) 2019-09-20 11:27:57 +02:00
Dominik Prokop
809e2ca3c7 grafana/toolkit: Fix toolkit not building @grafana/toolkit (#19253)
* Fix toolkit not building

Weird TS didn't pick this up...

* Update packages/grafana-toolkit/src/cli/index.ts
2019-09-20 11:17:07 +02:00
Franco Papalardo
b8334c14f8 CloudWatch: ContainerInsights metrics support (#18971)
* CloudWatch ContainerInsights support
2019-09-20 12:05:58 +03:00
Andrew Rabert
8a991244d5 Alerting: Truncate PagerDuty summary when greater than 1024 characters (#18730)
Requests to PagerDuty fail with an HTTP 400 if the `summary` 
attribute contains more than 1024 characters, this fixes this.
API spec:
https://v2.developer.pagerduty.com/docs/send-an-event-events-api-v2

Fixes #18727
2019-09-20 10:39:27 +02:00
Dominik Prokop
54ebf174a0 grafana/toolkit: Add plugin scaffolding (#19207) 2019-09-20 09:47:49 +02:00
Dominik Prokop
be8097fca2 Snapshots: store DataFrameDTO instead of MutableDataFrame in snapshot data (#19247) 2019-09-20 09:40:16 +02:00
Torkel Ödegaard
da3587a67b Revert "Graphite: Changed range expansion from 1m to 1s, #11472"
This reverts commit d0a89a5925.
2019-09-20 08:24:21 +02:00
Torkel Ödegaard
d0a89a5925 Graphite: Changed range expansion from 1m to 1s, #11472 2019-09-20 08:22:39 +02:00
Marcus Olsson
5bd94d9c0d Fix docs issues (#19240) 2019-09-20 00:22:38 +02:00
Brenda Harjala
c9e566b156 Docs: Minor edits to the README and several md files (#19238)
* Update README.md

Capitalized the G and S in "Getting Started," and moved "guide" to match the section title in the docs.

* Fixed sentence structure. Changed "download" to "grafana.com/get" and changed "get" to "download".

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

*  Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)

* Docs: Replace "datasources" with "data sources" (#19111)
2019-09-20 00:04:56 +02:00
gotjosh
b20a258b72 LDAP: Show non-matched groups returned from LDAP (#19208)
* LDAP: Show all LDAP groups

* Use the returned LDAP groups as the reference when debugging LDAP

We need to use the LDAP groups returned as the main reference for
assuming what we were able to match and what wasn't. Before, we were
using the configured groups in LDAP TOML configuration file.

* s/User name/Username

* Add a title to for the LDAP mapping results

* LDAP: UI Updates to debug view

* LDAP: Make it explicit when we weren't able to match teams
2019-09-19 16:13:38 +01:00
Alexander Zobnin
98c95a8a83 plugins: expose whole rxjs to plugins (#19226) 2019-09-19 16:27:31 +03:00
Sofia Papagiannaki
56f5106717 SQL: Rewrite statistics query (#19178)
* Rewrite statistics query
2019-09-19 14:15:26 +03:00
Torkel Ödegaard
fa209f21c3 CI: Update frontend ci metrics for strict null checks 2019-09-19 09:38:07 +02:00
Peter Holmberg
f445369d68 grafana/ui: Add disabled prop on LinkButton (#19192) 2019-09-19 08:59:36 +02:00
Kevin Printz
79f8433675 Cloudwatch: Fix autocomplete for Gamelift dimensions (#19145) (#19146) 2019-09-19 08:27:15 +02:00
Masudur Rahman
a41a7ea656 Backend: Remove redundant condition of ROLE_VIEWER (#19211) 2019-09-19 08:19:11 +02:00
Ryan McKinley
14f1cf29f0 FieldDisplay: Update title variable syntax (#19217) 2019-09-19 08:17:15 +02:00
Marcus Efraimsson
c4e8f6e809 Docs: Note when using For and No Data in alert rule (#19185)
Add a note to documentation regarding using For and No Data.

Co-Authored-By: Kyle Brandt <kyle@grafana.com>
2019-09-18 19:32:53 +02:00
Marcus Efraimsson
4d96bc590f Docker: Upgrade packages to resolve reported vulnerabilities (#19188)
Fixes #19186
2019-09-18 19:32:14 +02:00
Marcus Efraimsson
0f524fc947 MSSQL: Revert usage of new connectionstring format (#19203)
This reverts commit 2514209 from #18384. Reason is that it doesn't 
work due to xorm 0.7.1 which doesn't support this new connectionstring 
format.

Fixes #19189
Ref #18384
Ref #17665
2019-09-18 19:30:35 +02:00
Thierry Sallé
043bb59593 Prometheus: datasource config with custom parameters string (#19121) 2019-09-18 18:59:23 +02:00
Marcus Olsson
a5adeed840 Contributing: Add guidelines for contributing docs (#19108)
* Docs: Add docs for how to contribute to docs

* Fix review comments from marefr

* Add information about links on doc pages
2019-09-18 18:47:10 +02:00
Alexander Zobnin
6b2e95a1f2 LDAP debug page: deduplicate errors (#19168) 2019-09-18 13:40:36 +03:00
lzd
5ef40b259d Menu: fix menu button in the mobile view (#19191)
* replace "sandwich" (menu) button with logo(back home) if kiosk=tv
* update navbar initialize padding-left befause menu button is overlapped by the navbar
2019-09-18 11:06:08 +02:00
Hugo Häggmark
38e948a1ad Dashboard: Fixes back button styles in kiosk mode (#19165)
Fixes: #18114
2019-09-18 08:58:08 +02:00
Leonard Gram
dd794625dd API: adds redirect helper to simplify http redirects (#19180) 2019-09-17 19:28:35 +02:00
Marcus Efraimsson
75bf31b5c7 docs: image rendering (#19183)
Adds a new "Image Rendering" page in Administration section.
Updates configuration page with rendering settings and also 
default.ini and sample.ini.
Updates and cleanup pages that referencing image rendering.

Ref #18914
2019-09-17 19:24:03 +02:00
Dominik Prokop
fcec156cb3 Chore: Update latest.json (#19177) 2019-09-17 17:37:35 +02:00
Dominik Prokop
ca9a46309a Chore: Update version to next (#19169) 2019-09-17 15:54:30 +02:00
Torkel Ödegaard
79cb51c93f Docs: What's new in 6.4 update (#19175)
* Updated whats new article

* Fixed reports image

* fixes to whats new doc

* Minor changes
2019-09-17 15:51:45 +02:00
Ivana Huckova
32417e1388 Devenv: create slow_proxy_mac (#19174) 2019-09-17 15:25:48 +02:00
Dominik Prokop
f7de64bd15 Chore: Changelog for v6.4.0-beta1 (#19171) 2019-09-17 14:04:08 +02:00
Dominik Prokop
503dccb771 Revert "Chore: Update Slate to 0.47.8 (#18412)" (#19167)
This reverts commit 601853fc84.
2019-09-17 13:21:50 +02:00
kay delaney
601853fc84 Chore: Update Slate to 0.47.8 (#18412)
* Chore: Update Slate to 0.47.8
Closes #17430

* Add slate and immutable to grafana-ui deps

* Fixes some small regressions introduced

* Fix suggestions for multiple query fields

* Pin upgraded dependencies

* Prettier fix

* Remove original slate-react dependency

* Fix tiny-invariant dep

* (Temporarily) comments out source maps for grafana-ui
2019-09-17 13:16:24 +02:00
Marcus Efraimsson
e3a69d8023 Changelog: Breaking changes and deprecation notes for v6.4 (#19164)
Breaking changes and deprecation notes for v6.4

Closes #18520

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>
2019-09-17 13:09:29 +02:00
Dominik Prokop
b25cbef361 Docs: What's new 6.4 draft (#19144)
* What's new 6.4 draft

* data model notes

* minor progress

* Only include top highlights list
2019-09-17 12:15:04 +02:00
Dominik Prokop
bc0f909a96 Docs: Add docs around feature toggles config (#19162) 2019-09-17 12:11:27 +02:00
Erik Sundell
88051258e9 Azure Monitor: Add support for cross resource queries (#19115)
* Add new query mode picker with different states for each query. Also really simple migration script

* Populate cross resource dropdowns

* Cleanup. Handle change events

* Add multi select picker for subscriptions

* Fix markup issue

* Prepare for new query mode

* More cleanup

* Handle multiple queries both in ds and backend

* Refactoring

* Improve migration

* Add support for multiselect display name

* Use multiselect also for locations and resources

* Add more typings

* Fix migrations

* Custom multiselect built for array of options instead of variables

* Add url builder test

* fix datasource tests

* UI fixes

* Improve query editor init

* Fix brokens tests

* Cleanup

* Fix tslint issue

* Change query mode display name

* Make sure alerting works for single queries

* Friendly error for multi resources

* Add temporary typings
2019-09-17 11:35:40 +02:00
Sofia Papagiannaki
b5f0a5d5ca Api: Readonly datasources should not be created via the API (#19006)
* Readonly datasources should not be created via the API

* Return correct `ReadOnly` value in GetDataSourceByName
2019-09-17 12:29:43 +03:00
Andrej Ocenas
359404eb77 Explore: Update live tail buttons (#19143) 2019-09-17 11:25:12 +02:00
Alexander Zobnin
494b4aaf88 LDAP: only show tab if LDAP is enabled (#19156)
* LDAP: add nav link only if ldap enabled

* LDAP: /admin/ldap required admin permissions
2019-09-17 10:27:55 +02:00
Hugo Häggmark
3952083bdb TimePicker: Fixes onBlur issue with FireFox on MacOS (#19154)
Fixes: #18531
2019-09-17 09:48:47 +02:00
Hugo Häggmark
aaf93b2f77 Feature: Encapsulated dynamic imports with error boundary and suspense (#19128)
* Feature: Encapsulated dynamic imports with error boundary and suspense

* Refactor: Changes after PR review

* Align PageLoader and LoadingPlaceholder

* Updated loading failed UI abit

* Change Failed to Unable
2019-09-17 09:46:26 +02:00
Marcus Efraimsson
80592e3361 Metrics: Adds setting for turning off total stats metrics (#19142)
Don't update total stats metrics if reporting is disabled.
New setting disable_total_stats for turning off update 
of total stats (stat_totals_*) metrics.

Ref #19137
2019-09-17 09:32:24 +02:00
Sofia Papagiannaki
bf40849a2c Add directions for more details provided when not anymore on issue triage (#19116) 2019-09-17 10:17:18 +03:00
Dominik Prokop
5c0f424d1b grafana/data: Reorganise code (#19136)
* Organise data frame and vectors code

* Organise transformations

* Move dataframe utils to dataframe dir

* Organise datetime utils

* Organise text utils

* Organise logs utils

* Revert "Organise logs utils"

This reverts commit c24115c755.

* registry -> Registry

* Transformations reorg
2019-09-17 08:23:47 +02:00
lzd
330cd597ec Login: fix Footer to be visible (#19147) 2019-09-17 07:27:21 +02:00
Ryan McKinley
383bdb160f Chore: fix prettier error after github suggestions commit (#19150) 2019-09-16 21:48:37 -07:00
Ryan McKinley
015ab370b0 Alerts: show a warning/error if transformations are configured (#19027) 2019-09-16 20:59:22 -07:00
Ivana Huckova
85e128fede Explore: No logs should show an empty graph (#19132)
* Explore: add no data points text to graph

* Explore: add console log for error (accidentaly removed)

* Explore: refactor, created getYAxes method for better readability

* Explore: remove unnecessary console.log

* Explore: fix getYAxes method to return value

* Graph: Simplify warning from no data points to No data
2019-09-16 18:55:52 +02:00
Peter Holmberg
3c61b563c3 Ldap: Add LDAP debug page (#18759)
* Add items for navmodel and basic page

* add reducer and actions

* adding user mapping table component

* adding components for ldap tables

* add alert box on error

* close error alert box

* LDAP status page: connect APIs WIP

* LDAP debug: fetch connection status from API

* LDAP debug: fetch user info from API

* LDAP debug: improve connection error view

* LDAP debug: connection error tweaks

* LDAP debug: fix role mapping view

* LDAP debug: role mapping view tweaks

* LDAP debug: add bulk-sync button stub

* LDAP debug: minor refactor

* LDAP debug: show user teams

* LDAP debug: user info refactor

* LDAP debug: initial user page

* LDAP debug: minor refactor, remove unused angular wrapper

* LDAP debug: add sessions to user page

* LDAP debug: tweak user page

* LDAP debug: tweak view for disabled user

* LDAP debug: get sync info from API

* LDAP debug: user sync info

* LDAP debug: sync user button

* LDAP debug: clear error on page load

* LDAP debug: add user last sync info

* LDAP debug: actions refactor

* LDAP debug: roles and teams style tweaks

* Pass showAttributeMapping to LdapUserTeams

* LDAP debug: hide bulk sync button

* LDAP debug: refactor sessions component

* LDAP debug: fix loading user sessions

* LDAP debug: hide sync user button

* LDAP debug: fix fetching unavailable /ldap-sync-status endpoint

* LDAP debug: revert accidentally added fix

* LDAP debug: show error when LDAP is not enabled

* LDAP debug: refactor, move ldap components into ldap/ folder

* LDAP debug: styles refactoring

* LDAP debug: ldap reducer tests

* LDAP debug: ldap user reducer tests

* LDAP debug: fix connection error placement

* Text update

* LdapUser: Minor UI changes moving things around

* AlertBox: Removed icon-on-top as everywhere else it is centered, want to have it be consistent
2019-09-16 18:56:01 +03:00
James Beckett
ba11958a52 Elasticsearch: allow templating queries to order by doc_count (#18870)
* Elasticsearch Datasource: allow templating queries to order by doc_count

* Elasticsearch Datasource: add tests for doc_count templating queries
2019-09-16 18:41:53 +03:00
Dominik Prokop
1a71501440 Chore: cross-package security bumps (#19131)
* Bump lodash to 4.17.15

* Bump pretty-format to 24.9.0
2019-09-16 15:50:15 +02:00
gotjosh
99c799e9b7 Close the connection only if we establish it. (#18897) 2019-09-16 14:13:35 +01:00
Hugo Häggmark
e9f1e86c8e Fix: Fixes crash using back button with zoomed graph (#19122)
Fixes: #19114
2019-09-16 14:17:33 +02:00
Dominik Prokop
97ff75732d Routing: Update routing to require sign in on every route (#19118)
* Update routing to require sign in on every route

* Review update
2019-09-16 14:06:50 +02:00
David
a28aefa370 Graph: constant series as override (#19102)
* Graph: constant series as override

- ability to define a series override that takes the first value of a
timeseries and produces constant series from it.

* Moved constant series override logic to grafana-ui

* Added docs for instant queries and constant series override
2019-09-16 13:49:55 +02:00
Dominik Prokop
44a2a648c6 Login: fix login page failing when navigating from reset password views (#19124) 2019-09-16 13:38:03 +02:00
Torkel Ödegaard
e968a2aa86 DataFrame: Fixes to dealing with empty results (#19119)
* DataFrame: Fixes to dealing with empty results

* review feedback fixes
2019-09-16 13:02:26 +02:00
Torkel Ödegaard
9d0a076eb1 Explore: calculate intervals when building data source request (#19107)
* Explore: calculate intervals when building data source request

* Added unit test

* updated unit test
2019-09-16 12:35:39 +02:00
Hugo Häggmark
7ace80c71c Graph: Adds onHorizontalRegionSelected (#19083)
* Refactor: Renamed and changed Signature for OnHorizontalRegionSelected

* Refactor: Adds onHorizontalRegionSelected to GraphPanelController

* Refactor: Moves TimeSrv call to PanelChrome instead
2019-09-16 09:31:22 +02:00
David
b392bba745 Loki: Updated cheat sheet with new filter syntax (#18947)
* Loki: Updated cheat sheet with new filter syntax

- updated cheat sheet with new filter syntax
- added user-specific examples from the user's label set
- added link to LogQL docs
- separated styles for examples (clickable) and expressions

* Review feedback
2019-09-16 07:17:34 +02:00
Dominik Prokop
c2bd36f550 grafana/toolkit: Find module files correctly and add basic error tracing (#19089)
* Find correct module files

* Add basic error tracing
2019-09-15 20:20:45 +02:00
srid12
ecb97488d8 Templating: Clicking Selected should deselect all if 1 or more are already selected (#19104) 2019-09-15 17:29:26 +02:00
Lauren Muhlhauser
3827913105 NotificationChannels: Add delete button to edit page (#19103)
* Add delete button to edit notification channel page

* Simplified code
2019-09-15 12:08:57 +02:00
Peter Holmberg
3d3bbb7159 Dashboard: Fix arrow positioning in button while in panel edit mode (#19084) 2019-09-15 12:02:39 +02:00
oddlittlebird
10d1cb23ba Update _index.md (#19045)
Added missing alias redirect
2019-09-13 18:48:19 +02:00
Marcus Efraimsson
2acffbeb10 CLI: Fix installing plugins on windows (#19061)
Fixes #19022
2019-09-13 18:12:52 +02:00
gotjosh
7b7b95341e LDAP: Allow an user to be synchronised against LDAP (#18976)
* LDAP: Allow an user to be synchronised against LDAP
This PR introduces the /ldap/sync/:id endpoint. It allows a user to be synchronized against LDAP on demand.

A few things to note are:

LDAP needs to be enabled for the sync to work
It only works against users that originally authenticated against LDAP
If the user is the Grafana admin and it needs to be disabled - it will not sync the information
Includes a tiny refactor that favours the JSONEq assertion helper instead of manually parsing JSON strings.
2019-09-13 16:26:25 +01:00
Marcus Efraimsson
475673c82f Docs: Adds a requirements page (#18917)
Adds a new requirements page to the installation docs.
Wanted/needed some place to document known browser 
issues and thought that adding this missing page together 
with OS, hardware, database and browser requirements 
would be a good thing.
Fix: move 6.4 section in upgrade notes further down.

Fixes #16487
Ref #18690
2019-09-13 17:23:58 +02:00
Torkel Ödegaard
fd21e0ba14 DataLinks: enable access to labels & field names (#18918)
* POC: trying to see if there is a way to support objects in template interpolations

* Added support for nested objects, and arrays

* Added accessor cache

* fixed unit tests

* First take

* Use links supplier in graph

* Add field's index to cache items

* Get field index from field cache

* CHange FiledCacheItem to FieldWithIndex

* Add refId to TimeSeries class

* Make field link supplier work with _series, _field and _value vars

* use field link supplier in graph

* Fix yaxis settings

* Update dashboard schema version and add migration for data links variables

* Update snapshots

* Update build in data link variables

* FieldCache - idx -> index

* Add current query results to panel editor

* WIP Updated data links dropdown to display new variables

* Fix build

* Update variables syntac in field display, update migration

* Field links supplier: review updates

* Add data frame view and field name to TimeSeries for later inspection

* Retrieve data frame from TimeSeries when clicking on plot graph

* Use data frame's index instead of view

* Retrieve data frame by index instead of view on TimeSeries

* Update data links prism regex

* Fix typecheck

* Add value variables to suggestions list

* UI update

* Rename field to config in DisplayProcessorOptions

* Proces single value of a field instead of entire data frame

* Updated font size from 10px to 12px for auto complete

* Replace fieldName with fieldIndex in TimeSeries

* Don't use .entries() for iterating in field cache

* Don't use FieldCache when retrieving field for datalinks in graph

* Add value calculation variable to data links (#19031)

* Add support for labels with dots in the name (#19033)

* Docs update

* Use field name instead of removed series.fieldName

* Add test dashboard

* Typos fix

* Make visualization tab subscribe to query results

* Added tags to dashboard so it shows up in lists

* minor docs fix

* Update singlestat-ish variables suggestions to contain series variables

* Decrease suggestions update debounce

* Enable whitespace characters(new line, space) in links and strip them when processing the data link

* minor data links UI update

* DataLinks: Add __from and __to variables suggestions to data links (#19093)

* Add from and to variables suggestions to data links

* Update docs

* UI update and added info text

* Change ESC global bind to bind (doesn't capture ESC on input)

* Close datalinks suggestions on ESC

* Remove unnecessary fragment
2019-09-13 16:38:21 +02:00
lzd
fc10bd7b8e Singlestat: fix format messes up on negative values if select duratio… (#19044)
* Singlestat: fix format messes up on negative values if select duration (hh:mm:ss) unit

* Added test for 0
2019-09-13 16:15:31 +02:00
Andrej Ocenas
d55261aac7 Explore: Move throttling before processing (#19095) 2019-09-13 15:32:53 +02:00
Andrej Ocenas
5fdc6da3ec Prometheus: Fix response states (#19092) 2019-09-13 15:08:29 +02:00
Ivana Huckova
c3e846c95f Explore: Fix how log bars in graph are stacking (#19015) 2019-09-13 13:58:29 +02:00
Andrej Ocenas
81ec76bdef Explore: Add throttling when doing live queries (#19085) 2019-09-13 10:58:29 +02:00
Erik Sundell
4c8f417f18 Stackdriver: Add extra alignment period options (#18909)
* Add more alignment period options

* Remove unnecessary alignment period limit
2019-09-13 10:45:59 +02:00
Torkel Ödegaard
b6c501bc8a QueryProcessing: Added missing error event for angular editors (#19059)
* QueryProcessing: Added missing error event for angular editors

* fix if else
2019-09-13 10:09:25 +02:00
Hugo Häggmark
076a8fc85c Explore: Fixes issue with lastResult being null (#19081) 2019-09-13 08:13:01 +02:00
Ryan McKinley
5b9901ebba GraphPanel: don't listen to legacy onDataReceived events (#19054)
* don't listen to legacy data events in graph

* fix test

* rename function

* add annotationsSrv stub

* use const

* fix preProcessPanelData

* update test
2019-09-13 06:40:10 +02:00
Torkel Ödegaard
55717769a3 QueryProcessing: Fixes showing last result in initial loading state (#19057)
* PanelQueryRunner: Need to cache preProcessPanelData function between runs so last result can be remembered

* Better fix for remembering lastResult

* Code simplification

* Simplify code a bit
2019-09-12 21:42:50 +02:00
Ryan McKinley
e3a99a0a3d toolkit: fix master build, avoid null check (#19055) 2019-09-12 10:32:12 -07:00
548017
09b434bdd0 Auth: Allow inviting existing users when login form is disabled (#19048)
Allow api to accept inviting existing users when login form is disabled.
UI shows invite button when login form is disabled.
2019-09-12 18:45:50 +02:00
Brian Gann
9eafc693b2 MSSQL: Fix memory leak when debug enabled (#19049)
* fix for #19049
2019-09-12 18:44:31 +02:00
oddlittlebird
81c326b31a Update CONTRIBUTING.md (#19051)
Minor grammar edits. Mostly added periods and colons. 
Made heading capitalization consistent.
2019-09-12 18:36:46 +02:00
oddlittlebird
3f6a37f9af Update README.md (#19047)
Added punctuation and made minor grammar and format edits. 
Mostly added periods and colons.
2019-09-12 18:34:54 +02:00
Ryan McKinley
8c5d925063 toolkit: pipe execa output to console.stdout (#19052) 2019-09-12 08:39:11 -07:00
Torkel Ödegaard
140ecbcf79 QueryProcessing: Observable query interface and RxJS for query & stream processing (#18899)
* I needed to learn some rxjs and understand this more, so just playing around

* Updated

* Removed all the complete calls

* Refactoring

* StreamHandler -> observable start

* progress

* simple singal works

* Handle update time range

* added error handling

* wrap old function

* minor changes

* handle data format in the subscribe function

* Use replay subject to return last value to subscribers

* Set loading state after no response in 50ms

* added missing file

* updated comment

* Added cancelation of network requests

* runRequest: Added unit test scenario framework

* Progress on tests

* minor refactor of unit tests

* updated test

* removed some old code

* Shared queries work again, and also became so much simplier

* unified query and observe methods

* implict any fix

* Fixed closed subject issue

* removed comment

* Use last returned data for loading state

* WIP: Explore to runRequest makover step1

* Minor progress

* Minor progress on explore and runRequest

* minor progress

* Things are starting to work in explore

* Updated prometheus to use new observable query response, greatly simplified code

* Revert refId change

* Found better solution for key/refId/requestId problem

* use observable with loki

* tests compile

* fix loki query prep

* Explore: correct first response handling

* Refactorings

* Refactoring

* Explore: Fixes LoadingState and GraphResults between runs (#18986)

* Refactor: Adds state to DataQueryResponse

* Fix: Fixes so we do not empty results before new data arrives
Fixes: #17409

* Transformations work

* observable test data

* remove single() from loki promise

* Fixed comment

* Explore: Fixes failing Loki and Prometheus unit tests (#18995)

* Tests: Makes datasource tests work again

* Fix: Fixes loki datasource so highligthing works

* Chore: Runs Prettier

* Fixed query runner tests

* Delay loading state indication to 200ms

* Fixed test

* fixed unit tests

* Clear cached calcs

* Fixed bug getProcesedDataFrames

* Fix the correct test is a better idea

* Fix: Fixes so queries in Explore are only run if Graph/Table is shown (#19000)

* Fix: Fixes so queries in Explore are only run if Graph/Table is shown
Fixes: #18618

* Refactor: Removes unnecessary condition

* PanelData: provide legacy data only when needed  (#19018)

* no legacy

* invert logic... now compiles

* merge getQueryResponseData and getDataRaw

* update comment about query editor

* use single getData() function

* only send legacy when it is used in explore

* pre process rather than post process

* pre process rather than post process

* Minor refactoring

* Add missing tags to test datasource response

* MixedDatasource: Adds query observable pattern to MixedDatasource (#19037)

* start mixed datasource

* Refactor: Refactors into observable parttern

* Tests: Fixes tests

* Tests: Removes console.log

* Refactor: Adds unique requestId
2019-09-12 17:28:46 +02:00
Jess
3742db720f Fix exit live mode icon: change back to Stop. (#19043) 2019-09-12 16:01:21 +02:00
David
2f9c2f3886 Loki: Fix vertical alignment issue in label selector (#18943)
- upgraded rc-cascader (did not fix the alignment issue)
- Safari seems to default to middle alignment, added override to explore
styles
- added empty expand icon property to satisfy API after upgrade
2019-09-12 15:33:16 +02:00
Peter Holmberg
dc0bfb26cf Fix: Align buttons and label in ToggleButtonGroup (#19036) 2019-09-12 14:42:28 +02:00
Ryan McKinley
e4e7719428 toolkit: run make for backend plugins (#19029) 2019-09-12 01:17:41 -07:00
Andrej Ocenas
bc4ba64a24 Explore: Fix auto completion on label values for Loki (#18988) 2019-09-12 10:02:49 +02:00
Dominik Prokop
0607189ed5 TimeSeries: Replace fieldName with fieldIndex (#19030) 2019-09-12 09:55:15 +02:00
Dominik Prokop
c66a23ea31 DataLinksInput - change the way enter key is handled (#18985) 2019-09-12 09:36:57 +02:00
Dominik Prokop
0994350e8b TimeSeries: Add data frame index and field name (#19005) 2019-09-12 08:47:18 +02:00
Dominik Prokop
c2dea633e6 Packages: update versioning and release process (#18195) 2019-09-12 08:00:31 +02:00
gotjosh
fa007423e3 API: Add updatedAt to api/users/:id (#19004)
* API: Add `updatedAt` to api/users/:id

This adds the timestamp of when a particular user was last updated to
the `api/users/:id` endpoint.

This helps our administrators understand when was the user information last
updated. Particularly when it comes from external systems e.g. LDAP
2019-09-11 13:43:05 +01:00
Peter Holmberg
a07f46cee0 PageContent: fix logic in Page.Contents (#19002) 2019-09-11 11:35:09 +02:00
Torkel Ödegaard
7ca77b8a98 Calcs: Fixed calc reducer (#18998) 2019-09-11 09:02:33 +02:00
Torkel Ödegaard
f2ca3abf07 AlphaNotice: replaced big popover tooltip with native tooltip (#18997) 2019-09-11 09:02:17 +02:00
Peter Holmberg
196f8503a8 grafana/ui: Add Time of day picker (#18894)
* Adding DashboardPicker component

* fix prop names

* fix prop names pt2

* add component and modify utils

* add showHour prop

* add minuteStep to TimeOfDayPicker, add value to DashboardPicker

* fix for dashboard picker, missed adding file

* Adding story

* add another story for hiding hour and style fixes

* fix these generated files

* fixes after review

* rename current value

* fix type issue on onChange

* fix story
2019-09-11 09:00:14 +02:00
Ryan McKinley
7b856ae040 QueryOptions: update maxDataPoints text and show any value that is configured (#18761)
* update maxDataPoints UI

* use maxDataPoints to calculate interval

* don't change interval calculation
2019-09-11 07:45:08 +02:00
lzd
4c0e5b14f5 Piechart: fix unit selector when scrolling is required (#18932) 2019-09-11 07:42:28 +02:00
Kyle Brandt
e5bf3027fc Refactor: Move sql_engine to sub package of tsdb (#18991)
this way importing the tsdb package does not come with xorm dependencies
2019-09-10 15:50:04 -04:00
Ryan McKinley
7520ebadac Refactor: move ScopedVars to grafana/data (#18992) 2019-09-10 12:06:01 -07:00
Omar Ahmad
ca96d794e2 Units: Adding T,P,E,Z,and Y bytes (#18706)
* Adding T and P for bytes

Luckily, all the hard work was done before; just added in these prefixes for our production environment.

* Future-proofing with other values (why not?)

* Yottaflops?

* Cutting back down to Peta sizes, except for hashes
2019-09-10 20:30:38 +02:00
Sofia Papagiannaki
7f40dc5317 Image rendering: Add deprecation warning when PhantomJS is used for rendering images (#18933)
* Add deprecation warning

* Update pkg/services/rendering/rendering.go

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2019-09-10 16:16:51 +03:00
lzd
7d9f6d96fc Singlestat: render lines on the panel when sparklines are enabled (#18984) 2019-09-10 13:28:13 +02:00
Ivana Huckova
2c5d1745ca Explore: Unify background color for fresh logs (#18973) 2019-09-10 11:30:25 +02:00
Andrej Ocenas
0e3e874eee Annotations: Add annotations support to Loki (#18949) 2019-09-10 11:04:44 +02:00
Ryan McKinley
eccc6adfde TimeSeries: datasources with labels should export tags (not labels) (#18977)
* merge master

* export prometheus tags
2019-09-10 06:58:34 +02:00
Ivana Huckova
14a740572d Explore: UX/UI improvements for pausing and resuming of live tailing (#18931) 2019-09-09 19:09:06 +02:00
Andrej Ocenas
8c79085351 Annotations: Fix query editor rendering on datasource change (#18945) 2019-09-09 17:10:26 +02:00
dependabot[bot]
6a064a1f59 Bump lodash-es from 4.17.11 to 4.17.15 (#18963)
Bumps [lodash-es](https://github.com/lodash/lodash) from 4.17.11 to 4.17.15.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.15)

Signed-off-by: dependabot[bot] <support@github.com>
2019-09-09 15:08:52 +02:00
dependabot[bot]
3b595e0710 Bump fstream from 1.0.11 to 1.0.12 (#18962)
Bumps [fstream](https://github.com/npm/fstream) from 1.0.11 to 1.0.12.
- [Release notes](https://github.com/npm/fstream/releases)
- [Commits](https://github.com/npm/fstream/compare/v1.0.11...v1.0.12)

Signed-off-by: dependabot[bot] <support@github.com>
2019-09-09 15:08:33 +02:00
dependabot[bot]
e32a39d8d9 Bump mixin-deep from 1.3.1 to 1.3.2 (#18960)
Bumps [mixin-deep](https://github.com/jonschlinkert/mixin-deep) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/jonschlinkert/mixin-deep/releases)
- [Commits](https://github.com/jonschlinkert/mixin-deep/compare/1.3.1...1.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2019-09-09 15:08:03 +02:00
dependabot[bot]
2aba6b9c07 Bump lodash.template from 4.4.0 to 4.5.0 (#18961)
Bumps [lodash.template](https://github.com/lodash/lodash) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.4.0...4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>
2019-09-09 15:07:48 +02:00
lzd
c9c0dd1ea8 Alerting: fix response popover prompt when add notification channels (#18967) 2019-09-09 14:09:21 +02:00
Sofia Papagiannaki
de075e529d Build: Fix potential case-insensitive import collision for github.com/Unknwon/com (#18915)
* update gopkg.in/macaron.v1

* update github.com/go-macaron/binding

* update github.com/go-macaron/session

* Substitute github.com/Unknwon/com with github.com/unknwon/com

* Clean up modules using `go mod tidy`

* Substitute github.com/Unknwon/bra with github.com/unknwon/bra
2019-09-09 14:22:06 +03:00
Ryan McKinley
62a808bf1f MixedDataSource: refactor, cleanup, and add tests (#18948)
* merge master

* move mixed datasource

* all responses in test

* fix tests/mocks

* remove ?
2019-09-09 11:29:37 +02:00
dependabot[bot]
509b1a9d65 Bump lodash.mergewith from 4.6.1 to 4.6.2 (#18959)
Bumps [lodash.mergewith](https://github.com/lodash/lodash) from 4.6.1 to 4.6.2.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-09-09 10:59:17 +02:00
Anirudh Ramesh
6968fab437 Units: Add electrical charge - ampere-hour unit 2019-09-09 10:04:35 +02:00
Ryan McKinley
7d32caeac2 Transformers: configure result transformations after query(alpha) (#18740) 2019-09-09 08:58:57 +02:00
Dominik Prokop
205c0a58ac grafana/toolkit: Add default mock for stylesheet imports for Jest (#18955)
Up until now one had to manually specify module name mapper for stylesheet files in order for Jest not to fail when running tests that import stylesheet files.

This adds default mock for stylesheet file and some tests
2019-09-09 08:43:15 +02:00
Dominik Prokop
e2b1cdd7ac grafana/toolkit: Improve readme (#18747)
* Improve grafana toolkit related readmes

* Post review updates

* Update packages/grafana-toolkit/README.md

* Update packages/grafana-toolkit/README.md
2019-09-09 08:18:38 +02:00
Andrej Ocenas
05434cffb1 Docs: Add PR review practices link (#18937) 2019-09-09 07:50:17 +02:00
jelle van der Waa
5affb919f2 Build: Allow extending of LDFLAGS in build.go (#18954)
Allow extending LDFALGS by setting LDFLAGS to be able to pass
-zrelro,-znow for Arch Linux packaging
to get full relro.
2019-09-09 07:49:24 +02:00
jelle van der Waa
ce7a8dde83 Build: Support SOURCE_DATE_EPOCH for reproducible builds (#18953)
If grafana is build from a non-git source a new timestamp is used every build which makes grafana binaries
non-reproducible.

Motivation: https://reproducible-builds.org
2019-09-09 07:30:48 +02:00
gotjosh
10fe101add LDAP: Fetch teams in debug view (#18951)
Adds the definition of `GetTeamsForLDAPGroupCommand` which handles the lookup of team information based on LDAP groupDNs.

This is an Enterprise only feature. To diferentiate,a response will contain the `team` key as `null` on OSS while on Enterprise the key will contain an empty array `[]` when no teams are found.
2019-09-08 11:48:47 +01:00
kay delaney
545be60138 Dashboard: Fixes dashboard overwriting behavior (#18944)
Fixes #18941
2019-09-06 12:48:54 +01:00
Ivana Huckova
803699ea88 Grafana: Create new playlist/dashboard/channel card is not visible when there are no items in the list (#18890) 2019-09-06 10:34:10 +02:00
Dominik Prokop
5f1bb3947c Storybook: fix type error (#18934)
* Use window.setTimeout/Interval instead of nodejs versions

* Remove awesome-typescript-loader dependency
2019-09-06 10:23:24 +02:00
Patrick O'Carroll
d21415a936 Sass: changed color in gradient in template files to lower case (#18921) 2019-09-05 21:46:26 +02:00
Sofia Papagiannaki
388d3d3714 Notification is sent when state changes from no_data to ok (#18920) 2019-09-05 18:54:27 +03:00
Peter Holmberg
1bd4f51189 SASS: Add pointer events none to .disabled class (#18919) 2019-09-05 15:32:07 +02:00
kay delaney
a838d2b30a Explore: Adds ability to save a panel's query from Explore (#17982)
* Explore: Adds ability to return to origin dashboard
2019-09-05 13:44:37 +01:00
Ryan McKinley
991f77cee1 Loki: support loki with streaming in dashboards (#18709)
Move some of the buffering with live streaming inside of the datasource, sending full frames instead of deltas and allow Loki in dashboards.
2019-09-05 14:04:01 +02:00
Shavonn Brown
e80e3608ad UserProfile: convert user organizations section to react (#18707)
* convert user organizations section to react

* reload page on org change
2019-09-05 12:47:20 +02:00
Shavonn Brown
849d4881cd Annotations: Check that timeEnd if defined before comparing to avoid false truthiness (#18903)
* Check that timeEnd if defined before comparing to avoid false truthiness

* Moved loop

Fixes #18902
2019-09-05 08:14:06 +02:00
Torkel Ödegaard
3f0862a7d1 Sass: Align generated file with tmpl (#18896) 2019-09-04 17:40:06 +02:00
gotjosh
7c6dd1868b LDAP: Add API endpoint to query the LDAP server(s) status (#18868)
* LDAP: Add API endpoint to query the LDAP server(s) status|

This endpoint returns the current status(es) of the configured LDAP server(s).

The status of each server is verified by dialling and if no error is returned we assume the server is operational.

This is the last piece I'll produce as an API before moving into #18759 and see the view come to life.
2019-09-04 15:29:14 +01:00
Neo
a5d8b0212b Add South African Rand (ZAR) to currencies (#18893)
This change adds formal support for the South African Rand in the list of currencies.
2019-09-04 15:18:19 +02:00
lzd
3410fb44e9 Annotations: check if the name exists before creating a new annotation (#18880) 2019-09-04 14:00:37 +02:00
Torkel Ödegaard
490a1d6fc9 ErrorHandling: Error boundary for every container (#18845)
* ErrorHandling: Error boundary for every container

* Remvoe custom query editor errors
2019-09-04 13:59:30 +02:00
Torkel Ödegaard
b0237c6b7e Precommit: Fixed precommit task issue (#18883) 2019-09-04 12:45:01 +02:00
Scott Brenner
cb4d30f852 Docs: Quick typo fix in readme (#18874) 2019-09-04 12:44:07 +02:00
Leonard Gram
cdad1331d9 CI: no longer using grafana-master... package. (#18884) 2019-09-04 11:30:26 +02:00
Patrick O'Carroll
00c8bf4f2f Styles: fixed gradient in logo so it doesn't go outside the logo and get a defined start and end color, changed brand gradient to be the same as in logo, created new variable for vertical gradient (#18882)
Fixes #18856
2019-09-04 11:28:35 +02:00
kay delaney
6ea2d484b1 Webpack: Fix accidental double typechecking (#18881) 2019-09-04 10:17:49 +01:00
Andrej Ocenas
aab224ef29 Explore: elastic small fixes (#18879)
- Fix cancellation error showing in UI
- Fix display of object values in log rows
2019-09-04 10:49:09 +02:00
Andrej Ocenas
e0e3a4db54 Explore: Add typings for queryTransaction.request (#18847) 2019-09-03 22:04:33 +02:00
gotjosh
0cbbb43222 LDAP: Add API endpoint to debug user mapping from LDAP (#18833)
* Move the ReloadLDAPCfg function to the debug file

Appears to be a better suite place for this.

* LDAP: Return the server information when we find a specific user

We allow you to specify multiple LDAP servers as part of LDAP authentication integration. As part of searching for specific users, we need to understand from which server they come from. Returning the server configuration as part of the search will help us do two things:

- Understand in which server we found the user
- Have access the groups specified as part of the server configuration

* LDAP: Adds the /api/admin/ldap/:username endpoint

This endpoint returns a user found within the configured LDAP server(s). Moreso, it provides the mapping information for the user to help administrators understand how the users would be created within Grafana based on the current configuration.

No changes are executed or saved to the database, this is all an in-memory representation of how the final result would look like.
2019-09-03 18:34:44 +01:00
Torkel Ödegaard
09032cd766 PanelQueryState: restore comment 2019-09-03 18:20:58 +02:00
Torkel Ödegaard
b39268f195 Explore: ResultProcessor refactor isTimeSeries check 2019-09-03 17:31:23 +02:00
Dominik Prokop
6e6e2c96dd grafana/toolkit: fix common webpack config (#18862) 2019-09-03 17:28:56 +02:00
Torkel Ödegaard
aafae4c523 Explore: Use DataFrame to derive graph/table/logs (#18859)
* WIP: Use data frames in explore

* Explore: everything seems to be working again

* Reworked ResultProcessor tests

* Fixed unit test

* Add some typings and comments
2019-09-03 17:24:22 +02:00
Torkel Ödegaard
289a33bf5b Updated is time series test 2019-09-03 15:57:00 +02:00
Torkel Ödegaard
7cec383470 Fixed unit test 2019-09-03 15:24:55 +02:00
Kyle Brandt
364d2358d8 alerting: add lock on job to prevent a race condition (#18218)
without this lock there is a race condition between the scheduler and job processing.
2019-09-03 09:14:28 -04:00
Torkel Ödegaard
443e8d8daa Reworked ResultProcessor tests 2019-09-03 14:31:34 +02:00
Torkel Ödegaard
8003041321 Explore: everything seems to be working again 2019-09-03 12:36:21 +02:00
Torkel Ödegaard
8272dc87ab WIP: Use data frames in explore 2019-09-03 12:09:52 +02:00
Andrej Ocenas
e3181e66b4 Explore: Allow pausing and resuming of live tailing (#18836)
Adding pause/resume buttons and pause on scroll to prevent new rows messing with the scroll position.
2019-09-03 11:23:39 +02:00
Leonard Gram
dd2068067c CI: stop deployment to s3 (#18831) 2019-09-03 11:01:36 +02:00
kay delaney
7985aa1e57 Performance/Webpack: Introduces more aggressive code-splitting and other perf improvements (#18544)
* Performance/Webpack: Introduces more aggressive code-splitting and other perf improvements
- Introduces dynamic imports for built-in plugins
- Uses dynamic imports for various packages (rst2html, brace)
- Introduces route-based dynamic imports
- Splits angular and moment into separate bundles
2019-09-03 09:29:02 +01:00
Hugo Häggmark
409874b35d Explore: Introduces PanelData to ExploreItemState (#18804)
* WIP: inital POC

* Wip: Moving forward

* Wip

* Refactor: Makes loading indicator work for Prometheus

* Refactor: Reverts prom observable queries because they did not work for multiple targets

* Refactor: Transforms all epics into thunks

* Fix: Fixes scanning

* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel

* Fix: Fixes negation logic error

* Wip: Introduces PanelData as a carries for query responses

* Refactor: Makes errors work again

* Refactor: Simplifies code somewhat and removes comments

* Tests: Fixes broken tests

* Fix query latency

* Remove unused code
2019-09-03 09:55:20 +02:00
Peter Holmberg
6912ed572c Core: Adding DashboardPicker component (#18811)
* Adding DashboardPicker component

* fix prop names

* fix prop names pt2
2019-09-03 09:54:01 +02:00
Torkel Ödegaard
1782d68137 Git: Precomit hook slimmed down 2019-09-03 09:38:25 +02:00
Torkel Ödegaard
adbefcc37d DataSourceSettings: Fixed issue changing data source name, fixes #18660 (#18826) 2019-09-02 20:45:42 +02:00
Torkel Ödegaard
fe658d7ac2 Prometheus: Fixed Prometheus query editor error (plus new ErrorBoundaryAlert component) (#18838)
* ErrorHandling: Fixed Prometheus query editor error and added error boundary

* Update public/app/core/components/ErrorBoundary/ErrorBoundary.tsx

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

* Fixed ts error
2019-09-02 20:45:18 +02:00
Ivana Huckova
29ff8e6018 Explore: Style panel containers (#18834) 2019-09-02 17:19:30 +02:00
Marcus Efraimsson
964c2e722f Snapshot: Fix http api (#18830)
(cherry picked from commit be2e2330f5)
2019-09-02 15:15:46 +02:00
Ivana Huckova
2672b92206 Open new window when exploring panel metrics (#18802) 2019-09-02 12:47:33 +02:00
Torkel Ödegaard
6690b51955 Release: update latest.json 2019-09-02 12:27:55 +02:00
Torkel Ödegaard
82ec812cc9 Docs: Update changelog with v6.3.5 issues (#18827) 2019-09-02 12:01:09 +02:00
Marcus Olsson
5bb15cf3e2 Build: Update ua-parser/uap-go (#18788) 2019-09-02 11:02:26 +02:00
Marcus Efraimsson
e111232324 Build: Use the latest build container which has go 1.12.9 (#18807) 2019-09-02 10:53:16 +02:00
Ryan McKinley
c777301535 DataFrame: split DataFrameHelper into MutableDataFrame and FieldCache (#18795)
* add appending utility

* add appending utility

* update comment

* rename to mutable

* move mutable functions out of DataFrameHelper

* move mutable functions out of DataFrameHelper

* move mutable functions out of DataFrameHelper

* turn DataFrameHelper into FieldCache

* guess time from name

* graph the numbers

* return the timeField, not just the index

* just warn on duplicate field names

* only use a parser if the input is a string

* append init all fields to the same length

* typo

* only parse string if value is a string

* DataFrame: test fixes

* Switch to null for missing values

* Fixed tests
2019-09-01 14:44:22 +02:00
Ryan McKinley
13f55bc5e8 MixedDatasource: don't filter hidden queries before sending to datasources (#18814) 2019-08-30 11:59:23 -07:00
Oleg Gaidarenko
1a4be4af8c Enterprise: add dependencies for upcoming features (#18793)
* Enterprise: add dependencies for upcoming features

See enterprise issues
2019-08-30 18:14:32 +02:00
kay delaney
d6fb48c0ff Editor: Fixes issue where only entire lines were being copied (#18806)
* Editor: Fixes issue where only entire lines were being copied
Closes #18768

* Simplifies onCopy handler and factors out logic for easier testing
Also adds tests to verify behaviour
2019-08-30 17:09:00 +02:00
Torkel Ödegaard
a147aedb10 Explore: Fixed query status issue (#18791)
* Explore: Fixed query status issue, fixes #18778

* Added test for QueryStatus
2019-08-30 15:30:24 +02:00
Torkel Ödegaard
65a6eda93b DashboardMigrator: Fixed issue migrating incomplete panel link models (#18786) 2019-08-30 15:23:38 +02:00
Torkel Ödegaard
8e9cb5c81a Explore: Fixes query hint issues (#18803)
* Explore: clear results when you change datasource

* Explore: Clear results on data source change, and fix query hints issue

* Clear results on clear all

* Prometheus: Update logic of when to re-check query hints
2019-08-30 15:22:36 +02:00
David
89abc77b22 Build: Optional skipping of typescript checking in dev bundler (#18772)
* Build: Removed typescript checking from dev bundler

- when switching branches and trying out features, TS checking and bundling are eating up a lot
of CPU
- most of us are using an editor with typechecking support
- this commit removes type checking from the dev bundler
- we still have type checking enabled as a precommit hook and as part of
the prod bundler

* Adds new npm script: start:noTsCheck
2019-08-30 14:02:31 +02:00
Kumaraguru Ramasamy
a928da7f26 Docs: Improve API tutorial intro content and readability (#18762)
* API Tutorial: Improve content and readability

- Simplified the introductory paragraphs.
- Rewrote the descriptions and steps to improve readability.

* Updated topic as discussed in the PR

- Corrected the typo from "Graphana" to "Grafana".
- Rewritten the note as suggested by reviewers and to avoid passive voice.

Please review and share your thoughts.
2019-08-30 13:06:08 +02:00
Dominik Prokop
e4a0b2240d Panels: Destroy panel model when recreating repeated panels (#18799)
Fixes #18533

To recreate the bug described in the original issue in the simplest possible way:

1. Setup dashboard with a single panel and repeat it using variables
2. Set the dashboard refresh to 5s
3. Hover over repeated panel during the refresh

What happened there?
When panels are repeated every time the dashboard is refreshed or variables change the repeated PanelModels are recreated. In https://github.com/grafana/grafana/blob/master/public/app/features/dashboard/state/DashboardModel.ts#L322 the models are removed from dashboard panel's model property what makes the dashboard re-render with source panel only, and then back again with the repeated panels when models are re-created. This means creating new DashboardPanel components. But when the repeated PanelModels are removed, they are not destroyed what results in a behaviour described in #18533.

This is a quick fix for this issue. Ideally I think we should use some cache and update the repeated PanelModels when the refresh or variables change trigger re-render, instead of re-creating those every time. I don't want to do this ATM as the logic around repeating panels is quite complex and require some <3.
2019-08-30 08:42:21 +02:00
Torkel Ödegaard
d9a3601094 Singlestat: Various fixes to singlestat and DataFrame (#18783)
* Singlestat: Various fixes to singlestat and DataFrame

* removed comment
2019-08-29 19:04:33 +02:00
Torkel Ödegaard
e6e8611d52 Explore: Fixed issue in PanelQuery state arround cancellation (#18771)
* Explore: Fixed issue in PanelQuery state arround cancellation

* Added unit test

* Fixed typescript issues in test
2019-08-29 16:25:10 +02:00
kay delaney
22c9575a33 Going to Explore from a panel with mixed data sources now works (#18784)
Closes #18597
2019-08-29 14:27:27 +01:00
Marcus Efraimsson
a75850a26a Changelog update (#18780)
* update changelog

* update latest.json to latest stable version
2019-08-29 14:22:28 +02:00
Andrej Ocenas
6402391638 Explore: Add memoization and remove unused props (#18775) 2019-08-29 13:41:45 +02:00
kay delaney
3aa3a45372 Prometheus: Changes brace-insertion behavior to be less annoying (#18698)
* Changes brace-insertion behavior to be less annoying

* Removes use of braces plugin

* Revert "Removes use of braces plugin"

This reverts commit 4cf4a6073b.
2019-08-29 12:02:48 +02:00
Dominik Prokop
90508cdbf2 Datasource: Support min time interval input in ms (#18719)
* Support min time interval input in ms in SQL datasource settings

* Enable ms in elastic min time interval setup
2019-08-29 09:36:10 +02:00
Hugo Häggmark
5ca643f2ba Explore: Use PanelQueryState to handle querying (#18694)
* WIP: inital POC

* Wip: Moving forward

* Wip

* Refactor: Makes loading indicator work for Prometheus

* Refactor: Reverts prom observable queries because they did not work for multiple targets

* Refactor: Transforms all epics into thunks

* Fix: Fixes scanning

* Fix: Fixes so that Instant and TimeSeries Prom query loads in parallel

* Fix: Fixes negation logic error

* Propagate errors in stream events, and close streams
2019-08-28 18:24:52 +02:00
Gali Alykoff
f942fecc52 Chore: Improve err message for notifications (#18757)
Improve message of notification json error
Fix test after change error message
2019-08-28 16:49:36 +02:00
Ryan McKinley
e9c1b8b3f3 @grafana/toolkit: add package versions to the ci report (#18751) 2019-08-28 07:01:28 -07:00
Ryan McKinley
5fcbc33710 @grafana/data: Matchers and Transforms (#16756)
* add extension framework

* add filter transformer

* more logging

* adding more tests

* make stats an extension

* make stats an extension

* test registry init

* first get a function, then call it

* move files to data package

* not used

* update to columnar

* Add more tests for nameMatcher

* Fix invert predicate

* add fluent API

* remove calc snapshot

* split Field matchers and Frame matchers

* split filter transformers

* Fix typo
2019-08-28 13:37:46 +02:00
Marcus Efraimsson
67d6a43df6 Docs: Document LDAP config reload in admin http api (#18739)
Fixes #17221
2019-08-28 13:26:03 +02:00
Ivana Huckova
c347b64b5a center NoDataSourceCallToActionCard in Explore (#18752) 2019-08-28 10:26:48 +02:00
Ryan McKinley
ff6b8c5adc DataLinks: enable data links in Gauge, BarGauge and SingleStat2 panel (#18605)
* datalink on field

* add dataFrame to view

* Use scoped variables to pass series name and value time to data links interpolation

* Use scoped variables to pass series name and value time to data links interpolation

* Enable value specific variable suggestions when Gauge is displaying values

* Fix prettier

* Add basic context menu with data links to GaugePanel

* Fix incorrect import in grafana/ui

* Add custom cursor indicating datalinks available via context menu (in Gauge only now)

* Add data links to SingleStat2

* Minor refactor

* Retrieve data links in a lazy way

* Update test to respect links retrieval being lazy

* delay link creation

* cleanup

* Add origin to LinkModel and introduce field & panel links suppliers

* Add value time and series name field link supplier

* Remove links prop from visualization and implement common UI for data links context menu

* Update snapshot

* Rename className prop to clickTargetClassName

* Simplify condition

* Updated drilldown dashboard and minor changes

* Use class name an onClick handler on the top level dom element in visualization

* Enable series name interpolation when presented value is a calculation
2019-08-28 08:50:43 +02:00
Ryan McKinley
e1924608a2 DashboardDatasource: reuse query results within a dashboard (#16660)
* move queryRunner to panelModel

* remove isEditing from PanelChrome

* move listener to QueriesTab

* add shared query datasource

* expose getDashboardSrv to react

* no changes to panel chrome

* issue queries when in fullscreen

* moved to regular QueryEditor interface

* moved to regular QueryEditor interface

* lower limit

* add dashboard query

* no changes to editor row

* fix sort order

* fix sort order

* make it an alpha panel

* make panelId a getter

* fix angular constructor

* rename SeriesData to DataFrame

* merge with master

* use series

* add simple tests

* check unsubscribe

* Minor code cleanup, creating Subjects look cheap and does not need to be lazy, simplifies code

* minor refactor

* Minor refacforing, renames

* added test dashboard
2019-08-27 11:06:49 +02:00
Ryan McKinley
8ce509f3b4 Plugins: show a clear error on the plugin page when it failed to load (#18733) 2019-08-26 23:43:45 -07:00
Marcus Efraimsson
e83f55f394 Chore: Use ruleId instead of alertId as log keyword (#18738) 2019-08-27 08:40:03 +02:00
Ryan McKinley
73d9f262bd @grafana/data: improve the CircularVector api (#18716) 2019-08-26 12:42:27 -07:00
Shavonn Brown
a540f05330 QueryEditor: check if optional func toggleEditorMode is provided (#18705) 2019-08-26 18:28:43 +02:00
Oleg Gaidarenko
66f739815b Emails: remove the yarn.lock (#18724)
yarn.lock with old deps triggers the github vuln errors, if you update deps
to newest versions grunt commands will stop working. Since we generating
emails here, vuln errors seems needless.

We need to remove grunt dependency anyhow
2019-08-26 18:26:49 +02:00
Bob Shannon
056dbc7012 OAuth: Support JMES path lookup when retrieving user email (#14683)
Add support for fetching e-mail with JMES path

Signed-off-by: Bob Shannon <bobs@dropbox.com>
2019-08-26 18:11:40 +02:00
Oleg Gaidarenko
35b74a99a8 Emails: resurrect template notification (#18686)
* Emails: resurrect template notification

* Phantomjs (oh yeah, there is another dev dep phantom :-) was failing for
  the generation of the html templates so I had to update the dependencies
  in order to fix it. While doing that I update the scripts field and docs
  for it as well. yarn.lock is included

* Move splitting of the emails to separate helper function, since more services
  coming up that would need to use this functionality

* Add support for enterprise specific email letters. Probably could
  be done in the better way, but it's not a priority right now
2019-08-26 17:19:03 +02:00
Oleg Gaidarenko
c5bca40566 Email: add reply-to and direct attachment (#18715)
* Add support for `Reply-To` header

* Allow direct attachment

Don't have tests yet, but they will follow
2019-08-26 16:44:18 +02:00
Hugo Häggmark
e5e7bd3153 Dashboard: Adds Logs Panel (alpha) as visualization option for Dashboards (#18641)
* WIP: intial commit

* Switch: Adds tooltip

* Refactor: Adds props to LogsPanelEditor

* Refactor: Moves LogRowContextProvider to grafana/ui

* Refactor: Moves LogRowContext and Alert to grafana/ui

* Refactor: Moves LogLabelStats to grafana/ui

* Refactor: Moves LogLabels and LogLabel to grafana/ui

* Refactor: Moves LogMessageAnsi and ansicolor to grafana/ui

* Refactor: Moves calculateFieldStats, LogsParsers and getParser to grafana/data

* Refactor: Moves findHighlightChunksInText to grafana/data

* Refactor: Moves LogRow to grafana/ui

* Refactor: Moving ExploreGraphPanel to grafana/ui

* Refactor: Copies Logs to grafana/ui

* Refactor: Moves ToggleButtonGroup to grafana/ui

* Refactor: Adds Logs to LogsPanel

* Refactor: Moves styles to emotion

* Feature: Adds LogsRows

* Refactor: Introduces render limit

* Styles: Moves styles to emotion

* Styles: Moves styles to emotion

* Styles: Moves styles to emotion

* Styles: Moves styles to emotion

* Refactor: Adds sorting to LogsPanelEditor

* Tests: Adds tests for sorting

* Refactor: Changes according to PR comments

* Refactor: Changes according to PR comments

* Refactor: Moves Logs and ExploreGraphPanel out of grafana/ui

* Fix: Shows the Show context label again
2019-08-26 08:11:07 +02:00
Andy Bursavich
98a512a3c7 Heatmap: Add Cividis and Turbo color schemes (#18710) 2019-08-25 21:52:40 -07:00
Franz Schwartau
8cf5c4dbe9 Units: add counts/sec (cps) and counts/min (cpm) in Throughput (#18702) 2019-08-25 16:23:33 +02:00
Franz Schwartau
0167e0a6b2 Dev Docker: Use golang:1.12.9-alpine to prevent glibc mismatch. (#18701)
Using golang:1.12.9 which is based on Debian as a build container
leads to a version mismatch for glibc when running grafana-server
in alpine:3.10

grafana-server: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by grafana-server)
2019-08-25 16:20:52 +02:00
Nicolò Rebughini
77849bb337 Docs: Fix broken link for the Grafana on RHEL or Ubuntu tutorial (#18697)
The author updated their site and now the link changed.
2019-08-23 19:18:45 +02:00
kay delaney
1723ad9bdb Fixes several usability issues with QueryField component (#18681)
* Fixes several usability issues with QueryField component
- Can now indent with tab and `mod+[`, `mod+]`
- Copy/Cut preserves new lines, and paste correctly splits blocks now
- Adds support for selection hotkeys
2019-08-23 14:17:13 +01:00
Shavonn Brown
1c36542018 convert teams section of user profile to react (#18633)
* convert teams section of user profile to react

* isLoading prop

* loading placeholders
2019-08-23 08:26:52 -04:00
Torkel Ödegaard
e50a75f25f Singlestat/Gauge/BarGauge: Improvements to decimals logic and added test dashboard (#18676)
* Singlevalue: Improvements to decimals logic and added test dashboard

* updated

* Fixed tests
2019-08-23 09:28:12 +02:00
flopp999
0f2a393e0b Emails: Change text (#18683)
The text was little misunderstanding
A user asked me what password I had choose, but the user shall choose the password them self.
2019-08-23 09:20:56 +02:00
Ryan McKinley
ca778363bf Streaming: improve JSDocs for DataSourceAPI streaming support (#18672) 2019-08-22 10:00:19 -07:00
Dominik Prokop
6d3a05a02b TimeSrv: Enable value time windowing in TimeSrv (#18636)
This introduces change to TimeSrv that enables time & time.window query param. Thanks to that time range of a dashboard can be specified as a window(time.window param) around given timestamp(time param)
2019-08-22 11:42:36 +02:00
Hugo Häggmark
774b7267df Explore: Fixes so Show context shows results again (#18675)
* Fix: Fixes so Show context shows results again
Fixes: #18656

* Refactor: Removes unused import that made it thrugh the pre-commit somehow
2019-08-22 11:10:20 +02:00
Torkel Ödegaard
0ea3444d1b Graph: Updated y-axis ticks test dashboard (#18677) 2019-08-22 10:23:21 +02:00
Andrej Ocenas
d4382ad906 Add typings to package.json in packages (#18640)
Fixes Go to definition in webstorm
2019-08-22 10:20:17 +02:00
Ryan McKinley
f7c55d3968 Plugins: better warning when plugins fail to load (#18671)
* better pluin feedback

* add server side check for module.js
2019-08-22 07:04:02 +02:00
Ryan McKinley
c98c5c3c8e SingleStat2: save options to defaults not override (#18666) 2019-08-21 13:24:21 -07:00
Dominik Prokop
6c34936aee Packages: Fix path import from grafana/data (#18667) 2019-08-21 13:19:11 -07:00
Ryan McKinley
68f7413566 SingleStat: use DataFrame results rather than TimeSeries/TableData (#18580) 2019-08-21 07:56:53 -07:00
Ryan McKinley
e6fbf358c8 TestData: attach labels to series results (#18653) 2019-08-21 07:50:13 -07:00
Ryan McKinley
ffd630ad96 Singlestat: Disable new singlestat gauge usage (#18610) 2019-08-21 13:56:02 +02:00
Hugo Häggmark
6eb13ae555 Explore: Fixes query field layout in splitted view for Safari browsers (#18654)
Fixes: #18436
2019-08-21 10:31:37 +02:00
Shavonn Brown
d38b6f02d0 MSI: new long file names are causing error building MSI (#18646)
* suspect long file names are causing err
2019-08-20 21:18:38 +02:00
Oleg Gaidarenko
6ca1a6c8da Auth: change the error HTTP status codes (#18584)
* Auth: change the error HTTP status codes

* Use 407 HTTP status code for incorrect credentials error

* Improve proxy auth logs

* Remove no longer needed TODO comment

Fixes #18439
2019-08-20 20:13:27 +03:00
Tobias Skarhed
ec492e55dc Refactor: EmptyListCTA (#18516)
* Rewrite EmptyListCTA props and start removing css classes

* Add watchDepth onClick

* EmptyListCTA with React in annotaitons/editor

* Begin conversion of DashLinks editor EmptyListCTA

* Use React component in DashLinks, Variables and TeamGroupSync

* Remove scss file and add emotion styles

* Update snapshot

* Remove style import

* Fix feedback

* Update snapshot
2019-08-20 17:19:21 +02:00
Marcus Olsson
299a0e20f4 Build: Upgrade to go 1.12.9 (#18638)
* Build: Upgrade to go 1.12.9

* Build: Use default-mysql-client for debian buster

The go base image has been updated to use Debian Buster instead of
Stretch, which seems to have done away with mysql-client in favor of
default-mysql-client.

* Build: Update Dockerfile to use go 1.12.9

Fixes #18592
2019-08-20 12:29:42 +02:00
Dominik Prokop
faabb839e6 Chore: Revert React 16.9.0 bump (#18634)
Since React and other dependencies bump caused some troubles with building packages that @kaydelaney and me tried to debug without any success, we decided to revert React 16.9.0 bump.
2019-08-20 11:14:53 +02:00
Shavonn Brown
f22aaa5518 Azure Monitor and Log Analytics converted and separated into components (#18259)
* Azure Monitor and Log Analytics converted and separated into components

* Insights creds converted

* remove angular config

* fix workspaces and missing sameas key

* fix workspace save

* set subscriptionId key

* editor fields, load workspaces btn

* workspace load req fields updated

* added tooltip to switch, disable buttons instead of hide

* master merge and tests
2019-08-19 23:35:44 +02:00
Shavonn Brown
e3e2cd82d7 Rewrite user profile edit to react (#17917)
* rewrite user profile edit to react (#17525)

* disableLogin change, still need to fix tooltip

* left out disable form for other auth

* PR changes - wrapper to render, userId instead of bool, optional user in state, change provider child param order

* moved directive to angular_wrappers

* catch api error

* finally

* move user arg back to end- optional

* optional type sig
2019-08-19 13:40:14 -04:00
Oleg Gaidarenko
50058de6aa Docs: remove codecov badge (#18623)
For a long time we haven't been using codecov, remove it so it wouldn't confuse
the readers
2019-08-19 15:03:49 +02:00
Hugo Häggmark
d7ccf98b1b Prometheus: Prevents panel editor crash when switching to Prometheus datasource (#18616)
* Fix: Fixes panel editor crash when switching to Promehteus
Fixes: #18600

* Refactor: Adds tests
2019-08-19 14:04:16 +02:00
Tobias Skarhed
90df8c4bb0 Chore: Rename Popper to Popover (#18543)
* Rename PopperContent to TooltipContent

* Move exports from PopperController

* Change ToolipContent to PopoverContent and PopoverController

* Rename Popper to Popover

* Add forgotten files

* Update snapshot

* Remove generic
2019-08-19 11:40:47 +02:00
Ryan McKinley
21948e80e0 SingleStat: add a gauge migration call to action button in the editor (#18604) 2019-08-18 15:01:07 -07:00
Oleg Gaidarenko
d1860df8d8 Build: update revive dependency (#18585)
I'm interested in this fix specifically - mgechev/revive@03c3312c2c
2019-08-19 00:53:26 +03:00
Oleg Gaidarenko
02af966964 LDAP: multildap + ldap integration (#18588)
It seems `ldap` module introduced new error type of which
multildap module didn't know about.

This broke the multildap login logic

Fixes #18491
Ref #18587
2019-08-19 00:52:32 +03:00
Dan Cech
302a1f06bc Docker: switch docker image to alpine base with phantomjs support (#18468)
* switch docker image to alpine base

* Docker: switch packaging image to alpine

* use alpine image for build containers

* switch base images in build script

* only try to set up phantomjs on x86_64, reduce number of layers

* phantomjs binary is bundled with grafana
2019-08-16 17:46:35 +02:00
kay delaney
fb0cec5591 Backend: Adds support for HTTP/2 (#18358)
* Backend: Adds support for HTTP/2

* Adds mozilla recommended ciphers

* Updates sample.ini and config documentation
2019-08-16 16:06:54 +01:00
kay delaney
bf82e6cded Explore: Fixes error when switching from prometheus to loki data sources (#18599)
Closes #18594
Closes #18596
2019-08-16 15:10:22 +01:00
Šimon Podlipský
f3d1543e9f TimePicker: Set time to to 23:59:59 when setting To time using calendar (#18595) 2019-08-16 13:22:32 +02:00
ElstJonas
325fd29ea0 Prometheus: Return labels in query results (#18535)
* Added prometheus metric labels to data returned for normal time series queries

* Fixed result transformer tests for new return layout with prometheus labels

* Fixed prettier formatting
2019-08-16 11:48:04 +02:00
Torkel Ödegaard
693d0a78af Docs: Update changelog and docs for annotation region change (#18593) 2019-08-16 11:45:30 +02:00
Ryan McKinley
5a41e8b119 Refactor: move KeyValue and deprecation warning to @grafana/data (#18582)
* move KeyValue and deprecation warning

* move KeyValue and deprecation warning

* rename displayProcessor file
2019-08-16 11:10:32 +02:00
Ryan McKinley
6335509a23 Annotations: use a single row to represent a region (#17673)
* SQLite migrations

* cleanup

* migrate end times

* switch to update with a query

* real migration

* anno migrations

* remove old docs

* set isRegion from time changes

* use <> for is not

* add comment and fix index decleration

* single validation place

* add test

* fix test

* add upgrading docs

* use AnnotationEvent

* fix import

* remove regionId from typescript
2019-08-16 10:49:30 +02:00
Torkel Ödegaard
286b52f5e7 Docs: Update upgrading guide (#18547)
* Docs: Update upgrading docs

* Docs: updated spelling
2019-08-16 10:29:22 +02:00
Hugo Häggmark
c38674aef2 Docs: Adds tests requirement to bugs checklist (#18576)
* Docs: Adds tests requirement to bugs checklist

* Docs: Adds test for bugs as a requirment

Co-Authored-By: gotjosh <josue@grafana.com>
2019-08-16 07:18:12 +02:00
Ryan McKinley
e59bae55d9 DataFrame: convert from row based to a columnar value format (#18391) 2019-08-15 09:18:51 -07:00
Dominik Prokop
350b9a9494 Packages: Temporarily skip canary releases if packages build fail (#18577) 2019-08-15 08:02:45 -07:00
Marcus Efraimsson
08973a8875 Update latest.json to latest stable version (#18575) 2019-08-15 13:12:36 +02:00
Marcus Efraimsson
2cab0acf76 Docs: Update changelog for v6.3.3 (#18569) 2019-08-15 11:17:41 +02:00
Torkel Ödegaard
8e92eecc19 Graph: Fixed issue clicking on series line icon (#18563) 2019-08-15 10:21:13 +02:00
Dominik Prokop
15711ba2d1 grafana/toolkit: Unpublish previous "next" version when releasing a new one (#18552)
* Unpublish previous canary when releasing a new one

* Update scripts/circle-release-next-packages.sh

* Shellcheck fix
2019-08-15 09:02:17 +02:00
Ryan McKinley
e27731bc7a Toolkit: write PR report to a folder with the circle build number (#18560) 2019-08-14 14:06:43 -07:00
Šimon Podlipský
11f90499a9 CI: Fail build if yarn.lock is not up to date (#18555)
* Fail build if yarn.lock is not up to date

* Update yarn.lock
2019-08-14 17:47:34 +02:00
kay delaney
7f8f3fa458 Chore: Updates react-dependant packages to address react warnings (#18549)
Updates packages that depend on react in order to address warnings produced
by react regarding the use of `componentWillReceiveProps`
2019-08-14 14:20:35 +01:00
fxmiii
4cf804c8b6 Prometheus: Fix regression of rerunning query on legend/interval change (#18147)
* Rerun query on input changes

Added "this.onRunQuery" for update of the input fields so that the panel updates when changed

* typo in comment

changed "fullu" to "fully"

* modified to onBlur for legend, interval

legend and interval (min step) now call for query re-run when they go 'onBlur' instead of 'onChange'

* PromQueryEditor: Updated snapshot
2019-08-14 15:15:42 +02:00
kay delaney
d66601a5f5 Explore/Prometheus: More consistently allows for multi-line queries (#18362)
* Explore/Prometheus: More consistently allows for multi-line queries
Allows a user to hit shift+enter to create a new line in the query field, even
when the autocomplete suggestions are displayed.
Also fixes an issue where a new line was inserted when selecting a suggestion
Closes #18341

* Fixes behavior where query wasn't running on pressing Enter
Also adds test to verify this behavior
2019-08-14 13:37:04 +01:00
Tobias Skarhed
3392471bb2 Login: Fixes undefined redirect (#18545) 2019-08-14 12:41:09 +01:00
Ryan McKinley
63f47fd8e2 Plugins: expose react-redux, redux (#18501) 2019-08-14 00:20:23 -07:00
Ryan McKinley
0ba07720df TimeSeries: assume values are all numbers (#18540)
* assume number for TimeSeries types

* use const
2019-08-14 08:07:21 +02:00
Tobias Skarhed
91a911b64e Login: Angular to React (#18116)
* Migrating login services

* Add user signup

* Remove lodash

* Remove media query and extarct LoginServices

* Add React LoginCtrl

* Handle location with Redux and start form validation

* Fix proposal

* Add basic validation

* Fix validation

* Remove state from controller

* Extract login forms

* Fix things up

* Add change password and LoginPage

* Add React page and route to it

* Make redux connection work

* Add validation for password change

* Change pws request

* Fix feedback

* Fix feedback

* LoginPage to FC

* Move onSkip to a method

* Experimenting with animations

* Make animations work

* Add input focus

* Fix focus problem and clean animation

* Working change password request

* Add routing with window.location instead of Redux

* Fix a bit of feedback

* Move config to LoginCtrl

* Make buttons same size

* Change way of validating

* Update changePassword and remove angular controller

* Remove some console.logs

* Split onChange

* Remove className

* Fix animation, onChange and remove config.loginError code

* Add loginError appEvent

* Make flex and add previosuly removed media query
2019-08-13 15:46:40 +02:00
Tobias Skarhed
93ecf63e70 InfoTooltip: Info icon with tooltip (#18478) 2019-08-13 13:41:49 +02:00
Dominik Prokop
993e5636d6 Annotations: Fix failing annotation query when time series query is cancelled (#18532) 2019-08-13 13:03:14 +02:00
Kyle Brandt
f689b60426 remotecache: support SSL with redis (#18511)
* update go-redis lib from v2 -> v5
* add ssl option to the redis connection string
fixes #18498
2019-08-13 06:51:13 -04:00
Šimon Podlipský
494ac90c69 QueryData: Handle that response data must be array (#18504)
Fixes #18499
2019-08-13 11:25:51 +02:00
Ryan McKinley
3ccc10f82c React: Rename deprecated UNSAFE_componentWillReceiveProps (#18526) 2019-08-13 10:08:33 +02:00
Hugo Häggmark
4b3440325e Explore: Replaces TimeSeries with GraphSeriesXY (#18475)
* Wip: Compiles and runs

* WIP: Logs Graph partially working

* Refactor: Adds GraphSeriesToggler

* Refactor: Adds tickDecimals to YAxis

* Refactor: Adds TimeZone and PlotSelection to Graph

* Refactor: Makes the graphResult work in Explore

* Refactor: Adds ExploreGraphPanel that is used by Logs and Explore

* Fix: Fixes strange behaviour with ExploreMode not beeing changed

* Fix: Adds onSelectionChanged to GraphWithLegend

* Refactor: Cleans up unused comments

* ExploreGraph: Disable colorpicker
2019-08-13 07:32:43 +02:00
Marcus Efraimsson
8fd153edb7 API: Restrict anonymous user information access (#18422)
Existing /api/alert-notifications now requires at least editor access.
Existing /api/alert-notifiers now requires at least editor access.
New /api/alert-notifications/lookup returns less information than
/api/alert-notifications and can be access by any authenticated user.
Existing /api/org/users now requires org admin role.
New /api/org/users/lookup returns less information than
/api/org/users and can be access by users that are org admins,
admin in any folder or admin of any team.
UserPicker component now uses /api/org/users/lookup instead
of /api/org/users.

Fixes #17318
2019-08-12 20:03:48 +02:00
Dominik Prokop
ab17015794 Fix: failing build after React bump (#18514)
* Bump react types and fix yarn.lock
* Fix typecheck
2019-08-12 17:31:58 +02:00
Tobias Skarhed
1db9fff056 strictNullChecks: First batch (#18390)
* First batch of strictNullChecks

* Remove undefined

* Check an alternative solution

* Fix strict nullChecks

* Low hanging strictNullChecks

* Fixing strict nulls issues and more

* Minor change

* fixed unit test

* Fix feedback

* Update public/vendor/ansicolor/ansicolor.ts

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>

* Update public/vendor/ansicolor/ansicolor.ts

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>

* Update public/vendor/ansicolor/ansicolor.ts

Co-Authored-By: Dominik Prokop <dominik.prokop@grafana.com>

* Fix build errors
2019-08-12 16:11:06 +02:00
Dominik Prokop
0b828cfa44 Chore: bump React to 16.9.0 (#18502)
* Chore: bump react to 16.9.0

* Bump hooks testing lib
2019-08-12 14:26:11 +02:00
Marcus Efraimsson
5459e7c9af Docs: Adds a new security section (#18508)
Co-Authored-By: Leonard Gram <leo@xlson.com>
2019-08-12 13:23:20 +02:00
Andrej Ocenas
b3a75cee68 Docs: Update issue triage doc with external PRs section (#18464)
Triaging external PRs to the extent of making sure they have assigned reviewer.
2019-08-12 12:00:05 +02:00
Šimon Podlipský
8b0bbb2c4f Typo: fix typo in processDataFrame.ts comment (#18492) 2019-08-11 21:43:54 -07:00
David
b3d2cc3e2f Explore: Fix loading error for empty queries (#18488)
* Explore: Fix loading error for empty queries

* Explore: Render tests for QueryField
2019-08-09 17:08:59 +02:00
Hugo Häggmark
445f1dabcc Fix: Fixes stripping of $d in Explore urls (#18480)
Fixes: #18455
2019-08-09 14:55:23 +02:00
liyuanqiu
72b0e95708 grafana/ui: fix toTimeTicks error (#18448) 2019-08-09 14:30:53 +02:00
Hugo Häggmark
27ea2bef2c Docs: Adds details to Pull Request Checklist (#18471)
* Docs: Adds details to Pull Request Checklist

* Docs: Changes text according to PR review comments

* Docs: Adds State Management guidlines in FrontEnd style guidelines

* Update CONTRIBUTING.md

Co-Authored-By: gotjosh <josue@grafana.com>

* Update CONTRIBUTING.md

Co-Authored-By: gotjosh <josue@grafana.com>

* Docs: Some minor text changes for better english

Co-Authored-By: gotjosh <josue@grafana.com>

* Docs: Some minor text changes for better english

Co-Authored-By: gotjosh <josue@grafana.com>

* Docs: Some minor text changes for better english

Co-Authored-By: gotjosh <josue@grafana.com>

* Docs: Some minor text changes for better english

Co-Authored-By: gotjosh <josue@grafana.com>

* Docs: Some minor text changes for better english

Co-Authored-By: gotjosh <josue@grafana.com>
2019-08-09 13:15:52 +02:00
Dominik Prokop
81c42fc912 DataLinks: respect timezone when displaying datapoint's timestamp in graph context menu (#18461) 2019-08-09 11:03:21 +02:00
Tobias Skarhed
d54851f8e2 Chore: strictNullChecks, ColoringEditor and time_region_manager (#18442)
* Make swicth booleans non-optional
2019-08-09 10:41:00 +02:00
Sofia Papagiannaki
4e29357d15 Backend: Do not set SameSite cookie attribute if cookie_samesite is none (#18462)
* Do not set SameSite login_error cookie attribute if cookie_samesite is none

* Do not set SameSite grafana_session cookie attribute if cookie_samesite is none

* Update middleware tests
2019-08-09 09:10:08 +03:00
Dominik Prokop
b6ec06eeb4 DataLinks: Apply scoped variables correctly (#18454) 2019-08-08 16:36:37 +02:00
Dominik Prokop
20d0c07359 DataLinks: Use datapoint timestamp correctly when interpolating variables (#18459) 2019-08-08 16:30:01 +02:00
Sofia Papagiannaki
7520166f17 API: Minor fix for team creation endpoint when using API key (#18252)
* Fix CreateTeam api endpoint

No team member should be created for requests
authenticated by API tokens.

* Update middleware test

Assert that `isAnonymous` is set for `SignedInUser`
authenticated via API key.

* Add test for team creation

Assert that no team member is created if the signed in user
is anomymous.

* Revert "Fix CreateTeam api endpoint"

This reverts commit 9fcc4e67f5.

* Revert "Update middleware test"

This reverts commit 75f767e58d.

* Fix CreateTeam api endpoint

No team member should be created for requests
authenticated by API tokens.

* Update team test

* Change error to warning and update tests
2019-08-08 11:27:47 +03:00
Jess
f20cd218c0 Login: Adjust space between skip and its icon (#18407)
Fixes #18383
2019-08-08 10:20:54 +02:00
gotjosh
6c699c0e50 Docs: Update Auth Proxy documentation (#18444)
Turns out, that behaviour was a bug we introduced as part of the LDAP
sync. It was squashed as part of #18298.
2019-08-08 07:55:20 +01:00
Dominik Prokop
6b293cd4e4 Docs: Minor Readme update (#18438) 2019-08-08 08:51:46 +02:00
Alexander Zobnin
b47f0ff07f OAuth: return GitLab groups as a part of user info (enable team sync) (#18388)
* GitLab OAuth: GetGroups refactor

* GitLab OAuth: fetch groups into UserInfo

* GitLab OAuth: minor refactor

* GitLab OAuth: team sync docs
2019-08-07 17:05:35 +03:00
gotjosh
b424e12a5a Fix: Avoid glob of single-value array variables (#18420)
* Fix: Avoid glob of single-value array variables

Based on our current implementation of templates, when multi-select
variables are part of a dashboard query the default/fallback formatting option is `glob`.

Some data sources do not support glob (e.g. metrics.{a}.* instead of
metrics.a.*) for single variable queries. This behaviour breaks dashboards.

This commit introduces an alternative formatting option where globing is avoided if it's there is only one value as part of the query variable.

This means, queries previously formatted as `query=metrics.{a}.*.*`, are
now formatted as `query=metrics.a.*.*`. However, queries formatted as
`query=metrics.{a,b}.*.*` continue to be as is.
2019-08-07 14:50:06 +01:00
Dominik Prokop
c38804216c DataLinks: Enable multiple data links per panel (#18434)
In response to #18282

DataLinksEditor does not limit amount of links by default now (it was 1 link before, unless maxLinks prop was specified). Also, links that do not have label specified, are not rendered anymore.
2019-08-07 14:13:19 +02:00
Tobias Skarhed
151b40ee2f Markdown: Handle undefined/null strings (#18433) 2019-08-07 13:25:09 +02:00
Torkel Ödegaard
e8adbfea9f Update CHANGELOG.md 2019-08-07 12:55:47 +02:00
Torkel Ödegaard
8e2a07cac2 Update CHANGELOG.md 2019-08-07 12:55:00 +02:00
Torkel Ödegaard
fc2f399df3 Docs: Update changelog and latest with 6.3.1 and 6.3.2 releases (#18437) 2019-08-07 12:51:32 +02:00
Hugo Häggmark
054f908f2d Explore: Fixes Legend overflow in splitted view (#18396)
* Fix: Fixes Legend overflow in Explore splitted view

* Chore: Removes overflow-x because of accessibility POV and uses pre-wrap instead
2019-08-07 11:42:57 +02:00
Leonard Gram
3481caf4fd Docs: changelog for docker 6.3 (#18429) 2019-08-07 11:12:57 +02:00
Torkel Ödegaard
c55578d303 Panels: Fixed crashing dashboards with panel links (#18430)
* ReactPanels: Fixed panel header tooltip rendering crash

* Added unit test

* Improved test
2019-08-07 10:45:32 +02:00
Ryan McKinley
66faedfb9d DataFrame: remove dateFormat (#18424) 2019-08-07 10:20:25 +02:00
Kyle Brandt
e1b2d61ceb backend: null.Float NaN -> null for json marshal (#18284) 2019-08-06 12:28:48 -04:00
Elykov Alexandr
54f3e873a4 Frontend: adds folder name in home dash choose menu (#18346)
* Frontend:adds folder name in choose home dash menu(#18293)

* Frontend:adds folder name in choose home dash menu(#18293)
2019-08-06 18:22:45 +02:00
Torkel Ödegaard
832b67db38 TestData: Query variable support (nested + glob queries) (#18413)
* TestData: added support for nested data source variable queries, and test dashboard

* Added drilldown dashboards

* Fixed typescript issue
2019-08-06 18:17:12 +02:00
Sofia Papagiannaki
63c3743de6 Update latest.json (#18417) 2019-08-06 17:12:45 +02:00
Marcus Efraimsson
089d258436 docs: release 6.3 (#18416) 2019-08-06 16:44:33 +02:00
Sofia Papagiannaki
91c91c9668 Changelog 6.3.0 (#18414) 2019-08-06 16:30:37 +02:00
Tobias Skarhed
1f9bce7f9f PanelLinks: Fix render issue when there is no panel description (#18408)
Make empty string if there is no panel description
2019-08-06 14:30:09 +02:00
Tobias Skarhed
760aec7d3b e2e tests: Make pageObjects mandatory (#18406)
- Lower strictNullChecks: true errors
2019-08-06 14:29:26 +02:00
Andrew Erickson
1c7bf35aa7 Documentation: document the "Mixed" Data Source (#18398) 2019-08-06 11:45:08 +02:00
Hugo Häggmark
b05afd7e4e Explore: Moves GraphSeriesXY and DisplayValue to grafana/data (#18400)
* Chore: Move DisplayValue to grafana/data

* Chore: Move GraphSeriesXY to grafana/data
2019-08-06 10:49:54 +02:00
Hugo Häggmark
ead2d6e88f Explore: Fixes incorrect handling of utc in timeEpic (#18386)
* Fix: Fixes incorrect handling of utc in timeEpic

* Chore: Renames dateTimeFromTimeZone to dateTimeForTimeZone
2019-08-06 10:43:53 +02:00
The Rock Guy
cbfdac43d8 Postgres: Add support for scram sha 256 authentication (#18397)
Allow datasource connection to postgres with password "scram-sha-256" 
authentification.

Fixes #14662
2019-08-06 10:01:28 +02:00
Alexandre de Verteuil
d5e7ef2317 Update behind_proxy.md with linkback to nginx.com (#18150) 2019-08-06 09:47:08 +02:00
Sofia Papagiannaki
269c1fb107 Do not set SameSite for OAuth cookie if cookie_samesite is None (#18392) 2019-08-06 09:50:20 +03:00
Torkel Ödegaard
541981c341 Gauge/BarGauge: Rewrite of how migrations are applied (#18375) 2019-08-06 08:26:11 +02:00
Elykov Alexandr
2514209083 MSSQL: Change connectionstring to URL format to fix using passwords with semicolon (#18384)
Fixes #17665
2019-08-05 18:40:33 +02:00
Alexander Berger
4e1e220962 CloudWatch: Fix alerting for queries with Id (using GetMetricData) (#17899)
This commit addresses half of #13749 by making sure GetMetricData 
works for alerting. Math Expressions (compound metrics) will still not 
work for alerting, this would require a bigger refactoring of Grafana's 
alerting service. However, with this commit at least alerting for basic 
metrics with non empty query Id will work.

Fixes half of #13749
2019-08-05 17:28:09 +02:00
Hugo Häggmark
c82a26e2b2 Chore: Update strictNullChecks error limit (#18387) 2019-08-05 15:06:51 +02:00
Hugo Häggmark
c8b195147e Chore: Fixes some strict errors (#18381) 2019-08-05 12:07:35 +02:00
Torkel Ödegaard
9a1975714d Graph: Improved graph tick decimals logic arround significant digits (#18370) 2019-08-05 10:40:42 +02:00
Torkel Ödegaard
35954d7b6f CI: Added metric to track strict null erros (#18379)
* CI: Added metric to track strict null errros

* Update scripts/ci-frontend-metrics.sh

Co-Authored-By: Hugo Häggmark <hugo.haggmark@grafana.com>
2019-08-05 09:19:31 +02:00
Oleg Gaidarenko
d88fdc86fc Auth: Do not search for the user twice (#18366)
* Auth: Do not search for the user twice

Previously `initContextWithBasicAuth` did not use `LoginUserQuery`, doing
`GetUserByLoginQuery` only i.e. looking user in DB only, things changed when
this function started to check LDAP provider via `LoginUserQuery` (#6940),
however, this request was placed after `GetUserByLoginQuery`, so we first
looking in DB then in the LDAP - if LDAP user hasn't logged in we will
not find it in DB, so `LoginUserQuery` will never be reached.

`LoginUserQuery` request already performs `GetUserByLoginQuery`
request in correct sequence. So we can just remove redundant request.

* Correct sequence execution during authentification &
  introduce tests for it

* Move basic auth tests to separate test file, since main test file already
  pretty large

* Introduce `testing.go` for the middleware module

* Remove redundant test helper function

* Make handler names more explicit

Ref 5777f65d05
Fixes #18329

* Auth: address review comment
2019-08-03 21:50:05 +02:00
Ryan McKinley
d8f86834d9 grafana/toolkit: improve CI task (#18189) 2019-08-03 12:34:02 -07:00
Dominic Miglar
32d6740b8f Alerting: Also include configured AlertRuleTags in Webhooks (#18233)
* added alert rule tags in webhook notifications

* fix: don't include whole list of Tag objects but only key/value pairs in Webhook JSON

* marked webhook alerts to support alert rule tags
2019-08-03 17:00:40 +02:00
David
e8790c32ca Loki: Apply start parameter to speed up test query (#18266) 2019-08-03 16:58:08 +02:00
Leonard Gram
48d436ea6d Docs: Changelog 6.3.0 beta4 (#18359)
* Changelog: v6.3.0-beta3

* Changelog: 6.3.0-beta4
2019-08-03 16:51:55 +02:00
kay delaney
6a870513a8 Select: Fixes issue where ToggleButtonGroup overlapped DataSourcePicker in Firefox (#18361)
* UI: Fixes issue where ToggleButtonGroup overlapped DataSourcePicker in Firefox
Closes #17692

* Select: added more padding to right to make space for indicator/caret
2019-08-03 16:50:01 +02:00
Tobias Skarhed
b62ab25c41 SignIn: Update redirect on reroute (#18360)
* Connect SignIn with redux and get url

* Update test snapshot
2019-08-03 16:21:17 +02:00
Ryan McKinley
09e7938499 Gauge/BarGauge: Support decimals for min/max toFloatOrUndefined (#18368) 2019-08-03 16:10:41 +02:00
Torkel Ödegaard
202c136238 FieldDisplay: Return field defaults when there are no data (#18357) 2019-08-02 14:50:55 -07:00
Oleg Gaidarenko
7e89a93b5f Auth: introduce more tests for middleware module (#18365)
* Add tests for errors basic auth cases and moves tests to separate test-case.
Also names test cases consistently

* Add additional test helper

Ref 82661b9f69
2019-08-02 20:56:58 +03:00
Leonard Gram
dc52b7df55 Docs: updated latest.json (#18363) 2019-08-02 18:50:28 +02:00
Oleg Gaidarenko
fb273cb874 LDAP: nitpicks (#18309)
* LDAP: nitpicks

* Add more tests

* Correct and clarify comment for Login() method

* Rename methods (hail consistency!)

* Uppercases first letter of the logs everywhere

* Moves method definitions around to more appropriate places

Fixes #18295
2019-08-02 19:24:44 +03:00
Oleg Gaidarenko
3063ef6c2a Docs: mention unsupported versions of PostgreSQL (#18307)
Ref #17771
Fixes #18106
2019-08-02 14:27:32 +02:00
Torkel Ödegaard
f3fb178efa Navigation: Fixed double settings menus (#18349) 2019-08-02 14:02:59 +02:00
Oleg Gaidarenko
89a4f30eab Build: allow bash to expand the wildcard (#18354)
If wildcards are in the quotes they not going to be expanded
2019-08-02 13:22:50 +02:00
Torkel Ödegaard
142c7eb0e6 Gauges: Fixes error when mappings array was undefined (#18353) 2019-08-02 13:20:38 +02:00
kay delaney
bc291f94ef Frontend: Fixes progress tracker close button to use $link-hover-color (#18352) 2019-08-02 11:53:37 +01:00
kay delaney
50a043f583 Frontend: Fixes hard-coded font-weight properties to use variables (#18350) 2019-08-02 11:11:08 +01:00
Torkel Ödegaard
f68b8b73f0 LDAP: Align ldap example with the devenv testdata (#18343) 2019-08-02 12:00:13 +02:00
Oleg Gaidarenko
82661b9f69 Auth: consistently return same basic auth errors (#18310)
* Auth: consistently return same basic auth errors

* Put repeated errors in consts and return only those consts as error strings

* Add tests for errors basic auth cases and moves tests to separate test-case.
  Also names test cases consistently

* Add more error logs and makes their messages consistent

* A bit of code style

* Add additional test helper

* Auth: do not expose even incorrect password

* Auth: address review comments

Use `Debug` for the cases when it's an user error
2019-08-02 11:16:31 +02:00
Leonard Gram
c675449aa2 cli: fix for recognizing when in dev mode. (#18334) 2019-08-02 09:38:41 +02:00
kay delaney
9b5890cc62 QueryEditors: Fixes flakey text edit mode toggle (#18335)
Closes #18037
2019-08-02 08:42:39 +02:00
Ryan McKinley
5f4b5dfecd Refactor: use data rather than series in stream callback(#18126) 2019-08-01 23:16:29 -07:00
Tobias Skarhed
85da4a169d Keybindings: Disable on login url (#18331) 2019-08-02 08:15:36 +02:00
Sofia Papagiannaki
c9f7e3059f Fix failing end to end tests job for release (#18323)
Create and push the expected tag to grafana-dev repository
and use this instead for running the end to end tests
for the release.
2019-08-01 15:52:00 +02:00
Sofia Papagiannaki
69b7b8bb46 Fix OAuth error due to SameSite cookie policy (#18332)
The `oauth_state` cookie used to be created with the SameSite value set
according to the `cookie_samesite` configuration.
However, due to a Safari bug SameSite=None or SameSite=invalid are treated
as Strict which results in "missing saved state" OAuth login failures
because the cookie is not sent with the redirect requests to the OAuth
provider.
This commit always creates the `oauth_state` cookie with SameSite=Lax
to compensate for this.
2019-08-01 15:47:04 +02:00
Tobias Skarhed
83da3660da Chore: noImplictAny no errors left (#18303)
* Add types and rewrite datasourceChanged to async/await
2019-08-01 14:38:34 +02:00
kay delaney
bcf28cb7a2 [Shortcuts] Fixes shortcuts for moving time range backwards and forwards (#18305)
Closes #18159
2019-08-01 10:17:27 +02:00
Tobias Skarhed
21f702f7c9 TablePanel: Remove scroll option on TablePanel (#18318) 2019-07-31 18:56:06 +02:00
Eric Leijonmarck
12f5d16c76 Keyboard Shortcuts: Sign in to enable them (#18271) 2019-07-31 15:52:46 +02:00
gotjosh
69589c28d6 GitHub Templates: Pull Request Template update (#18300)
* Imperative mood

The English language suggests that when giving out instructions or considerations is best to use imperative mood as the writing style. Done as part of this commit:

- some worth smithing to match this style
- changed the format to match the fact that this is commonly read as part of a text box when opening up your PRs
- and extended a few descriptions to make it more friendly for newcomers
2019-07-31 11:29:57 +01:00
gotjosh
ed8aeb2999 Auth Proxy: Include additional headers as part of the cache key (#18298)
* Auth Proxy: Include additional headers as part of the cache key

Auth proxy has support to send additional user attributes as part of the
authentication flow. These attributes (e.g. Groups) need to be monitored
as part of the process in case of change.

This commit changes the way we compute the cache key to include all of the
attributes sent as part of the authentication request. That way, if we
change any user attributes we'll upsert the user information.
2019-07-31 11:23:00 +01:00
Ryan McKinley
294eabda5b grafana/toolkit: support windows paths (#18306) 2019-07-30 10:48:21 -07:00
Tobias Skarhed
7891233812 Chore: noImplicitAny Sub 500 errors (#18287) 2019-07-30 15:49:32 +02:00
Ryan McKinley
7949329636 Plugins: return a promise for loadPluginCss (#18273) 2019-07-29 21:14:34 -07:00
Ryan McKinley
4ce814ba94 Utils: avoid calling console.warn() too often for deprecation warnings (#18269) 2019-07-29 21:13:31 -07:00
Andrej Ocenas
8c49d27705 CLI: Allow installing custom binary plugins (#17551)
Make sure all data is sent to API to be able to select correct archive version.
2019-07-29 10:44:58 +02:00
Adam James West
64828e017c Docs: Update link to example app (#18253)
The live website points to a github URL that no longer exists.
2019-07-28 07:54:57 +02:00
Ryan McKinley
a52162da37 GettingStarted: Skip Query for getting started (#18268) 2019-07-28 07:54:38 +02:00
Leonard Gram
e22269f7d3 v6.3.0-beta2 is latest testing (#18283) 2019-07-26 18:45:17 +02:00
Leonard Gram
1bd1945eb5 Release: Changelog update with v6.3.0-beta2 (#18281) 2019-07-26 17:46:11 +02:00
kay delaney
9d87923986 Chore: Upgrades typescript to version 3.5 (#18263)
* Chore: Upgrade typescript to version 3.5
2019-07-26 15:14:06 +01:00
Leonard Gram
14fb23f5a2 docs: team sync (#18239)
* docs: team sync

* docs: update team sync with regards to auth proxy

* Add a footnote on server-side session cache

* Docs: minor edits.
2019-07-26 11:22:27 +02:00
gotjosh
2f240a11ce SAML: Only show SAML login button on Enterprise version (#18270)
SAML Authentication is an Enterprise only feature. This change enables
the SAML login button to only be shown on enterprise.
2019-07-26 11:05:02 +02:00
Andrej Ocenas
7f1214ac46 Permissions: Show plugins in nav for non admin users but hide plugin configuration (#18234)
Allow non admins to see plugins list but only with readme. Any config tabs are hidden from the plugin page. Also plugin panel does not show action buttons (like Enable) for non admins.
2019-07-25 16:54:26 +02:00
Alexandre de Verteuil
3ba2388af7 CI: Change target branch in CI task trigger-docs-update (#18255)
This changes trigger-docs-update job so that the docs build goes to production.

There is no additional risk to push a broken site in production. The docs build process is to publish to staging, then wait for a manual approval before publishing to prod.
2019-07-25 15:40:27 +02:00
Ryan McKinley
6fa617efdc Plugins: Include build number and PR in metadata (#18260) 2019-07-25 15:39:18 +02:00
Sofia Papagiannaki
13c41b781a Run End-to-End tests for release builds (#18211) 2019-07-25 11:32:28 +02:00
Torkel Ödegaard
43543d5682 DataLinks: Fixed interpolation of series name, fixes #18250 (#18251) 2019-07-24 20:40:41 +02:00
kay delaney
c01bbf2058 Timerange: Fixes a bug where custom time ranges didn't respect UTC (#18248)
Closes #18170
Closes #18178
2019-07-24 15:09:52 +02:00
David
459769af70 Loki: Remove prefetching of default label values (#18213) 2019-07-24 14:58:32 +02:00
Oleg Gaidarenko
f9a6414b92 Build: fix use of env vars in parentheses execs (#18249)
* Build: fix use of env vars in parentheses execs

* Build: disable shellcheck rule SC2086 for a file

Follow up for 4b16cd6cc8
2019-07-24 15:54:48 +03:00
Torkel Ödegaard
996567ac42 TimePicker: Increase max height of quick range dropdown (#18247) 2019-07-24 14:05:01 +02:00
Torkel Ödegaard
3145a1dd29 TimePicker: Fixed css issue casued by CSS Optimizer (#18244)
Fixes #18158
2019-07-24 12:44:24 +02:00
kay delaney
6144c0f51d Revert "Timerange: Fixes a bug where custom time ranges didn't respect UTC (#18217)" (#18246)
This reverts commit 0752a09f92.
2019-07-24 12:29:12 +02:00
kay delaney
0752a09f92 Timerange: Fixes a bug where custom time ranges didn't respect UTC (#18217)
* Timerange: Fixes a bug where custom timeranges didn't respect UTC
Closes #18170
Closes #18178
2019-07-24 11:00:36 +01:00
Oleg Gaidarenko
1e5fc76601 LDAP: improve POSIX support (#18235)
* LDAP: improve POSIX support

* Correctly abtain DN attributes result

* Allow more flexibility with comparison mapping between POSIX group & user

* Add devenv for POSIX LDAP server

* Correct the docs

Fixes #18140
2019-07-24 12:49:18 +03:00
Dima Kurguzov
a4b0ccc138 Instrumentation: Add failed notifications metric (#18089) 2019-07-24 11:43:24 +02:00
Ryan McKinley
9ccf32bef0 Docs: update links to sample plugins (#18240)
* update links to sample plugins

* lowercase Panel
2019-07-24 10:40:52 +02:00
Torkel Ödegaard
4161a6c62a Build: Removed webpack from default grunt task, fixes #18232 (#18242) 2019-07-24 10:40:36 +02:00
Dominik Prokop
3f3fb9bd5c Packages: update package.json files (#18173) 2019-07-23 17:17:41 -07:00
Hassan Farid
711f62c813 Replaced ubuntu:latest with ubuntu:18.04; specific image version to make grafana build images consistent (#18224) 2019-07-23 18:33:37 +02:00
Oleg Gaidarenko
ba46cf40e4 Build: correct verify script (#18236)
Follow-up for 4b16cd6cc8
2019-07-23 16:47:50 +03:00
Markus Blaschke
31547597d3 remote_cache: Fix redis connstr parsing (#18204)
* Fix redis connstr parsing

* Don’t log the password
2019-07-23 16:45:04 +03:00
Oleg Gaidarenko
d16fd58bdb Auth: do not expose disabled user disabled status (#18229)
Fixes #17947
2019-07-23 13:12:55 +03:00
Oleg Gaidarenko
4b16cd6cc8 Build: Introduce shellcheck (#18081)
* Build: introduce shellcheck

Fixes #16198
2019-07-23 13:12:33 +03:00
gotjosh
87a794fe0a Docs: Update documentation with new SAML features (#18163)
* Update defaults.ini and sample.ini with the SAML assertion mapping
fields

* Document Grafana's ability to map ACS attributes while a Grafana user is created
2019-07-23 09:20:07 +01:00
Ryan McKinley
b5ad2ebe9b Typo: fix threshodsWithoutKey (#18228) 2019-07-22 22:19:03 -07:00
Kyle Brandt
ea0cee4c35 alerting: more specific error when missing threshold (#18221)
fixes #18184
2019-07-22 13:23:33 -04:00
David
9cd069f2c5 Graph: fix time label description for datalink suggestions (#18214) 2019-07-22 13:35:12 +02:00
David
7139544c76 Explore: Reduce default time range to last hour (#18212) 2019-07-22 13:34:10 +02:00
Kyle Brandt
172464e91e alerting: return err when SetAlertState fails to save to sql (#18216)
fix duplicate alert states when the alert fails to save to the database.
fixes #18176
2019-07-22 07:23:27 -04:00
Leonard Gram
2014549fa5 PhantomJS: Fixes rendering on Debian Buster (#18162)
Closes #17588
2019-07-20 13:03:10 +02:00
Gautham Pai
6e5898ac79 Docs: sudo is required on the apt-key add not on wget (#18180)
Running the command as given in the current doc throws the error:

```
sudo wget -q -O - https://packages.grafana.com/gpg.key | apt-key add -
ERROR: This command can only be used by root.
```

The proposed change fixes this issue.
2019-07-20 12:57:18 +02:00
Oleg Gaidarenko
eac1459832 Build: watch and dev mode webpack improvements (#18153)
* Ignore `node_modules` in watch mode

* Simplify development setup
2019-07-20 07:46:41 +03:00
Raphael Couto
bc0da1bbfc Plugin: AzureMonitor - Reapply MetricNamespace support (#17282)
* Reapply MetricNamespace support

* Fixing tests

* refactor: move metricnamespace param to backend

* refactor: remove unused function

* azuremonitor: migration for new metric namespace field

* azuremonitor: add template query for metric namespace with a sub

* docs: template queries for azure monitor

Adds new lines for the metricnamespace template function and fixes
some messed up lines
2019-07-20 01:43:52 +02:00
Ryan McKinley
9f415e84b4 Refactor: move end-to-end test infrastructure to @grafana/toolkit (#18012) 2019-07-19 08:13:12 -07:00
Alexander Zobnin
ccf11fb7a2 SAML: add auth provider label (#18197) 2019-07-19 17:13:29 +03:00
Ryan McKinley
06b43f6d4b Plugins: avoid app importDashboards() NPE (#18128)
* tables display

* add missing file

* adding toolbar option

* adding toolbar option

* add items to index

* use root import path

* merge master

* show tables info

* add importDashboards code

* remove table changes

* remove table changes

* use deprecation warning
2019-07-19 07:11:16 -07:00
Ryan McKinley
0ca1e90b2e Plugins: fix previous commit, output "build" property in json 2019-07-19 06:21:39 -07:00
Alexander Zobnin
214195441f SAML: add metrics (#18194) 2019-07-19 15:30:31 +03:00
Ryan McKinley
3e0625ff3d Plugins: add build info to plugin metadata (#18164) 2019-07-18 11:52:34 -07:00
Kyle Brandt
7cac393ddc datasource: testdata - add predicatable csv wave scenario (#18183) 2019-07-18 13:36:22 -04:00
Alexander Zobnin
e47546d529 Docs: SAML idp_metadata_url option (#18181) 2019-07-18 18:45:59 +03:00
David
c6d3ffce91 Panel: Show error in edit mode (#18175)
- the error was set, but has not been shown
- this change will force a digest before the query promises return with
their error handling
2019-07-18 16:09:04 +02:00
David
fb21492eae E2E: saving a dashboard should wait for success (#18171)
- navigating right away triggered the unsaved warning on slower machines
- this change makes sure we see a success message first
2019-07-18 15:36:03 +02:00
Dominik Prokop
2c8809d3cf @grafana/toolkit: integrate latest improvements (#18168)
* @grafana/toolkit: make ts-loader ignore files that are not bundled

* @grafana/toolkit: improve the circleci task (#18133)

This PR makes some minor improvements to the circle task

Adds build info to plugin.json
adds dependencies to deployed artifacts
Makes sure prettier has content before writing (avoid writing empty files)
renames 'bundle' to 'package' and saves stuff in a 'packages' file

* @grafana/toolkit: enable plugin themes to work with common stylesheet (#18160)

This makes it possible to use themes styleshheet files and stylesheet imports at the same time. The problem occurred when trying to migrate polystat panel to toolkit: grafana/grafana-polystat-panel#62
2019-07-18 13:48:35 +02:00
Oleg Gaidarenko
8202fa2fde Build: change definition of the vars in makefile (#18151)
Prompted by the @slim-bean talk (thanks!). With that definition
`GO_FILES` var can be dynamically changed, that will be very helpful
in grafana enterprise repo
2019-07-18 12:11:05 +03:00
Tobias Skarhed
c8498461a5 noImplicitAny: Down approx 200 errors (#18143)
* noImplicitAny playlist approx 200

* Add AngularPanelMenuItem interface

* Roughly 100 noImplicitAny
2019-07-18 08:03:04 +02:00
Kyle Brandt
ed099d5ca0 datasource: testdata - add predictable pulse scenario (#18142)
Adds pulse waveform. Is predictable in the sense that the start of the waveform is aligned to epoch time (instead of the start of the query time). This makes a useful signal for manual testing of alerting in the devenv.
2019-07-17 15:48:08 -04:00
gotjosh
f38187d68b Minor 6.3.0 beta1 changes (#18048)
* chore: mirror the Dockerhub readme

Seems like the dockerhub readme is out of sync with this one. Let's update this one to make them identical.

* chore: add changes part of 6.3.0-beta1 to the docker image README

* chore: add the date to the 6.3.0-beta1 changes in the CHANGELOG
2019-07-17 17:24:09 +01:00
gotjosh
d006f7c916 Docs: SAML (#18069)
* docs: Link to SAML docs and document configuration options

- Document configuration options `defaults.ini` and `sample.ini`
- Add the SAML documentation
- Link to the SAML documentation from "what's new in 6.3"
2019-07-17 13:46:51 +01:00
Oleg Gaidarenko
c68bded858 Docs: prioritize use of make run to bra (#18154) 2019-07-17 10:01:16 +03:00
Sofia Papagiannaki
18d999f1bc Fix provision alerts generation script (#18145)
The script tries to delete previously existing alerts
but it used to fail if there were too many of them.
2019-07-17 09:49:33 +03:00
Oleg Gaidarenko
d9f01cb822 SQLStore: use bool pointer instead of string (#18111) 2019-07-17 06:24:56 +03:00
Ryan McKinley
c194ae1ba5 Registry: add a reusable function registry (#17047) 2019-07-16 11:40:23 -07:00
Dominik Prokop
5151b8ce07 grafana/toolkit: test improvements and show stats (#18137, #18138)
* Enable running tests in watch mode and by path or name regex

* Toolkit readme update

* Show webpack stats on successful compilation

* unzip the plugin, not the docs
2019-07-16 08:37:00 -07:00
Oleg Gaidarenko
75fa1f0207 Metrics: use consistent naming for exported variables (#18134)
* Metrics: remove unused metrics

Metric `M_Grafana_Version` is not used anywhere, nor the mentioned
`M_Grafana_Build_Version`. Seems to be an artefact?

* Metrics: make the naming consistent

* Metrics: add comments to exported vars

* Metrics: use proper naming

Fixes #18110
2019-07-16 16:58:46 +02:00
johannes
15ce5a68cf Build: copy .browserslistrc to node build container (#18141) 2019-07-16 16:57:31 +02:00
Ryan McKinley
e56f98f03f @grafana/toolkit: HtmlWebpackPlugin when in watch mode (#18130) 2019-07-16 16:53:08 +02:00
Ryan McKinley
2a70ccb557 update yarn.lock (#18125) 2019-07-16 16:52:20 +02:00
Ryan McKinley
bf228d1cff grafana/toolkit: prettier and lint fix in dev mode (#18131) 2019-07-16 07:36:50 -07:00
Tobias Skarhed
0ef4060b98 Chore: Fix about 200 noImplicitAny errors (#18067)
* Fix 200 ish errors

* Add interface
2019-07-16 11:35:42 +02:00
Oleg Gaidarenko
b049b003f2 Build: allow dynamically change docker image (#18112)
* Build: allow dynamically change docker image

Right now, only for couple DBs.
With the 2.1, you can do `${TAG:-5.6}` without needing the `.env` file, but
it seems it would be better for back-compat to support `.env` right now.

Fixes #17891

* Build: add prefix for removal process

* Docs: mention makefile command instead of the bash

Since we are moving to makefile for things and make command
simplifies some of the actions you have to perform to work with
different environments

* Docs: mention dynamic tags in the docs

* Docs: avoid name collision

Fixes #16107
2019-07-16 08:16:10 +02:00
Dominik Prokop
29c89de140 grafana/toolkit: update the way config is being passed to jest cli (#18115) 2019-07-15 16:57:37 +02:00
Dominik Prokop
88d9a3b440 Build: detect changes to packages based on the git diff (#18118) 2019-07-15 16:56:49 +02:00
Dominik Prokop
de705229ba Build: Release packages under next tag when changes detected on master (#18062)
* Testing lerna on circle

* Remove dependency on test task, fix yarn

* yarn fix

* Run lerna from local bin

* Use packages cache, run lern via npx

* Add packages:build

* Install packages before release

* Remove cache tmp

* add lerna bootstrap

* temporarily add tsignore

* lerna add data package to ui

* Remove @types/lodas resolution

* Try any...

* Typo fix

* Add publishing packages

* update lerna publish script

* Reset git befgore publishing package

* Correct lerna version

* Packages version bump

* Remove postpublish

* Publish to npm

* Set git creds before commit

* Rename job and run it after frontend tests and build passes

* Run next packages release on master but not when tagged with release

* Minor copy

* Update circle's config

* Fix config
2019-07-15 14:19:08 +02:00
Oleg Gaidarenko
8e0f091f14 SQLStore: allow to look for is_disabled flag (#18032)
* Add support for `is_disabled` to `CreateUser()`

* Add support for `is_disabled` to `SearchUsers()`
  Had to add it as a `string` type not as `bool`, since if that's property
  is omitted, we would have add it to SQL request, which might be dangerous

* Restructure desctructive tests and add more
2019-07-15 09:14:32 +03:00
Oleg Gaidarenko
09eb9a45ce Metrics: add LDAP active sync summary metric (#18079) 2019-07-15 08:33:48 +03:00
Eric Leijonmarck
7213e1f7ff Docs: correct issue_triage.md texts 2019-07-15 01:48:30 +03:00
Ryan McKinley
7388a4fb74 ValuMapping: start with some values (#18092) 2019-07-12 20:43:26 +02:00
Torkel Ödegaard
1e058424b0 Docs: Simplify download links & instructions and make download link clearer (#18090)
* put the version number in the docs

* add links to download page

* Docs: Make download link more clear

* Docs: minor tweaks
2019-07-12 18:12:50 +02:00
Ryan McKinley
14caa6a068 FieldDisplay: move threshold and mapping to Field (#17043) 2019-07-12 08:32:39 -07:00
kvc-code
acc678c309 InfluxDB: Enable interpolation within ad-hoc filter values for InfluxDB data source (#18077) 2019-07-12 17:05:55 +02:00
Torkel Ödegaard
1b5bc450a2 Docs: Move data links down (#18072)
Felt this was in the wrong place, it is not the most important option and should not be above the main graph options.
2019-07-12 16:51:58 +02:00
Ryan McKinley
ca628832ab grafana/toolkit: improve CircleCI integration (#18071)
* don't actually install grafana in the setup step

* updat eversion changes

* add report stage

* update versions

* don't do failing test

* upate version

* print plugins

* update versions

* copy docs

* Update package.json
2019-07-12 10:25:38 +02:00
Oleg Gaidarenko
1cbec50866 Build: consistently reference go binary (#18059)
Before this applied, go binary is referenced inconsistently in makefile.
Sometimes with go modules enabled and sometimes not, sometimes through
a variable and sometimes not.

This change makes all the references in makefile consistent
2019-07-11 20:55:35 +02:00
Andrej Ocenas
743f8420bc devenv: Fix typo in nginix docker for mac (#18068) 2019-07-11 18:13:01 +02:00
Tobias Skarhed
e1cec1069c noImplicitAny: 1670 errors (#18035)
* Sub 2000 errors

* Down to 1670 errors

* Minor fixes
2019-07-11 17:05:45 +02:00
Sofia Papagiannaki
6aa58182c7 Add missing pull requests to Changelog (#18061) 2019-07-11 16:13:23 +03:00
Kyle Brandt
76d08989f0 provisioning: escape literal '$' with '$$' to avoid interpolation (#18045)
fixes #17986
2019-07-11 07:32:07 -04:00
Ryan McKinley
7ec87ee76b grafana/toolkit: improve CircleCI stubs (#17995)
* validate type and id

* copy all svg and png, useful if people don't use the img folder

* update comments

* add stubs for each ci task

* use ci-work folder rather than build

* use axios for basic testing

* Packages: publish packages@6.3.0-alpha.39

* bump version

* add download task

* Packages: publish packages@6.3.0-alpha.40

* merge all dist folders into one

* fix folder paths

* Fix ts error

* Packages: publish packages@6.3.0-beta.0

* Packages: publish packages@6.3.0-beta.1

* bump next to 6.4

* Packages: publish packages@6.4.0-alpha.2

* better build and bundle tasks

* fix lint

* Packages: publish packages@6.4.0-alpha.3

* copy the file to start grafana

* Packages: publish packages@6.4.0-alpha.4

* use sudo for copy

* Packages: publish packages@6.4.0-alpha.5

* add missing service

* add service and homepath

* Packages: publish packages@6.4.0-alpha.6

* make the folder

* Update packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts

* Update packages/grafana-toolkit/src/cli/tasks/plugin.ci.ts
2019-07-11 12:47:58 +02:00
Mikhail f. Shiryaev
5190949950 Docs: clarify the ttl units (#18039) 2019-07-11 12:48:24 +03:00
Barry
6f4625bb78 Update docs readme for running MySQL/Postgres tests 2019-07-11 11:33:53 +03:00
Anthony Templeton
3680b95b44 Auth: Duplicate API Key Name Handle With Useful HTTP Code (#17905)
* API: Duplicate API Key Name Handle With Useful HTTP Code

* 17447: make changes requested during review

- use dialect.IsUniqueContraintViolation
- change if statement to match others
- return error properly

* Revert "17447: make changes requested during review"

This reverts commit a4a674ea83.

* API: useful http code on duplicate api key error w/ tests

* API: API Key Duplicate Handling

fixed small typo associated with error
2019-07-11 11:20:34 +03:00
Šimon Podlipský
04e7970375 Chore: upgrade node-sass to 4.12.0 (#18052) 2019-07-11 09:18:27 +02:00
Sofia Papagiannaki
f2ad3242be API: Minor fix for nil pointer when trying to log error during creating new dashboard via the API (#18003)
* Minor fix for nil pointer when trying to log error

* Do not return error if a dashboard is created

Only log the failures

* Do not return error if the folder is created

Only log the failures
2019-07-11 09:45:29 +03:00
Ryan McKinley
aa89210c9d Chore: update lodash (#18055) 2019-07-10 23:37:52 -07:00
Sofia Papagiannaki
a5834d3250 Update latest.json (#18043) 2019-07-10 20:24:17 +03:00
Sofia Papagiannaki
f5efef1370 Update Changelog (#18042) 2019-07-10 19:42:23 +03:00
Sofia Papagiannaki
3bbc40a32f Chore: bump master version number to 6.4.0-pre 2019-07-10 16:12:28 +03:00
kay delaney
bf7fb67f73 Explore/Loki: Display live tailed logs in correct order (#18031)
Closes #18027
2019-07-10 13:57:23 +01:00
3815 changed files with 390635 additions and 116718 deletions

View File

@@ -3,8 +3,11 @@
[
"@babel/preset-env",
{
"targets": { "browsers": "last 3 versions" },
"useBuiltIns": "entry"
"targets": {
"browsers": "last 3 versions"
},
"useBuiltIns": "entry",
"modules": "false",
}
]
]

View File

@@ -1,7 +1,7 @@
[run]
init_cmds = [
["go", "run", "build.go", "-dev", "build-cli"],
["go", "run", "build.go", "-dev", "build-server"],
["go", "run", "-mod=vendor", "build.go", "-dev", "build-cli"],
["go", "run", "-mod=vendor", "build.go", "-dev", "build-server"],
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
]
watch_all = true
@@ -14,6 +14,6 @@ watch_dirs = [
watch_exts = [".go", ".ini", ".toml", ".template.html"]
build_delay = 1500
cmds = [
["go", "run", "build.go", "-dev", "build-server"],
["go", "run", "-mod=vendor", "build.go", "-dev", "build-server"],
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
]

File diff suppressed because it is too large Load Diff

16
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1,16 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# More details are here: https://help.github.com/articles/about-codeowners/
# The '*' pattern is global owners.
# Order is important. The last matching pattern has the most precedence.
# The folders are ordered as follows:
# In each subsection folders are ordered first by depth, then alphabetically.
# This should make it easy to add new rules without breaking existing ones.
# Documentation owner: Diana Payton
/docs/ @oddlittlebird
/contribute/ @oddlittlebird @marcusolsson

View File

@@ -1,14 +0,0 @@
---
name: Support request
about: 'Question or support request relating to using Grafana'
title: ''
labels: ''
assignees: ''
---
STOP -- PLEASE READ!
GitHub is not the right place for questions and support requests.
Please ask questions on our community site: [https://community.grafana.com/](https://community.grafana.com/)

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Questions & Help
url: https://community.grafana.com
about: Please ask and answer questions here.

View File

@@ -1,20 +1,33 @@
<!-- Thanks for sending a pull request! Here are some tips for you:
<!--
Thank you for sending a pull request! Here are some tips:
1. If this is your first time, please read our contribution guide at https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md
2. Ensure you include and run the appropriate tests as part of your Pull Request.
3. In a new feature or configuration option, an update to the documentation is necessary. Everything related to the documentation is under the docs folder in the root of the repository.
4. If the Pull Request is a work in progress, make use of GitHub's "Draft PR" feature and mark it as such.
5. If you can not merge your Pull Request due to a merge conflict, Rebase it. This gets it in sync with the master branch.
6. Name your PR as "<FeatureArea>: Describe your change", e.g. Alerting: Prevent race condition. If it's a fix or feature relevant for the changelog describe the user impact in the title. The PR title is used to auto-generate the changelog for issues marked with the "add to changelog" label.
1. If this is your first time, please read our [`CONTRIBUTING.md`](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guide.
2. Ensure you have added or ran the appropriate tests for your PR.
3. If it's a new feature or config option it will need a docs update. Docs are under the docs folder in repo root.
4. If the PR is unfinished, mark it as a draft PR.
5. Rebase your PR if it gets out of sync with master
6. Name your PR as `<FeatureArea>: Describe your change`. If it's a fix or feature relevant for changelog describe the user impact in the title. The PR title is used in changelog for issues marked with `add to changelog` label.
-->
**What this PR does / why we need it**:
**Which issue(s) this PR fixes**:
<!--
*Automatically closes linked issue when PR is merged.
Usage: `Fixes #<issue number>`, or `Fixes (paste link of issue)`.
* Automatically closes linked issue when the Pull Request is merged.
Usage: "Fixes #<issue number>", or "Fixes (paste link of issue)"
-->
Fixes #
**Special notes for your reviewer**:

View File

@@ -0,0 +1,7 @@
FROM alpine
RUN apk update
RUN apk add rsync git bash
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]

View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Sean Middleditch
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,60 @@
publish-to-git
==============
[GitHub Action](https://github.com/features/actions) for publishing a directory
and its contents to another git repository.
This can be especially useful for publishing static website, such as with
[GitHub Pages](https://pages.github.com/), from built files in other job
steps, such as [Doxygen](http://www.doxygen.nl/) generated HTML files.
**NOTE**: GitHub currently requires the use of a Personal Access Token for
pushing to other repositories. Pushing to the current repository should work
with the always-available GitHub Token (available via
`{{ secrets.GITHUB_TOKEN }}`. If pushing to another repository, a Personal
Access Token will need to be [created](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) and assigned to the
workflow [secrets](https://help.github.com/en/articles/virtual-environments-for-github-actions#creating-and-using-secrets-encrypted-variables).
Inputs
------
- `repository`: Destination repository (default: current repository).
- `branch`: Destination branch (required).
- `host`: Destination git host (default: `github.com`).
- `github_token`: GitHub Token (required; use `secrets.GITHUB_TOKEN`).
- `github_pat`: Personal Access Token or other https credentials.
- `source_folder`: Source folder in workspace to copy (default: workspace root).
- `target_folder`: Target folder in destination branch to copy to (default: repository root).
- `commit_author`: Override commit author (default: `{github.actor}@users.noreply.github.com`).
- `commit_message`: Set commit message (default: `[workflow] Publish from [repository]:[branch]/[folder]`).
- `dry_run`: Does not push if non-empty (default: empty).
- `working_directory`: Location to checkout repository (default: random location in `${HOME}`)
Outputs
-------
- `commit_hash`: SHA hash of the new commit.
- `working_directory`: Working directory of git clone of repository.
License
-------
MIT License. See [LICENSE](LICENSE) for details.
Usage Example
-------------
```yaml
jobs:
publish:
- uses: actions/checkout@master
- run: |
sh scripts/build-doxygen-html.sh --out static/html
- uses: seanmiddleditch/gha-publish-to-git@master
with:
branch: gh-pages
github_token: '${{ secrets.GITHUB_TOKEN }}'
github_pat: '${{ secrets.GH_PAT }}'
source_folder: static/html
if: success() && github.event == 'push'
```

View File

@@ -0,0 +1,60 @@
---
name: publish-to-git
description: 'Publish files to a git repository'
branding:
icon: 'git-commit'
color: 'blue'
inputs:
repository:
description: 'Destination repository (default: current repository)'
default: ''
branch:
description: 'Destination branch'
required: true
host:
description: 'Destination git host'
default: 'github.com'
github_token:
description: 'GitHub Token (use `secrets.GITHUB_TOKEN`)'
required: true
github_pat:
description: 'Personal Access Token or other https credentials'
default: ''
source_folder:
description: 'Source folder in workspace to copy (default: workspace root)'
defaault: ''
target_folder:
description: 'Target folder in destination branch to copy to (default: repository root)'
default: ''
commit_author:
description: 'User Name <email@address> (default: [github.actor]@users.noreply.github.com)'
default: ''
commit_message:
description: 'Commit message (default: [workflow] Publish from [repository]:[branch]/[folder])'
default: ''
dry_run:
description: 'Do not push to repository (set to non-empty string to make dry-run)'
default: ''
working_directory:
description: 'Working directory for clone (default: random location in `${HOME}`)'
default: ''
outputs:
commit_hash:
description: 'Hash of the new commit'
working_directory:
description: 'Working directory of temporary repository'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.repository }}
- ${{ inputs.branch }}
- ${{ inputs.host }}
- ${{ inputs.github_token }}
- ${{ inputs.github_pat }}
- ${{ inputs.source_folder }}
- ${{ inputs.target_folder }}
- ${{ inputs.commit_author }}
- ${{ inputs.commit_message }}
- ${{ inputs.dry_run }}
- ${{ inputs.working_directory }}

View File

@@ -0,0 +1,99 @@
#/bin/bash
# Name the Docker inputs.
#
INPUT_REPOSITORY="$1"
INPUT_BRANCH="$2"
INPUT_HOST="$3"
INPUT_GITHUB_TOKEN="$4"
INPUT_GITHUB_PAT="$5"
INPUT_SOURCE_FOLDER="$6"
INPUT_TARGET_FOLDER="$7"
INPUT_COMMIT_AUTHOR="$8"
INPUT_COMMIT_MESSAGE="$9"
INPUT_DRYRUN="${10}"
INPUT_WORKDIR="${11}"
# Check for required inputs.
#
[ -z "$INPUT_BRANCH" ] && echo >&2 "::error::'branch' is required" && exit 1
[ -z "$INPUT_GITHUB_TOKEN" -a -z "$INPUT_GITHUB_PAT" ] && echo >&2 "::error::'github_token' or 'github_pat' is required" && exit 1
# Set state from inputs or defaults.
#
REPOSITORY="${INPUT_REPOSITORY:-${GITHUB_REPOSITORY}}"
BRANCH="${INPUT_BRANCH}"
HOST="${INPUT_GIT_HOST:-github.com}"
TOKEN="${INPUT_GITHUB_PAT:-${INPUT_GITHUB_TOKEN}}"
REMOTE="${INPUT_REMOTE:-https://${TOKEN}@${HOST}/${REPOSITORY}.git}"
SOURCE_FOLDER="${INPUT_SOURCE_FOLDER:-.}"
TARGET_FOLDER="${INPUT_TARGET_FOLDER}"
REF="${GITHUB_BASE_REF:-${GITHUB_REF}}"
REF_BRANCH=$(echo "${REF}" | rev | cut -d/ -f1 | rev)
[ -z "$REF_BRANCH" ] && echo 2>&1 "No ref branch" && exit 1
COMMIT_AUTHOR="${INPUT_AUTHOR:-${GITHUB_ACTOR} <${GITHUB_ACTOR}@users.noreply.github.com>}"
COMMIT_MESSAGE="${INPUT_COMMIT_MESSAGE:-[${GITHUB_WORKFLOW}] Publish from ${GITHUB_REPOSITORY}:${REF_BRANCH}/${SOURCE_FOLDER}}"
# Calculate the real source path.
#
SOURCE_PATH="$(realpath "${SOURCE_FOLDER}")"
[ -z "${SOURCE_PATH}" ] && exit 1
echo "::debug::SOURCE_PATH=${SOURCE_PATH}"
# Let's start doing stuff.
echo "Publishing ${SOURCE_FOLDER} to ${REMOTE}:${BRANCH}/${TARGET_FOLDER}"
# Create a working directory; the workspace may be filled with other important
# files.
#
WORK_DIR="${INPUT_WORKDIR:-$(mktemp -d "${HOME}/gitrepo.XXXXXX")}"
[ -z "${WORK_DIR}" ] && echo >&2 "::error::Failed to create temporary working directory" && exit 1
cd "${WORK_DIR}"
# Initialize git repo and configure for remote access.
#
echo "Initializing repository with remote ${REMOTE}"
git init || exit 1
git config --local user.email "${GITHUB_ACTOR}@users.noreply.github.com" || exit 1
git config --local user.name "${GITHUB_ACTOR}" || exit 1
git remote add origin "${REMOTE}" || exit 1
git remote -v
# Fetch initial (current contents).
#
echo "Fetching ${REMOTE}:${BRANCH}"
git fetch --depth 1 origin "${BRANCH}" || exit 1
git checkout -b "${BRANCH}" || exit 1
git pull origin "${BRANCH}" || exit 1
# Create the target directory (if necessary) and copy files from source.
#
TARGET_PATH="${WORK_DIR}/${TARGET_FOLDER}"
echo "Populating ${TARGET_PATH}"
mkdir -p "${TARGET_PATH}" || exit 1
rsync -a --quiet --delete "${SOURCE_PATH}/" "${TARGET_PATH}" || exit 1
# Create commit with changes.
#
echo "Creating commit"
git add "${TARGET_PATH}" || exit 1
git commit -m "${COMMIT_MESSAGE}" --author "${COMMIT_AUTHOR}" || exit 1
COMMIT_HASH="$(git rev-parse HEAD)"
echo "Created commit ${COMMIT_HASH}"
# Publish output variables.
#
echo "::set-output name=commit_hash::${COMMIT_HASH}"
echo "::set-output name=working_directory::${WORK_DIR}"
# Push if not a dry-run.
#
if [ -z "${INPUT_DRYRUN}" ] ; then
echo "Pushing to ${REMOTE}:${BRANCH}"
git push origin "${BRANCH}" || exit 1
else
echo "[DRY-RUN] Not pushing to ${REMOTE}:${BRANCH}"
fi

47
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,47 @@
# Configuration for probot-stale - https://github.com/probot/stale
# General configuration
# Label to use when marking as stale
staleLabel: stale
# Pull request specific configuration
pulls:
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 14
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 30
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This pull request has been automatically marked as stale because it has not had
activity in the last 2 weeks. It will be closed in 30 days if no further activity occurs. Please
feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
This pull request has been automatically closed because it has not had
activity in the last 30 days. Please feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 1
exemptLabels:
- help wanted
- type/bug
- type/feature-request
- Epic
- no stalebot
# Issue specific configuration
issues:
limitPerRun: 1
daysUntilStale: 100000
daysUntilClose: 100000
markComment: >
This issue has been automatically marked as stale because it has not had activity in the
last 100 days. It will be closed in the next 100 days if no activity occurs.
Thank you for your contributions.
closeComment: >
This issue has been automatically closed because it has not had activity in the
last month and a half. If this issue is still valid, please ping a maintainer and ask them to check this again.
Thank you for your contributions.

30
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: publish_docs
on:
push:
branches:
- master
paths:
- 'docs/sources/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: publish-to-git
uses: ./.github/actions/gha-publish-to-git
id: publish
with:
repository: grafana/website
branch: docs-grafana
host: github.com
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
source_folder: docs/sources
target_folder: content/docs/grafana/latest
- shell: bash
run: |
test -n "${{ steps.publish.outputs.commit_hash }}"
test -n "${{ steps.publish.outputs.working_directory }}"

31
.gitignore vendored
View File

@@ -10,8 +10,12 @@ awsconfig
/public/views/index.html
/public/views/error.html
/emails/dist
/public_gen
/public/vendor/npm
/reports
# Enterprise emails
/emails/templates/enterprise_*
/public/emails/enterprise_*
/tmp
tools/phantomjs/phantomjs
tools/phantomjs/phantomjs.exe
@@ -39,10 +43,11 @@ public/css/*.min.css
/data/*
/bin/*
# devenv
/devenv/docker-compose.yaml
/devenv/.env
conf/custom.ini
fig.yml
devenv/docker-compose.yml
devenv/docker-compose.yaml
/conf/provisioning/**/custom.yaml
/conf/provisioning/**/dev.yaml
/conf/ldap_dev.toml
@@ -55,7 +60,8 @@ profile.cov
/pkg/cmd/grafana-cli/grafana-cli
/pkg/cmd/grafana-server/grafana-server
/pkg/cmd/grafana-server/debug
/pkg/extensions
/pkg/extensions/*
!/pkg/extensions/main.go
/public/app/extensions
debug.test
/examples/*/dist
@@ -84,7 +90,16 @@ debug.test
/packages/**/compiled
/packages/**/.rpt2_cache
theOutput/
# Ignore go local build dependencies
/scripts/go/bin/**
# Ignore compilation stats from `yarn stats`
compilation-stats.json
# e2e tests
/packages/grafana-e2e/cypress/screenshots
/packages/grafana-e2e/cypress/videos
/packages/grafana-e2e/cypress/logs
/public/e2e-test/screenShots/theOutput
/public/e2e-tests/screenShots/theOutput/*.png
/public/e2e-tests/videos

File diff suppressed because it is too large Load Diff

View File

@@ -1,62 +1,67 @@
# Contributing
# Contributing to Grafana
Grafana uses GitHub to manage contributions.
Contributions take the form of pull requests that will be reviewed by the core team.
Thank you for your interest in contributing to Grafana! We welcome all people who want to contribute in a healthy and constructive manner within our community. To help us create a safe and positive community experience for all, we require all participants to adhere to the [Code of Conduct](CODE_OF_CONDUCT.md).
- If you are a new contributor see: [Steps to Contribute](#steps-to-contribute)
This document is a guide to help you through the process of contributing to Grafana.
- If you have a trivial fix or improvement, go ahead and create a pull request.
## Become a contributor
- If you plan to do something more involved, discuss your idea on the respective [issue](https://github.com/grafana/grafana/issues) or create a [new issue](https://github.com/grafana/grafana/issues/new) if it does not exist. This will avoid unnecessary work and surely give you and us a good deal of inspiration.
You can contribute to Grafana in several ways. Here are some examples:
- Sign our [CLA](http://docs.grafana.org/contribute/cla/).
- Contribute to the Grafana codebase.
- Report and triage bugs.
- Develop community plugins and dashboards.
- Write technical documentation and blog posts, for users and contributors.
- Organize meetups and user groups in your local area.
- Help others by answering questions about Grafana.
- Make sure to follow the code style guides
- [Backend](https://github.com/grafana/grafana/tree/master/pkg)
- [Frontend](https://github.com/grafana/grafana/tree/master/style_guides)
For more ways to contribute, check out the [Open Source Guides](https://opensource.guide/how-to-contribute/).
## Steps to Contribute
### Report bugs
Should you wish to work on a GitHub issue, check first if it is not already assigned to someone. If it is free, you claim it by commenting on the issue that you want to work on it. This is to prevent duplicated efforts from contributors on the same issue.
Report a bug by submitting a [bug report](https://github.com/grafana/grafana/issues/new?labels=type%3A+bug&template=1-bug_report.md). Make sure that you provide as much information as possible on how to reproduce the bug.
Please check the [`beginner friendly`](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) and [`help wanted`](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) labels to find issues that are good for getting started. If you have questions about one of the issues, with or without the tag, please comment on them and one of the core team or the original poster will clarify it.
Before submitting a new issue, try to make sure someone hasn't already reported the problem. Look through the [existing issues](https://github.com/grafana/grafana/issues) for similar issues.
To setup a local development environment we recommend reading [Building Grafana from source](http://docs.grafana.org/project/building_from_source/)
#### Security issues
## Pull Request Checklist
If you believe you've found a security vulnerability, please read our [security policy](https://github.com/grafana/grafana/security/policy) for more details.
- Branch from the master branch and, if needed, rebase to the current master branch before submitting your pull request. If it doesn't merge cleanly with master you may be asked to rebase your changes.
### Suggest enhancements
- If your patch is not getting reviewed or you need a specific person to review it, you can @-reply a reviewer asking for a review in the pull request or a comment.
If you have an idea of how to improve Grafana, submit an [enhancement request](https://github.com/grafana/grafana/issues/new?labels=type%3A+feature+request&template=2-feature_request.md).
- Add tests relevant to the fixed bug or new feature.
We want to make Grafana accessible to even more people. Submit an [accessibility issue](https://github.com/grafana/grafana/issues/new?labels=type%3A+accessibility&template=3-accessibility.md) to help us understand what we can improve.
- Follow [PR and commit messages guidelines](#PR-and-commit-messages-guidelines)
### Triage issues
### Pull Requests titles and message
If you don't have the knowledge or time to code, consider helping with _issue triage_. The community will thank you for saving them time by spending some of yours.
Pull request titles should follow this format: `Area: Name of the change`.
Titles are used to generate the changelog so they should be as descriptive as possible in one line.
Read more about the ways you can [Triage issues](/contribute/triage-issues.md).
Good Examples
### Answering questions
- `Explore: Adds Live option for supported datasources`
- `GraphPanel: Don't sort series when legend table & sort column is not visible`
- `Build: Support publishing MSI to grafana.com`
If you have a question and you can't find the answer in the [documentation](https://grafana.com/docs/), the next step is to ask it on the [community site](https://community.grafana.com/).
The message in the Pull requests should contain a reference so the issue if there is one. Ex `Closes #<issue number>`, `Fixes #<issue number>`, or `Ref #<issue number>` if the change is related to an issue but does not close it. Make sure to explain what problem the pull request is solving and why its implemented this way. As a new contributor its often better to overcommunicate to avoid back and forth communication, as it consumes time and energy.
It's important to us to help these users, and we'd love your help. Sign up to our [community site](https://community.grafana.com/), and start helping other Grafana users by answering their questions.
### GIT commit formating.
### Your first contribution
Grafana Squash Pull requests when merging them into master. This means the maintainer will be responsible for the title in the git commit message.
The commit message of the commits in the Pull Request can still be part of the git commit body. So it's always encouraged to write informative commit messages.
Unsure where to begin contributing to Grafana? Start by browsing issues labeled `beginner friendly` or `help wanted`.
The Git commit title should be short, descriptive and include the Pull Request ID.
- [Beginner-friendly](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) issues are generally straightforward to complete.
- [Help wanted](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) issues are problems we would like the community to help us with regardless of complexity.
Good Examples
If you're looking to make a code change, see how to set up your environment for [local development](contribute/developer-guide.md).
- `Explore: Live supprt in datasources (#12345)`
- `GraphPanel: Fix legend sorting issues (#12345)`
- `Build: Support publishing MSI to grafana.com (#12345)`
When you're ready to contribute, it's time to [Create a pull request](/contribute/create-pull-request.md).
Its also good practice to include a reference to the issue in the git commit body when possible.
#### Contributor License Agreement (CLA)
Before we can accept your pull request, you need to [sign our CLA](https://grafana.com/docs/contribute/cla/). If you haven't, our CLA assistant prompts you to when you create your pull request.
## Where do I go from here?
- Set up your [development environment](contribute/developer-guide.md).
- Learn how to [contribute documentation](contribute/documentation.md).
- Get started [developing plugins](https://grafana.com/docs/plugins/developing/development/) for Grafana.

View File

@@ -1,5 +1,7 @@
# Golang build container
FROM golang:1.12.9
FROM golang:1.13.4-alpine
RUN apk add --no-cache gcc g++
WORKDIR $GOPATH/src/github.com/grafana/grafana
@@ -9,13 +11,22 @@ COPY vendor vendor
RUN go mod verify
COPY pkg pkg
COPY build.go build.go
COPY package.json package.json
COPY build.go package.json ./
RUN go run build.go build
# Node build container
FROM node:10.14.2
FROM node:12.13.0-alpine
# PhantomJS
RUN apk add --no-cache curl &&\
cd /tmp && curl -Ls https://github.com/dustinblackman/phantomized/releases/download/2.1.1/dockerized-phantomjs.tar.gz | tar xz &&\
cp -R lib lib64 / &&\
cp -R usr/lib/x86_64-linux-gnu /usr/lib &&\
cp -R usr/share /usr/share &&\
cp -R etc/fonts /etc &&\
curl -k -Ls https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar -jxf - &&\
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
WORKDIR /usr/src/app/
@@ -24,7 +35,7 @@ COPY packages packages
RUN yarn install --pure-lockfile --no-progress
COPY Gruntfile.js tsconfig.json tslint.json ./
COPY Gruntfile.js tsconfig.json tslint.json .browserslistrc ./
COPY public public
COPY scripts scripts
COPY emails emails
@@ -33,14 +44,14 @@ ENV NODE_ENV production
RUN ./node_modules/.bin/grunt build
# Final container
FROM ubuntu:18.04
FROM alpine:3.10
LABEL maintainer="Grafana team <hello@grafana.com>"
ARG GF_UID="472"
ARG GF_GID="472"
ENV PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
ENV PATH="/usr/share/grafana/bin:$PATH" \
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
GF_PATHS_DATA="/var/lib/grafana" \
GF_PATHS_HOME="/usr/share/grafana" \
@@ -50,16 +61,14 @@ ENV PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bi
WORKDIR $GF_PATHS_HOME
RUN apt-get update && apt-get upgrade -y && \
apt-get install -qq -y libfontconfig1 ca-certificates && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/*
RUN apk add --no-cache ca-certificates bash tzdata && \
apk add --no-cache --upgrade --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main openssl musl-utils
COPY conf ./conf
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
groupadd -r -g $GF_GID grafana && \
useradd -r -u $GF_UID -g grafana grafana && \
addgroup -S -g $GF_GID grafana && \
adduser -S -u $GF_UID -G grafana grafana && \
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
"$GF_PATHS_PROVISIONING/dashboards" \
"$GF_PATHS_PROVISIONING/notifiers" \
@@ -69,7 +78,15 @@ RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
cp "$GF_PATHS_HOME/conf/sample.ini" "$GF_PATHS_CONFIG" && \
cp "$GF_PATHS_HOME/conf/ldap.toml" /etc/grafana/ldap.toml && \
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
chmod 777 -R "$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"
# PhantomJS
COPY --from=1 /tmp/lib /lib
COPY --from=1 /tmp/lib64 /lib64
COPY --from=1 /tmp/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu
COPY --from=1 /tmp/usr/share /usr/share
COPY --from=1 /tmp/etc/fonts /etc/fonts
COPY --from=1 /usr/local/bin/phantomjs /usr/local/bin
COPY --from=0 /go/src/github.com/grafana/grafana/bin/linux-amd64/grafana-server /go/src/github.com/grafana/grafana/bin/linux-amd64/grafana-cli ./bin/
COPY --from=1 /usr/src/app/public ./public

85
Dockerfile.ubuntu Normal file
View File

@@ -0,0 +1,85 @@
FROM golang:1.13.4 AS go-builder
WORKDIR /src/grafana
COPY go.mod go.sum ./
COPY vendor vendor/
RUN go mod verify
COPY build.go package.json ./
COPY pkg pkg/
RUN go run build.go build
FROM node:12.13 AS js-builder
# PhantomJS
RUN apt-get update && apt-get install -y curl &&\
curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xj &&\
cp phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
WORKDIR /usr/src/app/
COPY package.json yarn.lock ./
COPY packages packages
RUN yarn install --pure-lockfile
COPY Gruntfile.js tsconfig.json tslint.json .browserslistrc ./
COPY public public
COPY scripts scripts
COPY emails emails
ENV NODE_ENV production
RUN ./node_modules/.bin/grunt build
FROM ubuntu:18.04
LABEL maintainer="Grafana team <hello@grafana.com>"
EXPOSE 3000
ARG GF_UID="472"
ARG GF_GID="472"
ENV PATH="/usr/share/grafana/bin:$PATH" \
GF_PATHS_CONFIG="/etc/grafana/grafana.ini" \
GF_PATHS_DATA="/var/lib/grafana" \
GF_PATHS_HOME="/usr/share/grafana" \
GF_PATHS_LOGS="/var/log/grafana" \
GF_PATHS_PLUGINS="/var/lib/grafana/plugins" \
GF_PATHS_PROVISIONING="/etc/grafana/provisioning"
WORKDIR $GF_PATHS_HOME
COPY conf conf
# We need font libs for phantomjs, and curl should be part of the image
RUN apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates libfontconfig1 curl
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
addgroup --system --gid $GF_GID grafana && \
adduser --uid $GF_UID --system --ingroup grafana grafana && \
mkdir -p "$GF_PATHS_PROVISIONING/datasources" \
"$GF_PATHS_PROVISIONING/dashboards" \
"$GF_PATHS_PROVISIONING/notifiers" \
"$GF_PATHS_LOGS" \
"$GF_PATHS_PLUGINS" \
"$GF_PATHS_DATA" && \
cp conf/sample.ini "$GF_PATHS_CONFIG" && \
cp conf/ldap.toml /etc/grafana/ldap.toml && \
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"
# PhantomJS
COPY --from=js-builder /usr/local/bin/phantomjs /usr/local/bin/
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
COPY tools/phantomjs/render.js tools/phantomjs/
COPY packaging/docker/run.sh /
USER grafana
ENTRYPOINT [ "/run.sh" ]

View File

@@ -10,6 +10,7 @@ module.exports = function (grunt) {
tempDir: 'tmp',
platform: process.platform.replace('win32', 'windows'),
enterprise: false,
libc: null,
};
if (grunt.option('platform')) {
@@ -30,6 +31,10 @@ module.exports = function (grunt) {
}
}
if (grunt.option('libc')) {
config.libc = grunt.option('libc');
}
config.phjs = grunt.option('phjsToRelease');
config.pkg.version = grunt.option('pkgVer') || config.pkg.version;
@@ -42,7 +47,7 @@ module.exports = function (grunt) {
grunt.loadTasks('./scripts/grunt');
// Utility function to load plugin settings into config
function loadConfig(config,path) {
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

View File

@@ -1,17 +1,22 @@
Triaging of issues
------------------
# Triage issues
Grafana being a popular open source project there are a lot of incoming issues. The main goal of issue triage is to categorize all incoming issues and make sure it has all basic information needed for anyone else to understand and/or being able to start working with it.
The main goal of issue triage is to categorize all incoming Grafana issues and make sure each issue has all basic information needed for anyone else to understand and be able to start working on it.
The core maintainers of the Grafana project is responsible for categorizing all incoming issues and delegate any critical and/or important issue to other maintainers. Currently there's one maintainer each week responsible. Besides that part, triage provides an important way to contribute to an open source project. Triage helps ensure issues resolve quickly by:
**Note:** This information is for Grafana project Maintainers, Owners, and Admins. If you are a Contributor, then you will not be able to perform most of the tasks in this topic.
* Describing the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took.
The core maintainers of the Grafana project are responsible for categorizing all incoming issues and delegating any critical or important issue to other maintainers. Currently one maintainer each week is responsible. Besides that part, triage provides an important way to contribute to an open source project.
Triage helps ensure issues resolve quickly by:
* Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took.
* Giving a contributor the information they need before they commit to resolving an issue.
* Lowering the issue count by preventing duplicate issues.
* Streamlining the development process by preventing duplicate discussions.
* If you don't have the knowledge or time to code, consider helping with triage. The community will thank you for saving them time by spending some of yours.
**Simplified flowchart diagram of the issue triage process:**
If you don't have the knowledge or time to code, consider helping with triage. The community will thank you for saving them time by spending some of yours.
## Simplified flowchart diagram of the issue triage process
<!-- https://textik.com/#610afa78553def29 -->
```
+--------------------------+
@@ -53,73 +58,13 @@ The core maintainers of the Grafana project is responsible for categorizing all
+------------------+ +--------------+
```
## How you can help
There are multiple ways that you can help with the Grafana project, especially without writing a single line of code. Everyone in the Grafana community will be greatly thankful you for helping out with any of the below tasks.
### Answer/ask questions
The [community site](https://community.grafana.com/) is the main channel to be used for asking and answering questions related to the Grafana project. This may be the first place a new or existing Grafana user look/ask for help after they found that the [documentation](https://grafana.com/docs) wasn't answering their questions. It's very important to help new and existing users so that these new users can find proper answers and eventually help out other users and by that keep growing the Grafana community.
Please signup to the Grafana [community site](https://community.grafana.com/) and start help other Grafana users by answering their questions and/or ask for help.
### Report documentation enhancements
If you visit the [documentation site](https://grafana.com/docs) and find typos/error/lack of information please report these by clicking on the `Request doc changes` link found on every page and/or contribute the changes yourself by clicking on `Edit this page` and open a pull request. Everyone in the community will greatly thank you for.
Please read about how documentation issues is triaged [below](#documentation-issue) to understand what kind of documentation may be suitable to request/add.
### Report a security vulnerability
Please review the [security policy](https://github.com/grafana/grafana/security/policy) for more details.
### Report bugs
Report a bug you found when using Grafana by [opening a new bug report](https://github.com/grafana/grafana/issues/new?labels=type%3A+bug&template=1-bug_report.md).
### Request enhancements/new features
Suggest an enhancement or new feature for the Grafana project by [opening a new enhancement issue](https://github.com/grafana/grafana/issues/new?labels=type%3A+feature+request&template=2-feature_request.md).
Alternatively, help make Grafana be better at being accessible to all by [opening a new accessibility issue](https://github.com/grafana/grafana/issues/new?labels=type%3A+accessibility&template=3-accessibility.md).
### Report inaccurate issue information
If you find an issue that have a badly formatted title and/or description, bad language/grammar and/or wrong labels it's important to let the issue author or maintainers know so it can be fixed. See [good practices](#good-practices) regarding basic information for issues below.
### Request closing of issues
The Grafana project have a lot of open issues and the main goal is to only have issues open if their still relevant. If you find an issue that you think already have been resolved or no longer is relevant please report by adding a comment and explain why you think it should be closed including related issues (`#<issue number>`), if applicable, and optionally mention one of the maintainers.
### Investigate issues
See [investigation of issues](#investigation-of-issues).
### Vote on enhancements/bugs
Helping the Grafana project to know which issues are most important by users and the community is crucial for the success of the project. Read more about [prioritizing issues](#4-prioritization-of-issues) for details about how issues are being prioritized. The Grafana project use GitGub issues and reactions for collecting votes on enhancement and bugs.
**Please don't add `+1` issue comments or similar since that will notify everyone that have subscribed to an issue and it doesn't add any useful update, rather it creates a bad .**
If you want to show your interest or importance of an issue, please use [GitHub's reactions](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments).
### Report duplicates
If you find two issues describing the same bug/enhancement/feature please add a comment in one of the issue and explain which issues (`#<issue number>`) you think is a duplicate of another issue (`#<issue number>`).
### Suggest ideas for resolving bugs/enhancements
Related to how [issues are being prioritized](#4-prioritization-of-issues) it's important to help anyone that's interested in contributing code for resolving a bug or enhancement. This can be anything from getting started and setup the development environment to reference code and files where changes probably needs to be made and/or suggest ideas on how enhancements may function/be implemented.
Please read about how [help from the community](#5-requesting-help-from-the-community) may be requested when issues being triaged.
## 1. Find uncategorized issues
To get started with issue triage and finding issues that haven't been triaged you have two alternatives.
### Browse unlabeled issues
The easiest and straigt forward way of getting started and finding issues that haven't been triaged is to browse [unlabeled issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and starting from the bottom and working yourself to the top.
The easiest and straight forward way of getting started and finding issues that haven't been triaged is to browse [unlabeled issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+no%3Alabel) and starting from the bottom and working yourself to the top.
### Subscribe to all notifications
@@ -179,16 +124,18 @@ Depending on the issue, you might not feel all this information is needed. Use y
If the author provides the standard information but you are still unable to triage the issue, request additional information. Do this kindly and politely because you are asking for more of the author's time.
If the author does not respond requested information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided.
If the author does not respond to the requested information within the timespan of a week, close the issue with a kind note stating that the author can request for the issue to be reopened when the necessary information is provided.
When you feel you have all the information needed you're ready to [categorizing the issue](#3-categorizing-an-issue).
If you receive a notification with additional information provided but you are not anymore on issue triage and you feel you do not have time to handle it, you should delegate it to the current person on issue triage.
## 3. Categorizing an issue
An issue can have multiple of the following labels. Typically, a properly categorized issue should at least have:
- One label identifying its type (`type/*`).
- One or multiple labels identifying the functional areas of interest or component (`area/*`) and/or datasource (`datasource/*`), if applicable.
- One or multiple labels identifying the functional areas of interest or component (`area/*`) and/or data source (`datasource/*`), if applicable.
Label | Description
------- | --------
@@ -201,7 +148,7 @@ Label | Description
`type/works-as-intended` | A reported bug works as intended/by design.
`type/build-packaging` | Build or packaging problem or enhancement.
`area/*` | Subject is related to a functional area of interest or component.
`datasource/*` | Subject is related to a core datasource plugin.
`datasource/*` | Subject is related to a core data source plugin.
### Duplicate issue?
@@ -347,12 +294,21 @@ In many cases the issue author or community as a whole is more suitable to contr
When an issue has all basic information provided, but the triage responsible haven't been able to reproduce the reported problem at a first glance, the issue is labeled [Needs investigation](https://github.com/grafana/grafana/labels/needs%20investigation). Depending of the perceived severity and/or number of [upvotes](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments), the investigation will either be delegated to another maintainer for further investigation or either put on hold until someone else (maintainer or contributor) picks it up and eventually start investigating it.
Investigating issues can be a very time consuming task, especially for the maintainers given the huge number of combinations of plugins, datasources, platforms, databases, browsers, tools, hardware, integrations, versions and cloud services etc that are being used with Grafana. There are a certain amount of combinations that are more common than others and these are in general easier for maintainers to investigate.
Investigating issues can be a very time consuming task, especially for the maintainers given the huge number of combinations of plugins, data sources, platforms, databases, browsers, tools, hardware, integrations, versions and cloud services etc that are being used with Grafana. There are a certain amount of combinations that are more common than others and these are in general easier for maintainers to investigate.
For some other combinations there may not be possible at all for a maintainer to setup a proper test environment for being able to investigate. In these cases we really appreciate any help we can get from the community. Otherwise the issue is highly likely to be closed.
Even if you don't have the time or knowledge to investigate an issue we highly recommend that you [upvote](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) the issue if you happen to have the same problem. If you have further details that may help investigating the issue please provide as much information as possible.
## External PRs
Part of issue triage should also be triaging of external PRs. Main goal should be to make sure PRs from external contributors have an owner/reviewer and are not forgotten.
1. Check new external PRs which do not have a reviewer.
1. Check if there is a link to an existing issue.
1. If not and you know which issue it is solving add the link yourself, otherwise ask the author to link the issue or create one.
1. Assign a reviewer based on who was handling the linked issue or what code or feature does the PR touches (look at who was the last to make changes there if all else fails).
## Appendix
### Setting up Gmail filters

149
Makefile
View File

@@ -1,6 +1,10 @@
## This is a self-documented Makefile. For usage information, run `make help`:
##
## For more information, refer to https://suva.sh/posts/well-documented-makefiles/
-include local/Makefile
.PHONY: all deps-go deps-js deps build-go build-server build-cli build-js build build-docker-dev build-docker-full lint-go gosec revive golangci-lint go-vet test-go test-js test run clean devenv devenv-down revive-alerting
.PHONY: all deps-go deps-js deps build-go build-server build-cli build-js build build-docker-dev build-docker-full lint-go gosec revive golangci-lint go-vet test-go test-js test run run-frontend clean devenv devenv-down revive-alerting help
GO = GO111MODULE=on go
GO_FILES ?= ./pkg/...
@@ -8,77 +12,67 @@ SH_FILES ?= $(shell find ./scripts -name *.sh)
all: deps build
deps-go:
go run build.go setup
##@ Dependencies
deps-js: node_modules
deps-go: ## Install backend dependencies.
$(GO) run build.go setup
deps: deps-js
deps-js: node_modules ## Install frontend dependencies.
build-go:
deps: deps-js ## Install all dependencies.
node_modules: package.json yarn.lock ## Install node modules.
@echo "install frontend dependencies"
yarn install --pure-lockfile --no-progress
##@ Building
build-go: ## Build all Go binaries.
@echo "build go files"
GO111MODULE=on go run build.go build
$(GO) run build.go build
build-server:
build-server: ## Build Grafana server.
@echo "build server"
GO111MODULE=on go run build.go build-server
$(GO) run build.go build-server
build-cli:
build-cli: ## Build Grafana CLI application.
@echo "build in CI environment"
GO111MODULE=on go run build.go build-cli
$(GO) run build.go build-cli
build-js:
build-js: ## Build frontend assets.
@echo "build frontend"
yarn run build
build: build-go build-js
build: build-go build-js ## Build backend and frontend.
build-docker-dev:
@echo "build development container"
@echo "\033[92mInfo:\033[0m the frontend code is expected to be built already."
GO111MODULE=on go run build.go -goos linux -pkg-arch amd64 ${OPT} build pkg-archive latest
cp dist/grafana-latest.linux-x64.tar.gz packaging/docker
cd packaging/docker && docker build --tag grafana/grafana:dev .
scripts/go/bin/bra: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/bra github.com/unknwon/bra
build-docker-full:
@echo "build docker container"
docker build --tag grafana/grafana:dev .
run: scripts/go/bin/bra ## Build and run web server on filesystem changes.
@GO111MODULE=on scripts/go/bin/bra run
test-go:
run-frontend: deps-js ## Fetch js dependencies and watch frontend for rebuild
yarn start
##@ Testing
test-go: ## Run tests for backend.
@echo "test backend"
GO111MODULE=on go test -v ./pkg/...
$(GO) test -v ./pkg/...
test-js:
test-js: ## Run tests for frontend.
@echo "test frontend"
yarn test
test: test-go test-js
test: test-go test-js ## Run all tests.
clean:
@echo "cleaning"
rm -rf node_modules
rm -rf public/build
node_modules: package.json yarn.lock
@echo "install frontend dependencies"
yarn install --pure-lockfile --no-progress
##@ Linting
scripts/go/bin/revive: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/revive github.com/mgechev/revive
scripts/go/bin/gosec: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/gosec github.com/securego/gosec/cmd/gosec
scripts/go/bin/bra: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/bra github.com/Unknwon/bra
scripts/go/bin/golangci-lint: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint
revive: scripts/go/bin/revive
@echo "lint via revive"
@scripts/go/bin/revive \
@@ -92,13 +86,9 @@ revive-alerting: scripts/go/bin/revive
-formatter stylish \
./pkg/services/alerting/...
# TODO recheck the rules and leave only necessary exclusions
gosec: scripts/go/bin/gosec
@echo "lint via gosec"
@scripts/go/bin/gosec -quiet \
-exclude=G104,G107,G201,G202,G204,G301,G304,G401,G402,G501 \
-conf=./scripts/go/configs/gosec.json \
$(GO_FILES)
scripts/go/bin/golangci-lint: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint
golangci-lint: scripts/go/bin/golangci-lint
@echo "lint via golangci-lint"
@@ -106,19 +96,43 @@ golangci-lint: scripts/go/bin/golangci-lint
--config ./scripts/go/configs/.golangci.yml \
$(GO_FILES)
scripts/go/bin/gosec: scripts/go/go.mod
@cd scripts/go; \
$(GO) build -o ./bin/gosec github.com/securego/gosec/cmd/gosec
# TODO recheck the rules and leave only necessary exclusions
gosec: scripts/go/bin/gosec
@echo "lint via gosec"
@scripts/go/bin/gosec -quiet \
-exclude=G104,G107,G108,G201,G202,G204,G301,G304,G401,G402,G501 \
-conf=./scripts/go/configs/gosec.json \
$(GO_FILES)
go-vet:
@echo "lint via go vet"
@go vet $(GO_FILES)
@$(GO) vet $(GO_FILES)
lint-go: go-vet golangci-lint revive revive-alerting gosec
lint-go: go-vet golangci-lint revive revive-alerting gosec ## Run all code checks for backend.
# with disabled SC1071 we are ignored some TCL,Expect `/usr/bin/env expect` scripts
shellcheck: $(SH_FILES)
shellcheck: $(SH_FILES) ## Run checks for shell scripts.
@docker run --rm -v "$$PWD:/mnt" koalaman/shellcheck:stable \
$(SH_FILES) -e SC1071
$(SH_FILES) -e SC1071 -e SC2162
run: scripts/go/bin/bra
@scripts/go/bin/bra run
##@ Docker
build-docker-dev: ## Build Docker image for development (fast).
@echo "build development container"
@echo "\033[92mInfo:\033[0m the frontend code is expected to be built already."
$(GO) run build.go -goos linux -pkg-arch amd64 ${OPT} build pkg-archive latest
cp dist/grafana-latest.linux-x64.tar.gz packaging/docker
cd packaging/docker && docker build --tag grafana/grafana:dev .
build-docker-full: ## Build Docker image for development.
@echo "build docker container"
docker build --tag grafana/grafana:dev .
##@ Services
# create docker-compose file with provided sources and start them
# example: make devenv sources=postgres,openldap
@@ -126,19 +140,28 @@ ifeq ($(sources),)
devenv:
@printf 'You have to define sources for this command \nexample: make devenv sources=postgres,openldap\n'
else
devenv: devenv-down
devenv: devenv-down ## Start optional services, e.g. postgres, prometheus, and elasticsearch.
$(eval targets := $(shell echo '$(sources)' | tr "," " "))
@cd devenv; \
./create_docker_compose.sh $(targets) || \
(rm -rf docker-compose.yaml; exit 1)
(rm -rf {docker-compose.yaml,conf.tmp,.env}; exit 1)
@cd devenv; \
docker-compose up -d --build
endif
# drop down the envs
devenv-down:
devenv-down: ## Stop optional services.
@cd devenv; \
test -f docker-compose.yaml && \
docker-compose down || exit 0;
##@ Helpers
clean: ## Clean up intermediate build artifacts.
@echo "cleaning"
rm -rf node_modules
rm -rf public/build
help: ## Display this help.
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

View File

@@ -1,20 +1,19 @@
# Plugin Development
# Plugin development
This document is not meant as a complete guide for developing plugins but more as a changelog for changes in
Grafana that can impact plugin development. Whenever you as a plugin author encounter an issue with your plugin after
upgrading Grafana please check here before creating an issue.
## Links
## Plugin development resources
- [Datasource plugin written in TypeScript](https://github.com/grafana/typescript-template-datasource)
- [Simple JSON datasource plugin](https://github.com/grafana/simple-json-datasource)
- [Plugin development guide](http://docs.grafana.org/plugins/developing/development/)
- [Grafana plugin developer guide](http://docs.grafana.org/plugins/developing/development/)
- [Webpack Grafana plugin template project](https://github.com/CorpGlory/grafana-plugin-template-webpack)
- [Simple JSON datasource plugin](https://github.com/grafana/simple-json-datasource)
## Changes in v4.6
## Changes in Grafana v4.6
This version of Grafana has big changes that will impact a limited set of plugins. We moved from systemjs to webpack
for built-in plugins & everything internal. External plugins still use systemjs but now with a limited
for built-in plugins and everything internal. External plugins still use systemjs but now with a limited
set of Grafana components they can import. Plugins can depend on libs like lodash & moment and internal components
like before using the same import paths. However since everything in Grafana is no longer accessible, a few plugins could encounter issues when importing a Grafana dependency.
@@ -25,10 +24,10 @@ If you think we missed exposing a crucial lib or Grafana component let us know b
### Deprecated components
The angular directive `<spectrum-picker>` is now deprecated (will still work for a version more) but we recommend plugin authors
to upgrade to new `<color-picker color="ctrl.color" onChange="ctrl.onSparklineColorChange"></color-picker>`
upgrade to new `<color-picker color="ctrl.color" onChange="ctrl.onSparklineColorChange"></color-picker>`
## Changes in v6.0
## Changes in Grafana v6.0
### DashboardSrv.ts
If you utilize [DashboardSrv](https://github.com/grafana/grafana/commit/8574dca081002f36e482b572517d8f05fd44453f#diff-1ab99561f9f6a10e1fafcddc39bc1d65) in your plugin code, `dash` was renamed to `dashboard`
If you utilize [DashboardSrv](https://github.com/grafana/grafana/commit/8574dca081002f36e482b572517d8f05fd44453f#diff-1ab99561f9f6a10e1fafcddc39bc1d65) in your plugin code, `dash` was renamed to `dashboard`.

210
README.md
View File

@@ -1,198 +1,46 @@
# [Grafana](https://grafana.com) [![Circle CI](https://circleci.com/gh/grafana/grafana.svg?style=svg)](https://circleci.com/gh/grafana/grafana) [![Go Report Card](https://goreportcard.com/badge/github.com/grafana/grafana)](https://goreportcard.com/report/github.com/grafana/grafana) [![codecov](https://codecov.io/gh/grafana/grafana/branch/master/graph/badge.svg)](https://codecov.io/gh/grafana/grafana)
![Grafana](docs/logo-horizontal.png)
[Website](https://grafana.com) |
[Twitter](https://twitter.com/grafana) |
[Community & Forum](https://community.grafana.com)
The open-source platform for monitoring and observability.
Grafana is an open source, feature rich metrics dashboard and graph editor for
Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
[![License](https://img.shields.io/github/license/grafana/grafana)](LICENSE)
[![Circle CI](https://img.shields.io/circleci/build/gh/grafana/grafana)](https://circleci.com/gh/grafana/grafana)
[![Go Report Card](https://goreportcard.com/badge/github.com/grafana/grafana)](https://goreportcard.com/report/github.com/grafana/grafana)
<!---
![](http://docs.grafana.org/assets/img/features/dashboard_ex1.png)
-->
Grafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data driven culture:
## Installation
- **Visualize:** Fast and flexible client side graphs with a multitude of options. Panel plugins for many different way to visualize metrics and logs.
- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.
- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.
- **Alerting:** Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.
- **Mixed Data Sources:** Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.
Head to [docs.grafana.org](http://docs.grafana.org/installation/) for documentation or [download](https://grafana.com/get) to get the latest release.
## Get started
## Documentation & Support
- [Get Grafana](https://grafana.com/get)
- [Installation guides](http://docs.grafana.org/installation/)
Be sure to read the [getting started guide](http://docs.grafana.org/guides/gettingstarted/) and the other feature guides.
Unsure if Grafana is for you? Watch Grafana in action on [play.grafana.org](https://play.grafana.org/)!
## Run from master
## Documentation
If you want to build a package yourself, or contribute - here is a guide for how to do that. You can always find
the latest master builds [here](https://grafana.com/grafana/download)
The Grafana documentation is available at [grafana.com/docs](https://grafana.com/docs/).
### Dependencies
## Contributing
- Go (Latest Stable)
- Node.js LTS
- yarn [`npm install -g yarn`]
If you're interested in contributing to the Grafana project:
### Get the project
- Start by reading the [Contributing guide](/CONTRIBUTING.md).
- Learn how to set up your local environment, in our [Developer guide](/contribute/developer-guide.md).
- Explore our [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22).
**The project located in the go-path will be your working directory.**
## Get involved
```bash
go get github.com/grafana/grafana
cd $GOPATH/src/github.com/grafana/grafana
```
### Run and rebuild on source change
#### Backend
To run the backend and rebuild on source change:
```bash
make run
```
#### Frontend
Rebuild on file change, and serve them by Grafana's webserver (http://localhost:3000):
```bash
yarn start
```
Build the assets, rebuild on file change with Hot Module Replacement (HMR), and serve them by webpack-dev-server (http://localhost:3333):
```bash
yarn start:hot
# OR set a theme
env GRAFANA_THEME=light yarn start:hot
```
_Note: HMR for Angular is not supported. If you edit files in the Angular part of the app, the whole page will reload._
Run tests and rebuild on source change:
```bash
yarn jest
```
**Open grafana in your browser (default: e.g. `http://localhost:3000`) and login with admin user (default: `user/pass = admin/admin`).**
### Building
#### The backend
```bash
go run build.go setup
go run build.go build
```
#### Frontend assets
_For this you need Node.js (LTS version)._
```bash
yarn install --pure-lockfile
```
### Building a Docker image
There are two different ways to build a Grafana docker image. If your machine is setup for Grafana development and you run linux/amd64 you can build just the image. Otherwise, there is the option to build Grafana completely within Docker.
Run the image you have built using: `docker run --rm -p 3000:3000 grafana/grafana:dev`
#### Building on linux/amd64 (fast)
1. Build the frontend `go run build.go build-frontend`
2. Build the docker image `make build-docker-dev`
The resulting image will be tagged as `grafana/grafana:dev`
#### Building anywhere (slower)
Choose this option to build on platforms other than linux/amd64 and/or not have to setup the Grafana development environment.
1. `make build-docker-full` or `docker build -t grafana/grafana:dev .`
The resulting image will be tagged as `grafana/grafana:dev`
Notice: If you are using Docker for MacOS, be sure to set the memory limit to be larger than 2 GiB (at docker -> Preferences -> Advanced), otherwise `grunt build` may fail.
## Development
### Dev config
Create a custom.ini in the conf directory to override default configuration options.
You only need to add the options you want to override. Config files are applied in the order of:
1. grafana.ini
1. custom.ini
In your custom.ini uncomment (remove the leading `;`) sign. And set `app_mode = development`.
### Running tests
#### Frontend
Execute all frontend tests
```bash
yarn test
```
Writing & watching frontend tests
- Start watcher: `yarn jest`
- Jest will run all test files that end with the name ".test.ts"
#### Backend
```bash
# Run Golang tests using sqlite3 as database (default)
go test ./pkg/...
# Run Golang tests using mysql as database - convenient to use /docker/blocks/mysql_tests
GRAFANA_TEST_DB=mysql go test ./pkg/...
# Run Golang tests using postgres as database - convenient to use /docker/blocks/postgres_tests
GRAFANA_TEST_DB=postgres go test ./pkg/...
```
#### End-to-end
Execute all end-to-end tests
```bash
yarn e2e-tests
```
Execute all end-to-end tests using using a specific url
```bash
ENV BASE_URL=http://localhost:3333 yarn e2e-tests
```
Debugging all end-to-end tests (BROWSER=1 will start the browser and SLOWMO=1 will delay each puppeteer operation by 100ms)
```bash
ENV BROWSER=1 SLOWMO=1 yarn e2e-tests
```
### Datasource and dashboard provisioning
[Here](https://github.com/grafana/grafana/tree/master/devenv) you can find helpful scripts and docker-compose setup
that will populate your dev environment for quicker testing end experimenting.
## Contribute
If you have any ideas for improvement or have found a bug, do not hesitate to open an issue.
And if you have time, clone this repo and submit a pull request to help me make Grafana
the kickass metrics & devops dashboard we all dream about!
Read the [contributing](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md) guide then check the [`beginner friendly`](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3A%22beginner+friendly%22) label to find issues that are easy and that we would like help with.
## Plugin development
Checkout the [Plugin Development Guide](http://docs.grafana.org/plugins/developing/development/) and checkout the [PLUGIN_DEV.md](https://github.com/grafana/grafana/blob/master/PLUGIN_DEV.md) file for changes in Grafana that relate to
plugin development.
- Follow [@grafana on Twitter](https://twitter.com/grafana/)
- Read and subscribe to the [Grafana blog](https://grafana.com/blog/)
- If you have a specific question, check out our [discussion forums](https://community.grafana.com/).
- For general discussions, join us on the [official Slack](http://slack.raintank.io/) team.
## License
Grafana is distributed under [Apache 2.0 License](https://github.com/grafana/grafana/blob/master/LICENSE).
Grafana is distributed under the [Apache 2.0 License](https://github.com/grafana/grafana/blob/master/LICENSE).

View File

@@ -1,4 +1,5 @@
This roadmap is a tentative plan for the core development team. Things change constantly as PRs come in and priorities change.
But it will give you an idea of our current vision and plan.
# Roadmap
The roadmap is a tentative plan for the core development team. Things change constantly as pull requests come in and priorities change, but it will give you an idea of our current vision and plan.
Go to the Issues tab on GitHub. There you will find, at the top, 3 pinned roadmap issues.
To view the Roadmap, go to the Issues tab on GitHub. There you will find three roadmap issues pinned at the top.

View File

@@ -1,7 +1,8 @@
Reporting Security Issues
------------------
# Reporting security issues
If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address. We would prefer that you encrypt your message to us; please use our PGP key. The key fingerprint is:
If you think you have found a security vulnerability, please send a report to [security@grafana.com](mailto:security@grafana.com). This address can be used for all of Grafana Labs's open source and commercial products (including but not limited to Grafana, Grafana Cloud, Grafana Enterprise, and grafana.com). We can accept only vulnerability reports at this address.
Please encrypt your message to us; please use our PGP key. The key fingerprint is:
F988 7BEA 027A 049F AE8E 5CAA D125 8932 BE24 C5CA
@@ -9,9 +10,11 @@ The key is available from [pgp.mit.edu](https://pgp.mit.edu/pks/lookup?op=get&se
Grafana Labs will send you a response indicating the next steps in handling your report. After the initial reply to your report, the security team will keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance.
**Important:** We ask you to not disclose the vulnerability before it have been fixed and announced, unless you have got a response from the Grafana Labs security team that you can do that.
**Important:** We ask you to not disclose the vulnerability before it have been fixed and announced, unless you received a response from the Grafana Labs security team that you can do so.
### Security Announcements
## Security announcements
We maintain a category on the community site called [Security Announcements](https://community.grafana.com/c/security-announcements),
where we will post a summary, remediation, and mitigation details for any patch containing security fixes. You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/security-announcements.rss).
where we will post a summary, remediation, and mitigation details for any patch containing security fixes.
You can also subscribe to email updates to this category if you have a grafana.com account and sign on to the community site or track updates via an [RSS feed](https://community.grafana.com/c/security-announcements.rss).

View File

@@ -1,9 +1,10 @@
Need help or support?
# Get Grafana help
------------------
First, check the official [Grafana documentation](https://grafana.com/docs/).
If you require further help or support then ask a question in the [Grafana community site](https://community.grafana.com/) or [Grafana Slack](http://slack.raintank.io/). You can also search the community site for previously answered questions, in case someone already had your problem and got help.
**Please note:**
- Only submit issues for bug reports, feature requests or enhancements.
- Grafana project uses GitHub mainly for tracking bugs and feature requests.
- Asking a question by opening an issue will directly result in issue being closed.
If you require help or support then ask a question and/or find existing questions/answers in the [Grafana community site](https://community.grafana.com/).
- The Grafana project uses GitHub mainly for tracking bugs and feature requests.
- Do not open an issue just to ask a question. The issue will be closed immediately.
- Only submit issues for bug reports, feature requests, or enhancements.

View File

@@ -1,4 +1,4 @@
# Guide to Upgrading Dependencies
# Guide to upgrading dependencies
Upgrading Go or Node.js requires making changes in many different files. See below for a list and explanation for each.
@@ -16,7 +16,7 @@ Upgrading Go or Node.js requires making changes in many different files. See bel
- Appveyor
- Dockerfile
## Go Dependencies
## Go dependencies
The Grafana project uses [Go modules](https://golang.org/cmd/go/#hdr-Modules__module_versions__and_more) to manage dependencies on external packages. This requires a working Go environment with version 1.11 or greater installed.
@@ -46,7 +46,7 @@ GO111MODULE=on go mod vendor
You have to commit the changes to `go.mod`, `go.sum` and the `vendor/` directory before submitting the pull request.
## Node.js Dependencies
## Node.js dependencies
Updated using `yarn`.

View File

@@ -33,6 +33,7 @@ var (
goos string
gocc string
cgo bool
libc string
pkgArch string
version string = "v1"
// deb & rpm does not support semver so have to handle their version a little differently
@@ -51,6 +52,7 @@ var (
skipRpmGen bool = false
skipDebGen bool = false
printGenVersion bool = false
modVendor bool = true
)
func main() {
@@ -64,10 +66,12 @@ func main() {
flag.StringVar(&goarch, "goarch", runtime.GOARCH, "GOARCH")
flag.StringVar(&goos, "goos", runtime.GOOS, "GOOS")
flag.StringVar(&gocc, "cc", "", "CC")
flag.StringVar(&libc, "libc", "", "LIBC")
flag.BoolVar(&cgo, "cgo-enabled", cgo, "Enable cgo")
flag.StringVar(&pkgArch, "pkg-arch", "", "PKG ARCH")
flag.StringVar(&phjsToRelease, "phjs", "", "PhantomJS binary")
flag.BoolVar(&race, "race", race, "Use race detector")
flag.BoolVar(&modVendor, "modVendor", modVendor, "Go modules use vendor folder")
flag.BoolVar(&includeBuildId, "includeBuildId", includeBuildId, "IncludeBuildId in package name")
flag.BoolVar(&enterprise, "enterprise", enterprise, "Build enterprise version of Grafana")
flag.StringVar(&buildIdRaw, "buildId", "0", "Build ID from CI system")
@@ -104,7 +108,7 @@ func main() {
case "setup":
setup()
case "build-srv":
case "build-srv", "build-server":
clean()
build("grafana-server", "./pkg/cmd/grafana-server", []string{})
@@ -112,10 +116,6 @@ func main() {
clean()
build("grafana-cli", "./pkg/cmd/grafana-cli", []string{})
case "build-server":
clean()
build("grafana-server", "./pkg/cmd/grafana-server", []string{})
case "build":
//clean()
for _, binary := range binaries {
@@ -174,12 +174,15 @@ func makeLatestDistCopies() {
}
latestMapping := map[string]string{
"_amd64.deb": "dist/grafana_latest_amd64.deb",
".x86_64.rpm": "dist/grafana-latest-1.x86_64.rpm",
".linux-amd64.tar.gz": "dist/grafana-latest.linux-x64.tar.gz",
".linux-armv7.tar.gz": "dist/grafana-latest.linux-armv7.tar.gz",
".linux-armv6.tar.gz": "dist/grafana-latest.linux-armv6.tar.gz",
".linux-arm64.tar.gz": "dist/grafana-latest.linux-arm64.tar.gz",
"_amd64.deb": "dist/grafana_latest_amd64.deb",
".x86_64.rpm": "dist/grafana-latest-1.x86_64.rpm",
".linux-amd64.tar.gz": "dist/grafana-latest.linux-x64.tar.gz",
".linux-amd64-musl.tar.gz": "dist/grafana-latest.linux-x64-musl.tar.gz",
".linux-armv7.tar.gz": "dist/grafana-latest.linux-armv7.tar.gz",
".linux-armv7-musl.tar.gz": "dist/grafana-latest.linux-armv7-musl.tar.gz",
".linux-armv6.tar.gz": "dist/grafana-latest.linux-armv6.tar.gz",
".linux-arm64.tar.gz": "dist/grafana-latest.linux-arm64.tar.gz",
".linux-arm64-musl.tar.gz": "dist/grafana-latest.linux-arm64-musl.tar.gz",
}
for _, file := range files {
@@ -453,6 +456,9 @@ func gruntBuildArg(task string) []string {
if pkgArch != "" {
args = append(args, fmt.Sprintf("--arch=%v", pkgArch))
}
if libc != "" {
args = append(args, fmt.Sprintf("--libc=%s", libc))
}
if phjsToRelease != "" {
args = append(args, fmt.Sprintf("--phjsToRelease=%v", phjsToRelease))
}
@@ -479,9 +485,13 @@ func test(pkg string) {
}
func build(binaryName, pkg string, tags []string) {
binary := fmt.Sprintf("./bin/%s-%s/%s", goos, goarch, binaryName)
libcPart := ""
if libc != "" {
libcPart = fmt.Sprintf("-%s", libc)
}
binary := fmt.Sprintf("./bin/%s-%s%s/%s", goos, goarch, libcPart, binaryName)
if isDev {
//don't include os and arch in output path in dev environment
//don't include os/arch/libc in output path in dev environment
binary = fmt.Sprintf("./bin/%s", binaryName)
}
@@ -499,6 +509,9 @@ func build(binaryName, pkg string, tags []string) {
if race {
args = append(args, "-race")
}
if modVendor {
args = append(args, "-mod=vendor")
}
args = append(args, "-o", binary)
args = append(args, pkg)
@@ -506,7 +519,11 @@ func build(binaryName, pkg string, tags []string) {
if !isDev {
setBuildEnv()
runPrint("go", "version")
fmt.Printf("Targeting %s/%s\n", goos, goarch)
libcPart := ""
if libc != "" {
libcPart = fmt.Sprintf("/%s", libc)
}
fmt.Printf("Targeting %s/%s%s\n", goos, goarch, libcPart)
}
runPrint("go", args...)
@@ -528,6 +545,9 @@ func ldflags() string {
b.WriteString(fmt.Sprintf(" -X main.commit=%s", getGitSha()))
b.WriteString(fmt.Sprintf(" -X main.buildstamp=%d", buildStamp()))
b.WriteString(fmt.Sprintf(" -X main.buildBranch=%s", getGitBranch()))
if v := os.Getenv("LDFLAGS"); v != "" {
b.WriteString(fmt.Sprintf(" -extldflags \"%s\"", v))
}
return b.String()
}
@@ -592,6 +612,11 @@ func getGitSha() string {
}
func buildStamp() int64 {
// use SOURCE_DATE_EPOCH if set.
if s, _ := strconv.ParseInt(os.Getenv("SOURCE_DATE_EPOCH"), 10, 64); s > 0 {
return s
}
bs, err := runError("git", "show", "-s", "--format=%ct")
if err != nil {
return time.Now().Unix()
@@ -613,6 +638,7 @@ func runError(cmd string, args ...string) ([]byte, error) {
func runPrint(cmd string, args ...string) {
log.Println(cmd, strings.Join(args, " "))
ecmd := exec.Command(cmd, args...)
ecmd.Env = append(os.Environ(), "GO111MODULE=on")
ecmd.Stdout = os.Stdout
ecmd.Stderr = os.Stderr
err := ecmd.Run()

View File

@@ -28,7 +28,7 @@ provisioning = conf/provisioning
#################################### Server ##############################
[server]
# Protocol (http, https, socket)
# Protocol (http, https, h2, socket)
protocol = http
# The ip address to bind to, empty will bind to all interfaces
@@ -116,7 +116,7 @@ type = database
# cache connectionstring options
# database: will use Grafana primary database.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0`. Only addr is required.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# memcache: 127.0.0.1:11211
connstr =
@@ -155,6 +155,9 @@ google_tag_manager_id =
#################################### Security ############################
[security]
# disable creation of admin user on first start of grafana
disable_initial_admin_creation = false
# default admin user, created on startup
admin_user = admin
@@ -176,7 +179,7 @@ disable_brute_force_login_protection = false
# set to true if you host Grafana behind HTTPS. default is false.
cookie_secure = false
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict" and "none"
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
cookie_samesite = lax
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
@@ -315,6 +318,7 @@ scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
allowed_domains =
team_ids =
allowed_organizations =
@@ -328,6 +332,7 @@ scopes = api
auth_url = https://gitlab.com/oauth/authorize
token_url = https://gitlab.com/oauth/token
api_url = https://gitlab.com/api/v4
allowed_domains =
allowed_groups =
#################################### Google Auth #########################
@@ -370,16 +375,18 @@ client_id = some_id
client_secret = some_secret
scopes = user:email
email_attribute_name = email:primary
email_attribute_path =
role_attribute_path =
auth_url =
token_url =
api_url =
allowed_domains =
team_ids =
allowed_organizations =
tls_skip_verify_insecure = false
tls_client_cert =
tls_client_key =
tls_client_ca =
send_client_credentials_via_post = false
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
@@ -432,9 +439,12 @@ enabled = false
header_name = X-WEBAUTH-USER
header_property = username
auto_sign_up = true
# Deprecated, use sync_ttl instead
ldap_sync_ttl = 60
sync_ttl = 60
whitelist =
headers =
enable_login_token = false
#################################### Auth LDAP ###########################
[auth.ldap]
@@ -583,6 +593,8 @@ notification_timeout_seconds = 30
# Default setting for max attempts to sending alert notifications. Default value is 3
max_attempts = 3
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
min_interval_seconds = 1
#################################### Explore #############################
[explore]
@@ -592,8 +604,10 @@ enabled = true
#################################### Internal Grafana Metrics ############
# Metrics available at HTTP API Url /metrics
[metrics]
enabled = true
interval_seconds = 10
enabled = true
interval_seconds = 10
# Disable total stats (stat_totals_*) metrics to be generated
disable_total_stats = false
#If both are set, basic auth will be required for the metrics endpoint.
basic_auth_username =
@@ -605,6 +619,7 @@ basic_auth_password =
address =
prefix = prod.grafana.%(instance_name)s.
#################################### Grafana.com integration ##########################
[grafana_net]
url = https://grafana.com
@@ -635,10 +650,13 @@ disable_shared_zipkin_spans = false
#################################### External Image Storage ##############
[external_image_storage]
# Used for uploading images to public servers so they can be included in slack/email messages.
# You can choose between (s3, webdav, gcs, azure_blob, local)
provider =
[external_image_storage.s3]
endpoint =
path_style_access =
bucket_url =
bucket =
region =
@@ -666,8 +684,10 @@ container_name =
# does not require any configuration
[rendering]
# Options to configure external image rendering server like https://github.com/grafana/grafana-image-renderer
# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
callback_url =
[panels]
@@ -681,3 +701,7 @@ app_tls_skip_verify_insecure = false
[enterprise]
license_path =
[feature_toggles]
# enable features, separated by spaces
enable =

View File

@@ -47,7 +47,7 @@ email = "email"
# Map ldap groups to grafana org roles
[[servers.group_mappings]]
group_dn = "cn=admins,dc=grafana,dc=org"
group_dn = "cn=admins,ou=groups,dc=grafana,dc=org"
org_role = "Admin"
# To make user an instance admin (Grafana Admin) uncomment line below
# grafana_admin = true
@@ -55,7 +55,7 @@ org_role = "Admin"
# org_id = 1
[[servers.group_mappings]]
group_dn = "cn=users,dc=grafana,dc=org"
group_dn = "cn=users,ou=groups,dc=grafana,dc=org"
org_role = "Editor"
[[servers.group_mappings]]

View File

@@ -28,7 +28,7 @@
#################################### Server ####################################
[server]
# Protocol (http, https, socket)
# Protocol (http, https, h2, socket)
;protocol = http
# The ip address to bind to, empty will bind to all interfaces
@@ -46,7 +46,7 @@
# The full public facing url you use in browser, used for redirects and emails
# If you use reverse proxy and sub path specify full url (with sub path)
;root_url = http://localhost:3000
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.
;serve_from_sub_path = false
@@ -87,6 +87,11 @@
# For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable
;ca_cert_path =
;client_key_path =
;client_cert_path =
;server_cert_name =
# For "sqlite3" only, path relative to data_path setting
;path = grafana.db
@@ -112,7 +117,7 @@
# cache connectionstring options
# database: will use Grafana primary database.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0`. Only addr is required.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# memcache: 127.0.0.1:11211
;connstr =
@@ -151,6 +156,9 @@
#################################### Security ####################################
[security]
# disable creation of admin user on first start of grafana
;disable_initial_admin_creation = false
# default admin user, created on startup
;admin_user = admin
@@ -172,7 +180,7 @@
# set to true if you host Grafana behind HTTPS. default is false.
;cookie_secure = false
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict" and "none"
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
;cookie_samesite = lax
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
@@ -232,9 +240,15 @@
# Set to true to automatically assign new users to the default organization (id 1)
;auto_assign_org = true
# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
;auto_assign_org_id = 1
# Default role new users will be automatically assigned (if disabled above is set to true)
;auto_assign_org_role = Viewer
# Require email validation before sign up completes
;verify_email_enabled = false
# Background text for the user field on the login page
;login_hint = email or username
;password_hint = password
@@ -279,6 +293,9 @@
# This setting is ignored if multiple OAuth providers are configured.
;oauth_auto_login = false
# limit of api_key seconds to live before expiration
;api_key_max_seconds_to_live = -1
#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
@@ -300,9 +317,23 @@
;auth_url = https://github.com/login/oauth/authorize
;token_url = https://github.com/login/oauth/access_token
;api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
;allowed_organizations =
#################################### GitLab Auth #########################
[auth.gitlab]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = api
;auth_url = https://gitlab.com/oauth/authorize
;token_url = https://gitlab.com/oauth/token
;api_url = https://gitlab.com/api/v4
;allowed_domains =
;allowed_groups =
#################################### Google Auth ##########################
[auth.google]
;enabled = false
@@ -314,6 +345,16 @@
;token_url = https://accounts.google.com/o/oauth2/token
;api_url = https://www.googleapis.com/oauth2/v1/userinfo
;allowed_domains =
;hosted_domain =
#################################### Grafana.com Auth ####################
[auth.grafana_com]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = user:email
;allowed_organizations =
#################################### Generic OAuth ##########################
[auth.generic_oauth]
@@ -323,20 +364,20 @@
;client_id = some_id
;client_secret = some_secret
;scopes = user:email,read:org
;email_attribute_name = email:primary
;email_attribute_path =
;auth_url = https://foo.bar/login/oauth/authorize
;token_url = https://foo.bar/login/oauth/access_token
;api_url = https://foo.bar/user
;allowed_domains =
;team_ids =
;allowed_organizations =
;role_attribute_path =
;tls_skip_verify_insecure = false
;tls_client_cert =
;tls_client_key =
;tls_client_ca =
; Set to true to enable sending client_id and client_secret via POST body instead of Basic authentication HTTP header
; This might be required if the OAuth provider is not RFC6749 compliant, only supporting credentials passed via POST payload
;send_client_credentials_via_post = false
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
# Defaults to false. If true, the feature is enabled.
@@ -378,14 +419,9 @@
# Friendly name or name of the attribute within the SAML assertion to use as the user's email
;assertion_attribute_email = mail
#################################### Grafana.com Auth ####################
[auth.grafana_com]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = user:email
;allowed_organizations =
#################################### Basic Auth ##########################
[auth.basic]
;enabled = true
#################################### Auth Proxy ##########################
[auth.proxy]
@@ -393,13 +429,11 @@
;header_name = X-WEBAUTH-USER
;header_property = username
;auto_sign_up = true
;ldap_sync_ttl = 60
;sync_ttl = 60
;whitelist = 192.168.1.1, 192.168.2.1
;headers = Email:X-User-Email, Name:X-User-Name
#################################### Basic Auth ##########################
[auth.basic]
;enabled = true
# Read the auth proxy docs for details on what the setting below enables
;enable_login_token = false
#################################### Auth LDAP ##########################
[auth.ldap]
@@ -417,7 +451,7 @@
;enabled = false
;host = localhost:25
;user =
# If the password contains # or ; you have to wrap it with trippel quotes. Ex """#password;"""
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
;password =
;cert_file =
;key_file =
@@ -429,6 +463,7 @@
[emails]
;welcome_email_on_sign_up = false
;templates_pattern = emails/*.html
#################################### Logging ##########################
[log]
@@ -487,6 +522,41 @@
# Syslog tag. By default, the process' argv[0] is used.
;tag =
#################################### Usage Quotas ########################
[quota]
; enabled = false
#### set quotas to -1 to make unlimited. ####
# limit number of users per Org.
; org_user = 10
# limit number of dashboards per Org.
; org_dashboard = 100
# limit number of data_sources per Org.
; org_data_source = 10
# limit number of api_keys per Org.
; org_api_key = 10
# limit number of orgs a user can create.
; user_org = 10
# Global limit of users.
; global_user = -1
# global limit of orgs.
; global_org = -1
# global limit of dashboards
; global_dashboard = -1
# global limit of api_keys
; global_api_key = -1
# global limit on number of logged in users.
; global_session = -1
#################################### Alerting ############################
[alerting]
# Disable alerting engine & UI features
@@ -514,6 +584,9 @@
# Default setting for max attempts to sending alert notifications. Default value is 3
;max_attempts = 3
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
;min_interval_seconds = 1
#################################### Explore #############################
[explore]
# Enable the Explore section
@@ -524,9 +597,14 @@
[metrics]
# Disable / Enable internal metrics
;enabled = true
# Publish interval
# Graphite Publish interval
;interval_seconds = 10
# Disable total stats (stat_totals_*) metrics to be generated
;disable_total_stats = false
#If both are set, basic auth will be required for the metrics endpoint.
; basic_auth_username =
; basic_auth_password =
# Send internal metrics to Graphite
[metrics.graphite]
@@ -534,6 +612,11 @@
;address =
;prefix = prod.grafana.%(instance_name)s.
#################################### Grafana.com integration ##########################
# Url used to import dashboards directly from Grafana.com
[grafana_com]
;url = https://grafana.com
#################################### Distributed tracing ############
[tracing.jaeger]
# Enable by setting the address sending traces to jaeger (ex localhost:6831)
@@ -556,11 +639,6 @@
# Not disabling is the most common setting when using Zipkin elsewhere in your infrastructure.
;disable_shared_zipkin_spans = false
#################################### Grafana.com integration ##########################
# Url used to import dashboards directly from Grafana.com
[grafana_com]
;url = https://grafana.com
#################################### External image storage ##########################
[external_image_storage]
# Used for uploading images to public servers so they can be included in slack/email messages.
@@ -568,6 +646,8 @@
;provider =
[external_image_storage.s3]
;endpoint =
;path_style_access =
;bucket =
;region =
;path =
@@ -594,14 +674,12 @@
# does not require any configuration
[rendering]
# Options to configure external image rendering server like https://github.com/grafana/grafana-image-renderer
# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
;server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
;callback_url =
[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =
[panels]
# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
;disable_sanitize_html = false
@@ -609,3 +687,11 @@
[plugins]
;enable_alpha = false
;app_tls_skip_verify_insecure = false
[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =
[feature_toggles]
# enable features, separated by spaces
;enable =

16
contribute/README.md Normal file
View File

@@ -0,0 +1,16 @@
# Contribute
This directory contains guides for contributors to the Grafana project.
- [Create a pull request](create-pull-request.md)
- [Contributing documentation](documentation.md)
- [Developer guide](developer-guide.md)
- [Triage issues](triage-issues.md)
The `style-guides` directory contains style guides for the Grafana software project and documentation.
- [Backend style guide](style-guides/backend.md) for how to style and format backend functionality and code.
- [Documentation style guide](style-guides/documentation-style-guide.md) for how to style and format documentation.
- [Frontend style guide](style-guides/frontend.md) for how to style and format the user-facing functionality and code.
- [Redux framework](style-guides/redux.md) for designing the Grafana redux framework.
- [Themes style guide](style-guides/themes.md) for designing and updating Grafana themes.

View File

@@ -0,0 +1,10 @@
# Architecture
Are you looking to take on contributions with bigger impact? These guides help you get a better understanding of the structure and design of the Grafana codebase.
Learn more about the backend architecture:
- Part 1: [Services](services.md)
- Part 2: [Communication](communication.md)
- Part 3: [Database](database.md)

View File

@@ -0,0 +1,123 @@
# Communication
Grafana uses a _bus_ to pass messages between different parts of the application. All communication over the bus happens synchronously.
There are three types of messages: _events_, _commands_, and _queries_.
## Events
An event is something that happened in the past. Since an event has already happened, you can't change it. Instead, you can react to events by triggering additional application logic to be run, whenever they occur.
> Because they happened in the past, event names are written in past tense, such as `UserCreated`, and `OrgUpdated`.
### Subscribe to an event
In order to react to an event, you first need to _subscribe_ to it.
To subscribe to an event, register an _event listener_ in the service's `Init` method:
```go
func (s *MyService) Init() error {
s.bus.AddEventListener(s.UserCreated)
return nil
}
func (s *MyService) UserCreated(event *events.UserCreated) error {
// ...
}
```
**Tip:** Browse the available events in the `events` package.
### Publish an event
If you want to let other parts of the application react to changes in a service, you can publish your own events:
```go
event := &events.StickersSentEvent {
UserID: "taylor",
Count: 1,
}
if err := s.bus.Publish(event); err != nil {
return err
}
```
## Commands
A command is a request for an action to be taken. Unlike an event's fire-and-forget approach, a command can fail as it is handled. The handler will then return an error.
> Because we request an operation to be performed, command are written in imperative mood, such as `CreateFolderCommand`, and `DeletePlaylistCommand`.
### Dispatch a command
To dispatch a command, pass the object to the `Dispatch` method:
```go
cmd := &models.SendStickersCommand {
UserID: "taylor",
Count: 1,
}
if err := s.bus.Dispatch(cmd); err != nil {
if err == bus.ErrHandlerNotFound {
return nil
}
return err
}
```
**Note:** `Dispatch` will return an error if no handler is registered for that command.
**Tip:** Browse the available commands in the `models` package.
### Handle commands
Let others parts of the application dispatch commands to a service, by registering a _command handler_:
To handle a command, register a command handler in the `Init` function.
```go
func (s *MyService) Init() error {
s.bus.AddHandler(s.SendStickers)
return nil
}
func (s *MyService) SendStickers(cmd *models.SendStickersCommand) error {
// ...
}
```
**Note:** The handler method may return an error if unable to complete the command.
## Queries
A command handler can optionally populate the command sent it. This pattern is commonly used to implement _queries_.
### Making a query
To make a query, dispatch the query instance just like you would a command. When the `Dispatch` method returns, the `Results` field contains the result of the query.
```go
query := &models.FindDashboardQuery{
ID: "foo",
}
if err := bus.Dispatch(query); err != nil {
return err
}
// The query now contains a result.
for _, item := range query.Results {
// ...
}
```
### Return query results
To return results for a query, set any of the fields on the query argument before returning:
```go
func (s *MyService) FindDashboard(query *models.FindDashboardQuery) error {
// ...
query.Result = dashboard
return nil
}
```

View File

@@ -0,0 +1,123 @@
# Database
Grafana uses a database to persist settings between restarts. In fact, if you don't specify one, Grafana creates a [SQLite3](https://www.sqlite.org/) database file on your local disk. This guide explains how to store and retrieve data from the database.
Grafana supports the [following databases](https://grafana.com/docs/installation/requirements/#database):
- [MySQL](https://www.mysql.com/)
- [PostgreSQL](https://www.postgresql.org/)
- [SQLite3](https://www.sqlite.org/)
Grafana uses the [XORM](https://xorm.io) framework for persisting objects to the database. For more information on how to use XORM, refer to the [documentation](http://gobook.io/read/github.com/go-xorm/manual-en-US/).
[Services](services.md) don't use XORM directly. Instead, services use the _SQL store_, a special type of service that provides an abstraction for the database layer. There are two ways of using the `sqlstore`: using `sqlstore` handlers, and using the `SqlStore` instance.
## `sqlstore` handlers
> **Deprecated:** We are deprecating `sqlstore` handlers in favor of using the `SqlStore` object directly in each service. Since most services still use the `sqlstore` handlers, we still want to explain how they work.
The `sqlstore` package allows you to register [command handlers](communication.md#handle-commands) that either store, or retrieve objects from the database. `sqlstore` handlers are similar to services:
- [Services](services.md) are command handlers that _contain business logic_.
- `sqlstore` handlers are command handlers that _access the database_.
### Register a `sqlstore` handler
> **Deprecated:** Refer to the [deprecation note for `sqlstore` handlers](#sqlstore-handlers).
To register a handler:
- Create a new file `myrepo.go` in the `sqlstore` package.
- Create a [command handler](communication.md#handle-commands).
- Register the handler in the `init` function:
```go
func init() {
bus.AddHandler("sql", DeleteDashboard)
}
func DeleteDashboard(cmd *models.DeleteDashboardCommand) error {
return inTransaction(func(sess *DBSession) error {
_, err := sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?", cmd.DashboardID)
return err
})
}
```
Here, `inTransaction` is a helper function in the `sqlstore` package that provides a session, that lets you execute SQL statements.
## `SqlStore`
As opposed to a `sqlstore` handler, the `SqlStore` is a service itself. The `SqlStore` has the same responsibility however: to store and retrieve objects, to and from the database.
To use the `SqlStore`, inject the `SQLStore` in your service struct:
```go
type MyService struct {
SQLStore *sqlstore.SqlStore `inject:""`
}
```
You can now make SQL queries in any of your [command handlers](communication.md#handle-commands) or [event listeners](communication.md#subscribe-to-an-event):
```go
func (s *MyService) DeleteDashboard(cmd *models.DeleteDashboardCommand) error {
if err := s.SQLStore.WithDbSession(ctx, func(sess *sqlstore.DBSession) error {
_, err := sess.Exec("DELETE FROM dashboards WHERE dashboard_id=?", cmd.DashboardID)
return err
})
}
```
For transactions, use the `WithTransactionalDbSession` method instead.
## Migrations
As Grafana evolves, it becomes necessary to create _schema migrations_ for one or more database tables.
To see all the types of migrations you can add, refer to [migrations.go](/pkg/services/sqlstore/migrator/migrations.go).
Before you add a migration, make sure that you:
- Never change a migration that has been committed and pushed to master.
- Always add new migrations, to change or undo previous migrations.
Add a migration using one of the following methods:
- Add migrations in the `migrations` package.
- Implement the `DatabaseMigrator` for the service.
**Important:** If there are previous migrations for a service, use that method. By adding migrations using both methods, you risk running migrations in the wrong order.
### Add migrations in `migrations` package
Most services have their migrations located in the [migrations](/pkg/services/sqlstore/migrations/migrations.go) package.
To add a migration:
- Open the [migrations.go](/pkg/services/sqlstore/migrations/migrations.go) file.
- In the `AddMigrations` function, find the `addXxxMigration` function for the service you want to create a migration for.
- At the end of the `addXxxMigration` function, register your migration:
[Example](https://github.com/grafana/grafana/blob/00d0640b6e778ddaca021670fe851fe00982acf2/pkg/services/sqlstore/migrations/migrations.go#L55-L70)
### Implement `DatabaseMigrator`
During initialization, SQL store queries the service registry, and runs migrations for every service that implements the [DatabaseMigrator](https://github.com/grafana/grafana/blob/44c2007498c76c2dbb48e8366b4af410f1ee1b98/pkg/registry/registry.go#L101-L106) interface.
To add a migration:
- If needed, add the `AddMigration(mg *migrator.Migrator)` method to the service.
- At the end of the `AddMigration` method, register your migration:
```go
func (s *MyService) AddMigration(mg *migrator.Migrator) {
// ...
mg.AddMigration("Add column age", NewAddColumnMigration(table, &Column{
Name: "age",
Type: migrator.DB_BigInt,
Nullable: true,
}))
}
```

View File

@@ -0,0 +1,69 @@
# Services
A Grafana _service_ encapsulates and exposes application logic to the rest of the application, through a set of related operations.
Before a service can start communicating with the rest of Grafana, it needs to be registered in the _service registry_.
The service registry keeps track of all available services during runtime. On start-up, Grafana uses the registry to build a dependency graph of services, a _service graph_.
Even though the services in Grafana do different things, they share a number of patterns. To better understand how a service works, let's build one from scratch!
## Create a service
To start building a service:
- Create a new Go package `mysvc` in the [pkg/services](/pkg/services) directory.
- Create a `service.go` file inside your new directory.
All services need to implement the [Service](https://godoc.org/github.com/grafana/grafana/pkg/registry#Service) interface:
```go
type MyService struct {
}
func (s *MyService) Init() error {
return nil
}
```
The `Init` method is used to initialize and configure the service to make it ready to use. Services that return an error halt Grafana's startup process and cause the error to be logged as it exits.
## Register a service
Every service needs to be registered with the application for it to be included in the service graph.
To register a service, call the `registry.RegisterService` function in an `init` function within your package.
```go
func init() {
registry.RegisterService(&MyService{})
}
```
`init` functions are only run whenever a package is imported, so we also need to import the package in the application. In the `server.go` file under `pkg/cmd/grafana-server`, import the package we just created:
```go
import _ "github.com/grafana/grafana/pkg/services/mysvc"
```
## Dependencies
Grafana uses the [inject](https://github.com/facebookgo/inject) package to inject dependencies during runtime.
For example, to access the [bus](communication.md), add it to the `MyService` struct:
```go
type MyService struct {
Bus bus.Bus `inject:""`
}
```
You can also inject other services in the same way:
```go
type MyService struct {
Service other.Service `inject:""`
}
```
**Note:** Any injected dependency needs to be an exported field. Any unexported fields result in a runtime error.

View File

@@ -0,0 +1,95 @@
# Create a pull request
We're excited that you're considering making a contribution to the Grafana project! This document guides you through the process of creating a [pull request](https://help.github.com/en/articles/about-pull-requests/).
## Before you begin
We know you're excited to create your first pull request. Before we get started, read these resources first:
- Learn how to start [Contributing to Grafana](/CONTRIBUTING.md).
- Make sure your code follows the relevant [style guides](/contribute/style-guides).
## Your first pull request
If this is your first time contributing to an open-source project on GitHub, make sure you read about [Creating a pull request](https://help.github.com/en/articles/creating-a-pull-request).
To increase the chance of having your pull request accepted, make sure your pull request follows these guidelines:
- Title and description matches the implementation.
- Commits within the pull request follow the [Formatting guidelines](#Formatting-guidelines).
- The pull request closes one related issue.
- The pull request contains necessary tests that verify the intended behavior.
- If your pull request has conflicts, rebase your branch onto the master branch.
If the pull request fixes a bug:
- The pull request description must include `Closes #<issue number>` or `Fixes #<issue number>`.
- To avoid regressions, the pull request should include tests that replicate the fixed bug.
### Frontend-specific guidelines
Pull requests for frontend contributions must:
- Use [Emotion](/contribute/style-guides/styling.md) for styling.
- Not increase the Angular code base.
- Not use `any` or `{}` without reason.
- Not contain large React components that could easily be split into several smaller components.
- Not contain backend calls directly from components—use actions and Redux instead.
Pull requests for Redux contributions must:
- Use the `actionCreatorFactory` and `reducerFactory` helpers instead of traditional switch statement reducers in Redux. Refer to [Redux framework](/contribute/style-guides/redux.md) for more details.
- Use `reducerTester` to test reducers. Refer to [Redux framework](/contribute/style-guides/redux.md) for more details.
- Not contain code that mutates state in reducers or thunks.
- Not contain code that accesses the reducers state slice directly. Instead, the code should use state selectors to access state.
## Code review
Once you've created a pull request, the next step is to have someone review your change. A review is a learning opportunity for both the reviewer and the author of the pull request.
If you think a specific person needs to review your pull request, then you can tag them in the description or in a comment. Tag a user by typing the `@` symbol followed by their GitHub username.
We recommend that you read [How to do a code review](https://google.github.io/eng-practices/review/reviewer/) to learn more about code reviews.
## Formatting guidelines
A well-written pull request minimizes the time to get your change accepted. These guidelines help you write good commit messages and descriptions for your pull requests.
### Commit message format
Grafana uses the guidelines for commit messages outlined in [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/), with the following additions:
- Subject line must begin with the _area_ of the commit.
- A footer in the form of an optional [keyword and issue reference](https://help.github.com/en/articles/closing-issues-using-keywords).
#### Area
The area should use upper camel case, e.g. UpperCamelCase.
Prefer using one of the following areas:
- **Build:** Changes to the build system, or external dependencies.
- **Chore:** Changes that don't affect functionality.
- **Dashboard:** Changes to the Dashboard feature.
- **Docs:** Changes to documentation.
- **Explore:** Changes to the Explore feature.
- **Plugins:** Changes to any of the plugins.
For changes to data sources, the area should be the name of the data source, e.g., AzureMonitor, Graphite, and Prometheus.
For changes to panels, the area should be the name of the panel, suffixed with Panel, e.g., GraphPanel, SinglestatPanel, and TablePanel.
**Examples**
- `Build: Support publishing MSI to grafana.com`
- `Explore: Add Live option for supported data sources`
- `GraphPanel: Fix legend sorting issues`
- `Docs: Changed url to URL in all documentation files`
### Pull request titles
The Grafana team _squashes_ all commits into one when we accept a pull request. The title of the pull request becomes the subject line of the squashed commit message. We still encourage contributors to write informative commit messages, as they becomes a part of the Git commit body.
We use the pull request title when we generate change logs for releases. As such, we strive to make the title as informative as possible.
Make sure that the title for your pull request uses the same format as the subject line in the commit message.

View File

@@ -0,0 +1,210 @@
# Developer guide
This guide helps you get started developing Grafana.
Before you begin, you might want to read [How to contribute to Grafana as a junior dev](https://medium.com/@ivanahuckova/how-to-contribute-to-grafana-as-junior-dev-c01fe3064502) by [Ivana Huckova](https://medium.com/@ivanahuckova).
## Dependencies
Make sure you have the following dependencies installed before setting up your developer environment:
- [Git](https://git-scm.com/)
- [Go](https://golang.org/dl/) (see [go.mod](../go.mod#L3) for minimum required version)
- [Node.js (Long Term Support)](https://nodejs.org)
- [Yarn](https://yarnpkg.com)
### macOS
We recommend using [Homebrew](https://brew.sh/) for installing any missing dependencies:
```
brew install git
brew install go
brew install node
npm install -g yarn
```
## Download Grafana
We recommend using Go 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.
## Build Grafana
Grafana consists of two components; the _frontend_, and the _backend_.
### Frontend
Before we can build the frontend assets, we need to install the dependencies:
```
yarn install --pure-lockfile
```
After the command has finished, we can start building our source code:
```
yarn start
```
Once `yarn start` has built the assets, it will continue to do so whenever any of the files change. This means you don't have to manually build the assets whenever every time you change the code.
Next, we'll build the web server that will serve the frontend assets we just built.
### Backend
Build and run the backend by running `make run` in the root directory of the repository. This command compiles the Go source code and starts a web server.
> Are you having problems with [too many open files](#troubleshooting)?
By default, you can access the web server at `http://localhost:3000/`.
Log in using the default credentials:
| username | password |
| -------- | -------- |
| `admin` | `admin` |
When you log in for the first time, Grafana asks you to change your password.
#### Building on Windows
The Grafana backend includes Sqlite3 which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download).
## Test Grafana
The test suite consists of three types of tests: _Frontend tests_, _backend tests_, and _end-to-end tests_.
### Run frontend tests
We use [jest](https://jestjs.io/) for our frontend tests. Run them using Yarn:
```
yarn jest
```
### Run backend tests
If you're developing for the backend, run the tests with the standard Go tool:
```
go test -v ./pkg/...
```
### Run end-to-end tests
The end to end tests in Grafana use [Cypress](https://www.cypress.io/) to run automated scripts in a headless Chromium browser. Read more about our [e2e framework](/contribute/style-guides/e2e.md).
To run the tests:
```
yarn e2e-tests
```
By default, the end-to-end tests assumes Grafana is available on `localhost:3000`. To use a specific URL, set the `BASE_URL` environment variable:
```
BASE_URL=http://localhost:3333 yarn e2e-tests
```
To follow the tests in the browser while they're running, use the `yarn e2e-tests:debug` instead.
```
yarn e2e-tests:debug
```
## Configure Grafana for development
The default configuration, `grafana.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.
Enable the development mode, by adding the following line in your `custom.ini`:
```
app_mode = development
```
### Add data sources
By now, you should be able to build and test a change you've made to the Grafana source code. In most cases, you need to add at least one data source to verify the change.
To set up data sources for your development environment, go to the [devenv](/devenv) directory in the Grafana repository:
```
cd devenv
```
Run the `setup.sh` script to set up a set of data sources and dashboards in your local Grafana instance. The script creates a set of data sources called **gdev-\<type\>**, and a set of dashboards located in a folder called **gdev dashboards**.
Some of the data sources require databases to run in the background.
Installing and configuring databases can be a tricky business. Grafana uses [Docker](https://docker.com) to make the task of setting up databases a little easier. Make sure you [install Docker](https://docs.docker.com/docker-for-mac/install/) before proceeding to the next step.
In the root directory of your Grafana repository, run the following command:
```
make devenv sources=influxdb,loki
```
The script generates a Docker Compose file with the databases you specify as `sources`, and runs them in the background.
See the repository for all the [available data sources](/devenv/docker/blocks). Note that some data sources have specific Docker images for macOS, e.g. `prometheus_mac`.
## Build a Docker image
To build a Docker image, run:
```
make build-docker-full
```
The resulting image will be tagged as grafana/grafana:dev.
**Note:** If you've already set up a local development environment, and you're running a `linux/amd64` machine, you can speed up building the Docker image:
1. Build the frontend: `go run build.go build-frontend`.
1. Build the Docker image: `make build-docker-dev`.
**Note:** If you are using Docker for macOS, be sure to set the memory limit to be larger than 2 GiB. Otherwise `grunt build` may fail. The memory limit settings are available under **Docker Desktop** -> **Preferences** -> **Advanced**.
## Troubleshooting
Are you having issues with setting up your environment? Here are some tips that might help.
### Too many open files when running `make run`
Depending on your environment, you may have to increase the maximum number of open files allowed.
To see how many open files are allowed, run:
```
ulimit -a
```
To change the number of open files allowed, run:
```
ulimit -S -n 2048
```
The number of files needed may be different on your environment. To determine the number of open files needed by `make run`, run:
```
find ./conf ./pkg ./public/views | wc -l
```
Another alternative is to limit the files being watched. The directories that are watched for changes are listed in the `.bra.toml` file in the root directory.
## Next steps
- Read our [style guides](/contribute/style-guides).
- Learn how to [Create a pull request](/contribute/create-pull-request.md).
- Read [How to contribute to Grafana as a junior dev](https://medium.com/@ivanahuckova/how-to-contribute-to-grafana-as-junior-dev-c01fe3064502) by [Ivana Huckova](https://medium.com/@ivanahuckova).
- Read about the [architecture](architecture).

View File

@@ -0,0 +1,42 @@
# Contributing to documentation
This documents guides you through the process of contributing to the Grafana documentation. Make sure you've read the guide for [Contributing to Grafana](/CONTRIBUTING.md).
## Your first contribution
If youre unsure about where to start, check out some of our [open docs issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs).
Sometimes it can be difficult to understand an issue when you're just getting started. Refer to this list of [beginner-friendly issues](https://github.com/grafana/grafana/issues?q=is%3Aopen+is%3Aissue+label%3Atype%2Fdocs+label%3A"beginner+friendly") for tasks suitable for first-time contributors.
When youve found an issue you want to work on, please comment on the issue to let other people know you intend to work on it.
If you encounter any misspellings or violations to the style guide, please let us know by submitting an issue (or just fix them if they are minor changes).
On every page in the [documentation](https://grafana.com/docs/) are two links in the upper right corner:
- **Edit this page** takes you directly to the file on GitHub where you can contribute a fix.
- **Request doc changes** prepares an issue on GitHub with relevant information already filled in.
## Join our community
For general discussions on documentation, youre welcome to join the `#docs` channel on our [public Grafana Slack](http://slack.raintank.io) team.
## Style and formatting
All Grafana documentation is written using [Markdown](https://en.wikipedia.org/wiki/Markdown), and can be found in the [docs](/docs) directory in the [Grafana GitHub repository](https://github.com/grafana/grafana). The [documentation website](https://grafana.com/docs) is generated with [Hugo](https://gohugo.io) which uses [Blackfriday](https://github.com/russross/blackfriday) as its Markdown rendering engine.
### Documentation structure
The Grafana documentation is organized into topics, called _sections_. You can take a look at the current build at [grafana.com/docs/](https://grafana.com/docs/).
Each top-level section is located under the [docs/sources](/docs/sources) directory. Subsections are added by creating a subdirectory in the directory of the parent section.
For each section, an `_index.md` file provides an overview of the topic.
### Style guide
Refer to the [Documentation style guide](style-guides/documentation-style-guide.md) for information about Grafana style, word choice, and grammar conventions.
### Spelling
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.

View File

@@ -0,0 +1,45 @@
# 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.
Unless stated otherwise, use the guidelines listed in the following articles:
- [Effective Go](https://golang.org/doc/effective_go.html)
- [Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments)
- [Go: Best Practices for Production Environments](http://peter.bourgon.org/go-in-production/#formatting-and-style)
## Linting and formatting
To ensure consistency across the Go codebase, we require all code to pass a number of linter checks.
We use the standard following linters:
- [gofmt](https://golang.org/cmd/gofmt/)
- [golint](https://github.com/golang/lint)
- [go vet](https://golang.org/cmd/vet/)
In addition to the standard linters, we also use:
- [revive](https://revive.run/) with a [custom config](https://github.com/grafana/grafana/blob/master/conf/revive.toml)
- [GolangCI-Lint](https://github.com/golangci/golangci-lint)
- [gosec](https://github.com/securego/gosec)
To run all linters, use the `lint-go` Makefile target:
```bash
make lint-go
```
## Testing
We value clean and readable code, that is loosely coupled and covered by unit tests. This makes it easier to collaborate and maintain the code.
Tests must use the standard library, `testing`. For assertions, prefer using [testify](https://github.com/stretchr/testify).
The majority of our tests uses [GoConvey](http://goconvey.co/) but that's something we want to avoid going forward.
In the `sqlstore` package we do database operations in tests and while some might say that's not suited for unit tests. We think they are fast enough and provide a lot of value.
## General guidelines
- Avoid using import aliases, e.g. `import m "github.com/grafana/grafana/pkg/models"`.

View File

@@ -0,0 +1,153 @@
# Documentation style guide
This style guide applies to all documentation created for Grafana products.
## Contributing
The *Documentation style guide* is a living document. Add to it whenever a style decision is made or a question is answered regarding style, grammar, or word choice.
## Published guides
For all items not covered in this guide, refer to the [Microsoft Style Guide](https://docs.microsoft.com/en-us/style-guide/welcome/) and the [Chicago Manual of Style](https://www.chicagomanualofstyle.org/home.html).
## Spelling
The [codespell](https://github.com/codespell-project/codespell) tool is run for every change to catch common misspellings.
## 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.
### General
* Use active voice. Avoid passive voice.
- Passive: The heatmap visualization is displayed.
- Active: Grafana displays the heatmap visualization.
* Write in the imperative second person. Examples: You can write a query. Click the panel. Close the window.
* 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."
- **Exceptions:** If an ampersand is used in the Grafana UI, then match the UI.
### File naming conventions
- Files that are displayed in the help system should have names that are all lowercase, no spaces. Use hyphens instead of spaces. Example: glossary.md
- Documentation file names should match the title. **Note:** This only applies to new files at this time. Do not change the names of older files unless directed to do so.
- Internal reference file names should be all uppercase except the file extension. Example: CONTRIBUTING.md
### Headings
* Write headings in sentence case, not title case.
- This is sentence case
- This Is Title Case
* Task topic headings start with a verb.
- Write a query. Create a dashboard.
* Concept and reference topic headings should be nouns or gerunds. Examples: Contributing to docs, Visualizations, Style guide
* Avoid following one heading with another heading.
* Avoid skipping heading levels. For example, an h1 should be followed by an h2 rather than an h3.
* Avoid having just one lower-level heading. For example, h1, h2, h2, h3, h3, h2 is a good order. Do no go h1, h2, h3, h2, h3, h2.
* Don't include parenthetical words like (Important!) in headings.
### Images
* Preferred format is .png
* File extension should be all lowercase.
* Preferred DPI is 72.
* Assume all graphics will be exclusively viewed on the web.
* Maximum image size is 3840px X 2160px.
* Screenshots should be readable, but not too large.
### Capitalization
* Grafana, Loki, and Prometheus are always capitalized unless part of a code block.
* API names are always Title Case, followed by "API"—for example, "Dashboard Permissions API"
* Git is always capitalized, unless part of a code block.
* Abbreviations are always capitalized (such as API, HTTP, ID, JSON, SQL, or URL) unless they are part of a code block.
* Menu and submenu titles always use sentence case: capitalize the first word, and lowercase the rest.
- "Dashboards" when referring to the submenu title.
- "Keyboard shortcuts" when referring to the submenu topic.
* Generic and plural versions are always lowercase.
- Lowercase "dashboard" when referring to a dashboard generally.
- Lowercase "dashboards" when referring to multiple dashboards.
* **Exceptions:** If a term is lowercased in the Grafana UI, then match the UI.
### Links and references
When referencing another document, use "Refer to" rather than alternatives such as "See" or "Check out."
Always give the reader some idea of what to expect in the reference. Avoid blind references, such as, "Refer to [this file](link)."
When possible, use the exact title of the page or section you are linking to as the link text.
**Example**
Refer to the [Documentation style guide](documentation-style-guide.md) for information about word usage and capitalization guidelines.
### Command line examples
* Do not assume everyone is using Linux. Make sure instructions include enough information for Windows and Mac users to successfully complete procedures.
* Do not add `$` before commands. Make it easy for users to copy and paste commands.
* **Wrong:** `$ sudo yum install grafana`
* **Right:** `sudo yum install grafana`
* Include `sudo` before commands that require `sudo` to work.
For terminal examples and Grafana configuration, use a `bash` code block:
```bash
sudo yum install grafana
```
For HTTP request/response, use an `http` code block:
```http
GET /api/dashboards/id/1/permissions HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
### Word usage
Grafana products has some words, abbreviations, and slang particular to this discourse community.
#### checkout, check out
Two words if used as a verb, one word if used as a noun.
**Examples**
* Check out these new features!
* Proceed to checkout.
#### data source
Two words, not one
**Exceptions:**
* "datasource" used as an identifier
* "datasource" in a URL
* Use "data source" instead of "datasource" unless used as an identifier, in code, or as part of a URL.
* Spell out "repository" and avoid the shorter "repo."
* Use "Unix" as the preferred spelling (as opposed to "UNIX", or "unix") when referring to the family of operating systems.
#### display (verb)
*Display* is a transitive verb, which means it always needs a direct object.
* Correct, active voice: Grafana displays your list of active alarms.
* Correct, but passive voice: Your list of active alarms is displayed.
* Incorrect: The list of active alarms displays.
#### 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 it is used as a noun. For example: _Open source is the best way to develop software._
#### setup, set up
Two words if used as a verb, one word if used as a noun.
**Examples**
* Set up the workspace.
* Initial setup might take five minutes.

View File

@@ -0,0 +1,160 @@
# End to end test framework
Grafana Labs uses a minimal home grown solution built on top of Cypress for our end to end (e2e) tests.
## Basic concepts
Here is a good introduction to e2e best practices: https://martinfowler.com/bliki/PageObject.html.
- `Selector`: A unique identifier that is used from the e2e framework to retrieve an element from the Browser
- `Page`: An abstraction for an object that contains one or more `Selectors`
- `Flow`: An abstraction that contains a sequence of actions on one or more `Pages` that can be reused and shared between tests
## Basic example
Let's start with a simple example with a single selector. For simplicity, all examples are in JSX.
In our example app, we have an input that we want to type some text into during our e2e test.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input"/>
</div>
```
We could define a selector using `JQuery` [type selectors](https://api.jquery.com/category/selectors/) with a string like `'.gf-form-input.login-form-input'` but that would be brittle as style changes occur frequently. Furthermore there is nothing that signals to future developers that this input is part of an e2e test.
At Grafana, we use `aria-label` as our preferred way of defining selectors instead of `data-*` attributes. This also aids in accessibility.
Let's add a descriptive `aria-label` to our simple example.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input" aria-label="Username input field"/>
</div>
```
Now that we added the `aria-label` we suddenly get more information about this particular field. It's an input field that represents a username, but there it's still not really signaling that it's part of an e2e test.
The next step is to create a `Page` representation in our e2e test framework to glue the test with the real implementation using the `pageFactory` function. For that function we can supply a `url` and `selectors` like in the example below:
```typescript
export const Login = pageFactory({
url: '/login', // used when called from Login.visit()
selectors: {
username: 'Username input field', // used when called from Login.username().type('Hello World')
},
});
```
The next step is to add the `Login` page to the exported const `Pages` in `packages/grafana-e2e/src/pages/index.ts` so that it appears when we type `e2e.pages` in our IDE.
```ecmascript 6
export const Pages = {
Login,
...,
...,
...,
};
```
Now that we have a `Page` called `Login` in our `Pages` const we can use that to add a selector in our html like shown below and now this really signals to future developers that it is part of an e2e test.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input" aria-label={e2e.pages.Login.selectors.username}/>
</div>
```
The last step in our example is to use our `Login` page as part of a test. The `pageFactory` function we used before gives us two things:
- The `url` property is used whenever we call the `visit` function and is equivalent to the Cypress function [cy.visit()](https://docs.cypress.io/api/commands/visit.html#Syntax).
> Best practice after calling `visit` is to always call `should` on a selector to prevent flaky tests when you try to access an element that isn't ready. For more information, refer to [Commands vs. assertions](https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions).
- Any defined selector in the `selectors` property can be accessed from the `Login` page by invoking it. This is equivalent to the result of the Cypress function [cy.get(...)](https://docs.cypress.io/api/commands/get.html#Syntax).
```ecmascript 6
describe('Login test', () => {
it('Should pass', () => {
e2e.pages.Login.visit();
// To prevent flaky tests, always do a .should on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
e2e.pages.Login.username().should('be.visible');
e2e.pages.Login.username().type('admin');
});
});
```
## Advanced example
Let's take a look at an example that uses the same `selector` for multiple items in a list for instance. In this example app we have a list of data sources that we want to click on during an e2e test.
```jsx harmony
<ul>
{dataSources.map(dataSource => (
<li className="card-item-wrapper" key={dataSource.id}>
<a className="card-item" href={`datasources/edit/${dataSource.id}`}>
<div className="card-item-name">
{dataSource.name}
</div>
</a>
</li>
))}
</ul>
```
```
Just as before in the basic example we'll start by creating a page abstraction using the `pageFactory` function:
```typescript
export const DataSources = pageFactory({
url: '/datasources',
selectors: {
dataSources: (dataSourceName: string) => `Data source list item ${dataSourceName}`,
},
});
```
You might have noticed that instead of a simple `string` as the `selector`, we're using a `function` that takes a string parameter as an argument and returns a formatted string using the argument.
Just as before we need to add the `DataSources` page to the exported const `Pages` in `packages/grafana-e2e/src/pages/index.ts`.
The next step is to use the `dataSources` selector function as in our example below:
```jsx harmony
<ul>
{dataSources.map(dataSource => (
<li className="card-item-wrapper" key={dataSource.id}>
<a className="card-item" href={`datasources/edit/${dataSource.id}`}>
<div className="card-item-name" aria-label={e2e.pages.DataSources.selectors.dataSources(dataSource.name)}>
{dataSource.name}
</div>
</a>
</li>
))}
</ul>
```
When this list is rendered with the data sources with names `A`, `B`, `C` the resulting html would become:
```jsx harmony
<div class="card-item-name" aria-label="Data source list item A">
A
</div>
...
<div class="card-item-name" aria-label="Data source list item B">
B
</div>
...
<div class="card-item-name" aria-label="Data source list item C">
C
</div>
```
Now we can write our test. The one thing that differs from the `Basic example` is that we pass in which data source we want to click on as an argument to the selector function:
> Best practice after calling `visit` is to always call `should` on a selector to prevent flaky tests when you try to access an element that isn't ready. For more information, refer to [Commands vs. assertions](https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions).
```ecmascript 6
describe('List test', () => {
it('Clicking on data source named B', () => {
e2e.pages.DataSources.visit();
// To prevent flaky tests, always do a .should on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
e2e.pages.DataSources.dataSources('B').should('be.visible');
e2e.pages.DataSources.dataSources('B').click();
});
});
```
## Debugging PhantomJS image rendering
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

@@ -4,18 +4,17 @@ Generally we follow the Airbnb [React Style Guide](https://github.com/airbnb/jav
## Table of Contents
1. [Basic Rules](#basic-rules)
1. [File & Component Organization](#Organization)
1. [Naming](#naming)
1. [Declaration](#declaration)
1. [Props](#props)
1. [Refs](#refs)
1. [Methods](#methods)
1. [Ordering](#ordering)
- [Frontend Style Guide](#frontend-style-guide)
- [Table of Contents](#table-of-contents)
- [Basic rules](#basic-rules)
- [Organization](#organization)
- [Props](#props)
- [State management](#state-management)
## Basic rules
- Try to keep files small and focused and break large components up into sub components.
- Try to keep files small and focused.
- Break large components up into sub-components.
## Organization
@@ -30,7 +29,7 @@ Generally we follow the Airbnb [React Style Guide](https://github.com/airbnb/jav
## Props
- Name callback props & handlers with a "on" prefix.
- Name callback props and handlers with an "on" prefix.
```tsx
// good
@@ -85,3 +84,10 @@ static defaultProps: Partial<Props> = { ... }
// bad
static defaultProps = { ... }
```
## State management
- Don't mutate state in reducers or thunks.
- Use helpers `actionCreatorFactory` and `reducerFactory` instead of traditional `switch statement` reducers in Redux. See [Redux framework](redux.md) for more details.
- Use `reducerTester` to test reducers. See [Redux framework](redux.md) for more details.
- Use state selectors to access state instead of accessing state directly.

View File

@@ -0,0 +1,48 @@
# Redux framework
Grafana uses [Redux Toolkit](https://redux-toolkit.js.org/) to handle Redux boilerplate code.
> Some of our Reducers are used by Angular and therefore state is to be considered as mutable for those reducers.
## Test functionality
### reducerTester
Fluent API that simplifies the testing of reducers
#### Usage
```typescript
reducerTester()
.givenReducer(someReducer, initialState)
.whenActionIsDispatched(someAction('reducer tests'))
.thenStateShouldEqual({ ...initialState, data: 'reducer tests' });
```
#### Complex usage
Sometimes you encounter a `resulting state` that contains properties that are hard to compare, such as `Dates`, but you still want to compare that other props in state are correct.
Then you can use `thenStatePredicateShouldEqual` function on `reducerTester` that will return the `resulting state` so that you can expect upon individual properties..
```typescript
reducerTester()
.givenReducer(someReducer, initialState)
.whenActionIsDispatched(someAction('reducer tests'))
.thenStatePredicateShouldEqual(resultingState => {
expect(resultingState.data).toEqual('reducer tests');
return true;
});
```
### thunkTester
Fluent API that simplifies the testing of thunks.
#### Usage
```typescript
const dispatchedActions = await thunkTester(initialState)
.givenThunk(someThunk)
.whenThunkIsDispatched(arg1, arg2, arg3);
expect(dispatchedActions).toEqual([someAction('reducer tests')]);
```

View File

@@ -0,0 +1,86 @@
# Styling Grafana
## Emotion
[Emotion](https://emotion.sh/docs/introduction) is our default-to-be approach to styling React components. It provides a way for styles to be a consequence of properties and state of a component.
### Usage
#### Basic styling
For styling components use Emotion's `css` function
```tsx
import { css } from 'emotion';
const ComponentA = () => {
return (
<div className={css`background: red;`}>
As red as you can ge
</div>
);
}
```
#### Styling complex components
In more complex cases, especially when you need to style multiple DOM elements in one component or when your styles that depend on properties and/or state, you should create a helper function that returns an object with desired stylesheet. This function should also be wrapped in `stylesFactory` helper function that will provide basic memoization.
Let's say you need to style a component that has different background depending on the theme:
```tsx
import { css, cx } from 'emotion';
import { GrafanaTheme, useTheme, selectThemeVariant, stylesFactory } from '@grafana/ui';
const getStyles = stylesFactory((theme: GrafanaTheme) => {
const backgroundColor = selectThemeVariant({ light: theme.colors.red, dark: theme.colors.blue }, theme.type);
return {
wrapper: css`
background: ${backgroundColor};
`,
icon: css`font-size:${theme.typography.size.sm}`;
};
}
const ComponentA = () => {
const theme = useTheme();
const styles = getStyles(theme);
return (
<div className={styles.wrapper}>
As red as you can get
<i className={styles.icon} />
</div>
);
});
```
For more information about themes at Grafana please see [themes guide](./themes.md)
#### Composing class names
For class composition use Emotion's `cx` function
```tsx
import { css, cx } from 'emotion';
interface Props {
className?: string;
}
const ComponentA: React.FC<Props> = ({ className }) => {
const finalClassName = cx(
className,
css`background: red`,
)
return (
<div className={finalClassName}>
As red as you can ge
</div>
);
}
```

View File

@@ -0,0 +1,137 @@
# Theming Grafana
## Overview
**Themes are implemented in Typescript.** That's because our goal is to share variables between Grafana Typescript code and SASS files. Theme definitions are located in `packages/grafana-ui/src/themes/[default|dark|light].ts` files. `default.ts` file holds common variables like typography and spacing definitions, while `[light|dark].ts` primarily specify colors used in themes.
## Usage
### Using themes in React components
#### Using `ThemeContext` directly
```tsx
import { ThemeContext } from '@grafana/ui';
<ThemeContext.Consumer>{theme => <Foo theme={theme} />}</ThemeContext.Consumer>;
```
or
```tsx
import React, { useContext } from 'react';
import { ThemeContext } from '@grafana/ui';
const Foo: React.FunctionComponent<FooProps> = () => {
const theme = useContext(ThemeContext);
// Your component has access to the theme variables now
}
```
#### Using `withTheme` higher-order component (HOC)
With this method your component will be automatically wrapped in `ThemeContext.Consumer` and provided with current theme via `theme` prop. Component used with `withTheme` must implement `Themeable` interface.
```ts
import { ThemeContext, Themeable } from '@grafana/ui';
interface FooProps extends Themeable {}
const Foo: React.FunctionComponent<FooProps> = () => ...
export default withTheme(Foo);
```
### Test components that use ThemeContext
When implementing snapshot tests for components that use the `withTheme` HOC, the snapshot will contain the entire theme object. Any change to the theme renders the snapshot outdated.
To make your snapshot theme independent, use the `mockThemeContext` helper function:
```tsx
import { mockThemeContext } from '@grafana/ui';
import { MyComponent } from './MyComponent';
describe('MyComponent', () => {
let restoreThemeContext;
beforeAll(() => {
// Create ThemeContext mock before any snapshot test is executed
restoreThemeContext = mockThemeContext({ type: GrafanaThemeType.Dark });
});
afterAll(() => {
// Make sure the theme is restored after snapshot tests are performed
restoreThemeContext();
});
it('renders correctyl', () => {
const wrapper = mount(<MyComponent />)
expect(wrapper).toMatchSnapshot();
});
});
```
### Using themes in Storybook
All stories are wrapped with `ThemeContext.Provider` using global decorator. To render `Themeable` component that's not wrapped by `withTheme` HOC you either create a new component in your story:
```tsx
// Foo.story.tsx
const FooWithTheme = withTheme(Foo);
FooStories.add('Story' () => {
return <FooWithTheme />
});
```
or use `renderComponentWithTheme` helper:
```tsx
// Bar.story.tsx
BarStories.add('Story' () => {
return renderComponentWithTheme(Bar, /* pass props here */)
});
```
### Using themes in Angular code
There should be very few cases where theme would be used in Angular context. For this purpose there is a function available that retrieves current theme: `import { getCurrentTheme } from app/core/utils/ConfigProvider`. Angular components should be migrated to React, or if that's not possible at the moment, styled using SASS.
## FAQ
### How can I modify SASS variable files?
> For the following to apply you need to run `yarn dev` task.
`[_variables|_variables.dark|_variables.light].generated.scss` files are the ones that are referenced in the main SASS files for SASS variables to be available. **These files are automatically generated and should never be modified by hand!**.
#### If you need to modify *SASS variable value* you need to modify corresponding Typescript file that is a source of the variables:
- `_variables.generated.scss` - modify `grafana-ui/src/themes/default.ts`
- `_variables.light.generated.scss` - modify `grafana-ui/src/themes/light.ts`
- `_variables.dark.generated.scss` - modify `grafana-ui/src/themes/dark.ts`
#### If you need to *add new variable* to SASS variables you need to modify corresponding template file:
- `_variables.generated.scss` - modify `grafana-ui/src/themes/_variables.scss.tmpl.ts`
- `_variables.light.generated.scss` - modify `grafana-ui/src/themes/_variables.light.scss.tmpl.ts`
- `_variables.dark.generated.scss` - modify `grafana-ui/src/themes/_variables.dark.scss.tmpl.ts`
## Limitations
### You must ensure ThemeContext provider is available in a React tree
By default all react2angular directives have `ThemeContext.Provider` ensured. But, there are cases where we create another React tree via `ReactDOM.render`. This happens in case of graph legend rendering and `ReactContainer` directive. In such cases theme consumption will fail. To make sure theme context is available in such cases, you need to wrap your rendered component with ThemeContext.Provider using `provideTheme` function:
```ts
// graph.ts
import { provideTheme } from 'app/core/utils/ConfigProvider';
// Create component with ThemeContext.Provider first.
// Otherwise React will create new components every time it renders!
const LegendWithThemeProvider = provideTheme(Legend);
const legendReactElem = React.createElement(LegendWithThemeProvider, legendProps);
ReactDOM.render(legendReactElem, this.legendElem, () => this.renderPanel());
```
`provideTheme` makes current theme available via ThemeContext by checking if user has `lightTheme` set in her boot data.

View File

@@ -0,0 +1,32 @@
# Triage issues
Triage helps ensure that issues resolve quickly by:
- Ensuring the issue's intent and purpose is conveyed precisely. This is necessary because it can be difficult for an issue to explain how an end user experiences a problem and what actions they took.
- Giving a contributor the information they need before they commit to resolving an issue.
- Lowering the issue count by preventing duplicate issues.
- Streamlining the development process by preventing duplicate discussions.
This document gives you some ideas on what you can do to help. For more information, read more about [how the core Grafana team triage issues](/ISSUE_TRIAGE.md).
## Improve issues
Improve issues by suggesting improvements to the title and description. If you think an issue has formatting issues, bad language, or grammatical errors, post a comment to let the author and maintainers know.
## Report resolved issues
If you think an issue has been resolved, or is no longer relevant, suggest us to close it. Add a comment on the issue, where you explain the reason it should be closed. Make sure to include any related issues and pull requests.
## Investigate issues
Investigate issues that we haven't been able to reproduce yet. In some cases, there are many combinations of panels, dashboards, and data sources that make it difficult for us to reproduce certain issues. Help us by adding more information.
## Vote on issues
Use [GitHub reactions](https://help.github.com/en/articles/about-conversations-on-github#reacting-to-ideas-in-comments) to let us know what's important to you. Vote on bugs if you've experienced the same problem. **Don't vote, or react, by commenting on the issue.**
Read more about [how we prioritize issues](/ISSUE_TRIAGE.md#4-prioritization-of-issues).
## Report duplicates
If you find two issues that describe the same thing, add a comment in one of the issues, with a reference (`#<issue number>`) to the other. Explain why you think the issue is duplicated.

View File

@@ -1,33 +1,40 @@
This folder contains useful scripts and configuration for...
# Set up your development environment
* Configuring dev datasources in Grafana
* Configuring dev & test scenarios dashboards.
* Creating docker-compose file with DBs and fake data.
This folder contains useful scripts and configuration so you can:
* Configure data sources in Grafana for development.
* Configure dashboards for development and test scenarios.
* Create docker-compose file with databases and fake data.
# Dev dashboards and data sources
## Install Docker
Grafana uses [Docker](https://docker.com) to make the task of setting up databases a little easier. If you do not have it already, make sure you [install Docker](https://docs.docker.com/docker-for-mac/install/) before proceeding to the next step.
## Developer dashboards and data sources
```bash
./setup.sh
```
After restarting grafana server there should now be a number of datasources named `gdev-<type>` provisioned as well as
a dashboard folder named `gdev dashboards`. This folder contains dashboard & panel features tests dashboards.
After restarting the Grafana server, there should be a number of data sources named `gdev-<type>` provisioned as well as
a dashboard folder named `gdev dashboards`. This folder contains dashboard and panel features tests dashboards.
#### Dev dashboards
Please update these dashboards or make new ones as new panels & dashboards features are developed or new bugs are
Please update these dashboards or make new ones as new panels and dashboards features are developed or new bugs are
found. The dashboards are located in the `devenv/dev-dashboards` folder.
# docker-compose with databases
## docker-compose with databases
```bash
./create_docker_compose.sh influxdb prometheus2 elastic5
docker-compose up
```
This command will create a docker compose file with specified databases configured and ready to run. Each database has
a prepared image with some fake data ready to use. For available databases see `docker/blocks` directory. Mind that
This command creates a docker-compose file with specified databases configured and ready to run. Each database has
a prepared image with some fake data ready to use. For available databases, see `docker/blocks` directory. Notice that
for some databases there are multiple images, for example there is prometheus_mac specifically for Macs or different
version.
```bash
make devenv sources=influxdb,prometheus2,elastic5
```
Some of the blocks support dynamic change of the image version used in the Docker file. The signature looks like this:
```bash
make devenv sources=postgres,openldap postgres_version=9.2
```

View File

@@ -8,8 +8,8 @@ grafana_config_file=conf.tmp
grafana_config=config
compose_header_file=docker/compose_header.yml
fig_file=docker-compose.yaml
fig_config=docker-compose.yaml
compose_file=docker-compose.yaml
env_file=.env
if [ "$#" == 0 ]; then
blocks=`ls $blocks_dir`
@@ -24,15 +24,15 @@ if [ "$#" == 0 ]; then
exit 0
fi
for file in $grafana_config_file $fig_file; do
for file in $grafana_config_file $compose_file $env_file; do
if [ -e $file ]; then
echo "Deleting $file"
rm $file
fi
done
echo "Adding Compose header to $fig_file"
cat $compose_header_file >> $fig_file
echo "Adding Compose header to $compose_file"
cat $compose_header_file >> $compose_file
for dir in $@; do
current_dir=$blocks_dir/$dir
@@ -47,10 +47,16 @@ for dir in $@; do
echo "" >> $grafana_config_file
fi
if [ -e $current_dir/$fig_config ]; then
echo "Adding $current_dir/$fig_config to $fig_file"
cat $current_dir/$fig_config >> $fig_file
echo "" >> $fig_file
if [ -e $current_dir/$compose_file ]; then
echo "Adding $current_dir/$compose_file to $compose_file"
cat $current_dir/$compose_file >> $compose_file
echo "" >> $compose_file
fi
if [ -e $current_dir/$env_file ]; then
echo "Adding $current_dir/$env_file to .env"
cat $current_dir/$env_file >> .env
echo "" >> .env
fi
done

View File

@@ -5,6 +5,7 @@ providers:
folder: 'gdev dashboards'
folderUid: ''
type: file
allowUiUpdates: false
updateIntervalSeconds: 60
options:
path: devenv/dev-dashboards

View File

@@ -20,8 +20,8 @@ datasources:
url: http://localhost:3011
- name: gdev-testdata
type: testdata
isDefault: true
type: testdata
- name: gdev-influxdb
type: influxdb
@@ -227,6 +227,20 @@ datasources:
authType: credentials
defaultRegion: eu-west-2
# Keep to test old /api/prom API
- name: gdev-loki-0.3
type: loki
access: proxy
url: http://localhost:3103
editable: false
# First version with new v1 API (remove once v1 is out)
- name: gdev-loki-0.4
type: loki
access: proxy
url: http://localhost:3104
editable: false
- name: gdev-loki
type: loki
access: proxy

View File

@@ -28,11 +28,7 @@
"value": "triggered"
}
],
"colors": [
"#299c46",
"rgba(237, 129, 40, 0.89)",
"#d44a3a"
],
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"d3DivId": "d3_svg_4",
"datasource": "gdev-testdata",
"decimals": 2,
@@ -115,11 +111,7 @@
},
"id": 4,
"links": [],
"notcolors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"notcolors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"operatorName": "avg",
"operatorOptions": [
{
@@ -884,8 +876,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",
@@ -1114,11 +1106,7 @@
"value": "triggered"
}
],
"colors": [
"#299c46",
"rgba(237, 129, 40, 0.89)",
"#d44a3a"
],
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"d3DivId": "d3_svg_5",
"datasource": "gdev-testdata",
"decimals": 2,
@@ -1201,11 +1189,7 @@
},
"id": 5,
"links": [],
"notcolors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"notcolors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"operatorName": "avg",
"operatorOptions": [
{
@@ -1991,8 +1975,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",
@@ -2221,11 +2205,7 @@
"value": "triggered"
}
],
"colors": [
"#299c46",
"rgba(237, 129, 40, 0.89)",
"#d44a3a"
],
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"d3DivId": "d3_svg_2",
"datasource": "gdev-testdata",
"decimals": 2,
@@ -2308,11 +2288,7 @@
},
"id": 2,
"links": [],
"notcolors": [
"rgba(245, 54, 54, 0.9)",
"rgba(237, 129, 40, 0.89)",
"rgba(50, 172, 45, 0.97)"
],
"notcolors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"operatorName": "avg",
"operatorOptions": [
{
@@ -3078,8 +3054,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",
@@ -3300,10 +3276,7 @@
],
"schemaVersion": 16,
"style": "dark",
"tags": [
"panel-test",
"gdev"
],
"tags": ["panel-test", "gdev"],
"templating": {
"list": []
},
@@ -3312,29 +3285,8 @@
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"2h",
"1d"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
},
"timezone": "",
"title": "Panel Tests - Polystat",

View File

@@ -15,10 +15,12 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1573479899663,
"links": [],
"panels": [
{
"alert": {
"alertRuleTags": {},
"conditions": [
{
"evaluator": {
@@ -52,12 +54,14 @@
"editable": true,
"error": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 10,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"isNew": true,
"legend": {
@@ -73,6 +77,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -142,6 +149,7 @@
},
{
"alert": {
"alertRuleTags": {},
"conditions": [
{
"evaluator": {
@@ -165,7 +173,7 @@
"for": "900000h",
"frequency": "1m",
"handler": 1,
"name": "Always Pending",
"name": "TestData - Always Pending",
"noDataState": "no_data",
"notifications": []
},
@@ -177,12 +185,14 @@
"editable": true,
"error": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 10,
"x": 10,
"y": 0
},
"hiddenSeries": false,
"id": 7,
"isNew": true,
"legend": {
@@ -198,6 +208,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -227,7 +240,7 @@
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Always Alerting with For",
"title": "Always Pending with For",
"tooltip": {
"msResolution": false,
"shared": true,
@@ -268,6 +281,7 @@
{
"dashboardFilter": "",
"dashboardTags": [],
"datasource": null,
"folderId": null,
"gridPos": {
"h": 20,
@@ -280,6 +294,7 @@
"links": [],
"nameFilter": "$namefilter",
"onlyAlertsOnDashboard": false,
"options": {},
"show": "current",
"sortOrder": 1,
"stateFilter": [],
@@ -290,6 +305,7 @@
},
{
"alert": {
"alertRuleTags": {},
"conditions": [
{
"evaluator": {
@@ -313,7 +329,7 @@
"for": "1m",
"frequency": "1m",
"handler": 1,
"name": "TestData - Always Pending",
"name": "TestData - Always Alerting For",
"noDataState": "no_data",
"notifications": []
},
@@ -325,12 +341,14 @@
"editable": true,
"error": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 6,
"w": 10,
"x": 0,
"y": 7
},
"hiddenSeries": false,
"id": 6,
"isNew": true,
"legend": {
@@ -346,6 +364,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -446,12 +467,14 @@
"editable": true,
"error": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 6,
"w": 10,
"x": 10,
"y": 7
},
"hiddenSeries": false,
"id": 3,
"isNew": true,
"legend": {
@@ -467,6 +490,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -571,12 +597,14 @@
"editable": true,
"error": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 10,
"x": 0,
"y": 13
},
"hiddenSeries": false,
"id": 5,
"isNew": true,
"legend": {
@@ -592,6 +620,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "connected",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -661,7 +692,7 @@
}
],
"revision": 2,
"schemaVersion": 18,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "alerting"],
"templating": {
@@ -711,5 +742,5 @@
"timezone": "browser",
"title": "Alerting with TestData",
"uid": "7MeksYbmk",
"version": 1
"version": 3
}

View File

@@ -4,11 +4,37 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "gdev-mssql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT TOP 1\n createdAt as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-mssql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT TOP 1\n DATEADD(MINUTE, 1, createdAt) as time,\n DATEADD(MINUTE, 6, createdAt) as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +42,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532618661457,
"iteration": 1576251075020,
"links": [],
"panels": [
{
@@ -28,12 +54,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +76,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -79,6 +110,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -125,12 +157,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 8,
"legend": {
"avg": false,
@@ -145,6 +179,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -169,6 +206,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -214,12 +252,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 6,
"legend": {
"avg": false,
@@ -234,6 +274,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -252,6 +295,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -302,6 +346,7 @@
},
"id": 4,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -340,15 +385,19 @@
"type": "table"
}
],
"schemaVersion": 16,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "mssql", "datasource-test"],
"templating": {
"list": [
{
"allValue": null,
"current": {},
"current": {
"text": "Africa",
"value": "Africa"
},
"datasource": "gdev-mssql",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -368,8 +417,13 @@
},
{
"allValue": null,
"current": {},
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-mssql",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -392,6 +446,7 @@
"auto_count": 30,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -488,5 +543,5 @@
"timezone": "",
"title": "Datasource tests - MSSQL",
"uid": "86Js1xRmk",
"version": 1
"version": 2
}

View File

@@ -4,11 +4,35 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
},
{
"datasource": "gdev-mysql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT\n createdAt as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-mysql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT\n ADDTIME(createdAt, '00:01:00') as time,\n ADDTIME(createdAt, '00:06:00') as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +40,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532620738041,
"iteration": 1576250298312,
"links": [],
"panels": [
{
@@ -28,12 +52,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +74,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -81,6 +110,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -126,12 +156,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
@@ -146,6 +178,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -171,6 +206,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -216,12 +252,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 3,
"legend": {
"avg": false,
@@ -236,6 +274,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -255,6 +296,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -305,6 +347,7 @@
},
"id": 6,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -346,7 +389,8 @@
"type": "table"
}
],
"schemaVersion": 16,
"refresh": false,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "mysql", "datasource-tags"],
"templating": {
@@ -358,6 +402,7 @@
"value": "America"
},
"datasource": "gdev-mysql",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -378,10 +423,12 @@
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-mysql",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -404,6 +451,7 @@
"auto_count": 5,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -500,5 +548,5 @@
"timezone": "",
"title": "Datasource tests - MySQL",
"uid": "DGsCac3kz",
"version": 8
"version": 2
}

View File

@@ -4,11 +4,35 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
},
{
"datasource": "gdev-postgres",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT\n \"createdAt\" as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\")\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-postgres",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT\n \"createdAt\" + (interval '1 minute') as time,\n \"createdAt\" + (6 * interval '1 minute') as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\")\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +40,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532620601931,
"iteration": 1576249087264,
"links": [],
"panels": [
{
@@ -28,12 +52,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +74,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -67,20 +96,59 @@
{
"alias": "",
"format": "time_series",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
"rawSql": "SELECT\n $__timeGroup(\"createdAt\",'$summarize'),\n avg(value) as \"value\",\n hostname as \"metric\"\nFROM \n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\") AND\n measurement = 'logins.count' AND\n hostname IN($host)\nGROUP BY time, metric\nORDER BY time",
"refId": "A",
"target": ""
"select": [
[
{
"params": ["value"],
"type": "column"
}
]
],
"target": "",
"timeColumn": "time",
"where": [
{
"name": "$__timeFilter",
"params": [],
"type": "macro"
}
]
},
{
"alias": "",
"format": "time_series",
"group": [],
"metricColumn": "none",
"rawQuery": true,
"rawSql": "SELECT\n $__timeGroup(\"createdAt\",'$summarize'),\n min(value) as \"value\",\n 'total avg' as \"metric\"\nFROM \n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\") AND\n measurement = 'logins.count'\nGROUP BY time\nORDER BY time",
"refId": "B"
"refId": "B",
"select": [
[
{
"params": ["value"],
"type": "column"
}
]
],
"timeColumn": "time",
"where": [
{
"name": "$__timeFilter",
"params": [],
"type": "macro"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -126,12 +194,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
@@ -146,6 +216,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -171,6 +244,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -216,12 +290,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 3,
"legend": {
"avg": false,
@@ -236,6 +312,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -255,6 +334,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -305,6 +385,7 @@
},
"id": 6,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -345,7 +426,7 @@
"type": "table"
}
],
"schemaVersion": 16,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "postgres", "datasource-test"],
"templating": {
@@ -357,6 +438,7 @@
"value": "America"
},
"datasource": "gdev-postgres",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -377,10 +459,12 @@
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-postgres",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -403,6 +487,7 @@
"auto_count": 5,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -499,5 +584,5 @@
"timezone": "",
"title": "Datasource tests - Postgres",
"uid": "JYola5qzz",
"version": 4
"version": 5
}

View File

@@ -0,0 +1,491 @@
{
"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,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 32,
"w": 9,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "red",
"value": null
},
{
"color": "yellow",
"value": 50
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"labels": "",
"refId": "H",
"scenarioId": "random_walk"
},
{
"refId": "I",
"scenarioId": "random_walk"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"labels": "",
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 0
},
"id": 3,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 33,
"w": 7,
"x": 17,
"y": 0
},
"id": 6,
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "blue",
"value": 50
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
},
{
"refId": "R",
"scenarioId": "random_walk"
},
{
"refId": "S",
"scenarioId": "random_walk"
},
{
"refId": "T",
"scenarioId": "random_walk"
},
{
"refId": "U",
"scenarioId": "random_walk"
},
{
"refId": "V",
"scenarioId": "random_walk"
},
{
"refId": "W",
"scenarioId": "random_walk"
},
{
"refId": "X",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 11
},
"id": 7,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 22
},
"id": 8,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
}
],
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "demo"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Bar Gauge Demo Unfilled",
"uid": "xMsQdBfWz",
"version": 5
}

View File

@@ -0,0 +1,510 @@
{
"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": 1568372030444,
"links": [],
"panels": [
{
"content": "## Data link variables overview\n\nThis dashboard presents variables that one can use when creating *data links*. All links redirect to this dashboard and this panel represents the values that were interpolated in the link that was clicked.\n\n\n#### Series variables\n1. **Name:** <span style=\"color: orange;\">$seriesName</span>\n2. **label.datacenter:** <span style=\"color: orange;\">$labelDatacenter</span>\n3. **label.datacenter.region:** <span style=\"color: orange;\">$labelDatacenterRegion</span>\n\n#### Field variables\n1. **Name:** <span style=\"color: orange;\">$fieldName</span>\n\n#### Value variables\n1. **Time:** <span style=\"color: orange;\">$valueTime</span>\n2. **Numeric:** <span style=\"color: orange;\">$valueNumeric</span>\n3. **Text:** <span style=\"color: orange;\">$valueText</span>\n4. **Calc:** <span style=\"color: orange;\">$valueCalc</span>\n\n",
"gridPos": {
"h": 16,
"w": 6,
"x": 0,
"y": 0
},
"id": 8,
"mode": "markdown",
"options": {},
"timeFrom": null,
"timeShift": null,
"title": "",
"transparent": true,
"type": "text"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 9,
"x": 6,
"y": 0
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": [
{
"targetBlank": false,
"title": "Drill it down",
"url": "/d/wfTJJL5Wz/datalinks-source?var-seriesName=${__series.name}&var-labelDatacenter=${__series.labels.datacenter}&var-labelDatacenterRegion=${__series.labels[\"datacenter.region\"]}&var-valueTime=${__value.time}&var-valueNumeric=${__value.numeric}&var-valueText=${__value.text}"
}
]
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Foo datacenter",
"labels": "datacenter=foo,datacenter.region=us-east-1",
"refId": "A",
"scenarioId": "random_walk"
},
{
"alias": "Bar datacenter",
"labels": "datacenter=bar,datacenter.region=us-east-2",
"refId": "B",
"scenarioId": "random_walk"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Multiple series",
"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
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 8,
"w": 9,
"x": 15,
"y": 0
},
"id": 9,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": [
{
"targetBlank": false,
"title": "Drill it down",
"url": "/d/wfTJJL5Wz/datalinks-source?var-seriesName=${__series.name}&var-valueTime=${__value.time}&var-valueNumeric=${__value.numeric}&var-valueText=${__value.text}&var-fieldName=${__field.name}"
}
]
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Foo datacenter",
"labels": "datacenter=foo,datacenter.region=us-east-1",
"refId": "A",
"scenarioId": "random_walk_table",
"stringInput": ""
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Multiple fields",
"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
}
},
{
"cacheTimeout": null,
"datasource": "-- Dashboard --",
"gridPos": {
"h": 8,
"w": 9,
"x": 6,
"y": 8
},
"id": 6,
"links": [],
"options": {
"displayMode": "lcd",
"fieldOptions": {
"calcs": ["last"],
"defaults": {
"links": [
{
"targetBlank": true,
"title": "Drill it down!",
"url": "/d/wfTJJL5Wz/datalinks-source\n?var-fieldName=${__field.name}\n&var-labelDatacenter=${__series.labels.datacenter}\n&var-labelDatacenterRegion=${__series.labels[\"datacenter.region\"]}\n&var-valueNumeric=${__value.numeric}\n&var-valueText=${__value.text}\n&var-valueCalc=${__value.calc}"
}
],
"mappings": [
{
"id": 0,
"op": "=",
"text": "N/A",
"type": 1,
"value": "null"
}
],
"max": 100,
"min": 0,
"nullValueMode": "connected",
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
],
"title": "${__series.name} - $__calc",
"unit": "none"
},
"override": {},
"values": false
},
"orientation": "horizontal"
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Value reducers 1",
"type": "bargauge"
},
{
"datasource": "-- Dashboard --",
"gridPos": {
"h": 8,
"w": 9,
"x": 15,
"y": 8
},
"id": 4,
"options": {
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"links": [
{
"title": "Drill it down",
"url": "/d/wfTJJL5Wz/datalinks-source?var-fieldName=${__field.name}&var-labelDatacenter=${__series.labels.datacenter}&var-labelDatacenterRegion=${__series.labels[\"datacenter.region\"]}&var-valueNumeric=${__value.numeric}&var-valueText=${__value.text}&var-valueCalc=${__value.calc}"
}
],
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
],
"title": "${__series.name} - $__calc"
},
"override": {},
"values": false
},
"orientation": "auto",
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Value reducers 2",
"type": "gauge"
}
],
"schemaVersion": 20,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": "Series name",
"name": "seriesName",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "labelDatacenter",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "labelDatacenterRegion",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "valueTime",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "valueNumeric",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "valueText",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "valueCalc",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
},
{
"current": {
"text": "",
"value": ""
},
"hide": 2,
"label": null,
"name": "fieldName",
"options": [
{
"text": "",
"value": ""
}
],
"query": "",
"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": "Datalinks - variables",
"uid": "wfTJJL5Wz",
"version": 1
}

View File

@@ -0,0 +1,307 @@
{
"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,
"links": [],
"panels": [
{
"content": "## Data center = $datacenter\n\n### server = $server\n\n#### pod = $pod",
"gridPos": {
"h": 6,
"w": 15,
"x": 0,
"y": 0
},
"id": 4,
"mode": "markdown",
"options": {},
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "text"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"format": "none",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 6,
"w": 9,
"x": 15,
"y": 0
},
"id": 6,
"interval": null,
"links": [
{
"targetBlank": true,
"title": "Overview dashboard",
"url": "d/-Y-tnEDWk/dashboard-tests-nested-template-variables?orgId=1&${__all_variables}&${__url_time_range}"
}
],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": true,
"ymax": null,
"ymin": null
},
"tableColumn": "",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"thresholds": "",
"timeFrom": null,
"timeShift": null,
"title": "Panel drilldown link test",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-testdata",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 13,
"w": 24,
"x": 0,
"y": 6
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "$datacenter.$server.$pod",
"refId": "A",
"scenarioId": "random_walk"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Panel Title",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": false,
"schemaVersion": 19,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"allValue": null,
"current": {
"text": "A",
"value": ["A"]
},
"datasource": "gdev-testdata",
"definition": "*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "datacenter",
"options": [],
"query": "*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"text": "AA",
"value": ["AA"]
},
"datasource": "gdev-testdata",
"definition": "$datacenter.*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "server",
"options": [],
"query": "$datacenter.*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"text": "All",
"value": ["$__all"]
},
"datasource": "gdev-testdata",
"definition": "$datacenter.$server.*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "pod",
"options": [],
"query": "$datacenter.$server.*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Templating - Nested Variables Drilldown",
"uid": "O6GmNPvWk",
"version": 8
}

View File

@@ -0,0 +1,412 @@
{
"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": 13844,
"iteration": 1566896059256,
"links": [],
"panels": [
{
"content": "## Data center = $datacenter\n\n### server = $server\n\n#### pod = $pod",
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"id": 4,
"mode": "markdown",
"options": {},
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "text"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorValue": false,
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"datasource": "gdev-testdata",
"format": "none",
"gauge": {
"maxValue": 100,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 9,
"w": 4,
"x": 12,
"y": 0
},
"id": 6,
"interval": null,
"links": [
{
"targetBlank": true,
"title": "Drilldown detail dashboard",
"url": "d/O6GmNPvWk/dashboard-tests-nested-template-variables-drilldown?orgId=1&${__all_variables}&${__url_time_range}"
}
],
"mappingType": 1,
"mappingTypes": [],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": false,
"lineColor": "rgb(31, 120, 193)",
"show": true,
"ymax": null,
"ymin": null
},
"tableColumn": "",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"thresholds": "",
"timeFrom": null,
"timeShift": null,
"title": "Panel drilldown link test",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [
{
"op": "=",
"text": "N/A",
"value": "null"
}
],
"valueName": "avg"
},
{
"cacheTimeout": null,
"gridPos": {
"h": 9,
"w": 4,
"x": 16,
"y": 0
},
"id": 8,
"links": [],
"options": {
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"links": [
{
"targetBlank": true,
"title": "Go to drilldown",
"url": "/d/O6GmNPvWk/dashboard-tests-nested-template-variables-drilldown?orgId=1&${__all_variables}&${__url_time_range}"
}
],
"mappings": [],
"max": 100,
"min": 0,
"nullValueMode": "connected",
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
],
"unit": "none"
},
"override": {},
"values": false
},
"orientation": "horizontal",
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "React gauge datalink",
"type": "gauge"
},
{
"cacheTimeout": null,
"gridPos": {
"h": 9,
"w": 4,
"x": 20,
"y": 0
},
"id": 9,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"links": [
{
"targetBlank": true,
"title": "Go to drilldown",
"url": "/d/O6GmNPvWk/dashboard-tests-nested-template-variables-drilldown?orgId=1&${__all_variables}&${__url_time_range}"
}
],
"mappings": [],
"max": 100,
"min": 0,
"nullValueMode": "connected",
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
],
"unit": "none"
},
"override": {},
"values": false
},
"orientation": "vertical"
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "React gauge datalink",
"type": "bargauge"
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-testdata",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 13,
"w": 24,
"x": 0,
"y": 9
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "$datacenter.$server.$pod",
"refId": "A",
"scenarioId": "random_walk"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Panel Title",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"refresh": false,
"schemaVersion": 19,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"allValue": null,
"current": {
"text": "A",
"value": ["A"]
},
"datasource": "gdev-testdata",
"definition": "*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "datacenter",
"options": [],
"query": "*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"text": "AA",
"value": ["AA"]
},
"datasource": "gdev-testdata",
"definition": "$datacenter.*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "server",
"options": [],
"query": "$datacenter.*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"text": "All",
"value": ["$__all"]
},
"datasource": "gdev-testdata",
"definition": "$datacenter.$server.*",
"hide": 0,
"includeAll": true,
"label": null,
"multi": true,
"name": "pod",
"options": [],
"query": "$datacenter.$server.*",
"refresh": 1,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Templating - Nested Template Variables",
"uid": "-Y-tnEDWk",
"version": 2
}

View File

@@ -0,0 +1,530 @@
{
"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,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 0
},
"id": 8,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "purple",
"value": 50
},
{
"color": "blue",
"value": 70
}
],
"unit": "watt"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "I",
"scenarioId": "random_walk"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Basic vertical ",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 10,
"w": 12,
"x": 12,
"y": 0
},
"id": 22,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "blue",
"value": 25
},
{
"color": "orange",
"value": 37.5
},
{
"color": "purple",
"value": 43.75
},
{
"color": "red",
"value": 50
}
],
"unit": "watt"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Basic vertical (Unfilled)",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 10
},
"id": 12,
"links": [],
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Gradient ",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 10
},
"id": 23,
"links": [],
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Gradient (Unfilled)",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 19
},
"id": 21,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Title to left of bar",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 19
},
"id": 24,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Title to left of bar (Filled)",
"type": "bargauge"
}
],
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "panel-tests"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
},
"timezone": "",
"title": "Panel Tests - Bar Gauge 2",
"uid": "sRrEibfZk",
"version": 5
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,322 @@
{
"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,
"links": [],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 0,
"fillGradient": 6,
"gridPos": {
"h": 15,
"w": 12,
"x": 0,
"y": 0
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": true,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "1,20,90,30,5,0,100"
},
{
"refId": "B",
"scenarioId": "csv_metric_values",
"stringInput": "1,20,90,30,5,-100,200"
},
{
"refId": "C",
"scenarioId": "csv_metric_values",
"stringInput": "2.5,3.5,4.5,10.5,20.5,21.5,19.5"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Raw Data Graph",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"datasource": "-- Dashboard --",
"gridPos": {
"h": 5,
"w": 12,
"x": 12,
"y": 0
},
"id": 4,
"options": {
"fieldOptions": {
"calcs": ["lastNotNull"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"override": {},
"values": false
},
"orientation": "auto",
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Last non nulll",
"type": "gauge"
},
{
"datasource": "-- Dashboard --",
"gridPos": {
"h": 5,
"w": 12,
"x": 12,
"y": 5
},
"id": 6,
"options": {
"fieldOptions": {
"calcs": ["min"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
},
"override": {},
"values": false
},
"orientation": "auto",
"showThresholdLabels": false,
"showThresholdMarkers": true
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "min",
"type": "gauge"
},
{
"datasource": "-- Dashboard --",
"gridPos": {
"h": 5,
"w": 12,
"x": 12,
"y": 10
},
"id": 5,
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["max"],
"defaults": {
"mappings": [],
"max": 200,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "blue",
"value": 40
},
{
"color": "red",
"value": 120
}
]
},
"override": {},
"values": false
},
"orientation": "vertical"
},
"pluginVersion": "6.4.0-pre",
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Max",
"type": "bargauge"
},
{
"columns": [],
"datasource": "-- Dashboard --",
"fontSize": "100%",
"gridPos": {
"h": 10,
"w": 24,
"x": 0,
"y": 15
},
"id": 8,
"options": {},
"pageSize": null,
"showHeader": true,
"sort": {
"col": 0,
"desc": true
},
"styles": [
{
"alias": "Time",
"dateFormat": "YYYY-MM-DD HH:mm:ss",
"pattern": "Time",
"type": "date"
},
{
"alias": "",
"colorMode": null,
"colors": ["rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)"],
"decimals": 2,
"pattern": "/.*/",
"thresholds": [],
"type": "number",
"unit": "short"
}
],
"targets": [
{
"panelId": 2,
"refId": "A"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"transform": "timeseries_to_columns",
"type": "table"
}
],
"schemaVersion": 19,
"style": "dark",
"tags": ["gdev", "datasource-test"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Datasource tests - Shared Queries",
"uid": "ZqZnVvFZz",
"version": 10
}

View File

@@ -0,0 +1,810 @@
{
"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,
"links": [],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 0,
"y": 0
},
"id": 7,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,500,1000,3000,2500,4000,4500,5000,7000,7500,8000,8500,9000,9500,10000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 10K (unit short)",
"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": "10000",
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 8,
"y": 0
},
"id": 5,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,500,1000,3000,2500,4000,4500,5000,7000,7500,8000,8500,9000,9500,10000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 10K (unit bytes metric)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "decbytes",
"label": null,
"logBase": 1,
"max": "10000",
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 7,
"w": 8,
"x": 16,
"y": 0
},
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,500,1000,3000,2500,4000,4500,5000,7000,7500,8000,8500,9000,9500,10000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 10K (unit bytes IEC)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "bytes",
"label": null,
"logBase": 1,
"max": "10000",
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 8,
"x": 0,
"y": 7
},
"id": 2,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,500,1000,3000,2500,4000,4500,5000,7000,7500,8000,8500,9000,9500,10000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 10K (unit short)",
"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": "10000",
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 8,
"x": 8,
"y": 7
},
"id": 3,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0.001,0.0002,0.0003"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0.0002 - 0.001 (unit short)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"decimals": null,
"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
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 8,
"x": 16,
"y": 7
},
"id": 6,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "12000,15000,20000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 12000 - 30000 (unit ms)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"decimals": null,
"format": "ms",
"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
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"description": "",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 8,
"x": 0,
"y": 16
},
"id": 9,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,10000000000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 1B (unit short)",
"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": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"description": "",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 8,
"x": 8,
"y": 16
},
"id": 10,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "0,10000000000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 0 - 1B (unit bytes)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"decimals": null,
"format": "decbytes",
"label": "",
"logBase": 1,
"max": null,
"min": "0",
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 11,
"w": 8,
"x": 16,
"y": 16
},
"id": 8,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": true,
"total": false,
"values": false
},
"lines": true,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"refId": "A",
"scenarioId": "csv_metric_values",
"stringInput": "12000,15000,20000"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Data from 12000 - 30000 (unit ms)",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"decimals": null,
"format": "ms",
"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
}
}
],
"refresh": false,
"schemaVersion": 19,
"style": "dark",
"tags": ["gdev", "panel-tests"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Panel Tests - Graph - Y axis ticks",
"uid": "P7vAAhvZk",
"version": 1
}

View File

@@ -876,8 +876,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",
@@ -1975,8 +1975,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",
@@ -3054,8 +3054,8 @@
"value": "celsius"
},
{
"text": "Farenheit (°F)",
"value": "farenheit"
"text": "Fahrenheit (°F)",
"value": "fahrenheit"
},
{
"text": "Kelvin (K)",

View File

@@ -501,6 +501,237 @@
}
],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorPrefix": false,
"colorValue": false,
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"datasource": "gdev-testdata",
"decimals": null,
"description": "",
"format": "none",
"gauge": {
"maxValue": 150,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 8,
"x": 0,
"y": 14
},
"id": 8,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": true,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "Info",
"targets": [
{
"alias": "",
"expr": "",
"format": "time_series",
"intervalFactor": 1,
"refId": "A",
"scenarioId": "random_walk_table",
"stringInput": ""
}
],
"thresholds": "81,90",
"title": "TableData 'Info' string Column",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorPrefix": false,
"colorValue": false,
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"datasource": "gdev-testdata",
"decimals": 2,
"description": "",
"format": "celsius",
"gauge": {
"maxValue": 150,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 8,
"x": 8,
"y": 14
},
"id": 9,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": true,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "Min",
"targets": [
{
"alias": "",
"expr": "",
"format": "time_series",
"intervalFactor": 1,
"refId": "A",
"scenarioId": "random_walk_table",
"stringInput": ""
}
],
"thresholds": "81,90",
"title": "TableData 'Value' as temp Column",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [],
"valueName": "current"
},
{
"cacheTimeout": null,
"colorBackground": false,
"colorPrefix": false,
"colorValue": false,
"colors": ["#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a"],
"datasource": "gdev-testdata",
"decimals": null,
"description": "",
"format": "dateTimeFromNow",
"gauge": {
"maxValue": 150,
"minValue": 0,
"show": false,
"thresholdLabels": false,
"thresholdMarkers": true
},
"gridPos": {
"h": 4,
"w": 8,
"x": 16,
"y": 14
},
"id": 10,
"interval": null,
"links": [],
"mappingType": 1,
"mappingTypes": [
{
"name": "value to text",
"value": 1
},
{
"name": "range to text",
"value": 2
}
],
"maxDataPoints": 100,
"nullPointMode": "connected",
"nullText": null,
"options": {},
"postfix": "",
"postfixFontSize": "50%",
"prefix": "",
"prefixFontSize": "50%",
"rangeMaps": [
{
"from": "null",
"text": "N/A",
"to": "null"
}
],
"sparkline": {
"fillColor": "rgba(31, 118, 189, 0.18)",
"full": true,
"lineColor": "rgb(31, 120, 193)",
"show": false
},
"tableColumn": "time",
"targets": [
{
"alias": "",
"expr": "",
"format": "time_series",
"intervalFactor": 1,
"refId": "A",
"scenarioId": "random_walk",
"stringInput": ""
}
],
"thresholds": "81,90",
"title": "last_time display (a few seconds ago)",
"type": "singlestat",
"valueFontSize": "80%",
"valueMaps": [],
"valueName": "last_time"
}
],
"refresh": false,

View File

@@ -0,0 +1,512 @@
{
"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,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 3,
"w": 24,
"x": 0,
"y": 0
},
"id": 6,
"interval": "6m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__house_locations",
"labels": "",
"min": 0,
"noise": 5,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 100
}
],
"timeFrom": null,
"timeShift": null,
"title": "",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 3
},
"id": 10,
"interval": "7m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__house_locations",
"min": 0,
"noise": 10,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 10
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 9
},
"id": 14,
"interval": "7m",
"options": {
"colorMode": "value",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__house_locations",
"min": 0,
"noise": 10,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 10
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 14,
"w": 6,
"x": 0,
"y": 15
},
"id": 13,
"interval": "5m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "horizontal",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__server_names",
"min": 0,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 7,
"spread": 100
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 4,
"x": 6,
"y": 15
},
"id": 8,
"interval": "10m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "line",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 9,
"w": 8,
"x": 10,
"y": 15
},
"id": 12,
"interval": "10m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "line",
"justifyMode": "auto",
"orientation": "horizontal",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
}
],
"schemaVersion": 22,
"style": "dark",
"tags": ["gdev", "panel-tests"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Panel Tests - Stat"
}

View File

@@ -0,0 +1,4 @@
FROM jmferrer/apache2-reverse-proxy:latest
COPY ports.conf /etc/apache2/sites-enabled
COPY proxy.conf /etc/apache2/sites-enabled

View File

@@ -0,0 +1,10 @@
# This will proxy all requests for http://localhost:10081/grafana/ to
# http://localhost:3000 (Grafana running locally)
#
# Please note that you'll need to change the root_url in the Grafana configuration:
# root_url = %(protocol)s://%(domain)s:10081/grafana/
apacheproxy:
build: docker/blocks/apache_proxy_mac
ports:
- "10081:10081"

View File

@@ -0,0 +1 @@
Listen 10081

View File

@@ -0,0 +1,4 @@
<VirtualHost *:10081>
ProxyPass /grafana/ http://host.docker.internal:3000/
ProxyPassReverse /grafana/ http://host.docker.internal:3000/
</VirtualHost>

View File

@@ -9,7 +9,7 @@
image: grafana/fake-data-gen
links:
- elasticsearch5
# network_mode: bridge
environment:
FD_SERVER: elasticsearch5
FD_DATASOURCE: elasticsearch
FD_PORT: 10200
FD_PORT: 9200

View File

@@ -9,10 +9,12 @@
fake-elastic6-data:
image: grafana/fake-data-gen
network_mode: bridge
links:
- elasticsearch6
environment:
FD_SERVER: elasticsearch6
FD_DATASOURCE: elasticsearch6
FD_PORT: 11200
FD_PORT: 9200
filebeat6:
image: docker.elastic.co/beats/filebeat-oss:6.7.1

View File

@@ -9,10 +9,12 @@
fake-elastic7-data:
image: grafana/fake-data-gen
network_mode: bridge
links:
- elasticsearch7
environment:
FD_SERVER: elasticsearch7
FD_DATASOURCE: elasticsearch7
FD_PORT: 12200
FD_PORT: 9200
filebeat7:
image: docker.elastic.co/beats/filebeat-oss:7.0.0
@@ -24,7 +26,6 @@
metricbeat7:
image: docker.elastic.co/beats/metricbeat-oss:7.0.0
network_mode: host
command: metricbeat -e -strict.perms=false
user: root
volumes:
@@ -35,5 +36,7 @@
image: docker.elastic.co/kibana/kibana-oss:7.0.0
ports:
- "5601:5601"
links:
- elasticsearch7
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch7:9200

View File

@@ -28,11 +28,11 @@ processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: ["localhost:12200"]
hosts: ["elasticsearch7:9200"]
index: "metricbeat-%{+yyyy.MM.dd}"
setup.template.name: "metricbeat"
setup.template.pattern: "metricbeat-*"
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 1
index.number_of_replicas: 1

View File

@@ -1,6 +1,27 @@
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "127.0.0.1:6831:6831/udp"
- "6831:6831"
- "16686:16686"
# Additional loki to generate some traces
# datasource URL: http://localhost:3100/
loki:
image: grafana/loki:master
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
# Optional jaeger tracing
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_TYPE=const
- JAEGER_SAMPLER_PARAM=1
promtail:
image: grafana/promtail:master
volumes:
- ./docker/blocks/loki/config.yaml:/etc/promtail/docker-config.yaml
- /var/log:/var/log
- ../data/log:/var/log/grafana
command:
-config.file=/etc/promtail/docker-config.yaml

View File

@@ -1,9 +1,9 @@
# datasource URL: http://localhost:3100/
loki:
image: grafana/loki:master
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
promtail:
image: grafana/promtail:master
volumes:

View File

@@ -0,0 +1,27 @@
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
client:
url: http://loki0.3:3100/api/prom/push
scrape_configs:
- job_name: system
entry_parser: raw
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
- job_name: grafana
entry_parser: raw
static_configs:
- targets:
- localhost
labels:
job: grafana
__path__: /var/log/grafana/*log

View File

@@ -0,0 +1,15 @@
# datasource URL: http://localhost:3103/
loki0.3:
image: grafana/loki:v0.3.0
ports:
- "3103:3100"
command: -config.file=/etc/loki/local-config.yaml
promtail0.3:
image: grafana/promtail:v0.3.0
volumes:
- ./docker/blocks/loki0.3/config.yaml:/etc/promtail/docker-config.yaml
- /var/log:/var/log
- ../data/log:/var/log/grafana
command:
-config.file=/etc/promtail/docker-config.yaml

View File

@@ -0,0 +1,27 @@
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
client:
url: http://loki0.4:3100/api/prom/push
scrape_configs:
- job_name: system
entry_parser: raw
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
- job_name: grafana
entry_parser: raw
static_configs:
- targets:
- localhost
labels:
job: grafana
__path__: /var/log/grafana/*log

View File

@@ -0,0 +1,15 @@
# datasource URL: http://localhost:3104/
loki0.4:
image: grafana/loki:v0.4.0
ports:
- "3104:3100"
command: -config.file=/etc/loki/local-config.yaml
promtail0.4:
image: grafana/promtail:v0.4.0
volumes:
- ./docker/blocks/loki0.4/config.yaml:/etc/promtail/docker-config.yaml
- /var/log:/var/log
- ../data/log:/var/log/grafana
command:
-config.file=/etc/promtail/docker-config.yaml

View File

@@ -1,4 +1,4 @@
FROM microsoft/mssql-server-linux:2017-CU4
FROM mcr.microsoft.com/mssql/server:2017-CU4-ubuntu
WORKDIR /usr/setup
COPY . /usr/setup
RUN chmod +x /usr/setup/setup.sh

View File

@@ -0,0 +1 @@
mysql_version=5.6

View File

@@ -1,5 +1,5 @@
mysql:
image: mysql:5.6
image: mysql:${mysql_version}
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: grafana

View File

@@ -0,0 +1,42 @@
events { worker_connections 1024; }
http {
sendfile on;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
server {
listen 10080;
location /grafana/ {
################################################################
# Enable these settings to test with basic auth and an auth proxy header
# the htpasswd file contains an admin user with password admin and
# user1: grafana and user2: grafana
################################################################
################################################################
# To use the auth proxy header, set the following in custom.ini:
# [auth.proxy]
# enabled = true
# header_name = X-WEBAUTH-USER
# header_property = username
################################################################
location /grafana/login {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_set_header X-WEBAUTH-USER $remote_user;
proxy_pass http://localhost:3000/login;
}
proxy_set_header Authorization "";
proxy_pass http://localhost:3000/;
}
}
}

View File

@@ -5,7 +5,7 @@
# root_url = %(protocol)s://%(domain)s:10080/grafana/
nginxproxy:
build: docker/blocks/nginx_proxy
build: docker/blocks/nginx_proxy_mac
ports:
- "10080:10080"

View File

@@ -0,0 +1,42 @@
events { worker_connections 1024; }
http {
sendfile on;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
server {
listen 10080;
location /grafana/ {
################################################################
# Enable these settings to test with basic auth and an auth proxy header
# the htpasswd file contains an admin user with password admin and
# user1: grafana and user2: grafana
################################################################
################################################################
# To use the auth proxy header, set the following in custom.ini:
# [auth.proxy]
# enabled = true
# header_name = X-WEBAUTH-USER
# header_property = username
################################################################
location /grafana/login {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/htpasswd;
proxy_set_header X-WEBAUTH-USER $remote_user;
proxy_pass http://host.docker.internal:3000/login;
}
proxy_set_header Authorization "";
proxy_pass http://host.docker.internal:3000/;
}
}
}

View File

@@ -0,0 +1 @@
postgres_version=9.3

View File

@@ -1,5 +1,5 @@
postgrestest:
image: postgres:9.3
postgres:
image: postgres:${postgres_version}
environment:
POSTGRES_USER: grafana
POSTGRES_PASSWORD: password
@@ -7,6 +7,11 @@
ports:
- "5432:5432"
command: postgres -c log_connections=on -c logging_collector=on -c log_destination=stderr -c log_directory=/var/log/postgresql
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "$$POSTGRES_DATABASE", "-U", "$$POSTGRES_USER" ]
timeout: 45s
interval: 10s
retries: 10
fake-postgres-data:
image: grafana/fake-data-gen
@@ -14,3 +19,6 @@
environment:
FD_DATASOURCE: postgres
FD_PORT: 5432
depends_on:
postgres:
condition: service_healthy

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.9.0 AS builder
FROM golang:1.13.4 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

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

View File

@@ -0,0 +1,6 @@
slow_proxy_mac:
build: docker/blocks/slow_proxy_mac
ports:
- '3011:3011'
environment:
ORIGIN_SERVER: 'http://host.docker.internal:9090/'

View File

@@ -0,0 +1,31 @@
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
"net/url"
"os"
"time"
)
func main() {
origin := os.Getenv("ORIGIN_SERVER")
if origin == "" {
origin = "http://host.docker.internal:9090/"
}
sleep := time.Minute
originURL, _ := url.Parse(origin)
proxy := httputil.NewSingleHostReverseProxy(originURL)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Printf("sleeping for %s then proxying request: %s", sleep.String(), r.RequestURI)
<-time.After(sleep)
proxy.ServeHTTP(w, r)
})
log.Fatal(http.ListenAndServe(":3011", nil))
}

View File

@@ -1,2 +1,2 @@
version: "2"
version: "2.1"
services:

View File

@@ -7,7 +7,7 @@ Included services
* Grafana
* Mysql - Grafana configuration database and session storage
* Prometheus - Monitoring of Grafana and used as datasource of provisioned alert rules
* Prometheus - Monitoring of Grafana and used as data source of provisioned alert rules
* Nginx - Reverse proxy for Grafana and Prometheus. Enables browsing Grafana/Prometheus UI using a hostname
## Prerequisites

View File

@@ -101,7 +101,7 @@ provision() {
requiresJsonnet
rm -rf grafana/provisioning/dashboards/alerts/alert-*.json
find grafana/provisioning/dashboards/alerts -maxdepth 1 -name 'alert*.json' -delete
jsonnet -m grafana/provisioning/dashboards/alerts grafana/provisioning/alerts.jsonnet --ext-code alerts=$alerts --ext-code condition=$condition
}

View File

@@ -35,6 +35,12 @@ Run load test for 10 virtual users:
$ ./run.sh -v 10
```
Run auth token slow test (random query latency between 1 and 30 seconds):
```bash
$ ./run.sh -c auth_token_slow_test -s 30
```
Run auth proxy test:
```bash

View File

@@ -0,0 +1,71 @@
import { sleep, check, group } from 'k6';
import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
noCookiesReset: true
};
let endpoint = __ENV.URL || 'http://localhost:3000';
const client = createClient(endpoint);
export const setup = () => {
const basicAuthClient = createBasicAuthClient(endpoint, 'admin', 'admin');
const orgId = createTestOrgIfNotExists(basicAuthClient);
const datasourceId = createTestdataDatasourceIfNotExists(basicAuthClient);
client.withOrgId(orgId);
return {
orgId: orgId,
datasourceId: datasourceId,
};
}
export default (data) => {
group("annotation by tag test", () => {
if (__ITER === 0) {
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,
});
});
}
if (__ITER !== 0) {
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,
}]
};
requests.push({ method: 'GET', url: '/api/annotations?from=1580825186534&to=1580846786535' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
});
}
});
}
});
sleep(5)
}
export const teardown = (data) => {}

View File

@@ -0,0 +1,73 @@
import { sleep, check, group } from 'k6';
import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
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 client = createClient(endpoint);
export const setup = () => {
const basicAuthClient = createBasicAuthClient(endpoint, 'admin', 'admin');
const orgId = createTestOrgIfNotExists(basicAuthClient);
const datasourceId = createTestdataDatasourceIfNotExists(basicAuthClient);
client.withOrgId(orgId);
return {
orgId: orgId,
datasourceId: datasourceId,
};
}
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", () => {
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,
});
});
}
if (__ITER !== 0) {
group('batch tsdb requests', () => {
const batchCount = 20;
const requests = [];
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,
}]
};
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
});
}
});
}
});
sleep(5)
}
export const teardown = (data) => {}

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