Compare commits

...

1209 Commits

Author SHA1 Message Date
Arve Knudsen b72a0c81b9 CircleCI: Update grabpl
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-28 14:19:05 +02:00
Arve Knudsen 37b9ad2efe Release 7.0.0-beta1
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-28 11:20:21 +02:00
Arve Knudsen 29a3641147 Update changelogs
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-28 11:07:07 +02:00
Dieter Plaetinck 3d17d63891 Metrictank: Fix meta inspector consolidator field names (#23838)
to match https://github.com/grafana/metrictank/pull/1798
2020-04-28 10:48:21 +02:00
Ivana Huckova 94e28cb65b Docs: Query history 7.0 updates (#23955)
* Update docs about query history

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

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-04-28 10:21:59 +02:00
Marcus Andersson 7d58ec3d47 AlertTab: some ui updates (#23971)
* updated the alerting tab.

* changed so we use a confirm button.

* removed uncommeneted import.

* Change to secondary buttons

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

* trying to fix issue with panel of undefined.

* Fix prettier

* Update public/app/features/alerting/AlertTab.tsx

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-28 10:06:27 +02:00
Marcus Andersson cc3fc18076 Docs: enable packages reference docs for 7-beta (#23953)
* added packages reference menu item.

* removed the draft flag.

* Updated docs by running script.
2020-04-28 09:53:58 +02:00
Arve Knudsen 5442b0ab4f Docs: Fix building of docs (#23923)
* Docs: Fix building of docs
* CircleCI: Fixate grafana/docs-base image revision in job for building docs
2020-04-28 09:27:46 +02:00
Ryan McKinley 02140fff2d TestData/Graph: load arrow and zoom to data range (#23764) 2020-04-27 16:41:41 -07:00
Andrej Ocenas 843141d9da CloudWatch: Remove cloud watch flag (#23974) 2020-04-27 23:53:35 +02:00
Andrej Ocenas f13f54c84f Explore: Fix query rows styles (#23973) 2020-04-27 23:53:15 +02:00
Dominik Prokop 8de606aa22 Various 7.0 UI tweaks (#23972)
* Set min height of panel pane to 200px

* Disable badge on viz picker when item is in disabled in search results

* Fix UserProfile inputs width

* Remove select caret in user admin permissions editor

* fix 23911
2020-04-27 23:28:24 +02:00
Torkel Ödegaard 6a1845997b Panels: Update panel logos (#23964) 2020-04-27 22:08:43 +02:00
Jan Garaj 796c6781b4 Docs: Add DescribeAlarms to minimal IAM policy (#23968)
DescribeAlarmHistory is used in the prefix matching of the annotations query
2020-04-27 13:02:18 -07:00
Arve Knudsen d6cefafa12 Docs: Mark macro examples as code (#23932)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-27 21:43:32 +02:00
Mohit Nain be7391550f Docs: Suggesting multiple changes for better readability (#23843)
* Suggesting multiple changes for better readability

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

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

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

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

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

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-04-27 12:31:54 -07:00
Mohit Nain 7a0fecb578 Docs: Multiple changes to make document easier to read (#23842)
* multiple changes to make document easier to read

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

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

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

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

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

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

* Update docs/sources/features/datasources/loki.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-04-27 12:21:55 -07:00
Marcus Efraimsson b22649bf8d Dashboard: Handle min refresh interval when importing dashboard (#23959)
If refresh interval is lower than minimum refresh interval
when importing dashboard, use the minimum refresh interval
instead of returning error.

Fixes #23099
2020-04-27 21:17:28 +02:00
Marcus Efraimsson 0a1650d265 Image rendering: Fix missing icon on plugins list (#23958)
Fixes #23189
2020-04-27 21:15:44 +02:00
Jan Garaj c45b6c86e1 Docs: Add DescribeAlarmHistory to minimal IAM policy (#23965)
DescribeAlarmHistory is used in the annotations query.
2020-04-27 21:13:46 +02:00
Amal 48e3b8e022 Docs: Minor correction in documentation (#23899)
* Minor correction in documentation

* Refactoring the previous change
2020-04-27 12:08:34 -07:00
Carl Bergquist 28a5530fc9 docs: adds provisioning config example (#23940) 2020-04-27 20:54:03 +02:00
Hugo Häggmark d91c0d1dec PanelEditor: fixes save/apply for undefined props in restoreModel (#23939)
* PanelEditor: fixes save/apply for undefined props in restoreModel

* Refactor: changes after PR comments

* Refactor: changes sourcePanel refresh strategy

* Added unit tests and minor refactoring of method, starting with cleanup, then setting properties from model

* Update public/app/features/dashboard/state/PanelModel.test.ts

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-27 20:50:33 +02:00
Kyle Brandt 0dc8f4ea89 backend_plugins: duration support in Frame (#23962)
sdk v0.57.0
go mod tidy
2020-04-27 14:48:20 -04:00
Dominik Prokop 594ad77125 Make sidemenu header accept onClick events (#23957) 2020-04-27 20:36:28 +02:00
Torkel Ödegaard 0742dbc9be MaxDataPoints: Now used in interval calculation for all data sources (#23915)
* MaxDataPoints: Now enabled for all

* Updates to code and test

* Moved the panel query inspector

* PaneQueryRunner: Simplify logic and only take in maxDataPoints not width
2020-04-27 18:29:41 +02:00
Alex Khomenko 32492dd650 Search/ui issues (#23945)
* Search: Move layout to query reducer/hook

* Search: Move extra layout/sort logic to reducer

* Search: Tweak action row spacing

* Search: Update TagOption

* Search: Remove duplicate function

* Search: Add Clear tags button

* Search: Align checkbox

* Search: Add TagFilter.displayName

* Search: Update default placeholder

* Search: Return all dashboards for list view

* Search: Apply custom line-height to ActionRow checkbox
2020-04-27 19:16:03 +03:00
Arve Knudsen 295e15246e Fix Dockerfile* (#23954)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-27 18:13:27 +02:00
Marcus Olsson fdf551dd0a Update data frame concept doc (#23921)
* Update data frame concept doc

* Fix typo

* Fix typo
2020-04-27 17:49:12 +02:00
Daniel Lee c05049f395 azuremonitor: port azure log analytics query function to the backend (#23839)
* azuremonitor: add support for log analytics macros

Also adds tests for the kql macros

* azuremonitor: backend implementation for Log Analytics

* azuremonitor: remove gzip header from plugin route

The Go net/http library adds an accept encoding header
for gzip automatically.

https://golang.org/src/net/http/transport.go\#L2454

So no need to specify it manually

* azuremonitor: parses log analytics time series

* azuremonitor: support for table data for Log Analytics

* azuremonitor: for log analytics switch to calling the API...

...from the backend for time series and table queries.

* azuremonitor: fix missing err check

* azuremonitor: support Azure China, Azure Gov...

for log analytics on the backend.

* azuremonitor: review fixes

* azuremonitor: rename test files folder to testdata

To follow Go conventions for test data in tests

* azuremonitor: review fixes

* azuremonitor: better error message for http requests

* azuremonitor: fix for load workspaces on config page

* azuremonitor: strict null check fixes

Co-authored-by: bergquist <carl.bergquist@gmail.com>
2020-04-27 17:43:02 +02:00
Torkel Ödegaard 458f6bdb87 PanelEditor: Fixed issue with PanelModel change plugin type (#23949) 2020-04-27 17:32:35 +02:00
Marcus Efraimsson 76650e60e4 Image Rendering: New setting to control render request concurrency (#23950)
Fixes #23806

Co-Authored-By: Torkel Ödegaard <torkel@grafana.com>
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-27 17:25:08 +02:00
Marcus Andersson 14de3db275 Build: adding support to rollup *.json files to include moment-timezone data. (#23951) 2020-04-27 17:20:15 +02:00
Marcus Efraimsson 854085dbc6 Dashboard: Enforce min dashboard refresh interval to 5 seconds per default (#23929)
Fixes #22493
2020-04-27 16:51:54 +02:00
Torkel Ödegaard 2c0a1d8428 Search: Adds search to main nav and removes open search click on dashboard name (#23943)
* Search: Adds search to main nav and removes open search click on dashboard name

* Updated snapshots

* Fixed strict null errors

* Fixed type issue
2020-04-27 16:38:04 +02:00
Tobias Skarhed 1b9a926afc Storybook: Add intro and reorganize (#23924)
* Update Intro

* Reorganize stories

* Hide panel for ThemeColors

* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx

Co-Authored-By: Alex Khomenko <Clarity-89@users.noreply.github.com>

* Update intro

* Hide panel on Icon story

* Update README

* Add link

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-04-27 15:38:30 +02:00
Dominik Prokop be712157e3 NewPanelEditor: fix wrong path to time regions template causing panel editor to bug (#23946) 2020-04-27 15:33:27 +02:00
Jon Gyllenswärd 9f04f8001f Disable emitDataRequest from explore (#23926) 2020-04-27 16:32:40 +03:00
Marcus Andersson 1a0c1a39e4 DateTime: adding support to select preferred timezone for presentation of date and time values. (#23586)
* added moment timezone package.

* added a qnd way of selecting timezone.

* added a first draft to display how it can be used.

* fixed failing tests.

* made moment.local to be in utc when running tests.

* added tests to verify that the timeZone support works as expected.

* Fixed so we use the formatter in the graph context menu.

* changed so we will format d3 according to timeZone.

* changed from class base to function based for easier consumption.

* fixed so tests got green.

* renamed to make it shorter.

* fixed formatting in logRow.

* removed unused value.

* added time formatter to flot.

* fixed failing tests.

* changed so history will use the formatting with support for timezone.

* added todo.

* added so we append the correct abbrivation behind time.

* added time zone abbrevation in timepicker.

* adding timezone in rangeutil tool.

* will use timezone when formatting range.

* changed so we use new functions to format date so timezone is respected.

* wip - dashboard settings.

* changed so the time picker settings is in react.

* added force update.

* wip to get the react graph to work.

* fixed formatting and parsing on the timepicker.

* updated snap to be correct.

* fixed so we format values properly in time picker.

* make sure we pass timezone on all the proper places.

* fixed so we use correct timeZone in explore.

* fixed failing tests.

* fixed so we always parse from local to selected timezone.

* removed unused variable.

* reverted back.

* trying to fix issue with directive.

* fixed issue.

* fixed strict null errors.

* fixed so we still can select default.

* make sure we reads the time zone from getTimezone
2020-04-27 15:28:06 +02:00
Mohit Nain 365de313f3 docs/sources/features/datasources/mysql.md: Improve language 2020-04-27 14:53:35 +02:00
Mohit Nain bcc3118d09 docs/sources/features/datasources/opentsdb.md: Language improvements 2020-04-27 14:52:09 +02:00
Mohit Nain 1c69836869 docs/sources/features/datasources/prometheus.md: Fix language
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-27 14:51:28 +02:00
Alexander Zobnin fa710a3172 Rendering: Add metrics (#23827)
* Rendering: base metrics

* Rendering: rendering_queue_size metric

* Chore: fix linter error

* Rendering metrics: refactoring

* Apply suggestions from code review

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

* Rendering metrics: handle DeadlineExceeded errors

* Rendering metrics: don't measure canceled request time

* Rendering metrics: revert deleting summary for canceled requests

* Update pkg/services/rendering/rendering.go

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

* Rendering: return ErrTimeout if context deadline exceeded

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-27 15:29:46 +03:00
Emil Tullstedt 830e8dc5fd Search: Replace search implementation (#23855) 2020-04-27 14:16:03 +02:00
Sofia Papagiannaki bace47d40e Fix build-container (#23942) 2020-04-27 15:12:11 +03:00
Alex Khomenko 9771b1c745 Search/fix folder sort (#23893)
* Search: Move layout to query reducer/hook

* Search: Refactor search_srv

* Search: Fix types

* Search: Move extra layout/sort logic to reducer

* Search: Fix Select min-width

* Search: Fix filter by starred

* Search: Update tests

* Search: Simplify query return

* Search: Set width to auto on HorizontalGroup

* Search: Fix tests
2020-04-27 15:08:48 +03:00
Dominik Prokop 410e2a8ca0 NewPanelEditor: Fix visualisation list badge verflow (#23936) 2020-04-27 14:05:45 +02:00
Ivana Huckova 1c750169bd Icon: Update sigin icon (#23933) 2020-04-27 14:02:23 +02:00
Mohit Nain 7af0d1e8c0 docs/sources/features/datasources/testdata.md: Fix language 2020-04-27 13:54:42 +02:00
Agnès Toulet f455f06540 DashNav: refactor action buttons and custom content (#23868)
* DashNav: refactor action buttons and custom content

* DashNav: remove code duplication

* DashNav: fix custom element display

* DashNav: fix strictNullChecks
2020-04-27 13:30:55 +02:00
Daniel Lee b0488259d0 azuremonitor: fix for app insights azure china url (#23877) 2020-04-27 12:40:11 +02:00
Tobias Skarhed f31f17d559 Fix strict nulls (#23931) 2020-04-27 12:07:32 +02:00
Tobias Skarhed d0e23af228 Angular/Forms migration: Orgs list (#23821)
* Create new components

* Fix async issues

* Remove comments

* Update public/app/features/admin/AdminOrgsTable.tsx

* Update public/app/features/admin/AdminListOrgsPage.tsx

* Update public/app/features/admin/AdminListOrgsPage.tsx

* Remove angular code

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-27 10:00:17 +02:00
Hugo Häggmark b09b49fb37 e2e: creates a separate package for selectors (#23858)
* Initial commit

* Chore: fixes after merge

* Chore: removes todos

* Chore: uncomment test

* Chore: adds missing externals to rollup config

* Refactor: selectors is master for everything

* Docs: updates Docs

* Chore: adds e2e-selectors to publish
2020-04-27 09:09:05 +02:00
Dominik Prokop 9ac7263e66 DashboardSave: fix save dashboard when changes are detected (#23909) 2020-04-27 08:07:56 +02:00
Ryan McKinley 5211a23f8d Chore: show grafana labs not project (#23913) 2020-04-26 15:34:56 -07:00
Torkel Ödegaard 49276f2c12 QueryTab: Design updates (#23906)
* WIP: first stage

* Another take

* argghhh

* Updated

* My brain is mush

* Minor progress

* Progres

* Starting to work

* Fixes

* fixed e2e
2020-04-26 21:59:14 +02:00
Alex Khomenko b9a40fc346 Search: Fix expanded folder icon (#23903) 2020-04-26 16:12:49 +03:00
Dominik Prokop 3bd9e1dda3 NewPanelEditor: vis picker UI update (#23894)
* Fix storybook

* Add deprecated/alpha badge to panels in viz picker, fix long title display

* Move getFocusCss to mixins

* Updated hover/active state of vis picker item

* try fixing e2e

* Add removed label for e2e to be happy happy happy
2020-04-26 13:16:31 +02:00
Dominik Prokop 6dfad3b352 grafana/toolkit: Do not suggest Angular panel anymore, add note about Grafana tutorials (#23902) 2020-04-26 13:16:04 +02:00
Amal 20286dac53 Fix grammatical errors in documentation (#23900)
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-26 12:07:20 +02:00
Dominik Prokop 4b00594758 Docs: Add doc comments for PanelPlugin (#23896) 2020-04-26 11:14:21 +02:00
Amal fd6502b32f Minor grammatical correction (#23898) 2020-04-26 10:53:37 +02:00
Torkel Ödegaard c797ae2527 Search: Minor tweak to placeholder color 2020-04-26 10:31:44 +02:00
Diana Payton 737f629145 Docs: Edit prometheus data source doc (#23760)
* Update prometheus.md

* Editing

* Update prometheus.md

* Update add-a-data-source.md

* Update prometheus.md

Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
2020-04-26 09:42:24 +02:00
kay delaney f48ba11d4c Datasource/Cloudwatch: Adds support for Cloudwatch Logs (#23566)
* Datasource/Cloudwatch: Adds support for Cloudwatch Logs

* Fix rebase leftover

* Use jsurl for AWS url serialization

* WIP: Temporary workaround for CLIQ metrics

* Only allow up to 20 log groups to be selected

* WIP additional changes

* More changes based on feedback

* More changes based on PR feedback

* Fix strict null errors
2020-04-25 22:48:20 +02:00
Dominik Prokop af00fa7214 PanelPlugin: add deprecation notice to setEditor method (#23895) 2020-04-25 22:46:51 +02:00
Kyle Brandt 68e5b72cde Docs: Plugin docs for Dataframes (#23483)
Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
2020-04-25 19:39:26 +02:00
Dominik Prokop a56e55ac6c NewPanelEditor: increase sidebar min width, value mappings radio no longer full width (#23889) 2020-04-25 17:38:37 +02:00
Amal d1665222a7 Minor change for better readability (#23884) 2020-04-25 17:24:09 +02:00
Amal d9376035a4 Minor grammatical correction (#23885) 2020-04-25 17:23:06 +02:00
Dominik Prokop d654255d32 NewPanelEditor: adjust panel menu items (#23888) 2020-04-25 16:15:08 +02:00
Tobias Skarhed ff4d199ce4 Migration: Admin org edit page (#23866)
* Start migration

* Migrate admin org edit page
2020-04-25 14:14:22 +02:00
Torkel Ödegaard e23f72b7fc RadioButtons: Updates design and no longer full width in panel edit (#23883) 2020-04-25 14:13:44 +02:00
Torkel Ödegaard e505babbf4 ManageDashboards: Fixes and improvements (#23879)
* ManageDashboards: Fixes and improvements

* Fixed tests

* Fixed issue with item height and margin
2020-04-25 13:08:23 +02:00
Torkel Ödegaard d6ba6440e4 Singlestat: Adds migration button and logic to migrate singlestat to stat panel (#23845)
* Singlestat: Migration button to migrate to new stat panel

* updated test
2020-04-25 11:00:27 +02:00
Dominik Prokop c7b7a08baf NewPanelEditor: Make variables wrap and small layout refactor (#23862)
* NewPanelEditor: Make variables wrap  and small layout refactor

* review fix
2020-04-25 07:55:42 +02:00
Torkel Ödegaard ef5cbee2b3 Search: Improvements to design (#23874)
* Search: updated design

* Fixed z-index

* Fixes

* Minor pixel push
2020-04-25 07:43:54 +02:00
Ivana Huckova 21cbcde15f Revert rc-slider dependency update, add z-index to tooltip (#23873) 2020-04-24 23:04:36 +02:00
tmarszal 2e6a713d25 Docs: Add version note about Stackdriver SLO queries (#23844)
Ref #22917

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-24 22:27:58 +02:00
Ivana Huckova 818f63f81e Zipkin: Add method to display query text (#23870) 2020-04-24 19:53:19 +02:00
Carl Bergquist 78566de75a adds template for backend datasource (#23864) 2020-04-24 19:45:45 +02:00
Torkel Ödegaard 6f02b51561 Search: Improving search look and feel (#23854)
* Search: Improving search look and feel

* Fixed issue with tag filter beeing cramped and wrapping tags

* Minor tag polish

* fixed type
2020-04-24 19:23:45 +02:00
Arve Knudsen 76b184b93c Packages: Bundle plugins (#23787)
* Add manifest for external plugins
* CircleCI: Build internal plug-ins
* CircleCI: Package internal and external plug-ins

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-24 19:01:34 +02:00
Ivana Huckova 66e5a1c0b3 Rich history: Fix create url and run query & style updates (#23627)
* Styling updates

* Create getQueryFromDisplayText method for Jaeger, Loki, Prometheus

* Fix createLink and runQuery methods for all datasources

* Update test

* Update Select from Legacy to current

* Update filtering

* Update public/app/core/utils/richHistory.test.ts

* Fix strictnullcheck errors

* Remove getQueryFromDisplayText method, as not needed

* Update saving of full query and use displayText for formatting

* Update tests

* Refactor create data query

* Remove parsing, store object instead

* Fix formatting error

* Remove object checking, transform everything to DataQuery

* Remove console.log

* Rename migrate function, add datasourceName as a useEffect dependency

* Fix z-index, move query
2020-04-24 18:23:31 +02:00
Tobias Skarhed 8d56f87473 Migration: Alerting - notifications list (#22548)
* Handle empty list

* Connect to redux

* Finish migration

* Remove comments

* Remove old files

* Remove console log

* Remove old import

* Forgot to add the new button

* Fix href

* Fix feedback
2020-04-24 18:13:45 +02:00
Alex Khomenko 1f2a70117b Search: cleanup old Angular files (#23860)
* Search: Remove wrapperRef

* Search: Remove angular search files

* Search: Unify search types

* Search: Remove redundant hideHeader prop

* Search: Remove app/types/search.ts

* Search: Update imports

* Search: Fix type errors
2020-04-24 18:07:57 +03:00
Andrej Ocenas 58b566a252 Tracing: Zipkin datasource (#23829) 2020-04-24 17:02:25 +02:00
Jess 800228c100 Storybook sorting (#23857)
* Resort Icon.story.tsx into Docs Overview category

* Make CallToActionCard.story.tsx internal

* Move ThemeColors to Docs Overview category

* Move Tag.story.tsx to Forms category

* Move TagList.story.tsx to Forms category

Co-authored-by: Clarity-89 <homes89@ukr.net>
2020-04-24 17:48:58 +03:00
Marcus Efraimsson 8f2be870f2 Dashboard: Handle no renderer available in panel share dialog (#23856)
Show a message when sharing dashboard panel on the Link tab and
 there's no renderer available/installed. 

Ref #13802
2020-04-24 16:40:18 +02:00
Alex Khomenko 3d9a88c7af Grafana-UI: Extend Layout props (#23771)
* Grafana-UI: Extend Layout props

* Grafana-UI: Merge container styles

* Search: Fix prop types

* Grafana-UI: remove className prop
2020-04-24 17:25:39 +03:00
Torkel Ödegaard 1955c3911b PanelEditor: Fixed switch tabs (#23859) 2020-04-24 14:18:59 +02:00
Arve Knudsen 51c19da98d Docker: Upgrade to Ubuntu 20.04 in Dockerfiles (#23852)
* Chore: Upgrade to Ubuntu 20.04
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-24 14:03:18 +02:00
Leonard Gram c081513a96 Devenv: fix prometheus scrape ips (#23850)
* Devenv: fix prometheus scrape ips

* Devenv: fix grafana in devenv reference

* Devenv: fixes prom random data reference
2020-04-24 13:23:49 +02:00
Johannes Brück a98c129d05 CloudWatch: Prefer webIdentity over EC2 role also when assuming a role (#23807)
Same as #23452 but for assumed roles.
When using service accounts (webIdentity) on EKS in combination 
with assuming roles in other AWS accounts Grafana needs to retrieve 
the service account credentials first and then needs to assume the 
configured role.
2020-04-24 13:05:51 +02:00
Hugo Häggmark 80ab18f43d e2e: adds e2e for panel edit (#23849)
* Explore: Create basic E2E test

* Feature: adds e2e tests for panel inspector

* Refactor: adds ts-ignore because of type checking errors

* Refactor: changes after PR comments and updates snapshot

* Refactor: adds typings back for IScope

* e2e: adds e2e for panel edit

Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
2020-04-24 12:51:38 +02:00
Torkel Ödegaard cf77c3a50b Metriktank: Linage UI updates (#23848) 2020-04-24 11:52:02 +02:00
Marcus Efraimsson 58de0dabd4 Alerting: Upload error image when image renderer unavailable (#23713)
When Include image is enabled for an alert notification channel, but there's 
no image renderer available/installed when sending notification an error 
image will be uploaded/attached explaining that you need to install the 
Grafana Image Renderer plugin.

Ref #13802

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-24 11:35:55 +02:00
Marcus Efraimsson 98df2ec745 Alerting: Handle image renderer unavailable when edit notifiers (#23711)
If no image renderer available/installed when adding a new  alert notification 
channel will set Include image to false per default, otherwise true as before.
If no image renderer available/installed when adding/edit alert notification 
channel will show an informational message that you need to install the 
Grafana Image Renderer plugin for Grafana to be able to render an image. 

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-24 10:42:13 +02:00
Daniel Lee 52154b465b dsproxy: adds support for url params for plugin routes (#23503)
* dsproxy: adds support for url params for plugin routes

* docs: fixes after review

* pluginproxy: rename Params to URLParams

* Update pkg/plugins/app_plugin.go

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

* Apply suggestions from code review

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

* pluginproxy: rename struct

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-04-24 10:32:13 +02:00
Torkel Ödegaard 59bea141f2 Transformations: Simple fix for labels to fields problem with time series field names (#23828)
* Simple fix for labels to fields transform problem

* Added unit test
2020-04-24 10:11:14 +02:00
Alex Khomenko fb8a555f19 Search/virtualize list (#23710)
* Search: Add FixedSizeList for result items

* Search: Move SectionHeader to a separate file

* Search: Add useListHeight hook

* Search: Fix horizontal scrollbar

* Search: Remove custom scrollbar

* Search: Do not fetch dashboard folder on route change

* Search: Update tests

* Search: Remove extra checkbox renders

* Search: Move wrapper ref outside search results

* Search: Fix param type

* Search: Fix merge conflicts

* Search: Virtualize dashboard list

* Search: Update layout

* Search: Pass wrapper to search results

* Search: Update dashboard redirect

* Search: Remove unused css

* Search: Revert config

* Search: Use AutoSizer

* Search: Remove redundant appEvents call

* Search: Use List layout in folder view
2020-04-24 11:08:06 +03:00
Omar Nahhas Sanchez cf23f15a08 Adding debug line to search ldap. (#23824) 2020-04-24 09:53:42 +02:00
Ivana Huckova 47c6bd6963 Fix PromQuery cascader when selected option has no children (#23835) 2020-04-24 09:45:44 +02:00
Tobias Skarhed e18e4cf015 Forms migration: Data/Panel link editor (#23778)
* DataLink input to new form styles

* Make Angular work with inline editor

* Remove onRemove and desiableRemove

* Remove DataLinksEditor

* Change order of inputs

* Enable syntax highlight

* Fix datalinks for Elastic
2020-04-24 09:26:22 +02:00
Tobias Skarhed 3fbdcf1070 Form migrations: Teams and alert list (#23810)
* Basic migration

* Update test

* Fix feedback
2020-04-24 09:26:09 +02:00
Hugo Häggmark e4d492fd35 e2e: adds inspect drawer tests (#23823)
* Explore: Create basic E2E test

* Feature: adds e2e tests for panel inspector

* Refactor: adds ts-ignore because of type checking errors

* Refactor: changes after PR comments and updates snapshot

* Refactor: adds typings back for IScope

* Refactor: changes after PR comments

Co-authored-by: Andreas Opferkuch <andreas.opferkuch@gmail.com>
2020-04-24 08:48:04 +02:00
Joseph Robinson db3f2b90e9 Docs: URL update to Relref to repair broken links (#23783)
* NewPanelEditor: Panel edit tweaks (#22415)

* NewPanelEditor: Alternative edit layout

* Fixed full height issue

* panel-edit-tabs experiment

* minor tweaks

* PanelEditor: Minor tweaks

* Docs: URL update to Relref to repair broken links

Rewrote URL references in the text for the Administration guide
and older Whats New page to repair broken links, and change
to the Relref format to build the website with Hugo.

Closes #22378

* Remove stale file, caught in this
branch and PR from my Fork. contribute/style-guides/markdown-style-guide.md

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-23 13:19:05 -07:00
Dominik Prokop 6320e5c91f NewPanelEditor: bring back queries not being run on editmode navigation (#23837) 2020-04-23 22:10:08 +02:00
Torkel Ödegaard 2f5bea27b1 NewDataSourcePage: Restore signature badge lost in merge (#23832) 2020-04-23 21:39:08 +02:00
Stephanie Closson e35f27ea8f Toolkit: fixes for security and publishing (#23749)
* Fixes and security patches:
1. Always keep the source directory, just don't package the source
2. Do not publish the SSH key for common plugin tasks.
Changed to environment variable

* env variable renamed.

* Re-added the src remove

* touch config.yml for rebuild
2020-04-23 12:58:22 -06:00
Andrej Ocenas 170a0df194 Logs: Derived fields link design update (#23695) 2020-04-23 20:47:54 +02:00
Andrej Ocenas 376765b3d7 Tracing: Remove feature flag (#23834) 2020-04-23 20:46:42 +02:00
Dominik Prokop de1e70a474 NewPanelEditor: don't break when plugin is skipDataQuery (#23836) 2020-04-23 20:36:42 +02:00
Kyle Brandt 80e1191ca0 Backend Plugins: (breaking change) Add PluginContext (#23788)
* breaking change for newer backend plugins
* use exported protobuf converters and sdk types to reduce duplicate code
* uses grafana-plugin-sdk-go@v0.54.0
2020-04-23 14:08:21 -04:00
Arve Knudsen bf6a488a33 Update latest.json (#23833)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-23 19:33:05 +02:00
Arve Knudsen ffdef9e771 CHANGELOG.md: Update (#23831)
* CHANGELOG.md: Update
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-23 19:32:38 +02:00
Kyle Brandt 6d500e31b9 Backend: Remove Go vendor folder (#23796) 2020-04-23 13:23:51 -04:00
Dominik Prokop e0dbd87a5a Transformations: Organise fields transformer fixes & detailing (#23812)
* Transformers: Organise fields transformer detailing

* Table header cell - fix text overflowing columns
2020-04-23 16:21:54 +02:00
Leonard Gram ebdbb0c96d Rendering: makes sure IsAvailable can be used during init of other services (#23817)
* Rendering: makes sure service knows if it is configured after Init()

* Rendering: refactor
2020-04-23 14:44:52 +02:00
Torkel Ödegaard 0284747c88 TablePanel: Fix XSS issue in header column rename (#23816)
* prevent xss

* added escaping on tooltip.

* Rebase done

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2020-04-23 14:15:48 +02:00
Dominik Prokop c9e7796b33 Table: Add default cell link style and tooltip to data links in table (#23818) 2020-04-23 13:57:08 +02:00
Arve Knudsen f4d40224f2 CircleCI: Upgrade shellcheck to v0.7.1 and pin version (#23815)
* CircleCI: Upgrade shellcheck to v0.7.1 and pin version

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-23 12:22:51 +02:00
Ryan McKinley 3d89f04562 Plugins: show signing status on datasources and plugins (#23542)
* show signing status

* show signing status

* Progress on signed badge style

* Progress on signing status look and updated card background

* Updates

* Transforms card tweak

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-23 11:52:11 +02:00
Ivana Huckova 68ba60adaf Typeahead: Fix z-index (#23809) 2020-04-23 11:46:13 +02:00
Torkel Ödegaard 3955e8cbad Security: Fix annotation popup XSS vulnerability (#23813)
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-23 11:35:43 +02:00
Ivana Huckova 645dc944db Explore: Fix split functionality (#23801)
* Fix splitting functionality, remove passing of parameters from button

* Format comment
2020-04-23 11:20:07 +02:00
Jess 3eddce3258 UI Docs: ColorPicker component group (#23366)
* Create .mdx for ColorPicker component group

Describes the building blocks of the component and how they work together.

* Rename ColorPicker.mdx to ColorPicker.story.mdx

* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx

Clean up tags

Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>

* Update packages/grafana-ui/src/components/ColorPicker/ColorPicker.story.mdx

Co-Authored-By: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>

Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
2020-04-23 10:50:24 +02:00
Dominik Prokop fe28e2a6b1 Transformations: UI tweaks, filter by name regex validation (#23800)
* Add validation to filter by name regex, minor layout tweaks

* Use cards uin for non configured transformations
2020-04-23 10:12:06 +02:00
Dominik Prokop 4b42697912 Transformations: debug mode tweaks (#23802) 2020-04-23 09:56:56 +02:00
Alex Khomenko 906cc6d317 Search: Fix strict null errors (#23804) 2020-04-23 09:55:10 +02:00
Alex Khomenko c0fe565499 Search add sorting picker (#23746)
* Search: Extend search_srv with getSortOptions

* Search: Enable sorting

* Search: Fullwidth search

* Search: Add SortPicker

* Search: Add useSearchLayout

* Search: Update sort query

* Search: Refactor items rendering

* Search: Add sort to manage dashboards

* Search: Add sort icon

* Search: Mock getSortOptions

* Search: Fix Select sizes

* Search: Move SortPicker to Select

* Grafana-UI: Add ActionRow.tsx

* Grafana-UI: Use ActionRow in dashboard search

* Grafana-UI: Update ActionRow styles

* Search: Update tests

* Search: enable clearing TagFilter

* Search: Move getSortOptions outside of component

* Search: Fix import

* Search: Limit container width

* Search: Replace SearchField's clear text with icon

* Search: Fix section items query #23792

* Search: Add icons for layout switch

* Search: Remove layout switch for folder page
2020-04-23 08:18:53 +03:00
Amal 66d405acab Docs: Correcting a reference link in documentation (#23747)
* Correcting a reference link in documentation

* Changed link as relative path, as asked by reviewer
2020-04-22 11:41:25 -07:00
Hugo Häggmark ca385805c9 PanelEditor: stores option group collapse state (#23781)
* PanelEditor: stores option group collapse state

* Refactor: adds props to OptionsGroup instead
2020-04-22 19:56:37 +02:00
Andrej Ocenas 319a0585a5 Logs: Add href to internal link (#23757) 2020-04-22 19:42:28 +02:00
Dominik Prokop eae11f53f3 Transformations: Make sidebar subscribe to panel's query runner (#23785)
* Make panel edit sidebar options use lates data from panel query runner

* Update select's z-index

* Review
2020-04-22 19:21:48 +02:00
Torkel Ödegaard 45dfa20467 Buttons: Center text in buttons (#23789)
* Buttons: Center buttons

* Updated size of transformation button

* removed snapshot
2020-04-22 18:47:41 +02:00
Tobias Skarhed 78a6d39ebb Forms migration: LayoutSelector (#23790) 2020-04-22 17:49:46 +02:00
Torkel Ödegaard 83608baf2f Select: Fixed z-index issue (#23786) 2020-04-22 16:18:22 +02:00
Alexander Zobnin e8f4b46aae UI: add InfoBox component (#23701)
* UI: inherit LinkButton props from ButtonHTMLAttributes

* Chore: fix implicit any

* UI: add InfoBox component

* UI: fix InfoBox border color

* Chore: use new style for defining stories

* Chore: InfoBox refactor

* Chore: inherit className attribute from HTMLDivElement
2020-04-22 16:46:01 +03:00
Amal a9032f9188 docs/sources/installation/upgrading.md: Fix language 2020-04-22 14:42:20 +02:00
Emil Tullstedt 58a605ad67 Docs: Move Postgres version warning and remove details (#23782) 2020-04-22 14:40:42 +02:00
kay delaney bf3313c82a Datasource/Loki: Remove code dealing with legacy Loki endpoints (#23437) 2020-04-22 12:59:06 +01:00
Dominik Prokop 6715cf22a3 Transformations: Improve UI and add some love to filter by name (#23751)
* Change filterByName options to accept arrays instead of strings

* Improve transformations UI

* Minor updates

* Minor UI changes

* Review
2020-04-22 13:38:50 +02:00
Hugo Häggmark bcf5d4b25c Transformers: adds labels as columns transformer (#23703)
* Transformers: adds labels as columns transformer

* Refactor: adds support for same timestamps with different labels

* Refactor: adds basic transform ui

* Refactor: adds sorted result

* Refactor: renames transformer
2020-04-22 12:21:34 +02:00
Torkel Ödegaard 0a8ce714cb VizRepeater: fixed issue with resolved auto orientation passed back from VizRepeater (#23767)
* VizRepeater: fixed issue with resolved auto orientation passed back from VizRepeater

* Updated variable name
2020-04-22 12:01:02 +02:00
Torkel Ödegaard aa7d2c6af3 E2E: Fixed e2e test issue due to change in testdata scenario change logic (#23774) 2020-04-22 12:00:30 +02:00
Arve Knudsen 49a90cd764 Dockerfile: Copy in the tools directory, to fix build (#23773)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-22 11:11:19 +02:00
Arve Knudsen 7d88018531 DataSourceProxy: Handle URL parsing error (#23731)
* pluginproxy: Handle URL parsing error
* pkg/api: Validate data source URLs
* pkg/api: Return 400 for URL validation error
2020-04-22 10:30:06 +02:00
Agnès Toulet c3e3067cf4 Drawer: update z-index to show tooltips (#23770) 2020-04-22 10:28:34 +02:00
Alex Khomenko 89a75343eb Search: Load folder page (#23768) 2020-04-22 11:24:29 +03:00
Torkel Ödegaard 5bf43af5ae Docker: Fix root docker file build (#23772)
Fixes #23754
2020-04-22 10:18:36 +02:00
Amal 3d72c7fd12 docs/sources/features/explore/index.md: Fix language 2020-04-22 09:20:28 +02:00
Peter Holmberg 4183921c62 Dashboard import: Bug fixes (#23591)
* clear dashboard on unmount

* fix menu z-index, folderpicker width

* fix issue with saving dashboard in another folder

* use foldermodel instead of selectablevalue

* using z-index from theme

* updated names

* update snapshot

* remove size from folderpicker

* use connectWithCleanup

* update snapshot
2020-04-22 09:04:33 +02:00
Peter Holmberg e16213724c DevEnv: Revert to clean stale assets (#23742) 2020-04-22 07:49:04 +02:00
Ryan McKinley 32d7a4d33a TablePanel: avoid toArray for memoizedData (#23744) 2020-04-21 14:42:27 -07:00
Amal 1ca3ce59e2 Docs: Minor typo fix in documentation (#23745) 2020-04-21 13:06:25 -07:00
Andrej Ocenas 84e9004da4 Tracing: Change color palette. (#23656) 2020-04-21 22:04:51 +02:00
Amal 3c36c0f043 Docs: Grammatical correction in documentation (#23752) 2020-04-21 12:57:39 -07:00
Amal ca20b386bb docs/sources/tutorials/ha_setup.md: Fix typo 2020-04-21 20:01:14 +02:00
Marcus Efraimsson 61de19250d Image Rendering: Make it work using serve_from_sub_path configured (#23706)
Make rendering work when using serve_from_sub_path and not have rendering.renderer_url configured.

Fixes #21925
2020-04-21 19:57:11 +02:00
Torkel Ödegaard ea1dd9e4da TextArea: Fixed default height (#23743) 2020-04-21 18:34:20 +02:00
Torkel Ödegaard c26bfe9e03 Prettier: Add prettier config that imports prettier from toolkit (#23729) 2020-04-21 17:23:49 +02:00
kay delaney 3d23ab549b UI: Adds option to limit number of visible selected options for Select component (#23722)
* UI: Adds option to limit number of visible selected options to Select component
2020-04-21 16:06:34 +01:00
Marcus Efraimsson 871ad73414 Backend plugins: Renderer v2 plugin (#23625)
grafana-plugin-model is legacy and is replaced by new backend 
plugins SDK and architecture. Renderer is not part of SDK and 
we want to keep it that way for now since it's highly unlikely there 
will be more than one kind of renderer plugin.
So this PR adds support for renderer plugin v2.
Also adds support sending a Device Scale Factor parameter to the 
plugin v2 remote rendering service and by that replaces #22474.
Adds support sending a Headers parameter to the plugin v2 and
remote rendering service which for now only include 
Accect-Language header (the user locale in browser when using 
Grafana), ref grafana/grafana-image-renderer#45.
Fixes health check json details response.
Adds image renderer plugin configuration settings in defaults.ini 
and sample.ini.

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-21 16:16:41 +02:00
Andrej Ocenas 97bb3dcf2d Remove file (#23741) 2020-04-21 15:52:08 +02:00
Leonard Gram 8620b7c2aa Search: raise service init prio (#23740) 2020-04-21 15:30:09 +02:00
Amal c72d8b763e docs/sources/plugins/developing/datasources.md: Improve language 2020-04-21 15:11:34 +02:00
Andrej Ocenas a89d629b7e Tracing: Add some error handling to JaegerQueryField (#23599) 2020-04-21 14:18:56 +02:00
Dominik Prokop 40114e8c07 NewPanelEditor: UI update of add panel widget (#23715)
* Small update proposal to add panel widget

* Fix smoketest

* Minor tweaks

* update snaps god damn it
2020-04-21 13:40:49 +02:00
Tobias Skarhed 7e4292508f Form migrations: Final components to LegacyForms (#23707)
* FormField to LegacyForms

* FormLabel to InlineFormLabel

* Move SecretFormField to LeagcyForms
2020-04-21 11:42:21 +02:00
Emil Tullstedt b7809918f0 Dashboard: Update tests for testing fallback support (#23730) 2020-04-21 11:31:10 +02:00
Ivana Huckova df60dbd749 @grafana/ui: Fix login icon (#23732)
* Fix sign in button

* Fix modal button in button
2020-04-21 10:55:48 +02:00
Andrej Ocenas 1b8d669ac0 Docs: Datasource uid docs (#23700) 2020-04-21 10:46:51 +02:00
Tobias Skarhed 9bbc007cb9 Input: Width prop (#23615)
* Add width property

* Remove unused import

* Spelling mistake

* Add width to interface

* Make width optional

* Remove size

* Update snapshot

* Remove size from places

* Add size prop for button

* Update width

* Update snapshots
2020-04-21 10:42:57 +02:00
Marcus Andersson a2d741f60f Docs: run the api-extractor on master to update docs (#23726)
* regenerated packages docs.

* fixed spelling issues.

* fixed spelling issues.
2020-04-21 10:41:50 +02:00
Torkel Ödegaard 017767ae39 InputDatasource: Fixed prettier errors (#23679)
* InputDatasource: Fixed prettier errors

* Fixed prettier config in toolkit to make it consistent with grafana core prettier config
2020-04-21 10:14:14 +02:00
Torkel Ödegaard 4d9d3270af CSS: Various css bug fixes (Safari fix for graph panels and more) (#23704)
* CSS: Various css bug fixes

* Updated
2020-04-21 09:12:34 +02:00
Amal 4a13467312 docs/sources/administration/metrics.md: Improve language 2020-04-20 21:45:12 +02:00
Amal 6f9c744f21 docs/sources/installation/configuration.md: Improve language 2020-04-20 21:44:16 +02:00
Amal c8c08d4f82 docs/sources/features/dashboard/dashboards.md: Improve language 2020-04-20 21:27:05 +02:00
Dominik Prokop b37e66f915 NewPanelEditor: Move visualisation picker to the sidebar pane (#23696)
* Move visualisation picker to the sidebar pane

* Remove vis tab from bottom pane

* Visualisation to panel type title
2020-04-20 20:29:32 +02:00
Ryan McKinley 9464115fc0 TableCell: show JSON rather than [object Object] (#23683) 2020-04-20 11:10:03 -07:00
Ryan McKinley 229176f1b0 Transformers: calculate a new field based on the row values (#23675) 2020-04-20 09:57:04 -07:00
Emil Tullstedt b669bfdf5f Dashboard: Add failsafe for slug generation (#23709) 2020-04-20 18:17:33 +02:00
Jack Stevenson c0635947e8 Add ServerlessDatabaseCapacity to AWS/RDS metrics (#23635) 2020-04-20 18:14:17 +02:00
Emil Tullstedt 83193aed3d Search: Fix title search null pointer (#23705) 2020-04-20 17:29:35 +02:00
Alex Khomenko 8709c9a8a5 Search: Toggle Search based on search query (#23648)
* Search: Toggle Search based on search query

* Search: Fix types and closed search param

* Search: Remove appEvents from SearchWrapper

* Search: Reset folder on close

Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com>

* Search: Disable reloadOnSearch for manage dashboards urls

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2020-04-20 18:04:51 +03:00
Emil Tullstedt 55c306eb6d Refactor search (#23550)
Co-Authored-By: Arve Knudsen <arve.knudsen@grafana.com>
Co-Authored-By: Leonard Gram <leonard.gram@grafana.com>
2020-04-20 16:20:45 +02:00
Andrej Ocenas e5dd7efdee Provisioning: Allows specifying uid for datasource and use that in derived fields (#23585)
* Add uid to datasource

* Fix uid passing when provisioning

* Better error handling and Uid column type change

* Fix test and strict null error counts

* Add backend tests

* Add tests

* Fix strict null checks

* Update test

* Improve tests

* Update pkg/services/sqlstore/datasource.go

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

* Variable rename

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-20 15:48:38 +02:00
Agnès Toulet d5f8d976f0 Drawer: align component style with PanelInspector (#23694)
* Drawer: add subtitle, expandable button and refactor style

* Drawer: update header style and z-index

* Drawer: refactor Drawer component and PanelInspector

* PanelInspector: add expandable

* Drawer: update stories with new props

* Inspector: rename InspectHeader -> InspectSubtitle

* Inspector: fix tabs spacing

* Drawer: remove z-index

* Update public/app/features/dashboard/components/Inspector/InspectSubtitle.tsx

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

* Drawer: apply PR feedbacks

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-20 15:27:33 +02:00
Ivana Huckova 174ee95153 Store: Error handling for setObject (#23650)
* Error handling for setObject to store

* Update public/app/core/store.ts

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

* Update public/app/features/explore/RichHistory/RichHistory.tsx

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

* Move setState outside of try-catch block

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
2020-04-20 15:13:02 +02:00
Dominik Prokop 4ea41dc19d Fix failing master (#23702) 2020-04-20 14:53:51 +02:00
Ivana Huckova f37814f3b1 Fix getLogLevelFromKey when non-string supplied (#23654) 2020-04-20 13:50:14 +02:00
Tobias Skarhed 1f6a6b3802 Storybook: Small fixes (#23692) 2020-04-20 13:33:37 +02:00
Carl Bergquist 46fd7c094b Alertmanager: Basic auth should not be required (#23691) 2020-04-20 11:19:31 +02:00
Torkel Ödegaard 56a7de562e Table: Improvements to column resizing, style and alignment (#23663)
* Table: Fixed to column alignment

* testing table state reducer

* Styles starting to work

* Persisting column resize now works

* Trying to fix Table storybook stories

* Minor updates

* fixed ts issue

* Table: Support duplicate field names, and use data frame directly instead of copying data and other improvements (#23681)

* Poc at use data frame directly

* working ok

* Table improvements
2020-04-20 09:27:40 +02:00
Torkel Ödegaard 3aa8eb0176 NewPanelEdit: Improvements to angular panels and other fixes (#23678)
* Removed old editor components

* Angular panel improvements

* Progress

* Updated tests

* Simple persistence for angular panel option state

* Improving graph edit experiance

* Improving series overrides

* updated e2e test

* Regstry: refactoring
2020-04-20 08:47:25 +02:00
Dominik Prokop d2a13c4715 FieldOverride: Support data links via field overrides (#23590)
* Move xss and sanitize packages to grafana-data

* Move text, url and location utils to grafana-data

* Move grafana config types to grafana-data

* Move field display value proxy to grafana-data

* Fix

* Move data links built in vars to grafana-data

* Attach links supplier to when applying field overrides

* Prep tests

* Use links suppliers attached via field overrides

* locationUtil dependencies type

* Move sanitize-url declaration to grafana-data

* Revert "Move sanitize-url declaration to grafana-data"

This reverts commit 11db9f5e55.

* Fix typo

* fix ts vol1

* Remove import from runtime in data.... Make TS happy at the same time ;)

* Lovely TS, please shut up

* Lovely TS, please shut up vol2

* fix tests

* Fixes

* minor refactor

* Attach get links to FieldDisplayValue for seamless usage

* Update packages/grafana-data/src/field/fieldOverrides.ts

* Make storybook build
2020-04-20 07:37:38 +02:00
Torkel Ödegaard e6c9b1305e Prometheus: Fixed error in PromLink, fixed ts issue 2020-04-20 07:35:35 +02:00
Torkel Ödegaard 67a256fcb4 Prometheus: Fixed error in PromLink 2020-04-20 07:34:49 +02:00
Dominik Prokop a78ca939d1 Fix: grafana/ui imports (#23680) 2020-04-19 13:18:36 +02:00
Agnès Toulet 19dcaf6bc9 Dashboard: Add fields in DashboardMeta (#23647) 2020-04-19 11:26:32 +02:00
Diana Payton e05f686758 Docs: Update documentation-style-guide.md (#23659)
Added Divio link
2020-04-19 07:17:19 +02:00
Diana Payton a343b62a23 Docs: Update README.md (#23660) 2020-04-19 07:16:57 +02:00
Ryan McKinley 1e03bb2895 Bundled Plugins: fix build issues with DirectInput (#23640)
* pass query error

* and the root

* not optional

* building bundled plugin

* missing file

* remove other branch

* fix prettier
2020-04-19 07:05:25 +02:00
Ryan McKinley 88ec7e097f toDataFrame: detect field properties using in rather than hasOwnProperty (#23673) 2020-04-18 15:11:24 -07:00
Ryan McKinley 806dd3f604 QueryEditors: include error when no data is returned (#23632) 2020-04-18 14:59:36 -07:00
Torkel Ödegaard f30074c70a NewPanelEditor: Save dashboard from edit mode now works, and other fixes (#23668) 2020-04-18 18:00:54 +02:00
Torkel Ödegaard 165a0471ad NewPanelEdit: Minor edit mode fixes (#23666)
* Minor edit mode fixes

* Updated
2020-04-18 15:48:04 +02:00
Dominik Prokop 539edba31b Overrides: Show option group counters for options that represent collections (#23655) 2020-04-18 14:05:38 +02:00
Stephanie Closson 4e521a84b4 Tweaks and comments for ci-improvements, stability, and readibility (#23658)
* Tweaks and comments for ci-improvements, stability, and readibility
- Made naming more obvious and intuitive
- CI supports grafana e2e plus more granular design
  (side effect that it takes slightly longer, but negligable)
- disable strict e2e errors through environment variable
- Added tools for linting and for building plugin-ci

* feedback from stevev - remove version. Causes problems
2020-04-17 14:48:42 -06:00
Stephanie Closson 336ab8990e Toolkit: Update slim debian image for e2e testing (#23629)
* Because alpine uses musl instead of libc, the e2e/cypress was not compatible
So:
- Created new VM based on debian-slim
- Could also be used as a build VM

Fixes:
- ginstall issue with merge somewhere.
- Trimmed down the alpine VM since we don't need the extra libraries for cypress

* Fix: Don't need cp on debian
Fix: Don't use /bin/sh on debian. Only for alpine. Use /bin/bash on debian
Fix: Missing dependencies to e2e tests
2020-04-17 14:29:10 -06:00
Dominik Prokop a7904f13cc Remove temporary NewPanelEditorContext (#23652) 2020-04-17 18:04:57 +02:00
Diana Payton 43fc6c3a17 Docs: Grafana internal metrics update (#23448)
* Update metrics.md

* Updated metrics.md and configuration.md

* Added links to data sources

* Update metrics.md

* Update docs/sources/administration/metrics.md

Co-Authored-By: Carl Bergquist <carl@grafana.com>

Co-authored-by: Carl Bergquist <carl@grafana.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
2020-04-17 07:37:09 -07:00
Hugo Häggmark 97c5e2971d Transformers: changes reduce transformer (#23611)
* Transformers: changes reduce transformer

* Refactor: fixes lenght of frame

* Minor tweaks and polish

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-17 16:27:00 +02:00
Hugo Häggmark ed8c3430c4 PanelEditorTabs: adds counter to Query, Alert and Transform (#23645) 2020-04-17 14:46:32 +02:00
Alex Khomenko 89c8855f9d Search: migrate manage dashboards (#23530)
* Search: add search wrapper

* Search: add DashboardSearch.tsx

* Search: enable search

* Search: update types

* Search: useReducer for saving search results

* Search: use default query

* Search: add toggle custom action

* Search: add onQueryChange

* Search: debounce search

* Search: pas dispatch as a prop

* Search: add tag filter

* Search: Fix types

* Search: revert changes

* Search: close overlay on esc

* Search: enable tag filtering

* Search: clear query

* Search: add autofocus to search field

* Search: Rename close to closeSearch

* Search: Add no results message

* Search: Add loading state

* Search: Remove Select from Forms namespace

* Remove Add selectedIndex

* Remove Add getFlattenedSections

* Remove Enable selecting items

* Search: add hasId

* Search: preselect first item

* Search: Add utils tests

* Search: Fix moving selection down

* Search: Add findSelected

* Search: Add type to section

* Search: Handle Enter key press on item highlight

* Search: Move reducer et al. to separate files

* Search: Remove redundant render check

* Search: Close overlay on Esc and ArrowLeft press

* Search: Add close button

* Search: Document utils

* Search: use Icon for remove icon

* Search: Add DashboardSearch.test.tsx

* Search: Move test data to a separate file

* Search: Finalise DashboardSearch.test.tsx

* Add search reducer tests

* Search: Add search results loading indicator

* Search: Remove inline function

* Search: Do not mutate item

* Search: Tweak utils

* Search: Do not clear query on tag clear

* Search: Fix folder:current search

* Search: Fix results scroll

* Search: Update tests

* Search: Close overlay on cog icon click

* Add mobile styles for close button

* Search: Use CustomScrollbar

* Search: Memoize TagList.tsx

* Search: Fix type errors

* Search: More strictNullChecks fixes

* Search: Add ManageDashboards.tsx

* Search: Add mergeReducers

* Search: Use mergeReducers

* Search: remove default state from reducers

* Search: Fix recent and starred icons

* Search: Enable search

* Search: Add markup

* Search: Separate manageDashboardsReducer

* Search: Add DashboardActions.tsx

* Use new Select for TagFilter

* Search: Use TagFilter for search filters

* Search: Use TagList

* Search: Add toggleSection

* Search: Add more actions

* Search add manageDashboards.test.ts

* Search: Add getCheckedUids

* Search: Add modify and toggle checked actions

* Search: Update tests

* Search: Update component template

* Search: Enable section toggle

* Search: Derive canMove and canDelete

* Search: Handle delete items

* Search: Fix tests

* Search: Enable toggle items

* Search: Add confirm modal subtitle

* Search: Use theme vars

* Search: Add getCheckedDashboardsUids

* Search: Add MoveToFolderModal

* Search: Enable moving dashboards

* Search: Fix strict null checks errors

* Search: Fix strict null checks errors[2]

* Search: Enable filters

* Search: Add useSearchQuery.ts

* Search: Toggle items when toggling all

* Search: Update useSearchQuery to accept custom params

* Search: Add useSearchQuery to dashboard search

* Search: use SearchField for manage dashboards

* Search: Remove event param from query change

* Search: Add base search hooks

* Search: refactor useSearch to accept reducer

* Search: use useDashboardSearch hook

* Search: Fix useSearchQuery params

* Search: Enable folder search

* Search: Update tests

* Search: Pass the props to manage-dashboards

* Search: Add search filters margin

* Search: Remove search-field-wrapper class and hide logic for it

* Search: Adjust SearchField styles

* Search: Move search-results-container inside SearchResults

* Search: Fix type errors

* Search: Add EmptyListCTA

* Search: Update move message

* Search: Cleanup

* Search: Add todo

* Search: Fix action type

* Search: Use React wrapper vs FolderDashboardsCtrl and DashboardListCtrl

* Search: DashboardList => DashboardListPage

* Search: Remove ManageDashboards from angular_wrappers

* Minor style tweaks

* Search: Use LinkButton

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-17 15:29:20 +03:00
Torkel Ödegaard 1816ab8013 Inspect: Transformers (#23598)
* WIP: Inspect transformers

* Updated

* Transformations working in inspect drawer and series to columns working as normal transformation

* Minor name change

* Updated

* Updated

* Fix: fixes crash with dataFrameIndex out of bounds

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-04-17 14:03:21 +02:00
Mohit Nain 705467242d docs/sources/features/datasources/graphite.md: Fix typos 2020-04-17 13:38:26 +02:00
Dominik Prokop 416111c5f6 FieldOverrides: UI updates (#23630)
* UI improvements for field overrides

* Update tests

* Fix missing key

* Fix e2e
2020-04-17 12:52:01 +02:00
Tobias Skarhed a9e408fecf Forms migration: Change password (#23623)
* Migrate ChangePassword

* Add validation
2020-04-17 11:24:21 +02:00
Alexander Zobnin f023e7a399 SAML Role and Team sync (open source part) (#23391)
* SAML: add default params for role and team sync

* SAML: add org_mapping option

* SAML: support allowed_organizations option

* Chore: expose RedirectWithError from HTTPServer

* Chore: return RedirectResponse (fix superfluous response.writeheader message)

* HTTPServer: expose ValidateRedirectTo() and CookieOptionsFromCfg()

* Config: move SAML section to the enterprise
2020-04-17 10:48:37 +03:00
Hugo Häggmark 0205c42bfa Transformers: fixes column names generated by seriesToColumn transformer (#23642) 2020-04-17 09:33:56 +02:00
Ryan McKinley 6c021f7bb9 Table: add a select option when multiple tables exist (#23545)
* add a table picker

* move picker to the top

* add missing change

* Removed overflow from panel-content so dropdown menus can extend a panel, moved the select to the bottom

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-16 21:35:58 +02:00
Hugo Häggmark e64e8dd098 Tabs: adds counter component (#23548)
* Chore: Initial commit

* Initial commit

* Refactor: some style changes

* Refactor: removes isDark/isLight theme logic

* Minor style tweak

* Minor style tweak

* Minor adjustments

* Refactor: changes after PR comments

* Refactor: moves margin-left to counter

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-16 21:28:19 +02:00
Torkel Ödegaard ba60be97fe UX: Minor style tweaks and fixes (#23614)
* UX: Minor style tweaks and fixes

* Updated
2020-04-16 17:55:08 +02:00
Torkel Ödegaard 9e1bdce5e0 Modals: Fixed alignment in header (#23618) 2020-04-16 17:50:16 +02:00
Shavonn Brown e873f94bd4 revent optional event arg change (#23622) 2020-04-16 11:38:54 -04:00
Carl Bergquist 9652a1410b Build: Stricter linting should break the build (#23606) 2020-04-16 16:09:27 +02:00
Sofia Papagiannaki 19f03e593c Docs: update users API (#23570)
* Docs: update users api

* Apply suggestions from code review

Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-16 16:45:22 +03:00
Andrej Ocenas 28543e11ba Explore: Prevents sizing issue when split (#23596)
* Update tests

* Remove imports
2020-04-16 14:28:46 +02:00
Ivana Huckova 6937f3549b @grafana/ui: Various smaller Icon updates (#23588)
* Remove icon types duplicates, update getAllIcons

* Update Explore-related icons, positioning

* Update Getting started icons

* Update navmodel

* Style adjustments, css changes

* Update tests

* Updatee icon name in test file
2020-04-16 13:49:58 +02:00
Stephanie Closson 2de79a4d8c Because alpine uses musl instead of libc, the e2e/cypress was not compatible (#23602)
So:
- Created new VM based on debian-slim
- Could also be used as a build VM

Fixes:
- ginstall issue with merge somewhere.
- Trimmed down the alpine VM since we don't need the extra libraries for cypress
2020-04-16 05:38:56 -06:00
Marcus Efraimsson ed51ce3ae1 Backend Plugins: Discard logged messages from logger named stdio (#23601)
Discard logged messages coming from backend plugin logger named 
stdio since that service is not in use. 

Fixes #23461
2020-04-16 13:08:07 +02:00
Torkel Ödegaard 7fc9921be3 Fixed share json (#23607) 2020-04-16 09:31:40 +02:00
Carl Bergquist 5fc255bd89 Linting fixes for provisoning (#23600) 2020-04-16 05:46:20 +02:00
Marcus Efraimsson 6e313e7d37 Image Rendering: Remove PhantomJS support (#23460)
Removes all references and usage of PhantomJS #23375.
Remove direct link rendered image e2e smoke test for now.
Docker: Fix installing chrome in ubuntu custom docker image.
Improve handling of image renderer not available/installed #23593.
Add PhantomJS breaking change and upgrading notes.
Use grabpl v0.2.10.

Closes #13802

Co-authored-by: Kyle Brandt <kyle@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-04-15 22:17:41 +02:00
Tobias Skarhed 0a1ab60b8c Storybook: Organizing (#23572)
* Initial reorganizing

* Update Layout props table

* Change sorting and move stories
2020-04-15 21:51:20 +02:00
Ivana Huckova 95876f2be7 @grafana/ui: Remove ColorPallete component (#23592)
* Remove ColorPalette and its tests as it is not used anywhere

* Remove obsolete snapshot test
2020-04-15 21:33:07 +02:00
Johannes Midgren 4c80eb7537 Docs: Change header levels of last three sections (#23587)
The last three sections of this document are not rendered on https://grafana.com/docs/grafana/latest/alerting/notifications 
It seems like in all other instances (other .md docs of this project), level one headers are only used at the top of the page, so I assume using level two headers will make them show. Level two headers do also match the overall structure of the documentation.
2020-04-15 10:31:22 -07:00
Arve Knudsen 0dd2db8540 CircleCI: Upgrade the build pipeline tool (#23595)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-15 17:41:12 +02:00
Torkel Ödegaard 82fc2803f0 Table: Fixed error going into new panel edit (#23594) 2020-04-15 17:40:02 +02:00
Ryan McKinley 17059489d8 Inspector: move Panel JSON and query inspector to the inspector (#23354)
* move Panel JSON to inspector

* move Panel JSON to inspector

* update test

* use stats display options

* move query inspector to inspector

* open inspector from the queries section

* subscribe to results

* subscribe to results

* open the right tab

* apply review feedback

* update menus (inspect tabs)

* Dashboard: extend dashnav to add custom content (#23433)

* Dashlist: Fixed dashlist broken in edit mode (#23426)

* Chore: Fix bunch of strict null error to fix master CI (#23443)

* Fix bunch of null error

* Fix failing test

* Another test fix

* Docs: Add SQL region annotation examples (#23268)

Add region annotation examples for SQL data sources in docs.

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

* Docs: Update contributing doc to install node@12. (#23450)

* NewPanelEdit: Minor style and description tweaks, AND PanelQueryRunner & autoMinMax (#23445)

* NewPanelEdit: Minor style and description tweaks

* Removed the worst snapshot of all time

* ReactTable: adds color text to field options (#23427)

* Feature: adds text color field config

* Refactor: created an extension point

* Refactor: uses HOC for extension instead

* Fix: fixes background styling from affecting cells without display.color

* Chore: export OptionsUIRegistryBuilder on grafana/data (#23444)

* export the ui registry

* add to utils index also

* DataLinks: Do not full page reload data links links (#23429)

* Templating: Fix global variable "__org.id" (#23362)

* Fixed global variable __org.id value

* correct orgId value

* reverted the change as variables moved to new file

* Chore: reduce null check errors to 788 (currently over 798) (#23449)

* Fixed ts errors so build will succeed

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

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>

* Feedback from code review

* Leaving out trivial typing's

* Fix error with color being undefined now.

* fix test with timezone issue

* Fixed test

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>

* Cloudwatch: prefer webIdentity over EC2 role (#23452)

* Plugins: add a signature status flag (#23420)

* Progress

* fixed button

* Final touches

* now works from edit mode

* fix layout

* show raw objects

* move query inspector buttons to the bottom

* update snapshot

* Updated design

* Made full page reload work

* Fixed minor style issue

* Updated

* More fixes

* Removed unused imports

* Updated

* Moved to data tab out to seperate component

* fixed ts issue

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Agnès Toulet <35176601+AgnesToulet@users.noreply.github.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Alexandre de Verteuil <alexandre@grafana.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Cyril Tovena <cyril.tovena@gmail.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Vikky Omkar <vikkyomkar@gmail.com>
Co-authored-by: Stephanie Closson <srclosson@gmail.com>
Co-authored-by: Dário Nascimento <dfrnascimento@gmail.com>
2020-04-15 16:51:51 +02:00
Tobias Skarhed cff70b6648 Forms migration: Org users page (#23372)
* Migrate UsersActionBar

* Invites table

* Migrate Users page

* Select version of OrgPicker

* OrgRolePicker to use Select only

* Fix modal issue

* Move legacy Switch

* Move from Forms folder

* Fix failing test

* Merge and fix issues

* Update OrgRole issues

* OrgUser type

* Remove unused import

* Update Snapshot
2020-04-15 16:49:20 +02:00
Andrej Ocenas 1864807b15 Tracing: Performance optimization (#23474)
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq

* Enable docker logger plugin to send logs to loki

* Add placeholder zipkin datasource

* Fixed rebase issues, added enhanceDataFrame to non-legacy code path

* Trace selector for jaeger query field

* Fix logs default mode for Loki

* Fix loading jaeger query field services on split

* Updated grafana image in traceui/compose file

* Fix prettier error

* Hide behind feature flag, clean up unused code.

* Fix tests

* Fix tests

* Cleanup code and review feedback

* Remove traceui directory

* Remove circle build changes

* Fix feature toggles object

* Fix merge issues

* Add trace ui in Explore

* WIP

* WIP

* WIP

* Make jaeger datasource return trace data instead of link

* Allow js in jest tests

* Return data from Jaeger datasource

* Take yarn.lock from master

* Fix missing component

* Update yarn lock

* Fix some ts and lint errors

* Fix merge

* Fix type errors

* Make tests pass again

* Add tests

* Fix es5 compatibility

* Add header with minimap

* Fix sizing issue due to column resizer handle

* Fix issues with sizing, search functionality, duplicate react, tests

* Refactor TraceView component, fix tests

* Fix type errors

* Add dark theme styling

* Add tests for hooks

* More color changes

* Fix tests to deal with additional theme wrappers.

* Add memoization

* Fix duplicate identifier

Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
2020-04-15 16:04:01 +02:00
Marcus Olsson f48d444a14 Remove guides (#23589) 2020-04-15 15:19:12 +02:00
Agnès Toulet c796f70a3b Toolkit: Update node_modules path to fix Windows error (#23582) 2020-04-15 12:32:22 +02:00
Leonard Gram f997f85eb7 CI: scan master and release images oss/enterprise (#23475) 2020-04-15 12:07:49 +02:00
Marcus Efraimsson 2c36137457 Fix instantiation of plugin settings (#23583)
Forgot to instantiate plugin settings in #23451
2020-04-15 11:57:44 +02:00
Émile Fugulin d721dd13cd Allow API to assign new user to a specific organization (#21775)
* Allow API to assign new user to a specific organization

* Add defer block to test

* Add API tests and return 400 instead of 500 for bad orgId

* Minor test improvements
2020-04-15 12:11:45 +03:00
Tobias Skarhed da6056d5e1 Form migrations: Forms/switch move folders (#23430)
* Move legacy Switch

* Move from Forms folder

* Fix prettify issue

* Fix prettify issue
2020-04-15 10:59:15 +02:00
Marcus Andersson ab98a8be3b Runtime: make sure we don't lose nested default config values (#23560)
* Fixed so we dont miss the deep default options.

* removed console log.

* remove check of feature toggle and assuming that the new variables are the default ones.

* removed e2e statement about used featuretoggles.
2020-04-15 10:54:52 +02:00
Marcus Andersson ab8305fcb9 Docs: added code comments for everything in the @grafana/runtime package. (#23456)
* added comments for the angular loader.

* added code documentation for backendSrv.

* docs for datasource_srv.

* added some more docs.

* added documentation for the locationsrv.

* started to add docs for echo srv.

* added docs for meta srv.2

* added docs for analytics.

* draft documentation of the DataSourceWithBackend.

* added docs for last files.

* fixed all warnigns in api-extractor.

* fixed some typos and captializations.
2020-04-15 10:46:51 +02:00
Alexander Tymchuk b3df2d007a Fix a lexical flaw (#23447)
Please also note, that `https://github.com/grafana/worldmap-panel/blob/master/.eslintrc` does not exist (referenced in `Linting` section) .
2020-04-15 10:19:23 +02:00
Tobias Skarhed fa6a43c6e5 Docs: Select (#23398)
* Start Select docs

* Writ emore docs

* Apply suggestions from code review

Co-Authored-By: Alex Khomenko <Clarity-89@users.noreply.github.com>

Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-04-15 10:11:25 +02:00
ilyastoli b980cedfd5 CloudWatch: Added AWS Chatbot metrics and dimensions (#23516)
Adding AWS Chatbot metics according to https://docs.aws.amazon.com/chatbot/latest/adminguide/monitoring-cloudwatch.html
2020-04-15 10:35:21 +03:00
Hugo Häggmark 0091885b13 Variables: fixes error when setting adhoc variables values (#23580) 2020-04-15 08:17:51 +02:00
Carl Bergquist 80f40040b0 Linting fixes for dashboard provsioning (#23576) 2020-04-15 08:12:52 +02:00
Ryan McKinley 010c67cc71 Chore: update rxjs (#23577) 2020-04-14 16:22:03 -07:00
Stephanie Closson 52575ff03f Toolkit: Copy config files to dist for plugin use/Fix circleci build errors (#23575)
* replaced run

* consolidated dist and toolkit

* Solved a few more issues
1. Need to explicitly copy circleci config to dist
   so that it's published
2. Detect build directory, and use "local" or "linked"
   mode for local builds.

* Reverted change used only for testing

* grafana-toolkit.js always required now. Copy to dist

* removed grafana-toolkit.dist.js, no longer required

* feedback from code review

* Code review comments 2.
2020-04-14 15:05:18 -06:00
Ivana Huckova 0652671443 Dashboard search: Update input and closing button (#23573)
* Update Dashboard search page

* Update tests, remove unused icon types, adjust x icon position

* Update icon.ts
2020-04-14 21:29:42 +02:00
Torkel Ödegaard 460561a25c Transformations: UX updates (#23574) 2020-04-14 21:17:44 +02:00
Ryan McKinley 8b48a1c806 Table Panel: use react as the default table panel (#23543) 2020-04-14 12:14:06 -07:00
Artur Kondas 9f2af718dc Provisioning: Validate that dashboard providers have unique names (#22898)
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: bergquist <carl.bergquist@gmail.com>
2020-04-14 20:54:00 +02:00
Tobias Skarhed f15593684a Form migrations: Last components from Forms namespace (#23556)
* Migrate RadioButtonGroup

* Migrate Label

* Migrate Form

* Migrate Field

* Missing Form import

* Migrate InputControl

* Migrate Checkbox

* Move InputControl and uncomment

* Fix small issues

* inor fix

* Fix import

* Fix stuff
2020-04-14 18:52:56 +02:00
Stephanie Closson a28dfaf177 Toolkit: Fix error for running in linked mode vs non-linked mode (#23571)
* replaced run

* consolidated dist and toolkit
2020-04-14 10:46:29 -06:00
Robby Milo 8c9204ae8e Docs: fix links (#23470) 2020-04-14 18:28:57 +02:00
Tobias Skarhed 5cd2b22684 Storybook: Change deploy bucket (#23569) 2020-04-14 18:28:41 +02:00
Marcus Efraimsson 34266cd369 Backend Plugins: Plugin configuration using Grafana config (#23451)
Enables adding a section `plugin.<plugin id>` and key/value to
Grafana configuration file which will be converted and sent
as environment variables to the backend plugin.
Also sends some additional environment variables, Grafana
version (GF_VERSION), Grafana edition (GF_EDITION) and 
enterprise license path (GF_ENTERPRISE_LICENSE_PATH).

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

Fixes #21515,
2020-04-14 18:04:27 +02:00
Arve Knudsen 941cd59894 grafana-build-container: Update armv7 musl compiler (#23558)
* grafana-build-container: Update armv7 musl compiler

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

* grafana-build-container: Bump version

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

* CircleCI: Use newer grafana/build-container image

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-14 16:59:45 +02:00
Diana Payton d18dacf7bf Docs: Update menu.yaml (#23476)
Changed Tutorials to Guides
2020-04-14 06:58:39 -07:00
Ivana Huckova 0949d3292d Replace Icons for IconButtons when used as buttons (#23554) 2020-04-14 15:15:36 +02:00
Hugo Häggmark 2661054fe8 Hangouts: fixes notifications for alerts with empty message (#23559)
* Hangouts: fixes notifications for alerts with empty message

* Update pkg/services/alerting/notifiers/googlechat.go

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

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-14 15:02:58 +02:00
Ryan McKinley aaab636bf4 Plugins: verify manifest signature (#23519)
* try decode

* vendor crypto deps

* commited missing vendor deps

* Theme: Refactoring theme colors variables  (#23513)

* Theme: Typography updates

* Updated

* Updated snapshot

* Renamed colors to palette

* Introduce colors namespace

* Massive theme color move

* Removing color selection logic with more abstract concepts

* Updates

* Minor sidemenu change

* Fix example jaeger agent port in docs (#23514)

* @grafana/ui: Replace various icons using Icon component (#23442)

* Replace icons in dashboard and settings

* Replace icons in alerting

* Update batch of icons

* Implement icons accross various files

* Style updates

* Search: Fix recent and starred icons

* Update styling and details

* Replace new icon created by unicons

* Fix e2e test, styling

* Minor styling updates

Co-authored-by: Clarity-89 <homes89@ukr.net>

* trying with p512 key

* trying with p512 key

* lint

* update with real signatures

* fixes spacing in test files

* remove convey from test

* use errutil to wrap errors

* removes print statement

* splitt tests into two run statements

* unexport plugin manifest struct

Co-authored-by: bergquist <carl.bergquist@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Vitaly Zhuravlev <v-zhuravlev@users.noreply.github.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
Co-authored-by: Clarity-89 <homes89@ukr.net>
2020-04-14 06:02:39 -07:00
Torkel Ödegaard 61460ea3a2 Graphite: Fixed cannot read finally of undefiend (#23512) 2020-04-14 14:18:42 +02:00
Andrej Ocenas cf1ebd5a3d Tracing: Dark theme styling for TraceView (#23406)
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq

* Enable docker logger plugin to send logs to loki

* Add placeholder zipkin datasource

* Fixed rebase issues, added enhanceDataFrame to non-legacy code path

* Trace selector for jaeger query field

* Fix logs default mode for Loki

* Fix loading jaeger query field services on split

* Updated grafana image in traceui/compose file

* Fix prettier error

* Hide behind feature flag, clean up unused code.

* Fix tests

* Fix tests

* Cleanup code and review feedback

* Remove traceui directory

* Remove circle build changes

* Fix feature toggles object

* Fix merge issues

* Add trace ui in Explore

* WIP

* WIP

* WIP

* Make jaeger datasource return trace data instead of link

* Allow js in jest tests

* Return data from Jaeger datasource

* Take yarn.lock from master

* Fix missing component

* Update yarn lock

* Fix some ts and lint errors

* Fix merge

* Fix type errors

* Make tests pass again

* Add tests

* Fix es5 compatibility

* Add header with minimap

* Fix sizing issue due to column resizer handle

* Fix issues with sizing, search functionality, duplicate react, tests

* Refactor TraceView component, fix tests

* Fix type errors

* Add dark theme styling

* Add tests for hooks

* More color changes

* Fix tests to deal with additional theme wrappers.

Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
2020-04-14 13:26:33 +02:00
Carl Bergquist 754dfdfa87 Lower log level for some startup logs statements (#23517) 2020-04-14 12:18:45 +02:00
Torkel Ödegaard bc60f9c403 Theme: Typography variables overhaul, theme cleanup, improvents to storybook ThemeColors component (#23531)
* Began text theme refactoring

* Consolidating blue varaibles

* Theme: Typography overhaul and theme cleanup

* Theme updates, alignment and fixes

* Updated snapshots

* Restored template variable class

* Updates

* added container

* Updated snapshot
2020-04-14 11:32:14 +02:00
Dominik Prokop 16bc5c118d DashboardSave: Display error message when folder/dashboard name validation fails (#23416)
* Display error message when folder/dashboard name validation fails

* Fix test

* Better error handling

* Fix tests
2020-04-14 10:55:27 +02:00
Ivana Huckova 95e635f154 Replace Icon for buttonIcon in logDetailsRow (#23522) 2020-04-14 09:01:35 +02:00
Mohit Nain 5c018c9fa9 Fix typos in docs/sources/features/datasources/elasticsearch.md 2020-04-14 08:55:11 +02:00
Tobias Skarhed 4cf8e1d6a7 Storybook: Update URL to push to new bucket (#23441) 2020-04-14 08:26:41 +02:00
Stephanie Closson c5f21bdae9 Toolkit: Provide update plugin to allow plugins configuration to normalize (#23540)
* Toolkit: Update plugin added
- To normalize an bring a plugins "managed" config up to date

* Added changes for filter only release

* changed name

* updated test for checking files in manifest
2020-04-13 17:10:33 -06:00
Mohit Nain 32390c1c39 Docs: Correcting couple of typos in the document (#23539) 2020-04-13 12:03:14 -07:00
Stephanie Closson ae95287d1e New alpine based plugin ci image (#23533)
* New alpine based plugin ci image
- smaller, based on alpine (downloads in 7 to 10 seconds)
- Has updated gget that uses tar.gz
  - Unpacks to /opt/grafana
- Compatible cp with toolkit

* needed build tools for go lint

* added built vm to test tool

* add circleci plugin config

* added openssh to image

* fix for gget & renamed to ginstall
2020-04-13 11:53:16 -06:00
Mohit Nain a70dec6c88 Stackdriver data source: Fix typos in docs. 2020-04-13 10:43:37 +02:00
Torkel Ödegaard 8b7decf57b Styles & Theme: Inline form styles polish & tweaks (#23521)
* Styles: Refactoring and tweaks to inline form styles

* Minor change

* Minor fix

* Updated snapshot

* tweaks

* minor tweak

* Updated modal style

* Updated snapshot

* Updated more snapshots
2020-04-13 09:58:40 +02:00
Ryan McKinley d4516439ec Chore: rename TimePicker to TimeRangePicker (#23524)
* rename TimePicker to TimeRangePicker

* more updates

* rename snapshot
2020-04-12 21:05:29 -07:00
Ivana Huckova 1c58202b26 @grafana/ui: Replace various icons using Icon component (#23442)
* Replace icons in dashboard and settings

* Replace icons in alerting

* Update batch of icons

* Implement icons accross various files

* Style updates

* Search: Fix recent and starred icons

* Update styling and details

* Replace new icon created by unicons

* Fix e2e test, styling

* Minor styling updates

Co-authored-by: Clarity-89 <homes89@ukr.net>
2020-04-12 22:20:02 +02:00
Vitaly Zhuravlev 0aa95d97c8 Fix example jaeger agent port in docs (#23514) 2020-04-12 21:38:16 +02:00
Torkel Ödegaard 1ba8f1647e Theme: Refactoring theme colors variables (#23513)
* Theme: Typography updates

* Updated

* Updated snapshot

* Renamed colors to palette

* Introduce colors namespace

* Massive theme color move

* Removing color selection logic with more abstract concepts

* Updates

* Minor sidemenu change
2020-04-12 15:05:49 +02:00
Carl Bergquist 0fd5945542 Fixes linting errors in datasource provisioning. (#23515) 2020-04-11 21:07:07 +02:00
Ryan McKinley 6f1a25a896 DataFrame: expose an object array as a data frame (#23494) 2020-04-11 07:08:22 -07:00
Torkel Ödegaard 6cb7d95916 Components: IconButton (#23510)
* IconButton: New component to share pointer, size & hover style for icon buttons

* Progress

* IconButton: new component

* Think I am done

* Updated snapshots

* Do not like the black button reverting that, and not the plus-circle changed to plus

* fixed test

* fixed e2e test

* Fixed ts issue
2020-04-11 16:07:18 +02:00
Ryan McKinley afec54d257 Tookit: set verison from info.version (#23511) 2020-04-10 22:49:25 -07:00
Ryan McKinley fc55c8d017 Toolkit: more logging while signging (#23509) 2020-04-10 21:09:06 -07:00
Ryan McKinley db166c4c41 Chore: remove file export (use inspector/toCSV()) (#23508)
* remove file export... use CSV download

* remove file export... use CSV download
2020-04-10 21:08:19 -07:00
Ryan McKinley 8ed6ab2bc9 Toolkit: add CI to the signing URL (#23507) 2020-04-10 16:11:20 -07:00
Dominik Prokop 58257a95a3 Transformations: Refactor to use single registry for transformations (#23502)
* Use single registry for transformations

* Fix transformations tests

* Added documentation comments and minor refactor

* Added documentation comments and minor refactor
Minor misunderstanding between me and Typescript. We should be good friends back now.

* Fix registry import
2020-04-10 19:21:49 +02:00
Stephanie Closson 7f61f3cc43 Fix: 404 is returned as an exception. Catch and if 404, don't worry about it (#23505) 2020-04-10 11:18:44 -06:00
Arve Knudsen 3dde8585ff Docs: Document default limit of /api/folders (#23435)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-10 17:43:00 +02:00
Alex Khomenko 6d1e323b78 Grafana UI: make menuPlacement customizable (#23499) 2020-04-10 18:03:27 +03:00
Jacky 1ff69db5cb Make name unique to fix issue #22426 (#22458)
* make name unique

* delete mini class instead rename

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-10 17:02:18 +02:00
Torkel Ödegaard 5a4f690807 NewPanelEditor: Enable new edit mode (#23405)
* WIP: initial commit to transition to new edit mode

* More old edit cleanup

* Minor update

* Refactoring url edit/fullscreen state to simplify logic, now seperate states

* Fixed tests and part of the explore integration

* Updated snapshot

* Fix alert rule links

* Fixed issue going back from explore

* Updated snapshots

* Fixes and changes

* Fixed bridge srv issue

* Fixed add panel issue

* Removed console log

* Removed render

* Tests: fixes e2e smoketest

* Make description optional

* Fixed typings

* e2e fixes

* removed import

* updated snapshot

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-04-10 16:37:26 +02:00
Dominik Prokop f9c0c22d85 Add documentation comments for declarative options API (#23495) 2020-04-10 13:29:48 +02:00
Dominik Prokop 3ebba56f6b NewPanelEdit: Remove legacy editors for thresholds, value mappings and field properties (#23497)
* Remove legacy value mappings editor

* Remove FieldPropertiesEditor

* Remove legacy ThresholdsEditor
2020-04-10 13:29:16 +02:00
Dominik Prokop 94f87c7288 Fix react missing key warnings (#23498) 2020-04-10 13:28:26 +02:00
Ryan McKinley 32555fc769 Plugins: add a deprecated state (#23496)
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-10 11:30:36 +02:00
Alex Khomenko f458da4d7f React generator (#23150)
* Toolkit: Setup templates

* Toolkit: Add plop

* Toolkit: Setup createComponent task

* Toolkit: Use lodash templates

* Toolkit: Generate story and mdx file

* Toolkit: Add story type

* Toolkit: Fix types

* Toolkit: Add test template

* Toolkit: Remove plop

* Toolkit: Tweak types

* Toolkit: Minor fixes

* Toolkit: Add internal story option

* Toolkit: Fix test

* Toolkit: Clarify prompt

* Toolkit: add prompt list for component group

* Toolkit: make generator script internal

* Toolkit: add description

* Toolkit: add missing when condition
2020-04-10 11:32:49 +03:00
Torkel Ödegaard 1468bab360 Redux: Added config to redux development middlewares that checks for mutations and serializability (#23492)
* Redux: Added config to redux development middlewares that checks for mutations and serializability

* Disable these middlewares, they are too slow

* Update public/app/store/configureStore.ts

* Update public/app/store/configureStore.ts

* Prettier fix

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-10 10:08:42 +02:00
Ryan McKinley a56615749a Plugins: fix debug formatting when scanning for files (#23484) 2020-04-10 00:45:07 -07:00
Alexander Zobnin 4d81cec34f Admin: Fix Synced via LDAP message for non-LDAP external users (#23477)
* UserAdmin: remove Synced via LDAP message for non-LDAP users

* UserAdmin: show "Synced via <provider>" message for external users
2020-04-10 09:23:27 +03:00
Ryan McKinley bb357adcab NewEditor: don't show field tabs for non data panels (#23487) 2020-04-09 21:26:37 -07:00
Lukas Siatka ba70b59f4c DevEnv: update frontend dependencies - redux (#22143)
* DevEnv: updates @types/react-redux 7.1.2. -> 7.1.7

* DevEnv: updates react-redux 7.1.1 -> 7.1.3

* DevEnv: updates redux 4.0.4 -> 4.0.5

* DevEnv: updates @reduxjs/toolkit 1.2.1 -> 1.2.3

* DevEnv: updates @types/redux-mock-store 1.0.1 -> 1.0.2

* DevEvn: updates redux-mock-store 1.5.3 -> 1.5.4

* DevEnv: updates react-redux 7.1.3 -> 7.2.0

* DevEnv: updates @reduxjs/toolkit 1.2.3 -> 1.3.4

* DevEnv: updates redux middleware
2020-04-10 01:53:33 +02:00
Ryan McKinley b710f21a06 Toolkit: catch errors from signing service (#23486) 2020-04-09 13:30:34 -07:00
Joshua Shannon 2da704be55 Docs: Change Grafana.net to Grafana.com/plugins (#23479)
This already linked to grafana.com, I just changed the text of the link to reflect where the link actually directs you to.
2020-04-09 12:48:01 -07:00
Kyle Brandt 5153673884 BackendPlugins: update to sdk v0.42.0
misc cleanup
2020-04-09 15:47:30 -04:00
Dominik Prokop 712564f66a NewPanelEdit: Add unified UI to queries and transformations (#23478)
* Do not use pointer cursor on icon by default

* Allow items alignment in the HorizontalGroup layout

* Add util for rendering components based on their type (element or function)

* Components for rendering query and transformation rows in a unified way

* Apply new UI fo query and transformation rows

* Add some tests

* Minor fix for scroll area

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-09 21:23:22 +02:00
Dominik Prokop 76827d2152 NewPanelEdit: General options categorisation (#23145)
* First bar gauge panel option

* Update doc comments

* Minor changes

* progress

* Minor type updates

* Fixing typing errors

* Fix that TS!

* Bring satisfaction to that beast called typescript

* Prototype

* Remove import

* Experimenting with different named categories

* Experimenting with category naming

* Naming is very hard

* merge master

* Remove commented code

* Fix merge

* Categorise panel options into collapsible sections

* Remove categories from table panel

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-09 21:22:43 +02:00
Torkel Ödegaard 278c312d58 React: Add why-did-you-render dev extension to better see what components re-render and why (in console) (#23455)
* React: Add why-did-you-render dev extension to better understand what components re-renders

* Lock version

* Updated yarn locj
2020-04-09 19:44:05 +02:00
Alex Khomenko d831dde349 Use new Select for TagFilter (#23472) 2020-04-09 20:21:27 +03:00
Marcus Andersson 32066a3f67 Build: removed circular dependencies to make grafana/ui build again (#23468)
* fixed dependecy issues.

* Fixed so we don't have any circular dependencies.

* added missing type.

* fixed formatting issue of config.

* skipping sourcemap again.
2020-04-09 09:42:59 -07:00
Ryan McKinley 227b233aaa Toolkit: save a json manifest file for signing (#23446) 2020-04-09 08:28:30 -07:00
ilyastoli 692a73875b CloudWatch: Added missing Cassandra metrics (#23467)
Adding missing CloudWatch metrics Cassandra
2020-04-09 17:08:28 +03:00
Carl Bergquist a08cbbcc81 Instrument backend plugin requests (#23346) 2020-04-09 14:47:46 +02:00
Ryan 1f0e1b33bc Postgres: Add SSL support for datasource (#21341)
* Add SSL certificate/key fields to Postgres data source configuration

Co-authored-by: Edwin Cordeiro <edwin@scordeiro.net>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-09 12:48:29 +02:00
Dominik Prokop 94f2a3ebae Packages: Fix for imports from indexes (#23458), fixes e2e 2020-04-09 11:30:25 +02:00
Torkel Ödegaard b00e70997c Forms: Fixed forms namespace change issue 2020-04-09 09:56:53 +02:00
Tobias Skarhed c11ea0b973 Form migrations: TextArea from Forms namespace (#23436)
* Move from Forms namespace and move folder

* Figrate pages from Forms

* Make Enterprise mergable
2020-04-09 09:16:10 +02:00
Ryan McKinley 468f5d15ab Plugins: add a signature status flag (#23420) 2020-04-09 00:00:16 -07:00
Dário Nascimento 7329671793 Cloudwatch: prefer webIdentity over EC2 role (#23452) 2020-04-08 23:58:32 -07:00
Stephanie Closson 3acc318d72 Chore: reduce null check errors to 788 (currently over 798) (#23449)
* Fixed ts errors so build will succeed

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

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>

* Feedback from code review

* Leaving out trivial typing's

* Fix error with color being undefined now.

* fix test with timezone issue

* Fixed test

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-09 08:29:36 +02:00
Vikky Omkar bbfe628a32 Templating: Fix global variable "__org.id" (#23362)
* Fixed global variable __org.id value

* correct orgId value

* reverted the change as variables moved to new file
2020-04-09 08:00:07 +02:00
Torkel Ödegaard 02d303a595 DataLinks: Do not full page reload data links links (#23429) 2020-04-09 07:58:57 +02:00
Ryan McKinley 38082747dc Chore: export OptionsUIRegistryBuilder on grafana/data (#23444)
* export the ui registry

* add to utils index also
2020-04-09 07:57:03 +02:00
Hugo Häggmark d36397e7bd ReactTable: adds color text to field options (#23427)
* Feature: adds text color field config

* Refactor: created an extension point

* Refactor: uses HOC for extension instead

* Fix: fixes background styling from affecting cells without display.color
2020-04-09 07:42:31 +02:00
Torkel Ödegaard d257e661cd NewPanelEdit: Minor style and description tweaks, AND PanelQueryRunner & autoMinMax (#23445)
* NewPanelEdit: Minor style and description tweaks

* Removed the worst snapshot of all time
2020-04-09 05:47:12 +02:00
Cyril Tovena 24b928c88d Docs: Update contributing doc to install node@12. (#23450) 2020-04-08 20:29:10 -07:00
Alexandre de Verteuil 8b2bdd807b Docs: Add SQL region annotation examples (#23268)
Add region annotation examples for SQL data sources in docs.

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-04-09 02:32:45 +02:00
Andrej Ocenas 263dcb1452 Chore: Fix bunch of strict null error to fix master CI (#23443)
* Fix bunch of null error

* Fix failing test

* Another test fix
2020-04-08 23:44:10 +02:00
Torkel Ödegaard 363bf7506d Dashlist: Fixed dashlist broken in edit mode (#23426) 2020-04-08 21:45:21 +02:00
Agnès Toulet 04d3c3aaed Dashboard: extend dashnav to add custom content (#23433) 2020-04-08 21:13:12 +02:00
Dominik Prokop ea792edd3a NewPanelEditor/Panels: refactor setDefault to setPanelOptions (#23404)
* Remove deprecated setDefault usages

* Add simple support for conditinal field config properties

* Use new API in NewsPanel

* Update tests

* Fix check
2020-04-08 19:21:26 +02:00
Marcus Efraimsson a29056966c Use v0.39.0 of SDK (#23388) 2020-04-08 18:54:23 +02:00
Stephanie Closson 242db64158 Learnings from latest automated git publish. Small tweaks (#23440) 2020-04-08 09:22:36 -06:00
Andrej Ocenas 008bee8f27 Tracing: Adds header and minimap (#23315)
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq

* Enable docker logger plugin to send logs to loki

* Add placeholder zipkin datasource

* Fixed rebase issues, added enhanceDataFrame to non-legacy code path

* Trace selector for jaeger query field

* Fix logs default mode for Loki

* Fix loading jaeger query field services on split

* Updated grafana image in traceui/compose file

* Fix prettier error

* Hide behind feature flag, clean up unused code.

* Fix tests

* Fix tests

* Cleanup code and review feedback

* Remove traceui directory

* Remove circle build changes

* Fix feature toggles object

* Fix merge issues

* Add trace ui in Explore

* WIP

* WIP

* WIP

* Make jaeger datasource return trace data instead of link

* Allow js in jest tests

* Return data from Jaeger datasource

* Take yarn.lock from master

* Fix missing component

* Update yarn lock

* Fix some ts and lint errors

* Fix merge

* Fix type errors

* Make tests pass again

* Add tests

* Fix es5 compatibility

* Add header with minimap

* Fix sizing issue due to column resizer handle

* Fix issues with sizing, search functionality, duplicate react, tests

* Refactor TraceView component, fix tests

* Fix type errors

* Add tests for hooks

Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
2020-04-08 17:16:22 +02:00
Alex Khomenko d04dce6a37 Search/refactor dashboard search (#23274)
* Search: add search wrapper

* Search: add DashboardSearch.tsx

* Search: enable search

* Search: update types

* Search: useReducer for saving search results

* Search: use default query

* Search: add toggle custom action

* Search: add onQueryChange

* Search: debounce search

* Search: pas dispatch as a prop

* Search: add tag filter

* Search: Fix types

* Search: revert changes

* Search: close overlay on esc

* Search: enable tag filtering

* Search: clear query

* Search: add autofocus to search field

* Search: Rename close to closeSearch

* Search: Add no results message

* Search: Add loading state

* Search: Remove Select from Forms namespace

* Remove Add selectedIndex

* Remove Add getFlattenedSections

* Remove Enable selecting items

* Search: add hasId

* Search: preselect first item

* Search: Add utils tests

* Search: Fix moving selection down

* Search: Add findSelected

* Search: Add type to section

* Search: Handle Enter key press on item highlight

* Search: Move reducer et al. to separate files

* Search: Remove redundant render check

* Search: Close overlay on Esc and ArrowLeft press

* Search: Add close button

* Search: Document utils

* Search: use Icon for remove icon

* Search: Add DashboardSearch.test.tsx

* Search: Move test data to a separate file

* Search: Finalise DashboardSearch.test.tsx

* Add search reducer tests

* Search: Add search results loading indicator

* Search: Remove inline function

* Search: Do not mutate item

* Search: Tweak utils

* Search: Do not clear query on tag clear

* Search: Fix folder:current search

* Search: Fix results scroll

* Search: Update tests

* Search: Close overlay on cog icon click

* Add mobile styles for close button

* Search: Use CustomScrollbar

* Search: Memoize TagList.tsx

* Search: Fix type errors

* Search: More strictNullChecks fixes

* Search: Consistent handler names

* Search: Fix search items types in test

* Search: Fix merge conflicts

* Search: Fix strictNullChecks errors
2020-04-08 18:14:03 +03:00
Patrik Karlström dbda5aece9 cloudwatch: Replicate SDK behaviour for WebIdentityRole (#21594)
* Replicate SDK behaviour for WebIdentityRole

Fix #20473

* Use WebIdentityRole in s3 uploader as well

* Use consistent casing

* use WebIdentityRole to assume another role

Co-authored-by: eV <ev@7pr.xyz>
2020-04-08 15:05:24 +02:00
Ivana Huckova 431f454d57 @grafana/ui: Create Icon component and replace part of the icons (#23402)
* Part1: Unicons implementation (#23197)

* Create a new Icon component

* Update icons in main sidebar

* Update icons in Useful links and in react components on  main site

* Update icons in Useful links and in main top navigation

* Adjust sizing

* Update panel navigation and timepicker

* Update icons in Panel menu

* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)

* Update icons in add panel widget

* Resolve merge conflict

* Fix part of the test errors and type errors

* Fix storybook errors

* Update getAvailableIcons import in storybook knobs

* Fix import path

* Fix SyntaxError: Cannot use import statement outside a module in test environment error

* Remove dynamic imports

* Remove types as using @ts-ignore

* Update snapshot test

* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax

* Remove color prop from icon, remove color implemetation in mono icons

* Update navbar styling

* Move toPascalCase to utils/string

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

* Resolve type errors resulted from merge

* Part2: Unicons implementation (#23266)

* Create a new Icon component

* Update icons in main sidebar

* Update icons in Useful links and in react components on  main site

* Update icons in Useful links and in main top navigation

* Adjust sizing

* Update panel navigation and timepicker

* Update icons in Panel menu

* Update icons in add panel widget

* Resolve merge conflict

* Fix part of the test errors and type errors

* Fix storybook errors

* Update getAvailableIcons import in storybook knobs

* Fix import path

* Fix SyntaxError: Cannot use import statement outside a module in test environment error

* Remove dynamic imports

* Remove types as using @ts-ignore

* Update snapshot test

* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax

* Implment icons in Tabs

* Implement icons in search items and  empty  list

* Update buttons

* Update button-related snapshot tests

* Update icons in modals and page headers

* Create anfular wrapper and update all icons on search screen

* Update sizing, remove colors, update snapshot tests

* Remove color prop from icon, remove color implemetation in mono icons

* Remove color props from monochrome icons

* Complete update of icons for search screen

* Update icons for infor tooltips, playlist, permissions

* Support temporarly font awesome icons used in enterprise grafana

* Part1: Unicons implementation (#23197)

* Create a new Icon component

* Update icons in main sidebar

* Update icons in Useful links and in react components on  main site

* Update icons in Useful links and in main top navigation

* Adjust sizing

* Update panel navigation and timepicker

* Update icons in Panel menu

* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)

* Update icons in add panel widget

* Resolve merge conflict

* Fix part of the test errors and type errors

* Fix storybook errors

* Update getAvailableIcons import in storybook knobs

* Fix import path

* Fix SyntaxError: Cannot use import statement outside a module in test environment error

* Remove dynamic imports

* Remove types as using @ts-ignore

* Update snapshot test

* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax

* Remove color prop from icon, remove color implemetation in mono icons

* Update navbar styling

* Move toPascalCase to utils/string

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

* Icons update

* Add optional chaining to for isFontAwesome variable

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

* Part3:  Unicons implementation (#23356)

* Create a new Icon component

* Update icons in main sidebar

* Update icons in Useful links and in react components on  main site

* Update icons in Useful links and in main top navigation

* Adjust sizing

* Update panel navigation and timepicker

* Update icons in Panel menu

* Update icons in add panel widget

* Resolve merge conflict

* Fix part of the test errors and type errors

* Fix storybook errors

* Update getAvailableIcons import in storybook knobs

* Fix import path

* Fix SyntaxError: Cannot use import statement outside a module in test environment error

* Remove dynamic imports

* Remove types as using @ts-ignore

* Update snapshot test

* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax

* Implment icons in Tabs

* Implement icons in search items and  empty  list

* Update buttons

* Update button-related snapshot tests

* Update icons in modals and page headers

* Create anfular wrapper and update all icons on search screen

* Update sizing, remove colors, update snapshot tests

* Remove color prop from icon, remove color implemetation in mono icons

* Remove color props from monochrome icons

* Complete update of icons for search screen

* Update icons for infor tooltips, playlist, permissions

* Support temporarly font awesome icons used in enterprise grafana

* Part1: Unicons implementation (#23197)

* Create a new Icon component

* Update icons in main sidebar

* Update icons in Useful links and in react components on  main site

* Update icons in Useful links and in main top navigation

* Adjust sizing

* Update panel navigation and timepicker

* Update icons in Panel menu

* NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179)

* Update icons in add panel widget

* Resolve merge conflict

* Fix part of the test errors and type errors

* Fix storybook errors

* Update getAvailableIcons import in storybook knobs

* Fix import path

* Fix SyntaxError: Cannot use import statement outside a module in test environment error

* Remove dynamic imports

* Remove types as using @ts-ignore

* Update snapshot test

* Add @iconscout/react-unicons to the shouldExclude list as it is blundled with es2015 syntax

* Remove color prop from icon, remove color implemetation in mono icons

* Update navbar styling

* Move toPascalCase to utils/string

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

* Update icons in Explore

* Update icons in alerting

* Update + and x buttons

* Update icons in configurations and settings

* Update close icons

* Update icons in rich history

* Update alert messages

* Add optional chaining to for isFontAwesome variable

* Remove icon mock, set up jest.config

* Fix navbar plus icon

* Fir enable-bacground to enableBackgournd

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

* Merge remote branch origin master to icons-unicons

* Revert "Merge remote branch origin master to icons-unicons"

This reverts commit 3f25d50a39.

* Size-up dashnav icons

* Fix alerting icons, panel headers, update tests

* Fix typecheck error

* Adjustments - add panel icon, spacing

* Set TerserPlugin sourceMap to false to prevent running out of memory when publishing storybook

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-08 14:33:31 +02:00
Arve Knudsen 7799dd84c1 Chore: Upgrade to Go 1.14 (#23371)
* Chore: Upgrade to Go 1.14
* Chore: Bump version of grafana/grafana-ci-deploy Docker image
* Chore: Fix/bump version of grafana/build-container Docker image
* CircleCI: Upgrade build Docker images
2020-04-08 14:13:05 +02:00
Robby Milo bd27647574 Docs: fix time series table (#23400)
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-08 14:09:34 +02:00
Torkel Ödegaard 137b47ccbd NewPanelEdit: Minor fixes (#23425) 2020-04-08 13:49:35 +02:00
Jess 05ea159082 Docs: Switch.mdx (#23142)
* Add "When to use" info to Switch.mdx

* Update Switch.mdx
2020-04-08 13:03:48 +02:00
Torkel Ödegaard 23407e9a32 Docs: Update changelog with attribution 2020-04-08 10:56:23 +02:00
Tobias Skarhed 61a2a713ea Forms migrations: Move Switch from Forms namespace (#23386) 2020-04-08 10:17:19 +02:00
Torkel Ödegaard 6779033bca Forms: Fixed form style issues due to recent style changes (#23421)
* Forms: Fixed form style issues due to recent style changes

* Removed unused import
2020-04-08 10:14:03 +02:00
kay delaney a3b581a5f3 Chore: More robust identification of time/value fields in makeSeriesForLogs (#23392)
* Chore: More robust identification of time/value fields in makeSeriesForLogs
2020-04-08 09:07:12 +01:00
Ryan McKinley 2f7ba21593 Docs: add basic docs for QueryResultMetaNotice (#23410)
* add basic docs

* fix typo

* use link not url
2020-04-08 08:18:48 +02:00
Torkel Ödegaard 0612293543 NewPanelEdit: minor improvement to angular panels 2020-04-08 07:47:15 +02:00
Stephanie Closson 8ed29a7bdf Toolkit: handle 404 errors gracefully on unpublish in circleci-release-next-packages.sh (#23417)
* handle 404 errors gracefully

* need to redirect stderr to stdout to check for 404s
2020-04-07 16:51:02 -06:00
Ryan McKinley 4a2a2b163b Query: make queryType a top level property (#23412) 2020-04-07 13:58:08 -07:00
Ryan McKinley 4a3399e953 DataSourceWithBackend: resources response (#23411) 2020-04-07 12:52:31 -07:00
Ryan McKinley 938c61865d Chore: fix build, make prettier happy (#23414) 2020-04-07 12:27:32 -07:00
Torkel Ödegaard da9402b434 Packages: Fix rollup issue in master with Table component (#23413) 2020-04-07 21:12:53 +02:00
Kyle Brandt 80729e9fb1 Chore: remove unused go package dynmap (#23409) 2020-04-07 14:58:10 -04:00
Marcus Andersson 1496da036b PanelEdit: made the transformers tab re-render on changes (#23384)
* fixed so the transformers UI is less buggy.

* changed so we don't mutate state.
2020-04-07 19:54:06 +02:00
Stephanie Closson 20246a31f3 Fix for deprecating packages (#23403)
* Fix for deprecating packages

* fixed tabs

* code review - added set -eo pipefail
2020-04-07 09:29:31 -06:00
Ryan McKinley 67e45a1d43 Plugins: do not publish bundled plugins to npm (#23401) 2020-04-07 08:01:06 -07:00
Dominik Prokop 7425f9b400 Fix merge 2020-04-07 16:23:04 +02:00
Kyle Brandt f6cbb26167 BackendPlugin: Change QueryData response format (#23234)
* BackendPlugin: (wip) change response format
goes with https://github.com/grafana/grafana-plugin-sdk-go/pull/109

* fix error mapping in wrapper

* latest of my sdk branch

* latest of my sdk branch

* TransformWrapper fixes

* latest of sdk branch (removes extra meta)

* add metadata in wrappers

* also set error string

* sdk: v0.35.0
2020-04-07 10:13:14 -04:00
Tuan Anh Hoang-Vu afd8ffde69 BackendSrv: include credentials when withCredentials option is set (#23380)
The fetch() API won't send cookies or other type of credentials unless
you set the credentials init option. Some datasources like Prometheus
and Elasticsearch have `withCredentials` option in Browser access mode,
but this option is not currently getting passed in the fetch() API.

Fixes #23338.
2020-04-07 16:09:02 +02:00
Hugo Häggmark da41cd645a ReactTable: adds possibility to resize columns (#23365)
* Refactor: adds one form of column resize to React-Table

* Refactor: resizing works

* Refactor: adds onColumnResize

* Refactor: fixes so sorting is not invoked when resizing

* Refactor: fixes styles for resizer

* Refactor: removes callback call

* Refactor: changes after comments

* Refactor: updates code according to new api

* Improved styling

* fix

* Refactor: adds back resizable panel option and defaults to false

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-07 15:20:27 +02:00
Dominik Prokop 92231cc42e FieldConfig: Set field config defaults based on config registry (#23376)
* Set field config defaults based on config registry

* Rename FIeldPropertyEditorItem to FieldConfigPopertyItem

* Remove console.log

* Simplify overrides persistence model and add support for nested properties in overrides

* Review updates
2020-04-07 15:02:08 +02:00
Hugo Häggmark 3c61627ab7 ReactTable: adds alignment options (#23389) 2020-04-07 14:02:18 +02:00
Robby Milo cf43709316 Docs: fix image, add nginx code type (#23387) 2020-04-07 12:08:05 +02:00
Marcus Andersson 6a5794aa7a adding missing named export. (#23385) 2020-04-07 11:33:11 +02:00
Alexander Zobnin 2af87b4c6c Docs: remove azure and okta from generic oauth page (#23359) 2020-04-07 12:25:06 +03:00
Tobias Skarhed 21f55d1345 @grafana/ui docs: Input (#23228)
* Add prefix and suffix example

* Update doc

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

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

* Add light theme to be loaded for docs

* Add more docs

* Make Legacy stories internal

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-07 09:24:24 +02:00
Ryan McKinley 03e3ddcbdb Plugins: add a bundle plugins folder (#20850) 2020-04-07 00:04:24 -07:00
Tobias Skarhed 553f50e4f5 Form migrations: Switch to LegacyForms namespace (#23357)
* Move Switch to Legacy namespace

* Make story internal

* Fix import
2020-04-07 08:50:54 +02:00
Marcus Andersson d6b8aaa7b0 Transformers UI: Fixed import issue. (#23382) 2020-04-07 07:37:54 +02:00
Tobias Skarhed 6748ceae67 Update storybook.md (#23374) 2020-04-07 06:59:50 +02:00
Marcus Andersson 1f717f514a TabelPanel: add support for organizing fields/columns. (#23135)
* Added draft on transformers to sort and hide fields.

* added structure for the UI.

* draft on sorting/filtering UI.

* simplified the datastructure a bit.

* added draft on drag and drop support.

* added some super simple styling. Nothing final still waiting for a proper design on this.

* updated lockfile after merge.

* changed so we use the new path for button.

* added one more test.

* Ignore feature toggle

* Moved editor to app

* Added top description

* Minor update

* Did some renaming and simplified the code a bit.

* fixed so we dont use capital naming on the transformer.

* changed to an vertical drag and drop design.

* added support to rename fields.

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-07 06:54:09 +02:00
Stephanie Closson 139753358d Fixes for toolkit (#23379)
1. Typo in the default email address
2. Nested promises causing problems in some situations. Return a promise
and resolve in the outer function
3. If extension still have '.' in front remove it prior to matching.
2020-04-06 17:28:48 -06:00
Nathan Webster 7f13b446e4 Docs: Improve AzureAD documentation for allowed_groups (#23326) 2020-04-06 10:23:49 -07:00
Stephanie Closson 20d3a9a00e Circle ci fixes automated build (#23373)
* Lessons learned from using circle-ci
1. Make it clearer that GITHUB_TOKEN or GITHUB_ACCESS_TOKEN
are required for a release. Don't build without them.
2. Default gracefully to an reasonable email address.

(It does not have to actually exist, but the api needs it to publish)

* template for testing

* Wrote a basic test.

* Simple test

* Slight fix to brackets

* Code review changes

* Fix for test. Setup environment properly
2020-04-06 10:22:53 -06:00
Dan Cech 2ecc7f22b9 delete old dashboard versions in multiple batches (#23348) 2020-04-06 11:44:14 -04:00
Erik Sundell d94796a022 Auth: Remove trailing / in cookies' path (#22265) (#22265)
According to the stackoverflow answer below, it is recommended to not
include a trailing / in cookies' path. By removing the trailing / for
our cookies path value, people's browsers visiting grafana will pass the
cookie not only to /grafana/ sub paths but also to /grafana sub paths.

This commit avoids the situation where a user would visit
http://localhost/grafana, get redirected to
http://localhost/grafana/login, and following login get redirected back
to http://localhost/grafana, but since the grafana_session cookie isn't
passed along get redirected back once more to
http://localhost/grafana/login.

ref: https://stackoverflow.com/questions/36131023/setting-a-slash-on-cookie-path/53784228#53784228
ref: https://tools.ietf.org/html/rfc6265#section-5.1.4
2020-04-06 17:56:19 +03:00
Peter Holmberg 2299e6bfef TextArea: Combine style and classname (#23367) 2020-04-06 16:52:48 +02:00
Torkel Ödegaard b10392733d FieldConfig: Unify the custom and standard registry (#23307)
* FieldConfig: Unifying standard and custom registry

* Adding path to option items to make id be prefixed for custom options

* Code updates progress

* Add docs back

* Fix TS

* ld overrides tests from ui to data

* Refactor - rename

* Gauge and table cleanup

* F-I-X e2e

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-06 16:24:41 +02:00
Ryan McKinley 6347a1f1eb VizPicker: show plugins that start with query text first (#23355)
* show plugins that start with queyr text first

* Memoize keyboard handler

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-06 15:06:41 +02:00
Vikky Omkar 97184c1750 Fix: Show organization popup in alphabetical order (#22259)
* Show organization popup in alphabetical order
* GetUserOrgList: Sort organizations by name in API

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-06 13:27:11 +02:00
Tobias Skarhed f91c7a81ce Forms migration: Move Input folders (#23313)
* Remove exports

* Move folders

* Fix errors
2020-04-06 11:20:22 +02:00
Agnès Toulet 56687a08f9 Core: use go-datemath in timerange utility (#23120)
* Core: use go-datemath in time_range

* Core: update timerange for negative epoch

* Core: update gtime component

* Core: clean up time_range tests

* Update pkg/components/gtime/gtime.go

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

* Core: clean gtime tests

* components/gtime: Fix test

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-06 09:00:05 +02:00
Torkel Ödegaard 69bdcccd10 NewPanelEdit: Minor style tweaks & fix to transparent panels (#23353)
* NewPanelEdit: Minor style tweaks

* Fixed ts issue

* Tweaked breakpoint
2020-04-06 08:22:49 +02:00
Ryan McKinley 7ab11027b0 TemplateSrv: expose limited templateSrv in grafana/runtime (#23339) 2020-04-05 21:44:49 -07:00
Jesse Tan c89ad9b038 TimeSrv: Try to parse 8 and 15 digit numbers as timestamps if parsing as date fails (#21694)
* Try to parse 8 and 15 digit numbers as timestamps if parsing as date fails

Fixes #19738

* Add tests
2020-04-06 06:19:14 +02:00
Torkel Ödegaard 2106f0afc6 Theme: Updates gf-form & form-field to better match new form styles (#23345)
* Theme: Updates old gf-form-styles

* Removed margin buttom

* updated

* updated

* This will take some time

* More style tweaks to both light and dark theme

* Minor change

* Tweaked table styles
2020-04-05 20:02:52 +02:00
Torkel Ödegaard 09bcdc1020 NewPanelEdit: Fixed missing react keys in list error 2020-04-05 15:21:53 +02:00
Ryan McKinley 3ec88a013f NewPanelEdit: Move field defaults to own tab, and merge general and panel options to first options tab (#23350)
* use dropdown

* keep padding the same

* keep padding the same

* Refactoring and moving to components

* Updated

* Alt names

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-05 14:09:43 +02:00
Torkel Ödegaard 3fae28be52 FieldOverride: Fixed number override so that it return undefined for null/undefined values and not NaN (#23344)
* FieldOverride: Fixed number override so that it return undefined for null/undefined values and not NaN

* Made process function be able to return undefined an null
2020-04-05 06:52:33 +02:00
Marcus Andersson dea91c1fd6 Panel: added possibility to group plugins in a panel according to a grid. (#22028)
* POC grid layout of gague.

* added a grid property that can be used to auto size the charts within a panel.

* fill the grid

* fix lint

* change default for stat panel

* avoid empty cells

* Moved to absolute positioning

* Fixed spacing

* Another fix

* Improve layout algorithm

* VizRepeater: Reverted back to so this is auto behavior for some panels

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-04-04 16:57:06 +02:00
Torkel Ödegaard 5ccefed7d7 NewPanelEditor: Tab rename and minor fix 2020-04-04 15:44:55 +02:00
Torkel Ödegaard c4ba425d16 UX: Minor responsive improvement 2020-04-04 15:39:43 +02:00
Peter Holmberg 7e3b43eabb Dashboard: Save json should preserve folderId (#23314) 2020-04-04 14:55:41 +02:00
Krzysztof Dąbrowski 44604cfa4f Dashboad: Remove dashboard title check (#23343) 2020-04-04 14:49:59 +02:00
Torkel Ödegaard ac0beb690b NewPanelEditor: Update layout with a top bar, and panel bar (#23336)
* NewPanelEdit: Layout experiments

* Progress on new layout

* Fixed ts issue
2020-04-04 14:25:06 +02:00
Sebastian Brandt 6e56aeeaf5 Table: Fix Yoda-esque sentence in info popup (#23324)
I changed the semantics a bit so they fit into the "format first" thing
that seems to be going on there.
2020-04-04 11:15:20 +02:00
Volodymyr Sergeyev 9751a2a7ca Fix 23056: fixed typo linewidth->lineWidth in Graph component (#23341) 2020-04-04 11:09:50 +02:00
Shavonn Brown 816b611eb9 Plugins docs (#21826)
* mostly minor edits while reading

* Update docs/sources/plugins/developing/development.md

* Update docs/sources/plugins/developing/apps.md

* Update docs/sources/plugins/developing/development.md

* Update docs/sources/plugins/developing/development.md

* Update docs/sources/plugins/developing/development.md

* Update docs/sources/plugins/developing/development.md

* Update docs/sources/plugins/developing/development.md

* notes updates

* Update docs/sources/plugins/developing/development.md

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

* update to ref tutorials

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-04-03 16:58:50 -04:00
Kirill Freiman 643735f590 tsconfig: set jsx option to "react" (#23335)
Explicit setting of this option helps to vscode properly work with .tsx files (https://github.com/Microsoft/vscode/issues/15814)
2020-04-03 13:48:41 -07:00
Ryan McKinley a1157b1744 Inspector: remove feature flag and angular "Export CSV" menu option (#23160) 2020-04-03 11:24:50 -07:00
Ryan McKinley 6366e43a44 Chore: swap [value,time] order when converting to DataFrame (#23206) 2020-04-03 11:11:28 -07:00
Andrej Ocenas e257536e88 Remove sidebar border (#23325) 2020-04-03 20:08:40 +02:00
Stephanie Closson ad934a58d2 Handle unpublish by deprecating package (#23310)
* Handle unpublish by deprecating package

* Fixed tabs.

* fixed array iterate

* Fixed quoting problems

* various shellcheck fixes
2020-04-03 11:55:43 -06:00
Andrej Ocenas 7f6bb1c6e0 Tracing: Fix failing test (#23332) 2020-04-03 19:15:33 +02:00
Arve Knudsen 0fd6edab64 services/sqlstore: Order results in UserSearch by username/email (#23328)
* services/sqlstore: Order results in UserSearch by username/email
* Add index (login,email) on user table
2020-04-03 19:15:10 +02:00
Tobias Skarhed b86789c66b Docs: task template typo (#23322) 2020-04-03 17:19:01 +02:00
Dominik Prokop b5af933183 Packages: make jaeger workspace package private (#23329) 2020-04-03 16:50:27 +02:00
Leonard Gram a49d619874 Devenv: prom 1.7.6 (#23321) 2020-04-03 16:12:03 +02:00
Alex Khomenko 002ebc9cbb Storybook: update docs for Layout (#23288)
* Storybook: expand layout docs

* Search: Ad align prop

* Search: Default align to normal

* Search: Expand docs
2020-04-03 14:13:54 +03:00
Arve Knudsen 5645d74cbc Server: Exit with 0 if no error (#23312)
Make grafana-server exit with 0 if no error occurred.
2020-04-03 11:34:18 +02:00
Torkel Ödegaard 54ddaecea1 Table: Fixing scrolling draging the vertical handle (#23311)
* Table: Fixing scrolling draging the vertical handle

* updated snapshots
2020-04-03 10:21:15 +02:00
Tobias Skarhed 2e58a65e8f Forms migration: Remove Input from Forms namespace (#23301) 2020-04-03 10:04:19 +02:00
Hugo Häggmark c7ffc1199c Variables: turns on newVariables as a new default (#23272)
* Variables: turns on newVariables as default

* Chore: adds default templating state

* Some small refactorings to get the template_srv tests to get green when toggle is enabled by default.

* Refactor: adds getVariables dependency to DashboardModel

* Tests: fixes StackDriver tests

* Tests: updates snapshots

* Tests: updates snapshot for DashboardGrid.test.tsx

* Tests: fixes DashboardModel.test.ts

* fixed initDashboard tests.

* renamed variable.

* changed so we use the templating.list when running the migration work.

* changed so we always returns the variables in sorted order.

* Tests: fixed cloudwatch tests

* added so we set the global template variable props.

* Fixed tests and added moved logic to complete templateSrv variables.

* removed unneccesary updateIndex.

Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2020-04-03 09:38:14 +02:00
Dominik Prokop bf046d7577 NewPanelEditor Render search results in front of the list of plugins (#23302) 2020-04-03 08:39:57 +02:00
Sven-Hendrik Haase b63b82976b Docs: Document the ability to use env vars in ldap.toml (#23304)
This was implemented but never documented.

This is related to:
https://github.com/grafana/grafana/issues/8832
https://github.com/grafana/grafana/issues/5248
https://github.com/grafana/grafana/pull/20173
2020-04-02 14:07:49 -07:00
Stephanie Closson c5252f1b64 Toolkit: simplify the plugin ci docker image (#23267)
* removing src dir on publish

* Moved from binary to native typescript
1. Moved to a native typescrpt github publish using the existing
github client.
2. Change dist.js to detect running in a linked environment.
Todo: Optimize docker image for build size.

* Optimized build of docker container
Much smaller. From 5.47 gb to 2.88

* Feedback from discussion with Ryan
- Added gget for getting grafana versions
- Added infrastructure for testing
- Uploaded new docker image

* Fixed typo... Not sure what happened there :)

* Added command to download canary

* small fix for displaying versions in help

* Removed --dev option
Should really just rename version to (ex: 1.2.0-dev)

* removing src dir on publish

* Moved from binary to native typescript
1. Moved to a native typescrpt github publish using the existing
github client.
2. Change dist.js to detect running in a linked environment.
Todo: Optimize docker image for build size.

* Optimized build of docker container
Much smaller. From 5.47 gb to 2.88

* Feedback from discussion with Ryan
- Added gget for getting grafana versions
- Added infrastructure for testing
- Uploaded new docker image

* Fixed typo... Not sure what happened there :)

* Added command to download canary

* small fix for displaying versions in help

* Removed --dev option
Should really just rename version to (ex: 1.2.0-dev)
2020-04-02 13:57:33 -06:00
Vikky Omkar 06ba5201bb CloudWatch: Added Cassandra namespace (#23299) 2020-04-02 19:06:54 +03:00
Tobias Skarhed 1704fe074a Codeowner: Marcus Olsson and Jess for .mdx files (#23290)
* Codeowner: Marcus Olsson for .mdx files

* Update CODEOWNERS
2020-04-02 16:54:04 +02:00
Dominik Prokop 0cf5ae5001 DashboardSave: fix light theme JSON preview (#23279) 2020-04-02 16:53:24 +02:00
Alexander Zobnin 7afdfd2ef4 Okta OAuth provider (team sync support) (#22972)
* Okta OAuth support

* Chore: fix linter error

* Chore: move IsEmailAllowed to SocialBase

* Chore: move IsSignupAllowed to SocialBase

* Chore: review fixes

* Okta: support allowed_groups

* Okta: default config

* Chore: move extractEmail() to OktaClaims struct

* Chore: review fixes

* generic_oauth_test: Handle error cases

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

* generic_oauth_test: Handle error cases

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

* Docs: Okta OAuth

* Chore: don't return expected errors from searchJSONForAttr

* Docs: role mapping

* Chore: review fixes (searchJSONForAttr)

* Docs: review fixes

* Update docs/sources/auth/okta.md

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

* Update docs/sources/auth/okta.md

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

* Chore: log error if searchJSONForAttr failed

* Docs: add Okta login link

* Docs: review fixes

* Docs: add reference to the org roles

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-02 17:35:48 +03:00
Tobias Skarhed 703476b3ae Forms migration: Input namespace (#23286)
* Update exports

* Add LegacyForms namespace

* Update ci grep
2020-04-02 16:18:06 +02:00
Peter Holmberg 97769188f2 Panel Inspect: Add JSON Model Tab (#23131)
* add tab

* add process measurement

* add json model tab

* render tab

* removed duplicated code and added keys to stats rows
2020-04-02 16:12:53 +02:00
Alex Khomenko c993e1c988 Remove Select from Forms namespace (#23289) 2020-04-02 16:18:06 +03:00
Mohit Nain 1f3c64f784 Multiple occurrences removed to overcome typo (#23278) 2020-04-02 14:56:23 +02:00
Torkel Ödegaard 6560d2e0e9 NewPanelEdit: Adding variables to new panel editor (#23203) 2020-04-02 13:56:20 +02:00
Andreas Opferkuch 7e85e4d096 Utils: Use 's' as default for unit-less intervals (#23248)
* Utils: Use 's' as default for unit-less intervals

If the user specifies a string that is a unit-less number, it is
assumed that they meant seconds.

Fixes #22362

* Rephrase tooltip for better line break position
2020-04-02 13:43:32 +02:00
Andrej Ocenas a4d4dd325f Explore: Add trace UI to show traces from tracing datasources (#23047)
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq

* Enable docker logger plugin to send logs to loki

* Add placeholder zipkin datasource

* Fixed rebase issues, added enhanceDataFrame to non-legacy code path

* Trace selector for jaeger query field

* Fix logs default mode for Loki

* Fix loading jaeger query field services on split

* Updated grafana image in traceui/compose file

* Fix prettier error

* Hide behind feature flag, clean up unused code.

* Fix tests

* Fix tests

* Cleanup code and review feedback

* Remove traceui directory

* Remove circle build changes

* Fix feature toggles object

* Fix merge issues

* Add trace ui in Explore

* WIP

* WIP

* WIP

* Make jaeger datasource return trace data instead of link

* Allow js in jest tests

* Return data from Jaeger datasource

* Take yarn.lock from master

* Fix missing component

* Update yarn lock

* Fix some ts and lint errors

* Fix merge

* Fix type errors

* Make tests pass again

* Add tests

* Fix es5 compatibility

Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
2020-04-02 13:34:16 +02:00
Mohit Nain a40c258544 Correcting couple of typos in the document (#23285)
line 46 and 183 has been modified to overcome the typo
2020-04-02 13:29:41 +02:00
Tobias Skarhed a2a579cea7 Forms migration: Finalizing Select namespace (#23281) 2020-04-02 13:25:09 +02:00
Torkel Ödegaard 61e6e41ead FieldConfig: Some name change suggestions and moving defaults to PanelPlugin (#23265)
* FieldConfig: Some name change suggestions and moving defaults to PanelPlugin

* More name changes
2020-04-02 13:24:50 +02:00
Alex Khomenko ce3a1fc56c Search/migrate search filter actions (#23133)
* Search: Initial setup

* Search: Use icon prop

* Search: Add button variants

* Search: Enable toggle all

* Search: Fix starred filter

* Search: update tests

* Search: Enable filters

* Search: Use emotion styling

* Search: Enable dashboard deleting

* Search: Enable dashboard moving

* Search: Update tests

* Search: Add SearchResultsFilter.test.tsx

* Search: Tweak types

* Search: Remove onReset

* Search: Remove redundant fragment

* Search: Use HorizontalGroup

* Search: Alight top checkbox
2020-04-02 14:07:31 +03:00
flopp999 9c9f6f168b Submenu: Changed location for Current Org: (#22941)
* Changed location for Current Org:

Current Org: was below the current Org, I changed it so you can deside what looks correct.
I also put an "." after Org, since it is a shorting

* removed an empty line

* Update snapshot

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-04-02 13:01:03 +02:00
Alex Khomenko ab283fe827 Grafana UI: Fix fullWidth prop (#23280) 2020-04-02 13:30:01 +03:00
Torkel Ödegaard b4382fff8c Docs: Update changelog for v6.7.2 also ran prettier on the CHANGELOG.md (#23277) 2020-04-02 11:29:43 +02:00
Tobias Skarhed b34281e250 Forms migration: Old Select to Legacy namespace (#23200)
* Export other components as Legacy

* More Select Legacy

* Add namespacing to more files

* Export new elements

* Move Legacy Select folder

* Let's not forget the scss file

* Move new Select folder

* Move new Select from Forms namespace

* Little oopsie

* Fix errors

* Fix merge issues
2020-04-02 10:57:35 +02:00
Carl Bergquist 15bff3114f Usagestats: Add usage stats about what type of datasource is used in alerting. (#23125) 2020-04-02 08:45:04 +02:00
John McBride b017e437d8 Fix typo in oauth error (#23270)
fixes: #23269
2020-04-02 08:24:59 +02:00
Lukas Siatka 51e485e26b DevEnv: updates react-hook-form 5.0.3 -> 5.1.3 in grafana-ui package (#23005) 2020-04-02 07:42:22 +02:00
Ryan McKinley 7bb6ff30c3 Toolkit: use src/README.md if it exists (#23271) 2020-04-01 22:06:01 -07:00
sam a6f2ae1fbd AzureMonitor: Fix Log Analytics and Application Insights for Azure China (#21803) (#22753)
Something funky going on with GitHub - the build has passed.
2020-04-02 01:22:31 +02:00
Dominik Prokop 59467d3cb3 NewPanelEdit: add search, scroll and some layout to vis tab (#23253) 2020-04-01 22:09:14 +02:00
Carl Bergquist 540d1d9b4e Support using multiple datasources for testing bulk alerting. (#23258) 2020-04-01 20:55:37 +02:00
Mohit Nain 27dc0b0f63 Docs: Line 107 correction to remove multiple occurrence (#23264) 2020-04-01 11:00:01 -07:00
Mohit Nain c446fefd14 Docs: Typo correction in line 30 (#23263) 2020-04-01 10:58:49 -07:00
Marcus Andersson ac7af7d4c3 TemplateVariables: make sure we handle multi/single value with correct data type (#23208)
* Fixed issue with multi value.

* Made some refactorings after feedback from Torkel and Hugo.

* minor refactorings.

* changed so we don't make the current value to array if multi is false.

* added snapshot to contain v23.

* Fixed so we always use the correct type when setting value for multi/non-multi.

* added some more tests.

* added tests.

* some small adjustments after feedback
2020-04-01 18:13:38 +02:00
Hugo Häggmark 6402dde646 Docs: update Changelog with backendSrv plugin notice (#23244)
* Chore: updates CHANGELOG

* Docs: updates after PR comments
2020-04-01 18:06:38 +02:00
Marcus Andersson aae76d797b TemplateVariable: moved templateSrv dependency from reducer to prevent side effect issues. 2020-04-01 18:05:16 +02:00
Tobias Skarhed 69259d62a0 Forms migration: User edit (#23110)
* Forms for UserProfile

* Migrate to new Form styles

* Add remove icon

* Remove unused import

* Update public/app/features/admin/UserOrgs.tsx

* Remove comment

* Remove icon and add text

* Make every ButtonGroup unique - regardless of values

* Remove visual glitch etc.

* Fic failing typecheck
2020-04-01 17:36:08 +02:00
Torkel Ödegaard 6803db87de Theme: Clean up placeholder variables (#23257)
* Theme: Clean up placeholder variables

* Updated snapshot
2020-04-01 16:56:42 +02:00
Torkel Ödegaard fb114a7524 Snapshots: Sanitize orignal url (#23254) 2020-04-01 16:04:46 +02:00
Noval Agung Prayogo ea35ae4d1f Chore: Update the xorm dependency (#22376)
* Upgrade xorm

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-01 15:57:21 +02:00
Tobias Skarhed d7d94d13a0 Forms migration: New datasource (#23221)
* Add Icon to Button and add newForms to FilterInput

* Reset button changes

* Update feedback

* Update Snapshots
2020-04-01 15:55:23 +02:00
Dominik Prokop dcf6bbc14f NewPanelEditor: Options/FieldConfig API for defaults and common options selection (#23214)
* Add "some" typesafety to panel options/field config APIs

* Allow selected common field config properties config, allow option defaults config via fluent API

* Update packages/grafana-data/src/panel/PanelPlugin.ts

Co-Authored-By: Ryan McKinley <ryantxu@gmail.com>

* Add defaults support for custom field config

* Enable defaults setting for standard and custom field configs

* Remove setFieldConfigDefaults from PanelPlugin API and replace it with useStandardFieldConfig

* Update API for standard field config defaults

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-04-01 15:33:10 +02:00
Hugo Häggmark a92bcb78a5 ReactTable: upgrades react table to 7.0.0 and typings (#23247)
* Chore: bumps react-table and types

* Chore: reverts changes to root package.json

* ReactTable: upgrades react-table to 7.0.0 and typings

* Refactor: changes after PR comments
2020-04-01 14:24:17 +02:00
Torkel Ödegaard baa7255ad0 NewPanelEdit: Use secondary as the button in the sidebar (#23250) 2020-04-01 13:43:59 +02:00
Peter Holmberg 8c142b9075 Forms: Add image and description to option (#23230)
* Add image and description to option

* add back flex grow on option
2020-04-01 13:42:21 +02:00
Torkel Ödegaard ccb8187ccd Plugins: Expose promiseToDigest (#23249) 2020-04-01 13:32:12 +02:00
Mohit Nain 8b68fb3221 docs/sources/reference/share_dashboard.md: Improve language
Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-04-01 10:07:17 +02:00
Torkel Ödegaard 49d2910e39 Variables: Do not update variable from url when value is the same (#23220) 2020-04-01 09:44:57 +02:00
melchiormoulin 1814dc5afc Alertmanager: Adds support for basic auth (#23231)
Add basicauth username and password to the alertmanager notifier UI
2020-04-01 09:29:28 +02:00
Mohit Nain 98da152f51 docs/sources/reference/search.md: Fix language 2020-04-01 08:48:52 +02:00
Shavonn Brown 4f3d995343 add tooltip prop and fix folder name (#22901)
* add tooltip prop and fix folder name

* fix folder name refs
2020-03-31 11:50:45 -04:00
Peter Holmberg ec743cf9a7 Migration: Migrate Dashboard Import to React (#22338)
* first things

* introduce headers and moving buttons

* adding reducer and action for gcom dashboard

* action working

* continue building on import form

* change dashboard title

* add prop to not render a label

* first things

* introduce headers and moving buttons

* adding reducer and action for gcom dashboard

* action working

* continue building on import form

* change dashboard title

* add prop to not render a label

* import form layout

* break out form to component

* add actions and reader for file upload

* fix upload issue

* modified data types to handle both gcom and file upload

* import dashboard json

* save dashboard

* start change uid

* change dashboard uid

* fix spacing and date format

* fix import from json

* handle uid and title change

* revert change in panelinspect

* redo fileupload component

* after review

* redo forms to use Forms functionality

* first attempt on async validation

* use ternary on uid input

* removed unused actions, fixed async validation on form

* post form if invalid, break out form to component

* sync file with master

* fix after merge

* nits

* export formapi type

* redo page to use forms validation

* fix inputs and validation

* readd post

* add guards on data source and constants

* type checks and strict nulls

* strict nulls

* validate onchange and fix import button when valid

* shorten validate call

* reexport OnSubmit type

* add comment for overwrite useEffect

* move validation functions to util

* fix button imports

* remove angular import

* move title and uid validation
2020-03-31 16:29:44 +02:00
Mohit Nain d863e569b6 Docs: Adding the missing helping verb (#23180)
* Adding the missing helping verb

added line 21 to have it on same platform as other points

* Update docs/sources/features/dashboard/dashboards.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-31 07:16:58 -07:00
Marcus Andersson 87796c2b23 Storybook: Field validation Story (#23227) 2020-03-31 15:59:12 +02:00
Steven Vachon dc8bbc8148 @grafana/e2e: select specific datasource option element (#23216)
... because, oddly, the previous selection worked locally but not in CI
2020-03-31 08:50:17 -04:00
flopp999 df6a4a435c Text change in search (#22929)
* Text change

made it more understandable that this is a search field

* Made "New Folder"-button green

Since New Dashboard was green I thought New Folder; Import also would be green. Green seems to be the color for creating new items

* Update playlist_search.html

* change search text

* wrong link

* Update playlist.md

* Update manage_dashboards.html

* Update manage_dashboards.html

* replaced Filter

* replaced Filter

* replaced Filter

* replaced filter

* changed text for placeholder

* Update UsersActionBar.tsx

* Update UserListAdminPage.tsx

* update snapshots

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-31 14:06:07 +02:00
Alex Khomenko 16d3d5b507 Fix search item links (#23210)
* Wrap search into into a

* Justify Icon

* Align items inside section header

* Remove log

* Fix clicking tags inside search item
2020-03-31 14:48:15 +03:00
Andrej Ocenas e799d0fdec Docs: Add note about ulimit in bash_profile (#22562)
* Add note about ulimit in bash_profile

* developer-guide.md: Document retaining ulimit changes

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

* Fix language

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

* developer-guide.md: Describe troubleshooting ulimit issues

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-31 10:00:55 +02:00
Carl Bergquist 0f0481efaa removes squadcast from docs (#23213)
removes squadcast since its not a core alert notifier. Mentioning all
services that support the Grafana webhook is not feasible for our docs
2020-03-31 09:07:07 +02:00
Marcus Efraimsson 6bd7411f04 Alerting: Only include image in notifier when enabled (#23194)
Fixes a bug when you had multiple notifiers for a rule, but not all 
had enabled to include image.

Fixes #22883
2020-03-31 00:46:01 +02:00
Torkel Ödegaard ea08c148df NewPanelEdit: Use secondary as the button in the sidebar (#23211) 2020-03-30 21:28:13 +02:00
flopp999 911a91308f Units: add (IEC) and (Metric) (#23175)
since only bits and bytes is displayed when it is selected, I added (IEC) and (Metric)

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-30 20:47:13 +02:00
Linus Groh 050ff2d68e Docs: Fix lists on Loki datasource page (#23158)
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-30 09:19:26 -07:00
Hugo Häggmark aacdfcd1a0 Variables: removes cloneDeep from getVariables selector (#23196)
* Refactor: removes getVariables

* Refactor: renames getVariableClones to getVariables
2020-03-30 17:03:34 +02:00
rtrompier 474dac1501 OAuth : Introduce new setting for configuring max age of OAuth state cookie (#23195)
* Cookie : Increase duration to avoid error

When using oauth2 authentication with multifactor, the 60s delay may be too short

* Introduce new setting for OAuth state cookie max age

Co-authored-by: Sofia Papagiannaki <sofia@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-30 17:44:58 +03:00
Mohit Nain f1548b4b11 couple of changes to the document (#23181)
* Improve wording in docs/sources/reference/annotations.md
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-30 16:42:23 +02:00
Mohit Nain 62abe7a08c Typo correction (#23186) 2020-03-30 16:40:52 +02:00
Torkel Ödegaard bdf5654837 Theme:s Tooltip fixes (#23174)
* LightTheme: Fixed tooltips background & text

* LightTheme: Fixed tooltips background & text
2020-03-30 16:31:53 +02:00
Alejandro Suarez a75211ce0d Added apt command to upgrade (#23123) 2020-03-30 15:50:02 +02:00
Torkel Ödegaard d524bb1ff0 NewPanelEdit: Side options collapse/expand design update (#23161)
* WIP: Panel options search

* Panel options search

* Minor update

* Fixed ts issues

* StatPanel: Fixed duplicate option exception

* Added some polish

* Updated snapshot

* Minor fix

* updated snapshot
2020-03-30 14:39:18 +02:00
Torkel Ödegaard 1633bacba9 NewPanelEditor: Fixed so that test alert rule works in new edit mode (#23179) 2020-03-30 13:50:18 +02:00
Arve Knudsen 3cf82df8b3 CircleCI: Revert to using shared workspace instead of GCS (#23190)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-30 13:16:15 +02:00
Arve Knudsen 8103c3e2c8 CircleCI: Fix cross platform Docker builds (#23192) 2020-03-30 12:01:45 +02:00
Tobias Skarhed 3385ed9007 Storybook: Update theme switcher (#23187) 2020-03-30 11:50:46 +02:00
Hugo Häggmark 3feb4e71c5 Dashboard: removes variables property (#23107) 2020-03-30 07:52:00 +02:00
Hugo Häggmark 5307cfeabd Transformers: adds series to column transformer (#23012)
* Refactor: adds first naive implemenation of join by field name

* Chore: changes after PR comments

* Refactor: fixes labels and adds support for multiple columns
2020-03-30 06:24:54 +02:00
Torkel Ödegaard 21188bb739 StatPanel: Fixed duplicate option exception (#23168) 2020-03-29 07:16:42 +02:00
Torkel Ödegaard 53630b5f13 StatPanels: Refactoring DisplayValueOptions and renaming & adding new panel options to react panels (#23153)
* StatPanels: Refactoring DisplayValueOptions and renaming

* added return

* Progress

* Updated

* Made radio groups full width by default in panel options

* Fixed ts issue

* Updated

* Added remaining options

* Removed unused type

* Updated snapshot

* Renamed to ReduceDataOptions
2020-03-28 23:11:50 +01:00
Arve Knudsen 8d2db9af7b CircleCI: Reduce dependency on workspace (#23159) 2020-03-28 13:06:21 +01:00
Arve Knudsen c344e1f6b2 CircleCI: Replace machine executors (#23151)
* CircleCI: Get rid of machine executors
* CircleCI: Use new Circle images
* CircleCI: Tweak dependency graph
2020-03-28 10:43:20 +01:00
Torkel Ödegaard 366aa6b5d5 DashboardSettings: Fixed modal issue (#23155)
Fixes #23148
2020-03-28 07:51:15 +01:00
Torkel Ödegaard f2337c9855 Webpack: Do not clean webpack output on every rebuild (#23157) 2020-03-28 06:40:29 +01:00
Stephanie Closson b6c1a063be must publish a dist folder as well (#23152) 2020-03-27 09:44:55 -06:00
Arve Knudsen 1a5bd30329 CircleCI: Cache packages in GCS instead of in workspace (#23130)
* CircleCI: Cache packages in GCS instead of workspace
* CircleCI: Cache yarn packages
* CircleCI: Consolidate on --frozen-lockfile
2020-03-27 14:47:42 +01:00
Tobias Skarhed 6d6d86f940 Storybook: Add internal stories functionality (#23139) 2020-03-27 14:37:08 +01:00
Steven Vachon 9272c0817c @grafana/e2e: exit with non-0 code on error (#23121) 2020-03-27 08:59:43 -04:00
Torkel Ödegaard 08133ea31a BarGauge: First bar gauge panel option & some refactoring (#23128)
* First bar gauge panel option

* Update doc comments

* Minor changes

* progress

* Fixing typing errors

* Minor type updates

* Fix that TS!

* Bring satisfaction to that beast called typescript

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-27 12:38:46 +01:00
Torkel Ödegaard 7e094ac559 Buttons: Fixed vertical centering, now pixel perfect (#23140) 2020-03-27 12:38:28 +01:00
Arve Knudsen 660a453f74 CircleCI: Tweak concurrency when packaging (#23129) 2020-03-27 12:25:54 +01:00
Erik Sundell a111cc0d5c Stackdriver: Support for SLO queries (#22917)
* wip: add slo support

* Export DataSourcePlugin

* wip: break out metric query editor into its own component

* wip: refactor frontend - keep SLO and Metric query in differnt objects

* wip - load services and slos

* Fix broken test

* Add interactive slo expression builder

* Change order of dropdowns

* Refactoring backend model. slo unit testing in progress

* Unit test migration and SLOs

* Cleanup SLO editor

* Simplify alias by component

* Support alias by for slos

* Support slos in variable queries

* Fix broken last query error

* Update Help section to include SLO aliases

* streamline datasource resource cache

* Break out api specific stuff in datasource to its own file

* Move get projects call to frontend

* Refactor api caching

* Unit test api service

* Fix lint go issue

* Fix typescript strict errors

* Fix test datasource

* Use budget fraction selector instead of budget

* Reset SLO when service is changed

* Handle error in case resource call returned no data

* Show real SLI display name

* Use unsafe prefix on will mount hook

* Store goal in query model since it will be used as soon as graph panel supports adding a threshold

* Add comment to describe why componentWillMount is used

* Interpolate sloid

* Break out SLO aggregation into its own func

* Also test group bys for metricquery test

* Remove not used type fields

* Remove annoying stackdriver prefix from error message

* Default view param to FULL

* Add part about SLO query builder in docs

* Use new images

* Fixes after feedback

* Add one more group by test

* Make stackdriver types internal

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

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

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

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

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

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

* Updates after PR feedback

* add test for when no alias by defined

* fix infinite loop when newVariables feature flag is on

onChange being called in componentDidUpdate produces an
infinite loop when using the new React template variable
implementation.

Also fixes a spelling mistake

* implements feedback for documentation changes

* more doc changes

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
2020-03-27 12:01:16 +01:00
Torkel Ödegaard e19493ae24 RadioButtonGroup: Fixed vertical centering (#23138) 2020-03-27 11:38:09 +01:00
Alex Khomenko 7e2fedb0cc Storybook: Sort icons by name (#23115)
* Storybook: Sort icons by name

* Storybook: Add icon search
2020-03-27 11:09:23 +02:00
Ivana Huckova be157b8457 Update raw range only if isMathString (#23122) 2020-03-27 10:04:43 +01:00
Torkel Ödegaard 16306ccacb NewPanelEditor: Fixed color option error (#23127) 2020-03-27 07:04:40 +01:00
Torkel Ödegaard de314851a6 NewPanelEditor: Fixes alert state & annotations, alert history (#23124)
* Updated title to show dashboard title

* Sort of fixed annotations and alerting state
2020-03-27 06:40:14 +01:00
Dominik Prokop 4eae1b5483 NewPanelEditor: fluent API for custom field config and panel options creation (#23070)
* Registry of standard option editors

* Move override processors  to grafana data

* API for declaratively creating field config/panel options

* Enable declarative API in PanelPlugin for options and field config

* Use new api in react table panel

* Add color and unit picker to option registries

* Add some docs and tests

* Fix tests
2020-03-26 21:48:46 +01:00
Barak Kakoun 0c9e50c7da All endpoints deleted (#23113)
because id is never defined on notification object, the condition 'n.id === an.id' is equal to 'undefined === undefined' which is always true.
that code is responsible for the situation when you delete one endpoint and it removes all of them.
2020-03-26 19:30:31 +01:00
Arve Knudsen c191bf64aa CircleCI: Build and publish Docker images in same job (#23092)
* CircleCI: Build and publish Docker images in same job
* CircleCI: Adjust dependency graph
* CircleCI: Specify grabpl concurrency
* CircleCI: Adjust resource classes
2020-03-26 17:25:01 +01:00
Steven Vachon a4308fffe7 @grafana/e2e: API improvements (#23079)
* Minor changes

* Fixtures path is now relative to the project directory

* URL support module now has individual exports

* Scenario context timing issues resolved

... caused by being ran synchronously, instead of as part of Cypress' asynchronous queue.

* Scenario context API now supports multiple keys per function call

* addDataSource flow accepts a config argument

… and optionally checks datasource health status

* Added readProvisions command

* Added addPanel flow
2020-03-26 12:15:58 -04:00
Lukas Siatka 13ab84f201 DevEnv: update frontend dependencies - react-transition-group (#22998)
* DevEnv: updates @types/react-transition-group 2.0.16 -> 4.2.4

* DevEnv: updates @types/react-transition-group 2.0.16 -> 4.2.4 in grafana-ui package

* DevEnv: updates react-transition-group 2.6.1 -> 4.3.0 in grafana-ui package

* DevEnv: updates react-transition-group 2.6.1 -> 4.3.0
2020-03-26 16:04:14 +01:00
Ryan McKinley 1ff736b4b3 e2e: remove old toolkit e2e implementation (#23091) 2020-03-26 07:31:44 -07:00
Lukas Siatka 107a0d86f9 Bugfix: updates highlighter passed style prop from string to object (#23112) 2020-03-26 15:18:39 +01:00
Torkel Ödegaard 936594f5d0 DashboardSettings: Fixed scrolling (#23108) 2020-03-26 14:36:24 +01:00
Andrej Ocenas 4c5005e575 Explore: Fix 100% height of graph and table panel (#23101)
* Fix 100% height styles

* Move utility class to component styles
2020-03-26 13:24:58 +01:00
Tobias Skarhed e5f4ac8ca0 Forms Migrations; Remove Buttons from Forms namespace (#23105) 2020-03-26 12:47:21 +01:00
Lukas Siatka 01d4cb9e37 DevEnv: update frontend dependencies - mixed 3/4 (#22995)
* DevEnv: updates pixelmatch 4.0.2 -> 5.1.0

* DevEnv: updates pixelmatch 5.0.2 -> 5.1.0 in grafana-toolkit package

* DevEnv: updates postcss-flexbugs-fixes 4.1.0 -> 4.2.0 in grafana-toolkit package

* DevEnv: updates postcss-preset-env 6.6.0 -> 6.7.0 in grafana-toolkit package

* DevEnv: updates less 3.10.3 -> 3.11.1 in grafana-toolkit package

* DevEnv: updates ora 3.4.0 -> 4.0.3 in grafana-toolkit package

* DevEnv: updates semver 6.1.1 -> 7.1.3 in grafana-toolkit package

* DevEnv: updates simple-git 1.112.0 -> 1.132.0 in grafana-toolkit package

* DevEnv: updates ora import to commonjs after its update
2020-03-26 12:46:46 +01:00
Lukas Siatka 6a9480e3b4 DevEnv: updates react-docgen-typescript-loader 3.3.0 -> 3.7.1 (#23003) 2020-03-26 12:46:09 +01:00
Dominik Prokop 046d9c1af4 DashboardSave: Add new dashboard check (#23104) 2020-03-26 12:09:39 +01:00
Tobias Skarhed 5cdb8f8e44 Form Migrations: Button (#23019)
* Update legacy exports and fix Type errors

* Remove Button and LinkButton from Forms namespace

* Fix errors

* Update snapshots

* Move Legacy button

* Migrate more Buttons

* Remove legacy button dependency

* Move button up

* Remove legacy button

* Update Snapshots

* Fix ComponentSize issues

* Switch primary button

* Switch primary

* Add classNames and fix some angular directive issues

* Fix failing build and remove log

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-26 11:50:27 +01:00
Agnès Toulet f63877f247 Core: Add go-datemath library (#22978) 2020-03-26 10:26:47 +01:00
Alex Khomenko 85dc4e565e Search/migrate search results (#22930)
* Search: Setup SearchResults.tsx

* Search: add watchDepth

* Search: Use SearchResults.tsx in Angular template

* Search: Render search result header

* Search: Move new search components to features/search

* Search: Render nested dashboards

* Search: Expand dashboard folder

* Search: Remove fa prefix from icon names

* Search: Enable search results toggling

* Search: Add onItemClick handler

* Search: Add missing aria-label

* Search: Add no results message

* Search: Fix e2e selectors

* Search: Update SearchField imports

* Search: Add conditional classes

* Search: Abstract DashboardCheckbox

* Search: Separate ResultItem

* Search: Style ResultItem

* Search: Separate search components

* Search: Tweak checkbox styling

* Search: Simplify component names

* Search: Separate tag component

* Search: Checkbox docs

* Search: Remove inline on click

* Add Tag component

* Add Tag story

* Add TagList

* Group Tab and TabList

* Fix typechecks

* Remove Meta

* Use forwardRef for the Tag

* Search: Use TagList from grafana/ui

* Search: Add media query for TagList

* Search: Add types

* Search: Remove selectThemeVariant from SearchItem.tsx

* Search: Style section + header

* Search: Use semantic html

* Search: Adjust section padding

* Search: Setup tests

* Search: Fix tests

* Search: tweak result styles

* Search: Expand SearchResults tests

* Search: Add SearchItem tests

* Search: Use SearchResults in search.html

* Search: Toggle search result sections

* Search: Make selected prop optional

* Search: Fix tag selection

* Search: Fix tag filter onChange

* Search: Fix uncontrolled state change warning

* Search: Update icon names

* Search: memoize SearchCheckbox.tsx

* Search: Update types

* Search: Cleanup events

* Search: Semantic html

* Use styleMixins

* Search: Tweak styling

* Search: useCallback for checkbox toggle

* Search: Add stylesFactory

Co-authored-by: CirceCI <circleci@grafana.com>
2020-03-26 10:09:08 +01:00
flopp999 77459ae8d8 Docs: Fix broken link (#23090) 2020-03-26 09:37:59 +01:00
Mohit Nain 5a1fce1081 Fix language in docs/sources/features/panels/heatmap.md 2020-03-26 08:00:10 +01:00
Mohit Nain 9aeb97c499 Fix language in docs/sources/features/panels/singlestat.md 2020-03-26 07:58:06 +01:00
Ryan McKinley 19123444a1 Chore: move specific DataQuery props to loki/tsdb (#23086) 2020-03-25 22:30:22 -07:00
Ryan McKinley 27913289d3 Chore: fix typo and remove deprecation (#23073) 2020-03-25 17:21:09 -07:00
David Ellis e5d7c6e280 DOCS - Repeating panels require variable to have one or more items (#23080)
* add note that it's not supported to repeat a panel zero times
see https://github.com/grafana/grafana/issues/23036#issuecomment-603479142

Signed-off-by: David Ellis <ellisda@gmail.com>

* Update docs/sources/reference/templating.md

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-25 13:22:11 -07:00
Arve Knudsen 52cd6068d1 CircleCI: Make k8s deployment depend on enterprise Docker image (#23078)
* CircleCI: Make k8s deployment depend on enterprise Docker image
* CircleCI: Upgrade grabpl
2020-03-25 18:35:38 +01:00
Diana Payton 6f9c3ab8ab Docs: Update index.md in Explore (#23072)
Minor grammar edits and added link to Organization roles topic.
2020-03-25 09:41:05 -07:00
Arve Knudsen c813fc7871 CircleCI: Upgrade build pipeline tool (#23076) 2020-03-25 17:33:08 +01:00
Lukas Siatka 4c2b191a83 Revert "DevEnv: update frontend dependencies - react-table (#23006)" (#23075)
This reverts commit d6b6b0f25c.
2020-03-25 17:11:14 +01:00
Marcus Andersson f75387bd14 Fix: reverted back to import * as module instead of using namespaces (#23069)
* Removed namespace declaration to prevent issues with external plugins.

* fixed imports and tests.
2020-03-25 17:01:43 +01:00
Mohit Nain c4693378dd Docs: Correcting missing articles (#23051) 2020-03-25 08:03:15 -07:00
Arve Knudsen 14b169d62b CircleCI: Fix deploying to k8s (#23068) 2020-03-25 15:42:56 +01:00
Arve Knudsen 35ecf79ae5 CircleCI: Deploy master builds to Kubernetes (#23034) 2020-03-25 14:45:55 +01:00
Lukas Siatka b8018fad34 DevEnv: update frontend dependencies - react-test-renderer (#23004)
* DevEnv: updates @types/react-test-renderer 16.9.0 -> 16.9.2 in grafana-ui package

* DevEnv: updates react-test-renderer 16.9.0 -> 16.13.1 in grafana-ui package
2020-03-25 14:24:34 +01:00
Lukas Siatka 05fd583938 DevEnv: update frontend dependencies - react-highlight-words (#23009)
* DevEnv: updates react-highlight-words 0.11.0 -> 0.16.0

* DevEnv: updates react-highlight-words 0.11.0 -> 0.16.0 in grafana-ui package
2020-03-25 14:23:58 +01:00
Torkel Ödegaard 4b6fe5bcc3 Packages: Fixing rollup issue (#23063)
Co-authored-by: CirceCI <circleci@grafana.com>
2020-03-25 14:23:23 +01:00
huanggze 69c5efcf00 Cleanup: move interface ProvisioningService into provisioning package (#23061) 2020-03-25 14:14:24 +01:00
Torkel Ödegaard 0870ccea7d NewPanelEdit: Fixed error with custom override properties (#23055) 2020-03-25 14:04:41 +01:00
Mohit Nain 0ed78068a2 docs/sources/features/panels/gauge.md: Fix typo 2020-03-25 13:59:36 +01:00
Hugo Häggmark 6f3ca2616f Chore: fixes test data in processDataFrame.test.ts (#23058) 2020-03-25 13:18:41 +01:00
Ivana Huckova 65d97edb3b Create ComponentSize type and replace ButtonSize with it (#23059) 2020-03-25 13:10:37 +01:00
Lukas Siatka d6b6b0f25c DevEnv: update frontend dependencies - react-table (#23006)
* DevEnv: updates @types/react-table 7.0.2 -> 7.0.12 in grafana-ui package

* DevEnv: updates react-table 7.0.0-rc.15 -> 7.0.0 in grafana-ui package

* Updated yarn.lock

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-25 13:09:44 +01:00
Andrej Ocenas ae09ccbf79 Trace UI demo (#20297)
* Add integration with Jeager
Add Jaeger datasource and modify derived fields in loki to allow for opening a trace in Jager in separate split.
Modifies build so that this branch docker images are pushed to docker hub
Add a traceui dir with docker-compose and provision files for demoing.:wq

* Enable docker logger plugin to send logs to loki

* Add placeholder zipkin datasource

* Fixed rebase issues, added enhanceDataFrame to non-legacy code path

* Trace selector for jaeger query field

* Fix logs default mode for Loki

* Fix loading jaeger query field services on split

* Updated grafana image in traceui/compose file

* Fix prettier error

* Hide behind feature flag, clean up unused code.

* Fix tests

* Fix tests

* Cleanup code and review feedback

* Remove traceui directory

* Remove circle build changes

* Fix feature toggles object

* Fix merge issues

* Fix some null errors

* Fix test after strict null changes

* Review feedback fixes

* Fix toggle name

Co-authored-by: David Kaltschmidt <david.kaltschmidt@gmail.com>
2020-03-25 12:25:39 +01:00
Arve Knudsen b6f73e35a5 Chore: Typecheck TypeScript in CI pipelines (#23052)
* circle-test-frontend.sh: Typecheck TypeScript
* Chore: fixes type errors
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-03-25 12:19:21 +01:00
kay delaney 40e875369b Explore: Allows a user to cancel a running query (#22545) 2020-03-25 10:38:14 +00:00
Mohit Nain 910f65d2ab Fix types in docs/sources/features/panels/stat.md 2020-03-25 11:33:26 +01:00
Lukas Siatka 3f08a789d7 DevEnv: update frontend dependencies - apache arrow, bizcharts, commander (#22994)
* DevEnv: updates bizcharts 3.5.5 -> 3.5.8 in grafana-ui package

* DevEnv: updates apache-arrow 0.15.1 -> 0.16.0 in grafana-data package

* DevEnv: updates commander 2.20.0 -> 5.0.0 in grafana-toolkit package

* DevEnv: updates commander 4.1.1 -> 5.0.0 in grafana-e2e package
2020-03-25 11:01:02 +01:00
Torkel Ödegaard 40d195e4a7 BackendSrv: Adds config to response to fix external plugins that use this (#23032)
* BackendSrv: Added config to response

* QueryInspector: Removing config from showing up

* Replace config with request and make it be the unmodified params sent in
2020-03-25 10:21:12 +01:00
Lukas Siatka bcad3fbda1 DevEnv: update frontend dependencies - rc (#22977)
* DevEnv: updates rc-cascader 0.17.5 -> 1.0.1

* DevEnv: updates rc-cascader 0.17.5 -> 1.0.1 in grafana-ui package

* DevEnv: updates rc-drawer 3.0.2 -> 3.1.3 in grafana-ui package

* DevEnv: updates rc-time-picker 3.7.2 -> 3.7.3 in grafana-ui package

* DevEnv: updates rc-slider 8.7.1 -> 9.2.3 in grafana-ui package

* Fix option mappings

* Some clean up of the code.

* removed unused function.

Co-authored-by: Tobias Skarhed <tobias.skarhed@gmail.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
2020-03-25 10:10:26 +01:00
Torkel Ödegaard e8efd17ea9 Buttons: Improves vertical alignment in buttons (#23030)
* Buttons: Improves vertical alignment in buttons

* Updated snapshot

* Fixed strict null errors
2020-03-25 09:21:44 +01:00
Agnès Toulet d825b9e799 Analytics: Send event when opening a dashboard (#22921)
* Analytics: add open dashboard event

* Analytics: move code to analyticsProcessor

* Dashboard: fix init tests

* Analytics: remove open event for new dashboard

* Analytics: rename analyticsProcessor functions
2020-03-25 09:01:49 +01:00
Torkel Ödegaard 8e1fe6a9dd PackageJson: Moved scripts to the top (#23038)
* PackageJson: Moved scripts to the top

* Updated

* Updated
2020-03-25 07:19:57 +01:00
Arve Knudsen 3b134998b9 CircleCI: Increase memory/CPU for some jobs (#23035)
* CircleCI: Increase resource class for some jobs
2020-03-24 18:23:58 +01:00
BhartiAgrawalNvidia ce8df91cc9 Fixing issue 16090 where Grafana uses illegal characters in requests … (#21447)
* Fixing issue 16090 where Grafana uses illegal characters in requests to Prometheus

* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090

# Conflicts:
#	public/app/plugins/datasource/prometheus/language_provider.ts

* Rebase with Grafana and Merge branch 'master' of https://github.com/BhartiAgrawalNvidia/grafana into fix-16090

# Conflicts:
#	public/app/plugins/datasource/prometheus/language_provider.ts

* Use querystring to escape the url

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-24 17:02:50 +01:00
Lukas Siatka 98420c63d1 DevEnv: update frontend dependencies - react-window (#23010)
* DevEnv: updates react-window 1.7.1 -> 1.8.5

* DevEnv: updates @types/react-window 1.7.0 -> 1.8.1

* DevEnv: updates lockfile - removes merge conflicts

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-24 17:01:54 +01:00
Diana Payton b3f0ee32e6 Docs: Update _index.md (#22979) 2020-03-24 08:55:58 -07:00
Diana Payton dd28c99a55 Docs: Update _index.md (#22980)
Added ServiceNow link
2020-03-24 08:27:27 -07:00
xiaobeiyang 803f553552 Variable: Support more variable formatting. (#21622)
* Support more variable formatting.
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-24 16:26:58 +01:00
Hugo Häggmark 31ad86ffc0 TemplateSrv: deprecates templateSrv.variables and adds getVariables (#23026)
* TemplateSrv: deprecates templateSrv.variables and adds getVariables

* Update public/app/plugins/datasource/postgres/query_ctrl.ts

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

* Update public/app/plugins/datasource/stackdriver/components/VariableQueryEditor.test.tsx

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

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

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

* Update public/app/plugins/datasource/mysql/query_ctrl.ts

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

* Chore: updates after PR comments

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-24 16:03:53 +01:00
Torkel Ödegaard 441e87d4d4 NewPanelEdit: Adding repeating options (#22984)
* NewPanelEdit: Adding repeating options

* Added all repeat options

* reduce strict null errors
2020-03-24 15:44:13 +01:00
Diana Payton 57c55f7e16 Update documentation-style-guide.md (#22733)
Co-authored-by: bergquist <carl.bergquist@gmail.com>
2020-03-24 07:19:02 -07:00
Marcus Efraimsson b0253219eb Use v0.33.0 of SDK (#23031) 2020-03-24 15:01:02 +01:00
Arve Knudsen 15455ab593 CircleCI: Run golangci-lint in two batches (#23021)
* CircleCI: Run golangci-lint in two batches

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

* CircleCI: Fix typo

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

* Chore: adds fallback value to time series class

* Chore: changes fallback value from null to empty string in FilterInput component

* Update public/app/core/time_series2.ts

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

* Chore: updates || to ?? operators

Co-authored-by: Lukas Siatka <lukasz.siatka@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-03-24 13:50:05 +01:00
Alex Khomenko 014e7d9261 Granfana ui/tag components (#22964)
* Add Tag component

* Add Tag story

* Add TagList

* Group Tab and TabList

* Fix typechecks

* Remove Meta

* Use forwardRef for the Tag

* Add actions instead of console.log

* Add previews
2020-03-24 13:52:20 +02:00
Arve Knudsen 289a5fb862 Chore: Fix golangci-lint timeout config, disable govet (#23015)
* golangci-lint: Fix timeout config; disable govet
* CircleCI: Use official golangci-lint binary
2020-03-24 11:57:22 +01:00
Hugo Häggmark a0d9851cb9 Chore: adds report.xxxx.json to gitignore (#23016) 2020-03-24 11:15:04 +01:00
Ivana Huckova dd732eac50 Rich history: Improve animation (#22983) 2020-03-24 11:13:38 +01:00
Lukas Siatka 54bf9cc9ea DevEnv: updates react-use 12.8.0 -> 13.27.0 (#23001) 2020-03-24 10:50:10 +01:00
Torkel Ödegaard 08c95c3419 UI: Theme changes (#22880)
* Theme: Updates the theme to align panel & page background colors

* Updated dashboard settings view to be similar to new panel edit

* Updated themes

* Added shadow

* Updates generated files

* Minor fix to inspect drawer

* Clean up old dashboard setttings stuff

* Polish to search

* Updated truth image

* Minor tweaks to dropdown menu

* Updates and alignments between inspect drawer and explore rich history

* removed unused variables

* Minor tweak to light page header bg
2020-03-24 10:30:53 +01:00
Lukas Siatka e2f7f85222 DevEnv: update frontend dependencies - eslint (#22990)
* DevEnv: updates eslint-plugin-jsdoc 21.0.0 -> 22.1.0

* DevEnv: updates @typescript-eslint/eslint-plugin 2.19.2 -> 2.24.0 in grafana-toolkit package

* DevEnv: updates @typescript-eslint/parser 2.19.2 -> 2.24.0 in grafana-toolkit package

* DevEnv: updates eslint 6.7.2 -> 6.8.0 in grafana-toolkit package

* DevEnv: updates eslint-config-prettier 6.7.0 -> 6.10.0 in grafana-toolkit package

* DevEnv: updates eslint-plugin-prettier 3.1.1 -> 3.1.2 in grafana-toolkit package

* DevEnv: updates eslint-plugin-jsdoc 18.4.1 -> 22.1.0 in grafana-toolkit package
2020-03-24 08:25:57 +01:00
Lukas Siatka d4d3874a38 DevEnv: update frontend dependencies - react-dev-utils (#23007)
* DevEnv: updates @types/react-dev-utils 9.0.1 -> 9.0.4 in grafana-toolkit package

* DevEnv: updates react-dev-utils 9.0.1 -> 10.2.1 in grafana-toolkit package
2020-03-24 08:25:12 +01:00
Lukas Siatka 01ebaf9260 DevEnv: update frontend dependencies - storybook (#22976)
* DevEnv: updates storybook-dark-mode 0.3.0 -> 0.3.1 in grafana-ui package

* DevEnv: updates @storybook/addon-actions 5.3.9 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/addon-docs 5.3.9 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/addon-info 5.3.9 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/addon-knobs 5.3.9 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/addon-storysource 5.3.14 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/theming 5.3.9 -> 5.3.17 in grafana-ui package

* DevEnv: updates @storybook/react 5.3.9 -> 5.3.17 in grafana-ui package
2020-03-24 08:23:52 +01:00
Marcus Andersson 41bc1aa3ae DataLinks: make sure we use the correct datapoint when dataset contains null value. (#22981)
* Fix to make sure we have the correct dataIndex when using data links.

* fixed strict null errors.

* decreased number of errors.
2020-03-24 08:19:19 +01:00
Lukas Siatka 18f4e3ce47 DevEnv: update frontend dependencies - ts-node & node-sass (#22988)
* DevEnv: updates ts-node 8.6.2 -> 8.8.1

* DevEnv: updates ts-node 8.5.0 -> 8.8.1 in grafana-e2e package

* DevEnv: updates node-sass 4.12.0 -> 4.13.1 in grafana-toolkit package

* DevEnv: updates ts-node 8.5.0 -> 8.8.1 in grafana-toolkit package
2020-03-24 06:56:58 +01:00
Lukas Siatka f83e91a2a4 DevEnv: updates react-sizeme 2.5.2 -> 2.6.12 (#23002) 2020-03-24 05:54:48 +01:00
Lukas Siatka 7e8b1d2866 DevEnv: update frontend dependencies - react-color (#23008)
* DevEnv: updates react-color 2.17.0 -> 2.18.0

* DevEnv: updates @types/react-color 2.17.0 -> 3.0.1
2020-03-24 05:49:00 +01:00
Lukas Siatka ef7b2e3974 DevEnv: update frontend dependencies - pretty-format (#22987)
* DevEnv: updates pretty-format 24.9.0 -> 25.1.0 in grafana-data package

* DevEnv: updates pretty-format 24.9.0 -> 25.1.0 in grafana-ui package

* DevEnv: updates pretty-format 24.9.0 -> 25.1.0 in grafana-runtime package
2020-03-24 05:47:32 +01:00
Hugo Häggmark 05b6d38374 Variables: breaks variable.ts into 2 separate files utils and types (#22884) 2020-03-24 05:46:31 +01:00
Andrew Burian 7d9b6a0dee Alerting: Enable Alert rule tags to override PagerDuty Severity setting (#22736) 2020-03-23 19:32:55 +01:00
Tobias Skarhed aeb88015ab Storybook: Fix broken stories (#22975)
* Rewrite to CSF and make it not crash

* Move comments to be in generated docs

* Fix broken ThresholdsEditor story

* Fix breaking Select docs
2020-03-23 17:54:48 +01:00
Arve Knudsen a43e31fbf9 CircleCI: Reduce memory usage of golangci-lint (#22970)
* CircleCI: Fix golangci-lint OOM by reducing concurrency and tweaking GC
2020-03-23 17:33:06 +01:00
Steven Vachon d8b346f441 Fix mysterious Babel plugin errors (#22974) 2020-03-23 12:32:04 -04:00
Hugo Häggmark cf5064bfa0 Variables: replaces homegrown variableAdapters with Registry (#22866)
* Refactor: intial commit

* Tests: fixes tests

* Refactor: adds stricter typings
2020-03-23 15:33:17 +01:00
Mohit Nain 277edca3a0 Fix typos in ha_setup.md (#22951) 2020-03-23 14:47:41 +01:00
Emil Tullstedt 1632e1e166 SAML: Document 2.0 as version (#22960)
Casually drops 2.0 in a couple of places in the docs so that a reader looking for information about supported SAML version can find it. Since SAML hasn't had any releases since 2005, we don't have to make a big deal out of it.
2020-03-23 13:53:23 +01:00
Hugo Häggmark 9af04a49ea Variables: replaces UUID with name for a more performant lookup in TemplateSrv (#22858)
* Refactor: renames uuid to id

* Refactor: misc renames

* Refactor: fixes renaming of variable

* Refactor: changes method accessed by templateSrv

* Refactor: fixes for NEW_VARIABLE_ID

* Refactor: rename flow refactor

* Tests: adds missing reducer and action tests

* Refactor: keeping tests consitent

* Chore: reorder imports

* Chore: removes uuid package

* Refactor: fixes imports
2020-03-23 13:45:08 +01:00
Carl Bergquist 3798ac903d Upgrade golangci-lint and fixes some linting errors. (#22909)
Example: https://play.golang.org/p/cfPIPG3BwjJ
2020-03-23 13:37:53 +01:00
Tobias Skarhed c82a778c3d Storybook: Remove unneccesary stories and reorganize a bit (#22959) 2020-03-23 13:02:09 +01:00
flopp999 8aca83a646 Menu: aligning user menu options (#22940) 2020-03-23 11:29:36 +01:00
Torkel Ödegaard 89203136ec Select: Fixed select text positition (#22952) 2020-03-23 10:55:29 +01:00
Arve Knudsen 9b32f9d3f4 CircleCI: Pin grabpl to v0.2.0 (#22906) 2020-03-23 09:42:12 +01:00
Sofia Papagiannaki 3f12c4cfd5 Docs: fix broken link (#22949) 2020-03-23 09:21:51 +01:00
Marcus Andersson a7a1406415 Variables: migrates ad hoc variable type to react/redux. (#22784)
* Refactor: moves all the newVariables part to features/variables directory

* Feature: adds datasource type

* Tests: adds reducer tests

* Tests: covers data source actions with tests

* Chore: reduces strict null errors

* boilerplate that will be replaced by real code.

* added old editor template.

* added initial version of ad hoc editor.

* added working (apart from add) version of the editor.

* Added placeholder for picker.

* Have a working UI. Need to connect it so we refresh the variables on changes.

* variable should be updated now.

* removed console.log

* made the url work.

* cleaned up the adapter.

* added possiblity to create filter directly from table.

* moved infotext from general reducer to extended value of adhoc.

* fixed strict null errors.

* fixed strict null errors.

* fixed issue where remove was displayed before being added.

* fixed issue with fragment key.

* changed so template_src is using the redux variables.

* minor refactorings.

* moved adhoc picker to adhoc variable.

* adding tests for reducer and fixed bug.

* added tests or urlparser.

* added tests for ad hoc actions.

* added more tests.

* added more tests.

* fixed strict null error.

* fixed copy n pase error.

* added utilit for getting new variable index.

* removed console.log

* added location to reducerTester type and created a module type for it.

* changed so we only have one builder pattern.

* fixed tests to use static expected values.

* fixed strict errors.

* fixed more strict errors.

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
2020-03-23 09:00:36 +01:00
Jon McKenzie 6c9d833602 AuthProxy: Fixes bug where long username could not be cached (#22926) 2020-03-20 21:50:27 +01:00
flopp999 5df00abfcf Admin: Added Name to user list (#22939)
In Config-users Name is listed so it may also be visible in Admin-users
2020-03-20 21:19:05 +01:00
Marcus Efraimsson 12bb295af1 Docs: Update email notifier documentation (#22919)
* Docs: Update email notifier documentation

Ref #21091

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-20 19:13:18 +01:00
Leonard Gram 186e85035e update latest to 6.7.1 (#22933) 2020-03-20 17:32:11 +01:00
Leonard Gram 66e1111948 changelog 6.7.1 (#22932) 2020-03-20 17:23:22 +01:00
Dominik Prokop bdb5659977 NewPanelEdit: Organise sidebar in tabs (#22870)
* Refactor value mappings UI to work better with new panel edit

* TS fix

* Experimenting with tabs in the sidebar

* Small refactor and added Panel general settings

* Merge fixes

* fix fieldOptions being used instead of fieldConfig

* Added icons to tabs (testing)

* Only 3 tabs i think, panel specific options need ot exist in first tab, some style tweaks

* Moved title and no value up

* Updated

* Render panel options in Options tab and add old options styles hack to display those vertically

* Basic settings to Panel settings

* Make nullcheck pass

* Snaps bump

* Fix standard configs not update

* Organise sidebar better, add tmp NewPanelEditorContext to hide duplicate legacy options

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-20 15:15:04 +01:00
Boyko c600a08524 Query components unsafe lifecycle methods (#21163)
* Chore: refactor query components unsafe lifecycle methods

* Chore: remove redundant defaults

* Chore: check expression exist while filter targets in query

* Chore: fix broken test

* Chore: adding query filed tests

* pass normalized query to QueryFieldsEditor

Signed-off-by: Boyko Lalov <boiskila@gmail.com>

* Remove introduced strictNullCheck errors and correctly solve merged conficts

* Improve redability and fix strictNullChecks

Co-authored-by: Ivana <ivana.huckova@gmail.com>
2020-03-20 13:00:49 +01:00
huanggze aea3929154 Fix typo (#22923)
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-03-20 12:46:07 +01:00
Torkel Ödegaard 8e131384e3 Panels: Fixed size issue with panels when existing panel edit mode (#22912) 2020-03-20 11:49:54 +01:00
Torkel Ödegaard d16211b782 Azure: Fixed dropdowns not showing current value (#22914) 2020-03-20 11:04:21 +01:00
Emil Tullstedt 82632bf31e Reporting: Update docs with new default value (#22916) 2020-03-20 10:58:12 +01:00
Marcus Andersson 5cf7803264 Fix: failing tests when running on none english os. (#22913) 2020-03-20 10:34:35 +01:00
Hugo Häggmark 8d5c6053db BackendSrv: only add content-type on POST, PUT requests (#22910)
* BackendSrv: only add content-type on POST, PUT requests
Fixes #22869

* Tests: imports polyfill for Headers
2020-03-20 10:21:32 +01:00
huanggze 87ffa258e7 cleanup: use unexported variable (#22908)
Signed-off-by: huanggze <loganhuang@yunify.com>
2020-03-20 09:40:14 +01:00
Leonard Gram 65dbd7cadc CI: failfast for verify-repos.sh (#22902)
* CI: failfast for verify-repos.sh

* shellcheck
2020-03-19 17:53:55 +01:00
Arve Knudsen 28d2d2ae12 Chore: Update latest.json (#22903) 2020-03-19 17:50:35 +01:00
Arve Knudsen 777246dd3f Changelog: Update for v6.7.0 (#22900) 2020-03-19 17:07:38 +01:00
Dominik Prokop cb9dd6631b Fix ValueMappingEditor test TS issue (#22895)
* fix test

* Revert "CircleCI: Don't build Storybook on PR (#22865)"

This reverts commit 492264abc3.
2020-03-19 16:48:49 +01:00
Robby Milo a61af9ed1d Docs: Fix Broken Link (#22894) 2020-03-19 14:48:26 +01:00
Tobias Skarhed a2b3da2792 Migration: Create org (#22542)
* Add NewOrgPage

* Remove filrs

* Remove import

* Remove comments

* Get navModel from Redux

* Add DTO

* Get nav model from state

* Change error display

* Add async await and check if org is available

* Fix null strict null error

* Update public/app/features/org/NewOrgPage.tsx

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

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-19 14:22:53 +01:00
Dominik Prokop f2742d4a28 NewPanelEdit: Refactor value mappings UI to work better with new panel edit (#22808)
* Refactor value mappings UI to work better with new panel edit

* TS fix
2020-03-19 12:28:05 +01:00
Dominik Prokop bf7579d984 FieldOverrides: Move FieldConfigSource from fieldOptions to PanelModel.fieldConfig (#22600)
* Apply field overrides in PanelChrome

* Move applyFieldOverrides to panel query runner

* Review updates

* Make sure overrides are applied back on souce panel when exiting the new edit mode

* TS ignores in est

* Make field display work in viz repeater

* Review updates

* Review and test updates

* Change the way overrides and trransformations are retrieved in PQR

* Add fieldConfig property to PanelModel

* Dashboard migration v1

* Use field config when exiting new panel edit mode

* Gauge - use fieldConfig from panel model

* FieldDisplayOptions - don's extend FieldConfigSource

* Fix fieldDisplay ts

* StatPanel updated

* Stat panel defaults applied

* Table2 panel options  update

* React graph updates

* BarGauge updated

* PieChart, Gauge, BarGauge and Stat updates

* PieChart - remove field config defaults from options

* FieldDisplayEditor - remove unused methos

* PanelModel - remove debugger

* Remove fieldConfig from field options when migrating dashboard

* Update data links migrations

* Update fieldDisaplay tests to respect new fieldConfig

* Update dashboard schema version in snapshots

* Fix BarGaugePanel test

* Rebase fixes

* Add onFieldConfigChange to PanelProps type

* Update shared single stat migration

* Pass PanelModel instead of options only for panel type change handler [breaking]

* Renames

* Don't mutate panel options

* Migrations update

* Remove obsolete snap

* Minor updates after review

* Fix null checks

* Temporarily (until we decide to switch to new pane edit) bring back old aditors

* Temporarily rename ValueMappingEditor and MappingRow to Legacy*

* Migrations update

* Updae setFieldConfigDefaults API

* Update the way field config defaults are applied

* Use standard field config for gauge, bar gauge and stat panels

* refactoring

* Revert dashboard fieldOptions migrations as those are handled by single stat migrator

* Fix ts in tests

* Strict null fix and some minor fixes

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-19 11:50:31 +01:00
Emil Tullstedt d99a67075f Reporting: Update docs with correct logger name (#22892) 2020-03-19 11:48:38 +01:00
Ivana Huckova 8ba75e77b1 Design tweaks (#22886) 2020-03-19 10:17:56 +01:00
Ivana Huckova 0d88a49126 Remove duplicated localStorage mock (#22872) 2020-03-19 09:24:28 +01:00
Jess db85c3e7b9 Rich history UX fixes (#22783)
* Initial commit

* Visualised renamed or deleted  datasources as well, if they have queries

* Pass ds image to card and information if the datasource was removed/renamed

* Set up card with datasource info and change run query

* Style comment, run button

* Fix button naming

* Remember last filters

* Update public/app/core/store.ts

* Update public/app/features/explore/RichHistory/RichHistory.tsx

* Update comments

* Rename datasource to data source

* Add test coverage, fix naming

* Remove unused styles, add feedback info

Co-authored-by: Ivana <ivana.huckova@gmail.com>
Co-authored-by: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com>
2020-03-19 08:47:27 +01:00
Tobias Skarhed c7951a2575 Storybook: Solve deployment issues (#22873) 2020-03-19 07:51:22 +01:00
Diana Payton 18f1d5a83d Docs: Update templating.md (#22881)
Updated because these were moved to the 6.7 milestone.
2020-03-19 07:50:00 +01:00
Daniel Lee 3b9a4e6444 AzureMonitor: support workspaces function for template variables (#22882)
* azuremonitor: adds support for workspaces query macro...

...for Azure Logs template variable queries

* docs: azure logs workspaces templating function

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

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

* docs: convert list into table

* docs: fixes prettier formatting problem

Prettier adds a slash before dollar signs in markdown. Disabling it
for this table with a prettier comment.

https://prettier.io/docs/en/ignore.html

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-19 00:41:35 +01:00
Cyril Tovena ec9167e972 Check if the datasource is of type loki using meta.id instead of name. (#22877)
Signed-off-by: Cyril Tovena <cyril.tovena@gmail.com>
2020-03-18 21:18:48 +01:00
Denis 26626d9073 Prometheus: Render missing labels in legend formats as an empty string (#22355)
* Empty value for unknown Prometheus label (grafana#16041)

* Empty value for unknown Prometheus label (grafana#16041)

* fix linter
2020-03-18 19:57:11 +01:00
Tobias Skarhed 5a5122e7e3 BarGauge: Fix strict null that breaks Storybook build (#22871) 2020-03-18 18:23:48 +01:00
Arve Knudsen bb05989e43 SQLStore: Add migration for adding index on annotation.alert_id (#22876) 2020-03-18 17:59:42 +01:00
Diana Payton fc2fece3d2 Docs: Update export-pdf.md (#22767)
* Update export-pdf.md

Minor edits and one question.

* Update docs/sources/enterprise/export-pdf.md

Co-Authored-By: Alexander Zobnin <alexanderzobnin@gmail.com>

* Update export-pdf.md

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2020-03-18 08:58:11 -07:00
Hugo Häggmark 52242ddf76 Variables: adds missing feature toggle in DashboardModel (#22868) 2020-03-18 15:55:12 +01:00
Leonard Gram 229f135e5c Devenv: adds grafana block with a customizeable version (#22867)
The grafana block is pre-configured with the devenv datasources and
dashboards and will work with any other blocks out of the box.
2020-03-18 15:42:41 +01:00
Kyle Brandt 0e09a3fe15 Alerting: support alerting on data.Frame (that can be time series) (#22812)
data.Frame (that can be series) are converted to as tsdb.TimeSeriesSlice - so new backend plugins can be shimmed into existing alerting

use sdk v0.31.0
2020-03-18 10:30:07 -04:00
Dima Ryskin 44b7f3ea1c AlertNotifications: Translate notifications IDs to UIDs in Rule builder (#19882)
* AlertNotifications: Translate notifications IDs to UIDs in alert Rule builder

* Avoid shadowing errors, raise validation error on non-existing notification id

* create a cache for notification Uids to minimize db overhead

* add cache usage test

* avoid caching empty notification Uids

* isolate db in alert notificationUid caching tests
2020-03-18 15:00:56 +02:00
Tobias Skarhed 492264abc3 CircleCI: Don't build Storybook on PR (#22865) 2020-03-18 13:57:17 +01:00
Torkel Ödegaard 044ec40112 Graphite: Rollup Indicator (#22738)
* WIP: Rollup indiator progress

* Progress

* Progress, can now open inspector with right tab

* changed type and made inspect

* Showing stats

* Progress

* Progress

* Getting ready for v1

* Added option and fixed some strict nulls

* Updated

* Fixed test
2020-03-18 13:00:14 +01:00
Carl Bergquist 579abad9cc Plugins: Return jsondetails as an json object instead of raw json on datasource healthchecks. (#22859) 2020-03-18 12:08:52 +01:00
Marcus Efraimsson 60e3437fc1 Backend plugins: Exclude plugin metrics in Grafana's metrics endpoint (#22857)
Excludes backend plugin metrics in Grafana's metrics endpoint
Adds /api/:pluginId/metrics endpoint for retrieving metrics
from backend plugin as Prometheus text-based exposition format.

Fixes #22814
2020-03-18 12:08:20 +01:00
Torkel Ödegaard aa4ed76a00 Graphite: Fixed issue with query editor and next select metric now showing after selecting metric node (#22856)
* Graphite: Fixed digest issue in graphite query editor

* Fixed unit test

* Updated
2020-03-18 11:47:31 +01:00
Dominik Prokop 6070f749c7 Webpack: Fix webpack for enterprise (#22863) 2020-03-18 11:18:48 +01:00
Dominik Prokop 0a2dda35fc Metrics: Storybook documented components (#22854) 2020-03-18 08:22:46 +01:00
maximka be73dcd2eb Search: Improve tags layout , #22804 (#22830) 2020-03-18 08:14:56 +01:00
Erik Sundell 1cd7ce24c7 Stackdriver: Fix GCE auth bug when creating new data source (#22836)
* Fix test datasource for gce auth

* Cache gce default project locally

* Await gce default project call

* Remove reload functionality

* Fix build problem
2020-03-18 08:11:14 +01:00
Marcus Efraimsson eb96a8fcc8 @grafana/runtime: Add cancellation of queries to DataSourceWithBackend (#22818) 2020-03-18 00:12:03 +01:00
Ivana Huckova 8edf8e3982 Rich history: Test coverage (#22852)
* Add unit test coverage

* Add tests to util/richHistory

* Remove unused import

* Remove redundant tests

* Fix tests for components

* Test saving to local storage

* Add boxshadow to container

* Revert "Add boxshadow to container"

This reverts commit 5ca2e850e4.

* Fix failing tests after merging master

* Fix imports, aria-labels

* Remove console.log
2020-03-17 23:24:27 +01:00
Arve Knudsen 3fcbc18002 Chore: Support Volta in package.json (#22849) 2020-03-17 22:08:32 +01:00
Arve Knudsen 756ad3142c CircleCI: Skip enterprise builds for forked PRs (#22851)
* CircleCI: Skip enterprise builds for forked PRs
2020-03-17 21:39:02 +01:00
Stephanie Closson 6310aaff55 Toolkit: docker image for plugin CI process (#22790)
* Adding dockerfile for builds

* Adding standardized bashrc

* Updated dockerfile

* removed bashrc. Not required

* WIP: Updates to dockerfile for e2e and readme

* Storybook: Add relative logo url (#22786)

* DevEnv: update frontend dependencies - rollup (#22794)

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-data package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-e2e package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-runtime package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-ui package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-data package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-ui package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-data package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-ui package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-data package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-ui package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-data package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-e2e package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-runtime package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-ui package

* DevEnv: updates rollup config import in grafana-data package

* DevEnv: updates rollup config import in grafana-e2e package

* DevEnv: updates rollup config import in grafana-ui package

* DevEnv: updates rollup config import in grafana-runtime package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-data package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-e2e package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-runtime package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-ui package

* DevEnv: updates lockfile

* DevEnv: updates rollup config plugin-node-resolve import in grafana-data package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-ui package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-e2e package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-runtime package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-data package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-e2e package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-runtime package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-ui package

* Fronted: Fixed webpack chunk syntax error

* Fix: fixes issue with headers property with different casing (#22778)

Fixes #22756

* Variables: migrates data source variable type to React/Redux (#22770)

* Refactor: moves all the newVariables part to features/variables directory

* Feature: adds datasource type

* Tests: adds reducer tests

* Tests: covers data source actions with tests

* Chore: reduces strict null errors

* AngularPanels: Fixed inner height calculation (#22796)

* Chore: migrate admin/users from angular to react + redux (#22759)

* Start adding admin users list page to redux/react.

* removed unused code.

* added pagination.

* changed so we use the new form styles.

* added tooltip.

* using tagbadge for authlabels.

* remove unused code.

* removed old code.

* Fixed the last feedback on PR.

* DevEnv: update frontend dependencies - webpack (#22144)

* DevEnv: updates webpack 4.29.6 -> 4.41.5

* DevEnv: updates webpack-cli 3.2.3 -> 3.3.10

* DevEnv: updates webpack-dev-server 3.2.1 -> 3.10.3

* DevEnv: updates terser-webpack-plugin 1.2.3 -> 2.3.4

* DevEnv: updates webpack-bundle-analyzer 3.3.2 -> 3.6.0

* DevEnv updates webpack-merge 4.2.1 -> 4.2.2

* DevEnv: updates clean-webpack-plugin 2.0.0 -> 3.0.0

* DevEnv: updates file-loader 3.0.1 -> 5.0.2

* DevEnv: updates css-loader 2.1.1 -> 3.4.2

* DevEnv: updates sass-loader 7.1.0 -> 8.0.2

* DevEnv: updates style-loader 0.23.1 -> 1.1.3

* DevEnv: updates fork-ts-checker-webpack-plugin 1.0.0 -> 4.0.3

* DevEnv: updates optimize-css-assets-webpack-plugin 5.0.1 -> 5.0.3

* DevEnv: updates mini-css-extract-plugin 0.5.0 -> 0.9.0

* DevEnv: updates @cypress/webpack-preprocessor 4.1.1 -> 4.1.3 in grafana-e2e package

* DevEnv: updates @types/webpack 4.4.34 -> 4.41.7 in grafana-toolkit package

* DevEnv: updates copy-webpack-plugin 5.0.3 -> 5.1.1 in grafana-toolkit package

* DevEnv: updates terser-webpack-plugin 1.3.0 -> 2.3.4 in grafana-toolkit package

* DevEnv: updates webpack 4.35.0 -> 4.41.5 in grafana-toolkit package

* DevEnv: updates import of CleanWebpackPlugin to named import (#22800)

* Build: Migrate PR pipeline (#22788)

Implement new PR pipeline

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

* DevEnv: update frontend dependencies - mixed 1/2 (#22147)

* DevEnv: updates @emotion/core 10.0.10 -> 10.0.27

* DevEnv: updates autoprefixer 9.5.0 -> 9.7.4

* DevEnv: updates axios 0.19.0 -> 0.19.2

* DevEnv: updates es6-promise 3.3.1 -> 4.2.8

* DevEnv: updates glob 7.1.3 -> 7.1.6

* DevEnv: updates husky 1.3.1 -> 4.2.1

* DevEnv: updates lerna 3.15.0 -> 3.20.2

* DevEnv: updates lint-staged 8.1.5 -> 10.0.7

* DevEnv: updates module-alias 2.2.0 -> 2.2.2

* DevEnv: updates monaco-editor 0.15.6 -> 0.19.3

* DevEnv: updates postcss-browser-reporter 0.5.0 -> 0.6.0

* DevEnv: updates rimraf 2.6.3 -> 3.0.1

* Revert "DevEnv: updates monaco-editor 0.15.6 -> 0.19.3"

* DevEnv: updates axios 0.19.0 -> 0.19.2 in grafana-toolkit package

* DevEnv: updates lockfile

* DevEnv: update frontend dependencies - mixed 2/2 (#22148)

* DevEnv: updates sinon 1.17.6 -> 8.1.1

* DevEnv: updates zone.js 0.7.8 -> 0.10.2

* DevEnv: updates brace 0.10.0 -> 0.11.1

* DevEnv: updates eventemitter3 2.0.3 -> 4.0.0

* DevEnv: updates file-saver 1.3.8 -> 2.0.2

* DevEnv: updates is-hotkey 0.1.4 -> 0.1.6

* DevEnv: updates mousetrap 1.6.3 -> 1.6.5

* DevEnv: updates prismjs 1.16.0 -> 1.19.0

* DevEnv: updates search-query-parser 1.5.2 -> 1.5.4

* DevEnv: updates tether 1.4.5 -> 1.4.7

* DevEnv: updates xss 1.0.3 -> 1.0.6

* Revert "DevEnv: updates zone.js 0.7.8 -> 0.10.2"

* DevEnv: updates sinon 1.17.6 -> 8.1.1 in grafana-data package

* DevEnv: updates @types/sinon 7.0.11 -> 7.5.2 in grafana-data package

* DevEnv: updates eventemitter import

* DevEnv: updates lockfile

* Variables: migrates interval variable type to React/Redux  (#22797)

* Feature: migrates interval variable type to React/Redux

* Forms: Fix input suffix position (#22780)

* Forms: Fix input suffix position

* Update

* FieldOverrides: Apply field overrides in PanelQueryRunner (#22439)

* Apply field overrides in PanelChrome

* Move applyFieldOverrides to panel query runner

* Review updates

* Make sure overrides are applied back on souce panel when exiting the new edit mode

* TS ignores in est

* Make field display work in viz repeater

* Review updates

* Review and test updates

* Change the way overrides and trransformations are retrieved in PQR

* Minor updates after review

* Fix null checks

* E2E: Add new run modes for e2e tests (#22795)

* WIP: started e2e tests for bar gauge

* Updated

* Updated

* Updated cypress from 3.7 -> 4.1

* reverted cypress upgrade

* Updated test

* Update e2e docs

* Updated docs

* DevEnv: update frontend dependencies - npm, nodemon, typescript (#22145)

* DevEnv: updates npm 6.13.4 -> 6.13.7

* DevEnv: updates nodemon 1.18.10 -> 2.0.2

* DevEnv: updates typescript 3.7.2 -> 3.7.5

* DevEnv: removes npm from dev dependencies

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-data package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-e2e package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-toolkit package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-ui package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-runtime package

* SaveDashboard: Updated modal design/layout a bit (#22810)

* DevEnv: updates build-ci-deploy dockerfile and CI config to include yarn (#22809)

* DevEnv: updates build-ci-deploy dockerfile

* DevEnv: updates build-ci-deploy dockerfile version in circleci config

* Plugins: Hide plugins page from viewers, and limit /api/plugins to only core plugins when called by viewer role  (#21901)

* Hide plugins list from viewers

* Made /api/plugins only return core plugins for users with viewer role

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

* Webpack: Add relative node_modules path (#22806)

* DevEnv: updates lockfile to fix breaking builds on CI (#22811)

* DevEnv: updates lockfile

* DevEnv: updates lockfile

* Added readme, and review feedback

* Renamed README

* fixed error in path for docs

* Added updatedb

* Set grafana checkout to latest stable

* Variables: fixes so single value picker closes dropdown on select (#22823)

* FieldOverrides: Remove console warn from processFieldConfigValue (#22824)

* Grafana-UI: Add invalid state to Forms.Textarea (#22775)

* Storybook: Bring back theme switch (#22826)

* TestData: New dashboard that tests variables that update on time range change (#22829)

* CircleCI: Download grabpl from GCS (#22828)

* CircleCI: Download grabpl from GCS

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

* CircleCI: Fix installation of grabpl

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

* Fix dashboard picker's props (#22815)

* TablePanel: Enable new units picker (#22833)

* CircleCI: Install build pipeline tool from GitHub repo (#22837)

* Variables: fixes so order in list is preserved after save (#22805)

* Storybook: Deploy on PR, master and release (#22827)

* Update CircleCI deployment

* Add GCP auth

* Change master to latest dir

* Variables: adds onTimeRangeUpdated to newVariables (#22821)

* Feature: adds onTimeRangeUpdated to newVariables

* Refactor: removes VariableWithRefresh and unused func

* Refactor: adds console output when something throws as well

* Storybook: add canary deploy from master (#22843)

* Canary from master latest from release

* Fix logo URL

* Adding dockerfile for builds

* Adding standardized bashrc

* Updated dockerfile

* removed bashrc. Not required

* WIP: Updates to dockerfile for e2e and readme

* Added readme, and review feedback

* Renamed README

* fixed error in path for docs

* Added updatedb

* Set grafana checkout to latest stable

* Feedback from code review

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

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

* recommended changes from code review

Co-authored-by: Tobias Skarhed <1438972+tskarhed@users.noreply.github.com>
Co-authored-by: Lukas Siatka <lukasz.siatka@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Marcus Andersson <marcus.andersson@grafana.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>
2020-03-17 13:36:35 -06:00
Ivana Huckova d7312750a3 Revert "Explore: Add test coverage for Rich history (#22722)" (#22850)
This reverts commit 40a8aea313.
2020-03-17 17:20:32 +01:00
Carl Bergquist 0a094a7319 Datasource config was not mapped for datasource healthcheck (#22848)
closes #22825
2020-03-17 16:59:47 +01:00
Carl Bergquist b0407b3578 upgrades plugin sdk to 0.30.0 (#22846)
ref grafana/grafana-plugin-sdk-go#94
ref grafana/grafana-plugin-sdk-go#70
2020-03-17 16:58:52 +01:00
Ivana Huckova 40a8aea313 Explore: Add test coverage for Rich history (#22722)
* Add unit test coverage

* Add tests to util/richHistory

* Remove unused import

* Remove redundant tests

* Fix tests for components

* Test saving to local storage

* Add boxshadow to container

* Revert "Add boxshadow to container"

This reverts commit 5ca2e850e4.
2020-03-17 16:10:56 +01:00
Ivana Huckova 544690060a Rich History: UX adjustments and fixes (#22729)
* Initial commit

* Fix spelling of data sources

* Display sorting value for starred and query tab

* Fix handle color for light theme

* Add close button and fix animation

* Remove toggling of tabs

* Stop event propagation when clicking on comment buttons

* Add title for card functionality

* Remove interpolation for easier searchability of variables

* Improve syncing of comments and starred

* Add modal to check if user wants to permanently delete history

* Fix the height of the query card buttons

* Adjust slider's width based on drawer width

* Add spacing between slider and legend

* Semantic variable naming

* Fix disabled button when live tailing

* Add error handling

* Remove unused imports

* Fix starring, remove useEffect

* Remove emiting of appEvents.alertError in store

* Remove unused imports
2020-03-17 16:06:02 +01:00
Arve Knudsen e38e08dfb3 CircleCI: Don't publish storybook for PRs (#22845) 2020-03-17 15:56:08 +01:00
Tobias Skarhed 81fed255fd Storybook: add canary deploy from master (#22843)
* Canary from master latest from release

* Fix logo URL
2020-03-17 15:03:59 +01:00
Hugo Häggmark d953511e02 Variables: adds onTimeRangeUpdated to newVariables (#22821)
* Feature: adds onTimeRangeUpdated to newVariables

* Refactor: removes VariableWithRefresh and unused func

* Refactor: adds console output when something throws as well
2020-03-17 14:10:30 +01:00
Tobias Skarhed 7f76e8b684 Storybook: Deploy on PR, master and release (#22827)
* Update CircleCI deployment

* Add GCP auth

* Change master to latest dir
2020-03-17 13:34:41 +01:00
Hugo Häggmark dc76cc1a26 Variables: fixes so order in list is preserved after save (#22805) 2020-03-17 13:28:14 +01:00
Arve Knudsen 85b1742805 CircleCI: Install build pipeline tool from GitHub repo (#22837) 2020-03-17 12:50:35 +01:00
Dominik Prokop 58298919c8 TablePanel: Enable new units picker (#22833) 2020-03-17 12:32:48 +01:00
Alex Khomenko 2fac834413 Fix dashboard picker's props (#22815) 2020-03-17 12:07:40 +02:00
Arve Knudsen 67fc251fef CircleCI: Download grabpl from GCS (#22828)
* CircleCI: Download grabpl from GCS

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

* CircleCI: Fix installation of grabpl

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-17 11:00:23 +01:00
Torkel Ödegaard 6c6fa7606e TestData: New dashboard that tests variables that update on time range change (#22829) 2020-03-17 10:33:36 +01:00
Dominik Prokop 22fc1e91f5 Storybook: Bring back theme switch (#22826) 2020-03-17 09:52:46 +01:00
Alex Khomenko cd50da3dbe Grafana-UI: Add invalid state to Forms.Textarea (#22775) 2020-03-17 10:15:07 +02:00
Dominik Prokop b930966fc7 FieldOverrides: Remove console warn from processFieldConfigValue (#22824) 2020-03-17 08:32:14 +01:00
Hugo Häggmark 45784f58f5 Variables: fixes so single value picker closes dropdown on select (#22823) 2020-03-17 08:29:10 +01:00
Lukas Siatka 2bed1bc2e7 DevEnv: updates lockfile to fix breaking builds on CI (#22811)
* DevEnv: updates lockfile

* DevEnv: updates lockfile
2020-03-16 15:52:25 +01:00
Andrej Ocenas c64182d579 Webpack: Add relative node_modules path (#22806) 2020-03-16 15:44:23 +01:00
Dominik Prokop f345d7f6a3 Plugins: Hide plugins page from viewers, and limit /api/plugins to only core plugins when called by viewer role (#21901)
* Hide plugins list from viewers

* Made /api/plugins only return core plugins for users with viewer role

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-16 15:40:46 +01:00
Lukas Siatka 935ec07cfd DevEnv: updates build-ci-deploy dockerfile and CI config to include yarn (#22809)
* DevEnv: updates build-ci-deploy dockerfile

* DevEnv: updates build-ci-deploy dockerfile version in circleci config
2020-03-16 15:37:44 +01:00
Torkel Ödegaard 46165a7f7b SaveDashboard: Updated modal design/layout a bit (#22810) 2020-03-16 15:33:18 +01:00
Lukas Siatka a3037e363f DevEnv: update frontend dependencies - npm, nodemon, typescript (#22145)
* DevEnv: updates npm 6.13.4 -> 6.13.7

* DevEnv: updates nodemon 1.18.10 -> 2.0.2

* DevEnv: updates typescript 3.7.2 -> 3.7.5

* DevEnv: removes npm from dev dependencies

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-data package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-e2e package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-toolkit package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-ui package

* DevEnv: updates typescript 3.7.2 -> 3.7.5 in grafana-runtime package
2020-03-16 15:04:02 +01:00
Torkel Ödegaard 75d7f9072c E2E: Add new run modes for e2e tests (#22795)
* WIP: started e2e tests for bar gauge

* Updated

* Updated

* Updated cypress from 3.7 -> 4.1

* reverted cypress upgrade

* Updated test

* Update e2e docs

* Updated docs
2020-03-16 14:35:55 +01:00
Dominik Prokop 642c1a16dd FieldOverrides: Apply field overrides in PanelQueryRunner (#22439)
* Apply field overrides in PanelChrome

* Move applyFieldOverrides to panel query runner

* Review updates

* Make sure overrides are applied back on souce panel when exiting the new edit mode

* TS ignores in est

* Make field display work in viz repeater

* Review updates

* Review and test updates

* Change the way overrides and trransformations are retrieved in PQR

* Minor updates after review

* Fix null checks
2020-03-16 14:26:03 +01:00
Torkel Ödegaard ab0238eced Forms: Fix input suffix position (#22780)
* Forms: Fix input suffix position

* Update
2020-03-16 14:18:40 +01:00
Hugo Häggmark fb789e8398 Variables: migrates interval variable type to React/Redux (#22797)
* Feature: migrates interval variable type to React/Redux
2020-03-16 13:45:51 +01:00
Lukas Siatka fd99bfab1d DevEnv: update frontend dependencies - mixed 2/2 (#22148)
* DevEnv: updates sinon 1.17.6 -> 8.1.1

* DevEnv: updates zone.js 0.7.8 -> 0.10.2

* DevEnv: updates brace 0.10.0 -> 0.11.1

* DevEnv: updates eventemitter3 2.0.3 -> 4.0.0

* DevEnv: updates file-saver 1.3.8 -> 2.0.2

* DevEnv: updates is-hotkey 0.1.4 -> 0.1.6

* DevEnv: updates mousetrap 1.6.3 -> 1.6.5

* DevEnv: updates prismjs 1.16.0 -> 1.19.0

* DevEnv: updates search-query-parser 1.5.2 -> 1.5.4

* DevEnv: updates tether 1.4.5 -> 1.4.7

* DevEnv: updates xss 1.0.3 -> 1.0.6

* Revert "DevEnv: updates zone.js 0.7.8 -> 0.10.2"

* DevEnv: updates sinon 1.17.6 -> 8.1.1 in grafana-data package

* DevEnv: updates @types/sinon 7.0.11 -> 7.5.2 in grafana-data package

* DevEnv: updates eventemitter import

* DevEnv: updates lockfile
2020-03-16 13:14:57 +01:00
Lukas Siatka f44399abdb DevEnv: update frontend dependencies - mixed 1/2 (#22147)
* DevEnv: updates @emotion/core 10.0.10 -> 10.0.27

* DevEnv: updates autoprefixer 9.5.0 -> 9.7.4

* DevEnv: updates axios 0.19.0 -> 0.19.2

* DevEnv: updates es6-promise 3.3.1 -> 4.2.8

* DevEnv: updates glob 7.1.3 -> 7.1.6

* DevEnv: updates husky 1.3.1 -> 4.2.1

* DevEnv: updates lerna 3.15.0 -> 3.20.2

* DevEnv: updates lint-staged 8.1.5 -> 10.0.7

* DevEnv: updates module-alias 2.2.0 -> 2.2.2

* DevEnv: updates monaco-editor 0.15.6 -> 0.19.3

* DevEnv: updates postcss-browser-reporter 0.5.0 -> 0.6.0

* DevEnv: updates rimraf 2.6.3 -> 3.0.1

* Revert "DevEnv: updates monaco-editor 0.15.6 -> 0.19.3"

* DevEnv: updates axios 0.19.0 -> 0.19.2 in grafana-toolkit package

* DevEnv: updates lockfile
2020-03-16 13:10:42 +01:00
Arve Knudsen 5413521030 Build: Migrate PR pipeline (#22788)
Implement new PR pipeline

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-16 11:08:27 +01:00
Lukas Siatka 6065b1b91d DevEnv: updates import of CleanWebpackPlugin to named import (#22800) 2020-03-16 10:52:30 +01:00
Lukas Siatka d1837ea132 DevEnv: update frontend dependencies - webpack (#22144)
* DevEnv: updates webpack 4.29.6 -> 4.41.5

* DevEnv: updates webpack-cli 3.2.3 -> 3.3.10

* DevEnv: updates webpack-dev-server 3.2.1 -> 3.10.3

* DevEnv: updates terser-webpack-plugin 1.2.3 -> 2.3.4

* DevEnv: updates webpack-bundle-analyzer 3.3.2 -> 3.6.0

* DevEnv updates webpack-merge 4.2.1 -> 4.2.2

* DevEnv: updates clean-webpack-plugin 2.0.0 -> 3.0.0

* DevEnv: updates file-loader 3.0.1 -> 5.0.2

* DevEnv: updates css-loader 2.1.1 -> 3.4.2

* DevEnv: updates sass-loader 7.1.0 -> 8.0.2

* DevEnv: updates style-loader 0.23.1 -> 1.1.3

* DevEnv: updates fork-ts-checker-webpack-plugin 1.0.0 -> 4.0.3

* DevEnv: updates optimize-css-assets-webpack-plugin 5.0.1 -> 5.0.3

* DevEnv: updates mini-css-extract-plugin 0.5.0 -> 0.9.0

* DevEnv: updates @cypress/webpack-preprocessor 4.1.1 -> 4.1.3 in grafana-e2e package

* DevEnv: updates @types/webpack 4.4.34 -> 4.41.7 in grafana-toolkit package

* DevEnv: updates copy-webpack-plugin 5.0.3 -> 5.1.1 in grafana-toolkit package

* DevEnv: updates terser-webpack-plugin 1.3.0 -> 2.3.4 in grafana-toolkit package

* DevEnv: updates webpack 4.35.0 -> 4.41.5 in grafana-toolkit package
2020-03-16 09:57:35 +01:00
Marcus Andersson be192b8191 Chore: migrate admin/users from angular to react + redux (#22759)
* Start adding admin users list page to redux/react.

* removed unused code.

* added pagination.

* changed so we use the new form styles.

* added tooltip.

* using tagbadge for authlabels.

* remove unused code.

* removed old code.

* Fixed the last feedback on PR.
2020-03-16 09:53:20 +01:00
Torkel Ödegaard f78501f3b5 AngularPanels: Fixed inner height calculation (#22796) 2020-03-16 09:48:44 +01:00
Hugo Häggmark 1db067396a Variables: migrates data source variable type to React/Redux (#22770)
* Refactor: moves all the newVariables part to features/variables directory

* Feature: adds datasource type

* Tests: adds reducer tests

* Tests: covers data source actions with tests

* Chore: reduces strict null errors
2020-03-16 06:32:04 +01:00
Hugo Häggmark b30f4c7bb0 Fix: fixes issue with headers property with different casing (#22778)
Fixes #22756
2020-03-16 06:24:55 +01:00
Torkel Ödegaard 7b5b8ad3d3 Fronted: Fixed webpack chunk syntax error 2020-03-15 17:03:41 +01:00
Lukas Siatka d51e2221a4 DevEnv: update frontend dependencies - rollup (#22794)
* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-data package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-e2e package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-runtime package

* DevEnv: updates rollup 1.6.0 -> 2.0.6 in grafana-ui package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-data package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-sourcemaps 0.4.2 -> 0.5.0 in grafana-ui package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-data package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-terser 4.0.4 -> 5.3.0 in grafana-ui package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-data package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-e2e package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-runtime package

* DevEnv: updates rollup-plugin-typescript2 0.19.3 -> 0.26.0 in grafana-ui package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-data package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-e2e package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-runtime package

* DevEnv: updates @rollup/plugin-commonjs 9.2.1 -> 11.0.2 in grafana-ui package

* DevEnv: updates rollup config import in grafana-data package

* DevEnv: updates rollup config import in grafana-e2e package

* DevEnv: updates rollup config import in grafana-ui package

* DevEnv: updates rollup config import in grafana-runtime package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-data package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-e2e package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-runtime package

* DevEnv: updates @rollup/plugin-node-resolve 4.0.1 -> 7.1.1 in grafana-ui package

* DevEnv: updates lockfile

* DevEnv: updates rollup config plugin-node-resolve import in grafana-data package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-ui package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-e2e package

* DevEnv: updates rollup config plugin-node-resolve import in grafana-runtime package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-data package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-e2e package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-runtime package

* DevEnv: updates rollup-plugin-visualizer 0.9.2 -> 3.3.1 in grafana-ui package
2020-03-15 16:39:40 +01:00
Tobias Skarhed 8a03703837 Storybook: Add relative logo url (#22786) 2020-03-14 09:04:14 +01:00
Ryan McKinley 8b067a5fe0 DataSourceWithBackend: use /health endpoint for test (#22789) 2020-03-13 14:40:16 -07:00
Torkel Ödegaard dfb3272bdb E2E: Moving files & refactoring (#22787)
* E2E refactoring

* Updated circleci

* Updated lint paths
2020-03-13 18:48:38 +01:00
Ryan McKinley c65db9bf25 Chore: remove expressions flag and allow (#22764) 2020-03-13 07:43:25 -07:00
Diana Payton 317894660f Update team-sync.md (#22766)
Alphabetized the list of supported providers.
2020-03-13 07:30:13 -07:00
Peter Holmberg 7019471f3f Migrate: Create new folder page (#22693)
* Migrate create new folder page

* Add header

* Bump react-hook-form

* Form async validatio example

* fix async validation

* Change input size

* async validation on new folder create + documentation

* remove angular things

* fix errors in docs

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-13 15:02:54 +01:00
Torkel Ödegaard 64877baa82 E2E: Run e2e tests on PRs and easy local isolated e2e grafana server setup & conf (#22772)
* e2e: Trying to get end-2-end tests to run on PRs

* Probably need quotes here

* Change back to machine

* CI: only build amd64 docker

* lowercase docker image name

* Fixed docker image name

* added end-to-end-test

* Fixed paths

* Added setup_remote_docker

* Updated

* Minor tweak

* update

* Testing

* UpdateD#

* Making some progress

* Update

* Updated

* update

* Updated

* Updated

* testing

* Updated

* Updated

* Updated

* Updated

* updated

* Changed image

* Updated image

* updated

* Addd logging

* trying one more thing

* Fixed build-fast-frontend

* Updated

* Added devenv to end-to-end server setup

* removed file

* Updated

* Minor change

* Fixes

* Updated workspace, and tried to make naming and paths compatible with master & release jobs

* fixed syntax issue

* Updated truth

* Fixed path
2020-03-13 14:34:25 +01:00
Carl Bergquist b1e112923b aligns the severity dropdown with other fields (#22779) 2020-03-13 14:19:35 +01:00
Alex Khomenko 451c95808d Core: Pass the rest of to props to Select (#22776)
* Pass the rest of to props to Select

* Remove log
2020-03-13 13:07:15 +01:00
Carl Bergquist ebc9549cbc Add support for sending health check to datasource plugins. (#22771)
closes #21519
ref grafana/grafana-plugin-sdk-go#93
2020-03-13 12:31:44 +01:00
Lukas Siatka 2693f44a03 Explore: removes handling onBlur action in Explore for Loki and Prometheus (#22768)
* Explore: turns off actions execution on blur for Loki

* Explore: turns off actions execution on blur for Prometheus

* Explore: updates snapshots for Loki & Prometheus after turning off onBlur
2020-03-13 12:00:02 +01:00
Diana Payton b15d0388ff Docs: Update whats-new-in-v6-7.md (#22737)
* Update whats-new-in-v6-7.md
2020-03-13 10:18:25 +01:00
Dominik Prokop 1256d9e78d grafana/data: PanelTypeChangedHandler API update to use PanelModel instead of panel options object [BREAKING] (#22754)
This changes PanelModel's API to support PanelModel API updates when changing panel type. Primary useful when changing panel type between Angular and React panels, as other migrations can be handled via DashboardMigrator.

API change: https://github.com/grafana/grafana/pull/22754/files#diff-d9e3f91dc7d5697f6d85ada008003b4b
2020-03-13 08:27:16 +01:00
Daniel Mietchen 1228fdc57a copyedits (#20817)
Co-authored-by: bergquist <carl.bergquist@gmail.com>
2020-03-13 07:30:04 +01:00
Ivana Huckova 45a567cb8e Docs: Rich history (#22697)
* Add rich historyy documentation

* Update index.md

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

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

* Update documentation

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Format table

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-13 00:14:38 +01:00
Diana Payton 904f88167c Docs: Update reporting.md (#22734)
Minor edit
2020-03-12 12:52:24 -07:00
Diana Payton ef378cb956 Docs: Update menu.yaml (#22730) 2020-03-12 12:38:36 -07:00
Marcus Andersson f44c0f0643 Datasource: making sure we are having the same data field order when using mixed data sources. (#22718)
* changed so data query response always it returned in the correct order when using mixed data sources.

* refactored the code to make it a bit simpler and not failing the tests.

* changed to simple array type.
2020-03-12 18:16:32 +01:00
Arve Knudsen d813204546 Update latest.json (#22761)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-12 16:41:34 +01:00
Arve Knudsen da787c1a38 Update changelog (#22755)
* Update changelog
2020-03-12 15:28:59 +01:00
Alexander Zobnin 4393478397 Docs: export dashboard as PDF (#22746)
* Docs: export dashboard as PDF

* Update docs/sources/enterprise/_index.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-03-12 16:24:56 +03:00
Alexander Zobnin 61c1e70234 Docs: add Azure AD to the list of supported providers (#22751) 2020-03-12 15:31:21 +03:00
Dominik Prokop b441b73345 DashboardSave: Autofocus save dashboard form input (#22748) 2020-03-12 11:50:50 +01:00
Hugo Häggmark b51e28bc15 Chore: reduces strict null errors to 824 (#22744)
* Chore: reduces strict null errors with 100+

* Chore: lowers the build error number
2020-03-12 10:22:33 +01:00
Steven Vachon 4fecf5a7a6 @grafana/e2e: correctly exclude dependencies from TypeScript builds (#22732)
* maintains support for Grafana core e2e tests
* avoids producing declaration files in plugin source directories
2020-03-11 15:30:29 -04:00
Erik Sundell 5b7bb267cb Add info about project and reference a new image (#22719) 2020-03-11 19:53:52 +01:00
Cody Williams 2940483baf Docs: Remove Mention of Live Tailing in Dashboard (#22704)
The live tailing option was removed with #19533 per some outstanding issues (#19532 and #19530). It should no be mentioned in the docs as a feature. 

https://github.com/grafana/grafana/pull/19533
2020-03-11 10:30:58 -07:00
Alex Khomenko 989c73cf11 Docs: Add layout info (#22720)
* Docs: Add layout info

* Update docs/sources/enterprise/reporting.md

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-03-11 18:31:49 +02:00
Arve Knudsen 9c5020d53f Increment Grafana version (#22728)
* Increment Grafana version to 7.0.0-pre
2020-03-11 17:20:56 +01:00
Arve Knudsen 9bcccd7574 CircleCI: Implement new release pipeline (#22625)
* CircleCI: Adapt build-pipeline to implement also release pipeline
2020-03-11 15:45:52 +01:00
Martin Brenner 6b61c65b58 Toolkit: use fs-extra instead of fs (#22723)
* use fs-extra instead of fs

* use moveSync instead of renameSync
2020-03-11 07:37:31 -07:00
Jon Gyllenswärd d11bb2e198 What's new docs for 6.7 release (#22721)
* added docs

* Update docs/sources/guides/whats-new-in-v6-7.md

* Docs: minor restruturing of whats new

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-03-11 15:23:47 +01:00
Kyle Brandt 69a5530aec Backend Plugins: use sdk v0.26.0 (#22725)
allows Field names to be duplicated, goes with #22705
2020-03-11 10:06:16 -04:00
Peter Holmberg 08d8190c02 PanelInspector: Add Stats Tab (#22683)
* add tab

* add process measurement

* Fixed some design issues

* Align tabs margin

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-11 13:19:06 +01:00
Torkel Ödegaard c75574298c Revert "Graph: Improve point rendering performance (#22610)" (#22716)
This reverts commit 0f6769665a.
2020-03-11 13:18:37 +01:00
Agnès Toulet 8477d7b4a2 Docs: add rendering configuration in reporting (#22715)
* Docs: add rendering configuration in reporting

* Docs: fix mispelling
2020-03-11 12:58:03 +01:00
Marcus Andersson f26d14eef1 reverting the changes that failed the e2e tests. (#22714) 2020-03-11 11:26:52 +01:00
Mohit Nain 49418f1a63 Remove multiple occurrences of "before" (#22710) 2020-03-11 11:12:20 +01:00
Agnès Toulet 34c9233501 Datasources: Update dashboards (#22476)
* Datasources: Update dashboards

* Datasources: increase dashboard versions

* Datasources: prometheus dashboards improvements

- Update links
- Add target="blank" if missing
- Remove not showing image
2020-03-11 10:56:45 +01:00
Sofia Papagiannaki be022d4239 API: Fix redirect issues (#22285)
* Revert "API: Fix redirect issue when configured to use a subpath (#21652)" (#22671)

This reverts commit 0e2d874ecf.

* Fix redirect validation (#22675)

* Chore: Add test for parse of app url and app sub url

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

* Fix redirect: prepend subpath only if it's missing (#22676)

* Validate redirect in login oauth (#22677)

* Fix invalid redirect for authenticated user (#22678)

* Login: Use correct path for OAuth logos

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-03-11 11:04:48 +02:00
Lukas Siatka 688283a5cc Explore: adds QueryRowErrors component, moves error display to QueryRow (#22438)
* Explore: adds QueryRowErrors component

* Explore: updates QueryRow to use QueryRowErrors component

* Explore: updates PromQueryField to remove error render

* Explore: updates Elastic query field  to remove error render

* Explore: updates LokiQueryFieldForm to remove error render

* Explore: updates QueryRow component - brings back passing errors down

* Explore: removes QueryRowErrors component

* Explore: updates ErrorContainer component - moves out data filtering

* Explore: updates QueryRow component - changes QueryRowErrors to ErrorContainer

* Explore: updates Explore component - adds error filtering for ErrorContainer

* Explore: updates ErrorContainer and adds a basic test for it

* Explore: updates Explore component props name and adds a basic render test

* Explore: adds snapshots for Explore and ErrorContainer

* Explore: adds a test for error render

* Explore: adds a comment to Explore component explaining the way we filter non-query-row-specific errors

* Explore: adds getFirstNonQueryRowSpecificError method to explore utilities

* Explore: extracts getFirstNonQueryRowSpecificError method and slightly refactors Explore component

* Explore: updates Explore component tests to cover non-query-row-specific errors
2020-03-11 10:01:58 +01:00
Torkel Ödegaard bbed213115 RichHistory: Design Tweaks (#22703)
* design tweaks

* RichHistory: Design tweaks
2020-03-11 09:37:35 +01:00
Dominik Prokop 4845321b43 Modals: Unify angular/react modals backdrop color (#22708) 2020-03-11 09:30:08 +01:00
Sofia Papagiannaki c6829645c7 Graphite: Don't issue empty "select metric" queries (#22699)
* Don't issue empty "select metric" queries

* Update pkg/tsdb/graphite/graphite.go

Co-Authored-By: Carl Bergquist <carl.bergquist@gmail.com>

* Fix indentation

* Add missing import

Co-authored-by: Carl Bergquist <carl.bergquist@gmail.com>
2020-03-11 09:28:36 +01:00
Ryan McKinley cf6adb8b54 support duplicate field names in arrow format (#22705) 2020-03-11 09:24:50 +01:00
Torkel Ödegaard 9824219a58 UX: Update new form styles to dark inputs (#22701)
* UX: Update new form styles to dark inputs

* Aligning styles a bit

* Updated snapshot
2020-03-11 09:20:28 +01:00
Mohit Nain ec18b00e2d Docs: Grammar corrections
line 31 : makes user a superadmin  : multiple use of  'a' can be avoided for better reading

line 35: User can belong to : remove 'be' it is incorrect

line 51: allow you : typo correction
2020-03-11 08:42:23 +01:00
Mohit Nain 6a3e4db692 Docs: Overcoming Grammatical errors (#22707)
* correcting line 15

one typo needs correction

* Update docs/sources/permissions/organization_roles.md

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

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
2020-03-11 08:41:30 +01:00
Tobias Skarhed b4666456f0 Pass dashboard via angular directive (#22696) 2020-03-11 08:31:07 +01:00
annelaurefroment e2a9dcdc32 Docs: Replace "API" by "Integration" key for PagerDuty (#22639) 2020-03-11 00:16:50 -07:00
Diana Payton 800431bc1f Docs: Edited Enterprise docs (#22602)
* Update white-labeling.md

* Update team-sync.md

* Update saml.md

* Update saml.md

* Update menu.yaml

* Update reporting.md

* Update saml.md

* Update reporting.md

* Update reporting.md

* Update enhanced_ldap.md

* Update _index.md

* content updates

content updates

* Update menu.yaml

* Update datasource_permissions.md

* Update _index.md

* Minor edits

* Update _index.md

* Update docs/sources/enterprise/_index.md

Co-Authored-By: Emil Tullstedt <sakjur@gmail.com>

* Update _index.md

* Update saml.md

* Update reporting.md

Co-authored-by: Emil Tullstedt <sakjur@gmail.com>
2020-03-10 13:54:19 -07:00
Erik Sundell 763fb3bc32 CloudWatch: Expand alias variables when query yields no result (#22695)
* Return empty time series with expanded aliases in case query yielded no results

* PR feedback
2020-03-10 21:14:58 +01:00
Kyle Brandt 73c4bef70f Dependency: sdk's dataframe package renamed to data (#22700)
* use sdk 0.24.0
2020-03-10 15:42:15 -04:00
Steven Vachon 2c6993f18a @grafana/e2e: include Cypress tsconfig in published package (#22698) 2020-03-10 15:37:48 -04:00
Shavonn Brown b761679d80 Graphite: Update config editor (#22553)
* update config editor

* inlining

* move inline styles

* removed inline style but emotion not working

* fix styles, update types const
2020-03-10 13:20:38 -04:00
Steven Vachon 23d72d25e4 @grafana/e2e: fix runtime ts-loader errors with Cypress support files (#22688)
* Minor changes

* Only exclude installed packages that are not @grafana/e2e itself

* Explicitly load Cypress tsconfig for clarity

* Fix Cypress tsconfig

  * it was trying to extend a config that is not published
  * it needs to be commonjs
2020-03-10 12:20:44 -04:00
Marcus Efraimsson 9cab3b65ec Docs: Add version note about Azure AD OAuth2 (#22692)
Fixes #22633
2020-03-10 17:15:25 +01:00
Tobias Skarhed 9a67e94618 StatPanel: Return base color when there is no value set (#22690) 2020-03-10 16:57:23 +01:00
Carl Bergquist 5f94d31da9 Send jsondata for Datasources on DatasourceConfig for backend plugins (#22681)
ref https://github.com/grafana/grafana-plugin-sdk-go/pull/84
2020-03-10 15:18:27 +01:00
Ivana Huckova 62c824e3a4 Explore: Rich History (#22570)
* Explore: Refactor active buttons css

* Explore: Add query history button

* WIP: Creating drawer

* WIP: Create custom drawer (for now)

* Revert changes to Drawer.tsx

* WIP: Layout finished

* Rich History: Set up boilerplate for Settings

* WIP: Query history cards

* Refactor, split components

* Add resizability, interactivity

* Save history to local storage

* Visualise queries from queryhistory local storage

* Set up query history settings

* Refactor

* Create link, un-refactored verison

* Copyable url

* WIP: Add slider

* Commenting feature

* Slider filtration

* Add headings

* Hide Rich history behind feature toggle

* Cleaning up, refactors

* Update tests

* Implement getQueryDisplayText

* Update lockfile for new dependencies

* Update heading based on sorting

* Fix typescript strinctNullCheck errors

* Fix Forms, new forms

* Fixes based on provided feedback

* Fixes, splitting component into two

* Add tooltips, add delete history button

* Clicking on card adds queries to query rows

* Delete history, width of drawers

* UI/UX changes, updates

* Add number of queries to headings, box shadows

* Fix slider, remove feature toggle

* Fix typo in the beta announcement

* Fix how the rich history state is rendered when initialization

* Move updateFilters when activeDatasourceFilter onlyto RichHistory, remove duplicated code

* Fix typescript strictnull errors, not used variables errors
2020-03-10 15:08:15 +01:00
Torkel Ödegaard da37f4c83f XSS: Fixed history XSS issue (#22680) 2020-03-10 14:56:27 +01:00
Erik Sundell cd012bdfb4 Fix caching problem (#22473) 2020-03-10 14:10:48 +01:00
Shavonn Brown 65370c5443 on update for checkbox and switch (#22656)
* on update for checkbox and switch

* use ? instead
2020-03-10 08:45:08 -04:00
Tobias Skarhed 7598d3fb43 Notification Channel: Make test button wider (#22653)
* Remove width
2020-03-10 13:17:03 +01:00
Marcus Efraimsson c12245bbb3 Backend plugins: Updates due to changes in SDK (#22649)
Use v0.20.0 of SDK
2020-03-10 12:59:03 +01:00
Dominik Prokop 805abdfa2a Make sure commit hook in FieldPropertiesEditor is invalidated when value changes (#22673) 2020-03-10 12:45:51 +01:00
Rob McGuire 17a14a8a48 Docs: Plugin.json: Fix property descriptions, add missing properties, add example (#22281)
* Fix property descriptions, add missing properties

Fixes incorrect property descriptions, adds missing properties, and adds an up-to-date example.

* Update logo descriptions

Updates the "large" and "small" logo descriptions to specify SVG image type requirement, and that they may be identical

* Update docs/sources/plugins/developing/plugin.json.md
2020-03-10 11:50:14 +01:00
Miguel Carvajal 6979b44592 Alerting: Fixed bad background color for default notifications in alert tab (#22660)
* fix: remove harcoded bg color

* added default info

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-10 11:24:23 +01:00
Torkel Ödegaard 4e25823705 Webpack: Updated terser plugin (#22669) 2020-03-10 11:09:45 +01:00
Alex Khomenko 5aeb367322 Core: DashboardPicker improvements (#22619)
* Refactor the picker to FC

* Remove redundant variable

* currentDashboardId => currentDashboard

* Make isClearable configurable

* Use useAsyncFn for options loading

* Move getDashboards outside of component
2020-03-10 11:16:56 +02:00
Alex Khomenko 385be77687 Storybook: Forms.Form docs (#22654)
* Add Select error message

* Update Form docs

* Tweak examples

* Fix docs
2020-03-10 10:23:35 +02:00
Marcus Andersson cc813d71c6 Templating: Migrates some variable types from Angular to React/Redux (#22434)
* Refactor: Adds variables in state to TemplateSrv

* Refactor: Introduces some typings and structures

* Refactor: Introduces picker to adapter

* Refactor: Removes useState and introduces contains instead

* Refactor: Introduces Variable Editor

* Refactor: Adds uuid and simplifies state

* Refactor: Consolidates to VariableRenderer

* Refactor: Adds name change capability

* Refactor: Adds variableMiddleware

* Refactor: Adds ability to change Angular type to type in State

* Fix: Fixes so we check for duplicate names

* Refactor: Adds ability to change State type to type in Angular

* Refactor: Updates name in dashboard templating list

* Refactor: Adds label change to VariableEditor

* Refactor: Adds hide change to VariableEditor

* Refactor: Adds update ability

* Refactor: Adds tooltip

* Refactor: Adds SelectionOptionsEditor

* Refactor: Adds query editor and validation

* Refactor: Adds regex and sort to editor

* Refactor: Adds Selection options

* Refactor: Adds Varible Values Previewer

* Refactor: Changes from array in state to Record

* Refactor: Removes getVariableAtIndex from templateSrv

* Tests: Fixs broken tests

* Chore: Fixes duplicate merge import

* Refactor: Removes strict null errors

* Refactor: Adds duplicate variable

* Refactor: Adds remove variable

* Refactor: Adds change order of variables

* Refactor: Adds add new variable

* Chore: Fixes Prettier formatting

* Refactor: Adds VariablePicker

* Fixed so sub menu is displayed when we only have redux template variables.

* removed unused variable.

* tags will be visibile in the new react picker.

* added some nice colors to the tags.

* Added thunk for selecting a tag.

* Refactor: Cleans up templating state when dashboard unloads

* Refactor: Adds save capabilities for variables in state

* added possibility to select tag.

* Added so you can deselect a tag.

* Fixed issue with coloring on top.

* minor refactoring to make the code more slim.

* Refactor: Fixes dispatch return and copy of variable

* selecting options when tag i selected

* small refactoring.

* fixed so we use options.

* Refactor: Adds getValueForUrl capabilities

* first implementation of keyboard navigation on picker.

* removed comment.

* fixed so you can toggle all options.

* Refactor: Simplified state handling using Redux Toolkit and flat reducer structure

* Refactor: Adds sharedTemplatingReducer and queryVariableReducer

* Tests: Fixs broken tests

* Chore: Removes some strict null errors

* Tests: Fix broken tests

* Refactor: Splitted QueryVariablePicker into smaller components

* Refactor: Moves linktext and selected tags to component instead

* Fix: Fixes the ability to have multiple dropdowns opened at same time

* Fix: Fixes onKeyDown from prev refactor

* Refactor: Adds searchfilter searching

* Tests: Fixes after running e2e tests

* Refactor: Adds an attempt to solve dependencies at startup

* Refactor: Adds feature toggle

* Refactor: Resets all angular files to master

* Refactor: Move stuff to query folder

* Refactor: Initial commit for SubMenu component

* Refactor: Updated DashboardModel with new list

* Refactor: Adds feature toggle to dashboard model and friends

* Refactor: Adds picker to SubMenu

* Refactor: Fixes styling on SubMenu

* Refactor: Fixes processvariables

* Refactor: Initial EditorList skeleton

* Refactor: Refactors out VariableEditorList and VariableEditorContainer

* Refactor: Adds New variable functionality

* Refactor: Adds registred types

* Refactor: Adds edit existing variable functionality

* Refactor: Changes params to thunks

* Refactor: Small fix for cleaning up state when clicking update/add

* Refactor: Better typings for outer containers

* Refactor: Adds change order functionality

* Refactor: Removed notify angular args

* Change so the url is in sync with the redux template variables.

* Adding support for saving proper values and checking changes.

* Refactor: Adds duplicate variable functionality

* Feature: Adds remove variable functionality

* Refactor: Small refactor so e2e tests work as before

* Refactor: Returns null if no visible variables

* Refactor: Adds annotations to SubMenu

* Refactor: Fixes toggling of annotations in SubMenu

* added dashboard links to new submehu.

* Refactor: Small refactor breaking up into smaller components

* Fix: Fixes infinite recursive loop when changing varible name

* Templating: Do not mutate location query state

* Refactor: Fixes minor timing issue when adding new variable

* Refactor: removes initialization in variable_srv constructor

* Refactor: Suggestion on how to handle templating.list in DashboardExporter

* Refactor: Adds getVariables typings and changes ChangeTracker and ShareSnapshotCtrl

* Refactor: Adds getVariable on DashboardModel and changes DashboardMigrator

* Fix: Fixes repeated panels

* wip: starting to add custom variable type.

* Refactor: Merging two different toVariablePayload functions

* Tests: Fixes broken tests

* Fix: Reduces strict null errors

* Tests: Initial commit and fixes strange dependency order

* Tests: Covers sharedTemplatingReducer with tests

* Refactor: Rename state/index.ts => state/reducers.ts as every where else

* Refactor: Renames and moves adapters.ts

* Tests: Adds tests for templatingReducer

* Tests: Adds intitial tests for queryVariableReducer

* starting to ad custom variable.

* Tests: Adds more queryVariableReducer tests

* Added support for custom variable. Next up applying some DRY principles and refactoring.

* fixed compile issue.

* added todo.

* Tests: Fixes broken test

* Tests: Covers queryVariableReducer with tests and fixed a couple of bugs

* Fix: Fixes broken test

* Fix: Reduces strict null errors

* change so custom won't be depending on anything elese.

* fixed descriptions.

* removed unused dependency.

* Fixed issue when adding a new variable and editor is being unmount twice.

* fixed issue with select option loop.

* changed so we update query on typing in editor and removed it from component state.

* Moved runQuery up one level in the component tree.

* renamed action and moved it to custom actions.

* moved applyStateChanges to shared code.

* removed todo comment.

* first stab on moving picker to more general.

* Refactor: Changes so we always show variables type

* removed duplicate code regarding picker.

* Did some renamings.

* Feature: Adds text box variable type

* moved tests from query reducer to picker reducer.

* Removed picker from VariableState.

* removed reference to picker.

* Some more refactorings of the picker reducer + actions.

* Chore: Refactors away editor state to its own state slice (#22515)

* Refactor: Inital move, tests not working

* Tests: Adds editorReducer tests

* Refactor: Cleaning up

* Refactor: Moves logic to thunk instead

* Refactor: Initial commit

* Refactor: Combines reducers to one state

* Refactor: Adds combine reducers

* moved navigation logic flow to a thunk instead of in the component.

* fixed issue with rendering picker link.

* Refactor: Removes variable prop from templating.variables

* refactored and removed some more code.

* Feature: adds Constant variable type

* fixed so tags can be selected.

* Fix: fixes default hide for constant and enum order

* fixed so tags works again.

* Fix: fixes so we use Angular editor when newVariables is not defined

* Fix: fixes wrong hide default for Constant variable

* Fix: fixes bug when using duplicate button

* Fix: changes action id

* Tests: prepares for newVariables

* Chore: reduces strict null errors

* Refactor: removes uuidInEditorReducer for simplification

* Chore: changes after PR comments

* Chore: uses getConfig instead of config

* Tests: fixes so e2e tests check for feature toggle and fixed initLock bug

* Refactor: changes so sharedReducer uses createSlice instead

* Refactor: changes textBoxVariableReducer to use creactSlice instead

* Refactor: changes queryBoxVariableReducer to use creactSlice instead

* Refactor: changes customVariableReducer to use creactSlice instead

* Refactor: changes constantVariableReducer to use creactSlice instead

* Refactor: moves types to specific types.ts files instead

* changed so we use queryValue stored on the variable to populate options input when opening picker.

* Feature: adds the ability to test templating thunks using real store and middleware

* Chore: cleans up unused import

* excluded queryValue from the getSaveModel

* Refactor: adds whenAsyncActionIsDispatched to reduxTester

* Tests: adds initial tests for processVariables

* Added reducer tests for constant variable.

* added tests for custom reducer.

* added tets for texbox reducer.

* Tests: adds more tests for ProcessVariable

* Refactor: fixes processVariable flow so we do notrun updateOptions twice

* Tests: finishes tests for processVariables and removed skip test

* added actions tests for custom and constant.

* Tests: adds tests for setOptionFromUrl

* Tests: adds a naive variable mock builder

* Tests: adds tests for validateVariableSelectionState

* added tests for query variable actions.

* added last test for query actions.

* added more tests.

* some more tests.

* fixed typing errors.

* Fixed issues with variable tags.

Co-authored-by: Hugo Häggmark <hugo.haggmark@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-10 08:53:41 +01:00
Alex Khomenko 88c3b719a1 Grafana UI: Fix Forms.Select onChangeWithEmpty (#22647)
* Sort props

* Add missing deps to useCallback
2020-03-10 08:41:38 +02:00
Chad Nedzlek 0e7c746a87 Azure Monitor: Fix app insights source to allow for new __timeFrom and __timeTo (#21879)
* Fix app insights source to allow for new __timeFrom and __timeTo

* Try fixing the switch
2020-03-10 00:55:41 +01:00
Steven Vachon cd42b31da5 @grafana/e2e: install necessary dependencies for published package (#22657) 2020-03-09 14:16:09 -04:00
Dominik Prokop 0304493bd2 DashboardSave: Correctly overwrite dashboard when saving (#22650) 2020-03-09 18:16:10 +01:00
Torkel Ödegaard 5d8fc6a1a9 StatPanel: Fixes base color is being used for null values (#22646)
* StatPanel: Fixed color for null values

* StatPanels: Show base value for null values
2020-03-09 17:00:25 +01:00
Dominik Prokop 9d858220ce FieldOverrides: Add value mappings editor to standard config properties registry (#22648) 2020-03-09 15:09:32 +01:00
hutuxian 9716289196 Docs: Update gauge.md (#22637)
Update the hierarchy of gauge.md
2020-03-09 08:19:05 +01:00
Diana Payton e6aac7a36c Docs: Create Intro grafana (#22522)
* Create add-a-data-source.md

* Added links to Add a data source

* Create intro-to-grafana.md

* Updated menu and files

* fixed link

* Update dashboards.md

* Updated enterprise links

* Update _index.md

* Update intro-to-grafana.md

* added content and links

* Update menu.yaml

* fixing links

* fixing links

* Update menu.yaml

* Updated index.md and what is grafana

* changed topic title

* Update getting_started.md

* Updated content

* Update docs/sources/guides/intro-to-grafana.md

Co-Authored-By: Marcus Olsson <accounts+github@marcus.se.net>

* Update docs/sources/guides/intro-to-grafana.md

Co-Authored-By: Marcus Olsson <accounts+github@marcus.se.net>

* Update docs/sources/guides/intro-to-grafana.md

Co-Authored-By: Marcus Olsson <accounts+github@marcus.se.net>

* Update intro-to-grafana.md

* changed file name

* Update _index.md

* Minor edits

* Update menu.yaml

* Update what-is-grafana.md

* Update what-is-grafana.md

* Fix: updates snapshots

* Revert "Fix: updates snapshots"

Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
Co-authored-by: Lukas Siatka <lukasz.siatka@grafana.com>
2020-03-06 13:06:30 -08:00
Ryan McKinley 46fcf9bf08 Toolkit: wrap plugin signing stub with error checking (#22626) 2020-03-06 10:51:48 -08:00
Steven Vachon aa7e6cf55f @grafana/e2e: fix empty bundle files (#22607)
* Minor changes

* Revert CLI to JavaScript

... as Rollup is only accepts ESM modules and TypeScript would need to use the new incremental builds feature which causes weird Redux module errors.
2020-03-06 12:25:55 -05:00
Stephanie Closson 3745cccde6 Toolkit: include a github release utility (#22520)
* Adding git publish to toolkit

* grafana-toolkit new feature plugin:github-release

* Feedback from code review
1. Used async await and exec for executing commands
2. Using dist folder to get plugin information

* Reverting change to plugin.json back to original value.

* reverted changes to yarn.lock

* reverted changes to yarn.lock

* feedback from code review

* feedback from code review 2

* moved constants to recommended functions

* styling changes and reverting yarn.lock

* removing changes to package.json

* replced execLine with execa

* better error detection around the publish token

* made simpler with commitHash from build

* Testing showed a number of required changes:
- Make the sha configurable
  or through environment variable
  or through git config.
- Allow a release to be recreated
- Set name and repo from git config as this is what
ghr is expecting anyway.
- Appropriate errors if the user
  tries to run a release without
  doing a ci-build and ci-package first.

* Using spinner.
Took out extra dependencies out of project.json
wrote tests manually.

* Updated tests. Now passing

* Adding git publish to toolkit

* grafana-toolkit new feature plugin:github-release

* Feedback from code review
1. Used async await and exec for executing commands
2. Using dist folder to get plugin information

* Reverting change to plugin.json back to original value.

* reverted changes to yarn.lock

* reverted changes to yarn.lock

* feedback from code review

* feedback from code review 2

* moved constants to recommended functions

* styling changes and reverting yarn.lock

* removing changes to package.json

* replced execLine with execa

* better error detection around the publish token

* made simpler with commitHash from build

* Testing showed a number of required changes:
- Make the sha configurable
  or through environment variable
  or through git config.
- Allow a release to be recreated
- Set name and repo from git config as this is what
ghr is expecting anyway.
- Appropriate errors if the user
  tries to run a release without
  doing a ci-build and ci-package first.

* Using spinner.
Took out extra dependencies out of project.json
wrote tests manually.

* Updated tests. Now passing

* updated test for reducers, from master

* package.json and yarn.lock from master
2020-03-06 10:15:04 -07:00
Torkel Ödegaard 5a53c2d02b Rendering: Have phantomjs wait a bit before rendering to give fonts a change to load (#22623) 2020-03-06 17:55:13 +01:00
Torkel Ödegaard 917860c4d3 Cascader: Do not override default width behavior (#22620)
* Cascader: Do not override default width behavior

* Fixed storybook
2020-03-06 16:21:46 +01:00
Diana Payton 733450c7b7 Update documentation-style-guide.md (#22581)
Added link to Google tech writing courses
2020-03-06 06:50:23 -08:00
Carl Bergquist 1dcfaf25fc Adds signed in user to backend v2 plugins requests (#22584)
closes #12043
2020-03-06 14:37:36 +01:00
Jeet Parekh c73a0007c7 CloudWatch: updated namespaces - Athena, DocDB, and Route53Resolver (#22604) 2020-03-06 10:41:29 +02:00
jonghyeon 0f6769665a Graph: Improve point rendering performance (#22610)
this PR improves canvas rendering performance in drawSeriesPoints
2020-03-06 09:26:15 +01:00
Lukas Siatka 99daa4454b Alerting: Fix state age test failures (#22606)
- use output from relative time instead of static string to prevent
clock issues
2020-03-06 00:28:20 +01:00
Diana Payton 6af45bf4ac Docs: Update image_rendering.md (#22586)
Trying to fix the numbering in Run as standalone Node.js application.
2020-03-05 14:03:40 -08:00
Erik Sundell 5ad8a9722e UI: Segment improvements (#22601)
* Trigger onchange in case user has edited a custom option, and then clicked outside the react select dropdown

* The width of the label is calculated so that the react select input field could get the same width. However, the react select input font is slightly wider, so we need to make that width a little bit larget than the label.
2020-03-05 20:19:43 +01:00
Carl Bergquist 0b86a371bb remove section about alias imports (#22585)
this is not relevant anymore since we removed
all aliased imports.
2020-03-05 19:51:14 +01:00
Marcus Efraimsson 4ff613a432 Backend Plugins: Support handling of streaming resource response (#22580)
Use v0.19.0 of SDK.
Support handling of streaming resource response.
Disable gzip/compression middleware for resources 
to allow chunked/streaming response to clients the gzip
middleware had to be disabled since it buffers the full
response before sending it to the client.

Closes #22569

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
2020-03-06 01:44:07 +07:00
Daniel Lee f95c8b785c Stackdriver: Migrate GCE default project (#22593)
* Ensure default project

* Remove debug logging

* Fix broken test

* Update snapshot
2020-03-05 17:53:41 +01:00
Ryan McKinley e688f13535 Toolkit: plugin ci needs to cooperate better with make/mage (#22588)
* cleanup

* cleanup
2020-03-05 06:06:06 -08:00
Erik Sundell 0f8cfca4e6 surround CloudWatch dimension names with double quotes (#22222) 2020-03-05 14:15:45 +01:00
Marcus Andersson d227353321 Fix: when reloading page make sure that time picker history is converted to dateTime. 2020-03-05 13:14:42 +01:00
Agnès Toulet ea3d368e91 Core: add active users stat (#22563)
* Stats: add active user count query

* License: add info in settings

* Stats: Retrieve active users stats for different roles

+ Clean files and tests

* Stats: add dialect.Quote in queries

* Stats: improve tests (require instead of assert)

* Stats: improve tests (require instead of assert)
2020-03-05 12:34:44 +01:00
Marcus Efraimsson c6cc840ceb Chore: Modules tidy and vendor (#22578) 2020-03-05 00:45:05 +01:00
David 54a3f5fd87 Loki: use series API for stream facetting (#21332) 2020-03-04 17:17:02 +01:00
Marcus Efraimsson 2cf538a466 Testing code owners for backend code (#22572) 2020-03-04 17:08:07 +01:00
Shavonn Brown b27985ef38 Azure Monitor: config editor updates, update sameas switch, fix test snaps (#22554)
* azure monitor config editor updates, do not show helper for sameas unless just switched, not create

* update snapshots
2020-03-04 09:11:11 -05:00
Alex Khomenko c5ceae3808 Grafana-UI: Use value for Radio group id (#22568) 2020-03-04 15:31:01 +02:00
Alexander Zobnin e1af933d4a Chore: fix moment import in alerting tests (#22567)
* Chore: disable no-restricted-imports rule for moment

fix enterprise build

* Chore: get rid of moment, use dateTime in alerting tetst
2020-03-04 15:47:23 +03:00
Carl Bergquist 766d8a5888 avoid aliased import in cli (#22566) 2020-03-04 13:18:13 +01:00
Carl Bergquist 3fdd2648b1 Chore: Avoid aliasing importing models in api package (#22492) 2020-03-04 12:57:20 +01:00
Alexander Zobnin fcaff011b1 ShareModal: able to extend tabs (#22537)
* ShareModal: use generic tab type

* ShareModal: able to extend with custom tabs

* ShareModal: able to extend dash/panel tabs separately

* grafana-ui: ModalTabContent component
2020-03-04 12:59:30 +03:00
Alexander Zobnin 9731ea9b89 Tests: fix alerting reducers tests (#22560) 2020-03-04 12:39:56 +03:00
Emil Tullstedt 3c6a7a51bf Logs: Improve log level guess (#22094)
Fixes #22075
2020-03-04 09:48:21 +01:00
Ryan McKinley 5166073f98 DataSourceWithBackend: apply template variables (#22558) 2020-03-03 22:27:58 -08:00
Steven Vachon ee5fcc03df @grafana/e2e: added support for plugin repositories (#22546)
* Minor changes

* Include Cypress support files in published package

* Added CLI

… with support for custom configurations (which Cypress does not currently support by default):

  * Loads cypress.json from @grafana/e2e as a base config (via a custom Cypress plugin)
  * Sets default values for project-level Cypress files (tests, etc)
  * Optionally loads a cypress.json from the current working directory as overrides

* Updated lockfile
2020-03-03 18:12:52 -05:00
Ricardo c3884abf62 Add fallback to search_base_dns if group_search_base_dns is undefined. (#21263)
* Add fallback to search_base_dns if group_search_base_dns is undefined.

refs: #20862

* removed newline to make lint-go happy

* Added requested changes on ldap.md for last commit

Refs: #21263
2020-03-03 09:11:16 -08:00
Joseph Robinson b24c7cdd64 Docs: Added a Markdown Style Guide (#22425)
* Docs: Adding a Markdown Style Guide

What this PR does / why we need it: This request builds a markdown style guide for writers documenting information about Grafana services for users.
This PR serves the need to make documentation and READMEs more consistent and maintainable.

Which issue(s) this PR fixes: This request fixes the issue grafana#19592

Fixes grafana#19592

Special notes for your reviewer:

@marcusolsson and @oddlittlebird, sorry for the delay. I've set up the style guide, and it is ready for review, or additional sections.

* Docs: Adding a Markdown Style Guide

What this PR does / why we need it: This request builds a markdown style guide for writers documenting information about Grafana services for users.
This PR serves the need to make documentation and READMEs more consistent and maintainable.

Which issue(s) this PR fixes: This request fixes the issue grafana#19592

Fixes grafana#19592

Special notes for your reviewer:

@marcusolsson and @oddlittlebird, sorry for the delay. I've set up the style guide, and it is ready for review, or additional sections.

* Docs: fixing typos and char repetition

Editing some typos in the text, and removing the repetition of A and B characters that appeared in the file.

* Docs: Changing content following review of new Markdown Style Guide

- adjustment to headings to sentence case.
- adding an introduction
- removing punctuation content
- making suggested word and punctuation fixes

Fixes #19592
2020-03-03 09:06:00 -08:00
Tobias Skarhed 98418ea55f Old AsyncSelect: Add story (#22536)
* Change to CSF

* Remove comments

* Fix AsyncSelect error

* Remove changes to the component

* Restructure

* Remove comments

* Add searching

* Remove witespace

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

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-03-03 17:06:57 +01:00
Alexander Zobnin 3aa3fa3ee1 Chore: add missing aria-label for rendered panel image (e2e tests) (#22543) 2020-03-03 18:51:49 +03:00
Alex Khomenko 3a5375ddd8 Form migrations: Dashboard- and TimeZonePicker (#22459)
* Add new form styles to dashboard picker

* Use Forms.Select for TimeZonePicker

* Use new form elements for DashboardPicker

* Grafana UI: Extract types from SelectBase, add utils.ts

* Grafana UI: Fix imports

* Grafana UI: Add support for value of type number

* Grafana UI: tweak value search function

* Grafana UI: Add tests for findSelectedValue

* Grafana UI: Add tests for cleanValue

* Grafana UI: Remove redundant check

* Grafana UI: Order imports

* Grafana-UI: Fix TimeZonePicker.story.tsx

* Grafana-UI: Fix timezone value

* Fix merge

* Grafana-UI: Use Cascader vs Forms.Select for TimeZonePicker

* Grafana-UI: Add default size props
2020-03-03 15:09:52 +01:00
Alexander Zobnin d66e72fa67 Migration: Share dashboard/panel modal (#22436)
* ShareModal: refactor dashboard export modal

* Modal: show react modals with appEvents

* ShareModal: embed panel tab

* ShareModal: bind to shortcut (p s)

* grafana-ui: ClipboardButton component

* ShareModal: use ClipboardButton component

* ClipboardButton: add to storybook

* ShareModal: use event-based approach for dashboard share

* ShareModal: remove unused

* ModalReact: pass theme to the component

* ShareModal: styles clean up

* DashboardExporter: fix tests

* fixed whitespace betwen icon and link

* ShareModal: use theme from config

* Modal: tab header refactor

* ShareModal: tests

* ShareModal: fix share url rendering

* ShareModal: remove unused angular files

* Chore: fix strictNullChecks errors

* Modal: provide theme for event-based modal usage

* ShareModal: use ModalsController for opening modal

Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-03-03 15:04:28 +03:00
Tobias Skarhed 87da6a293b Revert "Select: scroll into view when navigate with up/down arrows (#22503)" (#22535)
This reverts commit 75fe3c839b.
2020-03-03 11:51:17 +01:00
Marcus Efraimsson e6cec8dbdc Backend plugins: Prepare and clean request headers before resource calls (#22321)
Moves common request proxy utilities to proxyutil package with
support for removing X-Forwarded-Host, X-Forwarded-Port,
X-Forwarded-Proto headers, setting X-Forwarded-For header
and cleaning Cookie header.
Using the proxyutil package to prepare and clean request
headers before resource calls.

Closes #21512
2020-03-03 11:45:16 +01:00
Tobias Skarhed 8b122ee464 Cascader: Add size for input (#22517) 2020-03-03 10:34:42 +01:00
Ryan McKinley f09ee3d8c2 ArrowDataFrame: allow empty results (#22524) 2020-03-02 23:56:01 -08:00
Dominik Prokop baa356e26d Migration: Save dashboard modals (#22395)
* Add mechanism for imperatively showing modals

* Migration work in progress

* Reorganise save modal components

* use app events emmiter instead of root scope one

* Add center alignment to layoout component

* Make save buttons wotk

* Prettier

* Remove save dashboard logic  from dashboard srv

* Remove unused code

* Dont show error notifications

* Save modal when dashboard is overwritten

* For tweaks

* Folder picker tweaks

* Save dashboard tweaks

* Copy provisioned dashboard to clipboard

* Enable saving dashboard json to file

* Use SaveDashboardAsButton

* Review

* Align buttons in dashboard settings

* Migrate SaveDashboardAs tests

* TS fixes

* SaveDashboardForm tests migrated

* Fixe some failing tests

* Fix folder picker tests

* Fix HistoryListCtrl tests

* Remove old import

* Enable fixed positioning for folder picker select menu

* Modal: show react modals with appEvents

* Open react modals using event

* Move save dashboard modals to dashboard feature

* Make e2e pass

* Update public/app/features/dashboard/components/SaveDashboard/SaveDashboardButton.tsx

* Hacking old vs new buttons to make all the things look like it's old good Grafana ;)

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>
2020-03-03 08:22:26 +01:00
Ryan McKinley cc638e81f4 Toolkit: don't clean dist folder before build (#22521) 2020-03-02 11:29:09 -08:00
Tobias Skarhed 2483efb8c5 Docs: Add Storybook guidelines (#22465)
* Add Storybook guidlines

* Make lists

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Update contribute/style-guides/storybook.md

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

* Apply suggestions from code review

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

* Update docs with feedback

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-03-02 20:11:04 +01:00
Marcus Andersson 29a8417c93 Docs: Removed menu links to SDK Reference until we are ready for 7.0 (#22509) 2020-03-02 15:49:44 +01:00
Erik Sundell 934a8f08ae Stackdriver: Project selector (#22447)
* clean PR #17366

* udpate vendor

* [WIP] Implement projects management for stackdriver

* [WIP] Implement projects management for stackdriver

* [WIP] Implement projects management for stackdriver

* Implement projects management for stackdriver

* [WIP][Tests] Fix errors

* clean anonymous struct

* remove await

* don't store project list

* Add default project on query editor

* gofmt

* Fix tests

* Move test data source to backend

* Use segment instead of dropdown. remove ensure default project since it's not being used anymore.

* Fix broken annotation editor

* Load gceDefaultAccount only once when in the config page

* Reset error message on auth type change

* Add metric find query for projects

* Remove debug code

* Fix broken tests

* Fix typings

* Fix lint error

* Slightly different approach - now having a distiction between config page default project, and project that is selectable from the dropdown in the query editor.

* Fix broken tests

* Attempt to fix strict ts errors

* Prevent state from being set multiple times

* Remove noOptionsMessage since it seems to be obosolete in react select

* One more attempt to solve ts strict error

* Interpolate project template variable. Make sure its loaded correctly when opening variable query editor first time

* Implicit any fix

* fix: typescript strict null check fixes

* Return empty array in case project endpoint fails

* Rename project to projectName to prevent clashing with legacy query prop

* Fix broken test

* fix: Stackdriver - template replace on filter label

should have a regex format as that escapes the dots
in the label name which is not valid.

Co-authored-by: Labesse Kévin <kevin@labesse.me>
Co-authored-by: Elias Cédric Laouiti <elias@abtasty.com>
Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
2020-03-02 09:31:09 -05:00
Boyko 75fe3c839b Select: scroll into view when navigate with up/down arrows (#22503)
* scroll into view when move item up/down

Signed-off-by: blalov <boiskila@gmail.com>

* update test snapshots

Signed-off-by: blalov <boiskila@gmail.com>
2020-03-02 12:17:39 +01:00
Chadi El Masri 3c21a37bbe Elastic: To get fields, start with today's index and go backwards (#22318)
* Elastic: To get fields, start with today's index and go backwards

* Elastic: distinguish non-existing indices from other issues; change index traversal from recursive to iterative; go through a max of 7 days

* Elastic: fix the comments

Co-authored-by: Andrej Ocenas <mr.ocenas@gmail.com>
2020-03-02 10:45:31 +01:00
Mohit Gupta 94951df1c1 API: Include IP address when logging request error (#21596)
Includes IP address when logging request error, for example 
when a user fails to login.

Fixes #21310
2020-03-02 09:43:16 +01:00
Carl Bergquist f9962eabff chore: avoid aliasing imports in services (#22499) 2020-02-29 13:35:15 +01:00
Alex Khomenko a8531978b6 Grafana-UI: add storysource addon to Storybook (#22490)
* Add @storybook/addon-storysource

* Enable the addon

* Fix Select label

* Lock storysource version
2020-02-28 18:44:18 +02:00
Shavonn Brown 0c020f222e canary 404 previous versions (#22495) 2020-02-28 11:27:45 -05:00
Steven Vachon 0f06200a9d Fix Dockerfile lint errors (#22496) 2020-02-28 16:27:49 +01:00
Tobias Skarhed 768911a6f9 Migration: Invite Signup (#22437)
* Inital commit with new page

* Make routing work

* Correct field

* Move submit button and fix routing after signup

* Remove comments

* Fix feedback

* Undo mistake
2020-02-28 15:45:00 +01:00
Agnès Toulet 1db26d354f Core: add hideFromMenu for child items (#22494) 2020-02-28 15:09:55 +01:00
lfroment 72628c8ea0 Dashboard: Adds support for a global minimum dashboard refresh interval (#19416)
This feature would provide a way for administrators to limit the minimum 
dashboard refresh interval globally.
Filters out the refresh intervals available in the time picker that are lower 
than the set minimum refresh interval in the configuration .ini file
Adds the minimum refresh interval as available in the time picker.
If the user tries to enter a refresh interval that is lower than the minimum 
in the URL, defaults to the minimum interval.
When trying to update the JSON via the API, rejects the update if the 
dashboard's refresh interval is lower than the minimum.
When trying to update a dashboard via provisioning having a lower 
refresh interval than the minimum, defaults to the minimum interval 
and logs a warning. 

Fixes #3356

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-02-28 14:32:01 +01:00
Torkel Ödegaard 1db8849e51 CI: Deploy enterprise image (#22488) 2020-02-28 13:22:38 +01:00
Carl Bergquist 63fe7fd8c7 changelog: adds note about breaking change (#22480) 2020-02-28 12:51:53 +01:00
Carl Bergquist 67ec9edcc8 chore: avoid alias for models in plugins (#22483) 2020-02-28 12:51:21 +01:00
Carl Bergquist f2f2722bb1 chore: avoid aliasing models in middleware (#22484) 2020-02-28 12:50:58 +01:00
Alex Khomenko 8b9b67f248 Grafana UI: Add missing argument (#22487) 2020-02-28 13:09:21 +02:00
Torkel Ödegaard c002a39456 NewPanelEditor: Angular panel options, and angular component state to redux major change (#22448)
* NewPanelEdit: Added angular options to new panel editor and started looking and angular component state

* Moved angular component state to redux

* Close to working 100%

* Think everything is working

* AlertTab: Alert tab now gets angularComponent from redux

* Fixed panel menu access to angular panel component

* Added new tests

* Fixed unit test

* Fixed strict null errors

* Fixed typescript issues

* fixed issues
2020-02-28 11:04:40 +01:00
Ivana Huckova 60dbf72820 @grafana/ui: Create slider component (#22275)
* grafana/ui: Create slider

* grafana/ui: Create slider, tests, add to storybook

* Update Slider, minor changes

* Implement single value slider

* Update style

* Update packages/grafana-ui/package.json

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

* Update packages/grafana-ui/src/components/Slider/Slider.tsx

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

* Update slider, include PR review feedback

* Update packages/grafana-ui/src/components/Slider/Slider.tsx

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

* Update packages/grafana-ui/src/components/Slider/Slider.tsx

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

* Export orientatin types, gix selectability of tooltip text

* Remove Orientation export from grafana/ui

* Testing Global component to inject global styles

* Add comments

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-28 11:02:31 +01:00
Agnès Toulet 646b74efbb Icons: add reports icon (#22445) 2020-02-28 09:51:03 +01:00
Peter Holmberg 3f7b058bea Panel inspect: Horizontal scrolling in Data table (#22245)
* First try at horizontal scrolling

* move width logic to table

* Update packages/grafana-ui/src/components/Table/Table.tsx

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

* wrap table with memo

* fix typo

* re add field

* WIP: Table scrolling troubles

* Annother approach

* Think it's working

* Removed unnessary change

* Table: Added custom scrollbar for horizontal scrolling

* Removed console log and fixed test

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-02-28 09:26:20 +01:00
Vikky Omkar 066d5cf4da Alerting: Fixed the issue/bug of diff and percent_diff functions *Breaking change* (#21338)
fixes #16270 #10129
2020-02-27 20:25:03 +01:00
Ryan McKinley 0606555ba1 App Plugins: support react pages in nav (#22428) 2020-02-27 09:10:21 -08:00
Steven Vachon 2b6a88bf59 Optimized package.json files (#22475)
* Used repository shortcut syntax where possible
* Added repository directories for monorepo packages
* Alphabetically sorted npm scripts
2020-02-27 12:00:36 -05:00
Ryan McKinley 63c6fc5f4e Toolkit: add junit reporting and jest.config.js to plugin build (#22450) 2020-02-27 08:53:59 -08:00
Alex Khomenko 62d86c956f Grafana UI: Add forwardRef (#22466) 2020-02-27 12:24:36 +02:00
Diana Payton f92f657f17 Docs: Update Getting started (#22422)
* Rewrite getting started

Added Intro to grafana file

* Update getting_started.md

* Delete intro-to-grafana

* Adding and organizing intro content

* Update intro-to-grafana.md

* Update intro-to-grafana.md

* More work on geting started

* Update getting_started.md

* Update getting_started.md

* Update getting_started.md

* updated links

* Update dashboards.md

* Update dashboards.md

* Update getting_started.md
2020-02-26 10:39:47 -08:00
Martin cffcc95be0 pkg/api/pluginproxy: Access token provider should handle access tokens without ExpiresOn field (#19928)
* pkg/api/pluginproxy: Add support for expire_in field in access-token

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-26 15:59:02 +01:00
Marc-Antoine Leclercq 67a7e03615 Documentation: Specify usage of datasource whitelist (#22412)
* Specify usage of datasource whitelist

Added a sentence explaining the data_source_proxy_whitelist  property does not have any effect on pgsql mssql and mysql.

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-Authored-By: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-02-26 15:57:11 +01:00
Dominik Prokop 22ce16cc9b Form: Allow default values updates (#22435)
* Allow default values update in form

* Update packages/grafana-ui/src/components/Forms/Form.story.tsx
2020-02-26 14:17:21 +01:00
Torkel Ödegaard 712253fbee NewPanelEditor: Wait a bit before resending query result on panel editor exit (#22421) 2020-02-26 13:39:23 +01:00
Alex Khomenko bb6a6d795f Grafana-UI: update date picker (#22414)
* Grafana UI: Add new styles

* Grafana UI: add picker focus styles

* Grafana UI: use formInputBg

* Grafana UI: remove extra box-shadow

* Grafana UI: Tweak overlay position

* Grafana UI: Tweak overlay borders

* Grafana UI: Align overlay with input
2020-02-26 13:56:01 +02:00
Arve Knudsen eb98d9c15b grafana-cli: Upgrade to urfave/cli v2 (#22402)
* grafana-cli: Upgrade to urfave/cli v2
2020-02-26 12:27:31 +01:00
Marcus Andersson 6bc369629d Docs: adding first version of the auto-generated packages API docs. (#22107)
* trying out api-extractor.

* works with our setup of build.

* wip.

* changed the packages so it works better with the api-extractor.

* Changes to make the api-extractor to work.

* cleaned up the api-extractor config files.

* added some more documentation.

* added tsdoc-metadata to gitignore.

* removed the generated docs (will do that in another PR).

* added execute permission to script for generating dosc.

* added so we will push generated docs to branch.

* will clean packages_api on abort.

* Fixed failing tests.

* fixed formatting issue with typedoc comment.

* temporarily disabled tslint rules about namespace until https://github.com/microsoft/rushstack/issues/1029 is resolved

* temporary enabled bable namespaces.

* updated build script.

* updated script.

* updated script with some colors.

* changed to camelCase.

* removed spacing.

* Starting to add documentation guidelines.

* added examples headline.

* added menu options.

* added parameters and return values.

* Fixed merge error.

* Added first version of auto-generated docs.

* changed so we use the eslint ignore syntax.

* changed to correct eslint ingnore comment.

* fixed some spelling errors reported by codespell.

* added script to generate docs in current folder.

* updated api docs.

* lerna bootstrap.

* added eror to the ingore words list.

* removed file that should be ignored.

* updated locKFILE.

* referenced the code comments guidelines.

* updated packages.

* updated deps.

* updated the autogenerated dosc.

* adding missing new line.
2020-02-26 10:03:53 +01:00
Torkel Ödegaard 89e6c45090 NewPanelEditor: Panel edit tweaks (#22415)
* NewPanelEditor: Alternative edit layout

* Fixed full height issue

* panel-edit-tabs experiment

* minor tweaks

* PanelEditor: Minor tweaks
2020-02-25 18:13:16 +01:00
Torkel Ödegaard 9272af264a NewPanelEditor: Panel edit tweaks (#22415)
* NewPanelEditor: Alternative edit layout

* Fixed full height issue

* panel-edit-tabs experiment

* minor tweaks

* PanelEditor: Minor tweaks
2020-02-25 17:58:20 +01:00
Agnès Toulet 1dd404a1fb Core: Make application title customizable for WL (#22401)
* Core: Add custom app title

* Docs: Update White Labeling title customization

* Core: set back export for Branding types
2020-02-25 15:18:37 +01:00
Marcus Andersson 204682e9b8 Fix: making select to return empty list when no values are selected in multivalue mode.
* Fixed error in storybook when remving selections.

* moved fix to select base instead of in story.

* updated to check for null or undefined.
2020-02-25 15:07:13 +01:00
Marcus Andersson 12f1af2956 Fix: Added missing "remove"-icon for light theme. 2020-02-25 14:43:15 +01:00
Marcus Andersson e2038e0614 Docs: adding API reference documentation support for the packages libraries. (#21931)
* trying out api-extractor.

* works with our setup of build.

* wip.

* changed the packages so it works better with the api-extractor.

* Changes to make the api-extractor to work.

* cleaned up the api-extractor config files.

* added some more documentation.

* added tsdoc-metadata to gitignore.

* removed the generated docs (will do that in another PR).

* added execute permission to script for generating dosc.

* added so we will push generated docs to branch.

* will clean packages_api on abort.

* Fixed failing tests.

* fixed formatting issue with typedoc comment.

* temporarily disabled tslint rules about namespace until https://github.com/microsoft/rushstack/issues/1029 is resolved

* temporary enabled bable namespaces.

* updated build script.

* updated script.

* updated script with some colors.

* changed to camelCase.

* removed spacing.

* Starting to add documentation guidelines.

* added examples headline.

* added parameters and return values.

* Fixed merge error.

* changed so we use the eslint ignore syntax.

* changed to correct eslint ingnore comment.

* fixed some spelling errors reported by codespell.

* added script to generate docs in current folder.

* lerna bootstrap.

* removed file that should be ignored.

* updated locKFILE.

* referenced the code comments guidelines.

* updated packages.

* updated deps.
2020-02-25 13:59:11 +01:00
maximka 002d2119fd Accessibility: Makes tag colors more accessible (#22398)
solves issue #22396
2020-02-25 12:27:39 +01:00
Agnès Toulet d3c50692c0 Admin: fix images on license page (#22413) 2020-02-25 12:06:46 +01:00
Ryan McKinley e4d2b6c203 DataSourceWithBackend: Add a get/post resource standard path (#22408) 2020-02-25 11:58:05 +01:00
Rob McGuire c758440c50 Docs: Fix examples, grammar, add links (#22406)
- Fix examples: syntax errors, formatting
- Add links to referenced Emotion documentation
- Fix grammar, punctuation
- Update headings: Remove top-level "Emotion", adjust others
2020-02-24 17:54:28 -08:00
Rob McGuire 798d62c605 Docs: Add links, fix grammar, formatting, wording (#22381)
* Docs: Add links, fix grammar, formatting, wording

- Add links to theme files and technology references
- Adjust formatting to be consistent, e.g., syntax highlighting, section spacing
- Fix misc grammar, punctuation
- Fix SASS -> Sass

Co-Authored-By: Arve Knudsen <arve.knudsen@gmail.com>
Co-Authored-By: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-24 23:05:56 +01:00
Leonard Gram aeab27c34c Changelog: adds missing enterprise features (#22399)
* Changelog: adds missing enterprise features

* wording
2020-02-24 16:50:09 +01:00
Agnès Toulet 7f86f2d4f3 Docs: Add info on active LDAP sync (#22347)
* Docs: Add info on active LDAP sync

* Update docs/sources/enterprise/enhanced_ldap.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

* Docs: remove usage of "he" in LDAP sync

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-02-24 10:48:07 +01:00
Torkel Ödegaard 7946eee389 Docs: Fixed formatting issue in new stat docs (#22390)
* Docs: Fixed formatting issue in new stat docs

* Fixed newline
2020-02-24 10:03:57 +01:00
Steven Vachon 3de625ef8e @grafana/toolkit: completed support for source maps in plugin builds (#22379) 2020-02-22 18:54:02 -05:00
Torkel Ödegaard 5b40b26744 UX: BackButton left arrow icon (#22369)
* Adding new svg for back arrow button

* Created new back button component

* same stroke width

* minor fix

* Style changes

* hover animation

* Minor tweak
2020-02-22 22:13:56 +01:00
Torkel Ödegaard 22eb558d80 Scrollbar: Show scrollbar on only on hover (#22386) 2020-02-22 21:09:06 +01:00
Torkel Ödegaard 1f4a04436c NewPanelEditor: Fixed cleanup that could cause crash (#22384)
* NewPanelEditor: Fixed cleanup that could cause crash

* Fixed unit test
2020-02-22 21:08:42 +01:00
Torkel Ödegaard c79e7afcbd Theme: Fixed bug in sass file (#22382) 2020-02-22 16:01:04 +01:00
Arve Knudsen bf908424a7 Alerting: Don't include image_url field with Slack message if empty (#22372) 2020-02-21 15:43:54 +01:00
Torkel Ödegaard 8c2107cd35 Docs: New doc pages for panels Stat, Gauge & Bar Gauge (#22335)
* Initial take

* inital gauge docs

* Updated and added bar gauge docs

* Updated based on feedback
2020-02-21 15:23:20 +01:00
Dominik Prokop d6ca781c49 Docs: Update front-end style guide (#22197)
* Update front end style guide

* Update contribute/style-guides/frontend.md

* Update contribute/style-guides/frontend.md

* Add code samples after review

* Update contribute/style-guides/frontend.md

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Update contribute/style-guides/frontend.md

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

* Review

* Review

* Update contribute/style-guides/frontend.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-21 07:35:54 +01:00
Sofia Papagiannaki e7a1896fae Chore: Update latest.json (#22345) 2020-02-20 08:49:05 -08:00
Arve Knudsen 9154d7013f CircleCI: Fix publishing of releases (#22342) 2020-02-20 17:24:57 +01:00
Sofia Papagiannaki 252a2fdce3 Changelog: v6.6.2 (#22341) 2020-02-20 08:01:53 -08:00
Arve Knudsen 9baec83600 CircleCI: Switch to new master build pipeline (#22158) 2020-02-20 16:09:28 +01:00
eldin 21015b0899 Docs: Update white-labeling.md (#22224) 2020-02-20 16:01:58 +01:00
Torkel Ödegaard 4f9b6c55c0 Webpack: Upgrade terser webpack plugin (#22332) 2020-02-20 11:38:37 +01:00
Alex Khomenko fa8246aa4c grafana/ui: Export TextArea under Forms namespace (#22328) 2020-02-20 10:35:14 +01:00
Mohit Nain 458eccbfc0 Suggesting couple of changes to the document (#22298)
* Suggesting couple of changes to the document

Line 15 should be modified to use your application instead of an application, same way it is being used in other auth docs.

typo in line 76, can is repeated twice . Correcting that typo

* Update docs/sources/auth/gitlab.md

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

* Update gitlab.md

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-20 10:19:39 +01:00
Mohit Nain 0418fb3f4f Correcting Line 22 (#22292)
* Correcting Line 22

Menu drop down is correct description for the control , rather than the menu that drops down

* Update docs/sources/auth/google.md

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

* Update docs/sources/auth/google.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-20 10:16:25 +01:00
Rob McGuire ccdd964811 Docs: Fix "enable" steps formatting (#22324)
* Docs: Fix "enable" steps formatting

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

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

Co-authored-by: Daniel Lee <dan.limerick@gmail.com>
Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-20 10:14:23 +01:00
Diljit PR 48648561fa [Docs] Improvised instructions for adding data source. (#22305) 2020-02-20 10:03:52 +01:00
Roman Misyurin e7244f0f8a DashLinks: Add pull right to dropdown menu (#22233) 2020-02-20 10:02:13 +01:00
Tobias Skarhed d2689b6d6c Migration: User invite (#22263)
* Add new form and functionality

* Add new files

* Connect to Redux and add navigation stuff

* Add required login/name

* Remove import

* Fix feedback

* Replace direct button spacing with HorizontalGroup

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-20 08:01:14 +01:00
Tobias Skarhed 9cf84c51f5 Select: Fix focus issue and remove select container (#22309) 2020-02-20 07:25:23 +01:00
Miguel Carvajal 49fe4ff69e Annotations: Call panel refresh when table transform changes to annotations (#22323) 2020-02-20 07:11:42 +01:00
Mohit Nain 9a65c5a90d Docs: Couple of changes to the document (#22291)
* Couple of changes to the document

Correcting a typo in line 53
Line 226 should be re-written as "To easily configure"

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

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-19 14:56:12 -08:00
Mohit Nain 5e1d1c1d01 Docs: Typo correction in Line 19 (#22297)
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-19 14:54:47 -08:00
Marcus Efraimsson d0a80c59f3 Rendering: Store render key in remote cache (#22031)
By storing render key in remote cache it will enable
image renderer to use public facing url or load
balancer url to render images and thereby remove
the requirement of image renderer having to use the
url of the originating Grafana instance when running
HA setup (multiple Grafana instances).

Fixes #17704
Ref grafana/grafana-image-renderer#91
2020-02-19 19:47:39 +01:00
Marcus Efraimsson 9d7c74ef91 Backend Plugins: Provide proper plugin config to plugins (#21985)
Properly provides plugin configs to backend plugins.
Uses v0.16.0 of grafana-plugin-sdk-go-

Ref #21512
Ref #19667
2020-02-19 19:17:05 +01:00
Dominik Prokop f82a6aa0d0 New panel edit: data links tweaks (#22304)
* Add basic layout components

* Add some love to data links in new panel edit

* fix prettier
2020-02-19 18:55:44 +01:00
Carl Bergquist b0b46991ec 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>
2020-02-19 18:29:47 +01:00
Arve Knudsen 8d1bef3769 OAuth: Enforce auto_assign_org_id setting when role mapping enabled using Generic OAuth (#22268)
* OAuth: Make use of auto_assign_org_id setting
2020-02-19 17:38:53 +01:00
Arve Knudsen 4c282c538a CircleCI: Upgrade Ubuntu base image to 19.10 also for enterprise (#22315) 2020-02-19 17:06:02 +01:00
Leonard Gram d5a2bc1a54 CI: check ubuntu and alpine images with trivy (#22314)
* CI: check ubuntu and alpine images with trivy

* CI: clear trivy cache before running
2020-02-19 16:10:22 +01:00
Arve Knudsen b148b306e2 Docker: Upgrade Ubuntu to 19.10 (#22306) 2020-02-19 15:23:54 +01:00
Steven Vachon 7bf3f0b9c1 grafana/data: runtime dependencies moved from devDependencies (#22283)
... so that they get installed within consumer projects
2020-02-19 14:40:41 +01:00
Torkel Ödegaard 0dbe5323d7 PanelInspector: Fixed issue in panel inspector (#22302) 2020-02-19 14:39:44 +01:00
Dominik Prokop e6c59d0729 grafana/ui: Add basic horizontal and vertical layout components (#22303) 2020-02-19 13:45:25 +01:00
Dominik Prokop 55277ca732 Field Config Editors: Remove namespacing from standard field config editors (#22296) 2020-02-19 13:44:33 +01:00
Dominik Prokop 943f9b29ec CircleCI: Increase nodejs max memory (#22295)
* Increase nodejs max memory

* Indentation

* Update .circleci/config.yml

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

* Update .circleci/config.yml

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-19 12:18:36 +01:00
Diana Payton b81c842510 Update rpm.md (#22284)
Minor format edits
2020-02-19 11:53:26 +01:00
Torkel Ödegaard a45794d0ec FieldConfigs: String select type & cell display mode added to table panel (#22274)
* FieldConfigs: Added string select field config

* FieldConfigs: Added string select field config

* Changed to generic select type
2020-02-19 11:30:19 +01:00
Torkel Ödegaard e591fbc322 LinkSrv: Add newlines so I can read code 2020-02-19 09:18:50 +01:00
Rob McGuire 33fae87899 Docs: Fix TestData docs (#22279)
* Update TestData docs

Fixes TestData docs by correcting name, installation instructions, etc. Should prevent issues like #16386.

- Fix name: `Grafana TestData` -> `TestData DB`
- Fix "Enable" section instructions
- Fix "Dashboard" section instructions
- Fix grammar

* Bold clickable items, list step-by-step instrs.

* Apply suggestions from code review

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-18 15:06:33 -08:00
Marcus Efraimsson fd52570b7f 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>
2020-02-18 22:53:40 +01:00
Diana Payton 131610e8f7 Update mac.md (#22280)
Minor link update
2020-02-18 13:23:07 -08:00
Steven Vachon c35dc9a0f5 @grafana/toolkit: lint fix option now writes changes to disk (#22278) 2020-02-18 15:55:42 -05:00
Diana Payton e08b39d4f0 Docs: minor fixes (#22223)
* Update enhanced_ldap.md

* Update ldap.md

* Minor fixes
2020-02-18 12:28:59 -08:00
Adrian Coveney 39e0ce305b 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.
2020-02-18 18:58:36 +01:00
Diana Payton 37aa584a54 Docs: Minor typo fix (#22221) 2020-02-18 09:08:49 -08:00
Torkel Ödegaard 7acea5b3fa NewPanelEdit: Add back datalinks and new table panel fix (#22267)
* NewPanelEditor: Add back data links

* Made custom table options work in table panel
2020-02-18 17:08:39 +01:00
Sebastian Poxhofer 4cf765839a Prometheus: Implement region annotation (#22225) 2020-02-18 16:10:15 +01:00
Torkel Ödegaard 6ad8375293 Table: Fixed header alignment (#22236) 2020-02-18 14:16:42 +01:00
Carl Bergquist ff9556229a 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>
2020-02-18 13:26:01 +01:00
Marcus Andersson 08bf2a5452 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.
2020-02-18 12:30:11 +01:00
ROY 45da3b77a8 Update timeseries.md (#20795)
* Update timeseries.md

Update to docs-imagebox for the image link.

* Update docs/sources/guides/timeseries.md

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

Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
2020-02-18 01:19:48 +01:00
Carl Bergquist fe16028e02 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>
2020-02-17 17:31:44 +01:00
Andrej Ocenas 934d93ad94 Elastic: Map level field based on config. (#22182)
* Map level field based on config.

* Fix type
2020-02-17 16:49:24 +01:00
Leonard Gram 10fbabfb2e Sqlstore: guard against getting a dashboard without specifying identi… (#22246)
* Sqlstore: guard against getting a dashboard without specifying identifier

* Sqlstore: linting
2020-02-17 15:32:20 +01:00
Tobias Skarhed 0c4dae321c Migrations: Signup page (#21514)
* Start Angular migration

* Add SignupCtrl

* Change name signup

* Add backend call

* Put form in separate file

* Add form model

* Start using react-hook-forms

* Add FormModel to state

* Reduxify

* Connect nav with Redux

* Fix routing and navModel

* Fetch state options on mount

* Add default values and add button margin

* Add errror messages

* Fix title

* Remove files and cleanup

* Add Signup tests

* Add boot config assingnAutoOrg and verifyEmailEnabled

* Remove onmount call

* Remove ctrl and move everything to SignupForm

* Make routeParams optional for testing

* Remove name if it is empty

* Set username

* Make function component

* Fix subpath issues and add link button

* Move redux to SignupPage
2020-02-17 11:13:13 +01:00
Tobias Skarhed 029a6c64b4 Storybook: Add color theme and theme switcher (#22005)
* Add color theme and serve static files for storybook

* Add color theme and serve static files for storybook

* Export dark and light theme

* Add storybook-dark-mode package

* Add theme toggle functionality

* Toggle story theme too

* Remove unused import

* webpack config changes not needed
2020-02-17 10:36:16 +01:00
Torkel Ödegaard d9414b4693 NewPanelEditor: Making angular panels reuse data and render on edit mode enter (#22229)
* First stab at angular panels load in new edit

* Things are working
2020-02-17 07:28:53 +01:00
Torkel Ödegaard bfa959c66a PanelEdit: Title tweaks (#22237) 2020-02-17 07:28:00 +01:00
Torkel Ödegaard 5396c9ef92 NewPanelEdit: Minor changes (#22239) 2020-02-17 07:27:21 +01:00
Torkel Ödegaard 4ca3967091 Chore: Fixed strict null errors (#22238) 2020-02-17 07:25:27 +01:00
Torkel Ödegaard f1ecaa5d45 NewPanelEditor: Thresholds v2 (#22232)
* initial wip

* Progress on new threshold design

* Testing radio button group for mode option

* Starting to come together

* Fixed percent mode

* Full width radio groups

* Minor tweaks, cursor to trash icon and hover state

* fixed unit tests

* Fixed storybook

* re-ordering fields

* Updated snapshot

* Make it consistent, add vs create
2020-02-17 06:57:10 +01:00
Jacky a743a1cc12 Toolkit: support sass style for plugins (#22235) 2020-02-16 16:47:31 -08:00
Martin Passing 90541d3084 add CloudWatch Usage Metrics (#22179)
https://docs.amazonaws.cn/en_us/AmazonCloudWatch/latest/monitoring/CloudWatch-Usage-Metrics.html
2020-02-16 18:07:28 +01:00
Torkel Ödegaard c162af8142 FieldOverrides: Fix issue with same series name for every display value (#22234)
* fieldOverrides: Fix issue with same series name for every display value

* Added unit test
2020-02-16 14:56:24 +01:00
Ryan McKinley cc589a0d76 Inspector: find the datasource from the refId, not the metadata (#22231)
* remove datasource

* get datasoure from refId

* metrictank does not need to say the datasource
2020-02-16 05:12:40 -08:00
Dominik Prokop 131a3248ba New panel editor: Persist panel editor ui state (#22210) 2020-02-15 11:31:11 -08:00
Ryan McKinley 21b53b7d79 Toolkit: don't create declaration files for plugins (by default) (#22228) 2020-02-15 09:05:07 -08:00
Diana Payton 69c512d5f4 Docs: Update windows.md (#22185)
Added missing link
2020-02-14 10:20:38 -08:00
Diana Payton ffde18eedf Docs: Add linking topic (#21986)
* Create linking.md

* Update linking.md

* Updated menu and edited linking content

* Changed file name

* Update navigation-links.md
2020-02-14 10:19:26 -08:00
Diana Payton 0d3d8edb92 Docs: Refactored Enterprise side menu (#22189)
* Refactored Enterprise side menu

* Update menu.yaml

* Fixed links

* Update menu.yaml
2020-02-14 09:34:39 -08:00
Arve Knudsen d03075b811 CircleCI: Push master Docker images without revision in tag (#22218) 2020-02-14 17:28:30 +01:00
Arve Knudsen 019834ae12 Alerting: Update the types of recipient supported by the Slack notifier (#22205)
* Alerting: Update types of supported Slack recipients
* Document Slack recipient requirements
2020-02-14 17:11:23 +01:00
Jeet Parekh f1989f1bfc docs: change URL occurences to uppercase (#22151)
* change URL occurences to uppercase

* Update docs/sources/tutorials/iis.md

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-14 08:11:08 -08:00
annelaurefroment 56cd845e97 Docs: Fix link for provisioning data sources (#22159)
fixing link for provisioning data sources to use relref
2020-02-14 07:06:18 -08:00
Lukas Siatka fd44abd177 DevEnv: update frontend dependencies - tests (#22140)
* DevEnv: updates @types/testing-library__react-hooks 3.1.0 -> 3.2.0

* DevEnv: updates @types/enzyme-adapter-react-16 1.0.5 -> 1.0.6

* DevEnv: updates @types/react-test-renderer 16.9.0 -> 16.9.2

* DevEnv: updates react-test-renderer 16.9.0 -> 16.12.0

* DevEnv: updates @types/enzyme 3.9.0 -> 3.10.5

* DevEnv: updates enzyme-adapter-react-16 1.0.6 -> 1.15.2

* DevEnv: updates enzyme 3.9.0 -> 3.11.0

* Fix: updates snapshots

* Fix: updates tests

* DevEnv: updates enzyme-to-json 3.3.5 -> 3.4.4

* DevEnv: updates expect.js 0.2.0 -> 0.3.1

* DevEnv: updates @types/puppeteer-core 1.9.0 -> 2.0.0

* DevEnv: updates puppeteer-core 1.15.0 -> 2.1.1

* DevEnv: updates @types/expect-puppeteer 3.3.1 -> 4.4.0

* DevEnv: updates expect-puppeteer 4.1.1 -> 4.4.0

* DevEnv: updates mocha 4.1.0 -> 7.0.1
2020-02-14 15:16:07 +01:00
Lukas Siatka c433a1513f DevEnv: update frontend dependencies - type definitions (#22141)
* DevEnv: updates @types/classnames 2.2.7 -> 2.2.9

* DevEnv: updates @types/jquery 1.10.35 -> 3.3.32

* DevEnv: updates @types/lodash 4.14.123 -> 4.14.149

* DevEnv: updates @types/pngjs 3.3.2 -> 3.4.1
2020-02-14 15:15:51 +01:00
Dominik Prokop fa34a7692e 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
2020-02-14 15:13:49 +01:00
Lukas Siatka 565387a42e DevEnv: update frontend dependencies - node (#22139)
* DevEnv: updates node-sass 4.12.0 -> 4.13.1

* DevEnv: updates ts-node 8.5.0 -> 8.6.2

* DevEnv: updates @types/node 11.13.4 -> 13.7.0

* DevEnv: updates lockfile
2020-02-14 14:53:06 +01:00
Brian Gann 0e2d874ecf API: Fix redirect issue when configured to use a subpath (#21652)
* request uri will contain the subpath
2020-02-14 14:51:35 +01:00
Peter Holmberg 0cde7decd7 Inspect: Inspect header design update (#22120)
* first things

* rename

* add stats, remove table related changes

* header size and expand icon

* add case for nan request time

* fixing null checks

* reverting changes to table

* fix background on header

* Some small fixes after review

* do not use formInputBg
2020-02-14 14:14:37 +01:00
Dominik Prokop e846a26c8c FieldOverrides: FieldOverrides UI (#22187) 2020-02-14 13:46:08 +01:00
Alexander Zobnin f2fc7aa3aa Azure OAuth: enable teamsync (#22160)
* Azure OAuth: extract groups from token for teamsync

* Docs: changed some headers

* Azure OAuth: fix tests

* Azure OAuth: fix linter error (simplify)

* Azure OAuth: add allowed_groups option

* Azure OAuth: docs for team sync and allowed_groups

* Azure OAuth: tests for allowed_groups

* Update docs/sources/auth/azuread.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-02-14 14:03:00 +03:00
Diana Payton 961cb6b284 Docs: Organize basic concepts and getting started (#21859)
* Update shortcuts.md

Removed content that was out-of-date and redundant with the UI.

* Added panels.md

* Added dashboards.md

* Added data-sources.md

* Update data-sources.md

* Sorted basic concepts into other topics

* Update docs/sources/menu.yaml

Co-Authored-By: Marcus Olsson <accounts+github@marcus.se.net>

* Update panels.md

* Update data-sources.md

Co-authored-by: Marcus Olsson <accounts+github@marcus.se.net>
2020-02-13 13:04:05 -08:00
Ryan McKinley 2c9b321c48 FieldOverides: apply field overrides based on configuration (#22047)
* test apply

* test apply

* Move standard field config editor registry to grafana-data

* merge master

* Apply field config defaults

* Make field and dataFrameIndex optional on on FieldOverrideContext

* Apply custom field config overrides

* Gauge - make sure thresholds are set

* Move series and field scoped vars calculation

* Enable template variables interpolation in title fields

* Expose standars field configs from grafana ui via function

* Add missing option to the config for the min value to be derived from field values

* Fix ts issue

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-13 21:37:24 +01:00
Mohit Nain 824f7362d4 Docs: Suggesting few changes to the doc (#22115)
* Suggesting few changes to the doc

1. Note should be followed by a dot (.)
2. Correcting a typo in default
3.  Re-writing sub sentence to make reading better

* Update docs/sources/installation/configuration.md

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

* Update configuration.md

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-13 10:57:13 -08:00
Mohit Nain 4f94a4c495 Docs: Update phrasing line 35 (#22152)
Idea is to provide information to the user that query can be executed on any data source that is available in grafana, therefore suggested little modification
2020-02-13 10:34:58 -08:00
Mohit Nain 63d999a739 Docs: Correcting Typo in Line131 (#22155) 2020-02-13 10:34:01 -08:00
Torkel Ödegaard e1d5cfbd20 Dashboard: fixed padding inconsistency 2020-02-13 19:32:28 +01:00
Hugo Häggmark 335b1a8983 BackendSrv: Fixes a stupid mistake with a missing return (#22177) 2020-02-13 16:08:41 +01:00
Torkel Ödegaard 70b0ec65b3 PanelEdit: Fixed timing and state related issues (#22131)
* PanelEdit: Fixed timing and state related issues

* Added unit test and changed some logic

* Fixed id logic

* Updated snapshots

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

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

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-13 16:06:45 +01:00
Andrej Ocenas 9c55500cc0 Elastic: Replace range as number not string (#22173) 2020-02-13 16:00:01 +01:00
Robby Milo e60b124001 change sync target branch to master (#21930) 2020-02-13 06:10:25 -08:00
Torkel Ödegaard ba7c931286 e2e: Fixed issue with aria label (#22166)
* e2e: Fixed issue with aria label

* removed ini
2020-02-13 13:14:55 +01:00
Peter Holmberg e5df200893 Fix: Do not remove whitespace in PanelLink url (#22087)
* remove whitespace replace

* readd replace newline

* adding a test
2020-02-13 11:32:18 +01:00
kay delaney 0d5c1e1bc7 React Migration: Migrates FolderPicker from angular to react (#21088)
* Angular/React: Migrates FolderPicker from angular to react

* move to core

* snap

* minor changes

* more removes

* Managing creating new and saving in movetofolderctrl

* Do not use new forms.field, fix select menu

* FolderPicker responsible to creating new folder

* create new as prop

* snap

* remove unnecessary things

* remove console log

* snap

* fix null checks

* add search debouncing

* set folder to state, null check

* typing folder

* adding case for loadOptions

* snap

Co-authored-by: Peter Holmberg <peterholmberg@users.noreply.github.com>
2020-02-13 11:13:03 +01:00
twendt ff6a082e23 Auth: Azure AD OAuth (#20030)
* Implement Azure AD oauth

* Use go-jose and cleanup

* Update go-jose in go.mod

* cleanup

* Add unit tests

* Fix scopes

* Add documentation page

* Improve documentation

* Convert extract_role into function.

* Do not use upn and replace unique_name with preferred_username

* Configure login button

* Use official microsoft icon and color from branding guideline.

* Add Azure AD config section in sample.ini.
2020-02-13 12:12:25 +03:00
Lukas Siatka ceca067d4f DevEnv: update frontend dependencies - grunt (#22136)
* DevEnv: updates grunt 1.0.1 -> 1.0.4

* DevEnv: updates grunt-cli 1.2.0 -> 1.3.2

* DevEnv: updates grunt-contrib-clean 1.0.0 -> 2.0.0

* DevEnv: updates grunt-exec 1.0.1 -> 3.0.0

* DevEnv: updates grunt-postcss 0.8.0 -> 0.9.0

* DevEnv: updates load-grunt-tasks 3.5.2 -> 5.1.0
2020-02-13 09:10:17 +01:00
Lukas Siatka 9ed08d1903 Bugfix: updates cloudwatch query editor test async render to prevent it from throwing error (#22150) 2020-02-13 09:07:33 +01:00
Torkel Ödegaard 6d879a0227 NewPanelEdit: Design tweaks (#22156)
* NewPanelEdit: minor design tweak

* Updated
2020-02-13 09:01:03 +01:00
Diana Payton 8641b91389 TestData: Update streaming.json (#22132)
Changed `graph2` to `graph` in two places.
2020-02-13 06:29:36 +01:00
Lukas Siatka a0464c1239 DevEnv: update frontend dependencies - babel (#22135)
* DevEnv: updates @babel/core 7.8.3 -> 7.8.4

* DevEnv: updates @babel/preset-env 7.8.3 -> 7.8.4

* DevEnv: updates babel-loader 8.0.5 -> 8.0.6
2020-02-13 06:26:52 +01:00
Arve Knudsen cece9547ae Docs: Fix port config list formatting (#22113)
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-12 12:05:37 -08:00
Ivana Huckova 2be4d8dfd0 Explore: Refactor active buttons css (#22124) 2020-02-12 20:11:40 +01:00
kay delaney ef36276584 Forms/Switch: Simplifies and adjusts CSS/Markup (#22129)
- Fixes CSS so switch dot is symmetrical when checked/unchecked
- Fixes CSS so hover styles are applied
2020-02-12 18:05:56 +00:00
kay delaney 003fb4a3d0 Datasource/Loki: Fixes issue where live tailing displayed date as invalid (#22128)
Closes #21929
2020-02-12 17:44:26 +00:00
Torkel Ödegaard cfe30080e4 NewPanelEditor: Fixed issue going back to dashboard after pull page reload (#22121)
* Fixed issue going back to dashboard

* fixed logic

* Fixed unit test

* Fixed unit test
2020-02-12 18:36:32 +01:00
Ivana Huckova 1448767c08 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
2020-02-12 15:45:36 +01:00
Torkel Ödegaard fa1602daea NewPanelEdit: Added visualization tab / selection view (#22117)
* NewPanelEdit: Added visualization tab

* Minor fix
2020-02-12 12:54:58 +01:00
Dominik Prokop 60ed1e9527 Increase ts fork check mem limit (#22118) 2020-02-12 12:08:37 +01:00
Torkel Ödegaard df1d43167a NewPanelEditor: Panel editor tabs in state (url) (#22102)
* tabs & style tweaks

* Styling updates

* ok look

* tweaks

* Updated snapshots

* Moved transforms

* Updated
2020-02-12 10:42:57 +01:00
Torkel Ödegaard 8080bbc8ec Delete report.20200209.125304.14262.0.001.json 2020-02-12 10:41:36 +01:00
Hugo Häggmark 8264b220c5 Annotation & Alerts: Makes various annotation and alert requests cancelable (#22055)
* Annotations: Makes various annotation and alert calls cancelable
Fixes #21943

* Refactor: Uses backendSrv.get method with requestId instead

* Update public/app/features/annotations/annotations_srv.ts

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

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
2020-02-12 09:37:36 +01:00
Dominik Prokop 95b1607cbf Select zindex (#22109) 2020-02-12 09:07:06 +01:00
Diana Payton 6ee84cd2fc Docs: Add doc templates (#21927)
* Adding template docs

* Update doc-concept-template.md

* Added content to templates

* Added task info
2020-02-11 14:05:39 -08:00
Arve Knudsen 6f09bc9fb4 Fix mentioning Slack users/groups (#21734)
* alerting/slack: Allow mentioning users, groups, and channels separately
2020-02-11 21:43:28 +01:00
Diana Payton 717e1a3b2b Docs: Update rules.md (#21989)
Minor edits
2020-02-11 10:37:35 -08:00
Diana Payton 929cbd3315 Docs: Update metrics.md (#21988) 2020-02-11 10:36:45 -08:00
Diana Payton e1518666dd Docs: Update dashboard.md (#21951) 2020-02-11 10:36:18 -08:00
Diana Payton 4642a76ad8 Docs: Added release notes tag (#22012) 2020-02-11 10:35:44 -08:00
kay delaney ca85176ac6 Forms/RadioButtonGroup: Improves semantics and simplifies CSS (#22093)
* Forms/RadioButtonGroup: Improves semantics and simplifies CSS
- Changes base element to radio input for improved semantics & automatic keyboard support
- Simplifies CSS
2020-02-11 18:31:01 +00:00
Agnès Toulet 534295a9ae Docs: add LDAP active sync limitation for single bind configuration (#22098)
* Docs: add LDAP active sync limitation for single bind

* Docs: update header for LDAP active sync limitation

Co-Authored-By: Leonard Gram <leo@xlson.com>
2020-02-11 17:58:39 +01:00
Jim Johnson b55a39a221 Docs: Update behind_proxy.md to include HTTPS and URL rewrite example (#21832) 2020-02-11 17:55:02 +01:00
Ryan McKinley 173375cb65 DataLinks: Avoid null exception in new edit mode (#22100) 2020-02-11 16:46:31 +01:00
Diana Payton 2a2b33bb55 Docs: Image rendering improvements (#22084) 2020-02-11 07:38:13 -08:00
Thomas Dräbing 113365cff9 Fix display of multiline logs in log panel and explore (#22057)
Logs that contained line breaks were displayed in a single wrapped
line and not respecting the line break characters.
2020-02-11 16:08:39 +01:00
Alex Khomenko ec0051c075 Fix/add width to toggle button group (#21924)
* Grafana-UI: Add option to customize ToggleButtonGroup's width

* Grafana-UI: Add an option to customize TimeOfDayPicker width via width prop

* Grafana-UI: Add comment

* Grafana-UI: Switch width to size for TimeOfDayPicker

* Cleanup merge
2020-02-11 16:47:52 +02:00
Torkel Ödegaard fee18f143e NewPanelEditor: Introduce redux state and reducer (#22070)
* New panel editor redux

* minor change

* Updated

* progress

* updated

* Fixed panel data mutable issue

* more actions

* Discard works

* Updated

* Updated
2020-02-11 14:57:16 +01:00
Bruce Merry 02c779cfa3 Prometheus: make $__range more precise (#21722)
* Make $__range more precise in Prometheus

It is now always equivalent to `${__range_s}s`, rather than rounding
down to an integer multiple of the biggest possible unit. For example,
a range of 47 hours is now represented as `169200s` rather than `1d`.

Closes #21689.

* Update a unit test to match new __range calc
2020-02-11 14:28:06 +01:00
Dominik Prokop e612d7a2f9 New panel edit: data links edit (#22077)
* Move data links suggestions to grafana-data

* Data links -  field config and overrides

* Lint

* Fix test

* Add variable suggestions  to field override context

* Revert "Move data links suggestions to grafana-data"

This reverts commit 5d8d01a65e.

* Move FieldConfigEditor to core
2020-02-11 13:48:36 +01:00
Alex Khomenko 94b66258b5 Docs: fix minor typos in datasources.md (#22092) 2020-02-11 14:32:20 +02:00
Ryan McKinley 34e4f182bc Toolkit: add a warning about tslint migration (#22089) 2020-02-11 13:27:26 +01:00
Alex Khomenko e07e03c26d Read target prop from the links in the footer (#22074)
* Grafana-core: Read target prop from the links in footer instead of having them hardcoded

* Grafana-core: Update ServerStats snapshot
2020-02-11 14:00:06 +02:00
Arve Knudsen 3b86bc97ea CircleCI: Publish enterprise Docker dev image for new master pipeline (#22091) 2020-02-11 12:55:38 +01:00
Arve Knudsen ffdbe60da0 CircleCI: Include build ID in version for new master pipeline (#22013)
* CircleCI: Include build ID in version for new master pipeline
2020-02-11 09:19:34 +01:00
Andrii Melnyk 47314d0f13 Alerting: Handle NaN in reducers (#22053)
- Fix bug with NaN in alerting - Closes #21953
- Alert reducers (avg/max/etc) drop null values from their calculation. This change makes it so NaN values are handled in the same way as null values.
2020-02-10 19:28:07 -05:00
Ilia Shulgin 26e294c29b Docs: Fix broken link to "Configure a Grafana Docker image" page (#22080) 2020-02-10 13:13:21 -08:00
Ryan McKinley 0ff19e9414 Toolkit: create manifest files for plugins (#22056) 2020-02-10 19:39:24 +01:00
Marcus Efraimsson 679acd30ba Backend Plugins: make transform work again (#22078) 2020-02-10 12:17:54 -05:00
Diana Payton efbe5e8729 Docs: Fix broken link (#22010)
* Fix broken link

* Update docs/sources/installation/configuration.md

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

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-02-10 08:59:24 -08:00
Beck 5dd170d2e9 Docs: Fix formatting typo (#22067) 2020-02-10 08:43:48 -08:00
Arve Knudsen bc412b48ea CircleCI: Publish enterprise ARM variants from master pipeline (#22011)
* CircleCI: Publish ARM Docker images for enterprise
2020-02-10 16:45:17 +01:00
Hugo Häggmark 747b546c26 Chore: Adds cancellation to backendSrv request function (#22066)
* Chore: Adds cancellation to backendSrv request function

* Refactor: Corrects typing for requestId
2020-02-10 15:14:53 +01:00
Torkel Ödegaard 49407987fe Dashboard: Move some plugin & panel state to redux (#22052)
* WIP: dashboard panel redux

* Progress

* Progress

* Changing plugin type

* Progress

* Updated

* Progess

* Fixed timing issue

* Updated

* Fixed unit tests

* Fixed issue in dashboard page

* Updated test
2020-02-10 14:23:54 +01:00
Even Thomassen 258b507179 Docs: Clarify that extraction of zip is required to install plugin (#22061) 2020-02-10 13:40:54 +01:00
Hugo Häggmark 0b082e8768 Chore: Fixes non utc tests (#22063) 2020-02-10 13:15:30 +01:00
Alex Khomenko bf4c11d0d4 Grafana ui/time of day picker ui improvements (#21950)
* Grafana-UI: Add caret to the picker

* Grafana-UI: Customise popup's font-size and border-color

* Grafana-UI: Replace highlight background with border color

* Grafana-UI: Use stylesFactory vs inline classes

* Grafana-UI: Import stylesFactory from themes vs index
2020-02-10 13:57:59 +02:00
Dominik Prokop dd37d003ef 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
2020-02-10 12:45:15 +01:00
Hugo Häggmark cd6809685f BackendSrv: Returns correct error when a request is cancelled (#21992)
Fixes #21991
2020-02-10 06:29:52 +01:00
Dominik Prokop 31101d54a4 Make zoom and time shift work after emmitter change (#22051) 2020-02-09 19:19:44 +01:00
Ryan McKinley 34b52cb835 New Editor: refresh when time values change (#22049) 2020-02-09 18:48:14 +01:00
Dominik Prokop 58639ee53e New Editor: Add ValuePicker for overrides selection (#22048) 2020-02-09 18:47:47 +01:00
Ryan McKinley bedc708dfa Collapse: add a controlled collapse (#22046) 2020-02-09 17:39:26 +01:00
Tobias Skarhed 1554dcee0d Cascader: Fix issue where the dropdown wouldn't show (#22045)
* Fix z-index on cascader

* Cleanup

* Remove unused import
2020-02-09 17:02:07 +01:00
Ryan McKinley e9c6c040da New Editor: add display modes to fix ratio with actual display (#22032)
* add mode picker

* ratio cleanup

* add siebar toggle

* use secondary button

* use cog icon

* cleanup

* full to fill

* Portaling for Select

* Centering container for panel edit

* Panel editor tabs

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-09 15:39:46 +01:00
Tobias Skarhed 88922ea4ee Chore: Use forwardRef in ButtonSelect (#22042)
* forwardRef to ButtonSelect

* Remove innerRef prop

* Use styleFactory
2020-02-09 15:13:26 +01:00
Ryan McKinley 08a4317b46 DashNavTimeControls: remove $injector and rootScope from time picker (#22041) 2020-02-09 14:36:49 +01:00
Dominik Prokop 1728742096 New panel edit: field overrides ui (#22036)
* Add title editor

* Wip

* FIeld config overrides UI (v1)

* Basic property override editors

* name to prop

* use prop not path

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-02-09 14:34:42 +01:00
Dominik Prokop 25431f32f0 Select: Portaling for Select (#22040) 2020-02-09 13:37:00 +01:00
Tobias Skarhed eba0390502 New Select: Fix the overflow issue and menu positioning (#22039)
* Fix the overflow issue and menu positioning

* Add portal as a property
2020-02-09 12:50:01 +01:00
Torkel Ödegaard e9bc8afac8 Upgrade: React layout grid upgrade (#22038) 2020-02-09 10:54:08 +01:00
Torkel Ödegaard 34c397002c PanelChrome: Use react Panel Header for angular panels. (#21265)
* WIP: Angular panel chrome, this is going to be tricky

* AngularPanelChrome: initial render works

* Options are showing up

* viz options working

* Fixed singlestat background

* AngularPanels: Fixed alert tab

* Removed anuglar loading spinner

* Dashboard: Refactor dashboard reducer & actions

* Dashboard: minor refactoring

* PanelChrome: loading state moved to header

* Subscribe to render events to solve title update issue

* Time info and query errors now works

* PanelHeader: unifying angular and react behavior

* added getPanelMenu test

* Scrollable now works again

* Various fixes

* Making stuff work

* seperate event emitter for angular

* Fixed issue sending updated dimensions to angular panel

* Minor tweaks

* Fixed tests

* Alerting: alert state now works

* Fixed unit tests

* Fixed a few null check errors

* Simplified events handling

* Fixed strict null checks
2020-02-09 10:53:34 +01:00
Ryan McKinley 2feaad8b0d New Editor: add a tabs row for the query section (#22037) 2020-02-09 10:50:58 +01:00
Ryan McKinley 66191f946d New Editor: use unit picker (#22033)
* use unit picker

* export correct file name

* override is the same
2020-02-09 10:29:10 +01:00
Torkel Ödegaard a58d2b87f8 Dashboard: Refactor dashboard reducer & actions (#22021)
* Dashboard: Refactor dashboard reducer & actions

* Dashboard: minor refactoring

* Minor cleanup
2020-02-09 09:45:50 +01:00
Dominik Prokop b8e68efe70 New panel editor: Add title editor (#22030) 2020-02-08 19:31:17 +01:00
Tobias Skarhed c75ca5cf06 UnitPicker: Use the new Cascader implementation (#22029)
* Use Cascader for UnitPicker and add relevant props to Cascader

* Fix grammar

* Add placeholder for UnitPicker

* Update comments
2020-02-08 19:06:06 +01:00
Ryan McKinley da395729c3 FieldEditor: extendable FieldConfig UI (#21882)
* initial POC

* fix import

* field config editor in the sidebar

* field config editor in the sidebar

* field config editor in the sidebar

* sidebar

* include threshold in sidebar

* include threshold in sidebar

* include threshold in sidebar

* init to empty threshold

* merge

* Make sure editor is fully rendered when page is refreshed

* use scrollbars

* add matcher UI folder

* remove

* Field options basic editors

* Removed deebugger

* Make number field editor controlled

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

* Update public/app/plugins/panel/gauge/GaugePanel.tsx

* Ready for production

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-08 18:29:09 +01:00
Tobias Skarhed 20c4d00df8 Cascader: Add enable custom value (#21812)
* Add an early exit

* Fix issue with blur and only display label

* Remove unused code

* Enabled custom value

* Update test

* Add custom value creating according to #21869
2020-02-08 16:02:03 +01:00
Dominik Prokop 3617e59548 New panel edit: support scrolling (#22026)
* Make new edit work again

* Add custom scrolls

* better merge

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-02-08 14:12:02 +01:00
Ryan McKinley e7710f0c66 Thresholds: get theme from context automatically (#22025)
* get theme from context for thresholds

* remove theme

* use theme context

* remove theme from gauge/bargauge
2020-02-08 13:59:26 +01:00
Dominik Prokop e17b76ad7a New Panel Edit: works for panels with and without queries (#22024)
* Make new edit work again

* add cx

Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-02-08 13:23:16 +01:00
Ryan McKinley a51ac787c0 PanelEditor: use splitpane for new editor (#22022)
* use splitpane for new editor

* change header

* use back button icon

* adding react split
2020-02-08 12:01:09 +01:00
Torkel Ödegaard 72b9f78e14 Select: Fixed allow custom value in Select/UnitPicker/Segment/AsyncSegment (#22018) 2020-02-08 11:49:14 +01:00
Ryan McKinley d0470409d6 Chore: export arrow dataframe utilities (#22016)
* export arrow dataframe

* use the same table
2020-02-08 09:50:35 +01:00
Steven Vachon f48169633c TSLint → ESLint (#21006)
* Alphabetized tslint and tsconfig files

* Optimized tsconfig files

* Optimized editorconfig & prettier config files

… to reduce redundancy

* Switched to @grafana/tsconfig

… and:
* de-duped options
* removed options with default values

* Fixed nasty issue with types for nested slate-react

* Replaced TSLint with ESLint

* TSLint disables → ESLint disables

… also JSHint removals, which haven’t had an affect since it was replaced with TSLint.

* Compliances for ESLint, Prettier and TypeScript

* Updated lockfile
2020-02-08 02:40:04 +01:00
Leonard Gram 7dcf5887e6 Docker: Publish enterprise image with master-commit tag (#22008) 2020-02-07 16:08:14 +01:00
Marcus Efraimsson 285ebd3413 Chore: Resolve random failure with golangci-lint (#21970) 2020-02-07 15:53:03 +01:00
Dominik Prokop 9b6a843177 New panel edit: don't query when entering edit mode (#21921)
* First attempt

* Save confirmation with discard option, reusing queriess a little bit differently

* simplify cloning panels and restoring last results in panel query runner

* Remove save button

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

* Exit/discard buttons

* Update snaps

* Review comments

* Fix lint
2020-02-07 14:59:04 +01:00
Dominik Prokop 4b271f27fb Fix bad grammar in Dashboard Link page (#21984) 2020-02-06 19:23:38 +01:00
Diana Payton 4a8dfc42cf Update documentation-style-guide.md (#21736)
Added "metadata" to Word Usage
2020-02-06 08:33:55 -08:00
Ed Welch f2c3d23140 Prometheus: Allow sub-second step in the prometheus datasource (#21861) 2020-02-06 15:28:20 +01:00
Alexander Zobnin e2b06d9228 Update latest.json versions to 6.6.1 (#21972) 2020-02-06 16:34:16 +03:00
Alexander Zobnin 32394374ff Change log for 6.6.1 (#21969)
* Change log 6.6.1

* Add PR co-authors

* fix label type for PR #21949

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-02-06 16:08:15 +03:00
Lukas Siatka 2d3c5064e1 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
2020-02-06 12:37:30 +00:00
Lukas Siatka df48d1c19f Explore: Adds Loki explore query editor (#21497)
* Explore: updates grafana-data explore query field props with explore mode

* Explore: updates query row to pass down explore mode to query fields

* Explore: adds LokiExploreQueryEditor

* Explore: updates loki query field form to render children

* Explore: adds loki explore extra field component

* Explore: adds extra field element to loki query field form

* Explore: updates loki explore query editor to use extra field element

* Explore: moves ExploreMode to grafana-data

* Explore: updates query row limit string

* Explore: adds maxLines to DataQuery

* Explore: adds maxLines to loki datasource runRangeQueryWithFallback

* Explore: adds onChangeQueryLimit to LokiExploreQueryEditor

* Explore: updates loki explore query editor to render extra field only in logs mode

* Explore: fixes query limits for live and legacy queries

* Explore: fixes result processor max lines limit in get logs result

* Explore: fixes Loki datasource limit test

* Explore: removes unnecessary ExploreMode from Loki language provider

* Explore: fixes formatting

* Explore: updates grafana-data datasource types - replaces strings with explore mode enum

* Explore: updates loki explore query field props to take ReactNode

* Explore: updates the way we calculate loki query lines limit to fall back to 0 lines on negative or invalid input instead of datasource maxLines

* Explore: updates result processor get logs result method to avoid counting invalid/negative line limits

* Explore: updates loki result transformer to process only an appropriate slice of a result instead of an entire one

* Explore: adds a method for query limit preprocessing/mapping

* Explore: updates loki datasource run range query with fallback method to use options.maxDataPoints in dashboards

* Explore: removes unnecessary maxlineslimt from getLogsResult in resultProcessor

* Explore: moves line limit to metadata

* Explore: adds an ability to specify input type of extra field

* Explore: updates LokiExploreQueryEditor - adds an input type

* Explore: updates LokiExploreQueryEditor to run queries when maxLines is positive

* Explore: fixes failing import of ExploreMode

* Explore: fixes reducers test imports formatting

* Explore: updates Loki extra field with min value set to 0

* Explore: exports LokiExploreExtraFieldProps

* Explore: adds render test of LokiExploreQueryEditor

* Explore: adds LokiExploreQueryEditor snapshot

* Explore: updates LokiExploreQueryEditor onChangeQueryLimit method to prevent it from running when query input is empty - fixes cheatsheet display issue

* Explore: updates Loki editor snapshots

* Explore: fixes typo in test set name in LokiExploreQueryEditor

* Explore: adds a render test of LokiExploreExtraField

* Explore: fixes typo in LokiExploreQueryEditor

* Explore: updates LokiExploreQueryEditor snapshot due to timezone issues

* Explore: updates LokiExploreExtraField to export both functional component and a version using memo

* Explore: updates LokiExploreQueryEditor to export both functional component and memoized function

* Explore: updates LokiExploreQueryEditor - removes unnecessary react fragment

* Explore: updates LokiExploreQueryEditor snapshot

* Explore: adds LokiExploreQueryEditor tests for different explore mode cases

* Explore: fixes Loki datasource and result transformer

* Explore: updates LokiExploreQueryEditor snapshot

* Explore: updates LokiExploreQueryEditor tests and test setup

* Explore: updates LokiExploreQueryEditor - refactors component

* Explore: updates LokiExploreQueryEditor to use default import from LokiExploreExtraField

* Explore: updates LokiExploreQueryEditor snapshot

* Explore: fixes formatting

* Explore: updates LokiExploreQueryEditor max lines change

* Explore: updates LokiExploreQueryEditor tests checking ExtraFieldElement

* Explore: adds mock loki datasource to LokiExploreQueryEditor

* Explore: updates LokiExploreQueryEditor test mock - adds language provider

* Explore: updates LokiExploreQueryEditor snapshot

* Explore: updates Loki ResultTransformer to filter out rows on limit - logic to be moved into a component with new form styles

* Explore: updates LokiExploreQueryEditor tests
2020-02-06 12:34:52 +00:00
Ivana Huckova 9b9f1ad1b9 @grafana/ui: Fix displaying of bars in React Graph (#21968) 2020-02-06 13:30:41 +01:00
Huan Wang 8b632ac029 Prometheus: Do not show rate hint when increase function is applied (#21955) 2020-02-06 12:56:53 +01:00
Ivana Huckova 89d1ab37de Elastic: Limit the number of datapoints for the counts query (#21937) 2020-02-06 11:06:26 +01:00
Tobias Skarhed 165c3adf1d Storybook: Update categories (#21898)
* Update paths for Storybook categories

* Restructure categories
2020-02-06 10:32:35 +01:00
Leonard Gram 59530e4758 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.
2020-02-06 08:49:58 +02:00
Ivana Huckova c16040a4a6 Docs: Documentation for 6.6 Explore and Logs panel features (#21754)
* Add documentation for explore and logs panel features

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

* Docs: Update

* Update docs/sources/features/panels/logs.md

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

* Update docs/sources/features/panels/logs.md

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

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

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

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

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

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

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

Co-authored-by: Diana Payton <52059945+oddlittlebird@users.noreply.github.com>
2020-02-05 22:01:34 +01:00
Sofia Papagiannaki 5ae95190ed 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>
2020-02-05 16:52:41 +01:00
Hugo Häggmark 26d71c90f5 Prometheus: Fixes default step value for annotation query (#21934)
Fixes #21914
2020-02-05 16:40:37 +01:00
Dominik Prokop 90d415861d Dashboard edit: Fix 404 when making dashboard editable 2020-02-05 13:29:11 +01:00
Arve Knudsen b84e651eac Publish from new master pipeline (#21813)
* CircleCI: Move postgres/mysql integration tests to step after linting
* CircleCI: Implement publishing of packages and Docker images for new master pipeline
2020-02-05 12:22:13 +01:00
Mark Carey 28230bbf52 Metrics: Adds back missing summary quantiles (#21858)
Adds back missing summary quantiles which was mistakenly
removed in v6.6.0. 

Fixes #21857
2020-02-05 11:11:14 +01:00
jianweizhang 140e267639 delete redundant alias (#21907)
* delete redundant alias

Fixes #21906
2020-02-05 09:00:40 +01:00
Ivana Huckova 88226672f1 grafana/ui: Fix displaying of bars in React Graph (#21922) 2020-02-04 23:14:42 +01:00
Diana Payton caac9d83ca Docs: Added developer-resources.md (#21806)
* Added developer-resources.md

Added Developer resources and updated menu.yaml file

* Updated menu.yaml

Updated menu.yaml, changed folder name, and removed redundant file building_from_source.md and containing folder

* Removed links to deleted file
2020-02-04 13:40:25 -08:00
Erik Sundell 78b1ab8360 Fix formatting (#21894) 2020-02-04 14:16:56 +01:00
Tobias Skarhed 5c54bd1e98 New Select: Blur input on select (#21876) 2020-02-04 11:35:18 +01:00
Alex Khomenko 3d8317a747 Fix/add default props to prom query editor (#21908)
* Plugins: Add default query to PromQueryEditor

* Plugins: Update PromQueryEditor snapshot

* Plugins: Use Partial for default PromQuery
2020-02-04 11:37:18 +02:00
Edgar Orendain bb8e15ceab Graph Panel: Fixed typo in thresholds form (#21903) 2020-02-04 10:04:21 +01:00
Tobias Skarhed 959c49f6d8 Disable logging in button (#21900) 2020-02-04 09:41:11 +01:00
Adrien F 5c89a8451e DatasourceEditor: Add UI to edit custom HTTP headers (#17846)
* DatasourceEditor: Add UI to edit custom HTTP headers

Support for custom headers was added in #11643 but was missing in the UI.

Fixes #12779

* Review

* Layout updates

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-02-04 09:25:10 +01:00
Jorge Luis Betancourt 96099636dc 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
2020-02-04 08:42:26 +01:00
Jacopo Rota 21340a5ece Docs: Update dashboard.md (#21896)
Fix typo in templating JSON
2020-02-03 08:42:35 -08:00
Diana Payton 98c912e1a7 Docs: Update dashboard.md (#21200) 2020-02-03 08:00:08 -08:00
Stefan 0953dae221 Docs: Make upgrading instructions for Docker work (#21836)
One has to use "grafana/grafana" image - only using "grafana" will
result in an error message like this:
Error response from daemon: pull access denied for grafana, repository does not exist or may require 'docker login'

It's a good idea to daemonize new container. The install instructions
for Docker do this, and this instructions assume that running container
already is daemonized (otherwise you wouldn't have to stop it).

Best practise would be to create a new container, then stop old one and
start new one - this would reduce downtime. To keep instructions simple
and understandable, I didn't include that.
2020-02-03 07:59:24 -08:00
Shavonn Brown c4e3110034 deps so can mock in tests (#21827) 2020-02-03 09:07:50 -05:00
Damien Castanier 7720bfab95 Templating: Add new global built-in variables (#21790)
* Add new global built-in variables #20523
new branch from master

* #20523 Revert change on __from and __to like requested

* #20523 simplify contextSrv access

* #20523 simplify contextSrv access

* #20523 repair jest tests
2020-02-03 08:57:38 +01:00
Peter Holmberg 93195facba Fix: Reimplement HideFromTabs in Tabs component (#21863)
* reimplement hidefromtabs

* remove console log

* going with option b instead

* less explicit
2020-02-03 08:16:48 +01:00
Ryan McKinley c140d110c6 grafana/data: Remove unused PanelSize interface (#21877) 2020-02-03 08:14:34 +01:00
Dominik Prokop 249ae05281 New Select: Extend creatable select api (#21869) 2020-01-31 13:47:34 +01:00
Marcus Efraimsson 0390b5601e Backend plugins: Implement support for resources (#21805)
Implements initial support for resources using v0.14.0 of SDK.

Ref #21512
2020-01-31 11:15:50 +01:00
Leonard Gram 5345868148 Docker: change plugin path in custom docker (#21837)
This is to make the custom dockerfiles compatible with our instruction
to use persitent volumes for the /var/lib/grafana dir. Without this
change the contents of that folder will be overshadowed by the persitent
volume and none of the pre-installed plugins will be available.
2020-01-30 11:17:41 -08:00
Marcus Efraimsson 6e80315531 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
2020-01-30 17:35:32 +01:00
Diana Payton aa6ee5ef38 Docs: Update _index.md (#21700) 2020-01-30 07:46:45 -08:00
Dominik Prokop f8654a3a2f grafana/toolkit: Fix failing linter when there were lint issues (#21849) 2020-01-30 15:42:53 +01:00
Torkel Ödegaard b7faa9023e DatasourceSettings: Fixed issue navigating away from data source settings page (#21841) 2020-01-30 14:40:55 +01:00
Dominik Prokop 050d902ed1 AppPageCtrl: Fix digest issue with app page initialisation (#21847) 2020-01-30 13:47:11 +01:00
Lukas Siatka c425a837a9 Explore: adds basic tests to TableContainer checking the render and output on 0 series returned 2020-01-30 12:02:50 +00:00
Lukas Siatka f7fe4d4865 Explore: adds MetaInfoText tests 2020-01-30 12:02:50 +00:00
Lukas Siatka 61b5471ed8 Explore: adds export of MetaItem and its props 2020-01-30 12:02:50 +00:00
Lukas Siatka 865a8dd355 Explore: updates TableContainer to use MetaInfoText component 2020-01-30 12:02:50 +00:00
Lukas Siatka d99121d6fa Explore: updates Logs component to use MetaInfoText component 2020-01-30 12:02:50 +00:00
Lukas Siatka a5ca5dffa4 Explore: adds MetaInfoText component 2020-01-30 12:02:50 +00:00
Lukas Siatka db3797c1d2 Explore: removes unnecessary styles for panel logs 2020-01-30 12:02:50 +00:00
Lukas Siatka e230e1df96 Explore: updates Table container render to avoid rendering table on empty result 2020-01-30 12:02:50 +00:00
Lukas Siatka 2bdbdd6930 Explore: updates explore table container to show a span on 0 series returned 2020-01-30 12:02:50 +00:00
Arve Knudsen 57a0f0fe92 docs/cli: Fix documentation of reset-admin-password with --homepath (#21840) 2020-01-30 11:58:38 +01:00
Steven Vachon 9005b484f0 Replace ts-loader with Babel (#21587)
* Applied prettier to relevant webpack configs

* Replaced ng-annotate with babel-plugin-angularjs-annotate

… and replaced ts-loader with @preset/typescript

* Removed redundant import

… that is problematic with Babel's module resolver

* Updated lockfile

* Traspile debug package to es5 for PhantomJS support

* Update babel to latest version

* Remove @babel/poolyfill and url search params polyfill

* Add ts-loader to grafana-ui dependencies

* Update prod webpack build to use cor-js 3

* Applied prettier to relevant webpack configs

* Replaced ng-annotate with babel-plugin-angularjs-annotate

… and replaced ts-loader with @preset/typescript

* Updated lockfile

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-30 10:54:11 +01:00
Emil Tullstedt a0ad81180e Docs: Add information about license expiration (#21578)
* Docs: Add information about license expiration

* Docs: Improve clarity of license expiration page

* review comments

* change renewal instructions to a list

* language improvements

* review fixes
2020-01-30 09:41:59 +01:00
Dominik Prokop 1ef91e3fc4 Fix digest issue with query part editor's actions menu (#21834) 2020-01-30 09:13:22 +01:00
Torkel Ödegaard 0fd088c757 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>
2020-01-30 09:06:23 +01:00
Evgeny Bibko 7638156666 TimePicker: Should display in kiosk mode (#21816)
* Timepicker class fixed

* Missed arrow in dashboard title
2020-01-30 08:07:50 +01:00
Marcus Andersson 6dada090b3 Chore: Upgrade Storybook to 5.3.9 (#21550)
* Upgraded to latest stroybook.

* Upgraded to version 5.3.9

* updated yarn.lock file.
2020-01-30 07:49:43 +01:00
Dominik Prokop 9882464505 Table: Make the height of the table include header cells (#21824)
* Mak table panel with padding

* Make table have a correct height
2020-01-30 07:47:20 +01:00
Torkel Ödegaard 13948c0b76 StatPanels: Fixed migration from old singlestat and default min & max being copied even when gauge was disbled (#21820) 2020-01-29 19:42:07 +00:00
Diana Payton c344a3a66e Docs: Update docker image run and configuration instructions (#21705)
* Update docker.md

* Update configuration.md

* Update configuration.md

* Update configuration, docker, and add configure-docker

* Moe Docker updates

* Update docker.md

* deleted build custom docker image file and moved content

* Update docker.md

* Minor updates

Mostly grammar fixes

* Update docs/sources/installation/docker.md

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

* Updated config-docker and configuration

Moved environment variables information back to configuration.md

* Update docs/sources/installation/configuration.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

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

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

* Update docs/sources/installation/docker.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

* Update docs/sources/installation/docker.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

* Update docs/sources/installation/docker.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

* Applied edits

* Update _index.md

Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
Co-authored-by: Leonard Gram <leo@xlson.com>
2020-01-29 09:23:28 -08:00
Ryan McKinley c15ddc295c DataFrame: update golden test files (#21808) 2020-01-29 08:30:03 -08:00
Diljit PR 63dfc892f1 Docs: Alphabetize datasource names in sidebar under docs/Features/DataSources (#21740)
This alphabetizes names in the sidebar docs/features/DataSources and
also includes a fix in typo for the item "TestData".
2020-01-29 08:28:28 -08:00
Peter Holmberg 5203376bc5 Inspect: Add error tab (#21565)
* add error tab

* conditional tabs

* feedback from review

* expose lastResult via function

* remove todo and weird char

* fixing overflow states and height of tabcontent

* style fixes

* more changes to scroll handling

* fixing null checks

* Change drawer content padding

* Add scroll in the story

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-29 15:41:25 +01:00
Dominik Prokop 80a2dce994 Select: Fix direct usages of react-select to make the scroll great again (#21822) 2020-01-29 14:52:43 +01:00
michael-az 427629b4d5 TablePanel: display multi-line text (#20210)
* TablePanel: display multi-line text

* Fix tests
2020-01-29 13:18:34 +00:00
Marcus Andersson ffe0a1f975 Fixed strict errors (#21823) 2020-01-29 14:18:06 +01:00
Marcus Andersson cab082438e 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.
2020-01-29 11:40:30 +01:00
Tobias Skarhed 8aed87394d Select: Fix scroll issue (#21795) 2020-01-29 09:08:52 +01:00
Hugo Häggmark 08d330b406 Fix: Fixes user logout for datasourceRequests with 401 from datasource (#21800) 2020-01-29 06:24:15 +01:00
Shavonn Brown 0fa20cb231 Azure Monitor: Fix Application Insights API key field to allow input (#21738)
* Fix update api key input

* update snapshot
2020-01-28 23:47:34 -05:00
Andrej Ocenas 85dad73e9d Influxdb: Fix cascader when doing log query in explore (#21787)
* Fix cascader options and add tests

* Add comment

* Fix typo
2020-01-28 18:12:15 +01:00
Marcus Efraimsson b4570b4996 Devenv: OpenTSDB dashboard (#21797)
Simple test dashboard for OpenTSDB.
2020-01-28 18:02:33 +01:00
Leonard Gram 20e96a9241 MSI: License for Enterprise (#21794) 2020-01-28 16:18:00 +01:00
Marcus Efraimsson b75412d6ae OpenTSDB: Add back missing ngInject (#21796)
Adds back missing ngInject on datasource constructor
to make it work again.

Fixes #21770
2020-01-28 16:17:27 +01:00
sv5d ae3d25986d Heatmap: Legend color range is incorrect when using custom min/max (#21748)
Fix opacity and color scales initializations which took wrong range 
arguments (current data min/max instead of custom range min/max).

Fixes #18139
2020-01-28 13:58:28 +01:00
Emil Tullstedt e95bcc4ba2 Config: add meta feature toggle (#21786) 2020-01-28 12:00:07 +01:00
Ivana Huckova b3bcbcccce Logs panel: Rename labels to unique labels (#21783) 2020-01-28 11:23:22 +01:00
Carl Bergquist 5dbd7c9e58 Add link guide for installing new renderer (#21702) 2020-01-28 10:57:55 +01:00
Hugo Häggmark ea18779781 Chore: Lowers strict error limit (#21781) 2020-01-28 10:44:48 +01:00
Hugo Häggmark 9e5eb05769 Chore: Removes Cypress record (#21782) 2020-01-28 10:44:28 +01:00
Marcus Efraimsson d5d5f1858c Docs: Document configuration of console, file and syslog log formats (#21768)
Adds missing configuration documentation of the different 
log formats; console, file and syslog.

Ref #21765
2020-01-28 10:38:31 +01:00
Hugo Häggmark 2acfbdb768 Annotations: Fixes this.templateSrv.replace is not a function error for Grafana datasource (#21778) 2020-01-28 09:41:19 +01:00
Émile Fugulin be09722d84 Fix typos in the communication documentation (#21774) 2020-01-28 09:26:59 +01:00
Hugo Häggmark 044bea0935 Chore: Fixes various strict null errors (#21763)
* Chore: Removes strict null checks in ReducerTester

* Chore: Fixes strict null errors in ConfigureStore

* Chore: Fixes strict null errors in reducer tests

* Chore: Fixes strict null errors in reducers tests

* Chore: Fixes strict null errors in reducers tests

* Chore: Fixes strict null errors in toggleLogActionsMiddleware

* Chore: Fixes strict null errors in navModelReducer

* Core: Fixes strict null errors in public/app/features/admin/state

* Chore: Fixes strict null errors in public/app/features/dashboard/state/reducers.test.ts

* Chore: Fixes strict null errors in public/app/features/explore/state/reducers.test.ts

* Chore: Fixes strict null errors in public/app/features/datasources/state/reducers.test.ts

* Chore: Fixes strict null errors in public/e2e-test/scenarios/templating/templatevariables-crud.test.ts

* Chore: Fixes strict null errors in public/app/features/dashboard/containers/DashboardPage.test.tsx
2020-01-28 09:13:56 +01:00
Dominik Prokop 6c32a4c0ab Forms: Allow custom value creation in async select (#21759) 2020-01-28 08:38:21 +01:00
Tobias Skarhed 1ad569c470 Chore: bump react-select to 3.0.8 (#21638)
* Update imports

* Solve compability issues with react-select

* Fix frozen lockfile

* Update snapshots

* Change name to something less general

* Fix proposed changes

* Fix imports

* Fix changes
2020-01-28 07:43:18 +01:00
Ryan McKinley 67c5531961 grafana/data: Add type for secure json in DataSourceAPI (#21772) 2020-01-28 07:13:20 +01:00
Andrej Ocenas c3a19c6d98 Influxdb: Fix issues with request creation and parsing (#21743) 2020-01-27 18:21:41 +01:00
kay delaney 7569a8608a Explore/Loki: Fix handling of legacy log row context request (#21767)
Closes #21695
2020-01-27 15:45:01 +00:00
Leonard Gram 00fa30f243 6.6.0 latest (#21762) 2020-01-27 15:35:35 +01:00
Hugo Häggmark 0e4f7e1d9a Docs: Updates Changelog for 6.6.0 (#21753)
* Docs: Adds backendSrv notice

* Update CHANGELOG.md

Co-Authored-By: Leonard Gram <leo@xlson.com>

* Docs: Updates notice placement

* Changelog: v6.6.0

Co-authored-by: Leonard Gram <leo@xlson.com>
2020-01-27 15:10:32 +01:00
Peter Eckel 50993b5dfd Docs: Update image rendering (#21650)
This is a small documentation update for the situation that led to 
#19842 in the first place. It describes a procedure required to 
provide root certificates to the headless Chrome instance used 
by the Grafana image renderer plugin.
2020-01-27 13:57:50 +01:00
Samuel Alfageme 261191ffd7 Docs: misc. nitpicks to the HTTP API docs (#21758)
* Replace bash/json with http in http_api codeblocks

Since http is used elsewhere on the API docs and makes the
markdown rendering look different on the blocks that use bash/json

* Fix the annotations API link on 'Features'

- Noticed the Features/Dashboard Features/Annotations link pointing to
the HTTP API was linking itself instead of '../http_api/annotations.md'.
- Also add a link on Dashboard Export and Import to its HTTP API.

* Add missing links to features in API Index

Noticed there was 3 missing references in the API docs index.
- https://grafana.com/docs/grafana/latest/http_api/playlist
- https://grafana.com/docs/grafana/latest/http_api/datasource_permissions
- https://grafana.com/docs/grafana/latest/http_api/external_group_sync

Last two are Grafana Enterprise -only, so created a separate subsection
for them.
2020-01-27 13:41:15 +01:00
Marcus Andersson 1c0d022ac2 Dashboard: fixes issue with UI not being re-rendered after moving dashboard 2020-01-27 11:30:16 +01:00
Marcus Andersson 4e3ff19689 Dashboard: fixed issues with re-rendering of UI when importing dashboard (#21723)
* Fixed issues with angular digest and new backendSrv.
* Fixed failing tests.
2020-01-27 11:29:46 +01:00
Marcus Andersson f46ee12364 Build: Added devenv docker block for testing grafana with traefik. 2020-01-27 11:29:04 +01:00
Sofia Papagiannaki 8f2f07cabf Update What's new in 6.6 (#21745)
* APT and YUM repositories

* Add julie's fixes

* Fix links

* Docs: Adds backendSrv notice (#21752)

* Docs: Adds backendSrv notice

* Update docs/sources/guides/whats-new-in-v6-6.md

* Add links to installation notes

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-27 11:11:08 +02:00
Emil Tullstedt 3fabbbff4d Footer: Display Grafana edition (#21717)
Co-authored-by: Torkel Ödegaard <torkel@grafana.com>
2020-01-27 09:24:44 +01:00
Hugo Häggmark 84ef0ebb17 BackendSrv: Fixes POST body for form data (#21714)
* BackendSrv: Fixes POST body for form data
Fixes #21688

* Tests: Changes to POST examples
2020-01-27 08:47:27 +01:00
Erik Sundell 5166ffca33 Docs: Update CloudWatch and Stackdriver docs for 6.6 (#21679)
* Add info about meta data labels

* Add part about auto period calculations in cloudwatch

* Minor adjustments

* Updates after feedback

* Add more context

* Clarify what a metadata label is
2020-01-27 08:35:48 +01:00
Hugo Häggmark 18788727f4 BackendSrv: Adds missing props back to response object in datasourceRequest (#21727)
* BackendSrv: Adds status, headers, statusText, redirect, type and url back to response
Fixes #21662

* BackendSrv: Adds request object back to datasourceRequest response
Fixes #21662
2020-01-27 07:25:24 +01:00
Andrej Ocenas 0fda3c4f44 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
2020-01-26 23:13:56 +01:00
Ryan McKinley ed140346a7 Toolkit: add canvas-mock to test setup (#21739) 2020-01-25 08:11:08 -08:00
Tobias Skarhed 751eb2c8bb TablePabel: Sanitize column link (#21735) 2020-01-25 16:59:58 +01:00
Arve Knudsen 089162b0be Docs: Fix getting started links on Windows installation page (#21724) 2020-01-24 19:33:11 +01:00
Leonard Gram 90f552b6b6 Docs: Enterprise 6.6 (#21666)
* Docs: gitlab team-sync documented correctly

* docs: initial docs for whitelabeling

* Docs: enterprise repositories

* Docs: rpm enterprise install

* Docs: re-structured the rpm install page to be more similar to the deb page

* Docs: responded to review feedback

* Docs: recommends the enterprise edition

* Update docs/sources/installation/debian.md
2020-01-24 16:33:59 +01:00
Tobias Skarhed 4c41d7e7fb Template vars: Add error message for failed query var (#21731) 2020-01-24 15:55:36 +01:00
Andrej Ocenas 39f7cff7c7 Loki: Refactor editor and syntax hooks (#21687) 2020-01-24 15:07:45 +01:00
Torkel Ödegaard b28eac2626 Devenv: Fixed devenv dashboard template var datasource (#21715) 2020-01-24 12:36:09 +01:00
Torkel Ödegaard 198f561541 Footer: added back missing footer to login page (#21720) 2020-01-24 12:35:54 +01:00
Marcus Efraimsson 63a912629d 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.
2020-01-24 12:00:52 +01:00
Dominik Prokop d9e1cb44c8 Annotations: Fix issue with annotation queries editors (#21712) 2020-01-24 10:55:54 +01:00
Dominik Prokop 5e87af8b2a grafana/ui: Remove path import from grafana-data (#21707) 2020-01-24 10:02:11 +01:00
Ivana Huckova e75840737e Loki: Fix Loki with repeated panels and interpolation for Explore (#21685) 2020-01-24 09:50:09 +01:00
Arve Knudsen f91a495875 CircleCI: Add workflow for building with Grafana Build Pipeline (#21449)
* CircleCI: Add workflow for building with grabpl
2020-01-24 09:49:02 +01:00
Torkel Ödegaard 8266959681 StatPanels: Fixed possible migration issue (#21681) 2020-01-24 07:46:33 +01:00
Shavonn Brown b3d5e678f4 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
2020-01-23 20:37:20 -05:00
Sofia Papagiannaki c0b839eff7 Docs: Update what's new in 6.6 (#21699)
* Update what's new in 6.6

* Add upgrading and changelog sections

* Remove lines

* Update cookie management section

* Update Bar Gauge unfilled option

* Add missing dot
2020-01-23 20:41:27 +02:00
Marcus Efraimsson b0dfa48f04 Docs: Fix broken link in upgrade notes (#21698)
Fixes a broken link in the 6.6 upgrade notes.
2020-01-23 18:57:10 +01:00
John Dyer 0fcb2d0b2f Alerting: Support passing tags to Pagerduty and allow notification on specific event categories (#21335)
Add support for passing tags to Pagerduty and allow notification 
on specific event categories such as Class, Group and Component.

Ref #19912, #19913

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2020-01-23 13:20:07 +01:00
Dominik Prokop cdfac32dfd 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
2020-01-23 13:10:38 +01:00
kay delaney 87af7d9987 backendSrv: Only stringifies request body if payload isn't already a string (#21639)
* backendSrv: Only stringifies request body if payload isn't already a string

* Add test cases to verify behaviour
2020-01-23 08:54:20 +00:00
Sofia Papagiannaki 3fd8505195 Update changelog generation to ignore not merged pull requests (#21641) 2020-01-23 10:12:19 +02:00
Torkel Ödegaard a734cd3640 StatPanel: minor height tweak (#21663) 2020-01-23 08:51:30 +01:00
Dominik Prokop 814020c05c 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
2020-01-23 08:33:39 +01:00
Erik Sundell 296af36a6f Run query when region, namespace and metric changes (#21633) 2020-01-22 21:37:40 +01:00
kay delaney a115729c55 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
2020-01-22 16:10:19 +00:00
Sofia Papagiannaki 2283ceec09 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>
2020-01-22 17:56:12 +02:00
Dominik Prokop 5afcf79c59 Migrations: migrate admin user create page (#21506)
* Create basic react page for AdminUserCreate

* Forms.Field - render asterisk when field is marked as required

* Add validation to user create form wih react-hook-form

* Remove Angular code for UserCreatePage

* Remove commented route for admin settings

* Remove unused import

* Hide react-hooks-form behind Form component

* Fix webkit autofill

* Webkit autofill on inpiuts - bring back focus shadow

* Temporarily fix story (before 21635 is merged)

* Form: docs and minor updates to new form elements (#21635)

* Allow Switch, checkbox to be uncontrolled, forward refs, styles update

* Add Form docs

* User create page update

* Remove unused import

* Apply review notes
2020-01-22 15:26:03 +01:00
Torkel Ödegaard 36aab3a738 Docs: Whats new updates (#21664)
* Docs: Whats new updates

* Add cloudwatch and stackdriver paragraphs

* Minor changes

* Add link helper to render gif

* Docs: what's new updates

Co-authored-by: Erik Sundell <erik.sundell87@gmail.com>
2020-01-22 14:02:47 +01:00
Erik Sundell 685c9043a8 CloudWatch: Auto period snap to next higher period (#21659)
* Snap to next higher period instead of closest

* Adjust period calc
2020-01-22 13:43:36 +01:00
Torkel Ödegaard 741e1bb7e9 Login: Better auto sizing of login logo (#21645) 2020-01-22 11:06:12 +01:00
Hugo Häggmark 5dddc91ba5 Chore: Fixes PhantomJs by adding polyfills for fetch and AbortController (#21655)
* Chore: Fixes PhantomJs rendering

* Docs: Updated docs

* Update contribute/style-guides/e2e.md

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

* Docs: Updates docs according to PR comments

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-22 08:15:31 +01:00
Torkel Ödegaard c228cde2b6 Alert: Minor tweak to work with license warnings (#21654) 2020-01-22 07:53:24 +01:00
Ryan McKinley aee07949a3 Toolkit: copyIfNonExistent order swapped (#21653) 2020-01-21 22:10:16 -08:00
basefas 6553d775d5 Doc: Update configuration.md (#21602)
Minor format fix
2020-01-21 10:31:30 -08:00
Ivana Huckova 6feb4a3221 Explore: Fix log level color and add tests (#21646) 2020-01-21 17:20:22 +01:00
Torkel Ödegaard 92ef8644c5 Templating: A way to support object syntax for global vars (#21634) 2020-01-21 16:06:04 +01:00
kenju 935d447c6a CloudWatch: Add DynamoDB Accelerator (DAX) metrics & dimensions (#21644)
Closes #10494
2020-01-21 15:19:39 +01:00
Leonard Gram 4a1f993fd1 next version 6.7.0 (#21617)
* next version 6.7.0

* updates grafana/toolkit and co

* Verison: manually fixed version
2020-01-21 15:15:38 +01:00
Leonard Gram e8be2bbbec latest.jso: Update latest beta 6.6.0-beta1 (#21623) 2020-01-21 15:14:03 +01:00
Torkel Ödegaard 35d4aef5f8 Docs: Update changelog with attribution (#21637) 2020-01-21 15:12:05 +01:00
Torkel Ödegaard 46ccfacb2b Docs: Updated what's new article (#21624)
* Docs: Updated what's new articel

* fixed spelling

* Updated
2020-01-21 11:54:24 +01:00
Emil Hessman 25e2f1c2dd Plugins: Apply adhoc filter in Elasticsearch logs query (#21346)
Fixes #21086
2020-01-21 09:39:55 +00:00
Leonard Gram 07d96fe486 Changelog: v6.6.0-beta1 (#21619)
* Changelod: v6.6.0-beta1

* Changelog: grafana/ui v6.6.0-beta.1.0

* Changelog: moved toolkit to its own file

* Changelog: fix version

* Remove closed PR

Co-authored-by: Sofia Papagiannaki <papagian@users.noreply.github.com>
2020-01-21 10:10:16 +01:00
kay delaney cf2cc71393 Chore: Remove angular dependency from backendSrv (#20999)
* Chore: Remove angular dependency from backendSrv

* Refactor: Naive soultion for logging out unauthorized users

* Refactor: Restructures to different streams

* Refactor: Restructures datasourceRequest

* Refactor: Flipped back if statement

* Refactor: Extracted getFromFetchStream

* Refactor: Extracts toFailureStream operation

* Refactor: Fixes issue when options.params contains arrays

* Refactor: Fixes broken test (but we need a lot more)

* Refactor: Adds explaining comments

* Refactor: Adds latest RxJs version so cancellations work

* Refactor: Cleans up the takeUntil code

* Refactor: Adds tests for request function

* Refactor: Separates into smaller functions

* Refactor: Adds last error tests

* Started to changed so we require getBackendSrv from the @grafana-runtime when applicable.

* Using the getBackendSrv from @grafana/runtime.

* Changed so we use the getBackendSrv from the @grafana-runtime when possible.

* Fixed so Server Admin -> Orgs works again.

* Removed unused dependency.

* Fixed digest issues on the Server Admin -> Users page.

* Fix: Fixes digest problems in Playlists

* Fix: Fixes digest issues in VersionHistory

* Tests: Fixes broken tests

* Fix: Fixes digest issues in Alerting => Notification channels

* Fixed digest issues on the Intive page.

* Fixed so we run digest after password reset email sent.

* Fixed digest issue when trying to sign up account.

* Fixed so the Server Admin -> Edit Org works with backendSrv

* Fixed so Server Admin -> Users works with backend srv.

* Fixed digest issues in Server Admin -> Orgs

* Fix: Fixes digest issues in DashList plugin

* Fixed digest issues on Server Admin -> users.

* Fix: Fixes digest issues with Snapshots

* Fixed digest issue when deleting a user.

* Fix: Fixes digest issues with dashLink

* Chore: Changes RxJs version to 6.5.4 which includes the same cancellation fix

* Fix: Fixes digest issue when toggling folder in manage dashboards

* Fix: Fixes bug in executeInOrder

* Fix: Fixes digest issue with CreateFolderCtrl and FolderDashboardsCtrl

* Fix: Fixes tslint error in test

* Refactor: Changes default behaviour for emitted messages as before migration

* Fix: Fixes various digest issues when saving, starring or deleting dashboards

* Fix: Fixes digest issues with FolderPickerCtrl

* Fixed digest issue.

* Fixed digest issues.

* Fixed issues with angular digest.

* Removed the this.digest pattern.

Co-authored-by: Hugo Häggmark <hugo.haggmark@gmail.com>
Co-authored-by: Marcus Andersson <systemvetaren@gmail.com>
2020-01-21 10:08:07 +01:00
Tobias Skarhed 6ff315a299 Emotion: Add main package with version 10 (#21560)
* Update version and snapshots

Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
2020-01-21 07:40:05 +01:00
Ryan McKinley 5f14d62c0d TestData: allow negative values for random_walk parameters (#21627) 2020-01-20 10:50:42 -08:00
Sofia Papagiannaki 2021a2df74 Update musl checksums (#21621) 2020-01-20 19:55:55 +02:00
Erik Sundell a1733bb412 CloudWatch: Expand dimension value in alias correctly (#21626)
* Make sure dimension value is being returned, and not just label

* Fix typo
2020-01-20 18:51:32 +01:00
Marcus Efraimsson 5f332682ec Devenv: InfluxDB logs dashboard (#21620)
Test dashboard for using influxdb with logs panel
2020-01-20 17:00:37 +01:00
Leonard Gram 7e0890d57d Build: adds missing filters required to build oss msi (#21618) 2020-01-20 14:37:34 +01:00
6062 changed files with 165867 additions and 1272148 deletions
+8 -8
View File
@@ -1,19 +1,19 @@
[run]
init_cmds = [
["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"]
["go", "run", "build.go", "-dev", "build-cli"],
["go", "run", "build.go", "-dev", "build-server"],
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
]
watch_all = true
follow_symlinks = true
watch_dirs = [
"$WORKDIR/pkg",
"$WORKDIR/public/views",
"$WORKDIR/conf",
"$WORKDIR/pkg",
"$WORKDIR/public/views",
"$WORKDIR/conf",
]
watch_exts = [".go", ".ini", ".toml", ".template.html"]
build_delay = 1500
cmds = [
["go", "run", "-mod=vendor", "build.go", "-dev", "build-server"],
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
["go", "run", "build.go", "-dev", "build-server"],
["./bin/grafana-server", "-packaging=dev", "cfg:app_mode=development"]
]
+1150 -1252
View File
File diff suppressed because it is too large Load Diff
+3
View File
@@ -16,6 +16,9 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.{js,ts,tsx,scss}]
quote_type = single
[*.md]
trim_trailing_whitespace = false
+4
View File
@@ -0,0 +1,4 @@
{
"extends": ["@grafana/eslint-config"],
"root": true
}
+8 -1
View File
@@ -13,4 +13,11 @@
# Documentation owner: Diana Payton
/docs/ @oddlittlebird
/contribute/ @oddlittlebird @marcusolsson
/contribute/ @oddlittlebird @marcusolsson
# @grafana/ui component documentation
*.mdx @marcusolsson @jessover9000
# Backend code
*.go @grafana/backend-platform
go.mod @grafana/backend-platform
go.sum @grafana/backend-platform
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
id: publish
with:
repository: grafana/website
branch: docs-grafana
branch: master
host: github.com
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
source_folder: docs/sources
+14 -3
View File
@@ -11,6 +11,10 @@ awsconfig
/public/views/error.html
/emails/dist
/reports
/e2e/tmp
.yarnrc
.yarn/
vendor/
# Enterprise emails
/emails/templates/enterprise_*
@@ -81,6 +85,8 @@ debug.test
/devenv/bulk-dashboards/*.json
/devenv/bulk_alerting_dashboards/*.json
/devenv/datasources_bulk.yaml
/devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml
/scripts/build/release_publisher/release_publisher
*.patch
@@ -89,6 +95,7 @@ debug.test
/packages/**/dist
/packages/**/compiled
/packages/**/.rpt2_cache
/packages/**/tsdoc-metadata.json
# Ignore go local build dependencies
/scripts/go/bin/**
@@ -100,6 +107,10 @@ compilation-stats.json
/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
/e2e/server.log
/e2e/suite1/screenshots
!/e2e/suite1/screenshots/expeced/*
/e2e/suite1/videos/*
# report dumping the whole system env
/report.*.json
+3
View File
@@ -0,0 +1,3 @@
module.exports = {
...require('@grafana/toolkit/src/config/prettier.plugin.config.json'),
};
+2124 -1504
View File
File diff suppressed because it is too large Load Diff
+3 -22
View File
@@ -1,12 +1,11 @@
# Golang build container
FROM golang:1.13.4-alpine
FROM golang:1.14.1-alpine
RUN apk add --no-cache gcc g++
WORKDIR $GOPATH/src/github.com/grafana/grafana
COPY go.mod go.sum ./
COPY vendor vendor
RUN go mod verify
@@ -18,16 +17,6 @@ RUN go run build.go build
# Node build container
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/
COPY package.json yarn.lock ./
@@ -35,8 +24,9 @@ COPY packages packages
RUN yarn install --pure-lockfile --no-progress
COPY Gruntfile.js tsconfig.json tslint.json .browserslistrc ./
COPY Gruntfile.js tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js ./
COPY public public
COPY tools tools
COPY scripts scripts
COPY emails emails
@@ -80,18 +70,9 @@ RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
# 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
COPY --from=1 /usr/src/app/tools ./tools
COPY tools/phantomjs/render.js ./tools/phantomjs/render.js
EXPOSE 3000
+7 -15
View File
@@ -1,9 +1,8 @@
FROM golang:1.13.4 AS go-builder
FROM golang:1.14.1 AS go-builder
WORKDIR /src/grafana
COPY go.mod go.sum ./
COPY vendor vendor/
RUN go mod verify
@@ -14,11 +13,6 @@ 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 ./
@@ -26,15 +20,16 @@ COPY packages packages
RUN yarn install --pure-lockfile
COPY Gruntfile.js tsconfig.json tslint.json .browserslistrc ./
COPY public public
COPY Gruntfile.js tsconfig.json .eslintrc .editorconfig .browserslistrc .prettierrc.js ./
COPY public public
COPY tools tools
COPY scripts scripts
COPY emails emails
ENV NODE_ENV production
RUN ./node_modules/.bin/grunt build
FROM ubuntu:18.10
FROM ubuntu:20.04
LABEL maintainer="Grafana team <hello@grafana.com>"
EXPOSE 3000
@@ -54,8 +49,8 @@ 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
# curl should be part of the image
RUN apt-get update && apt-get upgrade -y && apt-get install -y ca-certificates curl
RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
addgroup --system --gid $GF_GID grafana && \
@@ -71,14 +66,11 @@ RUN mkdir -p "$GF_PATHS_HOME/.aws" && \
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING" && \
chmod -R 777 "$GF_PATHS_DATA" "$GF_PATHS_HOME/.aws" "$GF_PATHS_LOGS" "$GF_PATHS_PLUGINS" "$GF_PATHS_PROVISIONING"
# 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
-1
View File
@@ -35,7 +35,6 @@ module.exports = function (grunt) {
config.libc = grunt.option('libc');
}
config.phjs = grunt.option('phjsToRelease');
config.pkg.version = grunt.option('pkgVer') || config.pkg.version;
console.log('Version', config.pkg.version);
+15 -2
View File
@@ -4,7 +4,7 @@
-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 run-frontend clean devenv devenv-down revive-alerting help
.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 protobuf help
GO = GO111MODULE=on go
GO_FILES ?= ./pkg/...
@@ -84,7 +84,10 @@ revive-alerting: scripts/go/bin/revive
@echo "lint alerting via revive"
@scripts/go/bin/revive \
-formatter stylish \
./pkg/services/alerting/...
-config ./scripts/go/configs/revive-strict.toml \
./pkg/services/alerting/... \
./pkg/services/provisioning/datasources/... \
./pkg/services/provisioning/dashboards/...
scripts/go/bin/golangci-lint: scripts/go/go.mod
@cd scripts/go; \
@@ -158,6 +161,16 @@ devenv-down: ## Stop optional services.
##@ Helpers
# We separate the protobuf generation because most development tasks on
# Grafana do not involve changing protobuf files and protoc is not a
# go-gettable dependency and so getting it installed can be inconvenient.
#
# If you are working on changes to protobuf interfaces you may either use
# this target or run the individual scripts below directly.
protobuf: ## Compile protobuf definitions
bash scripts/protobuf-check.sh
bash pkg/plugins/backendplugin/pluginextensionv2/generate.sh
clean: ## Clean up intermediate build artifacts.
@echo "cleaning"
rm -rf node_modules
+2 -6
View File
@@ -20,8 +20,6 @@ Upgrading Go or Node.js requires making changes in many different files. See bel
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.
All dependencies are vendored in the `vendor/` directory.
_Note:_ Since most developers of Grafana still use the `GOPATH` we need to specify `GO111MODULE=on` to make `go mod` and `got get` work as intended. If you have setup Grafana outside of the `GOPATH` on your machine you can skip `GO111MODULE=on` when running the commands below.
To add or update a new dependency, use the `go get` command:
@@ -35,16 +33,14 @@ GO111MODULE=on go get example.com/some/module/pkg
GO111MODULE=on go get example.com/some/module/pkg@vX.Y.Z
```
Tidy up the `go.mod` and `go.sum` files and copy the new/updated dependency to the `vendor/` directory:
Tidy up the `go.mod` and `go.sum` files:
```bash
# The GO111MODULE variable can be omitted when the code isn't located in GOPATH.
GO111MODULE=on go mod tidy
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.
You have to commit the changes to `go.mod` and `go.sum` before submitting the pull request.
## Node.js dependencies
+38
View File
@@ -0,0 +1,38 @@
{
"$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
"mainEntryPointFilePath": "<projectFolder>/dist/index.d.ts",
"bundledPackages": [],
"compiler": {},
"apiReport": {
"enabled": false
},
"docModel": {
"enabled": true,
"apiJsonFilePath": "<projectFolder>/../../reports/docs/<unscopedPackageName>.api.json"
},
"dtsRollup": {
"enabled": false
},
"tsdocMetadata": {},
"messages": {
"compilerMessageReporting": {
"default": {
"logLevel": "warning"
}
},
"extractorMessageReporting": {
"default": {
"logLevel": "warning"
},
"ae-internal-missing-underscore": {
"logLevel": "none",
"addToApiReportFile": false
}
},
"tsdocMessageReporting": {
"default": {
"logLevel": "warning"
}
}
}
}
-11
View File
@@ -40,7 +40,6 @@ var (
linuxPackageVersion string = "v1"
linuxPackageIteration string = ""
race bool
phjsToRelease string
workingDir string
includeBuildId bool = true
buildId string = "0"
@@ -52,7 +51,6 @@ var (
skipRpmGen bool = false
skipDebGen bool = false
printGenVersion bool = false
modVendor bool = true
)
func main() {
@@ -69,9 +67,7 @@ func main() {
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")
@@ -389,7 +385,6 @@ func createPackage(options linuxPackageOptions) {
if enterprise {
description += " Enterprise"
}
args = append(args, "--vendor", description)
if !enterprise {
args = append(args, "--license", "\"Apache 2.0\"")
@@ -459,9 +454,6 @@ func gruntBuildArg(task string) []string {
if libc != "" {
args = append(args, fmt.Sprintf("--libc=%s", libc))
}
if phjsToRelease != "" {
args = append(args, fmt.Sprintf("--phjsToRelease=%v", phjsToRelease))
}
if enterprise {
args = append(args, "--enterprise")
}
@@ -509,9 +501,6 @@ 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)
+98 -41
View File
@@ -230,6 +230,10 @@ snapshot_remove_expired = true
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
versions_to_keep = 20
# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
min_refresh_interval = 5s
#################################### Users ###############################
[users]
# disable user signup / registration
@@ -294,6 +298,9 @@ signout_redirect_url =
# This setting is ignored if multiple OAuth providers are configured.
oauth_auto_login = false
# OAuth state max age cookie duration. Defaults to 60 seconds.
oauth_state_cookie_max_age = 60
# limit of api_key seconds to live before expiration
api_key_max_seconds_to_live = -1
@@ -366,6 +373,34 @@ client_secret = some_secret
scopes = user:email
allowed_organizations =
#################################### Azure AD OAuth #######################
[auth.azuread]
name = Azure AD
enabled = false
allow_sign_up = true
client_id = some_client_id
client_secret = some_client_secret
scopes = openid email profile
auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
allowed_domains =
allowed_groups =
#################################### Okta OAuth #######################
[auth.okta]
name = Okta
enabled = false
allow_sign_up = true
client_id = some_id
client_secret = some_secret
scopes = openid profile email groups
auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
token_url = https://<tenant-id>.okta.com/oauth2/v1/token
api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo
allowed_domains =
allowed_groups =
role_attribute_path =
#################################### Generic OAuth #######################
[auth.generic_oauth]
name = OAuth
@@ -388,47 +423,6 @@ tls_client_cert =
tls_client_key =
tls_client_ca =
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
# Defaults to false. If true, the feature is enabled
enabled = false
# Base64-encoded public X.509 certificate. Used to sign requests to the IdP
certificate =
# Path to the public X.509 certificate. Used to sign requests to the IdP
certificate_path =
# Base64-encoded private key. Used to decrypt assertions from the IdP
private_key =
# Path to the private key. Used to decrypt assertions from the IdP
private_key_path =
# Base64-encoded IdP SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata =
# Path to the SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata_path =
# URL to fetch SAML IdP metadata. Used to verify and obtain binding locations from the IdP
idp_metadata_url =
# Duration, since the IdP issued a response and the SP is allowed to process it. Defaults to 90 seconds
max_issue_delay = 90s
# Duration, for how long the SP's metadata should be valid. Defaults to 48 hours
metadata_valid_duration = 48h
# Friendly name or name of the attribute within the SAML assertion to use as the user's name
assertion_attribute_name = displayName
# Friendly name or name of the attribute within the SAML assertion to use as the user's login handle
assertion_attribute_login = mail
# Friendly name or name of the attribute within the SAML assertion to use as the user's email
assertion_attribute_email = mail
#################################### Basic Auth ##########################
[auth.basic]
enabled = true
@@ -689,6 +683,9 @@ container_name =
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 =
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
concurrent_render_request_limit = 30
[panels]
# here for to support old env variables, can remove after a few months
@@ -699,6 +696,66 @@ disable_sanitize_html = false
enable_alpha = false
app_tls_skip_verify_insecure = false
#################################### Grafana Image Renderer Plugin ##########################
[plugin.grafana-image-renderer]
# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
# See ICUs metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
# timezone IDs. Fallbacks to TZ environment variable if not set.
rendering_timezone =
# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
rendering_language =
# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
rendering_viewport_device_scale_factor =
# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
# the security risk it's not recommended to ignore HTTPS errors.
rendering_ignore_https_errors =
# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
# only capture and log error messages. When enabled, debug messages are captured and logged as well.
# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
# [log].filter = rendering:debug.
rendering_verbose_logging =
# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
# Default is false. This can be useful to enable (true) when troubleshooting.
rendering_dumpio =
# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
rendering_args =
# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
# compatible with the plugin.
rendering_chrome_bin =
# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
rendering_mode =
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
rendering_clustering_mode =
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
rendering_clustering_max_concurrency =
# Limit the maxiumum viewport width, height and device scale factor that can be requested.
rendering_viewport_max_width =
rendering_viewport_max_height =
rendering_viewport_max_device_scale_factor =
# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
# a port not in use.
grpc_host =
grpc_port =
[enterprise]
license_path =
+98 -41
View File
@@ -229,6 +229,10 @@
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
;versions_to_keep = 20
# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;min_refresh_interval = 5s
#################################### Users ###############################
[users]
# disable user signup / registration
@@ -293,6 +297,9 @@
# This setting is ignored if multiple OAuth providers are configured.
;oauth_auto_login = false
# OAuth state max age cookie duration. Defaults to 60 seconds.
;oauth_state_cookie_max_age = 60
# limit of api_key seconds to live before expiration
;api_key_max_seconds_to_live = -1
@@ -356,6 +363,34 @@
;scopes = user:email
;allowed_organizations =
#################################### Azure AD OAuth #######################
[auth.azuread]
;name = Azure AD
;enabled = false
;allow_sign_up = true
;client_id = some_client_id
;client_secret = some_client_secret
;scopes = openid email profile
;auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
;allowed_domains =
;allowed_groups =
#################################### Okta OAuth #######################
[auth.okta]
;name = Okta
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = openid profile email groups
;auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
;token_url = https://<tenant-id>.okta.com/oauth2/v1/token
;api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo
;allowed_domains =
;allowed_groups =
;role_attribute_path =
#################################### Generic OAuth ##########################
[auth.generic_oauth]
;enabled = false
@@ -378,47 +413,6 @@
;tls_client_key =
;tls_client_ca =
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
# Defaults to false. If true, the feature is enabled.
;enabled = false
# Base64-encoded public X.509 certificate. Used to sign requests to the IdP
;certificate =
# Path to the public X.509 certificate. Used to sign requests to the IdP
;certificate_path =
# Base64-encoded private key. Used to decrypt assertions from the IdP
;private_key =
;# Path to the private key. Used to decrypt assertions from the IdP
;private_key_path =
# Base64-encoded IdP SAML metadata XML. Used to verify and obtain binding locations from the IdP
;idp_metadata =
# Path to the SAML metadata XML. Used to verify and obtain binding locations from the IdP
;idp_metadata_path =
# URL to fetch SAML IdP metadata. Used to verify and obtain binding locations from the IdP
;idp_metadata_url =
# Duration, since the IdP issued a response and the SP is allowed to process it. Defaults to 90 seconds.
;max_issue_delay = 90s
# Duration, for how long the SP's metadata should be valid. Defaults to 48 hours.
;metadata_valid_duration = 48h
# Friendly name or name of the attribute within the SAML assertion to use as the user's name
;assertion_attribute_name = displayName
# Friendly name or name of the attribute within the SAML assertion to use as the user's login handle
;assertion_attribute_login = mail
# Friendly name or name of the attribute within the SAML assertion to use as the user's email
;assertion_attribute_email = mail
#################################### Basic Auth ##########################
[auth.basic]
;enabled = true
@@ -679,6 +673,9 @@
;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 =
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
;concurrent_render_request_limit = 30
[panels]
# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
@@ -688,6 +685,66 @@
;enable_alpha = false
;app_tls_skip_verify_insecure = false
#################################### Grafana Image Renderer Plugin ##########################
[plugin.grafana-image-renderer]
# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
# See ICUs metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
# timezone IDs. Fallbacks to TZ environment variable if not set.
;rendering_timezone =
# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
;rendering_language =
# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
;rendering_viewport_device_scale_factor =
# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
# the security risk it's not recommended to ignore HTTPS errors.
;rendering_ignore_https_errors =
# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
# only capture and log error messages. When enabled, debug messages are captured and logged as well.
# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
# [log].filter = rendering:debug.
;rendering_verbose_logging =
# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
# Default is false. This can be useful to enable (true) when troubleshooting.
;rendering_dumpio =
# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
;rendering_args =
# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
# compatible with the plugin.
;rendering_chrome_bin =
# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
;rendering_mode =
# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
;rendering_clustering_mode =
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
;rendering_clustering_max_concurrency =
# Limit the maxiumum viewport width, height and device scale factor that can be requested.
;rendering_viewport_max_width =
;rendering_viewport_max_height =
;rendering_viewport_max_device_scale_factor =
# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
# a port not in use.
;grpc_host =
;grpc_port =
[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =
+2 -2
View File
@@ -72,7 +72,7 @@ if err := s.bus.Dispatch(cmd); err != nil {
### Handle commands
Let others parts of the application dispatch commands to a service, by registering a _command handler_:
Let other 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.
@@ -91,7 +91,7 @@ func (s *MyService) SendStickers(cmd *models.SendStickersCommand) error {
## Queries
A command handler can optionally populate the command sent it. This pattern is commonly used to implement _queries_.
A command handler can optionally populate the command sent to it. This pattern is commonly used to implement _queries_.
### Making a query
+26 -7
View File
@@ -4,7 +4,6 @@ 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:
@@ -21,7 +20,7 @@ We recommend using [Homebrew](https://brew.sh/) for installing any missing depen
```
brew install git
brew install go
brew install node
brew install node@12
npm install -g yarn
```
@@ -52,7 +51,7 @@ 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.
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 every time you change the code.
Next, we'll build the web server that will serve the frontend assets we just built.
@@ -106,7 +105,7 @@ 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:
By default, the end-to-end tests assume 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
@@ -130,7 +129,6 @@ 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.
@@ -172,7 +170,7 @@ The resulting image will be tagged as grafana/grafana:dev.
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**.
**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
@@ -180,7 +178,7 @@ Are you having issues with setting up your environment? Here are some tips that
### Too many open files when running `make run`
Depending on your environment, you may have to increase the maximum number of open files allowed.
Depending on your environment, you may have to increase the maximum number of open files allowed. For the rest of this section, we will assume you are on a Unix like OS (e.g. Linux/MacOS), where you can control the maximum number of open files through the [ulimit](https://ss64.com/bash/ulimit.html) shell command.
To see how many open files are allowed, run:
@@ -202,6 +200,27 @@ 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.
To retain your `ulimit` configuration, i.e. so it will be remembered for future sessions, you need to commit it to your command line shell initialization file. Which file this will be depends on the shell you are using, here are some examples:
* zsh -> ~/.zshrc
* bash -> ~/.bashrc
Commit your ulimit configuration to your shell initialization file as follows ($LIMIT being your chosen limit and $INIT_FILE being the initialization file for your shell):
```
echo ulimit -S -n $LIMIT >> $INIT_FILE
```
Your command shell should read the initialization file in question every time it gets started, and apply your `ulimit` command.
For some people, typically using the bash shell, ulimit fails with an error similar to the following:
```
ulimit: open files: cannot modify limit: Operation not permitted
```
If that happens to you, chances are you've already set a lower limit and your shell won't let you set a higher one. Try looking in your shell initalization files (~/.bashrc typically), if there's already a ulimit command that you can tweak.
## Next steps
- Read our [style guides](/contribute/style-guides).
-4
View File
@@ -39,7 +39,3 @@ Tests must use the standard library, `testing`. For assertions, prefer using [te
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"`.
+209
View File
@@ -0,0 +1,209 @@
# Guidelines for code comments in grafana-* packages
This document aims to give you some recommendation on how to add code comments to the exported code in the grafana packages.
## Table of Contents
1. [Add package description](#add-package-description)
1. [Set stability of an API](#set-stability-of-an-api)
1. [Deprecate an API](#deprecate-an-api)
1. [Specify parameters](#specify-parameters)
1. [Set return values](#set-return-values)
____
## Add package description
Each package has an overview explaining the overall responsibility and usage of the package.
You can document this description with [`@packageDocumentation`](https://api-extractor.com/pages/tsdoc/tag_packagedocumentation/) tag.
Add this tag to the `<packageRoot>/src/index.ts` entry file to have one place for the package description.
## Set stability of an API
All `exported` apis from the package should have a release tag to indicate its stability.
- [`@alpha`](https://api-extractor.com/pages/tsdoc/tag_alpha/) - early draft of api and will probably change.
- [`@beta`](https://api-extractor.com/pages/tsdoc/tag_beta/) - close to being stable but might change.
- [`@public`](https://api-extractor.com/pages/tsdoc/tag_public/) - ready for useage in production.
- [`@internal`](https://api-extractor.com/pages/tsdoc/tag_internal/) - for internal use only.
### Main stability of APIs
Add a tag to mark the stability of the whole exported `class/interface/function/type` etc.
Please place the `release tag` at the bottom of the comment to make it consistent among files and easier to read.
**Do:**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
* @public
**/
export class DataFrameFactory {
create(): DataFrame { }
}
```
**Don't**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @public
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
**/
export class DataFrameFactory {
create(): DataFrame { }
}
```
### Partial stability of APIs
Add the main stability of the API at the top according to [Main stability of API](#main-stability-of-api).
Then override the non-stable parts of the API with the proper [release tag](#release-tags). This should also be place at the bottom of the comment block.
**Do:**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
*
* @public
**/
export class DataFrameFactory {
create(): DataFrame { }
/**
* @beta
**/
createMany(): DataFrames[] {}
}
```
**Don't**
```typescript
/**
* Will help to create DataFrame objects and handle
* the heavy lifting of creating a complex object.
*
* @example
* ```typescript
* const dataFrame = factory.create();
* ```
**/
export class DataFrameFactory {
/**
* @public
**/
create(): DataFrame { }
/**
* @beta
**/
createMany(): DataFrame[] {}
}
```
## Deprecate an API
If you want to mark an API as deprecated to signal that this API will be removed in the future, then add the [`@deprecated`](https://api-extractor.com/pages/tsdoc/tag_deprecated/) tag.
If applicable add a reason why the API is deprecated directly after the `@deprecated tag`.
## Specify parameters
If you want to specify the possible parameters that can be passed to an API, then add the [`@param`](https://api-extractor.com/pages/tsdoc/tag_param/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the parameters are.
**Do:**
```typescript
/**
* Will help to create a resource resovler depending
* on the current execution context.
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
* @public
**/
export const factory = (context: Context): IResolver => {
if (context.isServer) {
return new FileResolver();
}
return new HttpResolver();
}
```
**Don't**
```typescript
/**
* Will compare two numbers to see if they are equal to each others.
*
* @param x - The first number
* @param y - The second number
* @public
**/
export const isEqual = (x: number, y: number): boolean => {
return x === y;
}
```
## Set return values
If you want to specify the return value from a function you can use the [`@returns`](https://api-extractor.com/pages/tsdoc/tag_returns/) tag.
This attribute can be skipped if the type provided by `typescript` and the function comment or the function name is enough to explain what the function returns.
**Do:**
```typescript
/**
* Will help to create a resource resovler depending
* on the current execution context.
*
* @param context - The current execution context.
* @returns FileResolver if executed on the server otherwise a HttpResolver.
* @public
**/
export const factory = (context: Context): IResolver => {
if (context.isServer) {
return new FileResolver();
}
return new HttpResolver();
}
```
**Don't**
```typescript
/**
* Will compare two numbers to see if they are equal to each others.
*
* @returns true if values are equal
* @public
**/
export const isEqual = (x: number, y: number): boolean => {
return x === y;
}
```
@@ -0,0 +1,144 @@
# Markdown style guide
This guide for Markdown style helps keep contributions consistent across all documentation
created for Grafana products. Refer to the guide and update its sections as needed when a
Subject Matter Expert answers a question on Markdown style, or a decision is made about
how to apply Markdown.
## Headers
In Markdown, the number of "#" symbols creates different heading levels, similar to
HTML heading levels:
**Example**
* \# is \<h1>.
* \#\# is \<h2>.
* \#\#\# is \<h3>.
Start your document with a single ``#`` for the title of the page. Add the sub-headings with two ``##``.
## Bold and emphasis
* Make text **bold** using two asterisks.
**Example:** It is ``**important**`` to use Github Flavored Markdown emoji consistently.
* Make text ``*emphasized*`` using single `` _underscores_`` or a single asterisk.
**Example:** Github Flavored Markdown emoji should _only_ appear in specific cases.
## Links and references
Create links to other website by wrapping the display text in square brackets, and
the web URL in curved brackets.
\[text to display](www.website.com)
**Example:** For more information on including emoji in Github flavored Markdown, refer to the [webfx page on emoji](https://www.webfx.com/tools/emoji-cheat-sheet/) for a list of emoji.
## Block quotes
Include Block quotes inside text using right-facing arrows:
**Example**
> Any important information
> about emoji can be separated into
> a blockquote.
## Code blocks
Code blocks written with markdown can show off syntax highlighting specific
to different languages. Use three back tics to create a code block:
```
function testNum(a) {
if (a > 0) {
return "positive";
} else {
return "NOT positive";
}
}
```
Write the name of the language after the first set of back tics, no spaces,
to show specific syntax highlighting. For example; "\```javascript" produces the following:
```javascript
function testNum(a) {
if (a > 0) {
return "positive";
} else {
return "NOT positive";
}
}
```
## Tables
Construct a table by typing the table headings, and separating them with
a "|" character. Then, add a second line of dashes ("-") separated by
another "|" character. When constructing the table cells, separate each cell data with another
"|".
**Example**
Heading one | Heading two
\------------|------------
Cell one data| Cell two data
Will publish as:
Heading one | Heading two
------------|------------
Cell one data| Cell two data
## Lists
### Numbered lists
To avoid inconsistent list numbering, use repetitive list numbering:
\1. First
\1. Second
\1. Third
The list above will always display as:
1. First
2. Second
3. Third
### Unordered lists
Build a list of points - an unordered or unnumbered list - by
using "\*" characters.
**Example**
* First
* Another item
* The last list item
## Images
Include images in a document using the following syntax:
**Example** \!\[Grafana Logo](/link/to/grafanalogo/logo.png)
This follows the format of "!", alt text wrapped in "[]" and the link URL wrapped in "()".
## Comments
You can include comments that will not appear in published markdown using the
following syntax:
\[comment]: <> (Comment text to display)
The word "comment" wrapped in "[]" followed by a ":", a space, "<>", and then
the comment itself wrapped in "()".
@@ -2,6 +2,10 @@
This style guide applies to all documentation created for Grafana products.
For information about how to write technical documentation, we suggest reviewing the content of the [Google Technical Writing courses](https://developers.google.com/tech-writing).
The [Divio documentation system](https://documentation.divio.com/) site is also a good resource.
## 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.
@@ -137,6 +141,14 @@ Two words, not one
* Correct, but passive voice: Your list of active alarms is displayed.
* Incorrect: The list of active alarms displays.
#### intro, introduction
"Introduction" is the preferred word. Use "intro" if there are space constraints (like on the side menu) or you are specifically trying for a less formal, more conversational tone.
#### metadata
One word, not two.
#### open source, open-source
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
+69 -27
View File
@@ -1,19 +1,44 @@
# 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.
## Commands
- `yarn e2e` Creates an isolated grafana-server home under `<repo-root>/e2e/tmp` with provisioned data sources and dashboards. This
copies locally build binary and frontned assets from your repo root so you need to have a built backend and frontend
for this to run locally. The server starts on port 3001 so it does not conflict with your normal dev server.
- `yarn e2e:debug` Same as above but runs the tests in chrome and does not shutdown after completion.
- `yarn e2e:dev` Same as above but does not run any tests on startup. It lets you pick a test first.
The above commands use some utils scripts under `<repo-root>/e2e` that can also be used for more control.
- `./e2e/start-server` This creates a fresh new grafana server working dir, setup's config and starts the server. It
will also kill any previously started server that is still running using pid file at `<repo-root>/e2e/tmp/pid`.
- `./e2e/run-suite <debug|dev|noarg>` Starts cypress in different modes.
## Test Suites
All the integration tests are located at `e2e/suite<x>/specs`. The page objects and reusable flows are in the
`packages/grafana-e2e` package.
## 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`
- `Page`: An abstraction for an object that contains one or more `Selectors` with `visit` function to navigate to the page.
- `Component`: An abstraction for an object that contains one or more `Selectors` but without `visit` function
- `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"/>
<input type="text" className="gf-form-input login-form-input" />
</div>
```
@@ -21,25 +46,26 @@ We could define a selector using `JQuery` [type selectors](https://api.jquery.co
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"/>
<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')
},
});
export const Login = {
url: "/login", // used when called from Login.visit()
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.
The next step is to add the `Login` page to the exported const `Pages` in `packages/grafana-e2e-selectors/src/selectors/pages.ts` so that it appears when we type `e2e.pages` in our IDE.
```ecmascript 6
export const Pages = {
Login,
@@ -49,17 +75,21 @@ export const Pages = {
};
```
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}/>
<input type="text" className="gf-form-input login-form-input" aria-label={selectors.pages.Login.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 last step in our example is to use our `Login` page as part of a test.
- 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).
> 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 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', () => {
@@ -73,6 +103,7 @@ describe('Login test', () => {
```
## 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
@@ -80,36 +111,35 @@ Let's take a look at an example that uses the same `selector` for multiple items
{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>
<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({
export const DataSources = {
url: '/datasources',
selectors: {
dataSources: (dataSourceName: string) => `Data source list item ${dataSourceName}`,
},
});
```
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`.
Just as before we need to add the `DataSources` page to the exported const `Pages` in `packages/grafana-e2e-selectors/src/selectors/pages.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)}>
<div className="card-item-name" aria-label={selectors.pages.DataSources.dataSources(dataSource.name)}>
{dataSource.name}
</div>
</a>
@@ -119,6 +149,7 @@ The next step is to use the `dataSources` selector function as in our example be
```
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
@@ -134,7 +165,9 @@ When this list is rendered with the data sources with names `A`, `B`, `C` the re
```
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', () => {
@@ -147,9 +180,18 @@ describe('List test', () => {
});
```
## Debugging PhantomJS image rendering
### Common Error
The most common error with PhantomJs image rendering is when a PR introduces an import that has functionality that's not supported by PhantomJs. To quickly identify which new import causes this you can use a tool like `es-check`.
1. Run > `npx es-check es5 './public/build/*.js'`
2. Check the output for files that break es5 compatibility.
3. Lazy load the failing imports if possible.
### Debugging
There is no easy or comprehensive way to debug PhantomJS smoke test (image rendering) failures. However, PhantomJS exposes remote debugging interface which can give you a sense of what is going wrong in the smoke test. Before performing the steps described below make sure your local Grafana instance is running:
1. Go to `tools/phantomjs` directory
+233 -35
View File
@@ -7,31 +7,239 @@ Generally we follow the Airbnb [React Style Guide](https://github.com/airbnb/jav
- [Frontend Style Guide](#frontend-style-guide)
- [Table of Contents](#table-of-contents)
- [Basic rules](#basic-rules)
- [Organization](#organization)
- [Props](#props)
- [Naming conventions](#naming-conventions)
- [Files and directories naming conventions](#files-and-directories-naming-conventions)
- [Code organization](#code-organization)
- [Exports](#exports)
- [Comments](#comments)
- [React](#react)
- [Props](#props)
- [State management](#state-management)
## Basic rules
- Try to keep files small and focused.
- Break large components up into sub-components.
- Use spaces for indentation.
## Organization
### Naming conventions
- Components and types that needs to be used by external plugins needs to go into @grafana/ui
- Components should get their own folder under features/xxx/components
- Sub components can live in that component folders, so small component do not need their own folder
- Place test next to their component file (same dir)
- Component sass should live in the same folder as component code
- State logic & domain models should live in features/xxx/state
- Containers (pages) can live in feature root features/xxx
- up for debate?
#### Use `PascalCase` for:
## Props
##### Typescript class names
- Name callback props and handlers with an "on" prefix.
```typescript
// bad
class dataLink {
//...
}
// good
class DataLink {
//...
}
```
##### Types and interfaces
```
// bad
interface buttonProps {
//...
}
// bad
interface button_props {
//...
}
// bad
interface IButtonProps {
//...
}
// good
interface ButtonProps {
//...
}
// bad
type requestInfo = ...
// bad
type request_info = ...
// good
type RequestInfo = ...
```
##### Enums
```
// bad
enum buttonVariant {
//...
}
// good
enum ButtonVariant {
//...
}
```
#### Use `camelCase` for:
##### Functions
```typescript
// bad
const CalculatePercentage = () => { ... }
// bad
const calculate_percentage = () => { ... }
// good
const calculatePercentage = () => { ... }
```
##### Methods
```typescript
class DateCalculator {
// bad
CalculateTimeRange () {...}
}
class DateCalculator {
// bad
calculate_timee_range () {...}
}
class DateCalculator {
// good
calculateTimeRange () {...}
}
```
##### Variables
```typescript
// bad
const QueryTargets = [];
// bad
const query_targets = [];
// good
const queryTargets = [];
```
##### React state and properties
```typescript
interface ModalState {
// bad
IsActive: boolean;
// bad
is_active: boolean;
// good
isActive: boolean;
}
```
##### Emotion class names
```typescript
const getStyles = = () => ({
// bad
ElementWraper: css`...`,
// bad
["element-wrapper"]: css`...`,
// good
elementWrapper: css`...`,
});
```
#### Use `ALL_CAPS` for constants.
```typescript
// bad
const constantValue = "This string won't change";
// bad
const constant_value = "This string won't change";
// good
const CONSTANT_VALUE = "This string won't change";
```
#### Use [BEM](http://getbem.com/) convention for SASS styles.
_SASS styles are deprecated. Please migrate to Emotion whenever you need to modify SASS styles._
### File and directory naming conventions
Name files according to the primary export:
- When the primary export is a class or React component, use PascalCase.
- When the primary export is a function, use camelCase.
For files exporting multiple utility functions, use the name that describes the responsibility of grouped utilities. For example, a file exporting math utilities should be named `math.ts`.
- Use `constants.ts` for files exporting constants.
- Use `actions.ts` for files exporting Redux actions.
- Use `reducers.ts` Redux reducers.
- Use `*.test.ts(x)` for test files.
### Code organization
Organize your code in a directory that encloses feature code:
- Put Redux state and domain logic code in `state` directory (i.e. `features/my-feature/state/actions.ts`).
- Put React components in `components` directory (i.e. `features/my-feature/components/ButtonPeopleDreamOf.tsx`).
- Put test files next to the test subject.
- Put containers (pages) in feature root (i.e. `features/my-feature/DashboardPage.tsx`).
- Subcomponents can live in the component folders. Small component do not need their own folder.
- Component SASS styles should live in the same folder as component code.
For code that needs to be used by external plugin:
- Put components and types in `@grafana/ui`.
- Put data models and data utilities in `@grafana/data`.
- Put runtime services interfaces in `@grafana/runtime`.
#### Exports
- Use named exports for all code you want to export from a file.
- Use declaration exports (i.e. `export const foo = ...`).
- Export only the code that is meant to be used outside the module.
### Comments
- Use [TSDoc](https://github.com/microsoft/tsdoc) comments to document your code.
- Use [react-docgen](https://github.com/reactjs/react-docgen) comments (`/** ... */`) for props documentation.
- Use inline comments for comments inside functions, classes etc.
- Please try to follow the [code comment guidelines](./code-comments.md) when adding comments.
### Linting
Linting is performed using [@grafana/eslint-config](https://github.com/grafana/eslint-config-grafana).
## React
Use the following conventions when implementing React components:
### Props
##### Name callback props and handlers with an "on" prefix.
```tsx
// bad
handleChange = () => {
};
render() {
return (
<MyComponent changed={this.handleChange} />
);
}
// good
onChange = () => {
@@ -43,46 +251,36 @@ render() {
);
}
// bad
handleChange = () => {
};
render() {
return (
<MyComponent changed={this.handleChange} />
);
}
```
- React Component definitions
##### React Component definitions
```jsx
// good
export class YourClass extends PureComponent<{},{}> { ... }
// bad
export class YourClass extends PureComponent { ... }
// good
export class YourClass extends PureComponent<{},{}> { ... }
```
- React Component constructor
##### React Component constructor
```typescript
// good
constructor(props:Props) {...}
// bad
constructor(props) {...}
// good
constructor(props: Props) {...}
```
- React Component defaultProps
##### React Component defaultProps
```typescript
// good
static defaultProps: Partial<Props> = { ... }
// bad
static defaultProps = { ... }
// good
static defaultProps: Partial<Props> = { ... }
```
## State management
+182
View File
@@ -0,0 +1,182 @@
# Storybook
[Storybook](https://storybook.js.org/) is a tool which we use to manage our design system and the components which are a part of it. Storybook consists of _stories:_ each story represents a component and a case in which it is used. To show a wide variety of use cases is good both documentation wise and for troubleshooting -- it might be possible to reproduce a bug for an edge case in a story.
Storybook is:
- A good way to publish our design system with its implementations
- Used as a tool for documentation
- Used for debugging and displaying edge cases
## How to create stories
Stories for a component should be placed next to the component file. The Storybook file requires the same name as the component file. For example, a story for `SomeComponent.tsx` will have the file name `SomeComponent.story.tsx`. If a story should be internal, not visible in production, name the file `SomeComponent.story.internal.tsx`.
### Writing stories
When writing stories, we use the [CSF format](https://storybook.js.org/docs/formats/component-story-format/). For more in-depth information on writing stories, see [Storybooks documentation on writing stories](https://storybook.js.org/docs/basics/writing-stories/).
With the CSF format, the default export defines some general information about the stories in the file:
- `title`: Where the component is going to live in the hierarchy
- `decorators`: A list which can contain wrappers or provide context, such as theming
```jsx
// In MyComponent.story.tsx
import MyComponent from './MyComponent';
export default {
title: 'General/MyComponent',
component: MyComponent,
decorators: [ ... ],
}
```
When it comes to writing the actual stories, you continue in the same file with named exports. The exports are turned into the story name.
```jsx
// Will produce a story name “some story”
export const someStory = () => <MyComponent />;
```
If you want to write cover cases with different values for props, then using knobs is usually enough. You dont need to create a new story. This will be covered further down.
### Categorization
We currently have these categories:
- **Docs Overview** - Guidelines and information regarding the design system
- **Forms** - Components commonly used in forms such as different kind of inputs
- **General** - Components which can be used in a lot of different places
- **Visualizations** - Data visualizations
- **Panel** - Components belonging to panels and panel editors
## Writing MDX documentation
An MDX file is basically a markdown file with the possibility to add jsx. These files are used by Storybook to create a “docs” tab.
### Link the MDX file to a components stories
To link a components stories with an MDX file you have to do this:
```jsx
// In TabsBar.story.tsx
import { TabsBar } from "./TabsBar";
// Import the MDX file
import mdx from "./TabsBar.mdx";
export default {
title: "General/Tabs/TabsBar",
component: TabsBar,
parameters: {
docs: {
// This is the reference required for the MDX file
page: mdx,
},
},
};
```
### MDX file structure
There are some things that the MDX file should contain:
- When and why the component should be used
- Best practices - dos and donts for the component
- Usage examples with code. It is possible to use the `Preview` element to show live examples in MDX
- Props table. This can be generated by doing the following:
```jsx
// In MyComponent.mdx
import { Props } from "@storybook/addon-docs/blocks";
import { MyComponent } from "./MyComponent";
<Props of={MyComponent} />;
```
### MDX file without a relationship to a component
An MDX file can exist by itself without any connection to a story. This can be good for writing things such as a general guidelines page. Two things are required for this to work:
- The file needs to be named `*.story.mdx`
- A `Meta` tag must exist that says where in the hierarchy the component lives. It can look like this:
```jsx
<Meta title="Docs Overview/Color Palettes"/>
# Guidelines for using colors
...
```
You can add parameters to the Meta tag. This example shows how to hide the tools:
```jsx
<Meta title="Docs Overview/Color Palettes" parameters={{ options: { isToolshown: false }}}/>
# Guidelines for using colors
...
```
## Documenting component properties
A quick way to get an overview of what a component does is by looking at its properties. That's why it is important that we document these in a good way.
### Comments
When writing the props interface for a component, it is possible to add a comment to that specific property, which will end up in the Props table in the MDX file. The comments are generated by [react-docgen](https://github.com/reactjs/react-docgen) and are formatted by writing `/** */`.
```jsx
interface MyProps {
/** Sets the initial values, which are overridden when the query returns a value*/
defaultValues: Array<T>;
}
```
### Knobs
Knobs is an [addon to Storybook](https://github.com/storybookjs/storybook/tree/master/addons/knobs) which can be used to easily switch values in the UI. A good use case for it is to try different props for the component. Using knobs is easy. Grafana is set up so knobs can be used straight out of the box. Here is an example of how you might use it.
```jsx
// In MyComponent.story.tsx
import { number, text } from "@storybook/addon-knobs";
export const basicStory = () => (
<MyComponent
max={number("Max value", 10)}
min={number("Min value", -10)}
title={text("Title", "Look at the value!")}
/>
);
```
The general convention is that the first parameter of the knob is its name and the second is the default value. There are some more types:
| Knob | Description |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `text` | Any text field |
| `number` | Any number input. Also [available as range](https://github.com/storybookjs/storybook/tree/master/addons/knobs#number-bound-by-range) |
| `boolean` | A switch between true/false |
| `color` | Color picker |
| `object` | JSON input or array. Good to use if the property requires more complex data structures. |
| `array` | Array of strings separated by a comma |
| `select` | Select a value from an options object. Good for trying different test cases. |
| `options` | Configurable UI for selecting a range of options |
| `files` | File selector |
| `date` | Select date as stringified Unix timestamp |
| `button` | Has a handler which is called when clicked |
## Best practices
- When creating a new component or writing documentation for an existing one, always cover the basic use case it was intended for with a code example.
- Use stories and knobs to create edge cases. If you are trying to solve a bug, try to reproduce it with a story.
- Do not create stories in the MDX, always create them in the `*.story.tsx` file.
+41 -36
View File
@@ -1,48 +1,55 @@
# 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
## Usage
#### Basic styling
### Basic styling
For styling components use Emotion's `css` function
For styling components, use [Emotion's `css` function](https://emotion.sh/docs/emotion#css).
```tsx
import { css } from 'emotion';
import React from 'react';
import { css } from 'emotion';
const ComponentA = () => {
return (
<div className={css`background: red;`}>
As red as you can ge
</div>
);
}
const ComponentA = () => (
<div
className={css`
background: red;
`}
>
As red as you can get
</div>
);
```
#### Styling complex components
### 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.
In more complex cases, especially when you need to style multiple DOM elements in one component, or when using styles that depend on properties and/or state, you should create a helper function that returns an object of styles. This function should also be wrapped in the `stylesFactory` helper function, which will provide basic memoization.
Let's say you need to style a component that has different background depending on the theme:
Let's say you need to style a component that has a different background depending on the theme:
```tsx
import { css, cx } from 'emotion';
import { GrafanaTheme, useTheme, selectThemeVariant, stylesFactory } from '@grafana/ui';
import React from 'react';
import { css } from 'emotion';
import { GrafanaTheme } from '@grafana/data';
import { selectThemeVariant, stylesFactory, useTheme } from '@grafana/ui';
const getStyles = stylesFactory((theme: GrafanaTheme) => {
const backgroundColor = selectThemeVariant({ light: theme.colors.red, dark: theme.colors.blue }, theme.type);
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}`;
icon: css`
font-size: ${theme.typography.size.sm};
`,
};
}
});
const ComponentA = () => {
const theme = useTheme();
@@ -54,18 +61,18 @@ const ComponentA = () => {
<i className={styles.icon} />
</div>
);
});
};
```
For more information about themes at Grafana please see [themes guide](./themes.md)
For more information about themes at Grafana please see the [themes guide](./themes.md).
#### Composing class names
### Composing class names
For class composition use Emotion's `cx` function
For class composition, use [Emotion's `cx` function](https://emotion.sh/docs/emotion#cx).
```tsx
import { css, cx } from 'emotion';
import React from 'react';
import { css, cx } from 'emotion';
interface Props {
className?: string;
@@ -74,13 +81,11 @@ interface Props {
const ComponentA: React.FC<Props> = ({ className }) => {
const finalClassName = cx(
className,
css`background: red`,
)
return (
<div className={finalClassName}>
As red as you can ge
</div>
css`
background: red;
`
);
}
return <div className={finalClassName}>As red as you can ge</div>;
};
```
+39 -14
View File
@@ -2,11 +2,22 @@
## 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.
**Themes are implemented in Typescript.** That's because our goal is to share variables between Grafana TypeScript and [Sass](https://sass-lang.com/) code. Theme definitions are located in the following files:
- [packages/grafana-ui/src/themes/dark.ts](../../packages/grafana-ui/src/themes/dark.ts)
- [packages/grafana-ui/src/themes/default.ts](../../packages/grafana-ui/src/themes/default.ts)
- [packages/grafana-ui/src/themes/light.ts](../../packages/grafana-ui/src/themes/light.ts)
The `default.ts` file holds common variables like typography and spacing definitions, while `[light|dark].ts` primarily specify colors used in themes.
## Usage
This section provides usage guidelines.
### Using themes in React components
Here's how to use Grafana themes in React components.
#### Using `ThemeContext` directly
```tsx
@@ -26,12 +37,11 @@ const Foo: React.FunctionComponent<FooProps> = () => {
// 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.
With this method your component will be automatically wrapped in `ThemeContext.Consumer` and provided with current theme via `theme` prop. Components used with `withTheme` must implement the `Themeable` interface.
```ts
import { ThemeContext, Themeable } from '@grafana/ui';
@@ -43,7 +53,7 @@ const Foo: React.FunctionComponent<FooProps> = () => ...
export default withTheme(Foo);
```
### Test components that use ThemeContext
### 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.
@@ -73,9 +83,11 @@ describe('MyComponent', () => {
});
```
### Using themes in Storybook
### Using themes in [Storybook](https://storybook.js.org/)
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:
All stories are wrapped with `ThemeContext.Provider` using a global decorator. To render a `Themeable` component that isn't wrapped by a `withTheme` HOC, either create a new component in your story, or use the `renderComponentWithTheme` helper.
#### Create a new component:
```tsx
// Foo.story.tsx
@@ -86,7 +98,7 @@ FooStories.add('Story' () => {
});
```
or use `renderComponentWithTheme` helper:
#### Use `renderComponentWithTheme` helper:
```tsx
// Bar.story.tsx
@@ -98,29 +110,42 @@ BarStories.add('Story' () => {
### 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.
There should be very few cases where a theme would be used in an Angular context. For this purpose, there is a function available that retrieves the current theme:
```ts
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?
This section provides insight into frequently-asked questions.
### 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!**.
`[_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:
#### If you need to modify a *Sass variable value* you need to modify the corresponding Typescript file that is the 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:
#### 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:
This section describes limitations with Grafana's theming system.
### 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 the case of graph legend rendering and the `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 the `provideTheme` function:
```ts
// graph.ts
+57
View File
@@ -0,0 +1,57 @@
# Templates
Templates are both a starting point and an instruction manual for writing something new. They are intended to make life easier by providing a jumping-off point, something besides a blank page to start from. They are not intended to be a limitation. If the template does not work perfectly for your use case, you can adjust or change it. We will work it out in code review.
## Create a template
Feel free to add templates to the `templates` folder. Try to make them as generic as possible and include clear instructions for when and how to use the template. Assume that the template user is a brand new contributor and write accordingly.
## Use a template
1. Read the template. Make sure you understand what it is for and how it is intended to be used.
1. Copy and rename the template. Move it to where you actually need it.
You might also want to copy the content of the template and paste it into a different file. This is acceptable use.
1. Replace the template content with your own. Delete whatever is unnecessary.
## Documentation templates
In an ideal world, each topic will correspond to an information *type* ([task](doc-task-template.md), [reference](doc-reference-template.md), [concept](doc-concept-template.md)) and contain only that type of information.
However, this is not always practical. For example, you have a series of short topics, you can group them into one topic.
Try to *chunk* your content. This means you should organize the document so that the same kinds of content are grouped together.
### Chunking example
If I was writing content for a site called *Doggie handbook*, I might organize it like this.
**Concept**
* What a dog is
* Brief history of dogs
* Why you might want a dog
* Tasks dogs can be trained to do
**Tasks**
* Feed the dog
* Groom the dog
* Train the dog
**Reference**
* List of dog equipment you will need
* Table of breeds that includes breed name, size range, short or long hair, and type of dog
### Audience
Write for an audience that is computer literate and has general technical knowledge, but is not necessarily familiar with Grafana or the finer points of observability.
Pretend you are explaining your topic to a brand new Grafana user or developer.
### Self-contained
Thanks to search engines, every page in the documentation might be a reader's entry point. This means that each page needs to be self-contained and make sense on its own. The reader should not need to read other topics in order to perform the task or understand the concept.
However, try to be helpful and link to related information. Using the *Doggie handbook* example, the concept topic that explains what dogs can be trained to do might link to the Train the dog task.
## Code templates
This is a placeholder for future templates.
@@ -0,0 +1,42 @@
DELETE THIS LINE: If draft = false, then the document will not be built in the doc site. If the date is earlier than the build date, than the document will not show in the build site. Use these settings to control whether future content is shown in the doc site.
+++
draft = "false"
date = "yyyy-mm-dd"
title = "Title in sentence case"
description = "Description in title case"
keywords = ["grafana", "enter", "keywords", "here"]
type = "docs"
[menu.docs]
name = "Name of topic"
identifier = "identifier"
parent = "menu parent"
weight = 100
+++
# Concept
The title of the concept topic will generally be a noun or a gerund. Examples include Templates, Templating, Dashboards, and panels.
Concepts are topic types for any information that doesn't involve task lists or reference information. Ideally you use concept elements to explain concepts, ideas, overviews, workflows, and the like. In the intro section, this first paragraph or two, you should explain to the user what to expect in this topic or section.
[Permissions overview](https://grafana.com/docs/grafana/latest/permissions/overview/) is an example of a concept topic.
## Idea
Concept topics or sections explain *what* and *why*. They do not explain *how*. If you are a new user, you might look for concept information to learn about what Grafana is, why it might be useful to you, and what the general workflow is.
## Workflow
Continuing the example in the previous section, here is a sample Grafana workflow.
1. Install Grafana. <link to task for installing Grafana>
2. Set up data sources. <link to data sources concept topic, which links to data source task topics>
3. Create panels. <link to panel concept topic, which links to tasks>
4. Create dashboards. <link to panel concept topic, which links to tasks>
5. Enter queries. <link to query editor concept topic>
6. Add users. <link to user management concept topic, which links to tasks>
7. Create playlists. <link to Playlist topic that contains concept information and tasks>
## Next steps
Concept tasks often link to related information, including *tasks* related to the concept and *reference* topics related to the concept.
@@ -0,0 +1,75 @@
DELETE THIS LINE: If draft = false, then the document will not be built in the doc site. If the date is earlier than the build date, than the document will not show in the build site. Use these settings to control whether future content is shown in the doc site.
+++
draft = "false"
date = "yyyy-mm-dd"
title = "Title in sentence case"
description = "Description in title case"
keywords = ["grafana", "enter", "keywords", "here"]
type = "docs"
[menu.docs]
name = "Name of topic"
identifier = "identifier"
parent = "menu parent"
weight = 100
+++
# Reference
The *reference* topic type is for storing reference information, such as extensive tables, lists, or other information that is used as support for a task. Reference topics are also designed for API information.
Often reference topics are linked from *task* topics, because they contain information the user needs in order to perform a task.
[Grafana CLI](https://grafana.com/docs/grafana/latest/administration/cli/) is one example of a reference topic.
## Lists
Lists of commands or parameters are often organized in reference topics. The information you need to present will dictate the format.
* They might
* be in
* unordered lists.
[Configuration](https://grafana.com/docs/grafana/latest/installation/configuration/) is an example of lists.
## Tables
If you have a large list of things to store in a table, then you are probably dealing with reference information. Hugo accepts either tables in Markdown or in HTML format, so use whichever is easier for you.
The [Glossary](https://grafana.com/docs/grafana/latest/guides/glossary/) provides an example of reference data in a table.
### Empty markdown table
While you might not need a heading for each table, headings are a good way to chunk information if you have several tables. They also make the content easy to skim. Use headings or intro paragraphs like this one to explain to the reader what the information in the table is used for.
| | | | | | |
|:---|:---|:--:|:--:|---:|---:|
| | | | | | |
| | | | | | |
| | | | | | |
| | | | | | |
### Empty HTML table
And here is intro text, similar to the paragraph in the previous section. Do not add local styling to the table. The website CSS will take care of that for you.
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
## API documentation
API documentation is always a reference topic rather than a task topic, but it has its own rules.
+57
View File
@@ -0,0 +1,57 @@
+++
draft = "false"
date = "yyyy-mm-dd"
title = "Title in sentence case"
description = "Description in title case"
keywords = ["grafana", "enter", "keywords", "here"]
type = "docs"
[menu.docs]
name = "Name of topic"
identifier = "identifier"
parent = "menu parent"
weight = 100
+++
# Task
A *task* topic is intended for a procedure that describes how to accomplish a task. It lists a series of steps that users follow to produce an intended outcome. It tells the reader *how* to do something. [Install Grafana plugins](https://grafana.com/docs/grafana/latest/plugins/installation/) and [Playlist](https://grafana.com/docs/grafana/latest/reference/playlist/) are examples of task topics. Playlist includes a small amount of concept information in the introduction, which is appropriate.
Always include an introduction of a short paragraph or two to explain what the task is for, perhaps give the reader an idea of what the outcome will be.
In most cases, each topic should only contain one task. If you have several very short, related tasks, then you might combine them into one topic.
In the case of a long task, then you probably won't need any headings except for the h1 at the top of the page.
1. Start with step one.
1. Use second-person imperative tense.
1. Basically, "You, do this" with every sentence.
1. Do not use the third-person "user" for steps you want the reader ("you") to perform.
1. Write steps that contain one action, possibly two related actions, such as copy and paste a thing or save and quit the program.
If a sentence is not telling the reader to do something, then it is not a step. You can use nested images or paragraphs like this one to add information if necessary.
In many cases, you should tell the reader what the outcome should be so that they know when they are done.
## One-step task
Some tasks are so short, they only contain one step.
Write one-step tasks as simple sentences, not as unordered lists or numbered lists.
## Short task
Short tasks can be grouped. How short constitutes "short" is a judgment call based on number of steps and how long individual steps are.
1. Use your judgment.
2. Ask your coworkers or someone on the Comm team for advice if you aren't sure.
## Next steps
If the task you are writing leads naturally to one or more other tasks, then include links after the task to help the reader figure out where to go next.
Thanks to internet search engines, every page in the documentation could be page one. Pretend you are explaining your task to a new Grafana user who just walked in off the street.
## Testing
It is a good practice to have someone else test the task you have written. If they can successfully complete the task using *only* what the steps you have written, not guessing or using their inherent knowledge, then your task has passed the test. However, it is very common to find you have skipped steps, because *you* are very familiar with Grafana and the topic you are explaining.
New users or people from other teams are very helpful for these tests.
+3 -1
View File
@@ -36,5 +36,7 @@ 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
make devenv sources=postgres,openldap,grafana postgres_version=9.2 grafana_version=6.7.0-beta1
```
Note: The grafana block is pre-configured with the dev-datasources and dashboards.
@@ -1,168 +0,0 @@
{
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"alert": {
"conditions": [
{
"evaluator": {
"params": [
65
],
"type": "gt"
},
"operator": {
"type": "and"
},
"query": {
"params": [
"A",
"5m",
"now"
]
},
"reducer": {
"params": [],
"type": "avg"
},
"type": "query"
}
],
"executionErrorState": "alerting",
"frequency": "10s",
"handler": 1,
"name": "bulk alerting",
"noDataState": "no_data",
"notifications": []
},
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-prometheus",
"fill": 1,
"gridPos": {
"h": 9,
"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",
"percentage": false,
"pointradius": 5,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"$$hashKey": "object:117",
"expr": "go_goroutines",
"format": "time_series",
"intervalFactor": 1,
"refId": "A"
}
],
"thresholds": [
{
"colorMode": "critical",
"fill": true,
"line": true,
"op": "gt",
"value": 50
}
],
"timeFrom": null,
"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
}
]
}
],
"schemaVersion": 16,
"style": "dark",
"tags": [],
"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": "New dashboard",
"uid": null,
"version": 0
}
@@ -0,0 +1,170 @@
{
alertingDashboard(dashboardCounter, datasourceCounter):: {
title: "alerting-title-" + dashboardCounter,
editable: true,
gnetId: null,
graphTooltip: 0,
id: null,
links: [],
panels: [
{
alert: {
conditions: [
{
evaluator: {
params: [
65
],
type: "gt"
},
operator: {
type: "and"
},
query: {
params: [
"A",
"5m",
"now"
]
},
reducer: {
params: [],
type: "avg"
},
type: "query"
}
],
executionErrorState: "alerting",
frequency: "24h",
handler: 1,
name: "bulk alerting " + dashboardCounter,
noDataState: "no_data",
notifications: []
},
aliasColors: {},
bars: false,
dashLength: 10,
dashes: false,
datasource: "gfdev-bulkalerting-" + datasourceCounter,
fill: 1,
gridPos: {
h: 9,
w: 12,
x: 0,
y: 0
},
id: 1,
legend: {
avg: false,
current: false,
max: false,
min: false,
show: true,
total: false,
values: false
},
lines: true,
linewidth: 1,
nullPointMode: "null",
percentage: false,
pointradius: 5,
points: false,
renderer: "flot",
seriesOverrides: [],
spaceLength: 10,
stack: false,
steppedLine: false,
targets: [
{
expr: "go_goroutines",
format: "time_series",
intervalFactor: 1,
refId: "A"
}
],
thresholds: [
{
colorMode: "critical",
fill: true,
line: true,
op: "gt",
value: 50
}
],
timeFrom: null,
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
}
]
}
],
schemaVersion: 16,
style: "dark",
tags: [],
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: "",
uid: null,
version: 0
},
}
@@ -0,0 +1,14 @@
local arr = std.range(1, 100);
{
"apiVersion": 1,
"datasources": [
{
"name": 'gfdev-bulkalerting-' + counter,
"type": "prometheus",
"access": "proxy",
"url": "http://localhost:9090"
}
for counter in arr
],
}
+248
View File
@@ -0,0 +1,248 @@
apiVersion: 1
datasources:
- name: gdev-graphite
type: graphite
access: proxy
url: http://graphite11:80
jsonData:
graphiteVersion: "1.1"
- name: gdev-prometheus
type: prometheus
access: proxy
url: http://prometheus:9090
- name: gdev-slow-prometheus
type: prometheus
access: proxy
url: http://prometheus:3011
- name: gdev-testdata
isDefault: true
type: testdata
- name: gdev-influxdb
type: influxdb
access: proxy
database: site
user: grafana
url: http://influxdb:8086
jsonData:
timeInterval: "15s"
secureJsonData:
password: grafana
- name: gdev-influxdb-telegraf
type: influxdb
access: proxy
database: telegraf
user: grafana
url: http://telegraf:8086
jsonData:
timeInterval: "10s"
secureJsonData:
password: grafana
- name: gdev-opentsdb
type: opentsdb
access: proxy
url: http://opentsdb:4242
jsonData:
tsdbResolution: 1
tsdbVersion: 1
- name: gdev-elasticsearch-v2-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://elasticsearch:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 2
- name: gdev-elasticsearch-v2-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://elasticsearch:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 2
- name: gdev-elasticsearch-v5-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://elasticsearch5:10200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 5
- name: gdev-elasticsearch-v5-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://elasticsearch5:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 5
- name: gdev-elasticsearch-v6-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://elasticsearch6:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v6-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://elasticsearch6:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v6-filebeat
type: elasticsearch
access: proxy
database: "[filebeat-]YYYY.MM.DD"
url: http://elasticsearch6:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 60
- name: gdev-elasticsearch-v7-metrics
type: elasticsearch
access: proxy
database: "[metrics-]YYYY.MM.DD"
url: http://elasticsearch7:9200
jsonData:
timeInterval: 10s
interval: Daily
timeField: "@timestamp"
esVersion: 70
- name: gdev-elasticsearch-v7-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://elasticsearch7:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 70
- name: gdev-elasticsearch-v7-filebeat
type: elasticsearch
access: proxy
database: "[filebeat-]YYYY.MM.DD"
url: http://elasticsearch7:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 70
timeInterval: "10s"
logMessageField: message
logLevelField: fields.level
- name: gdev-elasticsearch-v7-metricbeat
type: elasticsearch
access: proxy
database: "[metricbeat-]YYYY.MM.DD"
url: http://elasticsearch7:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 70
timeInterval: "10s"
- name: gdev-mysql
type: mysql
url: mysql:3306
database: grafana
user: grafana
secureJsonData:
password: password
- name: gdev-mysql-ds-tests
type: mysql
url: mysqltests:3306
database: grafana_ds_tests
user: grafana
secureJsonData:
password: password
- name: gdev-mssql
type: mssql
url: mssql:1433
database: grafana
user: grafana
secureJsonData:
password: Password!
- name: gdev-mssql-ds-tests
type: mssql
url: mssqltests:1433
database: grafanatest
user: grafana
secureJsonData:
password: Password!
- name: gdev-postgres
type: postgres
url: postgres:5432
database: grafana
user: grafana
secureJsonData:
password: password
jsonData:
sslmode: "disable"
- name: gdev-postgres-ds-tests
type: postgres
url: postgrestest:5432
database: grafanadstest
user: grafanatest
secureJsonData:
password: grafanatest
jsonData:
sslmode: "disable"
- name: gdev-cloudwatch
type: cloudwatch
editable: true
jsonData:
authType: credentials
defaultRegion: eu-west-2
# Keep to test old /api/prom API
- name: gdev-loki-0.3
type: loki
access: proxy
url: http://loki0.3:3100
editable: false
# First version with new v1 API (remove once v1 is out)
- name: gdev-loki-0.4
type: loki
access: proxy
url: http://loki0.4:3100
editable: false
- name: gdev-loki
type: loki
access: proxy
url: http://loki:3100
editable: false
@@ -0,0 +1,191 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"aliasColors": {},
"bars": true,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-influxdb-telegraf",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
"current": false,
"max": false,
"min": false,
"show": false,
"total": false,
"values": false
},
"lines": false,
"linewidth": 1,
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 2,
"points": false,
"renderer": "flot",
"seriesOverrides": [],
"spaceLength": 10,
"stack": false,
"steppedLine": false,
"targets": [
{
"alias": "Count",
"groupBy": [
{
"params": ["1m"],
"type": "time"
},
{
"params": ["null"],
"type": "fill"
}
],
"measurement": "logs",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "time_series",
"select": [
[
{
"params": ["message"],
"type": "field"
},
{
"params": [],
"type": "count"
}
]
],
"tags": []
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Log messages over time",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
},
{
"datasource": "gdev-influxdb-telegraf",
"gridPos": {
"h": 18,
"w": 24,
"x": 0,
"y": 6
},
"id": 2,
"options": {
"showLabels": false,
"showTime": true,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"groupBy": [],
"measurement": "logs",
"orderByTime": "ASC",
"policy": "default",
"refId": "A",
"resultFormat": "table",
"select": [
[
{
"params": ["message"],
"type": "field"
}
]
],
"tags": []
}
],
"timeFrom": null,
"timeShift": null,
"title": "Logs",
"type": "logs"
}
],
"schemaVersion": 22,
"style": "dark",
"tags": ["gdev", "influxdb", "datasource-test"],
"templating": {
"list": []
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Datasource tests - InfluxDB Logs",
"uid": "yjRroGsWk",
"version": 4
}
@@ -0,0 +1,217 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": null,
"links": [],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": "gdev-opentsdb",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"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": [
{
"aggregator": "sum",
"downsampleAggregator": "avg",
"downsampleFillPolicy": "none",
"metric": "cpu",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "CPU",
"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,
"datasource": "gdev-opentsdb",
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"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": [
{
"aggregator": "sum",
"downsampleAggregator": "avg",
"downsampleFillPolicy": "none",
"metric": "logins.count",
"refId": "A"
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Login Count",
"tooltip": {
"shared": true,
"sort": 0,
"value_type": "individual"
},
"type": "graph",
"xaxis": {
"buckets": null,
"mode": "time",
"name": null,
"show": true,
"values": []
},
"yaxes": [
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
},
{
"format": "short",
"label": null,
"logBase": 1,
"max": null,
"min": null,
"show": true
}
],
"yaxis": {
"align": false,
"alignLevel": null
}
}
],
"schemaVersion": 22,
"style": "dark",
"tags": ["datasource-test", "gdev", "opentsdb"],
"templating": {
"list": []
},
"time": {
"from": "now-1h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Datasource tests - OpenTSDB",
"uid": "tFU1mQyWz",
"version": 2
}
@@ -66,7 +66,7 @@
{
"targetBlank": false,
"title": "Drill it down",
"url": "http://localhost:3000/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}"
"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}"
}
]
},
@@ -164,7 +164,7 @@
{
"targetBlank": false,
"title": "Drill it down",
"url": "http://localhost:3000/d/wfTJJL5Wz/datalinks-source?var-seriesName=${__series.name}&var-valueTime=${__value.time}&var-valueNumeric=${__value.numeric}&var-valueText=${__value.text}&var-fieldName=${__field.name}"
"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}"
}
]
},
@@ -246,7 +246,7 @@
{
"targetBlank": true,
"title": "Drill it down!",
"url": "http://localhost:3000/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}"
"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": [
@@ -307,7 +307,7 @@
"links": [
{
"title": "Drill it down",
"url": "http://localhost:3000/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}"
"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": [],
@@ -222,7 +222,7 @@
"text": "A",
"value": ["A"]
},
"datasource": "TestData DB-1",
"datasource": "gdev-testdata",
"definition": "*",
"hide": 0,
"includeAll": true,
@@ -247,7 +247,7 @@
"text": "AA",
"value": ["AA"]
},
"datasource": "TestData DB-1",
"datasource": "gdev-testdata",
"definition": "$datacenter.*",
"hide": 0,
"includeAll": true,
@@ -0,0 +1,195 @@
{
"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": 1584435937931,
"links": [],
"panels": [
{
"aliasColors": {},
"bars": false,
"dashLength": 10,
"dashes": false,
"datasource": null,
"fill": 1,
"fillGradient": 0,
"gridPos": {
"h": 14,
"w": 19,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"alignAsTable": true,
"avg": false,
"current": false,
"max": false,
"min": true,
"rightSide": true,
"show": true,
"total": false,
"values": true
},
"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": "updatesOnTime: $updatesOnTime",
"refId": "A",
"scenarioId": "random_walk"
},
{
"alias": "dependsOnFirst: $dependsOnFirst",
"refId": "B",
"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
}
}
],
"schemaVersion": 22,
"style": "dark",
"tags": ["gdev", "templating"],
"templating": {
"list": [
{
"allValue": null,
"current": {
"text": "value.1584434137814",
"value": "value.1584434137814"
},
"datasource": "gdev-testdata",
"definition": "value.$__from",
"hide": 0,
"includeAll": false,
"index": -1,
"label": null,
"multi": false,
"name": "updatesOnTime",
"options": [],
"query": "value.$__from",
"refresh": 2,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
},
{
"allValue": null,
"current": {
"text": "value.value.1584434072074",
"value": "value.value.1584434072074"
},
"datasource": "gdev-testdata",
"definition": "value.$updatesOnTime",
"hide": 0,
"includeAll": false,
"index": -1,
"label": null,
"multi": false,
"name": "dependsOnFirst",
"options": [
{
"selected": true,
"text": "value.value.1584434072074",
"value": "value.value.1584434072074"
}
],
"query": "value.$updatesOnTime",
"refresh": 0,
"regex": "",
"skipUrlSync": false,
"sort": 0,
"tagValuesQuery": "",
"tags": [],
"tagsQuery": "",
"type": "query",
"useTags": false
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Templating - Variables That Refresh On Time Change",
"uid": "HeUnbEuZk",
"variables": {
"list": []
},
"version": 13
}
+1
View File
@@ -0,0 +1 @@
grafana_version=6.6.2
@@ -0,0 +1,8 @@
grafana:
image: grafana/grafana:${grafana_version}
ports:
- "3001:3000"
volumes:
- "./dashboards.yaml:/etc/grafana/provisioning/dashboards/dashboards.yaml"
- "./dev-dashboards:/usr/share/grafana/devenv/dev-dashboards"
- "./datasources_docker.yaml:/etc/grafana/provisioning/datasources/datasources.yaml"
@@ -1,18 +1,15 @@
prometheus:
build: docker/blocks/prometheus
network_mode: host
ports:
- "9090:9090"
node_exporter:
image: prom/node-exporter
network_mode: host
ports:
- "9100:9100"
fake-prometheus-data:
image: grafana/fake-data-gen
network_mode: host
ports:
- "9091:9091"
environment:
@@ -20,12 +17,10 @@
alertmanager:
image: quay.io/prometheus/alertmanager
network_mode: host
ports:
- "9093:9093"
prometheus-random-data:
build: docker/blocks/prometheus_random_data
network_mode: host
ports:
- "8081:8080"
@@ -15,7 +15,7 @@ alerting:
- scheme: http
static_configs:
- targets:
- "127.0.0.1:9093"
- "alertmanager:9093"
scrape_configs:
- job_name: 'prometheus'
@@ -24,16 +24,16 @@ scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['127.0.0.1:9100']
- targets: ['node_exporter:9100']
- job_name: 'fake-data-gen'
static_configs:
- targets: ['127.0.0.1:9091']
- targets: ['fake-prometheus-data:9091']
- job_name: 'grafana'
static_configs:
- targets: ['127.0.0.1:3000']
- targets: ['grafana:3000']
- job_name: 'prometheus-random-data'
static_configs:
- targets: ['127.0.0.1:8081']
- targets: ['prometheus-random-data:8080']
@@ -1,18 +1,15 @@
prometheus:
build: docker/blocks/prometheus2
network_mode: host
ports:
- "9090:9090"
node_exporter:
image: prom/node-exporter
network_mode: host
ports:
- "9100:9100"
fake-prometheus-data:
image: grafana/fake-data-gen
network_mode: host
ports:
- "9091:9091"
environment:
@@ -20,12 +17,10 @@
alertmanager:
image: quay.io/prometheus/alertmanager
network_mode: host
ports:
- "9093:9093"
prometheus-random-data:
build: docker/blocks/prometheus_random_data
network_mode: host
ports:
- "8081:8080"
@@ -24,16 +24,16 @@ scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['127.0.0.1:9100']
- targets: ['node_exporter:9100']
- job_name: 'fake-data-gen'
static_configs:
- targets: ['127.0.0.1:9091']
- targets: ['fake-prometheus-data:9091']
- job_name: 'grafana'
static_configs:
- targets: ['127.0.0.1:3000']
- targets: ['grafana:3000']
- job_name: 'prometheus-random-data'
static_configs:
- targets: ['127.0.0.1:8081']
- targets: ['prometheus-random-data:8080']
@@ -1,3 +0,0 @@
FROM prom/prometheus:v1.8.2
ADD prometheus.yml /etc/prometheus/
ADD alert.rules /etc/prometheus/
@@ -1,10 +0,0 @@
# Alert Rules
ALERT AppCrash
IF process_open_fds > 0
FOR 15s
LABELS { severity="critical" }
ANNOTATIONS {
summary = "Number of open fds > 0",
description = "Just testing"
}
@@ -1,26 +0,0 @@
prometheus:
build: docker/blocks/prometheus_mac
ports:
- "9090:9090"
node_exporter:
image: prom/node-exporter
ports:
- "9100:9100"
fake-prometheus-data:
image: grafana/fake-data-gen
ports:
- "9091:9091"
environment:
FD_DATASOURCE: prom
alertmanager:
image: quay.io/prometheus/alertmanager
ports:
- "9093:9093"
prometheus-random-data:
build: docker/blocks/prometheus_random_data
ports:
- "8081:8080"
@@ -1,39 +0,0 @@
# my global config
global:
scrape_interval: 10s # By default, scrape targets every 15 seconds.
evaluation_interval: 10s # By default, scrape targets every 15 seconds.
# scrape_timeout is set to the global default (10s).
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
- "alert.rules"
# - "first.rules"
# - "second.rules"
alerting:
alertmanagers:
- scheme: http
static_configs:
- targets:
- "alertmanager:9093"
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
- job_name: 'fake-data-gen'
static_configs:
- targets: ['fake-prometheus-data:9091']
- job_name: 'grafana'
static_configs:
- targets: ['host.docker.internal:3000']
- job_name: 'prometheus-random-data'
static_configs:
- targets: ['prometheus-random-data:8080']
@@ -1,7 +1,7 @@
# This Dockerfile builds an image for a client_golang example.
# Builder image, where we build the example.
FROM golang:1.13.4 AS builder
FROM golang:1.14.1 AS builder
# Download prometheus/client_golang/examples/random first
RUN go get github.com/prometheus/client_golang/examples/random
WORKDIR /go/src/github.com/prometheus/client_golang
@@ -0,0 +1,19 @@
http:
middlewares:
compress-response:
compress: {}
services:
grafana-subpath:
loadBalancer:
servers:
- url: 'http://grafana-subpath:3000/'
routers:
grafana-subpath:
entryPoints:
- web
middlewares:
- compress-response
rule: 'Path(`/grafana`) || PathPrefix(`/grafana/`)'
service: grafana-subpath
@@ -0,0 +1,19 @@
version: '3'
services:
traefik:
image: traefik:v2.1
volumes:
- './traefik.yml:/etc/traefik/traefik.yml'
- './configs:/etc/traefik/configs'
ports:
- '80:80'
- '8080:8080'
links:
- grafana-subpath
grafana-subpath:
image: grafana/grafana:latest
environment:
- GF_SERVER_ROOT_URL=/grafana
- GF_SERVER_SERVE_FROM_SUB_PATH=true
+18
View File
@@ -0,0 +1,18 @@
## traefik.yml
# Entrypoints enabled
entryPoints:
web:
address: ':80'
# API and dashboard configuration
api:
insecure: true
# Loggings
log: {}
# File configurations folder
providers:
file:
directory: /etc/traefik/configs
@@ -0,0 +1,6 @@
# There is no data generator for this so easiest way to get some data here is run this example app
# https://github.com/openzipkin/zipkin-js-example/tree/master/web
zipkin:
image: openzipkin/zipkin:latest
ports:
- "9411:9411"
@@ -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) => {}
+19 -22
View File
@@ -1,24 +1,21 @@
{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
"lib": ["es6"],
"module": "commonjs",
"declaration": false,
"allowSyntheticDefaultImports": true,
"inlineSourceMap": false,
"sourceMap": true,
"noEmitOnError": false,
"emitDecoratorMetadata": false,
"experimentalDecorators": true,
"noImplicitReturns": true,
"noImplicitThis": false,
"noImplicitUseStrict":false,
"noImplicitAny": false,
"noUnusedLocals": true
},
"include": [
"*.ts",
"**/*.ts"
]
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"declaration": false,
"emitDecoratorMetadata": false,
"experimentalDecorators": true,
"inlineSourceMap": false,
"lib": ["es6"],
"module": "commonjs",
"moduleResolution": "node",
"noEmitOnError": false,
"noImplicitAny": false,
"noImplicitReturns": true,
"noImplicitThis": false,
"noImplicitUseStrict": false,
"noUnusedLocals": true,
"sourceMap": true,
"target": "es6"
},
"include": ["*.ts", "**/*.ts"]
}
+10 -3
View File
@@ -18,14 +18,21 @@ bulkAlertingDashboard() {
requiresJsonnet
COUNTER=0
MAX=100
jsonnet -o "bulk_alerting_dashboards/bulk_alerting_datasources.yaml" ./bulk_alerting_dashboards/datasources.jsonnet
COUNTER=1
DS=1
MAX=1000
while [ $COUNTER -lt $MAX ]; do
jsonnet -o "bulk_alerting_dashboards/alerting_dashboard${COUNTER}.json" -e "local bulkDash = import 'bulk_alerting_dashboards/bulkdash_alerting.jsonnet'; bulkDash + { uid: 'bd-${COUNTER}', title: 'alerting-title-${COUNTER}' }"
jsonnet -o "bulk_alerting_dashboards/alerting_dashboard${COUNTER}.json" \
-e "local bulkDash = import 'bulk_alerting_dashboards/dashboard.libsonnet'; bulkDash.alertingDashboard(${COUNTER}, ${DS})"
let COUNTER=COUNTER+1
let DS=COUNTER/10
let DS=DS+1
done
ln -s -f ../../../devenv/bulk_alerting_dashboards/bulk_alerting_dashboards.yaml ../conf/provisioning/dashboards/custom.yaml
ln -s -f ../../../devenv/bulk_alerting_dashboards/bulk_alerting_datasources.yaml ../conf/provisioning/datasources/custom.yaml
}
requiresJsonnet() {
+4 -4
View File
@@ -1,9 +1,9 @@
.PHONY: docs docs-test
IMAGE = grafana/docs-base@sha256:63758b74e3990ab61e274f5e98da092d5c38378829dad0488aa97c59f0144f34
docs:
docker pull grafana/docs-base:latest
docker run -v $(PWD)/sources:/hugo/content/docs/grafana/latest -p 3002:3002 --rm -it grafana/docs-base:latest /bin/bash -c 'npm i && make webpack && hugo server -p 3002 -D --ignoreCache --baseUrl http://localhost:3002 --bind 0.0.0.0'
docker run -v $(shell pwd)/sources:/hugo/content/docs/grafana/latest -p 3002:3002 --rm -it $(IMAGE) /bin/bash -c 'make server'
docs-test:
docker pull grafana/docs-base:latest
docker run -v $(PWD)/sources:/hugo/content/docs/grafana/latest --rm -it grafana/docs-base:latest /bin/bash -c 'npm i && make prod'
docker run -v $(shell pwd)/sources:/hugo/content/docs/grafana/latest --rm -it $(IMAGE) /bin/bash -c 'make prod'
+23 -17
View File
@@ -6,24 +6,29 @@ type = "docs"
aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin", "/docs/grafana/v3.1"]
+++
# Grafana Documentation
# Grafana documentation
## Installing Grafana
<h2>Installing Grafana</h2>
<div class="nav-cards">
<a href="{{< relref "installation/debian.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-linux">
</div>
<h5>Installing on Linux</h5>
<h5>Install on Linux</h5>
</a>
<a href="{{< relref "installation/mac.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-apple">
</div>
<h5>Installing on macOS</h5>
<h5>Install on macOS</h5>
</a>
<a href="{{< relref "installation/windows.md" >}}" class="nav-cards__item nav-cards__item--install">
<a href="{{< relref "installation/windows.md" >}}" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-windows">
</div>
<h5>Installing on Windows</h5>
<h5>Install on Windows</h5>
</a>
<a href="{{< relref "installation/docker.md" >}}" class="nav-cards__item nav-cards__item--install">
<img src="/static/img/logos/logo-docker.svg">
<h5>Run Docker image</h5>
</a>
<a href="https://grafana.com/cloud/grafana" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-cloud">
@@ -33,28 +38,28 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
<a href="https://grafana.com/grafana/download" class="nav-cards__item nav-cards__item--install">
<div class="nav-cards__icon fa fa-moon-o">
</div>
<h5>Nightly Builds</h5>
<h5>Nightly builds</h5>
</a>
<div class="nav-cards__item nav-cards__item--install">
<h5>For other platforms read the <a href="{{< relref "project/building_from_source.md" >}}">build from source</a>
instructions for more information.</h5>
</div>
</div>
<h2>Guides</h2>
## Guides
<div class="nav-cards">
<a href="https://grafana.com/grafana" class="nav-cards__item nav-cards__item--guide">
<a href="{{< relref "guides/what-is-grafana.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What is Grafana?</h4>
<p>Get an overview of Grafana's key features.</p>
</a>
<a href="{{< relref "guides/getting_started.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Getting started</h4>
<p>Learn the basics of using Grafana.</p>
</a>
<a href="{{< relref "installation/configuration.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Configure Grafana</h4>
<p>Review the configuration and setup options.</p>
</a>
<a href="{{< relref "guides/getting_started.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Getting started</h4>
<p>Learn the basics of using Grafana.</p>
<a href="{{< relref "guides/timeseries.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Intro to time series</h4>
<p>Learn about time series data.</p>
</a>
<a href="{{< relref "administration/provisioning.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Provisioning</h4>
@@ -67,7 +72,8 @@ aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin",
</div>
<h2>Data Source Guides</h2>
## Data source guides
<div class="nav-cards">
<a href="{{< relref "features/datasources/graphite.md" >}}" class="nav-cards__item nav-cards__item--ds">
<img src="/img/docs/logos/icon_graphite.svg" >
+2 -2
View File
@@ -112,7 +112,7 @@ grafana-cli --debug plugins install <plugin-id>
`--configOverrides` is a command line argument that acts like an environmental variable override.
For example, you can use it to redirect logging to another file (maybe to log plugin installs in a service like Hosted Grafana) or when resetting the admin password and you have non-default values for some important config value (like where the database is located).
For example, you can use it to redirect logging to another file (maybe to log plugin installations in a service like Hosted Grafana) or when resetting the admin password and you have non-default values for some important config value (like where the database is located).
**Example:**
```bash
@@ -125,7 +125,7 @@ Sets the path for the Grafana install/home path, defaults to working directory.
**Example:**
```bash
grafana-cli admin reset-admin-password --homepath "c:\Program Files\grafana" mynewpassword
grafana-cli --homepath "c:\Program Files\grafana" admin reset-admin-password mynewpassword
```
### Override config file
+85 -82
View File
@@ -1,66 +1,58 @@
+++
title = "Image Rendering"
title = "Image rendering"
description = ""
keywords = ["grafana", "image", "rendering", "phantomjs"]
keywords = ["grafana", "image", "rendering", "plugin"]
type = "docs"
aliases = ["/docs/grafana/latest/installation/image-rendering"]
[menu.docs]
parent = "admin"
parent = "features"
weight = 8
+++
# Image Rendering
# Image rendering
Grafana supports rendering of panels and dashboards as PNG-images.
Grafana supports automatic rendering of panels and dashboards as PNG images. This allows Grafana to automatically generate images of your panels to include in [alert notifications]({{< relref "../alerting/notifications.md" >}}).
When an image is being rendered the PNG-image is temporary written to the filesystem, i.e. a sub-directory of Grafana's [data](/installation/configuration/#data) directory named `png`.
When an image is being rendered the PNG-image is temporarily written to the file system. When an image is rendered, the PNG image is temporary written to the `png` folder in the Grafana `data` folder.
A background job runs each 10 minutes and will remove temporary images. You can configure how long time an image should be stored before being removed by configuring the [temp-data-lifetime](/installation/configuration/#temp-data-lifetime) setting.
A background job runs every 10 minutes and removes temporary images. You can configure how long an image should be stored before being removed by configuring the [temp-data-lifetime]({{< relref "../installation/configuration/#temp-data-lifetime" >}}) setting.
## Requirements
You can also render a PNG by clicking the dropdown arrow next to a panel title, then clicking **Share > Direct link rendered image**.
Rendering images may require quite a lot of memory, mainly because there are "browser instances" started in the
background responsible for the actual rendering. Further, if multiple images are being rendered in parallel it most
certainly has a bigger memory footprint. Minimum free memory recommendation is 1GB.
## Memory requirements
Depending on [rendering method](#rendering-methods) you would need that memory available in the system where the
rendering process is running. For [Grafana Image renderer plugin](#grafana-image-renderer-plugin) and [PhantomJS](#phantomjs)
it's the system which Grafana is installed on. For [Remote rendering service](#remote-rendering-service) it is the system where
that's installed.
Minimum free memory recommendation is 16GB on the system doing the rendering.
## Rendering methods
Rendering images can require a lot of memory, mainly because Grafana creates browser instances in the background for the actual rendering. If multiple images are rendered in parallel, then the rendering has a bigger memory footprint. One advantage of using the remote rendering service is that the rendering will be done on the remote system, so your local system resources will not be affected by rendering.
### Grafana image renderer plugin
## Alerting and render limits
> This plugin currently does not work if it is installed in the Grafana docker image. See [Install in Grafana docker image](#install-in-grafana-docker-image).
Alert notifications can include images, but rendering many images at the same time can overload the server where the renderer is running. For instructions of how to configure this, see [concurrent_render_limit]({{< relref "../installation/configuration/#concurrent_render_limit" >}}).
The [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) is a plugin that runs on the backend and handles rendering panels and dashboards as PNG-images using headless chrome.
## Install Grafana Image Renderer plugin
You can install it using grafana-cli:
The [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) is a plugin that runs on the backend and handles rendering panels and dashboards as PNG images using headless Chrome.
```bash
grafana-cli plugins install grafana-image-renderer
```
To install the plugin, refer to the [Grafana Image Renderer Installation instructions](https://grafana.com/grafana/plugins/grafana-image-renderer/installation).
For further information and instructions refer to [troubleshooting](#troubleshooting) and the [plugin details](https://grafana.com/grafana/plugins/grafana-image-renderer).
## Run in custom Grafana Docker image
#### Install in Grafana docker image
We recommend setting up another Docker container for rendering and using remote rendering. Refer to [Remote rendering service]({{< relref "#remote-rendering-service" >}}) for instructions.
This plugin is not compatible with the current Grafana Docker image without installing further system-level dependencies. We recommend setting up another Docker container for rendering and using remote rendering, see [Remote rendering service](#remote-rendering-service) for reference.
If you still want to install the plugin in the Grafana Docker image, refer to [Build with Grafana Image Renderer plugin pre-installed]({{< relref "../installation/docker/#build-with-grafana-image-renderer-plugin-pre-installed" >}}).
If you still want to install the plugin in the Grafana docker image we provide instructions for how to build a custom Grafana image, see [Installing using Docker](/installation/docker/#custom-image-with-grafana-image-renderer-plugin-pre-installed).
## Remote rendering service
### Remote rendering service
> Requires an internet connection.
The [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) can also be run as a remote HTTP rendering service. In this setup Grafana will render an image by making a HTTP request to the remote rendering service, which in turn render the image and returns it back in the HTTP response to Grafana.
The [Grafana Image Renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) can also be run as a remote HTTP rendering service. In this setup, Grafana renders an image by making a HTTP request to the remote rendering service, which in turn renders the image and returns it back in the HTTP response to Grafana.
You can run the remote HTTP rendering service using Docker or as a standalone Node.js application.
**Using Docker:**
### Run in Docker
The following example describes how to run Grafana and the remote HTTP rendering service in two separate docker containers using Docker Compose.
The following example shows how to run Grafana and the remote HTTP rendering service in two separate Docker containers using Docker Compose.
Create a `docker-compose.yml` with the following content.
Create a `docker-compose.yml` with the following content:
```yaml
version: '2'
@@ -80,54 +72,45 @@ services:
- 8081
```
and finally run:
And then run:
```bash
docker-compose up
```
**Running as standalone Node.js application:**
## Run as standalone Node.js application
The following example describes how to build and run the remote HTTP rendering service as a standalone node.js application and configure Grafana appropriately.
The following example describes how to build and run the remote HTTP rendering service as a standalone Node.js application and configure Grafana appropriately.
1. Git clone the [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) repository.
1. Clone the [Grafana image renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer) Git repository.
2. Install dependencies and build:
```bash
yarn install --pure-lockfile
yarn run build
```
3. Run the server
```bash
yarn install --pure-lockfile
yarn run build
```
```bash
node build/app.js server --port=8081
```
3. Update Grafana configuration:
3. Run the server:
```
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
```
4. Restart Grafana
```bash
node build/app.js server --port=8081
```
For further information and instructions refer to [troubleshooting](#troubleshooting) and the [plugin details](https://grafana.com/grafana/plugins/grafana-image-renderer).
4. Update Grafana configuration:
### PhantomJS
```
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
```
> PhantomJS is deprecated since Grafana v6.4 and will be removed in a future release. Please migrate to Grafana image renderer plugin or remote rendering service.
5. Restart Grafana.
[PhantomJS](https://phantomjs.org/) have been the only supported and default image renderer since Grafana v2.x and is shipped with Grafana.
## PhantomJS
PhantomJS binaries are included for Linux (x64), Windows (x64) and Darwin (x64). For Linux you should ensure that any required libraries, e.g. libfontconfig1, are available.
> Starting from Grafana v7.0.0, all PhantomJS support has been removed. Please use the Grafana Image Renderer plugin or remote rendering service.
Please note that PhantomJS binaries are not included for ARM. To support this you will need to ensure that a phantomjs binary is available under tools/phantomjs/phantomjs.
## Alerting and render limits
Alert notifications can include images, but rendering many images at the same time can overload the server where the renderer is running. For instructions of how to configure this, see [concurrent_render_limit]({{< relref "../installation/configuration/#concurrent_render_limit" >}}).
## Troubleshooting
## Troubleshoot image rendering
Enable debug log messages for rendering in the Grafana configuration file and inspect the Grafana server log.
@@ -147,19 +130,19 @@ error while loading shared libraries: libX11.so.6: cannot open shared object fil
```
In general you can use the [`ldd`](https://en.wikipedia.org/wiki/Ldd_(Unix)) utility to figure out what shared libraries
are missing/not installed in your system:
are not installed in your system:
```bash
$ cd <grafana-image-render plugin directiry>
$ ldd chrome-linux/chrome
linux-vdso.so.1 (0x00007fff1bf65000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2047945000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2047924000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f204791a000)
libX11.so.6 => not found
libX11-xcb.so.1 => not found
libxcb.so.1 => not found
libXcomposite.so.1 => not found
cd <grafana-image-render plugin directory>
ldd chrome-linux/chrome
linux-vdso.so.1 (0x00007fff1bf65000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2047945000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2047924000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f204791a000)
libX11.so.6 => not found
libX11-xcb.so.1 => not found
libxcb.so.1 => not found
libXcomposite.so.1 => not found
...
```
@@ -173,23 +156,43 @@ libx11-6 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3
**Centos:**
On a minimal Centos install the following dependencies have been confirmed as needed for the image rendering to function.
On a minimal Centos install the following dependencies have been confirmed as needed for the image rendering to function:
```bash
libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config
```
#### Using custom Chrome/Chromium
### Certificate signed by internal certificate authorities
In many cases Grafana, runs on internal servers and uses certificates that have not been signed by a CA ([Certificate Authority](https://en.wikipedia.org/wiki/Certificate_authority)) known to Chrome, and therefore cannot be validated. Chrome internally uses NSS ([Network Security Services](https://en.wikipedia.org/wiki/Network_Security_Services)) for cryptogtraphic operations such as the validation of certificates.
If you are using the Grafana Image Renderer with a Grafana server that uses a certificate signed by such a custom CA (for example a company-internal CA), rendering images will fail and you will see messages like this in the Grafana log:
```
t=2019-12-04T12:39:22+0000 lvl=error msg="Render request failed" logger=rendering error=map[] url="https://192.168.106.101:3443/d-solo/zxDJxNaZk/graphite-metrics?orgId=1&refresh=1m&from=1575438321300&to=1575459921300&var-Host=master1&panelId=4&width=1000&height=500&tz=Europe%2FBerlin&render=1" timestamp=0001-01-01T00:00:00.000Z
t=2019-12-04T12:39:22+0000 lvl=error msg="Rendering failed." logger=context userId=1 orgId=1 uname=admin error="Rendering failed: Error: net::ERR_CERT_AUTHORITY_INVALID at https://192.168.106.101:3443/d-solo/zxDJxNaZk/graphite-metrics?orgId=1&refresh=1m&from=1575438321300&to=1575459921300&var-Host=master1&panelId=4&width=1000&height=500&tz=Europe%2FBerlin&render=1"
t=2019-12-04T12:39:22+0000 lvl=error msg="Request Completed" logger=context userId=1 orgId=1 uname=admin method=GET path=/render/d-solo/zxDJxNaZk/graphite-metrics status=500 remote_addr=192.168.106.101 time_ms=310 size=1722 referer="https://grafana.xxx-xxx/d/zxDJxNaZk/graphite-metrics?orgId=1&refresh=1m"
```
(The severity-level `error` in the above messages might be misspelled with a single `r`)
If this happens, then you have to add the certificate to the trust store. If you have the certificate file for the internal root CA in the file `internal-root-ca.crt.pem`, then use these commands to create a user specific NSS trust store for the Grafana user (`grafana` for the purpose of this example) and execute the following steps:
```[root@server ~]# [ -d /usr/share/grafana/.pki/nssdb ] || mkdir -p /usr/share/grafana/.pki/nssdb
[root@merver ~]# certutil -d sql:/usr/share/grafana/.pki/nssdb -A -n internal-root-ca -t C -i /etc/pki/tls/certs/internal-root-ca.crt.pem
[root@server ~]# chown -R grafana: /usr/share/grafana/.pki/nssdb
```
### Custom Chrome/Chromium
As a last resort, if you already have [Chrome](https://www.google.com/chrome/) or [Chromium](https://www.chromium.org/)
installed on your system you can configure [Grafana Image renderer plugin](#grafana-image-renderer-plugin) to use this
installed on your system, then you can configure [Grafana Image renderer plugin](#grafana-image-renderer-plugin) to use this
instead of the pre-packaged version of Chromium.
> Please note that this is not recommended since you may encounter problems if the installed version of Chrome/Chromium is not
> is compatible with the [Grafana Image renderer plugin](#grafana-image-renderer-plugin).
> Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
> compatible with the [Grafana Image renderer plugin](#grafana-image-renderer-plugin).
To override the path to the Chrome/Chromium executable you can set an environment variable and make sure that
it's available for the Grafana process, e.g.
To override the path to the Chrome/Chromium executable, set an environment variable and make sure that it's available for the Grafana process. For example:
```bash
export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser"
+83 -4
View File
@@ -1,5 +1,5 @@
+++
title = "Internal metrics"
title = "Internal Grafana metrics"
description = "Internal metrics exposed by Grafana"
keywords = ["grafana", "metrics", "internal metrics"]
type = "docs"
@@ -8,8 +8,87 @@ parent = "admin"
weight = 8
+++
# Internal metrics
# Internal Grafana metrics
Grafana collects some metrics about itself internally. Currently, Grafana supports pushing metrics to Graphite or exposing them to be scraped by Prometheus.
Grafana collects some metrics about itself internally. Grafana supports pushing metrics to Graphite or exposing them to be scraped by Prometheus.
To emit internal metrics you have to enable the option under the [metrics] section in your [grafana.ini](http://docs.grafana.org/installation/configuration/#enabled-6) config file. If you want to push metrics to Graphite, you must also configure the [metrics.graphite](http://docs.grafana.org/installation/configuration/#metrics-graphite) section.
For more information about configuration options related to Grafana metrics, refer to [metrics]({{< relref "../installation/configuration/#metrics" >}}) and [metrics.graphite]({{< relref "../installation/configuration/#metrics-graphite" >}}) in [Configuration]({{< relref "../installation/configuration.md" >}}).
## Available metrics
When enabled, Grafana exposes a number of metrics, including:
* Active Grafana instances
* Number of dashboards, users, and playlists
* HTTP status codes
* Requests by routing group
* Grafana active alerts
* Grafana performance
## Pull metrics from Grafana into Prometheus
These instructions assume you have already added Prometheus as a data source in Grafana.
1. Enable Prometheus to scrape metrics from Grafana. In your configuration file (`grafana.ini` or `custom.ini` depending on your operating system) remove the semicolon to enable the following configuration options:
```
# Metrics available at HTTP API Url /metrics
[metrics]
# Disable / Enable internal metrics
enabled = true
# Disable total stats (stat_totals_*) metrics to be generated
disable_total_stats = false
```
1. (optional) If you want to require authorization to view the metrics endpoint, then uncomment and set the following options:
```
basic_auth_username =
basic_auth_password =
```
1. Restart Grafana. Grafana now exposes metrics at http://localhost:3000/metrics.
1. Add the job to your prometheus.yml file.
Example:
```
- job_name: 'grafana_metrics'
scrape_interval: 15s
scrape_timeout: 5s
static_configs:
- targets: ['localhost:3000']
```
1. Restart Prometheus. Your new job should appear on the Targets tab.
1. In Grafana, hover your mouse over the **Configuration** (gear) icon on the left sidebar and then click **Data Sources**.
1. Select the **Prometheus** data source.
1. On the Dashboards tab, **Import** the Grafana metrics dashboard. All scraped Grafana metrics are available in the dashboard.
## View Grafana metrics in Graphite
These instructions assume you have already added Graphite as a data source in Grafana.
1. Enable sending metrics to Graphite. In your configuration file (`grafana.ini` or `custom.ini` depending on your operating system) remove the semicolon to enable the following configuration options:
```
# Metrics available at HTTP API Url /metrics
[metrics]
# Disable / Enable internal metrics
enabled = true
# Disable total stats (stat_totals_*) metrics to be generated
disable_total_stats = false
```
1. Enable [metrics.graphite] options:
```
# Send internal metrics to Graphite
[metrics.graphite]
# Enable by setting the address setting (ex localhost:2003)
address = <hostname or ip>:<port#>
prefix = prod.grafana.%(instance_name)s.
```
1. Restart Grafana. Grafana now exposes metrics at http://localhost:3000/metrics and sends them to the Graphite location you specified.
+18 -9
View File
@@ -93,6 +93,8 @@ datasources:
access: proxy
# <int> org id. will default to orgId 1 if not specified
orgId: 1
# <string> custom UID which can be used to reference this datasource in other parts of the configuration, if not specified will be generated automatically
uid: my_unique_uid
# <string> url
url: http://localhost:8080
# <string> Deprecated, use secureJsonData.password
@@ -160,6 +162,9 @@ Since not all datasources have the same configuration settings we only have the
| tsdbVersion | string | OpenTSDB | Version |
| tsdbResolution | string | OpenTSDB | Resolution |
| sslmode | string | PostgreSQL | SSLmode. 'disable', 'require', 'verify-ca' or 'verify-full' |
| sslRootCertFile | string | PostgreSQL | SSL server root certificate file, must be readable by the Grafana user |
| sslCertFile | string | PostgreSQL | SSL client certificate file, must be readable by the Grafana user |
| sslKeyFile | string | PostgreSQL | SSL client key file, must be readable by *only* the Grafana user |
| encrypt | string | MSSQL | Connection SSL encryption handling. 'disable', 'false' or 'true' |
| postgresVersion | number | PostgreSQL | Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, ..., v10 |
| timescaledb | boolean | PostgreSQL | Enable usage of TimescaleDB extension |
@@ -203,7 +208,7 @@ datasources:
### Dashboards
It's possible to manage dashboards in Grafana by adding one or more yaml config files in the [`provisioning/dashboards`](/installation/configuration/#provisioning) directory. Each config file can contain a list of `dashboards providers` that will load dashboards into Grafana from the local filesystem.
It's possible to manage dashboards in Grafana by adding one or more yaml config files in the [`provisioning/dashboards`]({{< relref "../installation/configuration.md" >}}) directory. Each config file can contain a list of `dashboards providers` that will load dashboards into Grafana from the local filesystem.
The dashboard provider config file looks somewhat like this:
@@ -240,9 +245,9 @@ When Grafana starts, it will update/insert all dashboards available in the confi
It's possible to make changes to a provisioned dashboard in the Grafana UI. However, it is not possible to automatically save the changes back to the provisioning source.
If `allowUiUpdates` is set to `true` and you make changes to a provisioned dashboard, you can `Save` the dashboard then changes will be persisted to the Grafana database.
> **Note.**
> **Note:**
> If a provisioned dashboard is saved from the UI and then later updated from the source, the dashboard stored in the database will always be overwritten. The `version` property in the JSON file will not affect this, even if it is lower than the existing dashboard.
>
>
> If a provisioned dashboard is saved from the UI and the source is removed, the dashboard stored in the database will be deleted unless the configuration option `disableDeletion` is set to true.
If `allowUiUpdates` is configured to `false`, you are not able to make changes to a provisioned dashboard. When you click `Save`, Grafana brings up a *Cannot save provisioned dashboard* dialog. The screenshot below illustrates this behavior.
@@ -250,12 +255,12 @@ If `allowUiUpdates` is configured to `false`, you are not able to make changes t
Grafana offers options to export the JSON definition of a dashboard. Either `Copy JSON to Clipboard` or `Save JSON to file` can help you synchronize your dashboard changes back to the provisioning source.
Note: The JSON definition in the input field when using `Copy JSON to Clipboard` or `Save JSON to file` will have the `id` field automatically removed to aid the provisioning workflow.
{{< docs-imagebox img="/img/docs/v51/provisioning_cannot_save_dashboard.png" max-width="500px" class="docs-image--no-shadow" >}}
### Reusable Dashboard Urls
### Reusable Dashboard URLs
If the dashboard in the json file contains an [uid](/reference/dashboard/#json-fields), Grafana will force insert/update on that uid. This allows you to migrate dashboards betweens Grafana instances and provisioning Grafana from configuration without breaking the urls given since the new dashboard url uses the uid as identifier.
If the dashboard in the json file contains an [uid](/reference/dashboard/#json-fields), Grafana will force insert/update on that uid. This allows you to migrate dashboards betweens Grafana instances and provisioning Grafana from configuration without breaking the URLs given since the new dashboard URL uses the uid as identifier.
When Grafana starts, it will update/insert all dashboards available in the configured folders. If you modify the file, the dashboard will also be updated.
By default Grafana will delete dashboards in the database if the file is removed. You can disable this behavior using the `disableDeletion` setting.
@@ -270,7 +275,7 @@ Alert Notification Channels can be provisioned by adding one or more yaml config
Each config file can contain the following top-level fields:
- `notifiers`, a list of alert notifications that will be added or updated during start up. If the notification channel already exists, Grafana will update it to match the configuration file.
- `delete_notifiers`, a list of alert notifications to be deleted before before inserting/updating those in the `notifiers` list.
- `delete_notifiers`, a list of alert notifications to be deleted before inserting/updating those in the `notifiers` list.
Provisioning looks up alert notifications by uid, and will update any existing notification with the provided uid.
@@ -351,7 +356,9 @@ The following sections detail the supported settings for each alert notification
| icon_emoji |
| icon_url |
| uploadImage |
| mention |
| mentionUsers |
| mentionGroups |
| mentionChannel |
| token |
#### Alert notification `victorops`
@@ -396,6 +403,8 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| url |
| basicAuthUser |
| basicAuthPassword |
#### Alert notification `teams`
@@ -413,6 +422,7 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| singleEmail |
| addresses |
#### Alert notification `hipchat`
@@ -461,4 +471,3 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| url |
+1 -3
View File
@@ -11,9 +11,7 @@ weight = 2
# Metrics from the alert engine
> Alerting is only available in Grafana v4.0 and above.
The alert engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics](/installation/configuration/#metrics).
The alert engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{< relref "../administration/metrics/" >}}).
Description | Type | Metric name
---------- | ----------- | ----------
+28 -18
View File
@@ -71,31 +71,38 @@ external image destination if available or fallback to attaching the image to th
Be aware that if you use the `local` image storage email servers and clients might not be
able to access the image.
Setting | Description
---------- | -----------
Single email | Send a single email to all recipients. Disabled per default.
Addresses | Email addresses to recipients. You can enter multiple email addresses using a ";" separator.
### Slack
{{< imgbox max-width="40%" img="/img/docs/v4/slack_notification.png" caption="Alerting Slack Notification" >}}
To set up slack you need to configure an incoming webhook url at slack. You can follow their guide on how
to do that [here](https://api.slack.com/incoming-webhooks). If you want to include screenshots of the firing alerts
in the Slack messages you have to configure either the [external image destination](#external-image-store) in Grafana,
or a bot integration via Slack Apps. Follow Slack's guide to set up a bot integration and use the token provided
(https://api.slack.com/bot-users), which starts with "xoxb".
To set up Slack, you need to configure an incoming Slack webhook URL. You can follow
[Sending messages using Incoming Webhooks](https://api.slack.com/incoming-webhooks) on how to do that. If you want to include screenshots of the
firing alerts in the Slack messages you have to configure either the [external image destination](#external-image-store)
in Grafana or a bot integration via Slack Apps. Follow Slack's guide to set up a bot integration and use the token
provided (https://api.slack.com/bot-users), which starts with "xoxb".
Setting | Description
---------- | -----------
Url | Slack incoming webhook url.
Url | Slack incoming webhook URL.
Username | Set the username for the bot's message.
Recipient | Allows you to override the Slack recipient.
Recipient | Allows you to override the Slack recipient. You must either provide a channel Slack ID, a user Slack ID, a username reference (@&lt;user&gt;, all lowercase, no whitespace), or a channel reference (#&lt;channel&gt;, all lowercase, no whitespace).
Icon emoji | Provide an emoji to use as the icon for the bot's message. Ex :smile:
Icon URL | Provide a url to an image to use as the icon for the bot's message.
Mention | make it possible to include a mention in the Slack notification sent by Grafana. Ex @here or @channel
Icon URL | Provide a URL to an image to use as the icon for the bot's message.
Mention Users | Optionally mention one or more users in the Slack notification sent by Grafana. You have to refer to users, comma-separated, via their corresponding Slack IDs (which you can find by clicking the overflow button on each user's Slack profile).
Mention Groups | Optionally mention one or more groups in the Slack notification sent by Grafana. You have to refer to groups, comma-separated, via their corresponding Slack IDs (which you can get from each group's Slack profile URL).
Mention Channel | Optionally mention either all channel members or just active ones.
Token | If provided, Grafana will upload the generated image via Slack's file.upload API method, not the external image destination.
If you are using the token for a slack bot, then you have to invite the bot to the channel you want to send notifications and add the channel to the recipient field.
### PagerDuty
To set up PagerDuty, all you have to do is to provide an API key.
To set up PagerDuty, all you have to do is to provide an integration key.
Setting | Description
---------- | -----------
@@ -103,6 +110,8 @@ Integration Key | Integration key for PagerDuty.
Severity | Level for dynamic notifications, default is `critical`
Auto resolve incidents | Resolve incidents in PagerDuty once the alert goes back to ok
**Note:** The tags `Severity`, `Class`, `Group`, and `Component` have special meaning in the [Pagerduty Common Event Format - PD-CEF](https://support.pagerduty.com/docs/pd-cef). If an alert panel defines these tag keys, then they are transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools. A Severity tag set on an alert overrides the global Severity set on the notification channel if it's a valid level.
### Webhook
The webhook notification is a simple way to send information about a state change over HTTP to a custom endpoint.
@@ -132,7 +141,8 @@ Example json body:
"tag name":"tag value"
},
"title":"[Alerting] Panel Title alert"
}```
}
```
- **state** - The possible values for alert state are: `ok`, `paused`, `alerting`, `pending`, `no_data`.
@@ -188,20 +198,20 @@ Kafka | `kafka` | yes, external only | no
Line | `line` | yes, external only | no
Microsoft Teams | `teams` | yes, external only | no
OpsGenie | `opsgenie` | yes, external only | yes
Pagerduty | `pagerduty` | yes, external only | no
Pagerduty | `pagerduty` | yes, external only | yes
Prometheus Alertmanager | `prometheus-alertmanager` | yes, external only | yes
Pushover | `pushover` | yes | no
Sensu | `sensu` | yes, external only | no
Slack | `slack` | yes | no
Squadcast | `webhook` | no | no
Telegram | `telegram` | yes | no
Threema | `threema` | yes, external only | no
VictorOps | `victorops` | yes, external only | no
Webhook | `webhook` | yes, external only | yes
# Enable images in notifications {#external-image-store}
## Enable images in notifications {#external-image-store}
Grafana can render the panel associated with the alert rule as a PNG image and include that in the notification. Read more about the requirements and how to configure image rendering [here]({{< relref "../administration/image_rendering/" >}}).
Grafana can render the panel associated with the alert rule as a PNG image and include that in the notification. Read more about the requirements and how to configure
[image rendering]({{< relref "../administration/image_rendering/" >}}).
Most Notification Channels require that this image be publicly accessible (Slack and PagerDuty for example). In order to include images in alert notifications, Grafana can upload the image to an image store. It currently supports
Amazon S3, Webdav, Google Cloud Storage and Azure Blob Storage. So to set that up you need to configure the [external image uploader]({{< relref "../installation/configuration/#external-image-storage" >}}) in your grafana-server ini config file.
@@ -210,7 +220,7 @@ Be aware that some notifiers requires public access to the image to be able to i
Notification services which need public image access are marked as 'external only'.
# Use alert rule tags in notifications {#alert-rule-tags}
## Use alert rule tags in notifications {#alert-rule-tags}
> Only available in Grafana v6.3+.
@@ -220,7 +230,7 @@ It currently supports only the Prometheus Alertmanager notifier.
This is an optional feature. You can get notifications without using alert rule tags.
# Configure the link back to Grafana from alert notifications
## Configure the link back to Grafana from alert notifications
All alert notifications contain a link back to the triggered alert in the Grafana instance.
This url is based on the [domain]({{< relref "../installation/configuration/#domain" >}}) setting in Grafana.
This URL is based on the [domain]({{< relref "../installation/configuration/#domain" >}}) setting in Grafana.
+4 -11
View File
@@ -11,15 +11,11 @@ weight = 1
# Alerting Engine and Rules Guide
> Alerting is only available in Grafana v4.0 and above.
## Introduction
{{< imgbox max-width="40%" img="/img/docs/v4/drag_handles_gif.gif" caption="Alerting overview" >}}
Alerting in Grafana allows you to attach rules to your dashboard panels. When you save the dashboard
Grafana will extract the alert rules into a separate alert rule storage and schedule them for evaluation.
{{< imgbox max-width="40%" img="/img/docs/v4/drag_handles_gif.gif" caption="Alerting overview" >}}
In the alert tab of the graph panel you can configure how often the alert rule should be evaluated
and the conditions that need to be met for the alert to change state and trigger its
[notifications]({{< relref "notifications.md" >}}).
@@ -28,11 +24,9 @@ and the conditions that need to be met for the alert to change state and trigger
The alert rules are evaluated in the Grafana backend in a scheduler and query execution engine that is part
of core Grafana. Only some data sources are supported right now. They include `Graphite`, `Prometheus`, `InfluxDB`, `Elasticsearch`,
`Stackdriver`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle` and `Azure Data Explorer`.
`Stackdriver`, `Cloudwatch`, `Azure Monitor`, `MySQL`, `PostgreSQL`, `MSSQL`, `OpenTSDB`, `Oracle`, and `Azure Data Explorer`.
> Alerting support for Azure Monitor is only available in Grafana v6.0 and above.
### Clustering
## Clustering
Currently alerting supports a limited form of high availability. Since v4.2.0 of Grafana, alert notifications are deduped when running multiple servers. This means all alerts are executed on every server but no duplicate alert notifications are sent due to the deduping logic. Proper load balancing of alerts will be introduced in the future.
@@ -67,7 +61,6 @@ Below you can see an example timeline of an alert using the `For` setting. At ~1
Currently the only condition type that exists is a `Query` condition that allows you to
specify a query letter, time range and an aggregation function.
### Query condition example
```sql
+146
View File
@@ -0,0 +1,146 @@
+++
title = "Azure AD OAuth2 authentication"
description = "Grafana Azure AD OAuth Guide "
keywords = ["grafana", "configuration", "documentation", "oauth"]
type = "docs"
[menu.docs]
name = "Azure AD"
identifier = "azuread_oauth2"
parent = "authentication"
weight = 3
+++
# Azure AD OAuth2 authentication
> Only available in Grafana v6.7+
The Azure AD authentication provides the possibility to use an Azure Active Directory tenant as an identity provider for Grafana. By using Azure AD Application Roles it is also possible to assign Users and Groups to Grafana roles from the Azure Portal.
## Create the Azure AD application
To enable the Azure AD OAuth2 you must register your application with Azure AD.
1. Log in to [Azure Portal](https://portal.azure.com) and click **Azure Active Directory** in the side menu.
1. Click **App Registrations** and add a new application registration:
- Name: Grafana
- Application type: Web app / API
- Sign-on URL: `https://<grafana domain>/login/azuread`
1. Click the name of the new application to open the application details page.
1. Click **Endpoints**.
- Note down the **OAuth 2.0 authorization endpoint (v2)**, this will be the auth url.
- Note down the **OAuth 2.0 token endpoint (v2)**, this will be the token url.
1. Close the Endpoints page to come back to the application details page.
1. Note down the "Application ID", this will be the OAuth client id.
1. Click **Certificates & secrets** and add a new entry under Client secrets.
- Description: Grafana OAuth
- Expires: Never
1. Click **Add** then copy the key value, this will be the OAuth client secret.
1. Click **Manifest**.
- Add definitions for the required Application Roles for Grafana (Viewer, Editor, Admin). Without this configuration all users will be assigned to the Viewer role.
- Every role has to have a unique id. On Linux this can be created with `uuidgen` for instance.
```json
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"description": "Grafana admin Users",
"displayName": "Grafana Admin",
"id": "SOME_UNIQUE_ID",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Admin"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Grafana read only Users",
"displayName": "Grafana Viewer",
"id": "SOME_UNIQUE_ID",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Viewer"
},
{
"allowedMemberTypes": [
"User"
],
"description": "Grafana Editor Users",
"displayName": "Grafana Editor",
"id": "SOME_UNIQUE_ID",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Editor"
}
],
```
1. Click Overview and then on **Managed application in local directory** to show the Enterprise Application details.
1. Click on **Users and groups** and add Users/Groups to the Grafana roles by using **Add User**.
## Enable Azure AD Oauth in Grafana
1. Add the following to the [Grafana configuration file]({{< relref "../installation/configuration.md#config-file-locations" >}}):
```ini
[auth.azuread]
name = Azure AD
enabled = true
allow_sign_up = true
client_id = APPLICATION_ID
client_secret = CLIENT_SECRET
scopes = openid email profile
auth_url = https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/token
allowed_domains =
allowed_groups =
```
> Note: Ensure that the [root_url]({{< relref "../installation/configuration/#root-url" >}}) in Grafana is set in your Azure Application Reply URLs (App -> Settings -> Reply URLs)
### Configure allowed groups and domains
To limit access to authenticated users that are members of one or more groups, set `allowed_groups`
to a comma- or space-separated list of group Object Ids. Object Id for a specific group can be found on the Azure portal: go to Azure Active Directory -> Groups. For instance, if you want to
only give access to members of the group `example` which has Id `8bab1c86-8fba-33e5-2089-1d1c80ec267d`, set
```ini
allowed_groups = 8bab1c86-8fba-33e5-2089-1d1c80ec267d
```
You'll need to ensure that you've [enabled group attributes](https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-fed-group-claims#configure-the-azure-ad-application-registration-for-group-attributes) in your Azure AD Application Registration manifest file (Azure Portal -> Azure Active Directory -> Application Registrations -> Select Application -> Manifest)
```json
"groupMembershipClaims": "ApplicationGroup"
```
The `allowed_domains` option limits access to the users belonging to the specific domains. Domains should be separated by space or comma.
```ini
allowed_domains = mycompany.com mycompany.org
```
### Team Sync (Enterprise only)
> Only available in Grafana Enterprise v6.7+
With Team Sync you can map your Azure AD groups to teams in Grafana so that your users will automatically be added to
the correct teams.
Azure AD groups can be referenced by group Object Id, like `8bab1c86-8fba-33e5-2089-1d1c80ec267d`.
[Learn more about Team Sync]({{< relref "team-sync.md" >}})
+3 -46
View File
@@ -10,51 +10,8 @@ parent = "authentication"
weight = 3
+++
# Enhanced LDAP Integration
# Enhanced LDAP integration
> Enhanced LDAP Integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
The enhanced LDAP integration adds additional functionality on top of the existing {LDAP integration]({{< relref "ldap.md" >}}).
The enhanced LDAP integration adds additional functionality on top of the [existing LDAP integration]({{< relref "ldap.md" >}}).
## LDAP Group Synchronization for Teams
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
With the enhanced LDAP integration it's possible to setup synchronization between LDAP groups and teams. This enables LDAP users which are members
of certain LDAP groups to automatically be added/removed as members to certain teams in Grafana. Currently the synchronization will only happen every
time a user logs in, unless Grafana 6.3 (or later) is used with active background synchronization enabled.
Grafana keeps track of all synchronized users in teams and you can see which users have been synchronized from LDAP in the team members list, see `LDAP` label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership changes. This mechanism also enables you to manually add
a user as member of a team and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
[Learn more about Team Sync]({{< relref "team-sync.md">}})
<div class="clearfix"></div>
## Active LDAP Synchronization
> Only available in Grafana Enterprise v6.3+
In the open source version of Grafana, user data from LDAP will be synchronized only during the login process when authenticating using LDAP.
With this feature you can configure Grafana to actively sync users with LDAP server(s) in the background. Role and team membership will be updated, removed users will be disabled and logged out. Only users that have logged into Grafana at least once will be synchronized.
```bash
[auth.ldap]
...
# You can use the Cron syntax or several predefined schedulers -
# @yearly (or @annually) | Run once a year, midnight, Jan. 1st | 0 0 0 1 1 *
# @monthly | Run once a month, midnight, first of month | 0 0 0 1 * *
# @weekly | Run once a week, midnight between Sat/Sun | 0 0 0 * * 0
# @daily (or @midnight) | Run once a day, midnight | 0 0 0 * * *
# @hourly | Run once an hour, beginning of hour | 0 0 * * * *
sync_cron = "0 0 1 * * *" # This is default value (At 1 am every day)
# This cron expression format uses 6 space-separated fields (including seconds), for example
# sync_cron = "* */10 * * * *"
# This will run the LDAP Synchronization every 10th minute, which is also the minimal interval between the grafana sync times i.e. you cannot set it for every 9th minute
# You can also disable active LDAP synchronization
active_sync_enabled = true # enabled by default
```
> Enhanced LDAP integration is only available in Grafana Enterprise. For more information, refer to [Enhanced LDAP integration]({{< relref "../enterprise/enhanced_ldap.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}).
+3 -61
View File
@@ -50,28 +50,10 @@ Grafana will also attempt to do role mapping through OAuth as described below.
> Only available in Grafana v6.5+.
Check for the presence of an role using the [JMESPath](http://jmespath.org/examples.html) specified via the `role_attribute_path` configuration option. The JSON used for the path lookup is the HTTP response obtained from querying the UserInfo endpoint specified via the `api_url` configuration option. The result after evaluating the `role_attribute_path` JMESPath expression needs to be a valid Grafana role, i.e. `Viewer`, `Editor` or `Admin`.
Check for the presence of a role using the [JMESPath](http://jmespath.org/examples.html) specified via the `role_attribute_path` configuration option. The JSON used for the path lookup is the HTTP response obtained from querying the UserInfo endpoint specified via the `api_url` configuration option. The result after evaluating the `role_attribute_path` JMESPath expression needs to be a valid Grafana role, i.e. `Viewer`, `Editor` or `Admin`.
See [JMESPath examples](#jmespath-examples) for more information.
## Set up OAuth2 with Okta
First set up Grafana as an OpenId client "webapplication" in Okta. Then set the Base URIs to `https://<grafana domain>/` and set the Login redirect URIs to `https://<grafana domain>/login/generic_oauth`.
Finally set up the generic oauth module like this:
```bash
[auth.generic_oauth]
name = Okta
enabled = true
scopes = openid profile email
client_id = <okta application Client ID>
client_secret = <okta application Client Secret>
auth_url = https://<okta domain>/oauth2/v1/authorize
token_url = https://<okta domain>/oauth2/v1/token
api_url = https://<okta domain>/oauth2/v1/userinfo
```
## Set up OAuth2 with Bitbucket
```bash
@@ -105,7 +87,7 @@ allowed_organizations =
then:
3. Under the SSO tab on the Grafana App details page you'll find the Client ID and Client Secret.
Your OneLogin Domain will match the url you use to access OneLogin.
Your OneLogin Domain will match the URL you use to access OneLogin.
Configure Grafana as follows:
@@ -150,46 +132,6 @@ allowed_organizations =
api_url = https://<domain>/userinfo
```
## Set up OAuth2 with Azure Active Directory
1. Log in to portal.azure.com and click "Azure Active Directory" in the side menu, then click the "Properties" sub-menu item.
2. Copy the "Directory ID", this is needed for setting URLs later
3. Click "App Registrations" and add a new application registration:
- Name: Grafana
- Application type: Web app / API
- Sign-on URL: `https://<grafana domain>/login/generic_oauth`
4. Click the name of the new application to open the application details page.
5. Note down the "Application ID", this will be the OAuth client id.
6. Click "Certificates & secrets" and add a new entry under Client secrets
- Description: Grafana OAuth
- Expires: Never
7. Click Add then copy the key value, this will be the OAuth client secret.
8. Configure Grafana as follows:
```bash
[auth.generic_oauth]
name = Azure AD
enabled = true
allow_sign_up = true
client_id = <application id>
client_secret = <key value>
scopes = openid email name
auth_url = https://login.microsoftonline.com/<directory id>/oauth2/authorize
token_url = https://login.microsoftonline.com/<directory id>/oauth2/token
api_url =
team_ids =
allowed_organizations =
```
> Note: It's important to ensure that the [root_url]({{< relref "../installation/configuration/#root-url" >}}) in Grafana is set in your Azure Application Reply URLs (App -> Settings -> Reply URLs)
## Set up OAuth2 with Centrify
1. Create a new Custom OpenID Connect application configuration in the Centrify dashboard.
@@ -223,7 +165,7 @@ allowed_organizations =
## JMESPath examples
To ease configuring a proper JMESPath expression you can test/evaluate expression with a custom payload at http://jmespath.org/.
To ease configuration of a proper JMESPath expression, you can test/evaluate expressions with custom payloads at http://jmespath.org/.
### Role mapping
+1 -1
View File
@@ -16,7 +16,7 @@ To enable the GitHub OAuth2 you must register your application with GitHub. GitH
## Configure GitHub OAuth application
You need to create a GitHub OAuth application (you find this under the GitHub
You need to create a GitHub OAuth application (you will find this under the GitHub
settings page). When you create the application you will need to specify
a callback URL. Specify this as callback:
+3 -4
View File
@@ -12,7 +12,7 @@ weight = 5
# GitLab OAuth2 Authentication
To enable the GitLab OAuth2 you must register an application in GitLab. GitLab will generate a client ID and secret key for you to use.
To enable GitLab OAuth2 you must register the application in GitLab. GitLab will generate a client ID and secret key for you to use.
## Create GitLab OAuth keys
@@ -73,7 +73,7 @@ who can authenticate on GitLab will be able to login on your Grafana instance;
if you use the public `gitlab.com`, it means anyone in the world would be able
to login on your Grafana instance.
You can can however limit access to only members of a given group or list of
You can limit access to only members of a given group or list of
groups by setting the `allowed_groups` option.
### allowed_groups
@@ -125,5 +125,4 @@ the correct teams.
Your GitLab groups can be referenced in the same way as `allowed_groups`, like `example` or `foo/bar`.
[Learn more about Team Sync]({{< relref "enhanced_ldap.md" >}})
[Learn more about Team Sync]({{< relref "team-sync.md" >}})
+2 -2
View File
@@ -18,8 +18,8 @@ To enable the Google OAuth2 you must register your application with Google. Goog
First, you need to create a Google OAuth Client:
1. Go to https://console.developers.google.com/apis/credentials
2. Click the 'Create Credentials' button, then click 'OAuth Client ID' in the menu that drops down
1. Go to https://console.developers.google.com/apis/credentials.
2. Click **Create Credentials**, then click **OAuth Client ID** in the drop-down menu
3. Enter the following:
- Application Type: Web Application
- Name: Grafana
+22 -1
View File
@@ -16,6 +16,8 @@ weight = 2
The LDAP integration in Grafana allows your Grafana users to login with their LDAP credentials. You can also specify mappings between LDAP
group memberships and Grafana Organization user roles.
> [Enhanced LDAP authentication]({{< relref "../enterprise/enhanced_ldap.md" >}}) is available in [Grafana Enterprise]({{< relref "../enterprise" >}}).
## Supported LDAP Servers
Grafana uses a [third-party LDAP library](https://github.com/go-ldap/ldap) under the hood that supports basic LDAP v3 functionality.
@@ -90,6 +92,14 @@ member_of = "memberOf"
email = "email"
```
### Using environment variables
You can interpolate variables in the TOML config from environment variables. For instance, you could externalize your `bind_password` that way:
```bash
bind_password = "${LDAP_ADMIN_PASSWORD}"
```
## LDAP Debug View
> Only available in Grafana v6.4+
@@ -189,16 +199,27 @@ Setting | Required | Description | Default
Users with nested/recursive group membership must have an LDAP server that supports `LDAP_MATCHING_RULE_IN_CHAIN`
and configure `group_search_filter` in a way that it returns the groups the submitted username is a member of.
To configure `group_search_filter`:
* You can set `group_search_base_dns` to specify where the matching groups are defined.
* If you do not use `group_search_base_dns`, then the previously defined `search_base_dns` is used.
**Active Directory example:**
Active Directory groups store the Distinguished Names (DNs) of members, so your filter will need to know the DN for the user based only on the submitted username.
Multiple DN templates can be searched by combining filters with the LDAP OR-operator. Examples:
Multiple DN templates can be searched by combining filters with the LDAP OR-operator. Two examples:
```bash
group_search_filter = "(member:1.2.840.113556.1.4.1941:=%s)"
group_search_base_dns = ["DC=mycorp,DC=mytld"]
group_search_filter_user_attribute = "dn"
```
```bash
group_search_filter = "(member:1.2.840.113556.1.4.1941:=CN=%s,[user container/OU])"
group_search_filter = "(|(member:1.2.840.113556.1.4.1941:=CN=%s,[user container/OU])(member:1.2.840.113556.1.4.1941:=CN=%s,[another user container/OU]))"
group_search_filter_user_attribute = "cn"
```
For more information on AD searches see [Microsoft's Search Filter Syntax](https://docs.microsoft.com/en-us/windows/desktop/adsi/search-filter-syntax) documentation.
For troubleshooting, by changing `member_of` in `[servers.attributes]` to "dn" it will show you more accurate group memberships when [debug is enabled](#troubleshooting).
+89
View File
@@ -0,0 +1,89 @@
+++
title = "Okta OAuth2 authentication"
description = "Grafana Okta OAuth Guide "
keywords = ["grafana", "configuration", "documentation", "oauth"]
type = "docs"
[menu.docs]
name = "Okta"
identifier = "okta_oauth2"
parent = "authentication"
weight = 3
+++
# Okta OAuth2 authentication
> Only available in Grafana v7.0+
The Okta authentication allows your Grafana users to log in by using an external Okta authorization server.
## Create an Okta application
Before you can sign a user in, you need to create an Okta application from the Okta Developer Console.
1. Log in to the [Okta portal](https://login.okta.com/).
1. Go to Admin and then select **Developer Console**.
1. Select **Applications**, then **Add Application**.
1. Pick **Web** as the platform.
1. Enter a name for your application (or leave the default value).
1. Add the **Base URI** of your application, such as https://grafana.example.com.
1. Enter values for the **Login redirect URI**. Use **Base URI** and append it with `/login/okta`, for example: https://grafana.example.com/login/okta.
1. Click **Done** to finish creating the Okta application.
## Enable Okta Oauth in Grafana
1. Add the following to the [Grafana configuration file]({{< relref "../installation/configuration.md#config-file-locations" >}}):
```ini
[auth.okta]
name = Okta
enabled = true
allow_sign_up = true
client_id = some_id
client_secret = some_secret
scopes = openid profile email groups
auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
token_url = https://<tenant-id>.okta.com/oauth2/v1/token
api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo
allowed_domains =
allowed_groups =
role_attribute_path =
```
### Configure allowed groups and domains
To limit access to authenticated users that are members of one or more groups, set `allowed_groups`
to a comma- or space-separated list of Okta groups.
```ini
allowed_groups = Developers, Admins
```
The `allowed_domains` option limits access to the users belonging to the specific domains. Domains should be separated by space or comma.
```ini
allowed_domains = mycompany.com mycompany.org
```
### Map roles
Grafana can attempt to do role mapping through Okta OAuth. In order to achieve this, Grafana checks for the presence of a role using the [JMESPath](http://jmespath.org/examples.html) specified via the `role_attribute_path` configuration option.
Grafana uses JSON obtained from querying the `/userinfo` endpoint for the path lookup. The result after evaluating the `role_attribute_path` JMESPath expression needs to be a valid Grafana role, i.e. `Viewer`, `Editor` or `Admin`. Refer to [Organization roles]({{< relref "../permissions/organization_roles.md" >}}) for more information about roles and permissions in Grafana.
Read about how to [add custom claims](https://developer.okta.com/docs/guides/customize-tokens-returned-from-okta/add-custom-claim/) to the user info in Okta. Also, check Generic OAuth page for [JMESPath examples]({{< relref "generic-oauth.md/#jmespath-examples" >}}).
### Team Sync (Enterprise only)
Map your Okta groups to teams in Grafana so that your users will automatically be added to
the correct teams.
Okta groups can be referenced by group name, like `Admins`.
[Learn more about Team Sync]({{< relref "../enterprise/team-sync.md" >}})
+1 -1
View File
@@ -128,7 +128,7 @@ oauth_auto_login = true
### Hide sign-out menu
Set to the option detailed below to true to hide sign-out menu link. Useful if you use an auth proxy.
Set the option detailed below to true to hide sign-out menu link. Useful if you use an auth proxy.
```bash
[auth]
+3 -164
View File
@@ -10,169 +10,8 @@ parent = "authentication"
weight = 5
+++
# SAML Authentication
# SAML authentication
> SAML Authentication integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
The SAML authentication integration allows your Grafana users to log in by using an external SAML Identity Provider (IdP). To enable this, Grafana becomes a Service Provider (SP) in the authentication flow, interacting with the IdP to exchange user information.
> Only available in Grafana v6.3+
The SAML authentication integration allows your Grafana users to log in by
using an external SAML Identity Provider (IdP). To enable this, Grafana becomes
a Service Provider (SP) in the authentication flow, interacting with the IdP to
exchange user information.
## Supported SAML
The SAML single-sign-on (SSO) standard is varied and flexible. Our implementation contains the subset of features needed to provide a smooth authentication experience into Grafana.
> Should you encounter any problems with our implementation, please don't hesitate to contact us.
At the moment of writing, Grafana supports:
1. From the Service Provider (SP) to the Identity Provider (IdP)
- `HTTP-POST` binding
- `HTTP-Redirect` binding
2. From the Identity Provider (IdP) to the Service Provider (SP)
- `HTTP-POST` binding
3. In terms of security, we currently support signed and encrypted Assertions. However, signed or encrypted requests are not supported.
4. In terms of initiation, only SP-initiated requests are supported. There's no support for IdP-initiated request.
## Set up SAML Authentication
To use the SAML integration, you need to enable SAML in the [main config file]({{< relref "../installation/configuration.md" >}}).
```bash
[auth.saml]
# Defaults to false. If true, the feature is enabled
enabled = true
# Base64-encoded public X.509 certificate. Used to sign requests to the IdP
certificate =
# Path to the public X.509 certificate. Used to sign requests to the IdP
certificate_path =
# Base64-encoded private key. Used to decrypt assertions from the IdP
private_key =
# Path to the private key. Used to decrypt assertions from the IdP
private_key_path =
# Base64-encoded IdP SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata =
# Path to the SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata_path =
# URL to fetch SAML IdP metadata. Used to verify and obtain binding locations from the IdP
idp_metadata_url =
# Duration, since the IdP issued a response and the SP is allowed to process it. Defaults to 90 seconds
max_issue_delay =
# Duration, for how long the SP's metadata should be valid. Defaults to 48 hours
metadata_valid_duration =
# Friendly name or name of the attribute within the SAML assertion to use as the user's name
assertion_attribute_name = displayName
# Friendly name or name of the attribute within the SAML assertion to use as the user's login handle
assertion_attribute_login = mail
# Friendly name or name of the attribute within the SAML assertion to use as the user's email
assertion_attribute_email = mail
```
Important to note:
- like any other Grafana configuration, use of [environment variables for these options is supported]({{< relref "../installation/configuration.md#using-environment-variables" >}})
- only one form of configuration option is required. Using multiple forms, e.g. both `certificate` and `certificate_path` will result in an error
## Grafana Configuration
An example working configuration example looks like:
```bash
[auth.saml]
enabled = true
certificate_path = "/path/to/certificate.cert"
private_key_path = "/path/to/private_key.pem"
metadata_path = "/my/metadata.xml"
max_issue_delay = 90s
metadata_valid_duration = 48h
assertion_attribute_name = displayName
assertion_attribute_login = mail
assertion_attribute_email = mail
```
And here is a comprehensive list of the options:
| Setting | Required | Description | Default |
| ----------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------- | ------------- |
| `enabled` | No | Whenever SAML authentication is allowed | `false` |
| `certificate` or `certificate_path` | Yes | Base64-encoded string or Path for the SP X.509 certificate | |
| `private_key` or `private_key_path` | Yes | Base64-encoded string or Path for the SP private key | |
| `idp_metadata` or `idp_metadata_path` or `idp_metadata_url` | Yes | Base64-encoded string, Path or URL for the IdP SAML metadata XML | |
| `max_issue_delay` | No | Duration, since the IdP issued a response and the SP is allowed to process it | `90s` |
| `metadata_valid_duration` | No | Duration, for how long the SP's metadata should be valid | `48h` |
| `assertion_attribute_name` | No | Friendly name or name of the attribute within the SAML assertion to use as the user's name | `displayName` |
| `assertion_attribute_login` | No | Friendly name or name of the attribute within the SAML assertion to use as the user's login handle | `mail` |
| `assertion_attribute_email` | No | Friendly name or name of the attribute within the SAML assertion to use as the user's email | `mail` |
### Cert and Private Key
The SAML SSO standard uses asymmetric encryption to exchange information between the SP (Grafana) and the IdP. To perform such encryption, you need a public part and a private part. In this case, the X.509 certificate provides the public part, while the private key provides the private part.
Grafana supports two ways of specifying both the `certificate` and `private_key`. Without a suffix (e.g. `certificate=`), the configuration assumes you've supplied the base64-encoded file contents. However, if specified with the `_path` suffix (e.g. `certificate_path=`) Grafana will treat it as a file path and attempt to read the file from the file system.
### IdP Metadata
Expanding on the above, we'll also need the public part from our IdP for message verification. The SAML IdP metadata XML tells us where and how we should exchange the user information.
Currently, we support three ways of specifying the IdP metadata. Without a suffix `idp_metadata=` Grafana assumes base64-encoded XML file contents, with the `_path` suffix assumes a file path and attempts to read the file from the file system and with the `_url` suffix assumes an URL and attempts to load the metadata from the given location.
### Max Issue Delay
Prevention of SAML response replay attacks and internal clock skews between the SP (Grafana), and the IdP is covered. You can set a maximum amount of time between the IdP issuing a response and the SP (Grafana) processing it.
The configuration options is specified as a duration e.g. `max_issue_delay = 90s` or `max_issue_delay = 1h`
### Metadata valid duration
As an SP, our metadata is likely to expire at some point, e.g. due to a certificate rotation or change of location binding. Grafana allows you to specify for how long the metadata should be valid. Leveraging the standard's `validUntil` field, you can tell consumers until when your metadata is going to be valid. The duration is computed by adding the duration to the current time.
The configuration option is specified as a duration e.g. `metadata_valid_duration = 48h`
## Identity Provider (IdP) registration
For the SAML integration to work correctly, you need to make the IdP aware of the SP.
The integration provides two key endpoints as part of Grafana:
- The `/saml/metadata` endpoint. Which contains the SP's metadata. You can either download and upload it manually or make the IdP request it directly from the endpoint. Some providers name it Identifier or Entity ID.
- The `/saml/acs` endpoint. Which is intended to receive the ACS (Assertion Customer Service) callback. Some providers name it SSO URL or Reply URL.
## Assertion mapping
During the SAML SSO authentication flow, we receive the ACS (Assertion Customer Service) callback. The callback contains all the relevant information of the user under authentication embedded in the SAML response. Grafana parses the response to create (or update) the user within its internal database.
For Grafana to map the user information, it looks at the individual attributes within the assertion. You can think of these attributes as Key/Value pairs (although, they contain more information than that).
Grafana provides configuration options that let you modify which keys to look at for these values. The data we need to create the user in Grafana is Name, Login handle, and email.
An example is `assertion_attribute_name = "givenName"` where Grafana looks within the assertion for an attribute with a friendly name or name of `givenName`. Both, the friendly name (e.g. `givenName`) or the name (e.g. `urn:oid:2.5.4.42`) can be used interchangeably as the value for the configuration option.
## Troubleshooting
To troubleshoot and get more log info enable saml debug logging in the [main config file]({{< relref "../installation/configuration.md" >}}).
```bash
[log]
filters = saml.auth:debug
```
> SAML authentication integration is only available in Grafana Enterprise v6.3 or later. For more information, refer to [SAML authentication]({{< relref "../enterprise/saml.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}).
+5 -26
View File
@@ -10,38 +10,17 @@ parent = "authentication"
weight = 5
+++
# Team Sync
> Team Sync is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
# Team sync
With the Team Sync it's possible to setup synchronization between your auth providers teams and teams in Grafana. This enables LDAP or GitHub OAuth users which are members
of certain teams/groups to automatically be added/removed as members to certain teams in Grafana. Currently the synchronization will only happen every
time a user logs in, unless LDAP is used together with active background synchronization that was added in Grafana 6.3.
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
Grafana keeps track of all synchronized users in teams and you can see which users have been synchronized in the team members list, see `LDAP` label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership (for example) changes. This mechanism also enables you to manually add
a user as member of a team and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership (for example) changes. This mechanism also enables you to manually add a user as member of a team and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
<div class="clearfix"></div>
### Enable synchronization for a team
{{< docs-imagebox img="/img/docs/enterprise/team_add_external_group.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
1. Navigate to Configuration / Teams.
2. Select a team.
3. Select the External group sync tab and click on the `Add group` button.
4. Insert the value of the group you want to sync with. This becomes what Grafana denominates as a `GroupID`.
- Using LDAP as an example, this is the LDAP distinguished name (DN) of LDAP group you want to synchronize with the team.
- Using Auth Proxy as an example, this is the value we receive as part of the custom `Groups` header.
5. Click on `Add group` button to save.
### Supported Providers
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "auth-proxy.md#team-sync-enterprise-only">}})
> Team Sync is only available in Grafana Enterprise. For more information, refer to [Team sync]({{< relref "../enterprise/team-sync.md" >}}) in [Grafana Enterprise]({{< relref "../enterprise" >}}).
-12
View File
@@ -1,12 +0,0 @@
+++
title = "Contribute"
description = "Contribute"
type = "docs"
[menu.docs]
name = "Contribute"
identifier = "contribute"
weight = 20
+++
### Contribute info
+9
View File
@@ -0,0 +1,9 @@
+++
title = "Contribute"
description = "Contribute"
type = "docs"
[menu.docs]
name = "Contribute"
identifier = "contribute"
weight = 20
+++
@@ -0,0 +1,48 @@
+++
title = "Developer resources"
description = "Resources for Grafana developers"
keywords = ["grafana", "documentation", "developers", "resources"]
type = "docs"
[menu.docs]
name = "Grafana resources"
identifier = "Developer resources"
weight = 30
+++
# Developer resources
This page lists resources for developers who want to contribute to the Grafana software ecosystem or build plugins for Grafana.
##
General resources
These resources are useful for all developers.
* [Contributing to Grafana](https://github.com/grafana/grafana/blob/master/CONTRIBUTING.md): Start here to learn how you can contribute your skills to make Grafana even better.
* [Developer guide](https://github.com/grafana/grafana/blob/master/contribute/developer-guide.md): A guide to help you get started developing Grafana software, includes instructions for how to configure Grafana for development.
* [Contributing to documentation](https://github.com/grafana/grafana/blob/master/contribute/documentation.md): A guide to help you contribute to Grafana documentation, includes links to beginner-friendly issues.
* [Architecture guides](https://github.com/grafana/grafana/tree/master/contribute/architecture): These guides explain Grafanas background architecture.
* [Create a pull request](https://github.com/grafana/grafana/blob/master/contribute/create-pull-request.md): A guide for new contributors about how to create your first Grafana pull request.
* [REST APIs](https://grafana.com/docs/grafana/latest/http_api/) allow you to interact programmatically with the Grafana backend.
## Best practices and style
Our [style guides](https://github.com/grafana/grafana/tree/master/contribute/style-guides) outline Grafana style for frontend, backend, documentation, and more, including best practices. Please read through them before you start editing or coding!
* [Backend style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/backend.md) explains how we want to write Go code in the future.
* [Documentation style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/documentation-style-guide.md) applies to all documentation created for Grafana products.
* [End to end test framework](https://github.com/grafana/grafana/blob/master/contribute/style-guides/e2e.md) provides guidance for Grafana e2e tests.
* [Frontend style guide](https://github.com/grafana/grafana/blob/master/contribute/style-guides/frontend.md) provides rules and guidance on developing in React for Grafana.
* [Redux framework](https://github.com/grafana/grafana/blob/master/contribute/style-guides/redux.md) explains how Grafana handles Redux boilerplate code.
* [Styling Grafana](https://github.com/grafana/grafana/blob/master/contribute/style-guides/styling.md) expands on styling React components with Emotion.
* [Theming Grafana](https://github.com/grafana/grafana/blob/master/contribute/style-guides/themes.md) explains how to use themes and ThemeContext in Grafana code.
+44 -38
View File
@@ -6,69 +6,78 @@ type = "docs"
[menu.docs]
name = "Grafana Enterprise"
identifier = "enterprise"
weight = 30
weight = 100
+++
# Grafana Enterprise
Grafana Enterprise is a commercial edition of Grafana that includes additional features not found in the open source
version.
Grafana Enterprise is a commercial edition of Grafana that includes additional features not found in the open source version.
Building on everything you already know and love about Grafana, Grafana Enterprise adds enterprise data sources,
advanced authentication options, more permission controls, 24x7x365 support, and training from the core Grafana team.
Building on everything you already know and love about Grafana, Grafana Enterprise adds enterprise data sources, advanced authentication options, more permission controls, 24x7x365 support, and training from the core Grafana team.
Grafana Enterprise includes all of the features found in the open source edition and more.
___
[Learn more about Grafana Enterprise.](https://grafana.com/enterprise)
### Enhanced LDAP Integration
## Enhanced security features
With Grafana Enterprise you can set up synchronization between LDAP Groups and Teams. [Learn More]({{< relref "../auth/enhanced_ldap.md" >}}).
### SAML Authentication
Enables your Grafana Enterprise users to authenticate with SAML. [Learn More]({{< relref "../auth/saml.md" >}}).
### Team Sync
Team Sync allows you to setup synchronization between teams in Grafana and teams in your auth provider so that your users automatically end up in the right team. [Learn More]({{< relref "../auth/team-sync.md" >}}).
Supported auth providers:
* [LDAP]({{< relref "../auth/enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "../auth/github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
Grafana Enterprise includes integrations with more ways to authenticate your users and enhanced authorization capabilities.
### Data source permissions
Data source permissions allow you to restrict query access to only specific Teams and Users. [Learn More]({{< relref "../permissions/datasource_permissions.md" >}}).
[Data source permissions]({{< relref "datasource_permissions.md" >}}) allow you to restrict query access to only specific teams and users.
### Reporting
### Enhanced LDAP integration
Reporting makes it possible to take any dashboard, generate a PDF report, and set up a schedule to have it delivered. [Learn More]({{< relref "../features/reporting.md" >}}).
With Grafana Enterprise [enhanced LDAP]({{< relref "enhanced_ldap.md" >}}), you can set up synchronization between LDAP groups and Grafana teams.
### Enterprise Plugins
### SAML authentication
With a Grafana Enterprise license you will get access to enterprise plugins, including:
[SAML authentication]({{< relref "saml.md" >}}) enables your Grafana Enterprise users to authenticate with SAML.
* [Splunk](https://grafana.com/plugins/grafana-splunk-datasource)
### Team sync
[Team sync]({{< relref "team-sync.md" >}}) allows you to set up synchronization between teams in Grafana and teams in your auth provider so that your users automatically end up in the right team.
Supported auth providers:
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
* [GitHub OAuth]({{< relref "../auth/github.md#team-sync-enterprise-only" >}})
* [GitLab OAuth]({{< relref "../auth/gitlab.md#team-sync-enterprise-only" >}})
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
## Reporting
[Reporting]({{< relref "reporting.md" >}}) allows you to take any dashboard, generate a PDF report, and set up a schedule to have it emailed to whoever you choose.
## Export dashboard as PDF
[Export dashboard as PDF]({{< relref "export-pdf.md" >}}) allows you to export a dashboard as a PDF document.
## White labeling
[White labeling]({{< relref "white-labeling.md" >}}) allows you to replace the Grafana brand and logo with your own corporate brand and logo. You can also change footer links to point to your custom resources.
## Enterprise plugins
With a Grafana Enterprise license, you get access to premium plugins, including:
* [Amazon Timestream](https://grafana.com/plugins/grafana-timestream-datasource)
* [AppDynamics](https://grafana.com/plugins/dlopes7-appdynamics-datasource)
* [DataDog](https://grafana.com/plugins/grafana-datadog-datasource)
* [Dynatrace](https://grafana.com/plugins/grafana-dynatrace-datasource)
* [New Relic](https://grafana.com/plugins/grafana-newrelic-datasource)
* [Amazon Timestream](https://grafana.com/plugins/grafana-timestream-datasource)
* [Oracle Database](https://grafana.com/plugins/grafana-oracle-datasource)
* [ServiceNow](https://grafana.com/grafana/plugins/grafana-servicenow-datasource)
* [Splunk](https://grafana.com/plugins/grafana-splunk-datasource)
## Try Grafana Enterprise
You can learn more about Grafana Enterprise [here](https://grafana.com/enterprise). To purchase or obtain a trial license contact
the Grafana Labs [Sales Team](https://grafana.com/contact?about=support&topic=Grafana%20Enterprise).
To purchase or obtain a trial license contact the Grafana Labs [Sales Team](https://grafana.com/contact?about=support&topic=Grafana%20Enterprise).
## License file management
To download your Grafana Enterprise license log in to your [Grafana.com](https://grafana.com) account and go to your **Org
Profile**. In the side menu there is a section for Grafana Enterprise licenses. At the bottom of the license
details page there is **Download Token** link that will download the *license.jwt* file containing your license.
To download your Grafana Enterprise license log in to your [Grafana.com](https://grafana.com) account and go to your **Org Profile**. In the side menu there is a section for Grafana Enterprise licenses. At the bottom of the license details page there is **Download Token** link that will download the *license.jwt* file containing your license.
Place the *license.jwt* file in Grafana's data folder. This is usually located at `/var/lib/grafana/data` on Linux systems.
@@ -79,7 +88,4 @@ You can also configure a custom location for the license file via the ini settin
license_path = /company/secrets/license.jwt
```
This setting can also be set via ENV variable which is useful if you're running Grafana via docker and have a custom
volume where you have placed the license file. In this case set the ENV variable `GF_ENTERPRISE_LICENSE_PATH` to point
to the location of your license file.
This setting can also be set with an environment variable, which is useful if you're running Grafana with Docker and have a custom volume where you have placed the license file. In this case, set the environment variable `GF_ENTERPRISE_LICENSE_PATH` to point to the location of your license file.
@@ -0,0 +1,66 @@
+++
title = "Data source permissions"
description = "Grafana Datasource Permissions Guide "
keywords = ["grafana", "configuration", "documentation", "datasource", "permissions", "users", "teams", "enterprise"]
type = "docs"
[menu.docs]
name = "Datasource"
identifier = "datasource-permissions"
parent = "enterprise"
weight = 200
+++
# Data source permissions
Data source permissions allow you to restrict access for users to query a data source. For each data source there is a permission page that allows you to enable permissions and restrict query permissions to specific **Users** and **Teams**.
> Only available in Grafana Enterprise.
## Enable data source permissions
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_enable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_enable.gif" >}}
By default, data sources in an organization can be queried by any user in that organization. For example, a user with the `Viewer` role can issue any possible query to a data source, not just
queries that exist on dashboards they have access to.
When permissions are enabled for a data source in an organization, you restrict admin and query access for that data source to [admin users]({{< relref "../permissions/organization_roles/#admin-role" >}}) in that organization.
**Enable permissions for a data source:**
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to enable permissions for.
3. On the Permissions tab, click **Enable**.
<div class="clearfix"></div>
## Allow users and teams to query a data source
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_add_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_add.gif" >}}
After you have enabled permissions for a data source you can assign query permissions to users and teams which will allow access to query the data source.
**Assign query permission to users and teams:**
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to assign query permissions for.
3. On the Permissions tab, click **Add Permission**.
4. Select **Team** or **User**.
5. Select the entity you want to allow query access and then click **Save**.
<div class="clearfix"></div>
## Disable data source permissions
{{< docs-imagebox img="/img/docs/enterprise/datasource_permissions_disable_still.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" animated-gif="/img/docs/enterprise/datasource_permissions_disable.gif" >}}
If you have enabled permissions for a data source and want to return data source permissions to the default, then you can disable permissions with a click of a button.
Note that *all* existing permissions created for the data source will be deleted.
**Disable permissions for a data source:**
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to disable permissions for.
3. On the Permissions tab, click **Disable Permissions**.
<div class="clearfix"></div>
+63
View File
@@ -0,0 +1,63 @@
+++
title = "Enhanced LDAP Integration"
description = "Grafana Enhanced LDAP Integration Guide "
keywords = ["grafana", "configuration", "documentation", "ldap", "active directory", "enterprise"]
type = "docs"
[menu.docs]
name = "Enhanced LDAP"
identifier = "enhanced-ldap"
parent = "enterprise"
weight = 300
+++
# Enhanced LDAP integration
The enhanced LDAP integration adds additional functionality on top of the [LDAP integration]({{< relref "../auth/ldap.md" >}}) available in the open source edition of Grafana.
> Enhanced LDAP integration is only available in Grafana Enterprise.
## LDAP group synchronization for teams
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
With enhanced LDAP integration, you can set up synchronization between LDAP groups and teams. This enables LDAP users that are members
of certain LDAP groups to automatically be added or removed as members to certain teams in Grafana.
Grafana keeps track of all synchronized users in teams, and you can see which users have been synchronized from LDAP in the team members list, see `LDAP` label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership changes. This mechanism also allows you to manually add
a user as member of a team, and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
[Learn more about team sync.]({{< relref "team-sync.md">}})
<div class="clearfix"></div>
## Active LDAP synchronization
In the open source version of Grafana, user data from LDAP is synchronized only during the login process when authenticating using LDAP.
With active LDAP synchronization, available in Grafana Enterprise v6.3+, you can configure Grafana to actively sync users with LDAP servers in the background. Only users that have logged into Grafana at least once are synchronized.
Users with updated role and team membership will need to refresh the page to get access to the new features.
Removed users are automatically logged out and their account disabled. These accounts are displayed in the Server Admin > Users page with a `disabled` label. Disabled users keep their custom permissions on dashboards, folders, and data sources, so if you add them back in your LDAP database, they have access to the application with the same custom permissions as before.
```bash
[auth.ldap]
...
# You can use the Cron syntax or several predefined schedulers -
# @yearly (or @annually) | Run once a year, midnight, Jan. 1st | 0 0 0 1 1 *
# @monthly | Run once a month, midnight, first of month | 0 0 0 1 * *
# @weekly | Run once a week, midnight between Sat/Sun | 0 0 0 * * 0
# @daily (or @midnight) | Run once a day, midnight | 0 0 0 * * *
# @hourly | Run once an hour, beginning of hour | 0 0 * * * *
sync_cron = "0 0 1 * * *" # This is default value (At 1 am every day)
# This cron expression format uses 6 space-separated fields (including seconds), for example
# sync_cron = "* */10 * * * *"
# This will run the LDAP Synchronization every 10th minute, which is also the minimal interval between the Grafana sync times i.e. you cannot set it for every 9th minute
# You can also disable active LDAP synchronization
active_sync_enabled = true # enabled by default
```
Single bind configuration (as in the [Single bind example]({{< relref "../auth/ldap.md#single-bind-example">}})) is not supported with active LDAP synchronization because Grafana needs user information to perform LDAP searches.
+20
View File
@@ -0,0 +1,20 @@
+++
title = "Export dashboard as PDF"
description = ""
keywords = ["grafana", "export", "pdf", "share"]
type = "docs"
[menu.docs]
parent = "enterprise"
weight = 900
+++
# Export dashboard as PDF
You can generate PDFs from any of your dashboards and save it to file.
> Only available in Grafana Enterprise v6.7+.
1. In the upper right corner of the dashboard that you want to export as PDF, click the **Share dashboard** icon.
1. On the PDF tab, select the layout option for exported dashboard: **Portrait** or **Landscape**.
1. Click **Save as PDF** to render dashboard as a PDF document.
Grafana opens the PDF in a new window or browser tab.
@@ -0,0 +1,54 @@
+++
title = "License Expiration"
description = ""
keywords = ["grafana", "licensing"]
type = "docs"
[menu.docs]
parent = "enterprise"
weight = 8
+++
# License expiration
If your license has expired most of Grafana keeps working as normal. Some enterprise functionality stops or runs with reduced functionality and Grafana displays a banner informing the users that Grafana is running on an expired license. Your Grafana admin needs to upload a new license file to restore full functionality.
> Replace your license as soon as possible. Running Grafana Enterprise with an expired license is unsupported and can lead to unexpected consequences.
## Update your license
1. Locate your current `license.jwt` file. In a standard installation it is stored inside Grafana's data directory, which on a typical Linux installation is in `/var/lib/grafana/data`. This location might be overridden in the ini file [Configuration](https://grafana.com/docs/grafana/latest/installation/configuration/)
```
[enterprise]
license_path = /path/to/your/license.jwt
```
The configuration file's location may also be overridden by the `GF_ENTERPRISE_LICENSE_PATH` environment variable.
2. Log in to your [Grafana.com](https://grafana.com/login) user and make sure you're in the correct organization in the dropdown at the top of the page.
3. Under the **Grafana Enterprise** section in the menu bar to the left, choose licenses and download the currently valid license with which you want to run Grafana. If you cannot see a valid license on Grafana.com, please contact your account manager at Grafana Labs to renew your subscription.
4. Replace the current `license.jwt`-file with the one you've just downloaded.
5. Restart Grafana.
## Data source permissions
Your current data source permissions will keep working as expected, but you'll be unable to add new data source permissions until the license has been renewed.
## LDAP authentication
* LDAP synchronization is not affected by an expired license.
* Enhanced LDAP debugging is unavailable.
## SAML authentication
SAML authentication is not affected by an expired license.
## Reporting
* You're unable to configure new reports or generate previews.
* Scheduled reports are not generated or sent.
## Enterprise plugins
Enterprise plugins might stop working.
## White labeling
The white labeling feature is turned off, meaning that any white labeling options will not have any effect.
+64
View File
@@ -0,0 +1,64 @@
+++
title = "Reporting"
description = ""
keywords = ["grafana", "reporting"]
type = "docs"
aliases = ["/docs/grafana/latest/administration/reports"]
[menu.docs]
parent = "enterprise"
weight = 400
+++
# Reporting
Reporting allows you to automatically generate PDFs from any of your dashboards and have Grafana email them to interested parties on a schedule.
> Only available in Grafana Enterprise v6.4+.
{{< docs-imagebox img="/img/docs/enterprise/reports_list.png" max-width="500px" class="docs-image--no-shadow" >}}
Any changes you make to a dashboard used in a report are reflected the next time the report is sent. For example, if you change the time range in the dashboard, then the time range in the report changes as well.
## Requirements
* SMTP must be configured for reports to be sent. Refer to [SMTP]({{< relref "../installation/configuration.md#smtp" >}}) in [Configuration]({{< relref "../installation/configuration.md" >}}) for more information.
* The Image Renderer plugin must be installed or the remote rendering service must be set up. Refer to [Image rendering]({{< relref "../administration/image_rendering.md" >}}) for more information.
## Create or update a report
Currently only Organization Admins can create reports.
1. Click on the reports icon in the side menu. The Reports tab allows you to view, create, and update your reports.
1. Enter report information. All fields are required unless otherwise indicated.
* **Name -** Name of the report as you want it to appear in the Reports list.
* **Choose dashboard -** Select the dashboard to generate the report from.
* **Recipients -** Enter the emails of the people or teams that you want to receive the report.
* **Reply to -** (optional) The address that will appear in the **Reply to** field of the email.
* **Custom message -** (optional) Message body in the email with the report.
1. **Preview** the report to make sure it appears as you expect. Update if necessary
1. Select the layout option for generated report: **Portrait** or **Landscape**.
1. Enter scheduling information. Options vary depending on the frequency you select.
1. **Save** the report.
{{< docs-imagebox img="/img/docs/enterprise/reports_create_new.png" max-width="500px" class="docs-image--no-shadow" >}}
## Rendering configuration
When Grafana generates a report, it will render each panel separately and then put them together in a PDF file. You can configure the per-panel rendering request timeout and the maximum number of concurrent calls to the rendering service. These options are available in the [configuration]({{< relref "../installation/configuration.md">}}) file.
```ini
[reporting]
# Set timeout for each panel rendering request
rendering_timeout = 10s
# Set maximum number of concurrent calls to the rendering service
concurrent_render_limit = 4
```
## Troubleshoot reporting
To troubleshoot and get more log information, enable debug logging in the configuration file. Refer to [Configuration]({{< relref "../installation/configuration.md#filters" >}}) for more information.
```bash
[log]
filters = report:debug
```
+134
View File
@@ -0,0 +1,134 @@
+++
title = "SAML Authentication"
description = "Grafana SAML Authentication"
keywords = ["grafana", "saml", "documentation", "saml-auth"]
aliases = ["/docs/grafana/latest/auth/saml/"]
type = "docs"
[menu.docs]
name = "SAML"
parent = "authentication"
weight = 500
+++
# SAML authentication
SAML authentication integration allows your Grafana users to log in by using an external SAML 2.0 Identity Provider (IdP). To enable this, Grafana becomes a Service Provider (SP) in the authentication flow, interacting with the IdP to exchange user information.
The SAML single-sign-on (SSO) standard is varied and flexible. Our implementation contains the subset of features needed to provide a smooth authentication experience into Grafana.
> Only available in Grafana Enterprise v6.3+. If you encounter any problems with our implementation, please don't hesitate to contact us.
## Supported SAML
Grafana supports the following SAML 2.0 bindings:
* From the Service Provider (SP) to the Identity Provider (IdP):
- `HTTP-POST` binding
- `HTTP-Redirect` binding
* From the Identity Provider (IdP) to the Service Provider (SP):
- `HTTP-POST` binding
In terms of security:
* Grafana supports signed and encrypted assertions.
* Grafana does not support signed or encrypted requests.
In terms of initiation:
* Grafana supports SP-initiated requests.
* Grafana does not support IdP-initiated request.
## Set up SAML authentication
The table below describes all SAML configuration options. Continue reading below for details on specific options. Like any other Grafana configuration, you can apply these options as [environment variables]({{< relref "../installation/configuration.md#configure-with-environment-variables" >}}).
| Setting | Required | Description | Default |
| ----------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------- | ------------- |
| `enabled` | No | Whether SAML authentication is allowed | `false` |
| `certificate` or `certificate_path` | Yes | Base64-encoded string or Path for the SP X.509 certificate | |
| `private_key` or `private_key_path` | Yes | Base64-encoded string or Path for the SP private key | |
| `idp_metadata`, `idp_metadata_path`, or `idp_metadata_url` | Yes | Base64-encoded string, Path or URL for the IdP SAML metadata XML | |
| `max_issue_delay` | No | Duration, since the IdP issued a response and the SP is allowed to process it | `90s` |
| `metadata_valid_duration` | No | Duration, for how long the SP metadata is valid | `48h` |
| `assertion_attribute_name` | No | Friendly name or name of the attribute within the SAML assertion to use as the user name | `displayName` |
| `assertion_attribute_login` | No | Friendly name or name of the attribute within the SAML assertion to use as the user login handle | `mail` |
| `assertion_attribute_email` | No | Friendly name or name of the attribute within the SAML assertion to use as the user email | `mail` |
### Enable SAML authentication
To use the SAML integration, in the `auth.saml` section of in the Grafana custom configuration file, set `enabled` to `true`.
Refer to [Configuration]({{< relref "../installation/configuration.md" >}}) for more information about configuring Grafana.
### Certificate and private key
The SAML SSO standard uses asymmetric encryption to exchange information between the SP (Grafana) and the IdP. To perform such encryption, you need a public part and a private part. In this case, the X.509 certificate provides the public part, while the private key provides the private part.
Grafana supports two ways of specifying both the `certificate` and `private_key`.
* Without a suffix (`certificate` or `private_key`), the configuration assumes you've supplied the base64-encoded file contents.
* With the `_path` suffix (`certificate_path` or `private_key_path`), then Grafana treats the value entered as a file path and attempt to read the file from the file system.
You can only use one form of each configuration option. Using multiple forms, such as both `certificate` and `certificate_path`, results in an error.
### IdP metadata
You also need to define the public part of the IdP for message verification. The SAML IdP metadata XML defines where and how Grafana exchanges user information.
Grafana supports three ways of specifying the IdP metadata.
* Without a suffix `idp_metadata`, Grafana assumes base64-encoded XML file contents.
* With the `_path` suffix, Grafana assumes a file path and attempts to read the file from the file system.
* With the `_url` suffix, Grafana assumes a URL and attempts to load the metadata from the given location.
### Maximum issue delay
Prevents SAML response replay attacks and internal clock skews between the SP (Grafana) and the IdP. You can set a maximum amount of time between the IdP issuing a response and the SP (Grafana) processing it.
The configuration options is specified as a duration, such as `max_issue_delay = 90s` or `max_issue_delay = 1h`.
### Metadata valid duration
SP metadata is likely to expire at some point, perhaps due to a certificate rotation or change of location binding. Grafana allows you to specify for how long the metadata should be valid. Leveraging the `validUntil` field, you can tell consumers until when your metadata is going to be valid. The duration is computed by adding the duration to the current time.
The configuration option is specified as a duration, such as `metadata_valid_duration = 48h`.
### Identity provider (IdP) registration
For the SAML integration to work correctly, you need to make the IdP aware of the SP.
The integration provides two key endpoints as part of Grafana:
* The `/saml/metadata` endpoint, which contains the SP metadata. You can either download and upload it manually, or youmake the IdP request it directly from the endpoint. Some providers name it Identifier or Entity ID.
* The `/saml/acs` endpoint, which is intended to receive the ACS (Assertion Customer Service) callback. Some providers name it SSO URL or Reply URL.
### Assertion mapping
During the SAML SSO authentication flow, Grafana receives the ACS callback. The callback contains all the relevant information of the user under authentication embedded in the SAML response. Grafana parses the response to create (or update) the user within its internal database.
For Grafana to map the user information, it looks at the individual attributes within the assertion. You can think of these attributes as Key/Value pairs (although, they contain more information than that).
Grafana provides configuration options that let you modify which keys to look at for these values. The data we need to create the user in Grafana is Name, Login handle, and email.
An example is `assertion_attribute_name = "givenName"` where Grafana looks within the assertion for an attribute with a friendly name or name of `givenName`. Both, the friendly name (e.g. `givenName`) or the name (e.g. `urn:oid:2.5.4.42`) can be used interchangeably as the value for the configuration option.
## Example SAML configuration
```bash
[auth.saml]
enabled = true
certificate_path = "/path/to/certificate.cert"
private_key_path = "/path/to/private_key.pem"
metadata_path = "/my/metadata.xml"
max_issue_delay = 90s
metadata_valid_duration = 48h
assertion_attribute_name = displayName
assertion_attribute_login = mail
assertion_attribute_email = mail
```
## Troubleshoot SAML authentication
To troubleshoot and get more log information, enable SAML debug logging in the configuration file. Refer to [Configuration]({{< relref "../installation/configuration.md#filters" >}}) for more information.
```bash
[log]
filters = saml.auth:debug
```
+52
View File
@@ -0,0 +1,52 @@
+++
title = "Team sync"
description = "Grafana Team Sync"
keywords = ["grafana", "auth", "documentation"]
aliases = ["/docs/grafana/latest/auth/saml/"]
type = "docs"
[menu.docs]
name = "Team sync"
parent = "enterprise"
weight = 600
+++
# Team sync
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
Team sync lets you set up synchronization between your auth providers teams and teams in Grafana. This enables LDAP or GitHub OAuth users who are members
of certain teams or groups to automatically be added or removed as members of certain teams in Grafana.
> Only available in Grafana Enterprise.
Grafana keeps track of all synchronized users in teams, and you can see which users have been synchronized in the team members list, see `LDAP` label in screenshot.
This mechanism allows Grafana to remove an existing synchronized user from a team when its group membership changes. This mechanism also enables you to manually add a user as member of a team, and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
> Currently the synchronization only happens when a user logs in, unless LDAP is used with the active background synchronization that was added in Grafana 6.3.
<div class="clearfix"></div>
## Synchronize a Grafana team with an external group
If you have already grouped some users into a team, then you can synchronize that team with an external group.
{{< docs-imagebox img="/img/docs/enterprise/team_add_external_group.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
1. In Grafana, navigate to **Configuration > Teams**.
1. Select a team.
1. On the External group sync tab, and click **Add group**.
1. Insert the value of the group you want to sync with. This becomes the Grafana `GroupID`.
Examples:
- For LDAP, this is the LDAP distinguished name (DN) of LDAP group you want to synchronize with the team.
- For Auth Proxy, this is the value we receive as part of the custom `Groups` header.
1. Click `Add group` to save.
## Supported providers
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
* [Azure AD]({{< relref "../auth/azuread.md#team-sync-enterprise-only" >}})
* [GitHub OAuth]({{< relref "../auth/github.md#team-sync-enterprise-only" >}})
* [GitLab OAuth]({{< relref "../auth/gitlab.md#team-sync-enterprise-only" >}})
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
+77
View File
@@ -0,0 +1,77 @@
+++
title = "White-labeling"
description = "White-labeling"
keywords = ["grafana", "white-labeling", "enterprise"]
aliases = ["/docs/grafana/latest/enterprise/white-labeling/"]
type = "docs"
[menu.docs]
name = "White-labeling"
parent = "enterprise"
weight = 700
+++
# White labeling
White labeling allows you to replace the Grafana brand and logo with your own corporate brand and logo.
> Only available in Grafana Enterprise v6.6+.
Grafana Enterprise has white labeling options in the `grafana.ini` file. As with all configuration options, you can also be set set them with environment variables.
You can change the following elements:
- Application title
- Login background
- Login logo
- Side menu top logo
- Footer and help menu links
- Fav icon (shown in browser tab)
> You will have to host your logo and other images used by the white labeling feature separately. Make sure Grafana can access the URL where the assets are stored.
{{< docs-imagebox img="/img/docs/v66/whitelabeling_1.png" max-width="800px" caption="White labeling example" >}}
The configuration file in Grafana Enterprise contains the following options. Each option is defined in the file. For more information about configuring Grafana, refer to [Configuration]({{< relref "../installation/configuration.md">}}).
```ini
# Enterprise only
[white_labeling]
# Set to your company name to override application title
;app_title =
# Set to complete URL to override login logo
;login_logo =
# Set to complete css background expression to override login background
# example: login_background = url(http://www.bhmpics.com/wallpapers/starfield-1920x1080.jpg)
;login_background =
# Set to complete URL to override menu logo
;menu_logo =
# Set to complete URL to override fav icon (icon shown in browser tab)
;fav_icon =
# Set to complete URL to override apple/ios icon
;apple_touch_icon =
```
Below is an example for how to replace the default footer and help links with two custom links.
```ini
footer_links = support guides
footer_links_support_text = Support
footer_links_support_url = http://your.support.site
footer_links_guides_text = Guides
footer_links_guides_url = http://your.guides.site
```
Here is the same example using environment variables instead of the custom.ini or grafana.ini file.
```
GF_WHITE_LABELING_FOOTER_LINKS=support guides
GF_WHITE_LABELING_FOOTER_LINKS_SUPPORT_TEXT=Support
GF_WHITE_LABELING_FOOTER_LINKS_SUPPORT_URL=http://your.support.site
GF_WHITE_LABELING_FOOTER_LINKS_GUIDES_TEXT=Guides
GF_WHITE_LABELING_FOOTER_LINKS_GUIDES_URL=http://your.guides.site
```
+2 -2
View File
@@ -1,6 +1,6 @@
+++
title = "Beginner Guides"
description = "Beginner guides"
title = "Features"
description = "List of features"
type = "docs"
[menu.docs]
name = "Features"
@@ -0,0 +1,64 @@
+++
title = "Dashboard overview"
type = "docs"
[menu.docs]
identifier = "dashboards"
parent = "features"
weight = 1
+++
# Dashboard overview
A *dashboard* is a set of one or more panels organized and arranged into one or more rows. Grafana ships with a variety of Panels. Grafana makes it easy to construct the right queries, and customize the display properties so that you can create the perfect dashboard for your need. Each panel can interact with data from any configured Grafana Data Source (currently Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, MySQL, PostgreSQL, Microsoft SQL Server and AWS Cloudwatch).
## Dashboard UI
<img src="/img/docs/v50/dashboard_annotated.png" class="no-shadow" width="700px">
1. Zoom out time range
2. Time picker dropdown. Here you can access relative time range options, auto refresh options and set custom absolute time ranges.
3. Manual refresh button. Will cause all panels to refresh (fetch new data).
4. Dashboard panel. Click the panel title to edit panels.
5. Graph legend. You can change series colors, y-axis and series visibility directly from the legend.
## Dashboard header
Click the new Dashboard link on the right side of the Dashboard picker. You now have a blank Dashboard.
<img class="no-shadow" src="/img/docs/v50/top_nav_annotated.png" width="580px">
The image above shows you the top header for a Dashboard.
1. Side menubar toggle: This toggles the side menu, allowing you to focus on the data presented in the dashboard. The side menu provides access to features unrelated to a Dashboard such as Users, Organizations, and Data Sources.
2. Dashboard dropdown: This dropdown shows you which Dashboard you are currently viewing, and allows you to easily switch to a new Dashboard. From here you can also create a new Dashboard or folder, import existing Dashboards, and manage Dashboard playlists.
3. Add Panel: Adds a new panel to the current Dashboard
4. Star Dashboard: Star (or unstar) the current Dashboard. Starred Dashboards will show up on your own Home Dashboard by default, and are a convenient way to mark Dashboards that you're interested in.
5. Share Dashboard: Share the current dashboard by creating a link or create a static Snapshot of it. Make sure the Dashboard is saved before sharing.
6. Save dashboard: The current Dashboard will be saved with the current Dashboard name.
7. Settings: Manage Dashboard settings and features such as Templating and Annotations.
## Manage dashboards
The time period for the dashboard can be controlled by the [Time range controls]({{< relref "../../reference/timerange.md" >}}) in the upper right of the dashboard.
Dashboards can use [templating]({{< relref "../../reference/templating.md" >}}) to make them more dynamic and interactive.
Dashboards can use [annotations]({{< relref "../../reference/annotations.md" >}}) to display event data across panels. This can help correlate the time series data in the panel with other events.
Dashboards can be [shared]({{< relref "../../reference/share_dashboard.md" >}}) easily in a variety of ways.
Dashboards can be tagged, and the dashboard picker provides quick, searchable access to all dashboards in a particular organization.
## Rows
A *row* is a logical divider within a dashboard. It is used to group panels together.
Rows are always 12 “units” wide. These units are automatically scaled dependent on the horizontal resolution of your browser. You can control the relative width of panels within a row by setting their specific width.
We use a unit abstraction so that Grafana looks great on all screens sizes.
> Note: With MaxDataPoint functionality, Grafana can show you the perfect number of data points, regardless of resolution or time range.
Collapse a row by clicking on the row title. If you save a dashboard with a row collapsed, then it saves in that state and does not load those graphs until you expand the row.
Use the [repeating rows]({{< relref "../../reference/templating.md#repeating-rows" >}}) functionality to dynamically create or remove entire rows, which can be filled with panels, based on the template variables selected.
+1 -1
View File
@@ -38,4 +38,4 @@ The following data sources are officially supported:
## Data source plugins
Since Grafana 3.0 you can install data sources as plugins. Check out [Grafana.net](https://grafana.com/plugins) for more data sources.
Since Grafana 3.0 you can install data sources as plugins. Check out [Grafana.com/plugins](https://grafana.com/plugins) for more data sources.
@@ -0,0 +1,31 @@
+++
title = "Add a data source"
type = "docs"
[menu.docs]
name = "Add a data source"
identifier = "add_data_source"
parent = "features"
weight = 2
+++
# Add a data source
Before you create your first dashboard, you need to add your data source. Following are the list of instructions to create one.
> Only users with the Admin role can add data sources.
1. Move your cursor to the cog on the side menu which will show you the configuration menu. If the side menu is not visible click the Grafana icon in the upper left corner. Click on **Configuration** > **Data Sources** in the side menu and you'll be taken to the data sources page
where you can add and edit data sources. You can also click the cog.
{{< docs-imagebox img="/img/docs/v52/sidemenu-datasource.png" max-width="250px" class="docs-image--no-shadow">}}
1. Click **Add data source** and you will come to the settings page of your new data source.
{{< docs-imagebox img="/img/docs/v52/add-datasource.png" max-width="700px" class="docs-image--no-shadow">}}
1. In the **Name** box, enter a name for this data source.
{{< docs-imagebox img="/img/docs/v52/datasource-settings.png" max-width="700px" class="docs-image--no-shadow">}}
1. In the **Type**, select the type of data source. See [Supported data sources]({{< relref "../../features/datasources/#supported-data-sources/" >}}) for more information and how to configure your data source settings.
1. Click **Save & Test**.
@@ -117,7 +117,7 @@ Azure Monitor Examples:
### Templating with Variables for the Azure Monitor Service
Instead of hard-coding things like server, application and sensor name in you metric queries you can use variables in their place. Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns makes it easy to change the data being displayed in your dashboard.
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place. Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data being displayed in your dashboard.
Note that the Azure Monitor service does not support multiple values yet. If you want to visualize multiple time series (for example, metrics for server1 and server2) then you have to add multiple queries to able to view them on the same graph or in the same table.
@@ -274,6 +274,45 @@ There are also some Grafana variables that can be used in Azure Log Analytics qu
- `$__interval` - Grafana calculates the minimum time grain that can be used to group by time in queries. More details on how it works [here]({{< relref "../../reference/templating.md#interval-variables" >}}). It returns a time grain like `5m` or `1h` that can be used in the bin function. E.g. `summarize count() by bin(TimeGenerated, $__interval)`
### Templating with Variables for Azure Log Analytics
Any Log Analytics query that returns a list of values can be used in the `Query` field in the Variable edit view. There is also one Grafana function for Log Analytics that returns a list of workspaces.
Refer to the [Variables]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
| Name | Description |
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| _workspaces()_ | Returns a list of workspaces for the default subscription. |
| _workspaces(12345678-aaaa-bbbb-cccc-123456789aaa)_ | Returns a list of workspaces for the specified subscription (the parameter can be quoted or unquoted). |
Example variable queries:
<!-- prettier-ignore-start -->
| Query | Description |
| --------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| _subscriptions()_ | Returns a list of Azure subscriptions |
| _workspaces()_ | Returns a list of workspaces for default subscription |
| _workspaces("12345678-aaaa-bbbb-cccc-123456789aaa")_ | Returns a list of workspaces for a specified subscription |
| _workspaces("$subscription")_ | With template variable for the subscription parameter |
| _workspace("myWorkspace").Heartbeat \| distinct Computer_ | Returns a list of Virtual Machines |
| _workspace("$workspace").Heartbeat \| distinct Computer_ | Returns a list of Virtual Machines with template variable |
| _workspace("$workspace").Perf \| distinct ObjectName_ | Returns a list of objects from the Perf table |
| _workspace("$workspace").Perf \| where ObjectName == "$object" \| distinct CounterName_ | Returns a list of metric names from the Perf table |
<!-- prettier-ignore-end -->
Example of a time series query using variables:
```
Perf
| where ObjectName == "$object" and CounterName == "$metric"
| where TimeGenerated >= $__timeFrom() and TimeGenerated <= $__timeTo()
| where $__contains(Computer, $computer)
| summarize avg(CounterValue) by bin(TimeGenerated, $__interval), Computer
| order by TimeGenerated asc
```
### Azure Log Analytics Alerting
Not implemented yet.
@@ -293,3 +332,34 @@ There are some important caveats to remember:
- Currently, four default dashboard variables are supported: `$__timeFilter()`, `$__from`, `$__to`, and `$__interval`. If you're searching in timestamped data, replace the beginning of your where clause to `where $__timeFilter()`. Dashboard changes by time region are handled as you'd expect, as long as you leave the name of the `timestamp` column alone. Likewise, `$__interval` will automatically change based on the dashboard's time region _and_ the width of the chart being displayed. Use it in bins, so `bin(timestamp,$__interval)` changes into something like `bin(timestamp,1s)`. Use `$__from` and `$__to` if you just want the formatted dates to be inserted.
- Templated dashboard variables are not yet supported! They will come in a future version.
## Configure the data source with provisioning
It's now possible to configure data sources using config files with Grafana's provisioning system. You can read more about how it works and all the settings you can set for data sources on the [provisioning docs page]({{< relref "../../administration/provisioning/#datasources" >}})
Here are some provisioning examples for this data source.
```yaml
# config file version
apiVersion: 1
datasources:
- name: Azure Monitor
type: grafana-azure-monitor-datasource
access: proxy
jsonData:
appInsightsAppId: <app-insights-app-id>
clientId: <client-id>
cloudName: azuremonitor
subscriptionId: <subscription-id>
tenantId: <tenant-id>
logAnalyticsClientId: <log-analytics-client-id>
logAnalyticsDefaultWorkspace: <log-analytics-default-workspace>
logAnalyticsSubscriptionId: <log-analytics-subscription-id>
logAnalyticsTenantId: <log-analytics-tenant-id>
secureJsonData:
clientSecret: <client-secret>
appInsightsApiKey: <app-insights-api-key>
logAnalyticsClientSecret: <log-analytics-client-secret>
version: 1
```

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