Compare commits

...

785 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
5663 changed files with 108074 additions and 1276609 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"]
]
+663 -1579
View File
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -14,8 +14,10 @@
# Documentation owner: Diana Payton
/docs/ @oddlittlebird
/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
go.sum @grafana/backend-platform
+11 -3
View File
@@ -11,8 +11,10 @@ awsconfig
/public/views/error.html
/emails/dist
/reports
/e2e/tmp
.yarnrc
.yarn/
vendor/
# Enterprise emails
/emails/templates/enterprise_*
@@ -83,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
@@ -103,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'),
};
+2083 -1619
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 .eslintrc .editorconfig .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
+6 -14
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 .eslintrc .editorconfig .browserslistrc ./
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:19.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
+4
View File
@@ -23,6 +23,10 @@
"extractorMessageReporting": {
"default": {
"logLevel": "warning"
},
"ae-internal-missing-underscore": {
"logLevel": "none",
"addToApiReportFile": false
}
},
"tsdocMessageReporting": {
-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)
+83 -43
View File
@@ -230,9 +230,9 @@ 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 not set/unrestricted.
# 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 =
min_refresh_interval = 5s
#################################### Users ###############################
[users]
@@ -298,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
@@ -383,6 +386,21 @@ 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
@@ -405,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
@@ -706,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
@@ -716,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 =
+83 -43
View File
@@ -229,9 +229,9 @@
# 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 not set/unrestricted.
# 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 =
;min_refresh_interval = 5s
#################################### Users ###############################
[users]
@@ -297,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
@@ -373,6 +376,21 @@
;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
@@ -395,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
@@ -696,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.
@@ -705,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 =
+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,6 +4,8 @@ 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.
@@ -139,6 +141,10 @@ 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.
+63 -29
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,17 +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.
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
+5 -2
View File
@@ -10,7 +10,7 @@ Storybook is:
## 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`.
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
@@ -101,7 +101,10 @@ import { MyComponent } from "./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. Something that is required when the MDX file has no relation to a component is a `Meta` tag that says where in the hierarchy the component will live. It can look like this:
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"/>
+1 -1
View File
@@ -23,7 +23,7 @@ Try to *chunk* your content. This means you should organize the document so that
### Chunking example
If I was writing a topic called *Doggie handbook*, I might organize it like this.
If I was writing content for a site called *Doggie handbook*, I might organize it like this.
**Concept**
* What a dog is
+1 -1
View File
@@ -26,7 +26,7 @@ In the case of a long task, then you probably won't need any headings except for
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 quite the program.
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.
+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,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,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"
+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() {
+5 -8
View File
@@ -1,12 +1,9 @@
.PHONY: docs docs-no-pull docs-test
.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 && make docs-menu && hugo server -p 3002 -D --ignoreCache --baseUrl http://localhost:3002 --bind 0.0.0.0'
docs-no-pull:
docker run -v $(PWD)/sources:/hugo/content/docs/grafana/latest -p 3002:3002 --rm -it grafana/docs-base:latest /bin/bash -c 'make docs-menu && 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 -13
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,24 +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>
<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>
@@ -63,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" >
+1 -1
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
@@ -10,11 +10,11 @@ weight = 8
# Image rendering
Grafana supports automatic rendering of panels and dashboards as PNG images. This allows Grafana to automatically generate images of your panels to include in alert [Notifications]({{ < relref "../alerting/notifications.md" >}}).
Grafana supports automatic rendering of panels 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 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 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.
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.
You can also render a PNG by clicking the dropdown arrow next to a panel title, then clicking **Share > Direct link rendered image**.
@@ -22,7 +22,7 @@ You can also render a PNG by clicking the dropdown arrow next to a panel title,
Minimum free memory recommendation is 16GB on the system doing the rendering.
Rendering images can require a lot of memory, mainly because Grafama 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.
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.
## Alerting and render limits
@@ -36,9 +36,9 @@ To install the plugin, refer to the [Grafana Image Renderer Installation instruc
## Run in custom Grafana Docker image
We recommend setting up another Docker container for rendering and using remote rendering. Refer to [Remote rendering service](#remote-rendering-service) for instructions.
We recommend setting up another Docker container for rendering and using remote rendering. Refer to [Remote rendering service]({{< relref "#remote-rendering-service" >}}) for instructions.
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, refer to [Build with Grafana Image Renderer plugin pre-installed]({{< relref "../installation/docker/#build-with-grafana-image-renderer-plugin-pre-installed" >}}).
## Remote rendering service
@@ -108,7 +108,7 @@ The following example describes how to build and run the remote HTTP rendering s
## PhantomJS
> PhantomJS is deprecated since Grafana v6.4 and will be removed in a future release. Please migrate to the Grafana Image Renderer plugin or remote rendering service.
> Starting from Grafana v7.0.0, all PhantomJS support has been removed. Please use the Grafana Image Renderer plugin or remote rendering service.
## Troubleshoot image rendering
+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.
+13 -6
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,7 +255,7 @@ 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
@@ -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.
@@ -398,6 +403,8 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| url |
| basicAuthUser |
| basicAuthPassword |
#### Alert notification `teams`
@@ -415,6 +422,7 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| singleEmail |
| addresses |
#### Alert notification `hipchat`
@@ -463,4 +471,3 @@ The following sections detail the supported settings for each alert notification
| Name |
| ---- |
| url |
+1 -1
View File
@@ -11,7 +11,7 @@ weight = 2
# Metrics from the alert engine
The alert engine publishes some internal metrics about itself. You can read more about how Grafana publishes [internal metrics]({{ < "../administration/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
---------- | ----------- | ----------
+15 -11
View File
@@ -71,14 +71,19 @@ 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 Slack webhook URL. You can follow
[their guide](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
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
@@ -97,7 +102,7 @@ If you are using the token for a slack bot, then you have to invite the bot to t
### 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
---------- | -----------
@@ -105,7 +110,7 @@ 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 `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 they will be transposed to the root of the event sent to Pagerduty. This means they will be available within the Pagerduty UI and Filtering tools.
**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
@@ -198,15 +203,14 @@ 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
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
@@ -216,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+.
@@ -226,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.
+9 -1
View File
@@ -12,6 +12,8 @@ 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
@@ -120,6 +122,12 @@ only give access to members of the group `example` which has Id `8bab1c86-8fba-3
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
@@ -131,7 +139,7 @@ allowed_domains = mycompany.com mycompany.org
> 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.
the correct teams.
Azure AD groups can be referenced by group Object Id, like `8bab1c86-8fba-33e5-2089-1d1c80ec267d`.
-58
View File
@@ -54,24 +54,6 @@ Check for the presence of a role using the [JMESPath](http://jmespath.org/exampl
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
@@ -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.
+8
View File
@@ -92,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+
+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" >}})
+44 -44
View File
@@ -6,75 +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
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" >}})
* [GitLab OAuth]({{< relref "../auth/gitlab.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
### White labeling
White labeling makes it possible to customize the logos and footer links of Grafana. [Learn More]({{< relref "white-labeling.md" >}}).
## Enhanced security features
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.
@@ -85,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.
@@ -7,31 +7,29 @@ type = "docs"
name = "Datasource"
identifier = "datasource-permissions"
parent = "enterprise"
weight = 4
weight = 200
+++
# Data source permissions
> Only available in Grafana Enterprise.
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**.
## Restricting Access - Enable Permissions
> 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, permissions are disabled for data sources and a data source in an organization can be queried by any user in
that organization. For example a user with `Viewer` role can still issue any possible query to a data source, not just
those queries that exist on dashboards he/she has access to.
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 will restrict admin and query access for that
data source to [admin users]({{< relref "../permissions/organization_roles/#admin-role" >}}) in that organization.
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.
**To enable permissions for a data source:**
**Enable permissions for a data source:**
1. Navigate to Configuration / Data Sources.
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to enable permissions for.
3. Select the Permissions tab and click on the `Enable` button.
3. On the Permissions tab, click **Enable**.
<div class="clearfix"></div>
@@ -39,31 +37,30 @@ data source to [admin users]({{< relref "../permissions/organization_roles/#admi
{{< 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](#restricting-access-enable-permissions) for a data source you can assign query
permissions to users and teams which will allow access to query the data source.
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.
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to assign query permissions for.
3. Select the Permissions tab.
4. click on the `Add Permission` button.
5. Select Team/User and find the team/user you want to allow query access and click on the `Save` button.
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>
## Restore Default Access - Disable Permissions
## 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, i.e.
data source can be queried by any user in that organization, you can disable permissions with a click of a button.
Note that all existing permissions created for data source will be deleted.
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.
1. Navigate to **Configuration > Data Sources**.
2. Select the data source you want to disable permissions for.
3. Select the Permissions tab and click on the `Disable Permissions` button.
3. On the Permissions tab, click **Disable Permissions**.
<div class="clearfix"></div>
+16 -19
View File
@@ -7,40 +7,39 @@ type = "docs"
name = "Enhanced LDAP"
identifier = "enhanced-ldap"
parent = "enterprise"
weight = 3
weight = 300
+++
# Enhanced LDAP integration
> Only available in Grafana Enterprise.
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.
The enhanced LDAP integration adds additional functionality on top of the existing [LDAP integration]({{< relref "../auth/ldap.md" >}}).
> Enhanced LDAP integration is only available in Grafana Enterprise.
## LDAP Group Synchronization for Teams
## 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 v6.3 (or later) is used with active background synchronization enabled.
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 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.
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">}})
[Learn more about team sync.]({{< relref "team-sync.md">}})
<div class="clearfix"></div>
## Active LDAP Synchronization
## Active LDAP synchronization
> Only available in Grafana Enterprise v6.3+
In the open source version of Grafana, user data from LDAP is synchronized only during the login process when authenticating using LDAP.
In the open source version of Grafana, user data from LDAP will be 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.
With this feature you can configure Grafana to actively sync users with LDAP servers in the background. Only users that have logged into Grafana at least once will be synchronized.
Users with updated role and team membership will need to refresh the page to get access to the new features.
Removed users will be automatically logged out and their account disabled. They will be displayed in the Server Admin / Users page with a `disabled` label. Disabled users will keep their custom permissions on dashboards, folders and datasources so if you add them back in your LDAP database, they will have access to the application with the same custom permissions as before.
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]
@@ -61,6 +60,4 @@ sync_cron = "0 0 1 * * *" # This is default value (At 1 am every day)
active_sync_enabled = true # enabled by default
```
### Not compatible with Single Bind
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.
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.
@@ -14,7 +14,7 @@ If your license has expired most of Grafana keeps working as normal. Some enterp
> Replace your license as soon as possible. Running Grafana Enterprise with an expired license is unsupported and can lead to unexpected consequences.
## Replacing your license
## 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/)
```
@@ -31,19 +31,19 @@ The configuration file's location may also be overridden by the `GF_ENTERPRISE_L
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.
## Reporting
## LDAP authentication
- You're unable to configure new reports or generate previews.
- Scheduled reports are not generated or sent.
* LDAP synchronization is not affected by an expired license.
* Enhanced LDAP debugging is unavailable.
## SAML authentication
SAML is not affected by an expired license.
SAML authentication is not affected by an expired license.
## LDAP authentication
## Reporting
- LDAP synchronization is not affected by an expired license.
- Enhanced LDAP debugging is unavailable.
* You're unable to configure new reports or generate previews.
* Scheduled reports are not generated or sent.
## Enterprise plugins
+37 -25
View File
@@ -6,47 +6,59 @@ type = "docs"
aliases = ["/docs/grafana/latest/administration/reports"]
[menu.docs]
parent = "enterprise"
weight = 8
weight = 400
+++
# Reporting
> Only available in Grafana Enterprise v6.4+.
Reporting allows you to automatically generate PDFs from any of your dashboards and have Grafana email them to interested parties on a schedule.
Reporting allows you to generate PDFs from any of your Dashboards and have them sent out 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" >}}
## Dashboard as a Report
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.
With Reports there are a few things to keep in mind, most importantly, any changes you make to the Dashboard used in a report will be reflected in the report. If you change the time range in the Dashboard the time range will be the same in the report as well.
## Requirements
## Setup
* 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.
> SMTP must be configured for reports to be sent
## Create or update a report
Currently only Organization Admins can create reports.
### Rendering
> Reporting requires the [rendering plugin]({{< relref "../administration/image_rendering.md#grafana-image-renderer-plugin" >}}).
Reporting with the built-in image rendering is not supported. We recommend installing the image renderer plugin.
## Usage
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" >}}
Currently only Organisation Admins can create reports. To get to report click on the reports icon in the side menu. This will allow you to list, create and update your reports.
## Rendering configuration
| Setting | Description |
| --------------|------------------------------------------------------------------ |
| Name | name of the Report |
| Dashboard | what dashboard to generate the report from |
| Recipients | emails of the people who will receive this report |
| ReplyTo | your email address, so that the recipient can respond |
| Message | message body in the email with the report |
| Schedule | how often do you want the report generated and sent |
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.
## Debugging errors
```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
```
If you have problems with the reporting feature you can enable debug logging by switching the logger to debug (`filters = report:debug`). Learn more about making configuration changes [here]({{< relref "../installation/configuration.md#filters" >}}).
## 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
```
+72 -111
View File
@@ -7,90 +7,109 @@ type = "docs"
[menu.docs]
name = "SAML"
parent = "authentication"
weight = 5
weight = 500
+++
# SAML authentication
> Only available in Grafana Enterprise 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
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.
> Should you encounter any problems with our implementation, please don't hesitate to contact us.
> Only available in Grafana Enterprise v6.3+. If you encounter any problems with our implementation, please don't hesitate to contact us.
Grafana supports:
## Supported SAML
* From the Service Provider (SP) to the Identity Provider (IdP)
Grafana supports the following SAML 2.0 bindings:
- `HTTP-POST` binding
- `HTTP-Redirect` binding
* 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)
* From the Identity Provider (IdP) to the Service Provider (SP):
- `HTTP-POST` binding
- `HTTP-POST` binding
In terms of security:
* Grafana supports signed and encrypted assertions.
* Grafana does not support signed or encrypted requests.
* In terms of security, we currently support signed and encrypted Assertions. However, signed or encrypted requests are not supported.
* In terms of initiation, only SP-initiated requests are supported. There's no support for IdP-initiated request.
In terms of initiation:
* Grafana supports SP-initiated requests.
* Grafana does not support 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" >}}).
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" >}}).
```bash
[auth.saml]
# Defaults to false. If true, the feature is enabled
enabled = true
| 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` |
# Base64-encoded public X.509 certificate. Used to sign requests to the IdP
certificate =
### Enable SAML authentication
# Path to the public X.509 certificate. Used to sign requests to the IdP
certificate_path =
To use the SAML integration, in the `auth.saml` section of in the Grafana custom configuration file, set `enabled` to `true`.
# Base64-encoded private key. Used to decrypt assertions from the IdP
private_key =
Refer to [Configuration]({{< relref "../installation/configuration.md" >}}) for more information about configuring Grafana.
# Path to the private key. Used to decrypt assertions from the IdP
private_key_path =
### Certificate and private key
# Base64-encoded IdP SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata =
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.
# Path to the SAML metadata XML. Used to verify and obtain binding locations from the IdP
idp_metadata_path =
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.
# URL to fetch SAML IdP metadata. Used to verify and obtain binding locations from the IdP
idp_metadata_url =
You can only use one form of each configuration option. Using multiple forms, such as both `certificate` and `certificate_path`, results in an error.
# Duration, since the IdP issued a response and the SP is allowed to process it. Defaults to 90 seconds
max_issue_delay =
### IdP metadata
# Duration, for how long the SP's metadata should be valid. Defaults to 48 hours
metadata_valid_duration =
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.
# Friendly name or name of the attribute within the SAML assertion to use as the user's name
assertion_attribute_name = displayName
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.
# Friendly name or name of the attribute within the SAML assertion to use as the user's login handle
assertion_attribute_login = mail
### Maximum issue delay
# Friendly name or name of the attribute within the SAML assertion to use as the user's email
assertion_attribute_email = mail
```
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.
Important to note:
The configuration options is specified as a duration, such as `max_issue_delay = 90s` or `max_issue_delay = 1h`.
- 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
### Metadata valid duration
## Grafana configuration
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.
Example working configuration:
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]
@@ -105,67 +124,9 @@ assertion_attribute_login = mail
assertion_attribute_email = mail
```
Available options:
## Troubleshoot SAML authentication
| 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" >}}).
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]
+24 -19
View File
@@ -7,41 +7,46 @@ type = "docs"
[menu.docs]
name = "Team sync"
parent = "enterprise"
weight = 5
weight = 600
+++
# Team sync
> Only available in Grafana Enterprise.
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
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.
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.
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.
> 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>
### Enable synchronization for a team
## 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. 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`.
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:
- 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.
- 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.
5. Click on `Add group` button to save.
1. Click `Add group` to save.
### Supported Providers
## Supported providers
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [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" >}})
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
+29 -22
View File
@@ -7,27 +7,31 @@ type = "docs"
[menu.docs]
name = "White-labeling"
parent = "enterprise"
weight = 5
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+.
{{< docs-imagebox img="/img/docs/v66/whitelabeling_1.png" max-width="800px" caption="White labeling example" >}}
Grafana Enterprise has white labeling options in the `grafana.ini` file (can also be set via ENV variables).
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
- Application title
- Login background
- Login logo
- Side menu top logo
- Footer & Help menu links
- 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.
> 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
@@ -50,21 +54,24 @@ You can change the following elements:
# Set to complete URL to override apple/ios icon
;apple_touch_icon =
# Below is an example for how to replace the default footer & help links with 2 custom links
;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
```
Below is an example for how to replace the default footer and help links with two custom links.
ENV Variables:
```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
```
- 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
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
```
@@ -18,7 +18,7 @@ A *dashboard* is a set of one or more panels organized and arranged into one or
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. You edit panels by clicking the panel title.
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
@@ -30,7 +30,7 @@ Click the new Dashboard link on the right side of the Dashboard picker. You now
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.
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.
+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
```
@@ -43,7 +43,7 @@ server is running on AWS you can use IAM Roles and authentication will be handle
See the AWS documentation on [IAM Roles](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html)
> NOTE: AWS Role Switching as described [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html) it not supported at the moment.
> NOTE: AWS Role Switching as described [here](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html) is not supported at the moment.
## IAM Policies
@@ -62,6 +62,8 @@ Here is a minimal policy example:
"Effect": "Allow",
"Action": [
"cloudwatch:DescribeAlarmsForMetric",
"cloudwatch:DescribeAlarmHistory",
"cloudwatch:DescribeAlarms",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:GetMetricData"
@@ -180,7 +182,7 @@ To import the pre-configured dashboards, go to the configuration page of your Cl
## Templated queries
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 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 make it easy to change the data being displayed in your dashboard.
See the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
@@ -11,7 +11,7 @@ weight = 1
# Data sources
Grafana can visualize, explore, and alert on data from many different databases and cloud services. Each database or service type is accessed from a *data source*.
Grafana can visualize, explore, and alert on data from many different databases and cloud services. Each database or service type is accessed from a *data source*. Before you can create visualizations in Grafana, you must [add a data source]({{< relref "add-a-data-source.md" >}}).
Each data source has a specific query editor that is customized for the features and capabilities that the particular data source exposes. The query language and capabilities of each data source are obviously very different. You can combine data from multiple data sources into a single dashboard, but each panel is connected to a specific data source that belongs to a particular organization.
@@ -116,8 +116,8 @@ Some metric aggregations are called Pipeline aggregations, for example, *Moving
## Templating
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
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
@@ -172,7 +172,7 @@ Example dashboard:
## Annotations
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. You add annotation
[Annotations]({{< relref "../../reference/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation
queries via the Dashboard menu / Annotations view. Grafana can query any Elasticsearch index
for annotation events.
@@ -47,7 +47,7 @@ All requests will be made from the browser directly to the data source and may b
### Navigate metric segments
Click the ``Select metric`` link to start navigating the metric space. One you start you can continue using the mouse
Click the ``Select metric`` link to start navigating the metric space. Once you start you can continue using the mouse
or keyboard arrow keys. You can select a wildcard and still continue.
{{< docs-imagebox img="/img/docs/v45/graphite_query1_still.png"
@@ -87,8 +87,8 @@ this consolidation is done using `avg` function. You can control how Graphite co
## Templating
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
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
@@ -132,7 +132,6 @@ TagValues
tag_values(server, server=~${__searchFilter:regex})
```
### Variable Usage
You can use a variable in a metric node path or as a parameter to a function.
@@ -163,12 +162,16 @@ Check out the [Advanced Formatting Options section in the Variables]({{< relref
## Annotations
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. You add annotation
[Annotations]({{< relref "../../reference/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation
queries via the Dashboard menu / Annotations view.
Graphite supports two ways to query annotations. A regular metric query, for this you use the `Graphite query` textbox. A Graphite events query, use the `Graphite event tags` textbox,
specify a tag or wildcard (leave empty should also work)
## Getting Grafana metrics into Graphite
Grafana exposes metrics for Graphite on the `/metrics` endpoint. For detailed instructions, refer to [Internal Grafana metrics]({{< relref "../../administration/metrics.md">}}).
## 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" >}})
@@ -140,8 +140,8 @@ To add a filter click the plus icon to the right of the `Measurements/Fields` bu
## Templating
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
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
+15 -6
View File
@@ -39,14 +39,16 @@ Just add it as a data source and you are ready to query your log data in [Explor
### Derived fields
The Derived Fields configuration allows you to:
* Add fields parsed from the log message.
* Add a link that uses the value of the field.
You can use this functionality to link to your tracing backend directly from your logs, or link to a user profile page if a userId is present in the log line. These links will be shown in the [log details](/features/explore/#labels-and-parsed-fields).
You can use this functionality to link to your tracing backend directly from your logs, or link to a user profile page if a userId is present in the log line. These links appear in the [log details](/features/explore/#labels-and-parsed-fields).
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields.png" class="docs-image--no-shadow" caption="Screenshot of the derived fields configuration" >}}
Each derived field consists of:
- **Name:** Shown in the log details as a label.
- **Regex:** A Regex pattern that runs on the log message and captures part of it to as the value of the new field. Can only contain capture a single group.
- **Regex:** A Regex pattern that runs on the log message and captures part of it as the value of the new field. Can only contain a single capture group.
- **URL**: A URL template used to construct a link next to the field value in log details. Use special `${__value.raw}` value in your template to interpolate the real field value into your URL template.
You can use a debug section to see what your fields extract and how the URL is interpolated. Click **Show example log message** to show the text area where you can enter a log message.
@@ -69,7 +71,7 @@ Once the result is returned, the log panel shows a list of log rows and a bar ch
<div class="medium-6 columns">
<video width="800" height="500" controls>
<source src="https://grafana.com/static/assets/videos/explore_loki.mp4" type="video/mp4">
<source src="/assets/videos/explore_loki.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
@@ -96,7 +98,7 @@ Examples:
The [same rules that apply for Prometheus Label Selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#instant-vector-selectors) apply for Loki Log Stream Selectors.
Another way to add a label selector, is in the table section, clicking on the **Filter** button beside a label will add the label to the query expression. This even works for multiple queries and will the label selector to each query.
Another way to add a label selector is in the table section. Click **Filter** beside a label to add the label to the query expression. This even works for multiple queries and will add the label selector to each query.
### Search Expression
@@ -125,7 +127,7 @@ The following filter types are currently supported:
## Live tailing
Loki supports Live tailing which displays logs in real-time. This feature is supported in [Explore]({{< relref "../explore/#loki-specific-features" >}}) and in dashboards with a Live toggle in the query editor.
Loki supports Live tailing which displays logs in real-time. This feature is supported in [Explore]({{< relref "../explore/#loki-specific-features" >}}).
Note that Live Tailing relies on two Websocket connections: one between the browser and the Grafana server, and another between the Grafana server and the Loki server. If you run any reverse proxies, please configure them accordingly.
@@ -187,8 +189,15 @@ datasources:
jsonData:
maxLines: 1000
derivedFields:
- datasourceName: Jaeger
# Field with internal link pointing to datasource in Grafana
- datasourceUid: my_jaeger_uid
matcherRegex: "traceID=(\\w+)"
name: TraceID
# url will be interpreted as query for the datasource
url: "$${__value.raw}"
# Field with external link
- matcherRegex: "traceID=(\\w+)"
name: TraceID
url: "http://localhost:16686/trace/$${__value.raw}"
```
+43 -26
View File
@@ -80,7 +80,7 @@ If possible, we recommend you to use the latest service pack available for optim
{{< docs-imagebox img="/img/docs/v51/mssql_query_editor.png" class="docs-image--no-shadow" >}}
You find the MSSQL query editor in the metrics tab in Graph, Singlestat or Table panel's edit mode. You enter edit mode by clicking the
You will find the MSSQL query editor in the metrics tab in Graph, Singlestat or Table panel's edit mode. You enter edit mode by clicking the
panel title, then edit. The editor allows you to define a SQL query to select data to be visualized.
1. Select *Format as* `Time series` (for use in Graph or Singlestat panel's among others) or `Table` (for use in Table panel among others).
@@ -97,24 +97,24 @@ To simplify syntax and to allow for dynamic parts, like date range filters, the
Macro example | Description
------------ | -------------
*$__time(dateColumn)* | Will be replaced by an expression to rename the column to *time*. For example, *dateColumn as time*
*$__timeEpoch(dateColumn)* | Will be replaced by an expression to convert a DATETIME column type to Unix timestamp and rename it to *time*. <br/>For example, *DATEDIFF(second, '1970-01-01', dateColumn) AS time*
*$__timeFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name. <br/>For example, *dateColumn BETWEEN '2017-04-21T05:01:17Z' AND '2017-04-21T05:06:17Z'*
*$__timeFrom()* | Will be replaced by the start of the currently active time selection. For example, *'2017-04-21T05:01:17Z'*
*$__timeTo()* | Will be replaced by the end of the currently active time selection. For example, *'2017-04-21T05:06:17Z'*
*$__timeGroup(dateColumn,'5m'[, fillvalue])* | Will be replaced by an expression usable in GROUP BY clause. Providing a *fillValue* of *NULL* or *floating value* will automatically fill empty series in timerange with that value. <br/>For example, *CAST(ROUND(DATEDIFF(second, '1970-01-01', time_column)/300.0, 0) as bigint)\*300*.
*$__timeGroup(dateColumn,'5m', 0)* | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value.
*$__timeGroup(dateColumn,'5m', NULL)* | Same as above but NULL will be used as value for missing points.
*$__timeGroup(dateColumn,'5m', previous)* | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+).
*$__timeGroupAlias(dateColumn,'5m')* | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+).
*$__unixEpochFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183*
*$__unixEpochFrom()* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*$__unixEpochTo()* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*$__unixEpochNanoFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872*
*$__unixEpochNanoFrom()* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*$__unixEpochNanoTo()* | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872*
*$__unixEpochGroup(dateColumn,'5m', [fillmode])* | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+).
*$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])* | Same as above but also adds a column alias (only available in Grafana 5.3+).
*`$__time(dateColumn)`* | Will be replaced by an expression to rename the column to *time*. For example, *dateColumn as time*
*`$__timeEpoch(dateColumn)`* | Will be replaced by an expression to convert a DATETIME column type to Unix timestamp and rename it to *time*. <br/>For example, *DATEDIFF(second, '1970-01-01', dateColumn) AS time*
*`$__timeFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name. <br/>For example, *dateColumn BETWEEN '2017-04-21T05:01:17Z' AND '2017-04-21T05:06:17Z'*
*`$__timeFrom()`* | Will be replaced by the start of the currently active time selection. For example, *'2017-04-21T05:01:17Z'*
*`$__timeTo()`* | Will be replaced by the end of the currently active time selection. For example, *'2017-04-21T05:06:17Z'*
*`$__timeGroup(dateColumn,'5m'[, fillvalue])`* | Will be replaced by an expression usable in GROUP BY clause. Providing a *fillValue* of *NULL* or *floating value* will automatically fill empty series in timerange with that value. <br/>For example, *CAST(ROUND(DATEDIFF(second, '1970-01-01', time_column)/300.0, 0) as bigint)\*300*.
*`$__timeGroup(dateColumn,'5m', 0)`* | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value.
*`$__timeGroup(dateColumn,'5m', NULL)`* | Same as above but NULL will be used as value for missing points.
*`$__timeGroup(dateColumn,'5m', previous)`* | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+).
*`$__timeGroupAlias(dateColumn,'5m')`* | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+).
*`$__unixEpochFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183*
*`$__unixEpochFrom()`* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*`$__unixEpochTo()`* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*`$__unixEpochNanoFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872*
*`$__unixEpochNanoFrom()`* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*`$__unixEpochNanoTo()`* | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872*
*`$__unixEpochGroup(dateColumn,'5m', [fillmode])`* | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+).
*`$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])`* | Same as above but also adds a column alias (only available in Grafana 5.3+).
We plan to add many more macros. If you have suggestions for what macros you would like to see, please [open an issue](https://github.com/grafana/grafana) in our GitHub repo.
@@ -293,12 +293,12 @@ GROUP BY
ORDER BY 1
```
When above query are used in a graph panel the result will be two series named `Metric A` and `Metric B` with a sum of `valueTwo` plotted over `time`.
When the above query is used in a graph panel, the result is two series named `Metric A` and `Metric B` with a sum of `valueTwo` plotted over `time`.
Any series lacking a value in a 3 minute window will have a value of zero which you'll see rendered in the graph to the right.
## Templating
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.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
@@ -319,7 +319,7 @@ A query can return multiple columns and Grafana will automatically create a list
SELECT [host].[hostname], [other_host].[hostname2] FROM host JOIN other_host ON [host].[city] = [other_host].[city]
```
Another option is a query that can create a key/value variable. The query should return two columns that are named `__text` and `__value`. The `__text` column value should be unique (if it is not unique then the first value is used). The options in the dropdown will have a text and value that allows you to have a friendly name as text and an id as the value. An example query with `hostname` as the text and `id` as the value:
Another option is a query that can create a key/value variable. The query should return two columns that are named `__text` and `__value`. The `__text` column value should be unique (if it is not unique then the first value is used). The options in the dropdown will have a text and value that allow you to have a friendly name as text and an id as the value. An example query with `hostname` as the text and `id` as the value:
```sql
SELECT hostname __text, id __value FROM host
@@ -374,14 +374,14 @@ Read more about variable formatting options in the [Variables]({{< relref "../..
## Annotations
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. You add annotation queries via the Dashboard menu / Annotations view.
[Annotations]({{< relref "../../reference/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation queries via the Dashboard menu / Annotations view.
**Columns:**
Name | Description
------------ | -------------
time | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value.
timeend | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value.
timeend | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+)
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
@@ -411,6 +411,23 @@ WHERE
ORDER BY 1
```
**Example region query using time and timeend columns with epoch values:**
> Only available in Grafana v6.6+.
```sql
SELECT
time_sec as time,
time_end_sec as timeend,
description as [text],
tags
FROM
[events]
WHERE
$__unixEpochFilter(time_sec)
ORDER BY 1
```
**Example query using time column of native SQL date/time data type:**
```sql
@@ -427,7 +444,7 @@ ORDER BY 1
## Stored procedure support
Stored procedures have been verified to work. However, please note that we haven't done anything special to support this why there may exist edge cases where it won't work as you would expect.
Stored procedures have been verified to work. However, please note that we haven't done anything special to support this, so there might be edge cases where it won't work as you would expect.
Stored procedures should be supported in table, time series and annotation queries as long as you use the same naming of columns and return data in the same format as describe above under respective section.
Please note that any macro function will not work inside a stored procedure.
@@ -474,7 +491,7 @@ We can define a stored procedure that will return all data we need to render 4 s
In this case the stored procedure accepts two parameters `@from` and `@to` of `int` data types which should be a timerange (from-to) in epoch format
which will be used to filter the data to return from the stored procedure.
We're mimicking the `$__timeGroup(time, '5m')` in the select and group by expressions and that's why there's a lot of lengthy expressions needed -
We're mimicking the `$__timeGroup(time, '5m')` in the select and group by expressions, and that's why there are a lot of lengthy expressions needed -
these could be extracted to MSSQL functions, if wanted.
```sql
+40 -24
View File
@@ -15,7 +15,7 @@ weight = 7
>
> Starting from Grafana v5.1 you can name the time column *time* in addition to earlier supported *time_sec*. Usage of *time_sec* will eventually be deprecated.
Grafana ships with a built-in MySQL data source plugin that allow you to query any visualize
Grafana ships with a built-in MySQL data source plugin that allows you to query and visualize
data from a MySQL compatible database.
## Adding the data source
@@ -131,28 +131,28 @@ To simplify syntax and to allow for dynamic parts, like date range filters, the
Macro example | Description
------------ | -------------
*$__time(dateColumn)* | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec*
*$__timeEpoch(dateColumn)* | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec*
*$__timeFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)*
*$__timeFrom()* | Will be replaced by the start of the currently active time selection. For example, *FROM_UNIXTIME(1494410783)*
*$__timeTo()* | Will be replaced by the end of the currently active time selection. For example, *FROM_UNIXTIME(1494410983)*
*$__timeGroup(dateColumn,'5m')* | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*
*$__timeGroup(dateColumn,'5m', 0)* | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value.
*$__timeGroup(dateColumn,'5m', NULL)* | Same as above but NULL will be used as value for missing points.
*$__timeGroup(dateColumn,'5m', previous)* | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+).
*$__timeGroupAlias(dateColumn,'5m')* | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+).
*$__unixEpochFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183*
*$__unixEpochFrom()* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*$__unixEpochTo()* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*$__unixEpochNanoFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872*
*$__unixEpochNanoFrom()* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*$__unixEpochNanoTo()* | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872*
*$__unixEpochGroup(dateColumn,'5m', [fillmode])* | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+).
*$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])* | Same as above but also adds a column alias (only available in Grafana 5.3+).
*`$__time(dateColumn)`* | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec*
*`$__timeEpoch(dateColumn)`* | Will be replaced by an expression to convert to a UNIX timestamp and rename the column to `time_sec`. For example, *UNIX_TIMESTAMP(dateColumn) as time_sec*
*`$__timeFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN FROM_UNIXTIME(1494410783) AND FROM_UNIXTIME(1494410983)*
*`$__timeFrom()`* | Will be replaced by the start of the currently active time selection. For example, *FROM_UNIXTIME(1494410783)*
*`$__timeTo()`* | Will be replaced by the end of the currently active time selection. For example, *FROM_UNIXTIME(1494410983)*
*`$__timeGroup(dateColumn,'5m')`* | Will be replaced by an expression usable in GROUP BY clause. For example, *cast(cast(UNIX_TIMESTAMP(dateColumn)/(300) as signed)*300 as signed),*
*`$__timeGroup(dateColumn,'5m', 0)`* | Same as above but with a fill parameter so missing points in that series will be added by grafana and 0 will be used as value.
*`$__timeGroup(dateColumn,'5m', NULL)`* | Same as above but NULL will be used as value for missing points.
*`$__timeGroup(dateColumn,'5m', previous)`* | Same as above but the previous value in that series will be used as fill value if no value has been seen yet NULL will be used (only available in Grafana 5.3+).
*`$__timeGroupAlias(dateColumn,'5m')`* | Will be replaced identical to $__timeGroup but with an added column alias (only available in Grafana 5.3+).
*`$__unixEpochFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamp. For example, *dateColumn > 1494410783 AND dateColumn < 1494497183*
*`$__unixEpochFrom()`* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*`$__unixEpochTo()`* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*`$__unixEpochNanoFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamp. For example, *dateColumn > 1494410783152415214 AND dateColumn < 1494497183142514872*
*`$__unixEpochNanoFrom()`* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*`$__unixEpochNanoTo()`* | Will be replaced by the end of the currently active time selection as nanosecond timestamp. For example, *1494497183142514872*
*`$__unixEpochGroup(dateColumn,'5m', [fillmode])`* | Same as $__timeGroup but for times stored as Unix timestamp (only available in Grafana 5.3+).
*`$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])`* | Same as above but also adds a column alias (only available in Grafana 5.3+).
We plan to add many more macros. If you have suggestions for what macros you would like to see, please [open an issue](https://github.com/grafana/grafana) in our GitHub repo.
The query editor has a link named `Generated SQL` that show up after a query as been executed, while in panel edit mode. Click on it and it will expand and show the raw interpolated SQL string that was executed.
The query editor has a link named `Generated SQL` that shows up after a query has been executed, while in panel edit mode. Click on it and it will expand and show the raw interpolated SQL string that was executed.
## Table queries
@@ -236,7 +236,7 @@ This is something we plan to add.
This feature is currently available in the nightly builds and will be included in the 5.0.0 release.
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.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
@@ -251,7 +251,7 @@ For example, you can have a variable that contains all values for the `hostname`
SELECT hostname FROM my_host
```
A query can returns multiple columns and Grafana will automatically create a list from them. For example, the query below will return a list with values from `hostname` and `hostname2`.
A query can return multiple columns and Grafana will automatically create a list from them. For example, the query below will return a list with values from `hostname` and `hostname2`.
```sql
SELECT my_host.hostname, my_other_host.hostname2 FROM my_host JOIN my_other_host ON my_host.city = my_other_host.city
@@ -350,6 +350,22 @@ WHERE
$__unixEpochFilter(epoch_time)
```
**Example region query using time and timeend columns with epoch values:**
> Only available in Grafana v6.6+.
```sql
SELECT
epoch_time as time,
epoch_timeend as timeend,
metric1 as text,
CONCAT(tag1, ',', tag2) as tags
FROM
public.test_data
WHERE
$__unixEpochFilter(epoch_time)
```
**Example query using time column of native SQL date/time data type:**
```sql
@@ -366,13 +382,13 @@ WHERE
Name | Description
------------ | -------------
time | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value.
timeend | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value.
timeend | Optional name of the end date/time field. Could be a column with a native SQL date/time data type or epoch value. (Grafana v6.6+)
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
## Alerting
Time series queries should work in alerting conditions. Table formatted queries is not yet supported in alert rule conditions.
Time series queries should work in alerting conditions. Table formatted queries are not yet supported in alert rule conditions.
## Configure the data source with provisioning
@@ -49,8 +49,8 @@ The autocomplete only works if the OpenTSDB suggest api is enabled.
## Templating queries
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
Instead of hard-coding things like server, application and sensor name in your metric queries you can use variables in their place.
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
@@ -66,10 +66,10 @@ When using OpenTSDB with a template variable of `query` type you can use followi
Query | Description
------------ | -------------
*metrics(prefix)* | Returns metric names with specific prefix (can be empty)
*tag_names(cpu)* | Return tag names (i.e. keys) for a specific cpu metric
*tag_values(cpu, hostname)* | Return tag values for metric cpu and tag key hostname
*suggest_tagk(prefix)* | Return tag names (i.e. keys) for all metrics with specific prefix (can be empty)
*suggest_tagv(prefix)* | Return tag values for all metrics with specific prefix (can be empty)
*tag_names(cpu)* | Returns tag names (i.e. keys) for a specific cpu metric
*tag_values(cpu, hostname)* | Returns tag values for metric cpu and tag key hostname
*suggest_tagk(prefix)* | Returns tag names (i.e. keys) for all metrics with specific prefix (can be empty)
*suggest_tagv(prefix)* | Returns tag values for all metrics with specific prefix (can be empty)
If you do not see template variables being populated in `Preview of values` section, you need to enable
`tsd.core.meta.enable_realtime_ts` in the OpenTSDB server settings. Also, to populate metadata of
+36 -22
View File
@@ -11,8 +11,6 @@ weight = 7
# Using PostgreSQL in Grafana
> NOTE: In **9.5.18, 9.4.23, 9.6.14, 10.9, 11.4, 12-beta2** versions of PostgreSQL has a [bug](https://www.postgresql.org/message-id/flat/28827.1561082086%40sss.pgh.pa.us#df2287bd7481153984bef6bab40af0db) which prevents execution of multiple column modifications via `ALTER TABLE` statement. Because Grafana uses it during initial database set up and since PostgreSQL has [fixed](https://github.com/postgres/postgres/commit/f946a409143d01951411382fbc3c91c7eb640094) this issue, Grafana **does not support these versions**
Grafana ships with a built-in PostgreSQL data source plugin that allows you to query and visualize data from a PostgreSQL compatible database.
## Adding the data source
@@ -143,24 +141,24 @@ Macros can be used within a query to simplify syntax and allow for dynamic parts
Macro example | Description
------------ | -------------
*$__time(dateColumn)* | Will be replaced by an expression to rename the column to `time`. For example, *dateColumn as time*
*$__timeSec(dateColumn)* | Will be replaced by an expression to rename the column to `time` and converting the value to Unix timestamp. For example, *extract(epoch from dateColumn) as time*
*$__timeFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN '2017-04-21T05:01:17Z' AND '2017-04-21T05:06:17Z'*
*$__timeFrom()* | Will be replaced by the start of the currently active time selection. For example, *'2017-04-21T05:01:17Z'*
*$__timeTo()* | Will be replaced by the end of the currently active time selection. For example, *'2017-04-21T05:06:17Z'*
*$__timeGroup(dateColumn,'5m')* | Will be replaced by an expression usable in a GROUP BY clause. For example, *(extract(epoch from dateColumn)/300)::bigint*300*
*$__timeGroup(dateColumn,'5m', 0)* | Same as above but with a fill parameter so missing points in that series will be added by Grafana and 0 will be used as the value.
*$__timeGroup(dateColumn,'5m', NULL)* | Same as above but NULL will be used as value for missing points.
*$__timeGroup(dateColumn,'5m', previous)* | Same as above but the previous value in that series will be used as fill value. If no value has been seen yet, NULL will be used (only available in Grafana 5.3+).
*$__timeGroupAlias(dateColumn,'5m')* | Will be replaced with an expression identical to $__timeGroup, but with an added column alias (only available in Grafana 5.3+).
*$__unixEpochFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamps. For example, *dateColumn >= 1494410783 AND dateColumn <= 1494497183*
*$__unixEpochFrom()* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*$__unixEpochTo()* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*$__unixEpochNanoFilter(dateColumn)* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamps. For example, *dateColumn >= 1494410783152415214 AND dateColumn <= 1494497183142514872*
*$__unixEpochNanoFrom()* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*$__unixEpochNanoTo()* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183142514872*
*$__unixEpochGroup(dateColumn,'5m', [fillmode])* | Same as $__timeGroup, but for times stored as Unix timestamp (only available in Grafana 5.3+).
*$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])* | Same as above, but also adds a column alias (only available in Grafana 5.3+).
*`$__time(dateColumn)`* | Will be replaced by an expression to rename the column to `time`. For example, *dateColumn as time*
*`$__timeSec(dateColumn)`* | Will be replaced by an expression to rename the column to `time` and converting the value to Unix timestamp. For example, *extract(epoch from dateColumn) as time*
*`$__timeFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name. For example, *dateColumn BETWEEN '2017-04-21T05:01:17Z' AND '2017-04-21T05:06:17Z'*
*`$__timeFrom()`* | Will be replaced by the start of the currently active time selection. For example, *'2017-04-21T05:01:17Z'*
*`$__timeTo()`* | Will be replaced by the end of the currently active time selection. For example, *'2017-04-21T05:06:17Z'*
*`$__timeGroup(dateColumn,'5m')`* | Will be replaced by an expression usable in a GROUP BY clause. For example, *(extract(epoch from dateColumn)/300)::bigint*300*
*`$__timeGroup(dateColumn,'5m', 0)`* | Same as above but with a fill parameter so missing points in that series will be added by Grafana and 0 will be used as the value.
*`$__timeGroup(dateColumn,'5m', NULL)`* | Same as above but NULL will be used as value for missing points.
*`$__timeGroup(dateColumn,'5m', previous)`* | Same as above but the previous value in that series will be used as fill value. If no value has been seen yet, NULL will be used (only available in Grafana 5.3+).
*`$__timeGroupAlias(dateColumn,'5m')`* | Will be replaced with an expression identical to $__timeGroup, but with an added column alias (only available in Grafana 5.3+).
*`$__unixEpochFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as Unix timestamps. For example, *dateColumn >= 1494410783 AND dateColumn <= 1494497183*
*`$__unixEpochFrom()`* | Will be replaced by the start of the currently active time selection as Unix timestamp. For example, *1494410783*
*`$__unixEpochTo()`* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183*
*`$__unixEpochNanoFilter(dateColumn)`* | Will be replaced by a time range filter using the specified column name with times represented as nanosecond timestamps. For example, *dateColumn >= 1494410783152415214 AND dateColumn <= 1494497183142514872*
*`$__unixEpochNanoFrom()`* | Will be replaced by the start of the currently active time selection as nanosecond timestamp. For example, *1494410783152415214*
*`$__unixEpochNanoTo()`* | Will be replaced by the end of the currently active time selection as Unix timestamp. For example, *1494497183142514872*
*`$__unixEpochGroup(dateColumn,'5m', [fillmode])`* | Same as $__timeGroup, but for times stored as Unix timestamp (only available in Grafana 5.3+).
*`$__unixEpochGroupAlias(dateColumn,'5m', [fillmode])`* | Same as above, but also adds a column alias (only available in Grafana 5.3+).
We plan to add many more macros. If you have suggestions for what macros you would like to see, please [open an issue](https://github.com/grafana/grafana) in our GitHub repo.
@@ -242,7 +240,7 @@ ORDER BY time
## Templating
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.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
@@ -354,6 +352,22 @@ WHERE
$__unixEpochFilter(epoch_time)
```
**Example region query using time and timeend columns with epoch values:**
> Only available in Grafana v6.6+.
```sql
SELECT
epoch_time as time,
epoch_time_end as timeend,
metric1 as text,
concat_ws(', ', metric1::text, metric2::text) as tags
FROM
public.test_data
WHERE
$__unixEpochFilter(epoch_time)
```
**Example query using time column of native SQL date/time data type:**
```sql
@@ -370,7 +384,7 @@ WHERE
Name | Description
------------ | -------------
time | The name of the date/time field. Could be a column with a native SQL date/time data type or epoch value.
timeend | Optional name of the time end field, needs to be date/time data type. If set, then annotations are marked as regions between time and time-end.
timeend | Optional name of the time end field, needs to be date/time data type. If set, then annotations are marked as regions between time and time-end. (Grafana v6.6+)
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
+22 -28
View File
@@ -10,20 +10,13 @@ parent = "datasources"
weight = 1
+++
# Using Prometheus in Grafana
# Prometheus data source
Grafana includes built-in support for Prometheus.
Grafana includes built-in support for Prometheus. This topic explains options, variables, querying, and other options specific to the Prometheus data source. Refer to [Add a data source]({{< relref "add-a-data-source.md" >}}) for instructions on how to add a data source to Grafana.
## Adding the data source
## Prometheus settings
1. Open the side menu by clicking the Grafana icon in the top header.
2. In the side menu under the `Dashboards` link you should find a link named `Data Sources`.
3. Click the `+ Add data source` button in the top header.
4. Select `Prometheus` from the _Type_ dropdown.
> NOTE: If you're not seeing the `Data Sources` link in your side menu it means that your current user does not have the `Admin` role for the current organization.
## Data source options
To access Prometheus settings, click the **Configuration** (gear) icon, then click **Data Sources**, and then click **Prometheus**.
| Name | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
@@ -35,9 +28,9 @@ Grafana includes built-in support for Prometheus.
| _User_ | User name for basic authentication. |
| _Password_ | Password for basic authentication. |
| _Scrape interval_ | Set this to the typical scrape and evaluation interval configured in Prometheus. Defaults to 15s. |
| _Custom Query Parameters_ | Add custom parameters to the Prometheus query URL. For example `timeout`, `partial_response`, `dedup` or `max_source_resolution`. Multiple parameters should be concatenated together with an '&amp;'. |
| _Custom Query Parameters_ | Add custom parameters to the Prometheus query URL. For example `timeout`, `partial_response`, `dedup`, or `max_source_resolution`. Multiple parameters should be concatenated together with an '&amp;'. |
## Query editor
## Prometheus query editor
Open a graph in edit mode by click the title > Edit (or by pressing `e` key while hovering over panel).
@@ -47,7 +40,7 @@ Open a graph in edit mode by click the title > Edit (or by pressing `e` key whil
| Name | Description |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| _Query expression_ | Prometheus query expression, check out the [Prometheus documentation](http://prometheus.io/docs/querying/basics/). |
| _Legend format_ | Controls the name of the time series, using name or pattern. For example `{{hostname}}` will be replaced with label value for the label `hostname`. |
| _Legend format_ | Controls the name of the time series, using name or pattern. For example `{{hostname}}` is replaced with the label value for the label `hostname`. |
| _Min step_ | An additional lower limit for the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) and for the `$__interval` variable. The limit is absolute and not modified by the _Resolution_ setting. |
| _Resolution_ | `1/1` sets both the `$__interval` variable and the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries) such that each pixel corresponds to one data point. For better performance, lower resolutions can be picked. `1/2` only retrieves a data point for every other pixel, and `1/10` retrieves one data point per 10 pixels. Note that both _Min time interval_ and _Min step_ limit the final value of `$__interval` and `step`. |
| _Metric lookup_ | Search for metric names in this input field. |
@@ -55,15 +48,14 @@ Open a graph in edit mode by click the title > Edit (or by pressing `e` key whil
| _Instant_ | Perform an "instant" query, to return only the latest value that Prometheus has scraped for the requested time series. Instant queries return results much faster than normal range queries. Use them to look up label sets. |
| _Min time interval_| This value multiplied by the denominator from the _Resolution_ setting sets a lower limit to both the `$__interval` variable and the [`step` parameter of Prometheus range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries). Defaults to _Scrape interval_ as set in the data source options. |
> NOTE: Grafana slightly modifies the request dates for queries to align them with the dynamically calculated step.
> This ensures consistent display of metrics data but can result in a small gap of data at the right edge of a graph.
> **Note:** Grafana modifies the request dates for queries to align them with the dynamically calculated step. This ensures consistent display of metrics data, but it can result in a small gap of data at the right edge of a graph.
### Instant queries
The Prometheus datasource allows you to run "instant" queries, which queries only the latest value.
The Prometheus data source allows you to run "instant" queries, which query only the latest value.
You can visualize the results in a table panel to see all available labels of a timeseries.
Instant query results are made up only of one datapoint per series but can be shown in the graph panel with the help of [series overrides]({{< relref "../panels/graph/#series-overrides" >}}).
Instant query results are made up only of one data point per series but can be shown in the graph panel with the help of [series overrides]({{< relref "../panels/graph/#series-overrides" >}}).
To show them in the graph as a latest value point, add a series override and select `Points > true`.
To show a horizontal line across the whole graph, add a series override and select `Transform > constant`.
@@ -72,7 +64,7 @@ To show a horizontal line across the whole graph, add a series override and sele
## Templating
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 makes it easy to change the data
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
@@ -91,20 +83,20 @@ provides the following functions you can use in the `Query` input field.
| _metrics(metric)_ | Returns a list of metrics matching the specified `metric` regex. |
| _query_\__result(query)_ | Returns a list of Prometheus query result for the `query`. |
For details of _metric names_, _label names_ and _label values_ are please refer to the [Prometheus documentation](http://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
For details of what _metric names_, _label names_ and _label values_ are please refer to the [Prometheus documentation](http://prometheus.io/docs/concepts/data_model/#metric-names-and-labels).
#### Using interval and range variables
> Support for `$__range`, `$__range_s` and `$__range_ms` only available from Grafana v5.3
It's possible to use some global built-in variables in query variables; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` and `$__range_ms`, see [Global built-in variables]({{< relref "../../reference/templating/#global-built-in-variables" >}}) for more information. These can be convenient to use in conjunction with the `query_result` function when you need to filter variable queries since
You can use some global built-in variables in query variables; `$__interval`, `$__interval_ms`, `$__range`, `$__range_s` and `$__range_ms`, see [Global built-in variables]({{< relref "../../reference/templating/#global-built-in-variables" >}}) for more information. These can be convenient to use in conjunction with the `query_result` function when you need to filter variable queries since
`label_values` function doesn't support queries.
Make sure to set the variable's `refresh` trigger to be `On Time Range Change` to get the correct instances when changing the time range on the dashboard.
**Example usage:**
Populate a variable with the the busiest 5 request instances based on average QPS over the time range shown in the dashboard:
Populate a variable with the busiest 5 request instances based on average QPS over the time range shown in the dashboard:
```
Query: query_result(topk(5, sum(rate(http_requests_total[$__range])) by (instance)))
@@ -130,7 +122,7 @@ options are enabled, Grafana converts the labels from plain text to a regex comp
## Annotations
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. You add annotation
[Annotations]({{< relref "../../reference/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation
queries via the Dashboard menu / Annotations view.
Prometheus supports two ways to query annotations.
@@ -140,15 +132,17 @@ Prometheus supports two ways to query annotations.
The step option is useful to limit the number of events returned from your query.
## Getting Grafana metrics into Prometheus
## Get Grafana metrics into Prometheus
Since 4.6.0 Grafana exposes metrics for Prometheus on the `/metrics` endpoint. We also bundle a dashboard within Grafana so you can get started viewing your metrics faster. You can import the bundled dashboard by going to the data source edit page and click the dashboard tab. There you can find a dashboard for Grafana and one for Prometheus. Import and start viewing all the metrics!
Grafana exposes metrics for Prometheus on the `/metrics` endpoint. We also bundle a dashboard within Grafana so you can get started viewing your metrics faster. You can import the bundled dashboard by going to the data source edit page and click the dashboard tab. There you can find a dashboard for Grafana and one for Prometheus. Import and start viewing all the metrics!
## Configure the data source with provisioning
For detailed instructions, refer to [Internal Grafana metrics]({{< relref "../../administration/metrics.md">}}).
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" >}})
## Provision the Prometheus data source
Here are some provisioning examples for this data source.
You can configure data sources using config files with Grafana's provisioning system. 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
apiVersion: 1
+100 -46
View File
@@ -27,11 +27,11 @@ Grafana ships with built-in support for Google Stackdriver. Just add it as a dat
> NOTE: If you're not seeing the `Data Sources` link in your side menu it means that your current user does not have the `Admin` role for the current organization.
| Name | Description |
| --------------------- | ----------------------------------------------------------------------------------- |
| _Name_ | The data source name. This is how you refer to the data source in panels and queries. |
| _Default_ | Default data source means that it will be pre-selected for new panels. |
| _Service Account Key_ | Service Account Key File for a GCP Project. Instructions below on how to create it. |
| Name | Description |
| --------------------- | ------------------------------------------------------------------------------------- |
| _Name_ | The data source name. This is how you refer to the data source in panels and queries. |
| _Default_ | Default data source means that it will be pre-selected for new panels. |
| _Service Account Key_ | Service Account Key File for a GCP Project. Instructions below on how to create it. |
## Authentication
@@ -45,8 +45,8 @@ To authenticate with the Stackdriver API, you need to create a Google Cloud Plat
The following APIs need to be enabled first:
* [Monitoring API](https://console.cloud.google.com/apis/library/monitoring.googleapis.com)
* [Cloud Resource Manager API](https://console.cloud.google.com/apis/library/cloudresourcemanager.googleapis.com)
- [Monitoring API](https://console.cloud.google.com/apis/library/monitoring.googleapis.com)
- [Cloud Resource Manager API](https://console.cloud.google.com/apis/library/cloudresourcemanager.googleapis.com)
Click on the links above and click the `Enable` button:
@@ -57,24 +57,24 @@ Click on the links above and click the `Enable` button:
1. Navigate to the [APIs and Services Credentials page](https://console.cloud.google.com/apis/credentials).
2. Click on the `Create credentials` dropdown/button and choose the `Service account key` option.
{{< docs-imagebox img="/img/docs/v53/stackdriver_create_service_account_button.png" class="docs-image--no-shadow" caption="Create service account button" >}}
{{< docs-imagebox img="/img/docs/v53/stackdriver_create_service_account_button.png" class="docs-image--no-shadow" caption="Create service account button" >}}
3. On the `Create service account key` page, choose key type `JSON`. Then in the `Service Account` dropdown, choose the `New service account` option:
{{< docs-imagebox img="/img/docs/v53/stackdriver_create_service_account_key.png" class="docs-image--no-shadow" caption="Create service account key" >}}
{{< docs-imagebox img="/img/docs/v53/stackdriver_create_service_account_key.png" class="docs-image--no-shadow" caption="Create service account key" >}}
4. Some new fields will appear. Fill in a name for the service account in the `Service account name` field and then choose the `Monitoring Viewer` role from the `Role` dropdown:
{{< docs-imagebox img="/img/docs/v53/stackdriver_service_account_choose_role.png" class="docs-image--no-shadow" caption="Choose role" >}}
{{< docs-imagebox img="/img/docs/v53/stackdriver_service_account_choose_role.png" class="docs-image--no-shadow" caption="Choose role" >}}
5. Click the Create button. A JSON key file will be created and downloaded to your computer. Store this file in a secure place as it allows access to your Stackdriver data.
6. Upload it to Grafana on the data source Configuration page. You can either upload the file or paste in the contents of the file.
{{< docs-imagebox img="/img/docs/v53/stackdriver_grafana_upload_key.png" class="docs-image--no-shadow" caption="Upload service key file to Grafana" >}}
{{< docs-imagebox img="/img/docs/v53/stackdriver_grafana_upload_key.png" class="docs-image--no-shadow" caption="Upload service key file to Grafana" >}}
7. The file contents will be encrypted and saved in the Grafana database. Don't forget to save after uploading the file!
{{< docs-imagebox img="/img/docs/v53/stackdriver_grafana_key_uploaded.png" class="docs-image--no-shadow" caption="Service key file is uploaded to Grafana" >}}
{{< docs-imagebox img="/img/docs/v53/stackdriver_grafana_key_uploaded.png" class="docs-image--no-shadow" caption="Service key file is uploaded to Grafana" >}}
### Using GCE Default Service Account
@@ -86,58 +86,68 @@ If Grafana is running on a Google Compute Engine (GCE) virtual machine, it is po
Read more about creating and enabling service accounts for GCE VM instances [here](https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances).
## Metric Query Editor
## Using the Query Editor
{{< docs-imagebox img="/img/docs/v53/stackdriver_query_editor.png" max-width= "400px" class="docs-image--right" >}}
The Stackdriver query editor allows you to build two types of queries - **Metric** and **Service Level Objective (SLO)**. Both types return time series data.
The Stackdriver query editor allows you to select metrics, group/aggregate by labels and by time, and use filters to specify which time series you want in the results.
### Metric Queries
Begin by choosing a `Service` and then a metric from the `Metric` dropdown. Use the plus and minus icons in the filter and group by sections to add/remove filters or group by clauses.
{{< docs-imagebox img="/img/docs/v70/metric-query-builder.png" max-width= "400px" class="docs-image--right" >}}
The metric query editor allows you to select metrics, group/aggregate by labels and by time, and use filters to specify which time series you want in the results.
To create a metric query, follow these steps:
1. Choose the option **Metrics** in the **Query Type** dropdown
2. Choose a project from the **Project** dropdown
3. Choose a Google Cloud Platform service from the **Service** dropdown
4. Choose a metric from the **Metric** dropdown.
5. Use the plus and minus icons in the filter and group by sections to add/remove filters or group by clauses. This step is optional.
Stackdriver metrics can be of different kinds (GAUGE, DELTA, CUMULATIVE) and these kinds have support for different aggregation options (reducers and aligners). The Grafana query editor shows the list of available aggregation methods for a selected metric and sets a default reducer and aligner when you select the metric. Units for the Y-axis are also automatically selected by the query editor.
### Filter
#### Filter
To add a filter, click the plus icon and choose a field to filter by and enter a filter value e.g. `instance_name = grafana-1`. You can remove the filter by clicking on the filter name and select `--remove filter--`.
#### Simple wildcards
##### Simple wildcards
When the operator is set to `=` or `!=` it is possible to add wildcards to the filter value field. E.g `us-*` will capture all values that starts with "us-" and `*central-a` will capture all values that ends with "central-a". `*-central-*` captures all values that has the substring of -central-. Simple wildcards are less expensive than regular expressions.
#### Regular expressions
##### Regular expressions
When the operator is set to `=~` or `!=~` it is possible to add regular expressions to the filter value field. E.g `us-central[1-3]-[af]` would match all values that starts with "us-central", is followed by a number in the range of 1 to 3, a dash and then either an "a" or an "f". Leading and trailing slashes are not needed when creating regular expressions.
### Aggregation
#### Aggregation
The aggregation field lets you combine time series based on common statistics. Read more about this option [here](https://cloud.google.com/monitoring/charts/metrics-selector#aggregation-options).
The `Aligner` field allows you to align multiple time series after the same group by time interval. Read more about how it works [here](https://cloud.google.com/monitoring/charts/metrics-selector#alignment).
#### Alignment Period/Group by Time
##### Alignment Period/Group by Time
The `Alignment Period` groups a metric by time if an aggregation is chosen. The default is to use the GCP Stackdriver default groupings (which allows you to compare graphs in Grafana with graphs in the Stackdriver UI).
The option is called `Stackdriver auto` and the defaults are:
* 1m for time ranges < 23 hours
* 5m for time ranges >= 23 hours and < 6 days
* 1h for time ranges >= 6 days
- 1m for time ranges < 23 hours
- 5m for time ranges >= 23 hours and < 6 days
- 1h for time ranges >= 6 days
The other automatic option is `Grafana auto`. This will automatically set the group by time depending on the time range chosen and the width of the graph panel. Read more about the details [here](http://docs.grafana.org/reference/templating/#the-interval-variable).
It is also possible to choose fixed time intervals to group by, like `1h` or `1d`.
### Group By
#### Group By
Group by resource or metric labels to reduce the number of time series and to aggregate the results by a group by. E.g. Group by instance_name to see an aggregated metric for a Compute instance.
#### Metadata labels
##### Metadata labels
Resource metadata labels contains information to uniquely identify a resource in Google cloud. Metadata labels are only returned in the time series response if they're part of the **Group By** segment in the time series request. There's no API for retrieving metadata labels, so it's not possible to populate the group by dropdown with the metadata labels that are available for the selected service and metric. However, the **Group By** field dropdown comes with a pre-defined list of common system labels.
Resource metadata labels contain information to uniquely identify a resource in Google Cloud. Metadata labels are only returned in the time series response if they're part of the **Group By** segment in the time series request. There's no API for retrieving metadata labels, so it's not possible to populate the group by dropdown with the metadata labels that are available for the selected service and metric. However, the **Group By** field dropdown comes with a pre-defined list of common system labels.
User labels cannot be pre-defined, but it's possible to enter them manually in the **Group By** field. If a metadata label, user label or system label is included in the **Group By** segment, then you can create filters based on it and expand its value on the **Alias** field.
### Alias Patterns
#### Alias patterns
The Alias By field allows you to control the format of the legend keys. The default is to show the metric name and labels. This can be long and hard to read. Using the following patterns in the alias field, you can format the legend key the way you want it.
@@ -153,10 +163,10 @@ The Alias By field allows you to control the format of the legend keys. The defa
In the Group By dropdown, you can see a list of metric and resource labels for a metric. These can be included in the legend key using alias patterns.
| Alias Pattern Format | Description | Alias Pattern Example | Example Result |
| ------------------------ | -------------------------------- | -------------------------------- | ---------------- |
| `{{metric.label.xxx}}` | returns the metric label value | `{{metric.label.instance_name}}` | `grafana-1-prod` |
| `{{resource.label.xxx}}` | returns the resource label value | `{{resource.label.zone}}` | `us-east1-b` |
| Alias Pattern Format | Description | Alias Pattern Example | Example Result |
| -------------------------------- | ---------------------------------------- | --------------------------------- | ---------------- |
| `{{metric.label.xxx}}` | returns the metric label value | `{{metric.label.instance_name}}` | `grafana-1-prod` |
| `{{resource.label.xxx}}` | returns the resource label value | `{{resource.label.zone}}` | `us-east1-b` |
| `{{metadata.system_labels.xxx}}` | returns the meta data system label value | `{{metadata.system_labels.name}}` | `grafana` |
| `{{metadata.user_labels.xxx}}` | returns the meta data user label value | `{{metadata.user_labels.tag}}` | `production` |
@@ -174,10 +184,51 @@ Example Alias By: `{{resource.type}} - {{metric.type}}`
Example Result: `gce_instance - compute.googleapis.com/instance/cpu/usage_time`
### SLO (Service Level Objective) queries
> Only available in Grafana v7.0+
{{< docs-imagebox img="/img/docs/v70/slo-query-builder.png" max-width= "400px" class="docs-image--right" >}}
The SLO query builder in the Stackdriver data source allows you to display SLO data in time series format. To get an understanding of the basic concepts in service monitoring, please refer to Google Stackdriver's [official docs](https://cloud.google.com/monitoring/service-monitoring).
#### How to create an SLO query
To create an SLO query, follow these steps:
1. Choose the option **Service Level Objectives (SLO)** in the **Query Type** dropdown.
2. Choose a project from the **Project** dropdown.
3. Choose an [SLO service](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services) from the **Service** dropdown.
4. Choose an [SLO](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives) from the **SLO** dropdown.
5. Choose a [time series selector](https://cloud.google.com/monitoring/service-monitoring/timeseries-selectors#ts-selector-list) from the **Selector** dropdown.
The friendly names for the time series selectors are shown in Grafana. Here is the mapping from the friendly name to the system name that is used in the Service Monitoring documentation:
| Selector dropdown value | Corresponding time series selector used |
| -------------------------- | --------------------------------------- |
| SLI Value | select_slo_health |
| SLO Compliance | select_slo_compliance |
| SLO Error Budget Remaining | select_slo_budget_fraction |
#### Alias Patterns for SLO queries
The Alias By field allows you to control the format of the legend keys for SLO queries too.
| Alias Pattern | Description | Example Result |
| -------------- | ---------------------------- | ------------------- |
| `{{project}}` | returns the GCP project name | `myProject` |
| `{{service}}` | returns the service name | `myService` |
| `{{slo}}` | returns the SLO | `latency-slo` |
| `{{selector}}` | returns the selector | `select_slo_health` |
#### Alignment Period/Group by Time for SLO queries
SLO queries use the same [alignment period functionality as metric queries]({{< relref "#metric-queries" >}}).
## Templating
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
Variables are shown as dropdown select boxes at the top of the dashboard. These dropdowns make it easy to change the data
being displayed in your dashboard.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
@@ -185,24 +236,27 @@ types of template variables.
### Query Variable
Variable of the type *Query* allows you to query Stackdriver for various types of data. The Stackdriver data source plugin provides the following `Query Types`.
Variable of the type _Query_ allows you to query Stackdriver for various types of data. The Stackdriver data source plugin provides the following `Query Types`.
| Name | Description |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| *Metric Types* | Returns a list of metric type names that are available for the specified service. |
| *Labels Keys* | Returns a list of keys for `metric label` and `resource label` in the specified metric. |
| *Labels Values* | Returns a list of values for the label in the specified metric. |
| *Resource Types* | Returns a list of resource types for the the specified metric. |
| *Aggregations* | Returns a list of aggregations (cross series reducers) for the the specified metric. |
| *Aligners* | Returns a list of aligners (per series aligners) for the the specified metric. |
| *Alignment periods* | Returns a list of all alignment periods that are available in Stackdriver query editor in Grafana |
| Name | Description |
| -------------------------------- | ------------------------------------------------------------------------------------------------- |
| _Metric Types_ | Returns a list of metric type names that are available for the specified service. |
| _Labels Keys_ | Returns a list of keys for `metric label` and `resource label` in the specified metric. |
| _Labels Values_ | Returns a list of values for the label in the specified metric. |
| _Resource Types_ | Returns a list of resource types for the the specified metric. |
| _Aggregations_ | Returns a list of aggregations (cross series reducers) for the the specified metric. |
| _Aligners_ | Returns a list of aligners (per series aligners) for the the specified metric. |
| _Alignment periods_ | Returns a list of all alignment periods that are available in Stackdriver query editor in Grafana |
| _Selectors_ | Returns a list of selectors that can be used in SLO (Service Level Objectives) queries |
| _SLO Services_ | Returns a list of Service Monitoring services that can be used in SLO queries |
| _Service Level Objectives (SLO)_ | Returns a list of SLO's for the specified SLO service |
### Using variables in queries
There are two syntaxes:
* `$<varname>` Example: `metric.label.$metric_label`
* `[[varname]]` Example: `metric.label.[[metric_label]]`
- `$<varname>` Example: `metric.label.$metric_label`
- `[[varname]]` Example: `metric.label.[[metric_label]]`
Why two ways? The first syntax is easier to read and write but does not allow you to use a variable in the middle of a word. When the _Multi-value_ or _Include all value_ options are enabled, Grafana converts the labels from plain text to a regex compatible string, which means you have to use `=~` instead of `=`.
@@ -210,7 +264,7 @@ Why two ways? The first syntax is easier to read and write but does not allow yo
{{< docs-imagebox img="/img/docs/v53/stackdriver_annotations_query_editor.png" max-width= "400px" class="docs-image--right" >}}
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. You add annotation
[Annotations]({{< relref "../../reference/annotations.md" >}}) allow you to overlay rich event information on top of graphs. You add annotation
queries via the Dashboard menu / Annotations view. Annotation rendering is expensive so it is important to limit the number of rows returned. There is no support for showing Stackdriver annotations and events yet but it works well with [custom metrics](https://cloud.google.com/monitoring/custom-metrics/) in Stackdriver.
With the query editor for annotations, you can select a metric and filters. The `Title` and `Text` fields support templating and can use data returned from the query. For example, the Title field could have the following text:
@@ -13,7 +13,7 @@ weight = 20
The purpose of this data source is to make it easier to create fake data for any panel.
Using `TestData DB` you can build your own time series and have any panel render it.
This make is much easier to verify functionally since the data can be shared very easily.
This makes it much easier to verify functionality since the data can be shared very easily.
## Enable
+83 -23
View File
@@ -11,25 +11,23 @@ weight = 5
# Explore
> Explore is only available in Grafana 6.0 and above.
## Introduction
One of the major new features of Grafana 6.0 is the new query-focused Explore workflow for troubleshooting and/or for data exploration.
Grafana's dashboard UI is all about building dashboards for visualization. Explore strips away all the dashboard and panel options so that you can focus on the query. Iterate until you have a working query and then think about building a dashboard.
> Explore is only available in Grafana 6.0 and above.
For infrastructure monitoring and incident response, you no longer need to switch to other tools to debug what went wrong. Explore allows you to dig deeper into your metrics and logs to find the cause. Grafana's new logging data source, [Loki](https://github.com/grafana/loki) is tightly integrated into Explore and allows you to correlate metrics and logs by viewing them side-by-side. This creates a new debugging workflow where you can:
1. Receive an alert
2. Drill down and examine metrics
3. Drill down again and search logs related to the metric and time interval (and in the future, distributed traces).
1. Drill down and examine metrics
1. Drill down again and search logs related to the metric and time interval (and in the future, distributed traces).
If you just want to explore your data and do not want to create a dashboard then Explore makes this much easier. Explore will show the results as both a graph and a table enabling you to see trends in the data and more detail at the same time (if the data source supports both graph and table data).
## How to Start Exploring
## Start exploring
There is a new Explore icon on the menu bar to the left. This opens a new empty Explore tab.
> **Note:** By default, users with the Viewer role cannot edit and do not have access to Explore. Refer to [Organization roles](https://grafana.com/docs/grafana/latest/permissions/organization_roles/) for more information about what each role has access to.
There is an Explore icon on the menu bar to the left. This opens an empty Explore tab.
{{< docs-imagebox img="/img/docs/v65/explore_menu.png" class="docs-image--no-shadow" caption="Screenshot of the new Explore Icon" >}}
@@ -41,7 +39,7 @@ Choose your data source in the dropdown in the top left. Prometheus has a custom
The query field is where you can write your query and explore your data. There are three buttons beside the query field, a clear button (X), an add query button (+) and the remove query button (-). Just like the normal query editor, you can add and remove multiple queries.
## Split and Compare
## Split and compare
The Split feature is an easy way to compare graphs and tables side-by-side or to look at related data together on one page. Click the split button to duplicate the current query and split the page into two side-by-side queries. It is possible to select another data source for the new query which for example, allows you to compare the same query for two different servers or to compare the staging environment to the production environment.
@@ -51,17 +49,78 @@ In split view, timepickers for both panels can be linked (if you change one, the
You can close the newly created query by clicking on the Close Split button.
## Query history
> BETA: Query history is a beta feature.
Query history is a list of queries that you have used in Explore. The history is local to your browser and is not shared with others. To open and interact with your history, click the **Query history** button in Explore.
### View query history
Query history lets you view the history of your querying. For each individual query, you can:
- Run a query.
- Create and/or edit a comment.
- Copy a query to the clipboard.
- Copy a URL link with the query to the clipboard.
- Star a query.
### Manage favorite queries
All queries that have been starred in the Query history tab are displayed in the Starred. This allows you to access your favorite queries faster and to reuse these queries without typing them from scratch.
### Sort query history
By default, query history shows you the most recent queries. You can sort your history by date or by data source name in ascending or descending order.
1. Click the **Sort queries by** field.
2. Select one of the following options:
- Newest first
- Oldest first
- Data source A-Z
- Data source Z-A
> Note: If you are in split mode, then the chosen sorting mode applies only to the active panel.
### Filter query history
Filter query history in Query history and Starred tab by data source name:
1. Click the **Filter queries for specific data source(s)** field
2. Select the data source for which you would like to filter your history. You can select multiple data sources.
In **Query history** tab it is also possible to filter queries by date using the slider:
- Use vertical slider to filter queries by date.
- By dragging top handle, adjust start date.
- By dragging top handle, adjust end date.
> Note: If you are in split mode, filters are applied only to your currently active panel.
### Query history settings
You can customize the query history in the Settings tab. Options are described in the table below.
| Setting | Default value |
| ------------------------------------------------------------- | --------------------------------------- |
| Period of time for which Grafana will save your query history | 1 week |
| Change the default active tab | Query history tab |
| Only show queries for datasource currently active in Explore | False |
| Clear query history | Permanently deletes all stored queries. |
> Note: Query history settings are global, and applied to both panels in split mode.
## Prometheus-specific Features
The first version of Explore features a custom querying experience for Prometheus. When a query is executed, it actually executes two queries, a normal Prometheus query for the graph and an Instant Query for the table. An Instant Query returns the last value for each time series which shows a good summary of the data shown in the graph.
### Metrics Explorer
### Metrics explorer
On the left-hand side of the query field is a `Metrics` button, clicking on this opens the Metric Explorer. This shows a hierarchical menu with metrics grouped by their prefix. For example, all the Alert Manager metrics will be grouped under the `alertmanager` prefix. This is a good starting point if you just want to explore which metrics are available.
{{< docs-imagebox img="/img/docs/v65/explore_metric_explorer.png" class="docs-image--no-shadow" caption="Screenshot of the new Explore option in the panel menu" >}}
### Query Field
### Query field
The Query field supports autocomplete for metric names, function and works mostly the same way as the standard Prometheus query editor. Press the enter key to execute a query.
@@ -69,17 +128,18 @@ The autocomplete menu can be trigger by pressing Ctrl+Space. The Autocomplete me
Suggestions can appear under the query field - click on them to update your query with the suggested change.
* For counters (monotonically increasing metrics), a rate function will be suggested.
* For buckets, a histogram function will be suggested.
* For recording rules, possible to expand the rules.
- For counters (monotonically increasing metrics), a rate function will be suggested.
- For buckets, a histogram function will be suggested.
- For recording rules, possible to expand the rules.
### Table Filters
### Table filters
Click on the filter button <span title="Filter for label" class="logs-label__icon fa fa-search-plus"></span> in a labels column in the Table panel to add filters to the query expression. This works with multiple queries too - the filter will be added for all the queries.
## Logs Integration
## Logs integration
Along with metrics, Explore allows you to investigate your logs with the following data sources:
- [Loki](../datasources/loki)
- [InfluxDB](../datasources/influxdb)
- [Elasticsearch](../datasources/elasticsearch)
@@ -92,9 +152,9 @@ You can customize how logs are displayed and select which columns are shown.
Log data can be very repetitive and Explore can help by hiding duplicate log lines. There are a few different deduplication algorithms that you can use:
* `exact` Exact matches are done on the whole line, except for date fields.
* `numbers` Matches on the line after stripping out numbers (durations, IP addresses etc.).
* `signature` The most aggressive deduping - strips all letters and numbers, and matches on the remaining whitespace and punctuation.
- `exact` Exact matches are done on the whole line, except for date fields.
- `numbers` Matches on the line after stripping out numbers (durations, IP addresses etc.).
- `signature` The most aggressive deduping - strips all letters and numbers, and matches on the remaining whitespace and punctuation.
#### Time
@@ -108,7 +168,7 @@ Shows or hides the unique labels column that includes only non-common labels. Al
Set this to True if you want the display to use line wrapping. If set to False, it will result in horizontal scrolling.
### Labels and Parsed fields
### Labels and parsed fields
Each log row has an extendable area with its labels and parsed fields, for more robust interaction. For all labels we have added the ability to filter for (positive filter) and filter out (negative filter) selected labels. Each field or label also has a stats icon to display ad-hoc statistics in relation to all displayed logs.
@@ -118,7 +178,7 @@ As mentioned, one of the log integrations is for the new open source log aggrega
See [Loki's data source documentation](../datasources/loki) on how to query for log data.
#### Switching from Metrics to Logs
#### Switch from metrics to logs
If you switch from a Prometheus query to a logs query (you can do a split first to have your metrics and logs side by side) then it will keep the labels from your query that exist in the logs and use those to query the log streams. For example, the following Prometheus query:
+2 -2
View File
@@ -14,7 +14,7 @@ You can use links to navigate between commonly used dashboards. Links let you cr
Grafana supports three types of links: Dashboard Links, Panel Links, and Data Links. They are all available from your dashboard.
{{< docs-imagebox img="/static/assets/img/blog/dashboard_links.png" max-width="800px" caption="Links Supported in Grafana" >}}
{{< docs-imagebox img="/assets/img/blog/dashboard_links.png" max-width="800px" caption="Links Supported in Grafana" >}}
## Which link should you use?
@@ -38,7 +38,7 @@ Once you've added a dashboard link, it appears in the upper right corner of your
### Add links to dashboards
Add a links to other dashboards at the top of your current dashboard.
Add links to other dashboards at the top of your current dashboard.
1. While viewing the dashboard you want to link, click the gear at the top of the screen to open **Dashboard settings**.
1. Click **Links** and then click **Add Dashboard Link** or **New**.
+3 -3
View File
@@ -21,8 +21,8 @@ The Gauge is a single value panel that can repeat a gauge for every series, colu
* Calc
* Specify calculation / reducer function. Since this panel is designed to only show a single value Grafana needs to
know how to reduce a fields many values to a single value.
** Labels - Controls if thresholds values are shown.
** Markers - Controls if a thresholds band is shown outside the inner gauge value band.
* Labels - Controls if thresholds values are shown.
* Markers - Controls if a thresholds band is shown outside the inner gauge value band.
## Field
@@ -37,7 +37,7 @@ The Gauge is a single value panel that can repeat a gauge for every series, colu
### Thresholds
Define thresholds that will set the color of either the value or the background depending on your `Color` display option. The
thresholds are automatically sorted from lowerst value to highest. The `Base` value represents minus infinity.
thresholds are automatically sorted from lowest value to highest. The `Base` value represents minus infinity.
### Value mappings
+3 -3
View File
@@ -97,11 +97,11 @@ For **Mode** there are three options:
Additional values can be shown along-side the legend names:
- **Min** - Minimum of all values returned from metric query
- **Min** - Minimum of all values returned from the metric query
- **Max** - Maximum of all values returned from the metric query
- **Avg** - Average of all values returned from metric query
- **Avg** - Average of all values returned from the metric query
- **Current** - Last value returned from the metric query
- **Total** - Sum of all values returned from metric query
- **Total** - Sum of all values returned from the metric query
- **Decimals** - Controls how many decimals are displayed for legend values (and graph hover tooltips)
The legend values are calculated client side by Grafana and depend on what type of
+3 -3
View File
@@ -15,7 +15,7 @@ weight = 4
> New panel only available in Grafana v4.3+
The Heatmap panel allows you to view histograms over time. To fully understand and use this panel you need
The Heatmap panel allows you to view histograms over time. To fully understand and use this panel you need to
understand what Histograms are and how they are created. Read on below to for a quick introduction to the
term Histogram.
@@ -74,7 +74,7 @@ the time range `1h`. This will make the cells 1h wide on the X-axis.
### Pre-bucketed data
If you have a data that is already organized into buckets you can use the `Time series buckets` data format. This format
requires that your metric query return regular time series and that each time series has a numeric name that represent
requires that your metric query returns regular time series and that each time series has a numeric name that represents
the upper or lower bound of the interval.
There are a number of data sources supporting histogram over time like Elasticsearch (by using a Histogram bucket
@@ -108,7 +108,7 @@ change with the bucket count.
## Raw data vs aggregated
If you use the heatmap with regular time series data (not pre-bucketed). Then it's important to keep in mind that your data
is often already by aggregated by your time series backend. Most time series queries do not return raw sample data
is often already aggregated by your time series backend. Most time series queries do not return raw sample data
but include a group by time interval or maxDataPoints limit coupled with an aggregation function (usually average).
This all depends on the time range of your query of course. But the important point is to know that the Histogram bucketing
+1 -1
View File
@@ -33,7 +33,7 @@ The singlestat panel has a normal query editor to allow you define your exact me
* **diff** - The difference between 'current' (last value) and 'first'.
* **range** - The difference between 'min' and 'max'. Useful the show the range of change for a gauge.
2. **Prefix/Postfix**: The Prefix/Postfix fields let you define a custom label to appear *before/after* the value. The `$__name` variable can be used here to use the series name or alias from the metric query.
3. **Units**: Units are appended to the the Singlestat within the panel, and will respect the color and threshold settings for the value.
3. **Units**: Units are appended to the Singlestat within the panel, and will respect the color and threshold settings for the value.
4. **Decimals**: The Decimal field allows you to override the automatic decimal precision, and set it explicitly.
5. **Font Size**: You can use this section to select the font size of the different texts in the Singlestat Panel, i.e. prefix, value and postfix.
+4 -4
View File
@@ -11,7 +11,7 @@ type = "docs"
{{< docs-imagebox img="/img/docs/v66/stat_panel_dark3.png" max-width="1025px" caption="Stat panel" >}}
The stat panel is designed to show a big single stat values with an optional graph sparkline. You can control
The stat panel is designed to show a big single stat value with an optional graph sparkline. You can control
background or value color using thresholds.
## Display options
@@ -21,7 +21,7 @@ background or value color using thresholds.
* `All values` - Show a separate stat for every row.
* Calc
* Specify calculation / reducer function. Since this panel is designed to only show a single value Grafana needs to
know how to reduce a fields many values to a single value.
know how to reduce a field's many values to a single value.
* Orientation
* If your query returns multiple series or you have set **Show** to `All values` then the visualization will repeat for every series or row. This orientation option will control in what direction it will repeat.
* Color
@@ -39,7 +39,7 @@ background or value color using thresholds.
### Auto layout
The panel will try to auto adjust layout depending on width & height. The graph will also hide if the panel becomes
to small.
too small.
Example of stacked layout where graph is automatically hidden due to each stat being too small:
@@ -66,7 +66,7 @@ Example of value color mode:
### Thresholds
Define thresholds that will set the color of either the value or the background depending on your `Color` display option. The
thresholds are automatically sorted from lowerst value to highest. The `Base` value represents minus infinity.
thresholds are automatically sorted from lowest value to highest. The `Base` value represents minus infinity.
### Value mappings
+3 -22
View File
@@ -13,7 +13,7 @@ weight = 100
# Getting started
This guide will help you get started and acquainted with Grafana.
This guide will help you get started and acquainted with Grafana. To learn more about Grafana in general, refer to [What is Grafana?]({{< relref "what-is-grafana.md" >}}).
## Install Grafana
@@ -35,29 +35,9 @@ This step varies according to your computer operating system. Refer to the instr
Congratulations, you have gotten started with Grafana! You have a dashboard and are displaying results. Feel free to experiment with what you have built, continue on to add another data source, or explore [Next steps](#next-steps).
## Add a data source
{{< docs-imagebox img="/img/docs/v52/sidemenu-datasource.png" max-width="250px" class="docs-image--right docs-image--no-shadow">}}
Before you create your first real dashboard, you need to add your data source.
First 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. The first item on the configuration menu is data sources, click on that and you'll be taken to the data sources page where you can add and edit data sources. You can also simply click the cog.
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">}}
First, give the data source a Name and then select which Type of data source you'll want to create, see [Supported data sources]({{< relref "../features/datasources/#supported-data-sources/" >}}) for more information and how to configure your data source.
{{< docs-imagebox img="/img/docs/v52/datasource-settings.png" max-width="700px" class="docs-image--no-shadow">}}
After you have configured your data source you are ready to save and test.
## Next steps
There is so much you can do in Grafana, it can be hard to know where to begin. Your next steps will be different depending on whether you are using Grafana just for yourself or if you are an administrating Grafana for an organization.
Different user types will have different interests. Some suggestions are listed below, or refer to [What is Grafana?]({{< relref "what-is-grafana.md" >}}) for a general overview of Grafana features.
### All users
@@ -65,6 +45,7 @@ All users might want to learn about:
* [Panels]({{< relref "../features/panels/panels.md" >}})
* [Dashboards]({{< relref "../features/dashboard/dashboards.md" >}})
* [Data sources]({{< relref "../features/datasources/data-sources.md" >}}) and [Add a data source]({{< relref "../features/datasources/add-a-data-source.md" >}})
* [Keyboard shortcuts]({{< relref "../features/shortcuts.md" >}})
* [Explore workflow]({{< relref "../features/explore/index.md" >}})
* [Plugins](https://grafana.com/grafana/plugins?orderBy=weight&direction=asc)
+9 -9
View File
@@ -96,15 +96,15 @@ Here are some of the TSDBs supported by Grafana:
- [InfluxDB](https://www.influxdata.com/products/influxdb-overview/)
- [Prometheus](https://prometheus.io/)
```
weather,location=us-midwest temperature=82 1465839830100400200
| -------------------- -------------- |
| | | |
| | | |
+-----------+--------+-+---------+-+---------+
|measurement|,tag_set| |field_set| |timestamp|
+-----------+--------+-+---------+-+---------+
```
```
weather,location=us-midwest temperature=82 1465839830100400200
| -------------------- -------------- |
| | | |
| | | |
+-----------+--------+-+---------+-+---------+
|measurement|,tag_set| |field_set| |timestamp|
+-----------+--------+-+---------+-+---------+
```
### Collecting time series data
+93
View File
@@ -0,0 +1,93 @@
+++
title = "What is Grafana?"
description = "Overview of Grafana and features"
keywords = ["grafana", "intro", "guide", "started"]
type = "docs"
[menu.docs]
name = "What is Grafana?"
identifier = "what_is_grafana"
parent = "guides"
weight = 200
+++
# What is Grafana?
This topic provides a high-level look at Grafana, the Grafana process, and Grafana features. It's a good place to start if you want to learn more about Grafana software. To jump right in, refer to [Getting started]({{< relref "getting_started.md" >}}).
Grafana is open source visualization and analytics software. It allows you to query, visualize, alert on, and explore your metrics no matter where they are stored. In plain English, it provides you with tools to turn your time-series database (TSDB) data into beautiful graphs and visualizations.
After creating a dashboard like you do in [Getting started]({{< relref "getting_started.md" >}}), there are many possible things you might do next. It all depends on your needs and your use case.
For example, if you want to view weather data and statistics about your smart home, then you might create a playlist. If you are the administrator for a corporation and are managing Grafana for multiple teams, then you might need to set up provisioning and authentication.
The following sections provide an overview of things you might want to do with your Grafana database and links so you can learn more. For more guidance and ideas, check out the [Grafana Community forums](https://community.grafana.com/).
## Explore metrics and logs
Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.
Refer to [Explore]({{< relref "../features/explore/index.md" >}}) for more information.
## Alerts
If you're using Grafana alerting, then you can have alerts sent through a number of different [alert notifiers]({{< relref "../alerting/notifications.md" >}}), including PagerDuty, SMS, email, VictorOps, OpsGenie, or Slack.
Alert hooks allow you to create different notifiers with a bit of code if you prefer some other channels of communication. Visually define [alert rules]({{< relref "../alerting/rules.md" >}}) for your most important metrics.
## Annotations
Annotate graphs with rich events from different data sources. Hover over events to see the full event metadata and tags.
This feature, which shows up as a graph marker in Grafana, is useful for correlating data in case something goes wrong. You can create the annotations manually—just control-click on a graph and input some text—or you can fetch data from any data source.
Refer to [Annotations]({{< relref "../reference/annotations.md" >}}) for more information.
## Dashboard variables
[Template variables]({{< relref "../reference/templating.md" >}}) allow you to create dashboards that can be reused for lots of different use cases. Values aren't hard-coded with these templates, so for instance, if you have a production server and a test server, you can use the same dashboard for both.
Templating allows you to drill down into your data, say, from all data to North America data, down to Texas data, and beyond. You can also share these dashboards across teams within your organization—or if you create a great dashboard template for a popular data source, you can contribute it to the whole community to customize and use.
## Configure Grafana
If you're a Grafana administrator, then you'll want to thoroughly familiarize yourself with [Grafana configuration options]({{< relref "../installation/configuration.md" >}}) and the [Grafana CLI]({{< relref "../administration/cli.md" >}}).
Configuration covers both config files and environment variables. You can set up default ports, logging levels, email IP addresses, security, and more.
## Import dashboards and plugins
Discover hundreds of [dashboards](https://grafana.com/grafana/dashboards) and [plugins](https://grafana.com/grafana/plugins) in the official library. Thanks to the passion and momentum of community members, new ones are added every week.
## Authentication
Grafana supports different authentication methods, such as LDAP and OAuth, and allows you to map users to organizations. Refer to the [User authentication overview]({{< relref "../auth/overview.md" >}}) for more information.
In Grafana Enterprise, you can also map users to teams: If your company has its own authentication system, Grafana allows you to map the teams in your internal systems to teams in Grafana. That way, you can automatically give people access to the dashboards designated for their teams.
Refer to [Grafana Enterprise]({{< relref "../enterprise/_index.md" >}}) for more information.
## Provisioning
While it's easy to click, drag, and drop to create a single dashboard, power users in need of many dashboards will want to automate the setup with a script. You can script anything in Grafana.
For example, if you're spinning up a new Kubernetes cluster, you can also spin up a Grafana automatically with a script that would have the right server, IP address, and data sources preset and locked in so users cannot change them. It's also a way of getting control over a lot of dashboards.
Refer to [Provisioning]({{< relref "../administration/provisioning.md" >}}) for more information.
## Permissions
When organizations have one Grafana and multiple teams, they often want the ability to both keep things separate and share dashboards. You can create a team of users and then set [permissions]({{< relref "../permissions/overview.md" >}}) on folders, dashboards, and down to the [data source level]({{< relref "../enterprise/datasource_permissions.md" >}}) if you're using [Grafana Enterprise]({{< relref "../enterprise/_index.md" >}}).
## Grafana Cloud
Grafana Cloud is a highly available, fast, fully managed OpenSaaS logging and metrics platform. Everything you love about Grafana, but Grafana Labs hosts it for you and handles all the headaches.
[Learn more about Grafana Cloud.](https://grafana.com/cloud/)
## Grafana Enterprise
[Grafana Enterprise]({{< relref "../enterprise/_index.md" >}}) 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.
[Learn more about Grafana Enterprise](https://grafana.com/enterprise). To purchase Enterprise or obtain a trial license, contact the Grafana Labs [Sales Team](https://grafana.com/contact?about=support&topic=Grafana%20Enterprise).
+1 -1
View File
@@ -115,7 +115,7 @@ We also deprecated the `[dashboard.json]` in favor of our new dashboard provisio
in sync with dashboards in Grafana's database. The dashboard provisioner has multiple advantages over the old
`[dashboard.json]` feature. Instead of storing the dashboard in memory we now insert the dashboard into the database,
which makes it possible to star them, use one as the home dashboard, set permissions and other features in Grafana that
expects the dashboards to exist in the database. More info in the [dashboard provisioning docs](/administration/provisioning/#dashboards)
expects the dashboards to exist in the database. More info in the [dashboard provisioning docs]({{< relref "../administration/provisioning.md" >}})
## Graphite Tags and Integrated Function Docs
+96
View File
@@ -0,0 +1,96 @@
+++
title = "What's New in Grafana v6.7"
description = "Feature and improvement highlights for Grafana v6.7"
keywords = ["grafana", "new", "documentation", "6.7", "release notes"]
type = "docs"
[menu.docs]
name = "Version 6.7"
identifier = "v6.7"
parent = "whatsnew"
weight = -16
+++
# What's new in Grafana v6.7
This topic includes the release notes for the Grafana v6.7, which is currently in beta. For all details, read the full [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md).
Grafana 6.7 comes with a lot of new features and enhancements:
- [**Dashboard:** Enforce minimum refresh interval]({{< relref "#enforce-minimum-dashboard-refresh-interval" >}})
- **Data source:** Google Sheets data source
- [**Explore:** Query history]({{< relref "#query-history" >}})
- [**Authorization:** Azure OAuth]({{< relref "#azure-oauth" >}})
- [**Stackdriver:** Project Selector]({{< relref "#stackdriver-project-selector" >}})
- [**Enterprise:** White Labeling for application title]({{< relref "#white-labeling-for-application-title" >}})
- [**Enterprise:** Reporting configuration for timeout and concurrency]({{< relref "#reporting-configuration-for-timeout-and-concurrency" >}})
- [**Enterprise:** Export dashboard as pdf]({{< relref "#export-dashboard-as-pdf" >}})
- [**Enterprise:** Report landscape mode]({{< relref "#report-landscape-mode" >}})
- [**Enterprise:** Azure OAuth Team Sync support]({{< relref "#azure-oauth-team-sync-support" >}})
## General features
General features are included in all Grafana editions.
### Query history
> BETA: Query history is a beta feature. It is local to your browser and is not shared with others.
Query history is a new feature that lets you view and interact with the queries that you have previously run in Explore. You can add queries to the Explore query editor, write comments, create and share URL links, star your favorite queries, and much more. Starred queries are displayed in Starred tab, so it is easier to reuse queries that you run often without typing them from scratch.
Learn more about query history in [Explore]({{< relref "../features/explore" >}}).
{{< docs-imagebox img="/img/docs/v67/rich-history.gif" max-width="1024px" caption="Query history" >}}
### Azure OAuth
Grafana v6.7 comes with a new OAuth integration for Microsoft Azure Active Directory. You can now assign users and groups to Grafana roles from the Azure Portal. Learn how to enable and configure it in [Azure AD OAuth2 authentication]({{< relref "../auth/azuread/" >}}).
### Enforce minimum dashboard refresh interval
Allowing a low dashboard refresh interval can cause severe load on data sources and Grafana. Grafana v6.7 allows you to restrict the dashboard refresh interval so it cannot be set lower than a given interval. This provides a way for administrators to control dashboard refresh behavior on a global level.
Refer to min_refresh_interval in [Configuration]({{< relref "../installation/configuration#min-refresh-interval" >}}) for more information and how to enable this feature.
### Stackdriver project selector
A Stackdriver data source in Grafana is configured for one service account only. That service account is always associated with a default project in Google Cloud Platform (GCP). Depending on your setup in GCP, the service account might be granted access to more projects than just the default project.
In Grafana 6.7, the query editor has been enhanced with a project selector that makes it possible to query different projects without changing datasource. Many thanks [Eraac](https://github.com/Eraac), [eliaslaouiti](https://github.com/eliaslaouiti), and [NaurisSadovskis](https://github.com/NaurisSadovskis) for making this happen!
## Grafana Enterprise features
General features are included in the Grafana Enterprise edition software.
### White labeling customizes application title
This release adds a new white labeling option to customize the application title. Learn how to configure it in [White labeling]({{< relref "../enterprise/white-labeling/" >}}).
```
[white_labeling]
# Set to your company name to override application title
app_title = Your Company
```
### Configure reporting for timeout and concurrency
This release adds more configuration for the reporting feature rendering requests. You can set the panel rendering request timeout and the maximum number of concurrent calls to the rendering service in your configuration. Learn how to do it in [Reporting]({{< relref "../enterprise/reporting/" >}}).
```
[reporting]
# Set timeout for each panel rendering request
rendering_timeout = 10s
# Set maximum number of concurrent calls to the rendering service
concurrent_render_limit = 10
```
### Export dashboard as PDF
This feature allows you to export a dashboard as a PDF document. All dashboard panels will be rendered as images and added into the PDF document. Learn more in [Export dashboard as PDF]({{< relref "../enterprise/export-pdf/" >}}).
### Report landscape mode
You can now use either portrait or landscape mode in your reports. Portrait will render three panels per page and landscape two.
{{< docs-imagebox img="/img/docs/enterprise/reports_create_new.png" max-width="1024px" caption="New report" >}}
[Reporting]({{< relref "../enterprise/reporting/" >}}) has been updated as a result of this change.
### Azure OAuth Team Sync support
When setting up OAuth with Microsoft Azure AD, you can now sync Azure groups with Teams in Grafana.
Learn more in [Team sync]({{< relref "../enterprise/team-sync/" >}}).
+4 -1
View File
@@ -224,10 +224,13 @@ Content-Type: application/json
**Example Response**:
```http
HTTP/1.1 200
Content-Type: application/json
```
## Logout User
`POST /api/admin/users/:id/logout`
Logout user revokes all auth tokens (devices) for the user. User of issued auth tokens (devices) will no longer be logged in
+1 -1
View File
@@ -28,7 +28,7 @@ that you cannot use this API for retrieving information about the General folder
`GET /api/folders`
Returns all folders that the authenticated user has permission to view.
Returns all folders that the authenticated user has permission to view. You can control the maximum number of folders returned through the `limit` query parameter, the default is 1000.
**Example Request**:
+32 -7
View File
@@ -38,14 +38,22 @@ Content-Type: application/json
`GET /api/users/search?perpage=10&page=1&query=mygraf`
**Example Request**:
**Example Request**:
```http
GET /api/users/search?perpage=10&page=1&query=mygraf HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
Default value for the `perpage` parameter is `1000` and for the `page` parameter is `1`. The `totalCount` field in the response can be used for pagination of the user list E.g. if `totalCount` is equal to 100 users and the `perpage` parameter is set to 10 then there are 10 pages of users. The `query` parameter is optional and it will return results where the query value is contained in one of the `name`, `login` or `email` fields. Query values with spaces need to be URL encoded e.g. `query=Jane%20Doe`.
```
Requires basic authentication and that the authenticated user is a Grafana Admin.
**Example Response**:
```http
HTTP/1.1 200
Content-Type: application/json
{
@@ -80,14 +88,22 @@ Content-Type: application/json
**Example Request using the email as option**:
```http
GET /api/users/lookup?loginOrEmail=user@mygraf.com HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Request using the username as option**:
```http
GET /api/users/lookup?loginOrEmail=admin HTTP/1.1
Accept: application/json
```http
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
```
Requires basic authentication and that the authenticated user is a Grafana Admin.
**Example Response**:
@@ -127,7 +143,8 @@ Content-Type: application/json
**Example Request**:
Requires basic authentication and that the authenticated user is a Grafana Admin.
```http
GET /api/users/1/orgs HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4=
@@ -173,7 +190,8 @@ Content-Type: application/json
`GET /api/user`
Requires basic authentication and that the authenticated user is a Grafana Admin.
**Example Request**:
```http
GET /api/user HTTP/1.1
Accept: application/json
@@ -294,12 +312,19 @@ HTTP/1.1 200
## Teams that the actual User is member of
`GET /api/user/teams`
Return a list of all teams that the current user is member of.
**Example Request**:
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```http
GET /api/user/teams HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
**Example Response**:
```http
-166
View File
@@ -1,166 +0,0 @@
+++
title = "Running Grafana behind a reverse proxy"
description = "Guide for running Grafana behind a reverse proxy"
keywords = ["grafana", "nginx", "documentation", "haproxy", "reverse"]
type = "docs"
[menu.docs]
name = "Running Grafana behind a reverse proxy"
parent = "tutorials"
weight = 1
+++
# Running Grafana behind a reverse proxy
It should be straight forward to get Grafana up and running behind a reverse proxy. But here are some things that you might run into.
Links and redirects will not be rendered correctly unless you set the server.domain setting.
```bash
[server]
domain = foo.bar
```
To use sub *path* ex `http://foo.bar/grafana` make sure to include `/grafana` in the end of root_url.
Otherwise Grafana will not behave correctly. See example below.
## Examples
Here are some example configurations for running Grafana behind a reverse proxy.
### Grafana configuration (ex http://foo.bar)
```bash
[server]
domain = foo.bar
```
### Nginx configuration
Nginx is a high performance load balancer, web server and reverse proxy: https://www.nginx.com/
#### Nginx configuration with HTTP and Reverse Proxy enabled
```bash
server {
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
}
```
### Grafana configuration with hosting HTTPS in Nginx (ex https://foo.bar)
```bash
[server]
domain = foo.bar
root_url = https://foo.bar
```
#### Nginx configuration with HTTPS, Reverse Proxy, HTTP to HTTPS redirect and URL re-writes enabled
Instead of http://foo.bar:3000/?orgId=1, this configuration will redirect all HTTP requests to HTTPS and re-write the URL so that port 3000 isn't visible and will result in https://foo.bar/?orgId=1
```bash
server {
listen 80;
server_name foo.bar;
return 301 https://foo.bar$request_uri;
}
server {
listen 443 ssl http2;
server_name foo.bar;
root /usr/share/nginx/html;
index index.html index.htm;
ssl_certificate /etc/nginx/certs/foo_bar.crt;
ssl_certificate_key /etc/nginx/certs/foo_bar_decrypted.key;
ssl_protocols TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
rewrite /(.*) /$1 break;
proxy_pass http://localhost:3000/;
proxy_redirect off;
proxy_set_header Host $host;
}
}
```
### Examples with **sub path** (ex http://foo.bar/grafana)
#### Grafana configuration with sub path
```bash
[server]
domain = foo.bar
root_url = %(protocol)s://%(domain)s/grafana/
```
#### Nginx configuration with sub path
```bash
server {
listen 80;
root /usr/share/nginx/www;
index index.html index.htm;
location /grafana/ {
proxy_pass http://localhost:3000/;
}
}
```
#### HAProxy configuration with sub path
```bash
frontend http-in
bind *:80
use_backend grafana_backend if { path /grafana } or { path_beg /grafana/ }
backend grafana_backend
# Requires haproxy >= 1.6
http-request set-path %[path,regsub(^/grafana/?,/)]
# Works for haproxy < 1.6
# reqrep ^([^\ ]*\ /)grafana[/]?(.*) \1\2
server grafana localhost:3000
```
### IIS URL Rewrite Rule (Windows) with Subpath
IIS requires that the URL Rewrite module is installed.
Given:
- subpath `grafana`
- Grafana installed on `http://localhost:3000`
- server config:
```bash
[server]
domain = localhost:8080
root_url = %(protocol)s://%(domain)s/grafana/
```
Create an Inbound Rule for the parent website (localhost:8080 in this example) in IIS Manager with the following settings:
- pattern: `grafana(/)?(.*)`
- check the `Ignore case` checkbox
- rewrite URL set to `http://localhost:3000/{R:2}`
- check the `Append query string` checkbox
- check the `Stop processing of subsequent rules` checkbox
This is the rewrite rule that is generated in the `web.config`:
```xml
<rewrite>
<rules>
<rule name="Grafana" enabled="true" stopProcessing="true">
<match url="grafana(/)?(.*)" />
<action type="Rewrite" url="http://localhost:3000/{R:2}" logRewrittenUrl="false" />
</rule>
</rules>
</rewrite>
```
See the [tutorial on IIS URL Rewrites](http://docs.grafana.org/tutorials/iis/) for more in-depth instructions.
+15 -4
View File
@@ -81,8 +81,7 @@ export GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey
## instance_name
Set the name of the grafana-server instance. Used in logging and internal metrics and in
clustering info. Defaults to: `${HOSTNAME}`, which will be replaced with
Set the name of the grafana-server instance. Used in logging, internal metrics, and clustering info. Defaults to: `${HOSTNAME}`, which will be replaced with
environment variable `HOSTNAME`, if that is empty or does not exist Grafana will try to use
system calls to get the machine name.
@@ -450,6 +449,11 @@ Text used as placeholder text on login page for password input.
Grafana provides many ways to authenticate users. The docs for authentication has been split in to many different pages
below.
### oauth_state_cookie_max_age
How long the OAuth state cookie lives before being deleted. Default is `60` (seconds)
Administrators can increase it if they experience OAuth login state mismatch errors.
- [Authentication Overview]({{< relref "../auth/overview.md" >}}) (anonymous access options, hide login and more)
- [Google OAuth]({{< relref "../auth/google.md" >}}) (auth.google)
- [GitHub OAuth]({{< relref "../auth/github.md" >}}) (auth.github)
@@ -506,7 +510,7 @@ Number dashboard versions to keep (per dashboard). Default: `20`, Minimum: `1`.
> Only available in Grafana v6.7+.
When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is not set/unrestricted.
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`.
## [dashboards.json]
@@ -639,6 +643,8 @@ Syslog tag. By default, the process's `argv[0]` is used.
## [metrics]
For detailed instructions, refer to [Internal Grafana metrics]({{< relref "../administration/metrics.md" >}}).
### enabled
Enable metrics reporting. defaults true. Available via HTTP API `/metrics`.
@@ -816,6 +822,11 @@ URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render,
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/.
### concurrent_render_request_limit
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.
## [panels]
### disable_sanitize_html
@@ -844,7 +855,7 @@ for the full list. Environment variables will override any settings provided her
### address
The host:port destination for reporting spans. (ex: `localhost:6381`)
The host:port destination for reporting spans. (ex: `localhost:6831`)
Can be set with the environment variables `JAEGER_AGENT_HOST` and `JAEGER_AGENT_PORT`.
@@ -54,6 +54,8 @@ Grafana supports the following databases:
By default, Grafana installs with and uses SQLite, which is an embedded database stored in the Grafana installation location.
> NOTE: PostgreSQL versions 9.5.18, 9.4.23, 9.6.14, 10.9, 11.4, and 12-beta2 are affected by a bug (tracked by the PostgreSQL project as [bug #15865](https://www.postgresql.org/message-id/flat/15865-17940eacc8f8b081%40postgresql.org)) which prevents those versions from being used with Grafana. The bug has been fixed in more recent versions of PostgreSQL.
## Supported web browsers
Grafana is supported in the current version of the following browsers. Older versions of these browsers might not be supported, so you should always upgrade to the latest version when using Grafana.
+12 -1
View File
@@ -13,7 +13,7 @@ weight = 800
# Upgrade Grafana
We recommend that you upgrade Grafana often to stay up to date with the latest fixes and enhancements.
In order make this a reality, Grafana upgrades are backward compatible and the upgrade process is simple and quick.
In order to make this a reality, Grafana upgrades are backward compatible and the upgrade process is simple and quick.
Upgrading is generally safe (between many minor and one major version) and dashboards and graphs will look the same. There may be minor breaking changes in some edge cases, which are outlined in the [Release Notes](https://community.grafana.com/c/releases) and [Changelog](https://github.com/grafana/grafana/blob/master/CHANGELOG.md)
@@ -81,6 +81,7 @@ If you installed Grafana from our APT repository, then Grafana will automaticall
```bash
sudo apt-get update
sudo apt-get upgrade
```
#### Upgrade from binary .tar file
@@ -237,3 +238,13 @@ Due to this change in Chrome, the `[security]` setting `cookie_samesite` configu
This version of Chrome also rejects insecure `SameSite=None` cookies. See https://www.chromestatus.com/feature/5633521622188032 for more information. Make sure that you
change the `[security]` setting `cookie_secure` to `true` and use HTTPS when `cookie_samesite` is configured to `none`, otherwise authentication in Grafana won't work properly.
## Upgrading to v7.0
### PhantomJS removed
PhantomJS was deprecated in [Grafana v6.4](https://grafana.com/docs/grafana/latest/guides/whats-new-in-v6-4/#phantomjs-deprecation) and starting from Grafana v7.0.0, all PhantomJS support has been removed. This means that Grafana no longer ships with a built-in image renderer, and we adwise you to install the [Grafana Image Renderer plugin](https://grafana.com/grafana/plugins/grafana-image-renderer).
### Dashboard minimum refresh interval enforced
A global minimum dashboard refresh interval is now enforced and defaults to 5 seconds. Read more [here]({{< relref "configuration/#min-refresh-interval" >}}) about this setting.
+57 -54
View File
@@ -1,6 +1,8 @@
- name: Getting started
link: /guides/
children:
- name: What is Grafana?
link: /guides/what-is-grafana/
- name: Getting started
link: /guides/getting_started/
- name: Intro to time series
@@ -12,15 +14,15 @@
children:
- name: Requirements
link: /installation/requirements/
- name: Install on Ubuntu / Debian
- name: Install on Ubuntu/Debian
link: /installation/debian/
- name: Install on Centos / Redhat
- name: Install on Centos/RedHat/SUSE
link: /installation/rpm/
- name: Install on Windows
link: /installation/windows/
- name: Install on macOS
link: /installation/mac/
- name: Install using Docker
- name: Run Docker image
link: /installation/docker/
- name: Upgrade Grafana
link: /installation/upgrading/
@@ -54,6 +56,8 @@
name: GitHub
- link: /auth/gitlab/
name: GitLab
- link: /auth/okta/
name: Okta
- link: /auth/saml/
name: SAML
- link: /auth/team-sync/
@@ -68,13 +72,15 @@
- link: /permissions/dashboard_folder_permissions/
name: Dashboard and Folder
- link: /permissions/datasource_permissions/
name: Datasource
name: Data source
- name: Grafana CLI
link: /administration/cli/
- name: Internal metrics
link: /administration/metrics/
- name: Provisioning
link: /administration/provisioning/
- name: Set up Grafana for high availability
link: /tutorials/ha_setup/
- name: Troubleshooting
link: /installation/troubleshooting/
- name: Features
@@ -107,7 +113,7 @@
name: Dashboard list
- link: /features/panels/text/
name: Text
- name: Dashboard Features
- name: Dashboard features
link: /features/dashboard/
children:
- link: /features/dashboard/dashboards/
@@ -138,9 +144,11 @@
name: JSON Model
- link: /reference/scripting/
name: Scripted dashboards
- name: Data Sources
- name: Data sources
link: /features/datasources/
children:
- link: /features/datasources/add-a-data-source/
name: Add data source
- link: /features/datasources/cloudwatch/
name: AWS Cloudwatch
- link: /features/datasources/azuremonitor/
@@ -168,7 +176,7 @@
- link: /features/datasources/prometheus/
name: Prometheus
- link: /features/datasources/testdata/
name: Testdata
name: TestData DB
- name: Explore
link: /features/explore/
- name: Alerting
@@ -188,9 +196,11 @@
link: /features/reporting/
- name: Navigation links
link: /features/navigation-links/
- name: What's New In Grafana
- name: What's new in Grafana
link: /whatsnew/
children:
- name: Version 6.7
link: /guides/whats-new-in-v6-7/
- name: Version 6.6
link: /guides/whats-new-in-v6-6/
- name: Version 6.5
@@ -205,19 +215,19 @@
link: /guides/whats-new-in-v6-1/
- name: Version 6.0
link: /guides/whats-new-in-v6-0/
- name: Version 5.4
link: /guides/whats-new-in-v5-4/
- name: Version 5.3
link: /guides/whats-new-in-v5-3/
- name: Version 5.2
link: /guides/whats-new-in-v5-2/
- name: Version 5.1
link: /guides/whats-new-in-v5-1/
- name: Version 5.0
link: /guides/whats-new-in-v5/
- name: Old versions
link: /whatsnew/
children:
- name: Version 5.4
link: /guides/whats-new-in-v5-4/
- name: Version 5.3
link: /guides/whats-new-in-v5-3/
- name: Version 5.2
link: /guides/whats-new-in-v5-2/
- name: Version 5.1
link: /guides/whats-new-in-v5-1/
- name: Version 5.0
link: /guides/whats-new-in-v5/
- name: Version 4.6
link: /guides/whats-new-in-v4-6/
- name: Version 4.5
@@ -241,12 +251,12 @@
children:
- name: Overview
link: /enterprise/
- name: Reporting
link: /enterprise/reporting/
- name: Data source permissions
link: /enterprise/datasource_permissions/
- name: Enhanced LDAP
link: /enterprise/enhanced_ldap/
- name: Reporting
link: /enterprise/reporting/
- name: SAML authentication
link: /enterprise/saml/
- name: Team sync
@@ -255,19 +265,8 @@
link: /enterprise/white-labeling/
- name: License expiration
link: /enterprise/license-expiration/
- name: Tutorials
link: /tutorials/
children:
- name: Run Grafana behind a reverse proxy
link: /installation/behind_proxy/
- name: 'API Tutorial: How To Create API Tokens And Dashboards For A Specific Organization'
link: /tutorials/api_org_token_howto/
- name: Run Grafana with IIS Reverse Proxy on Windows
link: /tutorials/iis/
- name: Integrate Hubot and Grafana
link: /tutorials/hubot_howto/
- name: Set up Grafana for High availability
link: /tutorials/ha_setup/
- name: Export dashboard as PDF
link: /enterprise/export-pdf/
- name: Plugins
link: /plugins/
children:
@@ -298,56 +297,60 @@
name: Snapshot Mode
- link: /plugins/developing/plugin.json/
name: plugin.json Schema
- name: HTTP API
- name: HTTP APIs
link: /http_api/
children:
- name: API Authentication
link: /http_api/auth/
- name: Admin
- name: Create API Tokens and Dashboards for a Specific Organization
link: /tutorials/api_org_token_howto/
- name: Admin API
link: /http_api/admin/
- name: Alerting
- name: Alerting API
link: /http_api/alerting/
- name: Alerting Notification Channels
- name: Alerting Notifications API
link: /http_api/alerting_notification_channels/
- name: Annotations
- name: Annotations API
link: /http_api/annotations/
- name: Dashboard
- name: Dashboard API
link: /http_api/dashboard/
- name: Dashboard Permissions
- name: Dashboard Permissions API
link: /http_api/dashboard_permissions/
- name: Dashboard Versions
- name: Dashboard Versions API
link: /http_api/dashboard_versions/
- name: Data source
- name: Data Source API
link: /http_api/data_source/
- name: Datasource Permissions
- name: Data source Permissions API
link: /http_api/datasource_permissions/
- name: External Group Sync
- name: External Group Sync API
link: /http_api/external_group_sync/
- name: Folder
- name: Folder API
link: /http_api/folder/
- name: Folder Permissions
- name: Folder Permissions API
link: /http_api/folder_permissions/
- name: Folder/dashboard search
- name: Folder/Dashboard Search API
link: /http_api/folder_dashboard_search/
- name: Organization
- name: Organization API
link: /http_api/org/
- name: Other
- name: Other APIs
link: /http_api/other/
- name: Playlist
- name: Playlist API
link: /http_api/playlist/
- name: Preferences
- name: Preferences API
link: /http_api/preferences/
- name: Snapshot
- name: Snapshot API
link: /http_api/snapshot/
- name: Teams
- name: Teams API
link: /http_api/team/
- name: Users
- name: Users API
link: /http_api/user/
- name: Developers
link: /developers/
children:
- name: Developer resources
link: /developers/developer-resources/
- name: Packages reference
link: /packages_api/
- name: Contributor License Agreement (CLA)
link: /developers/cla/
- name: Docs Archive
+1 -1
View File
@@ -5,7 +5,6 @@
title = "API Reference"
keywords = ["grafana","documentation","sdk"]
type = "docs"
draft = true
+++
## API Reference
@@ -16,6 +15,7 @@ draft = true
| --- | --- |
| [@grafana/data](./data/) | A library containing most of the core functionality and data types used in Grafana. |
| [@grafana/e2e](./e2e/) | A library for writing end-to-end tests for Grafana and its ecosystem. |
| [@grafana/e2e-selectors](./e2e-selectors/) | A library containing the different design components of the Grafana ecosystem. |
| [@grafana/runtime](./runtime/) | A library containing services, configurations etc. used to interact with the Grafana engine. |
| [@grafana/ui](./ui/) | A library containing the different design components of the Grafana ecosystem. |
+86 -16
View File
@@ -5,7 +5,6 @@
title = "@grafana/data"
keywords = ["grafana","documentation","sdk","@grafana/data"]
type = "docs"
draft = true
+++
## @grafana/data package
@@ -27,9 +26,12 @@ A library containing most of the core functionality and data types used in Grafa
| [DataSourceApi](./datasourceapi/) | The main data source abstraction interface, represents an instance of a data source<!-- -->Although this is a class, datasource implementations do not \*yet\* need to extend it. As such, we can not yet add functions with default implementations. |
| [DataSourcePlugin](./datasourceplugin/) | |
| [FieldCache](./fieldcache/) | |
| [FieldConfigEditorBuilder](./fieldconfigeditorbuilder/) | Fluent API for declarative creation of field config option editors |
| [FieldConfigOptionsRegistry](./fieldconfigoptionsregistry/) | |
| [GrafanaPlugin](./grafanaplugin/) | |
| [LanguageProvider](./languageprovider/) | |
| [MutableDataFrame](./mutabledataframe/) | |
| [PanelOptionsEditorBuilder](./paneloptionseditorbuilder/) | Fluent API for declarative creation of panel options |
| [PanelPlugin](./panelplugin/) | |
| [Registry](./registry/) | |
| [ScaledVector](./scaledvector/) | |
@@ -46,11 +48,12 @@ A library containing most of the core functionality and data types used in Grafa
| [DataTransformerID](./datatransformerid/) | |
| [ExploreMode](./exploremode/) | |
| [FieldColorMode](./fieldcolormode/) | |
| [FieldConfigProperty](./fieldconfigproperty/) | |
| [FieldMatcherID](./fieldmatcherid/) | |
| [FieldType](./fieldtype/) | |
| [FrameMatcherID](./framematcherid/) | Field name matchers |
| [GrafanaThemeType](./grafanathemetype/) | |
| [LoadingState](./loadingstate/) | |
| [LoadingState](./loadingstate/) | Represent panel data loading state. |
| [LogLevel](./loglevel/) | Mapping of log level abbreviation to canonical log level. Supported levels are reduce to limit color variation. |
| [LogsDedupDescription](./logsdedupdescription/) | |
| [LogsDedupStrategy](./logsdedupstrategy/) | |
@@ -60,10 +63,11 @@ A library containing most of the core functionality and data types used in Grafa
| [NullValueMode](./nullvaluemode/) | |
| [OrgRole](./orgrole/) | |
| [PluginIncludeType](./pluginincludetype/) | |
| [PluginSignatureStatus](./pluginsignaturestatus/) | |
| [PluginState](./pluginstate/) | |
| [PluginType](./plugintype/) | |
| [ReducerID](./reducerid/) | |
| [ThresholdsMode](./thresholdsmode/) | |
| [ThresholdsMode](./thresholdsmode/) | Display mode |
| [VariableOrigin](./variableorigin/) | |
| [VariableSuggestionsScope](./variablesuggestionsscope/) | |
| [VizOrientation](./vizorientation/) | |
@@ -79,6 +83,7 @@ A library containing most of the core functionality and data types used in Grafa
| [calculateFieldStats(rows, extractor)](./calculatefieldstats/) | |
| [calculateLogsLabelStats(rows, label)](./calculatelogslabelstats/) | |
| [calculateStats(values)](./calculatestats/) | |
| [doStandardCalcs(field, ignoreNulls, nullAsZero)](./dostandardcalcs/) | |
| [eventFactory(name)](./eventfactory/) | |
| [findCommonLabels(labelsSets)](./findcommonlabels/) | Returns a map labels that are common to the given label sets. |
| [findHighlightChunksInText({ searchWords, textToHighlight, })](./findhighlightchunksintext/) | Adapt findMatchesInText for react-highlight-words findChunks handler. See https://github.com/bvaughn/react-highlight-words\#props |
@@ -104,6 +109,7 @@ A library containing most of the core functionality and data types used in Grafa
| [getValueFormatterIndex()](./getvalueformatterindex/) | |
| [grafanaDataFrameToArrowTable(data)](./grafanadataframetoarrowtable/) | |
| [guessFieldTypeForField(field)](./guessfieldtypeforfield/) | Looks at the data to guess the column type. This ignores any existing setting |
| [guessFieldTypeFromNameAndValue(name, v)](./guessfieldtypefromnameandvalue/) | Given a name and value, this will pick a reasonable field type |
| [guessFieldTypeFromValue(v)](./guessfieldtypefromvalue/) | Given a value this will guess the best column type<!-- -->TODO: better Date/Time support! Look for standard date strings? |
| [locale(value, decimals)](./locale/) | |
| [parseFlags(text)](./parseflags/) | Converts any mode modifiers in the text to the Javascript equivalent flag |
@@ -131,35 +137,41 @@ A library containing most of the core functionality and data types used in Grafa
| [toNumberString(value)](./tonumberstring/) | |
| [transformDataFrame(options, data)](./transformdataframe/) | Apply configured transformations to the input data |
| [updateDatasourcePluginOption(props, key, val)](./updatedatasourcepluginoption/) | |
| [updateDatasourcePluginResetOption(props, key)](./updatedatasourcepluginresetoption/) | |
| [validateFieldConfig(config)](./validatefieldconfig/) | This checks that all options on FieldConfig make sense. It mutates any value that needs fixed. In particular this makes sure that the first threshold value is -Infinity (not valid in JSON) |
| [vectorator(vector)](./vectorator/) | Use functional programming with your vector |
## Interfaces
| Interface | Description |
| --- | --- |
| [AbsoluteTimeRange](./absolutetimerange/) | |
| [AngularPanelMenuItem](./angularpanelmenuitem/) | |
| [AnnotationEvent](./annotationevent/) | |
| [AnnotationQueryRequest](./annotationqueryrequest/) | Options passed to the datasource.annotationQuery method. See docs/plugins/developing/datasource.md |
| [AppEvent](./appevent/) | |
| [ApplyFieldOverrideOptions](./applyfieldoverrideoptions/) | |
| [AppPluginMeta](./apppluginmeta/) | |
| [AppRootProps](./approotprops/) | |
| [ArrowDataFrame](./arrowdataframe/) | |
| [BuildInfo](./buildinfo/) | Describes the build information that will be available via the Grafana configuration. |
| [CalculateFieldTransformerOptions](./calculatefieldtransformeroptions/) | |
| [ColorFieldConfigSettings](./colorfieldconfigsettings/) | |
| [Column](./column/) | |
| [ConfigOverrideRule](./configoverriderule/) | |
| [CreatePlotOverlay](./createplotoverlay/) | |
| [CSVConfig](./csvconfig/) | |
| [CSVOptions](./csvoptions/) | |
| [CSVParseCallbacks](./csvparsecallbacks/) | |
| [DataConfigSource](./dataconfigsource/) | Describes and API for exposing panel specific data configurations. |
| [DataFrame](./dataframe/) | |
| [DataFrameDTO](./dataframedto/) | Like a DataFrame, but fields may be a FieldDTO |
| [DataLink](./datalink/) | Link configuration. The values may contain variables that need to be processed before running |
| [DataLinkClickEvent](./datalinkclickevent/) | Callback info for DataLink click events |
| [DataQuery](./dataquery/) | |
| [DataLinksFieldConfigSettings](./datalinksfieldconfigsettings/) | |
| [DataQuery](./dataquery/) | These are the common properties available to all queries in all datasources Specific implementations will extend this interface adding the required properties for the given context |
| [DataQueryError](./dataqueryerror/) | |
| [DataQueryRequest](./dataqueryrequest/) | |
| [DataQueryResponse](./dataqueryresponse/) | |
| [DataQueryTimings](./dataquerytimings/) | |
| [DataSourceConstructor](./datasourceconstructor/) | |
| [DataSourceInstanceSettings](./datasourceinstancesettings/) | Frontend settings model that is passed to Datasource constructor. This differs a bit from the model above as this data model is available to every user who has access to a data source (Viewers+). This is loaded in bootData (on page load), or from: /api/frontend/settings |
| [DataSourceJsonData](./datasourcejsondata/) | |
@@ -174,6 +186,9 @@ A library containing most of the core functionality and data types used in Grafa
| [DateTimeBuiltinFormat](./datetimebuiltinformat/) | |
| [DateTimeDuration](./datetimeduration/) | |
| [DateTimeLocale](./datetimelocale/) | |
| [DateTimeOptions](./datetimeoptions/) | |
| [DateTimeOptionsWhenParsing](./datetimeoptionswhenparsing/) | |
| [DateTimeOptionsWithFormat](./datetimeoptionswithformat/) | |
| [DecimalInfo](./decimalinfo/) | |
| [Dimension](./dimension/) | |
| [DisplayValue](./displayvalue/) | |
@@ -181,19 +196,20 @@ A library containing most of the core functionality and data types used in Grafa
| [DynamicConfigValue](./dynamicconfigvalue/) | |
| [ExploreQueryFieldProps](./explorequeryfieldprops/) | |
| [ExploreStartPageProps](./explorestartpageprops/) | |
| [FeatureToggles](./featuretoggles/) | Describes available feature toggles in Grafana. These can be configured via the <code>conf/custom.ini</code> to enable features under development or not yet available in stable version. |
| [Field](./field/) | |
| [FieldCalcs](./fieldcalcs/) | |
| [FieldColor](./fieldcolor/) | |
| [FieldConfig](./fieldconfig/) | Every property is optional<!-- -->Plugins may extend this with additional properties. Something like series overrides |
| [FieldConfigEditorConfig](./fieldconfigeditorconfig/) | |
| [FieldConfigEditorProps](./fieldconfigeditorprops/) | |
| [FieldConfigPropertyItem](./fieldconfigpropertyitem/) | |
| [FieldConfigSource](./fieldconfigsource/) | |
| [FieldDisplay](./fielddisplay/) | |
| [FieldDisplayOptions](./fielddisplayoptions/) | |
| [FieldDTO](./fielddto/) | Like a field, but properties are optional and values may be a simple array |
| [FieldMatcherInfo](./fieldmatcherinfo/) | |
| [FieldOverrideContext](./fieldoverridecontext/) | |
| [FieldOverrideEditorProps](./fieldoverrideeditorprops/) | |
| [FieldPropertyEditorItem](./fieldpropertyeditoritem/) | |
| [FieldReducerInfo](./fieldreducerinfo/) | |
| [FieldWithIndex](./fieldwithindex/) | |
| [FilterFieldsByNameTransformerOptions](./filterfieldsbynametransformeroptions/) | |
@@ -202,12 +218,14 @@ A library containing most of the core functionality and data types used in Grafa
| [FormattedValue](./formattedvalue/) | |
| [FrameMatcherInfo](./framematcherinfo/) | |
| [GetFieldDisplayValuesOptions](./getfielddisplayvaluesoptions/) | |
| [GrafanaConfig](./grafanaconfig/) | Describes all the different Grafana configuration values available for an instance. |
| [GrafanaTheme](./grafanatheme/) | |
| [GrafanaThemeCommons](./grafanathemecommons/) | |
| [GraphSeriesXY](./graphseriesxy/) | View model projection of a series |
| [HistoryItem](./historyitem/) | |
| [IntervalValues](./intervalvalues/) | |
| [Labels](./labels/) | |
| [LicenseInfo](./licenseinfo/) | Describes the license information about the current running instance of Grafana. |
| [LinkModel](./linkmodel/) | Processed Link Model. The values are ready to use |
| [LinkModelSupplier](./linkmodelsupplier/) | Provides a way to produce links on demand<!-- -->TODO: ScopedVars in in GrafanaUI package! |
| [LogLabelStatsModel](./loglabelstatsmodel/) | |
@@ -220,13 +238,17 @@ A library containing most of the core functionality and data types used in Grafa
| [MetadataInspectorProps](./metadatainspectorprops/) | |
| [MetricFindValue](./metricfindvalue/) | |
| [MutableVector](./mutablevector/) | Vector with standard manipulation functions |
| [NavModel](./navmodel/) | |
| [NavModel](./navmodel/) | Interface used to describe different kinds of page titles and page navigation. Navmodels are usually generated in the backend and stored in Redux. |
| [NavModelBreadcrumb](./navmodelbreadcrumb/) | |
| [NavModelItem](./navmodelitem/) | |
| [NumberFieldConfigSettings](./numberfieldconfigsettings/) | |
| [OrganizeFieldsTransformerOptions](./organizefieldstransformeroptions/) | |
| [PanelData](./paneldata/) | |
| [PanelEditorProps](./paneleditorprops/) | |
| [PanelMenuItem](./panelmenuitem/) | |
| [PanelModel](./panelmodel/) | |
| [PanelOptionsEditorConfig](./paneloptionseditorconfig/) | |
| [PanelOptionsEditorItem](./paneloptionseditoritem/) | |
| [PanelOptionsEditorProps](./paneloptionseditorprops/) | |
| [PanelPluginMeta](./panelpluginmeta/) | |
| [PanelProps](./panelprops/) | |
| [PluginBuildInfo](./pluginbuildinfo/) | |
@@ -242,9 +264,12 @@ A library containing most of the core functionality and data types used in Grafa
| [QueryHint](./queryhint/) | |
| [QueryResultBase](./queryresultbase/) | |
| [QueryResultMeta](./queryresultmeta/) | |
| [QueryResultMetaNotice](./queryresultmetanotice/) | QueryResultMetaNotice is a structure that provides user notices for query result data |
| [QueryResultMetaStat](./queryresultmetastat/) | |
| [RangeMap](./rangemap/) | |
| [RawTimeRange](./rawtimerange/) | |
| [ReadWriteVector](./readwritevector/) | Apache arrow vectors are Read/Write |
| [ReduceDataOptions](./reducedataoptions/) | Options for how to turn DataFrames into an array of display values |
| [ReduceTransformerOptions](./reducetransformeroptions/) | |
| [RegistryItem](./registryitem/) | |
| [RegistryItemWithOptions](./registryitemwithoptions/) | |
@@ -253,18 +278,30 @@ A library containing most of the core functionality and data types used in Grafa
| [ScopedVars](./scopedvars/) | |
| [ScreenshotInfo](./screenshotinfo/) | |
| [SelectableValue](./selectablevalue/) | Used in select elements |
| [SelectFieldConfigSettings](./selectfieldconfigsettings/) | |
| [SeriesToColumnsOptions](./seriestocolumnsoptions/) | |
| [StandardEditorProps](./standardeditorprops/) | |
| [StandardEditorsRegistryItem](./standardeditorsregistryitem/) | |
| [StringFieldConfigSettings](./stringfieldconfigsettings/) | |
| [TableData](./tabledata/) | |
| [TextMatch](./textmatch/) | |
| [Threshold](./threshold/) | |
| [ThresholdsConfig](./thresholdsconfig/) | |
| [ThresholdsConfig](./thresholdsconfig/) | Config that is passed to the ThresholdsEditor |
| [ThresholdsFieldConfigSettings](./thresholdsfieldconfigsettings/) | |
| [TimeOption](./timeoption/) | |
| [TimeOptions](./timeoptions/) | |
| [TimeRange](./timerange/) | |
| [TimeSeries](./timeseries/) | |
| [TransformerRegistyItem](./transformerregistyitem/) | |
| [TransformerUIProps](./transformeruiprops/) | |
| [UnitFieldConfigSettings](./unitfieldconfigsettings/) | |
| [UserOrgDTO](./userorgdto/) | |
| [ValueFormat](./valueformat/) | |
| [ValueFormatCategory](./valueformatcategory/) | |
| [ValueLinkConfig](./valuelinkconfig/) | |
| [ValueMap](./valuemap/) | |
| [ValueMappingFieldConfigSettings](./valuemappingfieldconfigsettings/) | |
| [VariableModel](./variablemodel/) | |
| [VariableSuggestion](./variablesuggestion/) | |
| [Vector](./vector/) | |
| [YAxis](./yaxis/) | |
@@ -282,10 +319,19 @@ A library containing most of the core functionality and data types used in Grafa
| Variable | Description |
| --- | --- |
| [booleanOverrideProcessor](./booleanoverrideprocessor/) | |
| [createDimension](./createdimension/) | |
| [createOrderFieldsComparer](./createorderfieldscomparer/) | |
| [DataLinkBuiltInVars](./datalinkbuiltinvars/) | |
| [dataLinksOverrideProcessor](./datalinksoverrideprocessor/) | |
| [dateTime](./datetime/) | |
| [dateTimeAsMoment](./datetimeasmoment/) | |
| [dateTimeFormat](./datetimeformat/) | |
| [dateTimeFormatISO](./datetimeformatiso/) | |
| [dateTimeFormatTimeAgo](./datetimeformattimeago/) | |
| [dateTimeFormatWithAbbrevation](./datetimeformatwithabbrevation/) | |
| [dateTimeForTimeZone](./datetimefortimezone/) | |
| [dateTimeParse](./datetimeparse/) | |
| [DEFAULT\_DATE\_TIME\_FORMAT](./default_date_time_format/) | |
| [DEFAULT\_FIELD\_DISPLAY\_VALUES\_LIMIT](./default_field_display_values_limit/) | |
| [DefaultTimeRange](./defaulttimerange/) | |
@@ -315,31 +361,48 @@ A library containing most of the core functionality and data types used in Grafa
| [getValueFromDimension](./getvaluefromdimension/) | |
| [guessFieldTypes](./guessfieldtypes/) | |
| [hasMsResolution](./hasmsresolution/) | Checks if series time field has ms resolution |
| [identityOverrideProcessor](./identityoverrideprocessor/) | |
| [isDataFrame](./isdataframe/) | |
| [isDateTime](./isdatetime/) | |
| [ISO\_8601](./iso_8601/) | |
| [isTableData](./istabledata/) | |
| [locationUtil](./locationutil/) | |
| [LogsParsers](./logsparsers/) | |
| [MISSING\_VALUE](./missing_value/) | |
| [MS\_DATE\_TIME\_FORMAT](./ms_date_time_format/) | |
| [numberOverrideProcessor](./numberoverrideprocessor/) | |
| [objRemoveUndefined](./objremoveundefined/) | |
| [onUpdateDatasourceJsonDataOption](./onupdatedatasourcejsondataoption/) | |
| [onUpdateDatasourceJsonDataOptionChecked](./onupdatedatasourcejsondataoptionchecked/) | |
| [onUpdateDatasourceJsonDataOptionSelect](./onupdatedatasourcejsondataoptionselect/) | |
| [onUpdateDatasourceOption](./onupdatedatasourceoption/) | |
| [onUpdateDatasourceResetOption](./onupdatedatasourceresetoption/) | |
| [onUpdateDatasourceSecureJsonDataOption](./onupdatedatasourcesecurejsondataoption/) | |
| [onUpdateDatasourceSecureJsonDataOptionSelect](./onupdatedatasourcesecurejsondataoptionselect/) | |
| [selectOverrideProcessor](./selectoverrideprocessor/) | |
| [setLocale](./setlocale/) | |
| [setTimeZoneResolver](./settimezoneresolver/) | |
| [standardEditorsRegistry](./standardeditorsregistry/) | |
| [standardFieldConfigEditorRegistry](./standardfieldconfigeditorregistry/) | |
| [standardTransformers](./standardtransformers/) | |
| [standardTransformersRegistry](./standardtransformersregistry/) | Registry of transformation options that can be driven by stored configuration files. |
| [stringOverrideProcessor](./stringoverrideprocessor/) | |
| [textUtil](./textutil/) | |
| [thresholdsOverrideProcessor](./thresholdsoverrideprocessor/) | |
| [TIME\_FORMAT](./time_format/) | |
| [timeZoneAbbrevation](./timezoneabbrevation/) | |
| [toDataFrame](./todataframe/) | |
| [toDuration](./toduration/) | |
| [toLegacyResponseData](./tolegacyresponsedata/) | |
| [toPascalCase](./topascalcase/) | |
| [toUtc](./toutc/) | |
| [transformersRegistry](./transformersregistry/) | |
| [unEscapeStringFromRegex](./unescapestringfromregex/) | |
| [unitOverrideProcessor](./unitoverrideprocessor/) | |
| [updateDatasourcePluginJsonDataOption](./updatedatasourcepluginjsondataoption/) | |
| [updateDatasourcePluginResetOption](./updatedatasourcepluginresetoption/) | |
| [updateDatasourcePluginSecureJsonDataOption](./updatedatasourcepluginsecurejsondataoption/) | |
| [urlUtil](./urlutil/) | |
| [valueMappingsOverrideProcessor](./valuemappingsoverrideprocessor/) | |
| [VAR\_CALC](./var_calc/) | |
| [VAR\_CELL\_PREFIX](./var_cell_prefix/) | |
| [VAR\_FIELD\_NAME](./var_field_name/) | |
@@ -354,14 +417,15 @@ A library containing most of the core functionality and data types used in Grafa
| [DataQueryResponseData](./dataqueryresponsedata/) | |
| [DataSourceOptionsType](./datasourceoptionstype/) | |
| [DataSourceQueryType](./datasourcequerytype/) | |
| [DataTransformer](./datatransformer/) | Immutable data transformation |
| [DataTransformer](./datatransformer/) | Function that transform data frames (AKA transformer) |
| [DateTimeFormatter](./datetimeformatter/) | |
| [DateTimeInput](./datetimeinput/) | |
| [DateTimeParser](./datetimeparser/) | |
| [DecimalCount](./decimalcount/) | |
| [Dimensions](./dimensions/) | |
| [DisplayProcessor](./displayprocessor/) | |
| [DurationInput](./durationinput/) | |
| [DurationUnit](./durationunit/) | |
| [FieldConfigEditorRegistry](./fieldconfigeditorregistry/) | |
| [FieldMatcher](./fieldmatcher/) | |
| [FormatInput](./formatinput/) | |
| [FrameMatcher](./framematcher/) | |
@@ -372,9 +436,10 @@ A library containing most of the core functionality and data types used in Grafa
| [LinkTarget](./linktarget/) | |
| [MutableField](./mutablefield/) | |
| [NavIndex](./navindex/) | |
| [Omit](./omit/) | |
| [Omit\_2](./omit_2/) | |
| [PanelMigrationHandler](./panelmigrationhandler/) | Called when a panel is first loaded with current panel model |
| [PanelTypeChangedHandler](./paneltypechangedhandler/) | Called before a panel is initialized |
| [PanelOptionEditorsRegistry](./paneloptioneditorsregistry/) | |
| [PanelTypeChangedHandler](./paneltypechangedhandler/) | Called before a panel is initialized. Allows panel inspection for any updates before changing the panel type. |
| [ScaleCalculator](./scalecalculator/) | |
| [Subtract](./subtract/) | |
| [TimeFragment](./timefragment/) | |
@@ -382,7 +447,12 @@ A library containing most of the core functionality and data types used in Grafa
| [TimeSeriesValue](./timeseriesvalue/) | |
| [TimeZone](./timezone/) | |
| [TimeZoneBrowser](./timezonebrowser/) | |
| [TimeZoneResolver](./timezoneresolver/) | |
| [TimeZoneUtc](./timezoneutc/) | |
| [UrlQueryMap](./urlquerymap/) | Type to represent the values parsed from the query string. |
| [UrlQueryValue](./urlqueryvalue/) | Type to represent the value of a single query variable. |
| [ValueConverter](./valueconverter/) | |
| [ValueFormatter](./valueformatter/) | |
| [ValueMapping](./valuemapping/) | |
| [VariableType](./variabletype/) | |

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