Compare commits

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

* new random walk options

* fixed test

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

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

* shellcheck

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

* fix error in prep job

* save msi for testing

* get enterprise zip

* Fixes to version and hash detection.

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

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

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

Fixes #20243

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

* Revert data format with children

* Update test

* Revert styles

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

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

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

* Fix broken tests

* Use a smaller max period for auto interval

* Fix broken tests

* Test period calculation

* Test min retention period

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

* tinkering with flex-grow

* fixed layout

* align select and button

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

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

* Removed ng-annotate

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

* Removed redundant import

… that is problematic with Babel's module resolver

* Updated lockfile

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

* Change tslint-loade order in dev webpack config

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

* wip: refactoring

* Update metric find queries

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

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

* Remove old filter

* Remove not used code

* Fixes after pr feedback

* Fix broken tests and add new metadata tests

* Add index file to make imports cleaner

* Cleanup. Remove old angular filter code

* Fix broken tests

* Use type switching instead of if statements

* Use globals for regex

* Updates after pr feedback

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

* Replace metric select with segment component

* Pass template vars as props

* Refactor meta labels code

* Reorder template variables

* Fix broken tests

* Reset metric value when changing service

* Fix lint issue.

* Make tests independant of element order

* Include kubernetes.io in regex

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

This reverts commit 6e412d88c9.

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

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

* components img uploader - pass the ctx to aws lib

* make webdavuploader use the ctx

* make azureblobuploader use the ctx

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

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

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

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

* fix lint

* fixes after review

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

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

* build: renamed msi generator directory

* build: build and deploy enterprise msi

* Build: placeholder license file for enterprise

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

* Change name of old cascader

* Add basic cascader without search

* Add basic cascader without search

* Flatten options to make it searchable

* Add regex search and make backspace work

* Add barebone search without styles

* Add SearchResult list

* Add search navigation

* Rewrite of cascader and add some things to SelectBase

* Make SelectBase controlllable

* Cleanup

* Add initial value functionality

* Add onblur to hand caret direction

* New storyboom format for ButtonCascader

* Add knobs to story

* Add story and docs for UnitPicker

* Make UnitPicker use Cascader

* Fix backspace issue and empty value

* Fix backspace issue for real

* Remove unused code

* Fix focus issue

* Change children to items and remove ButtonCascaderProps

* Remove local CascaderOption

* Fix failed test

* Revert UnitPicker changes and change format for ButtonCascader

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

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

* Progress

* progress

* Updated styling

* Updated default home dashboard

* Update light card styles

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

Reviewed and edited macOS install instructions.

* Updated mac.md and configuration.md

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

* Update mac.md

Updated to reflect the new fields on the Downloads page

* Update mac.md

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

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

* replace lib

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

* remove caret

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

* Add support for ES2019 features

* Build task: path.resolve → resolvePath

* Build task: avoid fs race conditions

* Build task: use async fs functions

* Build task: use rimraf directly

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

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

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

* Cleanup

* Break out non annontations specific fields

* Cleanup. Make annontations editor a functional component

* Remove redundant classnames

* Add paneldata to props

* Cleanup

* Fix rebase merge problem

* Updates after pr feedback

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

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

Fixes #18644 

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

* update snapshot

* Readd border on pageheader

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

Ref #21350

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

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

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

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

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

* update commands

* update readme command

* remove container when test finishes

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

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

* Refactorings after feedback.

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

* use const for range

* likely not differnt

* send the right orgId

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

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

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

* Introduce UI modifications

* Update docs

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

* storybook example

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

* Update rpm.md

* Moved content to troubleshooting

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

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update rpm.md

* Update docs/sources/installation/rpm.md

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

* Update docs/sources/installation/rpm.md

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

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

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

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

* admin user page: basic view

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

* admin user: change sessions actions styles

* admin user: add disable button

* user admin: add change grafana admin action

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

* user admin: confirm force logout

* user admin: change org button style

* user admin: add confirm modals for critical actions

* user admin: lock down ldap user info

* user admin: align with latest design changes

* user admin: add LDAP sync

* admin user: confirm button

* user admin: add to org modal

* user admin: fix ConfirmButton story

* admin user: handle grafana admin change

* ConfirmButton: make styled component

* ConfirmButton: completely styled component

* User Admin: permissions section refactor

* admin user: refactor (orgs and sessions)

* ConfirmButton: able to set confirm variant

* admin user: inline org removal

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

* admin user: edit profile

* ConfirmButton: some fixes after review

* Chore: fix storybook build

* admin user: rename handlers

* admin user: remove LdapUserPage import from routes

* Chore: fix ConfirmButton tests

* Chore: fix user api endpoint tests

* Chore: update failed test snapshots

* admin user: redux actions WIP

* admin user: use new ConfirmModal component for user profile

* admin user: use new ConfirmModal component for sessions

* admin user: use lockMessage

* ConfirmButton: use primary button as default

* admin user: fix ActionButton color

* UI: use Icon component for Modal

* UI: refactor ConfirmModal after Modal changes

* UI: add link button variant

* UI: able to use custom ConfirmButton

* Chore: fix type errors after ConfirmButton refactor

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

* Chore: use Forms.Button instead of ActionButton

* admin user: align items

* admin user: align add to org modal

* UI: organization picker component

* admin user: use org picker for AddToOrgModal

* admin user: org actions

* admin user: connect sessions actions

* admin user: updateUserPermissions action

* admin user: enable delete user action

* admin user: sync ldap user

* Chore: refactor, remove unused code

* Chore: refactor, move api calls to actions

* admin user: set user password action

* Chore: refactor, remove unused components

* admin user: set input focus on edit

* admin user: pass user into debug LDAP mapping

* UserAdminPage: Ux changes

* UserAdminPage: align buttons to the left

* UserAdminPage: align delete user button

* UserAdminPage: swap add to org modal buttons

* UserAdminPage: set password field to empty when editing

* UserAdminPage: fix tests

* Updated button border

* Chore: fix ConfirmButton after changes introduced in #21092

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

* update links

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

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

* introduce tyings and refactor accordingly

* extract setting celltype

* update tests to reflect changes

* removing unused things

* renaming getCellType -> getCellDisplayType

* fix width type error

* remove caret

* move cell back to utils, fix story

* remove unused import

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

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

* Renamed file

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

* Typescript and test fixes

* Fixed justify center logic

* Updated test dashboard

* Updated test dashboard

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

* Fixed color issue

* removed text shadow

* Removed unused stuff

* Fixed auto min max

* Fixed strict typescript issues

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

* Refactor: Uses configureStore from Redux Toolkit

* Refactor: Migrates applicationReducer

* Refactor: Migrates appNotificationsReducer

* Refactor: Migrates locationReducer

* Refactor: Migrates navModelReducer

* Refactor: Migrates teamsReducer and teamReducer

* Refactor: Migrates cleanUpAction

* Refactor: Migrates alertRulesReducer

* Refactor: Cleans up recursiveCleanState

* Refactor: Switched to Angular compatible reducers

* Refactor: Migrates folderReducer

* Refactor: Migrates dashboardReducer

* Migrates panelEditorReducer

* Refactor: Migrates dataSourcesReducer

* Refactor: Migrates usersReducer

* Refactor: Migrates organizationReducer

* Refactor: Migrates pluginsReducer

* Refactor: Migrates ldapReducer and ldapUserReducer

* Refactor: Migrates apiKeysReducer

* Refactor: Migrates exploreReducer and itemReducer

* Refactor: Removes actionCreatorFactory and reducerFactory

* Refactor: Moves mocks to test section

* Docs: Removes sections about home grown framework

* Update contribute/style-guides/redux.md

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

* Refactor: Cleans up some code

* Refactor: Adds state typings

* Refactor: Cleans up typings

* Refactor: Adds comment about ImmerJs autoFreeze

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

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

* Removed unused dependency.

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

Added Commands and code section.

* Update documentation-style-guide.md

* Update documentation-style-guide.md

Added code block examples

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

* cancellable promise

* cancel promise on unmount

* use new datasource funcs for dryer component

* event handler funcs

* updated funcs and moved to utils, updating config editors

* S has no keys. never will never work

* remove report json

* update azure snapshot

* DataSourceSettings keyof

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

* Updated plugins installation documentation

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

* Update cli.md

* Update cli.md

* Update docs/sources/administration/cli.md

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

* Update docs/sources/administration/cli.md

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

* Update docs/sources/http_api/user.md

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

* Update docs/sources/http_api/user.md

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

* Update cli.md

* Fixed links

* Update cli.md

* Update cli.md

* Update cli.md

* Update cli.md

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

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

* Update debian.md

* Update debian.md

* Update debian.md

* Update debian.md

* Update debian.md

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

Replaces #18013
Fixes #12650

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

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

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

* Refactor redirect_to cookie with secure flag in api/login

* Refactor redirect_to cookie with secure flag in api/login_oauth

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

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

* Add HttpOnly flag on redirect_to cookies where missing

* Refactor duplicated code

* Add tests

* Refactor cookie options

* Replace local function for deleting cookie

* Delete redundant calls

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

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

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

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

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

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

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

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

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

* replace tabs in pageheader

* splitting two different types of tabitems

* fix index and conditionals in tabs

* redo tabs to not render anchor links

* rename to className and use cx to combine classes

* reverting back to a simpler use case

* moving type to types file

* fix import

* redoing Tabs to simpler composition components

* pr feedback

* update snapshot

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

* table panel migrations

* added tests

* default column style is now auto

* tests and fixtures...

* wrong comments need removing

* xss guard

* test

* Some test for invalid options, formatting.

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

* Export type

* Updates

* Use footer links in help menu

* Updates & Fixes

* Updated snapshot

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

* modified boolean condition

* converted most occurring string into const

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

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

* plugin loading refactor

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

* simplify plugin descriptors

* target sdk v0.5.0

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

* cancellable promise

* cancel promise on unmount

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

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

* Docs: re-structured apt install docs

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Docs: improvements based on feedback

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

* Docs: repo -> repository

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

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

* Added buildCategories & tests

* Added phantom plugins

* fixed tests

* Minor changes, force enterprise plugins to enterprise category

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

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

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

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

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

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

* Update security.md

* Update docs/sources/installation/security.md

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

* Update security.md

* Update security.md

* Update security.md

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

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

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

fixes #11240

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

Minor edits and fixed stacked heading issue.

* Update docs/sources/http_api/alerting_notification_channels.md

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

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

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

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

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

* Disable mid-word suggestions

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

* Update basic_concepts.md

* Fix REF_NOT_FOUND errors

* add shortcode

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

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

* Updated per comments

* Fixed broken links in basic_concepts.md

* Revert "Fixed broken links in basic_concepts.md"

This reverts commit e524ea9e7b.

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

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

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

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

* Apply suggestions from code review

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

* Grammar fixes

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

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

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

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

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

* Improve tooltip for _Min step_

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

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

* Fixed snapshot

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

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

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

* fix html

* Add a test to ensure default severity is correct

* Notifications doc

* Add a non-default test

* Add err check on NewJson (all tests)

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

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

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

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

* Fix label suggestions

* Correct brace behavior, but broken completion

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

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

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

* Explore: updates toolbar, adds add new row button

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

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

* Explore: updates query row actions snapshot

* Explore: updates styles

* Explore: updates query row, removes latency

* Explore: updates query row actions, removed latency

* Explore: updates query row actions test and snapshot

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

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

* Explore: updates styles for add query row button responsiveness

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

* Explore: updates query row actions snapshot

* Explore: removes overall latency

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

* Explore: updates query row actions snapshot

* Explore: moves styles from scss to emotion

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

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

* Explore: adds prometheus explore query editor

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

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

* Explore: updates prom explore query editor to include history

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

* Explore: updates step spacing in prom explore query editor

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

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

* Explore: updates promql cheat sheet with step description

* Explore: updates prom cheat sheet  step description

* Explore: updates styles - adds query row break class

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

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

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

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

* Use applyFieldOverrides outside in story instead

* Change types a bit

* Table: Move to flexible layout

* Simplest possible custom field option

* Skip default column

* Added textAlign

* Explore: Set display processor for table data frame

* Fixed storybook

* Refactoring

* Progress on cell display mode

* Major progress

* Progress & refactoring

* Fixes

* Updated tests

* Added more tests

* Table: Progress on cell style customization

* Restored testdata random walk table scenario

* put back unrelated change

* remove unused things

* Updated table story

* Renamed property

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

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

* Update docs/sources/enterprise/_index.md

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

* Fixed white theme and added 2 unit tests

* Added another demo dashboard

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

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

* TimePicker: first draft on narrow screen variant.

* TimePicker: small adjustments to the narrow design.

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

* TimePicker: applied some more styling.

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

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

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

* TimePicker: made the calendar have previous selected value.

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

* TimePicker: calendar is now displayed onFocus or onClick.

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

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

* Calendar: made it work properly with narrow screen.

* TimePicker: connected recent to absolute time range.

* TimePicker: changed the label on recent ranges.

* TimePicker: cleaned up the range list and options.

* TimePicker: some more cleaning up.

* TimePicker: cleaned up the calendar a bit.

* TimePicker: some more refactorings.

* TimePicker: refactorings.

* TimePicker: styled modal properly.

* TimePicker: empty recent list.

* TimePicker: width when calendar in full screen.

* TimePicker: will validate input value.

* TimePicker: removed unused code.

* TimePicker: positioning with emotion instead of sass.

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

* TimePicker: fixed theme.

* TimePicker: fixed positioning of the content.

* TimePicker: positioning of narrow.

* TimePicker: added some simple tets.

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

* TimePicker: added history.

* TimePicker: cleaned up snapshot data.

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

* TimePicker: fixed the missing styling on UTC.

* TimePicker: added missing caret icon.

* TimePicker: fixed formatting on recent time ranges.

* TimePicker: added missing -.

* TimePicker: refactorings after feedback.

* TimePicker: renamed reserved prop name.

* TimePicker: added missing onChange call.

* TimePicker: removed alternative return type.

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

* TimePicker: added useCallback for the onEvent functions.

* TimePicker: moving away from default export.

* TimePicker: used the isMathString instead of private function.

* TimePicker: minor refactoring simplify the code.

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

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

* TimePicker: updated snapshots for failing tests.

* Fixed shadow

* Move it down a bit

* added some more tests.

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

* removed memo.

* fixed snapshot.

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

* Fixed form background.

* Some minor fixes after demo.

* Making sure that empty info box is centered.

* updated snapshots for timepicker after css changes.

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

* adjusted final things on the time picker.

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

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

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

* added xss check for single series tooltop color.

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

* Update docs/sources/features/reporting.md

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

* Toolkit: Refactor webpack to utilize async-await

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

* Update contribute/style-guides/e2e.md

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

* Update packages/grafana-e2e/README.md

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

* Docs: Changes after PR comments

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

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

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

* Add sanitize-url package

* Enable config mocking

* Sanitize datalinks urls

* Update public/app/core/config.ts

* Minor test update

* Remove sanitize-url dependency

* Remove typings

* Review update

* Revert "Remove sanitize-url dependency"

This reverts commit c4f38e6de6.

* Revert "Remove typings"

This reverts commit 676d47e8c2.

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

* Support sorting, adding types while waiting for official ones

* using react-window for windowing

* styles via emotion

* sizing

* set an offset for the table

* change table export

* fixing table cell widths

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

* Explore: Use new table component in explore

* enable oncellclick

* only let filterable columns be clickable, refactor renderrow

* remove explore table

* Keep using old merge tables logic

* prettier

* remove unused typings file

* fixing tests

* Fixed explore table issue

* NewTable: Updated styles

* Fixed unit test

* Updated TableModel

* Minor update to explore table height

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

* Refactor: Restructures exported Pages somewhat

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

* Refactor: Finish migrating templating e2e tests to new framework

* Refactor: Changes after merge with master

* Refactor: Removes weird change

* Refactor: Adds duplication test

* Refactor: Adds move down and move up variable asserts

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

* Chore: Normalize windows path for webpack plugin test

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

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

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

* added queries

* PanelEditor: copy panel model when going into edit mode

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

* Refactor: Removes async

* Refactor: Adds video and reverts CIRCLE_SHA2 to CIRCLE_SHA1

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

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

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

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

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

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

* find datasource default workspace in returned workspace list

* don't need the find

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

* copy azure monitor creds to log analystics for sameas

* alert

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

* remove menu and submenu

* improve layout templates, improve README

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* fix typo

* remove layouts

* update readme, makefile

* update docs command

* Update docs/README.md

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

* Update docs/README.md

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

* Update docs/README.md

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

* Removed leftover

* Tesing

* removed reporter

* set max workers 2

* another test

* Fixed unit test

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

* UI: add link button variant

* UI: add ConfirmButton story with delete option

* Chore: use ConfirmButton instead of DeleteButton

* UI: remove DeleteButton

* UI: rename confirmButtonVariant to confirmVariant

* UI: use Form.Button in ConfirmButton

* Chore: use sm ConfirmButton size after changing defaults

* Revert "UI: add link button variant"

This reverts commit 4372350daa.

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

* UI: DeleteButton component on top of ConfirmButton

* Chore: use DeleteButton instead of ConfirmButton

* Chore: DeleteButton, use md size by default

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

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

* Updated test

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

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

* Update docs/sources/installation/configuration.md

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

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

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

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

* Document the change.

* feat: UI for configuring OpenTSDB lookup limit.

* Apply prettier.

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

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

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

* Added prop to satisfy interface

* Review feedback

* removed comment

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

* Tests: Updates snapshots

* Refactor: Changes after PR comments

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

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

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

* Fix segment clickaway bug

* Fix onchange

* Use primitive in cloudwatch

* Add placeholder

* Use placeholder in cloudwatch editor

* Fix lint error

* Fix lodash import

* Use new component story format

* Add support for autofocus

* Use selectable value for onchange event

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

* fix unit test

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

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

* UI: refactor ConfirmModal after Modal changes

* UI: use Icon component for Modal

* UI: ConfirmModal tests

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

* e2e: Adds documentation

* Docs: Adds link to e2e framework from contributing

* Docs: Updates after PR comments

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

* Update contribute/style-guides/e2e.md

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

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

* e2e: Adds more log output

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

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

* Raise dynamic lookup threshold to 10000 metrics

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

* Add checkbox component

* Style tweaks

* Namespace form styles returned from getFormStyles

* wip

* Radio button ui

* Add simple docs for RadioButtonGroup

* Merge fix

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

* Tests: Runs e2e tests

* Refactor: Adds BASE_URL support

* Refactor: Adds namespacing

* Refactor: Cleans up the Page api

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

* Build: Hardcoded image for now

* Refactor: Uses Selectors in App

* Refactor: Adds addDataSource flow

* WIP

* Refactor: Adds e2eScenario

* Refactor: Adds add and delete scenarios

* Refactor: Adds logging

* Refactor: Adds ability to for Selectors with variables

* Refactor: Using variable selectors instead

* Refactor: Adds flow until Share Panel

* Refactor: Adds clicking on rendered image link

* Refactor: Deletes log output

* Refactor: Updates snapshots

* Chore: Reverts changes

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

* Refactor: Adds rendered image download

* Refactor: Adds image comparison

* Refactor: Removes uncaught errors override

* Refactor: Changes order of images to compare

* Refactor: Updates truth image

* Build: Updates path to CI artifacts

* Refactor: Cleaning up types and config

* wip

* Refactor: Cleans up external api

* Refactor: More cleanup

* Refactor: More cleanup

* Refactor: Removes usages of Pages and Flows

* Refactor: Removes last traces of Cypress in spec

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

* Fixes behavior and adds tests

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

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

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

* Rename story

* Cleanup

* Fix lint error

* More cleanup

* Use measure text util

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

* Rename story

* Cleanup

* Fix lint error

* More cleanup

* Export ui component

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

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

* updated docs

Updated per Torkel's comments

* Update debian.md

Added wget to common properties install command

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Update docs/sources/installation/debian.md

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

* Apply suggestions from code review

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

* Update upgrading.md

* Update upgrading.md

* Update debian.md

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

* Fixed dashboardSrv issue

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

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

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

* Custom meta when adding event

* Rename consumer to backend

* Remove buffer from Echo

* Minor tweaks

* Update package.json

* Update public/app/app.ts

* Update public/app/app.ts

* Collect paint metrics when collecting tti. Remove echoBackendFactory

* Update yarn.lock

* Move Echo interfaces to runtime

* progress on meta and echo

* Collect meta analytics events

* Move MetaanalyticsBackend to enterprise repo

* Fixed unit tests

* Removed unused type from test

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

* Restored changes

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

* post testing cleanup

* init promise cancellation, other cleanup

* workspaces response parser, remove version incrementing

* update datasource funcs - DRYer

* remove prop mutation

* func to modify root config opt

* fix version issue

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

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

* Remove time field from query for docs queries

* Test refactor to test all versions

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

* remove trigger-docs-update from circleci jobs

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

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

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

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

* FieldDisplay: refactoring of test setup to reduce duplication.

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

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

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

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

* Add test to verify new behavior

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

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

* update fixed

* update fixed

* don't change any tests

* add mising space

* Custom unit formats

* return a string for kbn

* return a string for kbn

* return a string for kbn

* Simplify unit tests

* More units

* fix more tests

* fix more tests

* fix more tests

* format values

* format values

* TimeSeries to string

* more kbn tests

* use the formatted value

* BarGauge: Fixed font size calculations

* support prefix

* add si support

* avoid npe

* BarGauge/BigValue: value formatting

* fix some tests

* fix tests

* remove displayDateFormat

* another unicode char

* Graph: Use react unit picker

* Updated unit picker

* Fixed build errors

* more formatting

* graph2 tooltip formatting

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

* Improve modal overflow behavior

* Updated modal backdrop

* Renamed type

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

Thoroughly read through and edited requirements.md

* Update requirements.md

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

* update readme: OpsGenie alert tags support

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

* Add checkbox component

* Style tweaks

* Namespace form styles returned from getFormStyles

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

Fixes #12076

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

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

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

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

* Fixed formatting

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

* removed question template

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

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

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

* Changed options to string based

* -Fixed tests

* Refactoring moving files

* Refactoring alignment factors

* Added alignment factors

* Added basic test

* Added unit test for layout

* Font size handling

* Font sizing works

* Progress on sizing

* Updated

* Minor update

* Updated

* Updated

* Removed line option

* updated

* Updated

* Updated

* Updated

* Highlight last point

* Fixed tests

* Code refactoring and cleanup

* updated

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

fixes #20658

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

* Chore: Changes version to canary

* Chore: Changes version to 6.6.0-pre
2019-11-28 03:47:48 -08:00
1761 changed files with 173075 additions and 64836 deletions
+96 -35
View File
@@ -1,3 +1,5 @@
version: 2.1
aliases:
# Workflow filters
- &filter-only-release
@@ -14,8 +16,6 @@ aliases:
branches:
only: master
version: 2
jobs:
mysql-integration-test:
docker:
@@ -125,14 +125,17 @@ jobs:
- node_modules
- run:
name: run end-to-end tests
command: 'env BASE_URL=http://127.0.0.1:3000 yarn e2e-tests'
command: 'env BASE_URL=http://127.0.0.1:3000 yarn e2e-tests:ci'
no_output_timeout: 5m
- store_artifacts:
path: public/e2e-test/screenShots/theTruth
path: public/e2e-tests/screenShots/theTruth
destination: expected-screenshots
- store_artifacts:
path: public/e2e-test/screenShots/theOutput
path: public/e2e-tests/screenShots/theOutput
destination: output-screenshots
- store_artifacts:
path: public/e2e-tests/videos
destination: output-videos
- run:
name: ci job failed
command: './scripts/ci-job-failed.sh'
@@ -164,14 +167,17 @@ jobs:
- node_modules
- run:
name: run end-to-end tests
command: 'env BASE_URL=http://127.0.0.1:3000 yarn e2e-tests'
command: 'env BASE_URL=http://127.0.0.1:3000 yarn e2e-tests:ci'
no_output_timeout: 5m
- store_artifacts:
path: public/e2e-test/screenShots/theTruth
path: public/e2e-tests/screenShots/theTruth
destination: expected-screenshots
- store_artifacts:
path: public/e2e-test/screenShots/theOutput
path: public/e2e-tests/screenShots/theOutput
destination: output-screenshots
- store_artifacts:
path: public/e2e-tests/videos
destination: output-videos
- run:
name: ci job failed
command: './scripts/ci-job-failed.sh'
@@ -240,6 +246,8 @@ jobs:
- run:
name: frontend tests
command: './scripts/circle-test-frontend.sh'
- store_test_results:
path: reports/junit
- run:
name: ci job failed
command: './scripts/ci-job-failed.sh'
@@ -429,6 +437,40 @@ jobs:
command: './scripts/ci-job-succeeded.sh'
when: on_success
build-docs-website:
docker:
- image: grafana/build-container:1.2.13
working_directory: /docs
steps:
- checkout
- setup_remote_docker
- run:
name: ci job started
command: './scripts/ci-job-started.sh'
- run:
name: install docker
command: |
apt-get update
apt-get install -y docker.io
- run:
name: build grafana docs website
command: |
# https://circleci.com/docs/2.0/building-docker-images/#mounting-folders
# create a dummy container which will hold a volume with config
docker create -v /hugo/content/docs/grafana --name docs-website alpine:3.4 /bin/true
# copy a config file into this volume
docker cp ${PWD}/docs/sources docs-website:/hugo/content/docs/grafana/latest
# start an application container using this volume
docker run --volumes-from docs-website --rm -it grafana/docs-base:latest /bin/bash -c 'npm i && make prod'
- run:
name: ci job failed
command: 'docker stop docs-website && docker rm docs-website && ./scripts/ci-job-failed.sh'
when: on_fail
- run:
name: ci job succeeded
command: 'docker stop docs-website && docker rm docs-website && ./scripts/ci-job-succeeded.sh'
when: on_success
build-fast-package:
docker:
- image: grafana/build-container:1.2.13
@@ -950,35 +992,24 @@ jobs:
command: './scripts/ci-job-succeeded.sh'
when: on_success
store-build-artifacts:
build-ee-msi:
docker:
- image: circleci/node:12
steps:
- attach_workspace:
at: .
- store_artifacts:
path: ./dist
trigger-docs-update:
docker:
- image: circleci/python:3.6.8
- image: grafana/wix-toolset-ci:v3
steps:
- checkout
- run:
name: ci job started
command: './scripts/ci-job-started.sh'
- attach_workspace:
at: .
- run:
name: Trigger Docs update
command: |
if git diff --name-only HEAD^ | grep -q "^docs"; then
echo "Build URL:"
curl -s -u "$DOCS_CIRCLE_TOKEN:" \
-d build_parameters[CIRCLE_JOB]=pull-submodule-changes \
https://circleci.com/api/v1.1/project/github/grafana/docs.grafana.com/tree/master \
| jq .build_url
else
echo "-- no changes to docs files --"
fi
name: Build EE MSI
command: './scripts/build/ci-msi-build/ci-msi-build-ee.sh'
- persist_to_workspace:
root: .
paths:
- enterprise-dist/grafana-*.msi
- enterprise-dist/grafana-*.msi.sha256
- run:
name: ci job failed
command: './scripts/ci-job-failed.sh'
@@ -988,6 +1019,15 @@ jobs:
command: './scripts/ci-job-succeeded.sh'
when: on_success
store-build-artifacts:
docker:
- image: circleci/node:12
steps:
- attach_workspace:
at: .
- store_artifacts:
path: ./dist
build-grafana-packages:
docker:
- image: circleci/node:12
@@ -1092,7 +1132,6 @@ jobs:
- $HOME/.cache/trivy
workflows:
version: 2
build-master:
jobs:
- build-all:
@@ -1160,6 +1199,7 @@ workflows:
- mysql-integration-test
- postgres-integration-test
- build-all-enterprise
- build-ee-msi
filters: *filter-only-master
- build-oss-msi:
requires:
@@ -1172,14 +1212,21 @@ workflows:
- mysql-integration-test
- postgres-integration-test
filters: *filter-only-master
- build-ee-msi:
requires:
- build-all-enterprise
- test-backend
- test-frontend
- codespell
- lint-go
- shellcheck
- mysql-integration-test
- postgres-integration-test
filters: *filter-only-master
- end-to-end-test:
requires:
- grafana-docker-master
filters: *filter-only-master
- trigger-docs-update:
requires:
- end-to-end-test
filters: *filter-only-master
- release-next-packages:
requires:
- build-all
@@ -1229,6 +1276,7 @@ workflows:
- shellcheck
- mysql-integration-test
- postgres-integration-test
- build-ee-msi
filters: *filter-only-release
- grafana-docker-release:
requires:
@@ -1277,6 +1325,17 @@ workflows:
- mysql-integration-test
- postgres-integration-test
filters: *filter-only-release
- build-ee-msi:
requires:
- build-all-enterprise
- test-backend
- test-frontend
- codespell
- lint-go
- shellcheck
- mysql-integration-test
- postgres-integration-test
filters: *filter-only-release
- end-to-end-test-release:
requires:
- grafana-docker-release
@@ -1347,6 +1406,8 @@ workflows:
- postgres-integration-test
- cache-server-test
filters: *filter-not-release-or-master
- build-docs-website:
filters: *filter-not-release-or-master
nightly:
triggers:
- schedule:
+16
View File
@@ -0,0 +1,16 @@
# Lines starting with '#' are comments.
# Each line is a file pattern followed by one or more owners.
# More details are here: https://help.github.com/articles/about-codeowners/
# The '*' pattern is global owners.
# Order is important. The last matching pattern has the most precedence.
# The folders are ordered as follows:
# In each subsection folders are ordered first by depth, then alphabetically.
# This should make it easy to add new rules without breaking existing ones.
# Documentation owner: Diana Payton
/docs/ @oddlittlebird
/contribute/ @oddlittlebird @marcusolsson
-14
View File
@@ -1,14 +0,0 @@
---
name: Support request
about: 'Question or support request relating to using Grafana'
title: ''
labels: ''
assignees: ''
---
STOP -- PLEASE READ!
GitHub is not the right place for questions and support requests.
Please ask questions on our community site: [https://community.grafana.com/](https://community.grafana.com/)
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Questions & Help
url: https://community.grafana.com
about: Please ask and answer questions here.
@@ -0,0 +1,7 @@
FROM alpine
RUN apk update
RUN apk add rsync git bash
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Sean Middleditch
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
@@ -0,0 +1,60 @@
publish-to-git
==============
[GitHub Action](https://github.com/features/actions) for publishing a directory
and its contents to another git repository.
This can be especially useful for publishing static website, such as with
[GitHub Pages](https://pages.github.com/), from built files in other job
steps, such as [Doxygen](http://www.doxygen.nl/) generated HTML files.
**NOTE**: GitHub currently requires the use of a Personal Access Token for
pushing to other repositories. Pushing to the current repository should work
with the always-available GitHub Token (available via
`{{ secrets.GITHUB_TOKEN }}`. If pushing to another repository, a Personal
Access Token will need to be [created](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line) and assigned to the
workflow [secrets](https://help.github.com/en/articles/virtual-environments-for-github-actions#creating-and-using-secrets-encrypted-variables).
Inputs
------
- `repository`: Destination repository (default: current repository).
- `branch`: Destination branch (required).
- `host`: Destination git host (default: `github.com`).
- `github_token`: GitHub Token (required; use `secrets.GITHUB_TOKEN`).
- `github_pat`: Personal Access Token or other https credentials.
- `source_folder`: Source folder in workspace to copy (default: workspace root).
- `target_folder`: Target folder in destination branch to copy to (default: repository root).
- `commit_author`: Override commit author (default: `{github.actor}@users.noreply.github.com`).
- `commit_message`: Set commit message (default: `[workflow] Publish from [repository]:[branch]/[folder]`).
- `dry_run`: Does not push if non-empty (default: empty).
- `working_directory`: Location to checkout repository (default: random location in `${HOME}`)
Outputs
-------
- `commit_hash`: SHA hash of the new commit.
- `working_directory`: Working directory of git clone of repository.
License
-------
MIT License. See [LICENSE](LICENSE) for details.
Usage Example
-------------
```yaml
jobs:
publish:
- uses: actions/checkout@master
- run: |
sh scripts/build-doxygen-html.sh --out static/html
- uses: seanmiddleditch/gha-publish-to-git@master
with:
branch: gh-pages
github_token: '${{ secrets.GITHUB_TOKEN }}'
github_pat: '${{ secrets.GH_PAT }}'
source_folder: static/html
if: success() && github.event == 'push'
```
@@ -0,0 +1,60 @@
---
name: publish-to-git
description: 'Publish files to a git repository'
branding:
icon: 'git-commit'
color: 'blue'
inputs:
repository:
description: 'Destination repository (default: current repository)'
default: ''
branch:
description: 'Destination branch'
required: true
host:
description: 'Destination git host'
default: 'github.com'
github_token:
description: 'GitHub Token (use `secrets.GITHUB_TOKEN`)'
required: true
github_pat:
description: 'Personal Access Token or other https credentials'
default: ''
source_folder:
description: 'Source folder in workspace to copy (default: workspace root)'
defaault: ''
target_folder:
description: 'Target folder in destination branch to copy to (default: repository root)'
default: ''
commit_author:
description: 'User Name <email@address> (default: [github.actor]@users.noreply.github.com)'
default: ''
commit_message:
description: 'Commit message (default: [workflow] Publish from [repository]:[branch]/[folder])'
default: ''
dry_run:
description: 'Do not push to repository (set to non-empty string to make dry-run)'
default: ''
working_directory:
description: 'Working directory for clone (default: random location in `${HOME}`)'
default: ''
outputs:
commit_hash:
description: 'Hash of the new commit'
working_directory:
description: 'Working directory of temporary repository'
runs:
using: 'docker'
image: 'Dockerfile'
args:
- ${{ inputs.repository }}
- ${{ inputs.branch }}
- ${{ inputs.host }}
- ${{ inputs.github_token }}
- ${{ inputs.github_pat }}
- ${{ inputs.source_folder }}
- ${{ inputs.target_folder }}
- ${{ inputs.commit_author }}
- ${{ inputs.commit_message }}
- ${{ inputs.dry_run }}
- ${{ inputs.working_directory }}
@@ -0,0 +1,99 @@
#/bin/bash
# Name the Docker inputs.
#
INPUT_REPOSITORY="$1"
INPUT_BRANCH="$2"
INPUT_HOST="$3"
INPUT_GITHUB_TOKEN="$4"
INPUT_GITHUB_PAT="$5"
INPUT_SOURCE_FOLDER="$6"
INPUT_TARGET_FOLDER="$7"
INPUT_COMMIT_AUTHOR="$8"
INPUT_COMMIT_MESSAGE="$9"
INPUT_DRYRUN="${10}"
INPUT_WORKDIR="${11}"
# Check for required inputs.
#
[ -z "$INPUT_BRANCH" ] && echo >&2 "::error::'branch' is required" && exit 1
[ -z "$INPUT_GITHUB_TOKEN" -a -z "$INPUT_GITHUB_PAT" ] && echo >&2 "::error::'github_token' or 'github_pat' is required" && exit 1
# Set state from inputs or defaults.
#
REPOSITORY="${INPUT_REPOSITORY:-${GITHUB_REPOSITORY}}"
BRANCH="${INPUT_BRANCH}"
HOST="${INPUT_GIT_HOST:-github.com}"
TOKEN="${INPUT_GITHUB_PAT:-${INPUT_GITHUB_TOKEN}}"
REMOTE="${INPUT_REMOTE:-https://${TOKEN}@${HOST}/${REPOSITORY}.git}"
SOURCE_FOLDER="${INPUT_SOURCE_FOLDER:-.}"
TARGET_FOLDER="${INPUT_TARGET_FOLDER}"
REF="${GITHUB_BASE_REF:-${GITHUB_REF}}"
REF_BRANCH=$(echo "${REF}" | rev | cut -d/ -f1 | rev)
[ -z "$REF_BRANCH" ] && echo 2>&1 "No ref branch" && exit 1
COMMIT_AUTHOR="${INPUT_AUTHOR:-${GITHUB_ACTOR} <${GITHUB_ACTOR}@users.noreply.github.com>}"
COMMIT_MESSAGE="${INPUT_COMMIT_MESSAGE:-[${GITHUB_WORKFLOW}] Publish from ${GITHUB_REPOSITORY}:${REF_BRANCH}/${SOURCE_FOLDER}}"
# Calculate the real source path.
#
SOURCE_PATH="$(realpath "${SOURCE_FOLDER}")"
[ -z "${SOURCE_PATH}" ] && exit 1
echo "::debug::SOURCE_PATH=${SOURCE_PATH}"
# Let's start doing stuff.
echo "Publishing ${SOURCE_FOLDER} to ${REMOTE}:${BRANCH}/${TARGET_FOLDER}"
# Create a working directory; the workspace may be filled with other important
# files.
#
WORK_DIR="${INPUT_WORKDIR:-$(mktemp -d "${HOME}/gitrepo.XXXXXX")}"
[ -z "${WORK_DIR}" ] && echo >&2 "::error::Failed to create temporary working directory" && exit 1
cd "${WORK_DIR}"
# Initialize git repo and configure for remote access.
#
echo "Initializing repository with remote ${REMOTE}"
git init || exit 1
git config --local user.email "${GITHUB_ACTOR}@users.noreply.github.com" || exit 1
git config --local user.name "${GITHUB_ACTOR}" || exit 1
git remote add origin "${REMOTE}" || exit 1
git remote -v
# Fetch initial (current contents).
#
echo "Fetching ${REMOTE}:${BRANCH}"
git fetch --depth 1 origin "${BRANCH}" || exit 1
git checkout -b "${BRANCH}" || exit 1
git pull origin "${BRANCH}" || exit 1
# Create the target directory (if necessary) and copy files from source.
#
TARGET_PATH="${WORK_DIR}/${TARGET_FOLDER}"
echo "Populating ${TARGET_PATH}"
mkdir -p "${TARGET_PATH}" || exit 1
rsync -a --quiet --delete "${SOURCE_PATH}/" "${TARGET_PATH}" || exit 1
# Create commit with changes.
#
echo "Creating commit"
git add "${TARGET_PATH}" || exit 1
git commit -m "${COMMIT_MESSAGE}" --author "${COMMIT_AUTHOR}" || exit 1
COMMIT_HASH="$(git rev-parse HEAD)"
echo "Created commit ${COMMIT_HASH}"
# Publish output variables.
#
echo "::set-output name=commit_hash::${COMMIT_HASH}"
echo "::set-output name=working_directory::${WORK_DIR}"
# Push if not a dry-run.
#
if [ -z "${INPUT_DRYRUN}" ] ; then
echo "Pushing to ${REMOTE}:${BRANCH}"
git push origin "${BRANCH}" || exit 1
else
echo "[DRY-RUN] Not pushing to ${REMOTE}:${BRANCH}"
fi
+47
View File
@@ -0,0 +1,47 @@
# Configuration for probot-stale - https://github.com/probot/stale
# General configuration
# Label to use when marking as stale
staleLabel: stale
# Pull request specific configuration
pulls:
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 14
# Number of days of inactivity before a stale Issue or Pull Request is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 30
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This pull request has been automatically marked as stale because it has not had
activity in the last 2 weeks. It will be closed in 30 days if no further activity occurs. Please
feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
This pull request has been automatically closed because it has not had
activity in the last 30 days. Please feel free to give a status update now, ping for review, or re-open when it's ready.
Thank you for your contributions!
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 1
exemptLabels:
- help wanted
- type/bug
- type/feature-request
- Epic
- no stalebot
# Issue specific configuration
issues:
limitPerRun: 1
daysUntilStale: 100000
daysUntilClose: 100000
markComment: >
This issue has been automatically marked as stale because it has not had activity in the
last 100 days. It will be closed in the next 100 days if no activity occurs.
Thank you for your contributions.
closeComment: >
This issue has been automatically closed because it has not had activity in the
last month and a half. If this issue is still valid, please ping a maintainer and ask them to check this again.
Thank you for your contributions.
+30
View File
@@ -0,0 +1,30 @@
name: publish_docs
on:
push:
branches:
- master
paths:
- 'docs/sources/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: publish-to-git
uses: ./.github/actions/gha-publish-to-git
id: publish
with:
repository: grafana/website
branch: docs-grafana
host: github.com
github_pat: '${{ secrets.GH_BOT_ACCESS_TOKEN }}'
source_folder: docs/sources
target_folder: content/docs/grafana/latest
- shell: bash
run: |
test -n "${{ steps.publish.outputs.commit_hash }}"
test -n "${{ steps.publish.outputs.working_directory }}"
+11 -5
View File
@@ -10,13 +10,12 @@ awsconfig
/public/views/index.html
/public/views/error.html
/emails/dist
/reports
# Enterprise emails
/emails/templates/enterprise_*
/public/emails/enterprise_*
/public_gen
/public/vendor/npm
/tmp
tools/phantomjs/phantomjs
tools/phantomjs/phantomjs.exe
@@ -61,7 +60,8 @@ profile.cov
/pkg/cmd/grafana-cli/grafana-cli
/pkg/cmd/grafana-server/grafana-server
/pkg/cmd/grafana-server/debug
/pkg/extensions
/pkg/extensions/*
!/pkg/extensions/main.go
/public/app/extensions
debug.test
/examples/*/dist
@@ -90,10 +90,16 @@ debug.test
/packages/**/compiled
/packages/**/.rpt2_cache
theOutput/
# Ignore go local build dependencies
/scripts/go/bin/**
# Ignore compilation stats from `yarn stats`
compilation-stats.json
# e2e tests
/packages/grafana-e2e/cypress/screenshots
/packages/grafana-e2e/cypress/videos
/packages/grafana-e2e/cypress/logs
/public/e2e-test/screenShots/theOutput
/public/e2e-tests/screenShots/theOutput/*.png
/public/e2e-tests/videos
+50
View File
@@ -1,5 +1,49 @@
# 6.6.0 (unreleased)
### Features / Enhancements
* **Graphite**: Add Metrictank dashboard to Graphite datasource
## Breaking changes
* **PagerDuty**: Change `payload.custom_details` field in PagerDuty notification to be a JSON object instead of a string.
* **Security**: The `[security]` setting `cookie_samesite` configured to `none` now renders cookies with `SameSite=None` attribute compared to before where no `SameSite` attribute was added to cookies. To get the old behavior, use value `disabled` instead of `none`. Refer to [Upgrade Grafana](https://grafana.com/docs/grafana/latest/installation/upgrading/#upgrading-to-v6-6) for more information.
# 6.5.3 (2020-01-15)
### Features / Enhancements
* **API**: Validate redirect_to cookie has valid (Grafana) url . [#21057](https://github.com/grafana/grafana/pull/21057), [@papagian](https://github.com/papagian)
### Bug Fixes
* **AdHocFilter**: Shows SubMenu when filtering directly from table. [#21017](https://github.com/grafana/grafana/pull/21017), [@hugohaggmark](https://github.com/hugohaggmark)
* **Cloudwatch**: Fixed crash when switching from cloudwatch data source. [#21376](https://github.com/grafana/grafana/pull/21376), [@torkelo](https://github.com/torkelo)
* **DataLinks**: Sanitize data/panel link URLs. [#21140](https://github.com/grafana/grafana/pull/21140), [@dprokop](https://github.com/dprokop)
* **Elastic**: Fix multiselect variable interpolation for logs. [#20894](https://github.com/grafana/grafana/pull/20894), [@ivanahuckova](https://github.com/ivanahuckova)
* **Prometheus**: Fixes so user can change HTTP Method in config settings. [#21055](https://github.com/grafana/grafana/pull/21055), [@hugohaggmark](https://github.com/hugohaggmark)
* **Prometheus**: Prevents validation of inputs when clicking in them without changing the value. [#21059](https://github.com/grafana/grafana/pull/21059), [@hugohaggmark](https://github.com/hugohaggmark)
* **Rendering**: Fix panel PNG rendering when using sub url & serve_from_sub_path = true. [#21306](https://github.com/grafana/grafana/pull/21306), [@bgranvea](https://github.com/bgranvea)
* **Table**: Matches column names with unescaped regex characters. [#21164](https://github.com/grafana/grafana/pull/21164), [@hugohaggmark](https://github.com/hugohaggmark)
# 6.5.2 (2019-12-11)
### Bug Fixes
* **Alerting**: Improve alert threshold handle dragging behavior. [#20922](https://github.com/grafana/grafana/pull/20922), [@torkelo](https://github.com/torkelo)
* **AngularPanels**: Fixed loading spinner being stuck in some rare cases. [#20878](https://github.com/grafana/grafana/pull/20878), [@torkelo](https://github.com/torkelo)
* **CloudWatch**: Fix query editor does not render in Explore. [#20909](https://github.com/grafana/grafana/pull/20909), [@davkal](https://github.com/davkal)
* **CloudWatch**: Remove illegal character escaping in inferred expressions. [#20915](https://github.com/grafana/grafana/pull/20915), [@sunker](https://github.com/sunker)
* **CloudWatch**: Remove template variable error message. [#20864](https://github.com/grafana/grafana/pull/20864), [@sunker](https://github.com/sunker)
* **CloudWatch**: Use datasource template variable in curated dashboards. [#20917](https://github.com/grafana/grafana/pull/20917), [@sunker](https://github.com/sunker)
* **Elasticsearch**: Set default port to 9200 in ConfigEditor. [#20948](https://github.com/grafana/grafana/pull/20948), [@papagian](https://github.com/papagian)
* **Gauge/BarGauge**: Added support for value mapping of "no data"-state to text/value. [#20842](https://github.com/grafana/grafana/pull/20842), [@mckn](https://github.com/mckn)
* **Graph**: Prevent tooltip from being displayed outside of window. [#20874](https://github.com/grafana/grafana/pull/20874), [@mckn](https://github.com/mckn)
* **Graphite**: Fixes error with annotation metric queries . [#20857](https://github.com/grafana/grafana/pull/20857), [@dprokop](https://github.com/dprokop)
* **Login**: Fix fatal error when navigating from reset password page. [#20747](https://github.com/grafana/grafana/pull/20747), [@peterholmberg](https://github.com/peterholmberg)
* **MixedDatasources**: Do not filter out all mixed data sources in add mixed query dropdown. [#20990](https://github.com/grafana/grafana/pull/20990), [@torkelo](https://github.com/torkelo)
* **Prometheus**: Fix caching for default labels request. [#20718](https://github.com/grafana/grafana/pull/20718), [@aocenas](https://github.com/aocenas)
* **Prometheus**: Run default labels query only once. [#20898](https://github.com/grafana/grafana/pull/20898), [@aocenas](https://github.com/aocenas)
* **Security**: Fix invite link still accessible after completion or revocation. [#20863](https://github.com/grafana/grafana/pull/20863), [@aknuds1](https://github.com/aknuds1)
* **Server**: Fail when unable to create log directory. [#20804](https://github.com/grafana/grafana/pull/20804), [@aknuds1](https://github.com/aknuds1)
* **TeamPicker**: Increase size limit from 10 to 100. [#20882](https://github.com/grafana/grafana/pull/20882), [@hendrikvh](https://github.com/hendrikvh)
* **Units**: Remove SI prefix symbol from new milli/microSievert(/h) units. [#20650](https://github.com/grafana/grafana/pull/20650), [@zegelin](https://github.com/zegelin)
# 6.5.1 (2019-11-28)
### Bug Fixes
@@ -131,12 +175,18 @@
# 6.4.4 (2019-11-06)
### Bug Fixes
* **MySQL**: Fix encoding in connection string [#20192](https://github.com/grafana/grafana/pull/20192)
* **DataLinks**: Fix blur issues. [#19883](https://github.com/grafana/grafana/pull/19883), [@aocenas](https://github.com/aocenas)
* **Docker**: Makes it possible to parse timezones in the docker image. [#20081](https://github.com/grafana/grafana/pull/20081), [@xlson](https://github.com/xlson)
* **LDAP**: All LDAP servers should be tried even if one of them returns a connection error. [#20077](https://github.com/grafana/grafana/pull/20077), [@jongyllen](https://github.com/jongyllen)
* **LDAP**: No longer shows incorrectly matching groups based on role in debug page. [#20018](https://github.com/grafana/grafana/pull/20018), [@xlson](https://github.com/xlson)
* **Singlestat**: Fix no data / null value mapping . [#19951](https://github.com/grafana/grafana/pull/19951), [@ryantxu](https://github.com/ryantxu)
#### Security vulnerability
The MySQL data source connnection string fix, [#20192](https://github.com/grafana/grafana/pull/20192), that was part of this release
also fixed a security vulnerability. Thanks Yuriy Dyachenko for discovering and notifying us about this.
# 6.4.3 (2019-10-16)
### Bug Fixes
+5 -2
View File
@@ -179,7 +179,7 @@ disable_brute_force_login_protection = false
# set to true if you host Grafana behind HTTPS. default is false.
cookie_secure = false
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict" and "none"
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
cookie_samesite = lax
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
@@ -387,7 +387,6 @@ tls_skip_verify_insecure = false
tls_client_cert =
tls_client_key =
tls_client_ca =
send_client_credentials_via_post = false
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
@@ -594,6 +593,8 @@ notification_timeout_seconds = 30
# Default setting for max attempts to sending alert notifications. Default value is 3
max_attempts = 3
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
min_interval_seconds = 1
#################################### Explore #############################
[explore]
@@ -654,6 +655,8 @@ disable_shared_zipkin_spans = false
provider =
[external_image_storage.s3]
endpoint =
path_style_access =
bucket_url =
bucket =
region =
+6 -5
View File
@@ -180,7 +180,7 @@
# set to true if you host Grafana behind HTTPS. default is false.
;cookie_secure = false
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict" and "none"
# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
;cookie_samesite = lax
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
@@ -378,10 +378,6 @@
;tls_client_key =
;tls_client_ca =
; Set to true to enable sending client_id and client_secret via POST body instead of Basic authentication HTTP header
; This might be required if the OAuth provider is not RFC6749 compliant, only supporting credentials passed via POST payload
;send_client_credentials_via_post = false
#################################### SAML Auth ###########################
[auth.saml] # Enterprise only
# Defaults to false. If true, the feature is enabled.
@@ -588,6 +584,9 @@
# Default setting for max attempts to sending alert notifications. Default value is 3
;max_attempts = 3
# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
;min_interval_seconds = 1
#################################### Explore #############################
[explore]
# Enable the Explore section
@@ -647,6 +646,8 @@
;provider =
[external_image_storage.s3]
;endpoint =
;path_style_access =
;bucket =
;region =
;path =
+9 -3
View File
@@ -72,6 +72,10 @@ Log in using the default credentials:
When you log in for the first time, Grafana asks you to change your password.
#### Building on Windows
The Grafana backend includes Sqlite3 which requires GCC to compile. So in order to compile Grafana on Windows you need to install GCC. We recommend [TDM-GCC](http://tdm-gcc.tdragon.net/download).
## Test Grafana
The test suite consists of three types of tests: _Frontend tests_, _backend tests_, and _end-to-end tests_.
@@ -94,7 +98,9 @@ go test -v ./pkg/...
### Run end-to-end tests
The end-to-end tests in Grafana uses [puppeteer](https://github.com/GoogleChrome/puppeteer) to run automated scripts in a headless Chrome browser. To run the tests:
The end to end tests in Grafana use [Cypress](https://www.cypress.io/) to run automated scripts in a headless Chromium browser. Read more about our [e2e framework](/contribute/style-guides/e2e.md).
To run the tests:
```
yarn e2e-tests
@@ -106,10 +112,10 @@ By default, the end-to-end tests assumes Grafana is available on `localhost:3000
BASE_URL=http://localhost:3333 yarn e2e-tests
```
To follow the tests in the browser while they're running, add the `BROWSER` and `SLOWMO` environment variables:
To follow the tests in the browser while they're running, use the `yarn e2e-tests:debug` instead.
```
BROWSER=1 SLOWMO=1 yarn e2e-tests
yarn e2e-tests:debug
```
## Configure Grafana for development
@@ -81,12 +81,44 @@ Always give the reader some idea of what to expect in the reference. Avoid blind
When possible, use the exact title of the page or section you are linking to as the link text.
**Example**
* Refer to the [Documentation style guide](documentation-style-guide.md) for information about word usage and capitalization guidelines.
Refer to the [Documentation style guide](documentation-style-guide.md) for information about word usage and capitalization guidelines.
### Command line examples
* Do not assume everyone is using Linux. Make sure instructions include enough information for Windows and Mac users to successfully complete procedures.
* Do not add `$` before commands. Make it easy for users to copy and paste commands.
* **Wrong:** `$ sudo yum install grafana`
* **Right:** `sudo yum install grafana`
* Include `sudo` before commands that require `sudo` to work.
For terminal examples and Grafana configuration, use a `bash` code block:
```bash
sudo yum install grafana
```
For HTTP request/response, use an `http` code block:
```http
GET /api/dashboards/id/1/permissions HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```
### Word usage
Grafana products has some words, abbreviations, and slang particular to this discourse community.
#### checkout, check out
Two words if used as a verb, one word if used as a noun.
**Examples**
* Check out these new features!
* Proceed to checkout.
#### data source
Two words, not one
@@ -94,7 +126,6 @@ Two words, not one
**Exceptions:**
* "datasource" used as an identifier
* "datasource" in a URL
* "Open source" should be hyphenated when used as an adjective, e.g. *open-source software*. The open form should be preferred when used as a noun, e.g. *Grafana is open source*.
* Use "data source" instead of "datasource" unless used as an identifier, in code, or as part of a URL.
* Spell out "repository" and avoid the shorter "repo."
* Use "Unix" as the preferred spelling (as opposed to "UNIX", or "unix") when referring to the family of operating systems.
@@ -108,7 +139,7 @@ Two words, not one
#### open source, open-source
Hyphenate when used as an adjective. For example: _open-source software._
Do not hyphenate when used as an adjective unless the lack of hyphen would cause confusion. For example: _Open source software design is the most open open-source system I can imagine._
Do not hyphenate when it is used as a noun. For example: _Open source is the best way to develop software._
+160
View File
@@ -0,0 +1,160 @@
# End to end test framework
Grafana Labs uses a minimal home grown solution built on top of Cypress for our end to end (e2e) tests.
## Basic concepts
Here is a good introduction to e2e best practices: https://martinfowler.com/bliki/PageObject.html.
- `Selector`: A unique identifier that is used from the e2e framework to retrieve an element from the Browser
- `Page`: An abstraction for an object that contains one or more `Selectors`
- `Flow`: An abstraction that contains a sequence of actions on one or more `Pages` that can be reused and shared between tests
## Basic example
Let's start with a simple example with a single selector. For simplicity, all examples are in JSX.
In our example app, we have an input that we want to type some text into during our e2e test.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input"/>
</div>
```
We could define a selector using `JQuery` [type selectors](https://api.jquery.com/category/selectors/) with a string like `'.gf-form-input.login-form-input'` but that would be brittle as style changes occur frequently. Furthermore there is nothing that signals to future developers that this input is part of an e2e test.
At Grafana, we use `aria-label` as our preferred way of defining selectors instead of `data-*` attributes. This also aids in accessibility.
Let's add a descriptive `aria-label` to our simple example.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input" aria-label="Username input field"/>
</div>
```
Now that we added the `aria-label` we suddenly get more information about this particular field. It's an input field that represents a username, but there it's still not really signaling that it's part of an e2e test.
The next step is to create a `Page` representation in our e2e test framework to glue the test with the real implementation using the `pageFactory` function. For that function we can supply a `url` and `selectors` like in the example below:
```typescript
export const Login = pageFactory({
url: '/login', // used when called from Login.visit()
selectors: {
username: 'Username input field', // used when called from Login.username().type('Hello World')
},
});
```
The next step is to add the `Login` page to the exported const `Pages` in `packages/grafana-e2e/src/pages/index.ts` so that it appears when we type `e2e.pages` in our IDE.
```ecmascript 6
export const Pages = {
Login,
...,
...,
...,
};
```
Now that we have a `Page` called `Login` in our `Pages` const we can use that to add a selector in our html like shown below and now this really signals to future developers that it is part of an e2e test.
```jsx harmony
<div>
<input type="text" className="gf-form-input login-form-input" aria-label={e2e.pages.Login.selectors.username}/>
</div>
```
The last step in our example is to use our `Login` page as part of a test. The `pageFactory` function we used before gives us two things:
- The `url` property is used whenever we call the `visit` function and is equivalent to the Cypress function [cy.visit()](https://docs.cypress.io/api/commands/visit.html#Syntax).
> Best practice after calling `visit` is to always call `should` on a selector to prevent flaky tests when you try to access an element that isn't ready. For more information, refer to [Commands vs. assertions](https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions).
- Any defined selector in the `selectors` property can be accessed from the `Login` page by invoking it. This is equivalent to the result of the Cypress function [cy.get(...)](https://docs.cypress.io/api/commands/get.html#Syntax).
```ecmascript 6
describe('Login test', () => {
it('Should pass', () => {
e2e.pages.Login.visit();
// To prevent flaky tests, always do a .should on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
e2e.pages.Login.username().should('be.visible');
e2e.pages.Login.username().type('admin');
});
});
```
## Advanced example
Let's take a look at an example that uses the same `selector` for multiple items in a list for instance. In this example app we have a list of data sources that we want to click on during an e2e test.
```jsx harmony
<ul>
{dataSources.map(dataSource => (
<li className="card-item-wrapper" key={dataSource.id}>
<a className="card-item" href={`datasources/edit/${dataSource.id}`}>
<div className="card-item-name">
{dataSource.name}
</div>
</a>
</li>
))}
</ul>
```
```
Just as before in the basic example we'll start by creating a page abstraction using the `pageFactory` function:
```typescript
export const DataSources = pageFactory({
url: '/datasources',
selectors: {
dataSources: (dataSourceName: string) => `Data source list item ${dataSourceName}`,
},
});
```
You might have noticed that instead of a simple `string` as the `selector`, we're using a `function` that takes a string parameter as an argument and returns a formatted string using the argument.
Just as before we need to add the `DataSources` page to the exported const `Pages` in `packages/grafana-e2e/src/pages/index.ts`.
The next step is to use the `dataSources` selector function as in our example below:
```jsx harmony
<ul>
{dataSources.map(dataSource => (
<li className="card-item-wrapper" key={dataSource.id}>
<a className="card-item" href={`datasources/edit/${dataSource.id}`}>
<div className="card-item-name" aria-label={e2e.pages.DataSources.selectors.dataSources(dataSource.name)}>
{dataSource.name}
</div>
</a>
</li>
))}
</ul>
```
When this list is rendered with the data sources with names `A`, `B`, `C` the resulting html would become:
```jsx harmony
<div class="card-item-name" aria-label="Data source list item A">
A
</div>
...
<div class="card-item-name" aria-label="Data source list item B">
B
</div>
...
<div class="card-item-name" aria-label="Data source list item C">
C
</div>
```
Now we can write our test. The one thing that differs from the `Basic example` is that we pass in which data source we want to click on as an argument to the selector function:
> Best practice after calling `visit` is to always call `should` on a selector to prevent flaky tests when you try to access an element that isn't ready. For more information, refer to [Commands vs. assertions](https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions).
```ecmascript 6
describe('List test', () => {
it('Clicking on data source named B', () => {
e2e.pages.DataSources.visit();
// To prevent flaky tests, always do a .should on any selector that you expect to be in the DOM.
// Read more here: https://docs.cypress.io/guides/core-concepts/retry-ability.html#Commands-vs-assertions
e2e.pages.DataSources.dataSources('B').should('be.visible');
e2e.pages.DataSources.dataSources('B').click();
});
});
```
## Debugging PhantomJS image rendering
There is no easy or comprehensive way to debug PhantomJS smoke test (image rendering) failures. However, PhantomJS exposes remote debugging interface which can give you a sense of what is going wrong in the smoke test. Before performing the steps described below make sure your local Grafana instance is running:
1. Go to `tools/phantomjs` directory
2. Execute `phantomjs` binary against `render.js` file: `./phantomjs --remote-debugger-port=9009 --remote-debugger-autorun=yes ./render.js url="http://localhost:3000"`
3. In your browser navigate to `http://localhost:9009/`
4. Select `http://localhost:3000/login` from the list. You will get access to Webkit's inspector to see the console's output from the smoke test.
The method described above is not perfect, but is helpful to evaluate smoke tests breaking due to bundle errors.
+2 -116
View File
@@ -1,121 +1,7 @@
# Redux framework
To reduce the amount of boilerplate code used to create a strongly typed redux solution with actions, action creators, reducers and tests we've introduced a small framework around Redux.
`+` Much less boilerplate code
`-` Non Redux standard api
## Core functionality
### actionCreatorFactory
Used to create an action creator with the following signature
```typescript
{ type: string , (payload: T): {type: string; payload: T;} }
```
where the `type` string will be ensured to be unique and `T` is the type supplied to the factory.
#### Example
```typescript
export const someAction = actionCreatorFactory<string>('SOME_ACTION').create();
// later when dispatched
someAction('this rocks!');
```
```typescript
// best practices, always use an interface as type
interface SomeAction {
data: string;
}
export const someAction = actionCreatorFactory<SomeAction>('SOME_ACTION').create();
// later when dispatched
someAction({ data: 'best practices' });
```
```typescript
// declaring an action creator with a type string that has already been defined will throw
export const someAction = actionCreatorFactory<string>('SOME_ACTION').create();
export const theAction = actionCreatorFactory<string>('SOME_ACTION').create(); // will throw
```
### reducerFactory
Fluent API used to create a reducer. (same as implementing the standard switch statement in Redux)
#### Example
```typescript
interface ExampleReducerState {
data: string[];
}
const intialState: ExampleReducerState = { data: [] };
export const someAction = actionCreatorFactory<string>('SOME_ACTION').create();
export const otherAction = actionCreatorFactory<string[]>('Other_ACTION').create();
export const exampleReducer = reducerFactory<ExampleReducerState>(intialState)
// addMapper is the function that ties an action creator to a state change
.addMapper({
// action creator to filter out which mapper to use
filter: someAction,
// mapper function where the state change occurs
mapper: (state, action) => ({ ...state, data: state.data.concat(action.payload) }),
})
// a developer can just chain addMapper functions until reducer is done
.addMapper({
filter: otherAction,
mapper: (state, action) => ({ ...state, data: action.payload }),
})
.create(); // this will return the reducer
```
#### Typing limitations
There is a challenge left with the mapper function that I can not solve with TypeScript. The signature of a mapper is
```typescript
<State, Payload>(state: State, action: ActionOf<Payload>) => State;
```
If you would to return an object that is not of the state type like the following mapper
```typescript
mapper: (state, action) => ({ nonExistingProperty: ''}),
```
Then you would receive the following compile error
```shell
[ts] Property 'data' is missing in type '{ nonExistingProperty: string; }' but required in type 'ExampleReducerState'. [2741]
```
But if you return an object that is spreading state and add a non existing property type like the following mapper
```typescript
mapper: (state, action) => ({ ...state, nonExistingProperty: ''}),
```
Then you would not receive any compile error.
If you want to make sure that never happens you can just supply the State type to the mapper callback like the following mapper:
```typescript
mapper: (state, action): ExampleReducerState => ({ ...state, nonExistingProperty: 'kalle' }),
```
Then you would receive the following compile error
```shell
[ts]
Type '{ nonExistingProperty: string; data: string[]; }' is not assignable to type 'ExampleReducerState'.
Object literal may only specify known properties, and 'nonExistingProperty' does not exist in type 'ExampleReducerState'. [2322]
```
Grafana uses [Redux Toolkit](https://redux-toolkit.js.org/) to handle Redux boilerplate code.
> Some of our Reducers are used by Angular and therefore state is to be considered as mutable for those reducers.
## Test functionality
@@ -4,11 +4,37 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Annotations & Alerts",
"showIn": 0,
"type": "dashboard"
},
{
"datasource": "gdev-mssql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT TOP 1\n createdAt as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-mssql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT TOP 1\n DATEADD(MINUTE, 1, createdAt) as time,\n DATEADD(MINUTE, 6, createdAt) as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +42,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532618661457,
"iteration": 1576251075020,
"links": [],
"panels": [
{
@@ -28,12 +54,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +76,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -79,6 +110,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -125,12 +157,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 8,
"legend": {
"avg": false,
@@ -145,6 +179,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -169,6 +206,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -214,12 +252,14 @@
"dashes": false,
"datasource": "gdev-mssql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 6,
"legend": {
"avg": false,
@@ -234,6 +274,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -252,6 +295,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -302,6 +346,7 @@
},
"id": 4,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -340,15 +385,19 @@
"type": "table"
}
],
"schemaVersion": 16,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "mssql", "datasource-test"],
"templating": {
"list": [
{
"allValue": null,
"current": {},
"current": {
"text": "Africa",
"value": "Africa"
},
"datasource": "gdev-mssql",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -368,8 +417,13 @@
},
{
"allValue": null,
"current": {},
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-mssql",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -392,6 +446,7 @@
"auto_count": 30,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -488,5 +543,5 @@
"timezone": "",
"title": "Datasource tests - MSSQL",
"uid": "86Js1xRmk",
"version": 1
"version": 2
}
@@ -4,11 +4,35 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
},
{
"datasource": "gdev-mysql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT\n createdAt as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-mysql",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT\n ADDTIME(createdAt, '00:01:00') as time,\n ADDTIME(createdAt, '00:06:00') as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(createdAt)\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +40,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532620738041,
"iteration": 1576250298312,
"links": [],
"panels": [
{
@@ -28,12 +52,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +74,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -81,6 +110,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -126,12 +156,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
@@ -146,6 +178,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -171,6 +206,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -216,12 +252,14 @@
"dashes": false,
"datasource": "gdev-mysql",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 3,
"legend": {
"avg": false,
@@ -236,6 +274,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -255,6 +296,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -305,6 +347,7 @@
},
"id": 6,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -346,7 +389,8 @@
"type": "table"
}
],
"schemaVersion": 16,
"refresh": false,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "mysql", "datasource-tags"],
"templating": {
@@ -358,6 +402,7 @@
"value": "America"
},
"datasource": "gdev-mysql",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -378,10 +423,12 @@
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-mysql",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -404,6 +451,7 @@
"auto_count": 5,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -500,5 +548,5 @@
"timezone": "",
"title": "Datasource tests - MySQL",
"uid": "DGsCac3kz",
"version": 8
"version": 2
}
@@ -4,11 +4,35 @@
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"enable": false,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
},
{
"datasource": "gdev-postgres",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Single",
"rawQuery": "SELECT\n \"createdAt\" as time,\n 'single' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\")\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
},
{
"datasource": "gdev-postgres",
"enable": false,
"hide": false,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
"name": "Region",
"rawQuery": "SELECT\n \"createdAt\" + (interval '1 minute') as time,\n \"createdAt\" + (6 * interval '1 minute') as timeend,\n 'region' as text,\n hostname as tags\nFROM\n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\")\nORDER BY time\nLIMIT 1\n",
"showIn": 0,
"tags": [],
"type": "tags"
}
]
},
@@ -16,7 +40,7 @@
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"iteration": 1532620601931,
"iteration": 1576249087264,
"links": [],
"panels": [
{
@@ -28,12 +52,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 0
},
"hiddenSeries": false,
"id": 2,
"legend": {
"avg": false,
@@ -48,6 +74,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -67,20 +96,59 @@
{
"alias": "",
"format": "time_series",
"group": [],
"hide": false,
"metricColumn": "none",
"rawQuery": true,
"rawSql": "SELECT\n $__timeGroup(\"createdAt\",'$summarize'),\n avg(value) as \"value\",\n hostname as \"metric\"\nFROM \n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\") AND\n measurement = 'logins.count' AND\n hostname IN($host)\nGROUP BY time, metric\nORDER BY time",
"refId": "A",
"target": ""
"select": [
[
{
"params": ["value"],
"type": "column"
}
]
],
"target": "",
"timeColumn": "time",
"where": [
{
"name": "$__timeFilter",
"params": [],
"type": "macro"
}
]
},
{
"alias": "",
"format": "time_series",
"group": [],
"metricColumn": "none",
"rawQuery": true,
"rawSql": "SELECT\n $__timeGroup(\"createdAt\",'$summarize'),\n min(value) as \"value\",\n 'total avg' as \"metric\"\nFROM \n grafana_metric\nWHERE\n $__timeFilter(\"createdAt\") AND\n measurement = 'logins.count'\nGROUP BY time\nORDER BY time",
"refId": "B"
"refId": "B",
"select": [
[
{
"params": ["value"],
"type": "column"
}
]
],
"timeColumn": "time",
"where": [
{
"name": "$__timeFilter",
"params": [],
"type": "macro"
}
]
}
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average logins / $summarize",
"tooltip": {
@@ -126,12 +194,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 18,
"w": 12,
"x": 12,
"y": 0
},
"hiddenSeries": false,
"id": 4,
"legend": {
"avg": false,
@@ -146,6 +216,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -171,6 +244,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Average payments started/ended / $summarize",
"tooltip": {
@@ -216,12 +290,14 @@
"dashes": false,
"datasource": "gdev-postgres",
"fill": 2,
"fillGradient": 0,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"hiddenSeries": false,
"id": 3,
"legend": {
"avg": false,
@@ -236,6 +312,9 @@
"linewidth": 2,
"links": [],
"nullPointMode": "null",
"options": {
"dataLinks": []
},
"percentage": false,
"pointradius": 5,
"points": false,
@@ -255,6 +334,7 @@
],
"thresholds": [],
"timeFrom": null,
"timeRegions": [],
"timeShift": null,
"title": "Max CPU / $summarize",
"tooltip": {
@@ -305,6 +385,7 @@
},
"id": 6,
"links": [],
"options": {},
"pageSize": null,
"scroll": true,
"showHeader": true,
@@ -345,7 +426,7 @@
"type": "table"
}
],
"schemaVersion": 16,
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "postgres", "datasource-test"],
"templating": {
@@ -357,6 +438,7 @@
"value": "America"
},
"datasource": "gdev-postgres",
"definition": "",
"hide": 0,
"includeAll": false,
"label": "Datacenter",
@@ -377,10 +459,12 @@
{
"allValue": null,
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"datasource": "gdev-postgres",
"definition": "",
"hide": 0,
"includeAll": true,
"label": "Hostname",
@@ -403,6 +487,7 @@
"auto_count": 5,
"auto_min": "10s",
"current": {
"selected": false,
"text": "1m",
"value": "1m"
},
@@ -499,5 +584,5 @@
"timezone": "",
"title": "Datasource tests - Postgres",
"uid": "JYola5qzz",
"version": 4
"version": 5
}
@@ -0,0 +1,491 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 32,
"w": 9,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "red",
"value": null
},
{
"color": "yellow",
"value": 50
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"labels": "",
"refId": "H",
"scenarioId": "random_walk"
},
{
"refId": "I",
"scenarioId": "random_walk"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"labels": "",
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 0
},
"id": 3,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 33,
"w": 7,
"x": 17,
"y": 0
},
"id": 6,
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "blue",
"value": 50
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
},
{
"refId": "R",
"scenarioId": "random_walk"
},
{
"refId": "S",
"scenarioId": "random_walk"
},
{
"refId": "T",
"scenarioId": "random_walk"
},
{
"refId": "U",
"scenarioId": "random_walk"
},
{
"refId": "V",
"scenarioId": "random_walk"
},
{
"refId": "W",
"scenarioId": "random_walk"
},
{
"refId": "X",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 11
},
"id": 7,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 8,
"x": 9,
"y": 22
},
"id": 8,
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "purple",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
},
{
"refId": "H",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "bargauge"
}
],
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "demo"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Bar Gauge Demo Unfilled",
"uid": "xMsQdBfWz",
"version": 5
}
@@ -0,0 +1,530 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"links": [],
"panels": [
{
"datasource": null,
"gridPos": {
"h": 10,
"w": 12,
"x": 0,
"y": 0
},
"id": 8,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "purple",
"value": 50
},
{
"color": "blue",
"value": 70
}
],
"unit": "watt"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "I",
"scenarioId": "random_walk"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Basic vertical ",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 10,
"w": 12,
"x": 12,
"y": 0
},
"id": 22,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "green",
"value": null
},
{
"color": "blue",
"value": 25
},
{
"color": "orange",
"value": 37.5
},
{
"color": "purple",
"value": 43.75
},
{
"color": "red",
"value": 50
}
],
"unit": "watt"
},
"overrides": [],
"values": false
},
"orientation": "vertical",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"refId": "J",
"scenarioId": "random_walk"
},
{
"refId": "K",
"scenarioId": "random_walk"
},
{
"refId": "L",
"scenarioId": "random_walk"
},
{
"refId": "M",
"scenarioId": "random_walk"
},
{
"refId": "N",
"scenarioId": "random_walk"
},
{
"refId": "O",
"scenarioId": "random_walk"
},
{
"refId": "P",
"scenarioId": "random_walk"
},
{
"refId": "Q",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Basic vertical (Unfilled)",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 10
},
"id": 12,
"links": [],
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Gradient ",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 10
},
"id": 23,
"links": [],
"options": {
"displayMode": "gradient",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Gradient (Unfilled)",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 12,
"x": 0,
"y": 19
},
"id": 21,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": false
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Title to left of bar",
"type": "bargauge"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 12,
"x": 12,
"y": 19
},
"id": 24,
"links": [],
"options": {
"displayMode": "basic",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"decimals": null,
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "celsius"
},
"overrides": [],
"values": false
},
"orientation": "horizontal",
"showUnfilled": true
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"alias": "Inside",
"refId": "H",
"scenarioId": "csv_metric_values",
"stringInput": "100,100,100"
},
{
"alias": "Outhouse",
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Title to left of bar (Filled)",
"type": "bargauge"
}
],
"schemaVersion": 21,
"style": "dark",
"tags": ["gdev", "panel-tests"],
"templating": {
"list": []
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"],
"time_options": ["5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d"]
},
"timezone": "",
"title": "Panel Tests - Bar Gauge 2",
"uid": "sRrEibfZk",
"version": 5
}
@@ -20,83 +20,143 @@
{
"datasource": null,
"gridPos": {
"h": 7,
"w": 20,
"h": 3,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"interval": "10m",
"id": 6,
"interval": "6m",
"options": {
"colorMode": 0,
"displayMode": 2,
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"override": {},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__house_locations",
"labels": "",
"min": 0,
"noise": 5,
"refId": "A",
"scenarioId": "random_walk"
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 100
}
],
"timeFrom": null,
"timeShift": null,
"title": "",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 24,
"x": 0,
"y": 3
},
"id": 10,
"interval": "7m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
"alias": "__house_locations",
"min": 0,
"noise": 10,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 10
}
],
"timeFrom": null,
@@ -107,55 +167,205 @@
{
"datasource": null,
"gridPos": {
"h": 20,
"h": 6,
"w": 24,
"x": 0,
"y": 9
},
"id": 14,
"interval": "7m",
"options": {
"colorMode": "value",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__house_locations",
"min": 0,
"noise": 10,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 6,
"spread": 10
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 14,
"w": 6,
"x": 0,
"y": 15
},
"id": 13,
"interval": "5m",
"options": {
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"overrides": [],
"values": false
},
"graphMode": "area",
"justifyMode": "auto",
"orientation": "horizontal",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.6.0-pre",
"targets": [
{
"alias": "__server_names",
"min": 0,
"refId": "A",
"scenarioId": "random_walk",
"seriesCount": 7,
"spread": 100
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 11,
"w": 4,
"x": 20,
"y": 0
"x": 6,
"y": 15
},
"id": 8,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 2,
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"override": {},
"overrides": [],
"values": false
},
"graphMode": "line",
"justifyMode": "auto",
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"pluginVersion": "6.6.0-pre",
"targets": [
{
"refId": "A",
@@ -194,403 +404,60 @@
{
"datasource": null,
"gridPos": {
"h": 3,
"w": 20,
"x": 0,
"y": 7
"h": 9,
"w": 8,
"x": 10,
"y": 15
},
"id": 6,
"id": 12,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 2,
"colorMode": "background",
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
]
},
"unit": "areaM2"
},
"override": {},
"overrides": [],
"values": false
},
"orientation": "auto",
"graphMode": "line",
"justifyMode": "auto",
"orientation": "horizontal",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 20,
"x": 0,
"y": 10
},
"id": 3,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 3,
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"override": {},
"values": false
},
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 20,
"x": 0,
"y": 16
},
"id": 4,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 0,
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"override": {},
"values": false
},
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 21,
"w": 4,
"x": 20,
"y": 20
},
"id": 9,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 0,
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"override": {},
"values": false
},
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"targets": [
{
"refId": "A",
"scenarioId": "random_walk"
},
{
"refId": "B",
"scenarioId": "random_walk"
},
{
"refId": "C",
"scenarioId": "random_walk"
},
{
"refId": "D",
"scenarioId": "random_walk"
},
{
"refId": "E",
"scenarioId": "random_walk"
},
{
"refId": "F",
"scenarioId": "random_walk"
},
{
"refId": "G",
"scenarioId": "random_walk"
}
],
"timeFrom": null,
"timeShift": null,
"title": "Panel Title",
"type": "stat"
},
{
"datasource": null,
"gridPos": {
"h": 6,
"w": 20,
"x": 0,
"y": 22
},
"id": 5,
"interval": "10m",
"options": {
"colorMode": 0,
"displayMode": 1,
"fieldOptions": {
"calcs": ["mean"],
"defaults": {
"mappings": [],
"max": 100,
"min": 0,
"thresholds": [
{
"color": "blue",
"value": null
},
{
"color": "green",
"value": 10
},
{
"color": "purple",
"value": 20
},
{
"color": "orange",
"value": 40
},
{
"color": "red",
"value": 80
}
],
"unit": "percent"
},
"override": {},
"values": false
},
"orientation": "auto",
"sparkline": {
"show": true
}
},
"pluginVersion": "6.5.0-pre",
"pluginVersion": "6.6.0-pre",
"targets": [
{
"refId": "A",
@@ -627,7 +494,7 @@
"type": "stat"
}
],
"schemaVersion": 20,
"schemaVersion": 22,
"style": "dark",
"tags": ["gdev", "panel-tests"],
"templating": {
@@ -641,7 +508,5 @@
"refresh_intervals": ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"]
},
"timezone": "",
"title": "Panel Tests - Stat",
"uid": "jWWHNJpWz",
"version": 6
"title": "Panel Tests - Stat"
}
@@ -3,4 +3,25 @@
ports:
- "6831:6831"
- "16686:16686"
# Additional loki to generate some traces
# datasource URL: http://localhost:3100/
loki:
image: grafana/loki:master
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
# Optional jaeger tracing
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_TYPE=const
- JAEGER_SAMPLER_PARAM=1
promtail:
image: grafana/promtail:master
volumes:
- ./docker/blocks/loki/config.yaml:/etc/promtail/docker-config.yaml
- /var/log:/var/log
- ../data/log:/var/log/grafana
command:
-config.file=/etc/promtail/docker-config.yaml
@@ -4,12 +4,6 @@
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
# Optional jaeger tracing
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_AGENT_PORT=6831
- JAEGER_SAMPLER_TYPE=const
- JAEGER_SAMPLER_PARAM=1
promtail:
image: grafana/promtail:master
volumes:
+6
View File
@@ -35,6 +35,12 @@ Run load test for 10 virtual users:
$ ./run.sh -v 10
```
Run auth token slow test (random query latency between 1 and 30 seconds):
```bash
$ ./run.sh -c auth_token_slow_test -s 30
```
Run auth proxy test:
```bash
@@ -0,0 +1,73 @@
import { sleep, check, group } from 'k6';
import { createClient, createBasicAuthClient } from './modules/client.js';
import { createTestOrgIfNotExists, createTestdataDatasourceIfNotExists } from './modules/util.js';
export let options = {
noCookiesReset: true
};
let endpoint = __ENV.URL || 'http://localhost:3000';
const slowQuery = (__ENV.SLOW_QUERY && __ENV.SLOW_QUERY.length > 0) ? parseInt(__ENV.SLOW_QUERY, 10) : 5;
const client = createClient(endpoint);
export const setup = () => {
const basicAuthClient = createBasicAuthClient(endpoint, 'admin', 'admin');
const orgId = createTestOrgIfNotExists(basicAuthClient);
const datasourceId = createTestdataDatasourceIfNotExists(basicAuthClient);
client.withOrgId(orgId);
return {
orgId: orgId,
datasourceId: datasourceId,
};
}
export default (data) => {
group(`user auth token slow test (queries between 1 and ${slowQuery} seconds)`, () => {
if (__ITER === 0) {
group("user authenticates thru ui with username and password", () => {
let res = client.ui.login('admin', 'admin');
check(res, {
'response status is 200': (r) => r.status === 200,
'response has cookie \'grafana_session\' with 32 characters': (r) => r.cookies.grafana_session[0].value.length === 32,
});
});
}
if (__ITER !== 0) {
group('batch tsdb requests', () => {
const batchCount = 20;
const requests = [];
const payload = {
from: '1547765247624',
to: '1547768847624',
queries: [{
refId: 'A',
scenarioId: 'slow_query',
stringInput: `${Math.floor(Math.random() * slowQuery) + 1}s`,
intervalMs: 10000,
maxDataPoints: 433,
datasourceId: data.datasourceId,
}]
};
requests.push({ method: 'GET', url: '/api/annotations?dashboardId=2074&from=1548078832772&to=1548082432772' });
for (let n = 0; n < batchCount; n++) {
requests.push({ method: 'POST', url: '/api/tsdb/query', body: payload });
}
let responses = client.batch(requests);
for (let n = 0; n < batchCount; n++) {
check(responses[n], {
'response status is 200': (r) => r.status === 200,
});
}
});
}
});
sleep(5)
}
export const teardown = (data) => {}
+1
View File
@@ -144,6 +144,7 @@ export const BaseClient = class BaseClient {
let params = requests[n].params || {};
params.headers = params.headers || {};
params.headers['Content-Type'] = 'application/json';
params.timeout = 120000;
this.beforeRequest(params);
this.onBeforeRequest(params);
requests[n].params = params;
+6 -2
View File
@@ -7,8 +7,9 @@ run() {
url='http://localhost:3000'
vus='2'
testcase='auth_token_test'
slowQuery=''
while getopts ":d:u:v:c:" o; do
while getopts ":d:u:v:c:s:" o; do
case "${o}" in
d)
duration=${OPTARG}
@@ -22,11 +23,14 @@ run() {
c)
testcase=${OPTARG}
;;
s)
slowQuery=${OPTARG}
;;
esac
done
shift $((OPTIND-1))
docker run -t --network=host -v $PWD:/src -e URL=$url --rm -i loadimpact/k6:master run --vus $vus --duration $duration src/$testcase.js
docker run -t --network=host -v $PWD:/src -e URL=$url -e SLOW_QUERY=$slowQuery --rm -i loadimpact/k6:master run --vus $vus --duration $duration src/$testcase.js
}
run "$@"
+1
View File
@@ -0,0 +1 @@
data/menu.yaml
-14
View File
@@ -1,14 +0,0 @@
FROM grafana/docs-base:latest
# to get the git info for this repo
# COPY config.toml /site
# RUN rm -rf /site/content/*
# COPY ./sources /site/content/docs/
COPY config.toml /site
COPY awsconfig /site
COPY versions.json /site/static/js
VOLUME ["/site/content"]
+7 -36
View File
@@ -1,38 +1,9 @@
.PHONY: all default docs docs-build docs-shell shell checkvars
.PHONY: docs docs-test
# to allow `make DOCSPORT=9000 docs`
DOCSPORT := 3004
docs:
docker pull grafana/docs-base:latest
docker run -v $(PWD)/sources:/hugo/content/docs/grafana/latest -p 3002:3002 --rm -it grafana/docs-base:latest /bin/bash -c 'npm i && make webpack && hugo server -p 3002 -D --ignoreCache --baseUrl http://localhost:3002 --bind 0.0.0.0'
DOCKER_DOCS_IMAGE := grafana/grafana-docs
SOURCES_HOST_DIR := "$(shell pwd)/sources"
# assuming grafana and grafana.org-repo to be checked out in the same folder
DEFAULT_LAYOUTS_DIR := "$(shell pwd)/../../../../../../grafana.org/layouts"
# to allow `make DOCSDIR=docs docs-shell` (to create a bind mount in docs)
LAYOUTS_MOUNT := $(if $(LAYOUTS),-v $(DEFAULT_LAYOUTS_DIR):/site/layouts)
DOCS_MOUNT := -v $(SOURCES_HOST_DIR):/site/content
DOCKER_RUN_DOCS := docker run --rm -it $(DOCS_MOUNT) $(LAYOUTS_MOUNT) -e NOCACHE -p 3004:3004 -p 3005:3005
VERSION := $(shell head -n 1 VERSION)
default: docs
checkvars:
ifndef ENV
$(error ENV is undefined set via ENV=staging or ENV=prod as argument to make)
endif
docs: docs-build
$(DOCKER_RUN_DOCS) $(DOCS_MOUNT) -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" /bin/bash -c "grunt --env=dev-docs && grunt connect --port=3004"
watch: docs-build
$(DOCKER_RUN_DOCS) $(DOCS_MOUNT) $(LAYOUTS_MOUNT) -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" /bin/bash -c "grunt --env=dev-docs && grunt connect --port=3004 & grunt watch --port=3004 --env=dev-docs"
publish: checkvars docs-build
$(info Publishing ENV=${ENV} and VERSION=${VERSION})
$(DOCKER_RUN_DOCS) $(DOCS_MOUNT) -e DOCKERHOST "$(DOCKER_DOCS_IMAGE)" /bin/bash -c "./publish.sh ${ENV}-docs ${VERSION}"
docs-build:
docker build -t "$(DOCKER_DOCS_IMAGE)" --no-cache .
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'
+20 -72
View File
@@ -1,90 +1,38 @@
### Note for external contributors
# Building the docs locally
We are currently working on migrating the docs to a new static website. The `grafana/website` repository will be private during this migration, which unfortunately means the docs site can't be built without access.
When you contribute to documentation, it is a good practice to build the docs on your local machine to make sure your changes appear as you expect. This README explains the process for doing that.
The Markdown content however, is still public in this repository. We still encourage pull requests to make the docs better, and we will make sure the changed content works well on the current docs site. Include any images in your pull request, and we will move them to the `grafana/website` repository.
## Requirements
# Building the docs
Docker >= 2.1.0.3
To build the docs locally, you need to have Docker installed. The docs are built using [Hugo](http://gohugo.io/) - a static site generator.
## Build the doc site
**Prepare the Docker image**:
1. In the command line, make sure you are in the docs folder: `cd docs`.
2. Run `make docs`. This launches a preview of the docs website at `http://localhost:3002/docs/grafana/latest/` which will refresh automatically when changes to content in the `sources` directory are made.
> Due to migration to new static site, the Docker image needs to be built from `old-docs` branch.
---
Git clone `grafana/website` repo. Run these commands in the root of that repo. **Note** that you may require `sudo`
when running `make docs-build` depending on how your system's Docker
service is configured):
## Content guidelines
```
git clone https://github.com/grafana/website
cd website
make docs-build
```
Edit content in the `sources` directory.
**Build the Documentation**:
### Using `relref` for internal links
Now that the Docker image has been prepared we can build the
grafana docs and start a docs server.
Use the Hugo shortcode [relref](https://gohugo.io/content-management/cross-references/#use-ref-and-relref) any time you are linking to other internal docs pages.
If you have not cloned the Grafana repository already then:
### Edit the side menu
```
cd ..
git clone https://github.com/grafana/grafana
```
Edit [sources/menu.yaml](sources/menu.yaml) to make changes to the sidebar. Stop and rerun the `make docs` command for changes to take effect.
Switch your working directory to the directory this file
(README.md) is in.
### Add images
```
cd grafana/docs
```
Images are currently hosted in the grafana/website repo.
An AWS config file is required to build the docs Docker image and to publish the site to AWS. If you are building locally only and do not have any AWS credentials for docs.grafana.org then create an empty file named `awsconfig` in the current directory.
---
```
touch awsconfig
```
## Deploy changes to grafana.com
Then run (possibly with `sudo`):
When a PR is merged to master with changes in the `docs` directory, those changes are automatically synched to the grafana/website repo on the `docs-grafana` branch.
```
make watch
```
This command will not return control of the shell to the user. Instead
the command is now running a new Docker container built from the image
we created in the previous step.
Open [localhost:3004](http://localhost:3004) to view the docs.
### Images and Content
All markdown files are part of [this repository](https://github.com/grafana/grafana). However, all images are added to the [website repository](https://github.com/grafana/website). Therefore, the process of adding images is not as straightforward. These are the steps:
1. Ensure you create a feature branch within the [website repository](https://github.com/grafana/website) to make the change. This branch needs to be based on the `old-docs` branch.
1. Ensure the image(s) are compressed and optimised e.g. Using [tinypng](https://tinypng.com/).
1. Add the image(s) to the `/static/img/docs` directory.
1. Then, make a commit that adds the image(s).
1. The Pull Request you create needs to target where you branched off, the branch `old-docs`.
Finally, run:
```
make docs-build
```
This will rebuild the docs Docker image.
To be able to use your image(s) you have to quit (Ctrl+C) the `make watch` command (that you run in the same directory as this README). Then simply rerun `make watch`, it will restart the docs server but now with access to your image(s).
### Editing content
Changes to the markdown files should automatically cause a docs rebuild and live reload should reload the page in your browser.
### Troubleshooting
#### Running `make watch` errors out with `Warning: Task "default" not found.`
Ensure that the Docker image from the [website repository](https://github.com/grafana/website) is built using the `old-docs` branch.
In order to make those changes live, open a PR in the website repo that merges the `docs-grafana` branch into `master`. Then follow the publishing guidelines in that repo.
-20
View File
@@ -1,20 +0,0 @@
baseurl = "http://localhost:3002/"
languageCode = "en-us"
title = "Grafana Documentation"
canonifyurls = true
relativeURLs = false
verbose = true
enableRobotsTXT = true
disableSitemap = false
disableRSS = false
preservetaxonomynames = true
metaDataFormat = "yaml"
[taxonomies]
tag = "tags"
category = "categories"
[permalinks]
blog = ":year/:month/:day/:title/"
-64
View File
@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 85.12 92.46" style="enable-background:new 0 0 85.12 92.46;" xml:space="preserve">
<style type="text/css">
.st0{fill:url(#SVGID_1_);}
</style>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="42.562" y1="113.2595" x2="42.562" y2="28.7828">
<stop offset="0" style="stop-color:#FFF200"/>
<stop offset="1" style="stop-color:#F15A29"/>
</linearGradient>
<path class="st0" d="M85.01,40.8c-0.14-1.55-0.41-3.35-0.93-5.32c-0.51-1.97-1.28-4.13-2.39-6.37c-1.12-2.24-2.57-4.57-4.47-6.82
c-0.74-0.88-1.54-1.76-2.42-2.6c1.3-5.17-1.59-9.65-1.59-9.65c-4.98-0.31-8.14,1.54-9.31,2.39c-0.2-0.08-0.39-0.17-0.59-0.25
c-0.85-0.34-1.72-0.66-2.61-0.95c-0.89-0.28-1.81-0.54-2.74-0.76c-0.94-0.22-1.89-0.4-2.86-0.55c-0.17-0.03-0.34-0.05-0.51-0.07
C52.41,2.9,46.18,0,46.18,0c-6.95,4.41-8.27,10.57-8.27,10.57s-0.03,0.14-0.07,0.36c-0.38,0.11-0.77,0.22-1.15,0.34
c-0.53,0.16-1.06,0.36-1.59,0.55c-0.53,0.21-1.06,0.41-1.58,0.64c-1.05,0.45-2.09,0.96-3.1,1.53c-0.99,0.55-1.95,1.16-2.9,1.82
c-0.14-0.06-0.24-0.11-0.24-0.11c-9.62-3.68-18.17,0.75-18.17,0.75c-0.78,10.24,3.84,16.68,4.76,17.86
c-0.23,0.63-0.44,1.27-0.64,1.92c-0.71,2.32-1.24,4.7-1.57,7.16c-0.05,0.35-0.09,0.71-0.13,1.07C2.63,48.84,0,57.84,0,57.84
c7.42,8.53,16.07,9.06,16.07,9.06c0.01-0.01,0.02-0.01,0.02-0.02c1.1,1.96,2.37,3.83,3.8,5.57c0.6,0.73,1.23,1.43,1.88,2.11
c-2.71,7.74,0.38,14.18,0.38,14.18c8.26,0.31,13.69-3.61,14.83-4.52c0.82,0.28,1.66,0.53,2.5,0.74c2.54,0.65,5.14,1.04,7.74,1.15
c0.65,0.03,1.3,0.04,1.95,0.04l0.31,0l0.21-0.01l0.41-0.01l0.4-0.02l0.01,0.01c3.89,5.55,10.74,6.34,10.74,6.34
c4.87-5.13,5.15-10.22,5.15-11.33l0,0c0,0,0-0.04,0-0.07c0-0.09,0-0.15,0-0.15s0,0,0,0c0-0.08-0.01-0.15-0.01-0.23
c1.02-0.72,2-1.49,2.92-2.31c1.95-1.76,3.65-3.77,5.06-5.93c0.13-0.2,0.26-0.41,0.39-0.62c5.51,0.32,9.39-3.41,9.39-3.41
c-0.91-5.74-4.18-8.54-4.87-9.07l0,0c0,0-0.03-0.02-0.07-0.05c-0.04-0.03-0.06-0.05-0.06-0.05l0,0c-0.04-0.02-0.08-0.05-0.12-0.08
c0.03-0.35,0.06-0.69,0.08-1.04c0.04-0.62,0.06-1.24,0.06-1.85l0-0.46l0-0.23l0-0.12c0-0.16,0-0.1,0-0.16l-0.02-0.38l-0.03-0.52
c-0.01-0.18-0.02-0.34-0.04-0.5c-0.01-0.16-0.03-0.32-0.05-0.48l-0.06-0.48l-0.07-0.47c-0.09-0.63-0.21-1.26-0.36-1.88
c-0.58-2.47-1.54-4.82-2.82-6.93c-1.28-2.11-2.86-3.98-4.65-5.56c-1.79-1.58-3.79-2.85-5.9-3.79c-2.1-0.95-4.31-1.55-6.51-1.83
c-1.1-0.14-2.2-0.2-3.28-0.19l-0.41,0.01l-0.1,0c-0.03,0-0.15,0-0.14,0l-0.17,0.01l-0.4,0.03c-0.15,0.01-0.31,0.02-0.45,0.04
c-0.56,0.05-1.11,0.13-1.66,0.23c-2.18,0.41-4.24,1.2-6.06,2.28c-1.82,1.09-3.39,2.45-4.68,3.98c-1.28,1.54-2.28,3.24-2.96,5
c-0.69,1.76-1.07,3.58-1.18,5.35c-0.03,0.44-0.04,0.88-0.03,1.32c0,0.11,0,0.22,0.01,0.33l0.01,0.35c0.02,0.21,0.03,0.42,0.05,0.63
c0.09,0.9,0.25,1.75,0.49,2.58c0.48,1.66,1.25,3.15,2.2,4.43c0.95,1.28,2.08,2.33,3.28,3.15c1.2,0.82,2.49,1.41,3.76,1.79
c1.27,0.38,2.54,0.54,3.74,0.53c0.15,0,0.3,0,0.44-0.01c0.08,0,0.16-0.01,0.24-0.01c0.08,0,0.16-0.01,0.24-0.01
c0.13-0.01,0.25-0.03,0.38-0.04c0.03,0,0.07-0.01,0.11-0.01l0.12-0.02c0.08-0.01,0.15-0.02,0.23-0.03c0.16-0.02,0.29-0.05,0.43-0.08
c0.14-0.03,0.28-0.05,0.42-0.09c0.27-0.06,0.54-0.14,0.8-0.22c0.52-0.17,1.01-0.38,1.46-0.61c0.45-0.23,0.87-0.5,1.26-0.77
c0.11-0.08,0.22-0.16,0.33-0.25c0.42-0.33,0.48-0.94,0.15-1.35c-0.29-0.36-0.79-0.45-1.19-0.23c-0.1,0.05-0.2,0.11-0.3,0.16
c-0.35,0.17-0.71,0.32-1.09,0.45c-0.39,0.12-0.79,0.22-1.2,0.29c-0.21,0.03-0.42,0.06-0.63,0.08c-0.11,0.01-0.21,0.02-0.32,0.02
c-0.11,0-0.22,0.01-0.32,0.01c-0.1,0-0.21,0-0.31-0.01c-0.13-0.01-0.26-0.01-0.39-0.02c0,0-0.07,0-0.01,0l-0.04,0L51.4,61.6
c-0.06-0.01-0.12-0.01-0.17-0.02c-0.12-0.01-0.23-0.03-0.35-0.04c-0.93-0.13-1.88-0.4-2.79-0.82c-0.91-0.41-1.79-0.98-2.57-1.69
c-0.79-0.71-1.48-1.56-2.01-2.52c-0.54-0.96-0.92-2.03-1.09-3.16c-0.09-0.56-0.13-1.14-0.11-1.71c0.01-0.16,0.01-0.31,0.02-0.47
c0,0.04,0-0.02,0-0.03l0-0.06l0.01-0.12c0.01-0.08,0.01-0.15,0.02-0.23c0.03-0.31,0.08-0.62,0.13-0.92
c0.43-2.45,1.65-4.83,3.55-6.65c0.47-0.45,0.98-0.87,1.53-1.25c0.55-0.37,1.12-0.7,1.73-0.98c0.6-0.28,1.23-0.5,1.88-0.68
c0.65-0.17,1.31-0.29,1.98-0.35c0.34-0.03,0.67-0.04,1.01-0.04c0.09,0,0.16,0,0.23,0l0.27,0.01l0.17,0.01c0.07,0,0,0,0.03,0l0.07,0
l0.27,0.02c0.73,0.06,1.46,0.16,2.17,0.32c1.43,0.32,2.83,0.85,4.13,1.57c2.6,1.44,4.81,3.69,6.17,6.4c0.69,1.35,1.16,2.81,1.4,4.31
c0.06,0.38,0.1,0.76,0.13,1.14l0.02,0.29l0.01,0.29c0.01,0.1,0.01,0.19,0.01,0.29c0,0.09,0.01,0.2,0,0.27l0,0.25l-0.01,0.28
c-0.01,0.19-0.02,0.49-0.03,0.67c-0.03,0.42-0.07,0.83-0.12,1.24c-0.05,0.41-0.12,0.82-0.19,1.22c-0.08,0.4-0.17,0.81-0.27,1.21
c-0.2,0.8-0.46,1.59-0.76,2.36c-0.61,1.54-1.42,3-2.4,4.36c-1.96,2.7-4.64,4.9-7.69,6.29c-1.52,0.69-3.13,1.19-4.78,1.47
c-0.82,0.14-1.66,0.22-2.5,0.25l-0.15,0.01l-0.13,0l-0.27,0l-0.41,0l-0.21,0c0.11,0-0.02,0-0.01,0l-0.08,0
c-0.45-0.01-0.9-0.03-1.34-0.07c-1.79-0.13-3.55-0.45-5.27-0.95c-1.71-0.49-3.38-1.16-4.95-2c-3.14-1.68-5.95-3.98-8.15-6.76
c-1.11-1.38-2.07-2.87-2.87-4.43c-0.8-1.56-1.42-3.2-1.89-4.88c-0.46-1.68-0.75-3.39-0.86-5.12l-0.02-0.32l-0.01-0.08l0-0.07l0-0.14
l-0.01-0.28l0-0.07l0-0.1l0-0.2l-0.01-0.4l0-0.08c0,0.01,0,0.01,0-0.03l0-0.16c0-0.21,0.01-0.42,0.01-0.63
c0.03-0.85,0.1-1.73,0.21-2.61c0.11-0.88,0.26-1.76,0.44-2.63c0.18-0.87,0.39-1.74,0.64-2.59c0.49-1.71,1.1-3.36,1.82-4.92
c1.44-3.12,3.34-5.88,5.61-8.09c0.57-0.55,1.16-1.08,1.77-1.57c0.61-0.49,1.25-0.95,1.9-1.37c0.65-0.43,1.32-0.82,2.02-1.18
c0.34-0.19,0.7-0.35,1.05-0.52c0.18-0.08,0.36-0.16,0.53-0.24c0.18-0.08,0.36-0.16,0.54-0.23c0.72-0.3,1.46-0.56,2.21-0.8
c0.19-0.06,0.38-0.11,0.56-0.17c0.19-0.06,0.38-0.1,0.57-0.16c0.38-0.11,0.76-0.2,1.14-0.29c0.19-0.05,0.39-0.08,0.58-0.13
c0.19-0.04,0.38-0.08,0.58-0.12c0.19-0.04,0.39-0.07,0.58-0.11l0.29-0.05l0.29-0.04c0.2-0.03,0.39-0.06,0.59-0.09
c0.22-0.04,0.44-0.05,0.66-0.09c0.18-0.02,0.48-0.06,0.65-0.08c0.14-0.01,0.28-0.03,0.41-0.04l0.28-0.03l0.14-0.01l0.16-0.01
c0.22-0.01,0.44-0.03,0.66-0.04l0.33-0.02c0,0,0.12,0,0.02,0l0.07,0l0.14-0.01c0.19-0.01,0.38-0.02,0.56-0.03
c0.75-0.02,1.5-0.02,2.24,0c1.48,0.06,2.93,0.22,4.34,0.48c2.82,0.53,5.49,1.43,7.89,2.62c2.41,1.18,4.57,2.63,6.44,4.2
c0.12,0.1,0.23,0.2,0.35,0.3c0.11,0.1,0.23,0.2,0.34,0.3c0.23,0.2,0.44,0.41,0.66,0.61c0.22,0.2,0.43,0.41,0.64,0.62
c0.2,0.21,0.41,0.41,0.61,0.63c0.8,0.84,1.53,1.69,2.19,2.55c1.33,1.71,2.39,3.44,3.24,5.07c0.05,0.1,0.11,0.2,0.16,0.3
c0.05,0.1,0.1,0.2,0.15,0.3c0.1,0.2,0.2,0.4,0.29,0.6c0.09,0.2,0.19,0.39,0.27,0.59c0.09,0.2,0.17,0.39,0.25,0.58
c0.32,0.76,0.61,1.49,0.84,2.18c0.39,1.11,0.67,2.11,0.89,2.98c0.09,0.35,0.42,0.58,0.78,0.55c0.37-0.03,0.66-0.34,0.66-0.71
C85.14,43.15,85.11,42.05,85.01,40.8z"/>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

-3
View File
@@ -1,3 +0,0 @@
#!/bin/bash
make publish ENV=prod VERSION=root
-11
View File
@@ -1,11 +0,0 @@
{
"ErrorDocument": {
"Key": "jsearch/index.html"
},
"IndexDocument": {
"Suffix": "index.html"
},
"RoutingRules": [
{ "Condition": { "KeyPrefixEquals": "jsearch/index.html" }, "Redirect": { "HostName": "$BUCKET", "ReplaceKeyPrefixWith": "jsearch/" } }
]
}
Regular → Executable
+4 -7
View File
@@ -3,7 +3,7 @@ title = "Grafana documentation"
description = "Guides, Installation and Feature Documentation"
keywords = ["grafana", "installation", "documentation"]
type = "docs"
aliases = ["/v1.1", "/guides/reference/admin", "/v3.1"]
aliases = ["/docs/grafana/v1.1", "/docs/grafana/latest/guides/reference/admin", "/docs/grafana/v3.1"]
+++
# Grafana Documentation
@@ -60,14 +60,11 @@ aliases = ["/v1.1", "/guides/reference/admin", "/v3.1"]
<h4>Provisioning</h4>
<p>Learn how to automate your Grafana configuration.</p>
</a>
<a href="{{< relref "guides/whats-new-in-v6-5.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What's new in v6.5</h4>
<a href="{{< relref "guides/whats-new-in-v6-6.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>What's new in v6.6</h4>
<p>Explore the features and enhancements in the latest release.</p>
</a>
<a href="{{< relref "tutorials/screencasts.md" >}}" class="nav-cards__item nav-cards__item--guide">
<h4>Screencasts</h4>
<p>Watch Grafana video tutorials and guides.</p>
</a>
</div>
<h2>Data Source Guides</h2>
+198 -24
View File
@@ -10,41 +10,215 @@ weight = 8
# Grafana CLI
Grafana cli is a small executable that is bundled with Grafana-server and is supposed to be executed on the same machine Grafana-server is running on.
Grafana CLI is a small executable that is bundled with Grafana server and is supposed to be executed on the same machine Grafana server is running on.
## Plugins
Grafana CLI has `plugins` and `admin` commands, as well as global options.
The CLI allows you to install, upgrade and manage your plugins on the machine it is running on.
You can find more information about how to install and manage your plugins in the
[plugins page]({{< relref "../plugins/installation.md" >}}).
To list all commands and options:
```
grafana-cli -h
```
## Admin
**Linux users**
Some commands, such as installing or removing plugins, require `sudo` in order to run.
> This feature is only available in Grafana 4.1 and above.
**Windows users**
Some commands, such as installing or removing plugins, require you to run Windows PowerShell as Administrator.
To show all admin commands:
`grafana-cli admin`
Before you enter commands, `cd` into the Grafana bin directory. The default path is:
```
cd "C:\Program Files\GrafanaLabs\grafana\bin"
```
## Grafana CLI command syntax
The general syntax for commands in Grafana CLI is:
```bash
grafana-cli [global options] command [command options] [arguments...]
```
## Global options
Grafana CLI allows you to temporarily override certain Grafana default settings. Except for `--help` and `--version`, most global options are only used by developers.
Each global option applies only to the command in which it is used. For example, `--pluginsDir value` does not permanently change where Grafana saves plugins. It only changes it for command in which you apply the option.
### Display Grafana CLI help
`--help` or `-h` displays the help, including default paths and Docker configuration information.
**Example:**
```bash
grafana-cli -h
```
### Display Grafana CLI version
`--version` or `-v` prints the version of Grafana CLI currently running.
**Example:**
```bash
grafana-cli -v
```
### Override default plugin directory
`--pluginsDir value` overrides the path to where your local Grafana instance stores plugins. Use this option if you want to install, update, or remove a plugin somewhere other than the default directory ("/var/lib/grafana/plugins") [$GF_PLUGIN_DIR].
**Example:**
```bash
grafana-cli --pluginsDir "/var/lib/grafana/devplugins" plugins install <plugin-id>
```
### Override default plugin repo URL
`--repo value` allows you to download and install or update plugins from a repository other than the default Grafana repo.
**Example:**
```bash
grafana-cli --repo "https://example.com/plugins" plugins install <plugin-id>
```
### Override default plugin .zip URL
`--pluginUrl value` allows you to download a .zip file containing a plugin from a local URL instead of downloading it from the default Grafana source.
**Example:**
```bash
grafana-cli --pluginUrl https://company.com/grafana/plugins/<plugin-id>-<plugin-version>.zip plugins install <plugin-id>
```
### Override Transport Layer Security
**Warning:** Turning off TLS is a significant security risk. We do not recommend using this option.
`--insecure` allows you to turn off Transport Layer Security (TLS) verification (insecure). You might want to do this if you are downloading a plugin from a non-default source.
**Example:**
```bash
grafana-cli --insecure --pluginUrl https://company.com/grafana/plugins/<plugin-id>-<plugin-version>.zip plugins install <plugin-id>
```
### Enable debug logging
`--debug` or `-d` enables debug logging. Debug output is returned and shown in the terminal.
**Example:**
```bash
grafana-cli --debug plugins install <plugin-id>
```
### Override a configuration setting
`--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).
**Example:**
```bash
grafana-cli --configOverrides cfg:default.paths.log=/dev/null plugins install <plugin-id>
```
### Override homepath value
Sets the path for the Grafana install/home path, defaults to working directory. You do not need to use this if you are in the Grafana installation directory when using the CLI.
**Example:**
```bash
grafana-cli admin reset-admin-password --homepath "c:\Program Files\grafana" mynewpassword
```
### Override config file
`--config value` overrides the default location where Grafana expects the configuration file. Refer to [Configuration]({{< relref "../installation/configuration.md" >}}) for more information about configuring Grafana and default configuration file locations.
**Example:**
```bash
grafana-cli admin reset-admin-password --config "/etc/configuration/" mynewpassword
```
## Plugins commands
Grafana CLI allows you to install, upgrade, and manage your Grafana plugins. For more information about installing plugins, refer to [plugins page]({{< relref "../plugins/installation.md" >}}).
All listed commands apply to the Grafana default repositories and directories. You can override the defaults with [Global Options](#global-options).
### List available plugins
```bash
grafana-cli plugins list-remote
```
### Install the latest version of a plugin
```bash
grafana-cli plugins install <plugin-id>
```
### Install a specific version of a plugin
```bash
grafana-cli plugins install <plugin-id> <version>
```
### List installed plugins
```bash
grafana-cli plugins ls
```
### Update all installed plugins
```bash
grafana-cli plugins update-all
```
### Update one plugin
```bash
grafana-cli plugins update <plugin-id>
```
### Remove one plugin
```bash
grafana-cli plugins remove <plugin-id>
```
## Admin commands
Admin commands are only available in Grafana 4.1 and later.
### Show all admin commands
```bash
grafana-cli admin
```
### Reset admin password
You can reset the password for the admin user using the CLI. The use case for this command is when you have lost the admin password.
`grafana-cli admin reset-admin-password <new password>` resets the password for the admin user using the CLI. You might need to do this if you lose the admin password.
`grafana-cli admin reset-admin-password ...`
If there are two flags being used to set the homepath and the config file path, then running the command returns this error:
If running the command returns this error:
> Could not find config defaults, make sure homepath command line parameter is set or working directory is homepath
> Could not find config defaults, make sure homepath command line parameter is set or working directory is homepath
then there are two flags that can be used to set homepath and the config file path.
`grafana-cli --homepath "/usr/share/grafana" admin reset-admin-password newpass`
If you have not lost the admin password then it is better to set in the Grafana UI. If you need to set the password in a script then the [Grafana API](http://docs.grafana.org/http_api/user/#change-password) can be used. Here is an example using curl with basic auth:
To correct this, use the `--homepath` global option to specify the Grafana default homepath for this command:
```bash
curl -X PUT -H "Content-Type: application/json" -d '{
"oldPassword": "admin",
"newPassword": "newpass",
"confirmNew": "newpass"
}' http://admin:admin@<your_grafana_host>:3000/api/user/password
grafana-cli --homepath "/usr/share/grafana" admin reset-admin-password <new password>
```
If you have not lost the admin password, we recommend that you change the user password either in the User Preferences or in the Server Admin > User tab.
If you need to set the password in a script, then you can use the [Grafana User API]({{< relref "../http_api/user.md#change-password" >}}).
### Migrate data and encrypt passwords
`data-migration` runs a script that migrates or cleans up data in your database.
`encrypt-datasource-passwords` migrates passwords from unsecured fields to secure_json_data field. Returns `ok` unless there is an error. Safe to execute multiple times.
**Example:**
```bash
grafana-cli admin data-migration encrypt-datasource-passwords
```
+2 -2
View File
@@ -3,7 +3,7 @@ title = "Image Rendering"
description = ""
keywords = ["grafana", "image", "rendering", "phantomjs"]
type = "docs"
aliases = ["/installation/image-rendering"]
aliases = ["/docs/grafana/latest/installation/image-rendering"]
[menu.docs]
parent = "admin"
weight = 8
@@ -125,7 +125,7 @@ Please note that PhantomJS binaries are not included for ARM. To support this yo
## Alerting and render limits
Alert notifications can include images, but rendering many images at the same time can overload the server where the renderer is running. For instructions of how to configure this, see [concurrent_render_limit](/installation/configuration/#concurrent-render-limit).
Alert notifications can include images, but rendering many images at the same time can overload the server where the renderer is running. For instructions of how to configure this, see [concurrent_render_limit]({{< relref "../installation/configuration/#concurrent_render_limit" >}}).
## Troubleshooting
+7 -5
View File
@@ -3,7 +3,7 @@ title = "Provisioning"
description = ""
keywords = ["grafana", "provisioning"]
type = "docs"
aliases = ["/installation/provisioning"]
aliases = ["/docs/grafana/latest/installation/provisioning"]
[menu.docs]
parent = "admin"
weight = 8
@@ -15,7 +15,7 @@ In previous versions of Grafana, you could only use the API for provisioning dat
## Config File
Checkout the [configuration](/installation/configuration) page for more information on what you can configure in `grafana.ini`
Check out the [configuration]({{< relref "../installation/configuration" >}}) page for more information on what you can configure in `grafana.ini`
### Config File Locations
@@ -171,7 +171,7 @@ Since not all datasources have the same configuration settings we only have the
`{"authType":"keys","defaultRegion":"us-west-2","timeField":"@timestamp"}`
Secure json data is a map of settings that will be encrypted with [secret key](/installation/configuration/#secret-key) from the Grafana config. The purpose of this is only to hide content from the users of the application. This should be used for storing TLS Cert and password that Grafana will append to the request on the server side. All of these settings are optional.
Secure json data is a map of settings that will be encrypted with [secret key]({{< relref "../installation/configuration/#secret-key" >}}) from the Grafana config. The purpose of this is only to hide content from the users of the application. This should be used for storing TLS Cert and password that Grafana will append to the request on the server side. All of these settings are optional.
| Name | Type | Datasource | Description |
| ----| ---- | ---- | --- |
@@ -348,8 +348,8 @@ The following sections detail the supported settings for each alert notification
| url |
| recipient |
| username |
| iconEmoji |
| iconUrl |
| icon_emoji |
| icon_url |
| uploadImage |
| mention |
| token |
@@ -430,6 +430,7 @@ The following sections detail the supported settings for each alert notification
| apiKey |
| apiUrl |
| autoClose |
| overridePriority |
#### Alert notification `telegram`
@@ -437,6 +438,7 @@ The following sections detail the supported settings for each alert notification
| ---- |
| bottoken |
| chatid |
| uploadImage |
#### Alert notification `threema`
+31 -20
View File
@@ -40,7 +40,7 @@ When checked, this option will notify for all alert rules - existing and new.
When this option is checked additional notifications (reminders) will be sent for triggered alerts. You can specify how often reminders
should be sent using number of seconds (s), minutes (m) or hours (h), for example `30s`, `3m`, `5m` or `1h` etc.
**Important:** Alert reminders are sent after rules are evaluated. Therefore a reminder can never be sent more frequently than a configured [alert rule evaluation interval](/alerting/rules/#name-evaluation-interval).
**Important:** Alert reminders are sent after rules are evaluated. Therefore a reminder can never be sent more frequently than a configured [alert rule evaluation interval]({{< relref "rules/#name-evaluation-interval" >}}).
These examples show how often and when reminders are sent for a triggered alert.
@@ -65,7 +65,7 @@ Grafana ships with the following set of notification types:
### Email
To enable email notifications you have to setup [SMTP settings](/installation/configuration/#smtp)
To enable email notifications you have to setup [SMTP settings]({{< relref "../installation/configuration/#smtp" >}})
in the Grafana config. Email notifications will upload an image of the alert graph to an
external image destination if available or fallback to attaching the image to the email.
Be aware that if you use the `local` image storage email servers and clients might not be
@@ -100,6 +100,7 @@ To set up PagerDuty, all you have to do is to provide an API key.
Setting | Description
---------- | -----------
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
### Webhook
@@ -111,22 +112,27 @@ Example json body:
```json
{
"title": "My alert",
"ruleId": 1,
"ruleName": "Load peaking!",
"ruleUrl": "http://url.to.grafana/db/dashboard/my_dashboard?panelId=2",
"state": "alerting",
"imageUrl": "http://s3.image.url",
"message": "Load is peaking. Make sure the traffic is real and spin up more webfronts",
"evalMatches": [
"dashboardId":1,
"evalMatches":[
{
"metric": "requests",
"tags": {},
"value": 122
"value":1,
"metric":"Count",
"tags":{}
}
]
}
```
],
"imageUrl":"https://grafana.com/assets/img/blog/mixed_styles.png",
"message":"Notification Message",
"orgId":1,
"panelId":2,
"ruleId":1,
"ruleName":"Panel Title alert",
"ruleUrl":"http://localhost:3000/d/hZ7BuVbWz/test-dashboard?fullscreen\u0026edit\u0026tab=alert\u0026panelId=2\u0026orgId=1",
"state":"alerting",
"tags":{
"tag name":"tag value"
},
"title":"[Alerting] Panel Title alert"
}```
- **state** - The possible values for alert state are: `ok`, `paused`, `alerting`, `pending`, `no_data`.
@@ -165,6 +171,10 @@ Once these two properties are set, you can send the alerts to Kafka for further
Notifications can be sent by setting up an incoming webhook in Google Hangouts chat. Configuring such a webhook is described [here](https://developers.google.com/hangouts/chat/how-tos/webhooks).
### Squadcast
Squadcast helps you get alerted via Phone call, SMS, Email and Push notifications and lets you take actions on those alerts. Grafana notifications can be sent to Squadcast via a simple incoming webhook. Refer the official [Squadcast support documentation](https://support.squadcast.com/docs/grafana) for configuring these webhooks.
### All supported notifiers
Name | Type | Supports images | Support alert rule tags
@@ -177,12 +187,13 @@ Hipchat | `hipchat` | yes, external only | no
Kafka | `kafka` | yes, external only | no
Line | `line` | yes, external only | no
Microsoft Teams | `teams` | yes, external only | no
OpsGenie | `opsgenie` | yes, external only | no
OpsGenie | `opsgenie` | yes, external only | yes
Pagerduty | `pagerduty` | yes, external only | no
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
@@ -190,10 +201,10 @@ Webhook | `webhook` | yes, external only | yes
# Enable images in notifications {#external-image-store}
Grafana can render the panel associated with the alert rule as a PNG image and include that in the notification. Read more about the requirements and how to configure image rendering [here](/administration/image_rendering/).
Grafana can render the panel associated with the alert rule as a PNG image and include that in the notification. Read more about the requirements and how to configure image rendering [here]({{< relref "../administration/image_rendering/" >}}).
Most Notification Channels require that this image be publicly accessible (Slack and PagerDuty for example). In order to include images in alert notifications, Grafana can upload the image to an image store. It currently supports
Amazon S3, Webdav, Google Cloud Storage and Azure Blob Storage. So to set that up you need to configure the [external image uploader](/installation/configuration/#external-image-storage) in your grafana-server ini config file.
Amazon S3, Webdav, Google Cloud Storage and Azure Blob Storage. So to set that up you need to configure the [external image uploader]({{< relref "../installation/configuration/#external-image-storage" >}}) in your grafana-server ini config file.
Be aware that some notifiers requires public access to the image to be able to include it in the notification. So make sure to enable public access to the images. If you're using local image uploader, your Grafana instance need to be accessible by the internet.
@@ -212,4 +223,4 @@ It currently supports only the Prometheus Alertmanager notifier.
# 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](/installation/configuration/#domain) setting in Grafana.
This url is based on the [domain]({{< relref "../installation/configuration/#domain" >}}) setting in Grafana.
Regular → Executable
+3 -5
View File
@@ -40,14 +40,12 @@ Currently alerting supports a limited form of high availability. Since v4.2.0 of
## Rule Config
Currently only the graph panel supports alert rules but this will be added to the **Singlestat** and **Table**
panels as well in a future release.
Currently only the graph panel supports alert rules.
### Name and Evaluation interval
Here you can specify the name of the alert rule and how often the scheduler should evaluate the alert rule.
**Note:** You can set a minimum interval in the `alerting.min_interval_seconds` config field, to set a minimum time between evaluations. Check out the [[configuration]]({{< relref "../installation/configuration.md" >}}#min-interval-seconds) page for more information.
### For
@@ -107,7 +105,7 @@ we plan to track state **per series** in a future release.
> Starting with Grafana v5.3 you can configure reminders to be sent for triggered alerts. This will send additional notifications
> when an alert continues to fire. If other series (like server2 in the example above) also cause the alert rule to fire they will
> be included in the reminder notification. Depending on what notification channel you're using you may be able to take advantage
> of this feature for identifying new/existing series causing alert to fire. [Read more about notification reminders here](/alerting/notifications/#send-reminders).
> of this feature for identifying new/existing series causing alert to fire. [Read more about notification reminders here]({{< relref "notifications/#send-reminders" >}}).
### No Data / Null values
+7 -9
View File
@@ -12,12 +12,10 @@ weight = 200
Here you can find links to older versions of the documentation that might be better suited for your version
of Grafana.
- [Latest](http://docs.grafana.org)
- [Version 4.5](http://docs.grafana.org/v4.5)
- [Version 4.4](http://docs.grafana.org/v4.4)
- [Version 4.3](http://docs.grafana.org/v4.3)
- [Version 4.2](http://docs.grafana.org/v4.2)
- [Version 4.1](http://docs.grafana.org/v4.1)
- [Version 4.0](http://docs.grafana.org/v4.0)
- [Version 3.1](http://docs.grafana.org/v3.1)
- [Version 3.0](http://docs.grafana.org/v3.0)
- [Latest](/docs/grafana/latest/)
- [Version 4.5](/docs/grafana/v4.5)
- [Version 4.4](/docs/grafana/v4.4)
- [Version 4.3](/docs/grafana/v4.3)
- [Version 4.2](/docs/grafana/v4.2)
- [Version 4.1](/docs/grafana/v4.1)
- [Version 3.1](/docs/grafana/v3.1)
Regular → Executable
+5 -5
View File
@@ -3,7 +3,7 @@ title = "Auth Proxy"
description = "Grafana Auth Proxy Guide "
keywords = ["grafana", "configuration", "documentation", "proxy"]
type = "docs"
aliases = ["/tutorials/authproxy/"]
aliases = ["/docs/grafana/latest/tutorials/authproxy/"]
[menu.docs]
name = "Auth Proxy"
identifier = "auth-proxy"
@@ -37,7 +37,7 @@ whitelist =
# Optionally define more headers to sync other user attributes
# Example `headers = Name:X-WEBAUTH-NAME Email:X-WEBAUTH-EMAIL Groups:X-WEBAUTH-GROUPS`
headers =
# Checkout docs on this for more details on the below setting
# Check out docs on this for more details on the below setting
enable_login_token = false
```
@@ -238,7 +238,7 @@ headers = "Groups:X-WEBAUTH-GROUPS"
You use the `X-WEBAUTH-GROUPS` header to send the team information for each user. Specifically, the set of Grafana's group IDs that the user belongs to.
First, we need to set up the mapping between your authentication provider and Grafana. Follow [these instructions]({{< relref "auth/team-sync.md#enable-synchronization-for-a-team" >}}) to add groups to a team within Grafana.
First, we need to set up the mapping between your authentication provider and Grafana. Follow [these instructions]({{< relref "team-sync.md#enable-synchronization-for-a-team" >}}) to add groups to a team within Grafana.
Once that's done. You can verify your mappings by querying the API.
@@ -296,7 +296,7 @@ curl -H "X-WEBAUTH-USER: leonard" -H "X-WEBAUTH-GROUPS: lokiteamOnExternalSystem
With this, the user `leonard` will be automatically placed into the Loki team as part of Grafana authentication.
[Learn more about Team Sync]({{< relref "auth/team-sync.md" >}})
[Learn more about Team Sync]({{< relref "team-sync.md" >}})
## Login token and session cookie
@@ -306,4 +306,4 @@ a login token and cookie. You only have to configure your auth proxy to provide
Requests via other routes will be authenticated using the cookie.
Use settings `login_maximum_inactive_lifetime_days` and `login_maximum_lifetime_days` under `[auth]` to control session
lifetime. [Read more about login tokens](/auth/overview/#login-and-short-lived-tokens)
lifetime. [Read more about login tokens]({{< relref "overview/#login-and-short-lived-tokens" >}})
+3 -3
View File
@@ -12,9 +12,9 @@ weight = 3
# Enhanced LDAP Integration
> Enhanced LDAP Integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "enterprise" >}}).
> Enhanced LDAP Integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
The enhanced LDAP integration adds additional functionality on top of the [existing LDAP integration]({{< relref "auth/ldap.md" >}}).
The enhanced LDAP integration adds additional functionality on top of the [existing LDAP integration]({{< relref "ldap.md" >}}).
## LDAP Group Synchronization for Teams
@@ -28,7 +28,7 @@ Grafana keeps track of all synchronized users in teams and you can see which use
This mechanism allows Grafana to remove an existing synchronized user from a team when its LDAP group membership changes. This mechanism also enables you to manually add
a user as member of a team and it will not be removed when the user signs in. This gives you flexibility to combine LDAP group memberships and Grafana team memberships.
[Learn more about Team Sync]({{< relref "auth/team-sync.md">}})
[Learn more about Team Sync]({{< relref "team-sync.md">}})
<div class="clearfix"></div>
+1 -14
View File
@@ -188,7 +188,7 @@ allowed_organizations =
allowed_organizations =
```
> Note: It's important to ensure that the [root_url](/installation/configuration/#root-url) in Grafana is set in your Azure Application Reply URLs (App -> Settings -> Reply URLs)
> 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
@@ -221,19 +221,6 @@ allowed_organizations =
api_url = https://<your domain>.my.centrify.com/OAuth2/UserInfo/<Application ID>
```
## Set up OAuth2 with non-compliant providers
> Only available in Grafana v6.0 and above.
Some OAuth2 providers might not support `client_id` and `client_secret` passed via Basic Authentication HTTP header, which
results in `invalid_client` error. To allow Grafana to authenticate via these type of providers, the client identifiers must be
send via POST body, which can be enabled via the following settings:
```bash
[auth.generic_oauth]
send_client_credentials_via_post = true
```
## JMESPath examples
To ease configuring a proper JMESPath expression you can test/evaluate expression with a custom payload at http://jmespath.org/.
+1 -1
View File
@@ -113,4 +113,4 @@ Your GitHub teams can be referenced in two ways:
Example: `@grafana/developers`
[Learn more about Team Sync]({{< relref "auth/team-sync.md" >}})
[Learn more about Team Sync]({{< relref "team-sync.md" >}})
+1 -1
View File
@@ -125,5 +125,5 @@ the correct teams.
Your GitLab groups can be referenced in the same way as `allowed_groups`, like `example` or `foo/bar`.
[Learn more about Team Sync]({{< relref "auth/enhanced_ldap.md" >}})
[Learn more about Team Sync]({{< relref "enhanced_ldap.md" >}})
+1 -1
View File
@@ -31,7 +31,7 @@ First, you need to create a Google OAuth Client:
## Enable Google OAuth in Grafana
Specify the Client ID and Secret in the [Grafana configuration file]({{< relref "installation/configuration.md#config-file-locations" >}}). For example:
Specify the Client ID and Secret in the [Grafana configuration file]({{< relref "../installation/configuration.md#config-file-locations" >}}). For example:
```bash
[auth.google]
+3 -3
View File
@@ -3,7 +3,7 @@ title = "LDAP Authentication"
description = "Grafana LDAP Authentication Guide "
keywords = ["grafana", "configuration", "documentation", "ldap", "active directory"]
type = "docs"
aliases = ["/installation/ldap/"]
aliases = ["/docs/grafana/latest/installation/ldap/"]
[menu.docs]
name = "LDAP"
identifier = "ldap"
@@ -24,7 +24,7 @@ This means that you should be able to configure LDAP integration using any compl
## Enable LDAP
In order to use LDAP integration you'll first need to enable LDAP in the [main config file]({{< relref "installation/configuration.md" >}}) as well as specify the path to the LDAP
In order to use LDAP integration you'll first need to enable LDAP in the [main config file]({{< relref "../installation/configuration.md" >}}) as well as specify the path to the LDAP
specific configuration file (default: `/etc/grafana/ldap.toml`).
```bash
@@ -334,7 +334,7 @@ Please inspect your Active Directory configuration and documentation to find the
## Troubleshooting
To troubleshoot and get more log info enable ldap debug logging in the [main config file]({{< relref "installation/configuration.md" >}}).
To troubleshoot and get more log info enable ldap debug logging in the [main config file]({{< relref "../installation/configuration.md" >}}).
```bash
[log]
+6 -6
View File
@@ -16,18 +16,18 @@ permissions and org memberships.
## OAuth Integrations
- [Google OAuth]({{< relref "auth/google.md" >}})
- [GitHub OAuth]({{< relref "auth/github.md" >}})
- [Gitlab OAuth]({{< relref "auth/gitlab.md" >}})
- [Generic OAuth]({{< relref "auth/generic-oauth.md" >}}) (Okta2, BitBucket, Azure, OneLogin, Auth0)
- [Google OAuth]({{< relref "google.md" >}})
- [GitHub OAuth]({{< relref "github.md" >}})
- [Gitlab OAuth]({{< relref "gitlab.md" >}})
- [Generic OAuth]({{< relref "generic-oauth.md" >}}) (Okta2, BitBucket, Azure, OneLogin, Auth0)
## LDAP integrations
- [LDAP Authentication]({{< relref "auth/ldap.md" >}}) (OpenLDAP, ActiveDirectory, etc)
- [LDAP Authentication]({{< relref "ldap.md" >}}) (OpenLDAP, ActiveDirectory, etc)
## Auth proxy
- [Auth Proxy]({{< relref "auth/auth-proxy.md" >}}) If you want to handle authentication outside Grafana using a reverse
- [Auth Proxy]({{< relref "auth-proxy.md" >}}) If you want to handle authentication outside Grafana using a reverse
proxy.
## Grafana Auth
+5 -5
View File
@@ -2,7 +2,7 @@
title = "SAML Authentication"
description = "Grafana SAML Authentication"
keywords = ["grafana", "saml", "documentation", "saml-auth"]
aliases = ["/auth/saml/"]
aliases = ["/docs/grafana/latest/auth/saml/"]
type = "docs"
[menu.docs]
name = "SAML"
@@ -12,7 +12,7 @@ weight = 5
# SAML Authentication
> SAML Authentication integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "enterprise" >}}).
> SAML Authentication integration is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
> Only available in Grafana v6.3+
@@ -44,7 +44,7 @@ At the moment of writing, Grafana supports:
## Set up SAML Authentication
To use the SAML integration, you need to enable SAML in the [main config file]({{< relref "installation/configuration.md" >}}).
To use the SAML integration, you need to enable SAML in the [main config file]({{< relref "../installation/configuration.md" >}}).
```bash
[auth.saml]
@@ -90,7 +90,7 @@ assertion_attribute_email = mail
Important to note:
- like any other Grafana configuration, use of [environment variables for these options is supported]({{< relref "installation/configuration.md#using-environment-variables" >}})
- like any other Grafana configuration, use of [environment variables for these options is supported]({{< relref "../installation/configuration.md#using-environment-variables" >}})
- only one form of configuration option is required. Using multiple forms, e.g. both `certificate` and `certificate_path` will result in an error
## Grafana Configuration
@@ -170,7 +170,7 @@ An example is `assertion_attribute_name = "givenName"` where Grafana looks withi
## 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 info enable saml debug logging in the [main config file]({{< relref "../installation/configuration.md" >}}).
```bash
[log]
+5 -5
View File
@@ -2,7 +2,7 @@
title = "Team Sync"
description = "Grafana Team Sync"
keywords = ["grafana", "auth", "documentation"]
aliases = ["/auth/saml/"]
aliases = ["/docs/grafana/latest/auth/saml/"]
type = "docs"
[menu.docs]
name = "Team Sync"
@@ -12,7 +12,7 @@ weight = 5
# Team Sync
> Team Sync is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "enterprise" >}}).
> Team Sync is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
{{< docs-imagebox img="/img/docs/enterprise/team_members_ldap.png" class="docs-image--no-shadow docs-image--right" max-width= "600px" >}}
@@ -42,6 +42,6 @@ a user as member of a team and it will not be removed when the user signs in. Th
### Supported Providers
* [LDAP]({{< relref "auth/enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "auth/github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "auth/auth-proxy.md#team-sync-enterprise-only">}})
* [LDAP]({{< relref "enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "auth-proxy.md#team-sync-enterprise-only">}})
+1 -1
View File
@@ -2,7 +2,7 @@
title = "Contributor License Agreement (CLA)"
description = "Contributor License Agreement (CLA)"
type = "docs"
aliases = ["/project/cla", "docs/contributing/cla.html"]
aliases = ["/docs/grafana/latest/project/cla", "docs/contributing/cla.html"]
[menu.docs]
parent = "contribute"
weight = 1
+11 -13
View File
@@ -14,7 +14,7 @@ weight = 30
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 premium data sources,
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.
@@ -23,33 +23,33 @@ ___
### Enhanced LDAP Integration
With Grafana Enterprise you can set up synchronization between LDAP Groups and Teams. [Learn More]({{< relref "auth/enhanced_ldap.md" >}}).
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" >}}).
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" >}}).
Team Sync allows you to setup synchronization between teams in Grafana and teams in your auth provider so that your users automatically end up in the right team. [Learn More]({{< relref "../auth/team-sync.md" >}}).
Supported auth providers:
* [LDAP]({{< relref "auth/enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "auth/github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "auth/auth-proxy.md#team-sync-enterprise-only">}})
* [LDAP]({{< relref "../auth/enhanced_ldap.md#ldap-group-synchronization-for-teams" >}})
* [GitHub OAuth]({{< relref "../auth/github.md#team-sync-enterprise-only" >}})
* [Auth Proxy]({{< relref "../auth/auth-proxy.md#team-sync-enterprise-only">}})
### 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 allow you to restrict query access to only specific Teams and Users. [Learn More]({{< relref "../permissions/datasource_permissions.md" >}}).
### Reporting
Reporting make it possible to take any Dashboard and generate a PDF report and setup a schedule to have it delivered. [Learn More]({{< relref "features/reporting.md" >}}).
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" >}}).
### Premium Plugins
### Enterprise Plugins
With a Grafana Enterprise license you will get access to premium plugins, including:
With a Grafana Enterprise license you will get access to enterprise plugins, including:
* [Splunk](https://grafana.com/plugins/grafana-splunk-datasource)
* [AppDynamics](https://grafana.com/plugins/dlopes7-appdynamics-datasource)
@@ -83,5 +83,3 @@ This setting can also be set via ENV variable which is useful if you're running
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.
Regular → Executable
View File
+2 -2
View File
@@ -1,7 +1,7 @@
+++
title = "Data Sources"
type = "docs"
aliases = ["/datasources/overview/"]
aliases = ["/docs/grafana/latest/datasources/overview/"]
[menu.docs]
name = "Data Sources"
identifier = "datasources"
@@ -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. Checkout [Grafana.net](https://grafana.com/plugins) for more data sources.
Since Grafana 3.0 you can install data sources as plugins. Check out [Grafana.net](https://grafana.com/plugins) for more data sources.
+5 -5
View File
@@ -3,7 +3,7 @@ title = "Using Azure Monitor in Grafana"
description = "Guide for using Azure Monitor in Grafana"
keywords = ["grafana", "microsoft", "azure", "monitor", "application", "insights", "log", "analytics", "guide"]
type = "docs"
aliases = ["/datasources/azuremonitor"]
aliases = ["/docs/grafana/latest/datasources/azuremonitor"]
[menu.docs]
name = "Azure Monitor"
parent = "datasources"
@@ -146,7 +146,7 @@ Examples:
{{< docs-imagebox img="/img/docs/v60/azuremonitor-service-variables.png" class="docs-image--no-shadow" caption="Nested Azure Monitor Template Variables" >}}
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Azure Monitor Metrics Whitelist
@@ -155,7 +155,7 @@ Not all metrics returned by the Azure Monitor API have values. The Grafana data
### Azure Monitor Alerting
Grafana alerting is supported for the Azure Monitor service. This is not Azure Alerts support. Read more about how alerting in Grafana works [here]({{< relref "alerting/rules.md" >}}).
Grafana alerting is supported for the Azure Monitor service. This is not Azure Alerts support. Read more about how alerting in Grafana works [here]({{< relref "../../alerting/rules.md" >}}).
{{< docs-imagebox img="/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
@@ -198,7 +198,7 @@ Examples:
Use the one of the following queries in the `Query` field in the Variable edit view.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
| Name | Description |
@@ -216,7 +216,7 @@ Examples:
### Application Insights Alerting
Grafana alerting is supported for Application Insights. This is not Azure Alerts support. Read more about how alerting in Grafana works [here]({{< relref "alerting/rules.md" >}}).
Grafana alerting is supported for Application Insights. This is not Azure Alerts support. Read more about how alerting in Grafana works [here]({{< relref "../../alerting/rules.md" >}}).
{{< docs-imagebox img="/img/docs/v60/azuremonitor-alerting.png" class="docs-image--no-shadow" caption="Azure Monitor Alerting" >}}
+2 -2
View File
@@ -3,7 +3,7 @@ title = "AWS CloudWatch"
description = "Guide for using CloudWatch in Grafana"
keywords = ["grafana", "cloudwatch", "guide"]
type = "docs"
aliases = ["/datasources/cloudwatch"]
aliases = ["/docs/grafana/latest/datasources/cloudwatch"]
[menu.docs]
name = "AWS Cloudwatch"
identifier = "cloudwatch"
@@ -306,7 +306,7 @@ Please see the AWS documentation for [Service Quotas](https://docs.aws.amazon.co
## 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](/administration/provisioning/#datasources)
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.
@@ -3,7 +3,7 @@ title = "Using Elasticsearch in Grafana"
description = "Guide for using Elasticsearch in Grafana"
keywords = ["grafana", "elasticsearch", "guide"]
type = "docs"
aliases = ["/datasources/elasticsearch"]
aliases = ["/docs/grafana/latest/datasources/elasticsearch"]
[menu.docs]
name = "Elasticsearch"
parent = "datasources"
@@ -84,7 +84,7 @@ Identifier | Description
> Only available in Grafana v6.3+.
There are two parameters, `Message field name` and `Level field name`, that can optionally be configured from the data source settings page that determine
which fields will be used for log messages and log levels when visualizing logs in [Explore](/features/explore).
which fields will be used for log messages and log levels when visualizing logs in [Explore]({{< relref "../explore" >}}).
For example, if you're using a default setup of Filebeat for shipping logs to Elasticsearch the following configuration should work:
@@ -120,7 +120,7 @@ Instead of hard-coding things like server, application and sensor name in you me
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Query variable
@@ -168,11 +168,11 @@ In the above example, we have a lucene query that filters documents based on the
a variable in the *Terms* group by field input box. This allows you to use a variable to quickly change how the data is grouped.
Example dashboard:
[Elasticsearch Templated Dashboard](http://play.grafana.org/dashboard/db/elasticsearch-templated)
[Elasticsearch Templated Dashboard](https://play.grafana.org/dashboard/db/elasticsearch-templated)
## 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" >}}) allows 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.
@@ -188,7 +188,7 @@ Tags | Optional field name to use for event tags (can be an array or a CSV strin
> Only available in Grafana v6.3+.
Querying and displaying log data from Elasticsearch is available via [Explore](/features/explore).
Querying and displaying log data from Elasticsearch is available via [Explore]({{< relref "../explore" >}}).
![](/img/docs/v63/elasticsearch_explore_logs.png)
@@ -208,7 +208,7 @@ Optionally enter a lucene query into the query field to filter the log messages.
## 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](/administration/provisioning/#datasources)
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.
+6 -6
View File
@@ -3,7 +3,7 @@ title = "Using Graphite in Grafana"
description = "Guide for using graphite in Grafana"
keywords = ["grafana", "graphite", "guide"]
type = "docs"
aliases = ["/datasources/graphite"]
aliases = ["/docs/grafana/latest/datasources/graphite"]
[menu.docs]
name = "Graphite"
identifier = "graphite"
@@ -91,7 +91,7 @@ Instead of hard-coding things like server, application and sensor name in you me
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
Graphite 1.1 introduced tags and Grafana added support for Graphite queries with tags in version 5.0. To create a variable using tag values, then you need to use the Grafana functions `tags` and `tag_values`.
@@ -147,7 +147,7 @@ Why two ways? The first syntax is easier to read and write but does not allow yo
the second syntax in expressions like `my.server[[serverNumber]].count`.
Example:
[Graphite Templated Dashboard](http://play.grafana.org/dashboard/db/graphite-templated-nested)
[Graphite Templated Dashboard](https://play.grafana.org/dashboard/db/graphite-templated-nested)
### Variable Usage in Tag Queries
@@ -159,11 +159,11 @@ Example of a tag expression with regex formatting and using the Equal Tilde oper
server=~${servers:regex}
```
Checkout the [Advanced Formatting Options section in the Variables]({{< relref "../../reference/templating.md#advanced-formatting-options" >}}) documentation for examples and details.
Check out the [Advanced Formatting Options section in the Variables]({{< relref "../../reference/templating.md#advanced-formatting-options" >}}) documentation for examples and details.
## 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" >}}) allows 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,
@@ -171,7 +171,7 @@ specify a tag or wildcard (leave empty should also work)
## 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](/administration/provisioning/#datasources)
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.
+5 -5
View File
@@ -3,7 +3,7 @@ title = "Using InfluxDB in Grafana"
description = "Guide for using InfluxDB in Grafana"
keywords = ["grafana", "influxdb", "guide"]
type = "docs"
aliases = ["/datasources/influxdb"]
aliases = ["/docs/grafana/latest/datasources/influxdb"]
[menu.docs]
name = "InfluxDB"
parent = "datasources"
@@ -121,7 +121,7 @@ change the option `Format As` to `Table` if you want to show raw data in the `Ta
> Only available in Grafana v6.3+.
Querying and displaying log data from InfluxDB is available via [Explore](/features/explore).
Querying and displaying log data from InfluxDB is available via [Explore]({{< relref "../explore" >}}).
![](/img/docs/v63/influxdb_explore_logs.png)
@@ -144,7 +144,7 @@ Instead of hard-coding things like server, application and sensor name in you me
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Query variable
@@ -194,7 +194,7 @@ Why two ways? The first syntax is easier to read and write but does not allow yo
options are enabled, Grafana converts the labels from plain text to a regex compatible string. Which means you have to use `=~` instead of `=`.
Example Dashboard:
[InfluxDB Templated Dashboard](http://play.grafana.org/dashboard/db/influxdb-templated-queries)
[InfluxDB Templated Dashboard](https://play.grafana.org/dashboard/db/influxdb-templated)
### Ad hoc filters variable
@@ -203,7 +203,7 @@ be applied to all your InfluxDB queries.
## Annotations
[Annotations]({{< relref "reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. Add annotation queries using the Annotations view in the Dashboard menu.
[Annotations]({{< relref "../../reference/annotations.md" >}}) allows you to overlay rich event information on top of graphs. Add annotation queries using the Annotations view in the Dashboard menu.
An example query:
+32 -8
View File
@@ -3,7 +3,7 @@ title = "Using Loki in Grafana"
description = "Guide for using Loki in Grafana"
keywords = ["grafana", "loki", "logging", "guide"]
type = "docs"
aliases = ["/datasources/loki"]
aliases = ["/docs/grafana/latest/datasources/loki"]
[menu.docs]
name = "Loki"
parent = "datasources"
@@ -18,7 +18,7 @@ weight = 6
> Viewing Loki data in dashboard panels is supported in Grafana v6.4+.
Grafana ships with built-in support for Loki, Grafana's log aggregation system.
Just add it as a data source and you are ready to query your log data in [Explore](/features/explore).
Just add it as a data source and you are ready to query your log data in [Explore]({{< relref "../explore" >}}).
## Adding the data source
@@ -36,9 +36,28 @@ Just add it as a data source and you are ready to query your log data in [Explor
| _URL_ | The URL of the Loki instance, e.g., `http://localhost:3100` |
| _Maximum lines_ | Upper limit for number of log lines returned by Loki (default is 1000). Decrease if your browser is sluggish when displaying logs in Explore. |
### 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).
{{< 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.
- **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.
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields_debug.png" class="docs-image--no-shadow" caption="Screenshot of the derived fields debugging" >}}
The new field with the link shown in log details:
{{< docs-imagebox img="/img/docs/v65/loki_derived_fields_detail.png" class="docs-image--no-shadow" caption="Screenshot of the derived field in log detail" >}}
## Querying Logs
Querying and displaying log data from Loki is available via [Explore](/features/explore), and with the [logs panel](/features/panels/logs/) in dashboards. Select the Loki data source, and then enter a log query to display your logs.
Querying and displaying log data from Loki is available via [Explore]({{< relref "../explore" >}}), and with the [logs panel]({{< relref "../panels/logs/" >}}) in dashboards. Select the Loki data source, and then enter a log query to display your logs.
### Log Queries
@@ -50,7 +69,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="/assets/videos/explore_loki.mp4" type="video/mp4">
<source src="https://grafana.com/static/assets/videos/explore_loki.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</div>
@@ -106,7 +125,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](/features/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" >}}) and in dashboards with a Live toggle in the query editor.
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.
@@ -125,7 +144,7 @@ log message you're interested in.
Instead of hard-coding things like server, application and sensor name in your metric queries, you can use variables in their place. Variables are shown as drop-down select boxes at the top of the dashboard. These drop-down boxes make it easy to change the data being displayed in your dashboard.
Checkout the [Templating](/reference/templating) documentation for an introduction to the templating feature and the different types of template variables.
Check out the [Templating]({{< relref "../../reference/templating" >}}) documentation for an introduction to the templating feature and the different types of template variables.
## Annotations
@@ -136,7 +155,7 @@ You can use any non-metric Loki query as a source for annotations. Log content w
## Configure the data source with provisioning
You can set up the data source via 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](/administration/provisioning/#datasources)
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 is an example:
@@ -152,7 +171,7 @@ datasources:
maxLines: 1000
```
Here's another with basic auth:
Here's another with basic auth and derived field. Keep in mind that `$` character needs to be escaped in yaml values as it is used to interpolate environment variables:
```yaml
apiVersion: 1
@@ -167,4 +186,9 @@ datasources:
basicAuthPassword: test_password
jsonData:
maxLines: 1000
derivedFields:
- datasourceName: Jaeger
matcherRegex: "traceID=(\\w+)"
name: TraceID
url: "http://localhost:16686/trace/$${__value.raw}"
```
+8 -7
View File
@@ -39,7 +39,7 @@ Name | Description
### Min time interval
A lower limit for the [$__interval](/reference/templating/#the-interval-variable) and [$__interval_ms](/reference/templating/#the-interval-ms-variable) variables.
A lower limit for the [$__interval]({{< relref "../../reference/templating/#the-interval-variable" >}}) and [$__interval_ms]({{< relref "../../reference/templating/#the-interval-ms-variable" >}}) variables.
Recommended to be set to write frequency, for example `1m` if your data is written every minute.
This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
@@ -178,7 +178,7 @@ The resulting table panel:
## Time series queries
If you set `Format as` to `Time series`, for use in Graph panel for example, then the query must must have a column named `time` that returns either a sql datetime or any numeric datatype representing Unix epoch in seconds. You may return a column named `metric` that is used as metric name for the value column. Any column except `time` and `metric` is treated as a value column. If you omit the `metric` column, the name of the value column will be the metric name. You may select multiple value columns, each will have its name as metric.
If you set `Format as` to `Time series`, for use in Graph panel for example, then the query must have a column named `time` that returns either a SQL datetime or any numeric datatype representing Unix epoch in seconds. You may return a column named `metric` that is used as metric name for the value column. Any column except `time` and `metric` is treated as a value column. If you omit the `metric` column, the name of the value column will be the metric name. You may select multiple value columns, each will have its name as metric.
If you return multiple value columns and a column named `metric` then this column is used as prefix for the series name (only available in Grafana 5.3+).
Resultsets of time series queries need to be sorted by time.
@@ -300,7 +300,7 @@ Any series lacking a value in a 3 minute window will have a value of zero which
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
### Query Variable
@@ -374,13 +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" >}}) allows 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.
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.
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
@@ -410,7 +411,7 @@ WHERE
ORDER BY 1
```
**Example query using time column of native sql date/time data type:**
**Example query using time column of native SQL date/time data type:**
```sql
SELECT
@@ -579,7 +580,7 @@ conditions.
## 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](/administration/provisioning/#datasources)
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.
+8 -7
View File
@@ -41,7 +41,7 @@ Name | Description
### Min time interval
A lower limit for the [$__interval](/reference/templating/#the-interval-variable) and [$__interval_ms](/reference/templating/#the-interval-ms-variable) variables.
A lower limit for the [$__interval]({{< relref "../../reference/templating/#the-interval-variable" >}}) and [$__interval_ms]({{< relref "../../reference/templating/#the-interval-ms-variable" >}}) variables.
Recommended to be set to write frequency, for example `1m` if your data is written every minute.
This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
@@ -182,7 +182,7 @@ The resulting table panel:
## Time series queries
If you set `Format as` to `Time series`, for use in Graph panel for example, then the query must return a column named `time` that returns either a sql datetime or any numeric datatype representing Unix epoch.
If you set `Format as` to `Time series`, for use in Graph panel for example, then the query must return a column named `time` that returns either a SQL datetime or any numeric datatype representing Unix epoch.
Any column except `time` and `metric` is treated as a value column.
You may return a column named `metric` that is used as metric name for the value column.
If you return multiple value columns and a column named `metric` then this column is used as prefix for the series name (only available in Grafana 5.3+).
@@ -238,7 +238,7 @@ This feature is currently available in the nightly builds and will be included i
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
### Query Variable
@@ -335,7 +335,7 @@ Read more about variable formatting options in the [Variables]({{< relref "../..
## Annotations
[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.
[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.
**Example query using time column with epoch values:**
@@ -350,7 +350,7 @@ WHERE
$__unixEpochFilter(epoch_time)
```
**Example query using time column of native sql date/time data type:**
**Example query using time column of native SQL date/time data type:**
```sql
SELECT
@@ -365,7 +365,8 @@ 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.
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.
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
@@ -375,7 +376,7 @@ Time series queries should work in alerting conditions. Table formatted queries
## 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](/administration/provisioning/#datasources)
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.
@@ -3,7 +3,7 @@ title = "Using OpenTSDB in Grafana"
description = "Guide for using OpenTSDB in Grafana"
keywords = ["grafana", "opentsdb", "guide"]
type = "docs"
aliases = ["/datasources/opentsdb", "docs/features/opentsdb"]
aliases = ["/docs/grafana/latest/datasources/opentsdb", "/docs/grafana/latest/features/opentsdb"]
[menu.docs]
name = "OpenTSDB"
parent = "datasources"
@@ -53,7 +53,7 @@ Instead of hard-coding things like server, application and sensor name in you me
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Query variable
@@ -86,11 +86,11 @@ Query | Description
*tag_values(cpu, hostname, env=$env)* | Return tag values for cpu metric, selected env tag value and tag key hostname
*tag_values(cpu, hostname, env=$env, region=$region)* | Return tag values for cpu metric, selected env tag value, selected region tag value and tag key hostname
For details on OpenTSDB metric queries checkout the official [OpenTSDB documentation](http://opentsdb.net/docs/build/html/index.html)
For details on OpenTSDB metric queries, check out the official [OpenTSDB documentation](http://opentsdb.net/docs/build/html/index.html)
## 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](/administration/provisioning/#datasources)
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.
@@ -106,3 +106,8 @@ datasources:
tsdbResolution: 1
tsdbVersion: 1
```
## Lookup limits
By default, at most 1000 records are looked up from OpenTSDB.
You can change this by modifying the "Lookup Limit" in the OpenTSDB settings page.
+7 -6
View File
@@ -41,7 +41,7 @@ Name | Description
### Min time interval
A lower limit for the [$__interval](/reference/templating/#the-interval-variable) and [$__interval_ms](/reference/templating/#the-interval-ms-variable) variables.
A lower limit for the [$__interval]({{< relref "../../reference/templating/#the-interval-variable" >}}) and [$__interval_ms]({{< relref "../../reference/templating/#the-interval-ms-variable" >}}) variables.
Recommended to be set to write frequency, for example `1m` if your data is written every minute.
This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
@@ -244,7 +244,7 @@ ORDER BY time
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different types of template variables.
### Query Variable
@@ -339,7 +339,7 @@ Read more about variable formatting options in the [Variables]({{< relref "../..
## Annotations
[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.
[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.
**Example query using time column with epoch values:**
@@ -354,7 +354,7 @@ WHERE
$__unixEpochFilter(epoch_time)
```
**Example query using time column of native sql date/time data type:**
**Example query using time column of native SQL date/time data type:**
```sql
SELECT
@@ -369,7 +369,8 @@ 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.
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.
text | Event description field.
tags | Optional field name to use for event tags as a comma separated string.
@@ -380,7 +381,7 @@ conditions.
## 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](/administration/provisioning/#datasources)
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.
+20 -19
View File
@@ -3,7 +3,7 @@ title = "Using Prometheus in Grafana"
description = "Guide for using Prometheus in Grafana"
keywords = ["grafana", "prometheus", "guide"]
type = "docs"
aliases = ["/datasources/prometheus"]
aliases = ["/docs/grafana/latest/datasources/prometheus"]
[menu.docs]
name = "Prometheus"
parent = "datasources"
@@ -25,16 +25,16 @@ Grafana includes built-in support for Prometheus.
## Data source options
| Name | Description |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| _Name_ | The data source name. This is how you refer to the data source in panels and queries. |
| _Default_ | Default data source means that it will be pre-selected for new panels. |
| _Url_ | The HTTP protocol, ip and port of you Prometheus server (default port is usually 9090) |
| _Access_ | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. |
| _Basic Auth_ | Enable basic authentication to the Prometheus data source. |
| _User_ | Name of your Prometheus user |
| _Password_ | Database user's password |
| _Scrape interval_ | This will be used as a lower limit for the Prometheus step query parameter. Default value is 15s. |
| Name | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| _Name_ | The data source name. This is how you refer to the data source in panels and queries. |
| _Default_ | Default data source means that it will be pre-selected for new panels. |
| _Url_ | The URL of your Prometheus server, e.g. `http://prometheus.example.org:9090`. |
| _Access_ | Server (default) = URL needs to be accessible from the Grafana backend/server, Browser = URL needs to be accessible from the browser. |
| _Basic Auth_ | Enable basic authentication to the Prometheus data source. |
| _User_ | User name for basic authentication. |
| _Password_ | Password for basic authentication. |
| _Scrape interval_ | Set this to the typical scrape and evaluation interval configured in Prometheus. Defaults to 15s. |
| _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
@@ -48,11 +48,12 @@ Open a graph in edit mode by click the title > Edit (or by pressing `e` key whil
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| _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`. |
| _Min step_ | Set a lower limit for the Prometheus step option. Step controls how big the jumps are when the Prometheus query engine performs range queries. Sadly there is no official prometheus documentation to link to for this very important option. |
| _Resolution_ | Controls the step option. Small steps create high-resolution graphs but can be slow over larger time ranges, lowering the resolution can speed things up. `1/2` will try to set step option to generate 1 data point for every other pixel. A value of `1/10` will try to set step option so there is a data point every 10 pixels. |
| _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. |
| _Format as_ | Switch between Table, Time series or Heatmap. Table format will only work in the Table panel. Heatmap format is suitable for displaying metrics having histogram type on Heatmap panel. Under the hood, it converts cumulative histogram to regular and sorts series by the bucket bound. |
| _Format as_ | Switch between `Table`, `Time series` or `Heatmap`. `Table` will only work in the Table panel. `Heatmap` is suitable for displaying metrics of the Histogram type on a Heatmap panel. Under the hood, it converts cumulative histograms to regular ones and sorts series by the bucket bound. |
| _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.
@@ -62,7 +63,7 @@ Open a graph in edit mode by click the title > Edit (or by pressing `e` key whil
The Prometheus datasource allows you to run "instant" queries, which queries 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](/features/panels/graph/#series-overrides).
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" >}}).
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`.
@@ -74,7 +75,7 @@ Instead of hard-coding things like server, application and sensor name in your m
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Query variable
@@ -96,7 +97,7 @@ For details of _metric names_, _label names_ and _label values_ are please refer
> 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](/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
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
`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.
@@ -129,7 +130,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" >}}) allows 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.
@@ -145,7 +146,7 @@ Since 4.6.0 Grafana exposes metrics for Prometheus on the `/metrics` endpoint. W
## 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](/administration/provisioning/#datasources)
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.
+4 -4
View File
@@ -3,7 +3,7 @@ title = "Using Stackdriver in Grafana"
description = "Guide for using Stackdriver in Grafana"
keywords = ["grafana", "stackdriver", "google", "guide"]
type = "docs"
aliases = ["/datasources/stackdriver"]
aliases = ["/docs/grafana/latest/datasources/stackdriver"]
[menu.docs]
name = "Google Stackdriver"
parent = "datasources"
@@ -172,7 +172,7 @@ Instead of hard-coding things like server, application and sensor name in you me
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.
Checkout the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
Check out the [Templating]({{< relref "../../reference/templating.md" >}}) documentation for an introduction to the templating feature and the different
types of template variables.
### Query Variable
@@ -202,7 +202,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" >}}) allows 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:
@@ -224,7 +224,7 @@ Example Result: `monitoring.googleapis.com/uptime_check/http_status has this val
## 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](/administration/provisioning/#datasources)
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 is a provisioning example using the JWT (Service Account key file) authentication type.
View File
+1 -1
View File
@@ -2,7 +2,7 @@
title = "Alert List"
keywords = ["grafana", "alert list", "documentation", "panel", "alertlist"]
type = "docs"
aliases = ["/reference/alertlist/"]
aliases = ["/docs/grafana/latest/reference/alertlist/"]
[menu.docs]
name = "Alert list"
parent = "panels"
+1 -1
View File
@@ -2,7 +2,7 @@
title = "Dashboard List"
keywords = ["grafana", "dashboard list", "documentation", "panel", "dashlist"]
type = "docs"
aliases = ["/reference/dashlist/"]
aliases = ["/docs/grafana/latest/reference/dashlist/"]
[menu.docs]
name = "Dashboard list"
parent = "panels"
+2 -2
View File
@@ -2,7 +2,7 @@
title = "Graph Panel"
keywords = ["grafana", "graph panel", "documentation", "guide", "graph"]
type = "docs"
aliases = ["/reference/graph/"]
aliases = ["/docs/grafana/latest/reference/graph/"]
[menu.docs]
name = "Graph"
parent = "panels"
@@ -187,7 +187,7 @@ Time regions allow you to highlight certain time regions of the graph to make it
The time range tab allows you to override the dashboard time range and specify a panel specific time.
Either through a relative from now time option or through a timeshift.
Panel time overrides and timeshift are described in more detail [here]({{< relref "reference/timerange.md#panel-time-overrides-timeshift" >}}).
Panel time overrides and timeshift are described in more detail [here]({{< relref "../../reference/timerange.md#panel-time-overrides-timeshift" >}}).
### Data link
View File
+1 -1
View File
@@ -2,7 +2,7 @@
title = "Logs Panel"
keywords = ["grafana", "dashboard", "documentation", "panels", "logs panel"]
type = "docs"
aliases = ["/reference/logs/"]
aliases = ["/docs/grafana/latest/reference/logs/"]
[menu.docs]
name = "Logs"
parent = "panels"
+3 -1
View File
@@ -2,7 +2,7 @@
title = "Singlestat Panel"
keywords = ["grafana", "dashboard", "documentation", "panels", "singlestat"]
type = "docs"
aliases = ["/reference/singlestat/"]
aliases = ["/docs/grafana/latest/reference/singlestat/"]
[menu.docs]
name = "Singlestat"
parent = "panels"
@@ -85,6 +85,8 @@ Gauges gives a clear picture of how high a value is in it's context. It's a grea
Value/Range to text mapping allows you to translate the value of the summary stat into explicit text. The text will respect all styling, thresholds and customization defined for the value. This can be useful to translate the number of the main Singlestat value into a context-specific human-readable word or message.
If you want to replace the default "No data" text being displayed when no data is available, add a `value to text mapping` from `null` to your preferred custom text value.
<div class="clearfix"></div>
## Troubleshooting
+2 -2
View File
@@ -2,7 +2,7 @@
title = "Table Panel"
keywords = ["grafana", "dashboard", "documentation", "panels", "table panel"]
type = "docs"
aliases = ["/reference/table/"]
aliases = ["/docs/grafana/latest/reference/table/"]
[menu.docs]
name = "Table"
parent = "panels"
@@ -17,7 +17,7 @@ weight = 4
The table panel is very flexible, supporting both multiple modes for time series as well as for
table, annotation and raw JSON data. It also provides date formatting and value formatting and coloring options.
To view table panels in action and test different configurations with sample data, check out the [Table Panel Showcase in the Grafana Playground](http://play.grafana.org/dashboard/db/table-panel-showcase).
To view table panels in action and test different configurations with sample data, check out the [Table Panel Showcase in the Grafana Playground](https://play.grafana.org/dashboard/db/table-panel-showcase).
## Querying Data
+1 -1
View File
@@ -2,7 +2,7 @@
title = "Text"
keywords = ["grafana", "text", "documentation", "panel"]
type = "docs"
aliases = ["/reference/alertlist/"]
aliases = ["/docs/grafana/latest/reference/alertlist/"]
[menu.docs]
name = "Text"
parent = "panels"
+9 -4
View File
@@ -3,7 +3,7 @@ title = "Reporting"
description = ""
keywords = ["grafana", "reporting"]
type = "docs"
aliases = ["/administration/reports"]
aliases = ["/docs/grafana/latest/administration/reports"]
[menu.docs]
parent = "features"
weight = 8
@@ -11,7 +11,7 @@ weight = 8
# Reporting
> Reporting is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "enterprise" >}}).
> Reporting is only available in Grafana Enterprise. Read more about [Grafana Enterprise]({{< relref "../enterprise" >}}).
> Only available in Grafana v6.4+
@@ -27,7 +27,12 @@ With Reports there are a few things to keep in mind, most importantly, any chang
> SMTP must be configured for reports to be sent
We recommend using the new image rendering plugin with reporting as it supports a wider range of panels than the built-in image rendering. Read more about it [here]({{< relref "administration/image_rendering.md#grafana-image-renderer-plugin" >}})
### 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
@@ -46,4 +51,4 @@ Currently only Organisation Admins can create reports. To get to report click on
## Debugging errors
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" >}}).
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" >}}).
+43 -68
View File
@@ -4,117 +4,92 @@ description = "Grafana intro and concept guide"
keywords = ["grafana", "intro", "guide", "concepts"]
type = "docs"
[menu.docs]
name = "Basic Concepts"
name = "Basic concepts"
identifier = "basic_concepts"
parent = "guides"
weight = 2
+++
# Basic Concepts
# Basic concepts
This document is a “bottom up” introduction to basic concepts in Grafana, and can be used as a starting point to get familiar with core features.
This document is an introduction to basic concepts in Grafana. Use it as a starting point to get familiar with core Grafana features.
### Data Source
## Dashboard
Grafana supports many different storage backends for your time series data (Data Source). Each Data Source has a specific Query Editor that is customized for the features and capabilities that the particular Data Source exposes.
The *dashboard* is where it all comes together. A dashboard is a set of one or more panels organized and arranged into one or more rows.
The following data sources are officially supported:
The time period for the dashboard can be controlled by the [Time range controls]({{< relref "../reference/timerange.md" >}}) in the upper right of the dashboard.
* [CloudWatch]({{< relref "features/datasources/cloudwatch.md" >}})
* [Elasticsearch]({{< relref "features/datasources/elasticsearch.md" >}})
* [Graphite]({{< relref "features/datasources/graphite.md" >}})
* [InfluxDB]({{< relref "features/datasources/influxdb.md" >}})
* [OpenTSDB]({{< relref "features/datasources/opentsdb.md" >}})
* [Prometheus]({{< relref "features/datasources/prometheus.md" >}})
Dashboards can use [templating]({{< relref "../reference/templating.md" >}}) to make them more dynamic and interactive.
The query language and capabilities of each Data Source are obviously very different. You can combine data from multiple Data Sources onto a single Dashboard, but each Panel is tied to a specific Data Source that belongs to a particular Organization.
Dashboards can use [annotations]({{< relref "../reference/annotations.md" >}}) to display event data across panels. This can help correlate the time series data in the panel with other events.
### Organization
Dashboards can be [shared]({{< relref "../reference/share_dashboard.md" >}}) easily in a variety of ways.
Grafana supports multiple organizations in order to support a wide variety of deployment models, including using a single Grafana instance to provide service to multiple potentially untrusted Organizations.
Dashboards can be tagged, and the dashboard picker provides quick, searchable access to all dashboards in a particular organization.
In many cases, Grafana will be deployed with a single Organization.
## Data source
Each Organization can have one or more 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*.
All Dashboards are owned by a particular Organization.
Each data source has a specific query editor that is customized for the features and capabilities that the particular data source exposes. The query language and capabilities of each data source are obviously very different. You can combine data from multiple data sources into a single dashboard, but each panel is connected to a specific data source that belongs to a particular organization.
> Note: It is important to remember that most metric databases do not provide any sort of per-user series authentication. Therefore, in Grafana, Data Sources and Dashboards are available to all Users in a particular Organization.
Refer to the [Data sources section]({{< relref "../features/datasources" >}}) for a list of data sources that Grafana officially supports.
For more details on the user model for Grafana, please refer to [Admin](/reference/admin/)
## Organization
### User
Grafana supports multiple *organizations* in order to support a wide variety of deployment models, including using a single Grafana instance to provide service to multiple potentially untrusted organizations.
A User is a named account in Grafana. A user can belong to one or more Organizations, and can be assigned different levels of privileges through roles.
In most cases, Grafana is deployed with a single organization.
Grafana supports a wide variety of internal and external ways for Users to authenticate themselves. These include from its own integrated database, from an external SQL server, or from an external LDAP server.
Each organization can have one or more data sources.
For more details please refer to [User Auth](/reference/http_api/#users)
All dashboards are owned by a particular organization.
### Row
> Note: Most metric databases do not provide per-user series authentication. This means that organization data sources and dashboards are available to all users in a particular organization.
A Row is a logical divider within a Dashboard, and is used to group Panels together.
Refer to [Organization roles]({{< relref "../permissions/organization_roles.md" >}}) for more information.
Rows are always 12 “units” wide. These units are automatically scaled dependent on the horizontal resolution of your browser. You can control the relative width of Panels within a row by setting their own width.
## Panel
We utilize a unit abstraction so that Grafana looks great on all screens both small and huge.
The *panel* is the basic visualization building block in Grafana. Each panel has a Query Editor specific to the data source selected in the panel. The query editor allows you to extract the perfect visualization to display on the panel.
> Note: With MaxDataPoint functionality, Grafana can show you the perfect amount of datapoints no matter your resolution or time-range.
There are a wide variety of styling and formatting options for each panel. Panels can be dragged and dropped and rearranged on the Dashboard. They can also be resized.
Utilize the [Repeating Rows functionality](/reference/templating/#repeating-rows) to dynamically create or remove entire Rows (that can be filled with Panels), based on the Template variables selected.
Panels like the [Graph]({{< relref "../features/panels/graph.md" >}}) panel allow you to graph as many metrics and series as you want. Other panels like [Singlestat]({{< relref "../features/panels/singlestat.md" >}}) require a reduction of a single query into a single number.
Rows can be collapsed by clicking on the Row Title. If you save a Dashboard with a Row collapsed, it will save in that state and will not preload those graphs until the row is expanded.
Panels can be made more dynamic with [Dashboard Templating]({{< relref "../reference/templating.md" >}}) variable strings within the panel configuration. The template can include queries to your data source configured in the Query Editor.
### Panel
Panels can be [shared]({{< relref "../reference/share_panel.md" >}}) easily in a variety of ways.
The Panel is the basic visualization building block in Grafana. Each Panel provides a Query Editor (dependent on the Data Source selected in the panel) that allows you to extract the perfect visualization to display on the Panel by utilizing the Query Editor
## Query editor
There are a wide variety of styling and formatting options that each Panel exposes to allow you to create the perfect picture.
The *query editor* exposes capabilities of your data source and allows you to query the metrics that it contains.
Panels can be dragged and dropped and rearranged on the Dashboard. They can also be resized.
Use the query editor to build one or more queries in your time series database. The panel instantly updates, allowing you to effectively explore your data in real time and build a perfect query for that particular panel.
These are the available Panel types:
You can use [template variables]({{< relref "../reference/templating.md" >}}) in the query editor within the queries themselves. This provides a powerful way to explore data dynamically based on the templating variables selected on the dashboard.
- [Alert list](/reference/alertlist/)
- [Dashboard list](/reference/dashlist/)
- [Graph](/reference/graph/)
- [Heatmap](/reference/heatmap/)
- [Logs](/reference/logs/)
- [Singlestat](/reference/singlestat/)
- [Table](/reference/table_panel/)
- [Text](/reference/text/)
Grafana allows you to reference queries in the query editor by the row that theyre on. If you add a second query to graph, you can reference the first query by typing in #A. This provides an easy and convenient way to build compound queries.
Panels like the [Graph](/reference/graph/) panel allow you to graph as many metrics and series as you want. Other panels like [Singlestat](/reference/singlestat/) require a reduction of a single query into a single number. [Dashlist](/reference/dashlist/) and [Text](/reference/text/) are special panels that do not connect to any Data Source.
## Row
Panels can be made more dynamic by utilizing [Dashboard Templating](/reference/templating/) variable strings within the panel configuration (including queries to your Data Source configured via the Query Editor).
A *row* is a logical divider within a dashboard. It is used to group panels together.
Utilize the [Repeating Panel](/reference/templating/#repeating-panels) functionality to dynamically create or remove Panels based on the [Templating Variables](/reference/templating/#repeating-panels) selected.
Rows are always 12 “units” wide. These units are automatically scaled dependent on the horizontal resolution of your browser. You can control the relative width of panels within a row by setting their specific width.
The time range on Panels is normally what is set in the [Dashboard time picker](/reference/timerange/) but this can be overridden by utilizes [Panel specific time overrides](/reference/timerange/#panel-time-overrides-timeshift).
We use a unit abstraction so that Grafana looks great on all screens sizes.
Panels (or an entire Dashboard) can be [Shared](/reference/sharing/) easily in a variety of ways. You can send a link to someone who has a login to your Grafana. You can use the [Snapshot](/reference/sharing/#snapshots) feature to encode all the data currently being viewed into a static and interactive JSON document; it's so much better than emailing a screenshot!
> Note: With MaxDataPoint functionality, Grafana can show you the perfect number of data points, regardless of resolution or time range.
Collapse a row by clicking on the row title. If you save a dashboard with a row collapsed, then it saves in that state and does not load those graphs until you expand the row.
### Query Editor
Use the [repeating rows]({{< relref "../reference/templating.md#repeating-rows" >}}) functionality to dynamically create or remove entire rows, which can be filled with panels, based on the template variables selected.
The Query Editor exposes capabilities of your Data Source and allows you to query the metrics that it contains.
## User
Use the Query Editor to build one or more queries (for one or more series) in your time series database. The panel will instantly update allowing you to effectively explore your data in real time and build a perfect query for that particular Panel.
A *user* is a named account in Grafana. A user can belong to one or more organizations and can be assigned different levels of privileges through roles.
You can utilize [Template variables](/reference/templating/) in the Query Editor within the queries themselves. This provides a powerful way to explore data dynamically based on the Templating variables selected on the Dashboard.
Grafana supports a wide variety of internal and external ways for users to authenticate themselves. These include from its own integrated database, from an external SQL server, or from an external LDAP server.
Grafana allows you to reference queries in the Query Editor by the row that theyre on. If you add a second query to graph, you can reference the first query simply by typing in #A. This provides an easy and convenient way to build compounded queries.
### Dashboard
The Dashboard is where it all comes together. Dashboards can be thought of as of a set of one or more Panels organized and arranged into one or more Rows.
The time period for the Dashboard can be controlled by the [Dashboard time picker](/reference/timerange/) in the upper right of the Dashboard.
Dashboards can utilize [Templating](/reference/templating/) to make them more dynamic and interactive.
Dashboards can utilize [Annotations](/reference/annotations/) to display event data across Panels. This can help correlate the time series data in the Panel with other events.
Dashboards (or a specific Panel) can be [Shared](/reference/sharing/) easily in a variety of ways. You can send a link to someone who has a login to your Grafana. You can use the [Snapshot](/reference/sharing/#snapshots) feature to encode all the data currently being viewed into a static and interactive JSON document; it's so much better than emailing a screenshot!
Dashboards can be tagged, and the Dashboard picker provides quick, searchable access to all Dashboards in a particular Organization.
Refer to the [Permissions overview](docs\sources\permissions\overview.md) for information about roles and permissions.
+6 -6
View File
@@ -3,7 +3,7 @@ title = "Getting Started"
description = "Getting started with Grafana guide"
keywords = ["grafana", "intro", "guide", "started"]
type = "docs"
aliases = ["/guides/gettingstarted"]
aliases = ["/docs/grafana/latest/guides/gettingstarted"]
[menu.docs]
name = "Getting Started"
identifier = "getting_started_guide"
@@ -13,11 +13,11 @@ weight = 1
# Getting started
This guide will help you get started and acquainted with Grafana. It assumes you have a working Grafana server up and running. If not please read the [installation guide](/installation/).
This guide will help you get started and acquainted with Grafana. It assumes you have a working Grafana server up and running. If not please read the [installation guide]({{< relref "../installation/" >}}).
## Logging in for the first time
To run Grafana open your browser and go to http://localhost:3000/. 3000 is the default HTTP port that Grafana listens to if you haven't [configured a different port](/installation/configuration/#http-port).
To run Grafana open your browser and go to http://localhost:3000/. 3000 is the default HTTP port that Grafana listens to if you haven't [configured a different port]({{< relref "../installation/configuration/#http-port" >}}).
There you will see the login page. Default username is admin and default password is admin. When you log in for the first time you will be asked to change your password. We strongly encourage you to
follow Grafanas best practices and change the default administrator password. You can later go to user preferences and change your user name.
@@ -36,7 +36,7 @@ Click Add data source and you will come to the settings page of your new data so
{{< 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](/features/datasources/#supported-data-sources/) for more information and how to configure your data source.
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">}}
@@ -49,7 +49,7 @@ Watch the 10min [beginners guide to building dashboards](https://www.youtube.com
## Basic concepts
Read the [Basic Concepts](/guides/basic_concepts) document to get a crash course in key Grafana concepts.
Read the [Basic Concepts]({{< relref "basic_concepts" >}}) document to get a crash course in key Grafana concepts.
### Top header
@@ -69,7 +69,7 @@ The image above shows you the top header for a Dashboard.
## Dashboards, panels, the building blocks of Grafana...
Dashboards are at the core of what Grafana is all about. Dashboards are composed of individual Panels arranged on a grid. Grafana ships with a variety of Panels. Grafana makes it easy to construct the right queries, and customize the display properties so that you can create the perfect Dashboard for your need. Each Panel can interact with data from any configured Grafana Data Source (currently Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, MySQL, PostgreSQL, Microsoft SQL Server and AWS Cloudwatch). The [Basic Concepts](/guides/basic_concepts) guide explores these key ideas in detail.
Dashboards are at the core of what Grafana is all about. Dashboards are composed of individual Panels arranged on a grid. Grafana ships with a variety of Panels. Grafana makes it easy to construct the right queries, and customize the display properties so that you can create the perfect Dashboard for your need. Each Panel can interact with data from any configured Grafana Data Source (currently Graphite, Prometheus, Elasticsearch, InfluxDB, OpenTSDB, MySQL, PostgreSQL, Microsoft SQL Server and AWS Cloudwatch). The [Basic Concepts]({{< relref "basic_concepts" >}}) guide explores these key ideas in detail.
<img src="/img/docs/v50/dashboard_annotated.png" class="no-shadow" width="700px">
View File
+1 -1
View File
@@ -37,7 +37,7 @@ and complex queries for logs or metrics.
- Query only relevant indices based on time pattern
- Alias patterns for short readable series names
Try the new Elasticsearch query editor on the [play.grafana.org](http://play.grafana.org/dashboard/db/elasticsearch-metrics) site.
Try the new Elasticsearch query editor on the [play.grafana.org](https://play.grafana.org/dashboard/db/elasticsearch-metrics) site.
### CloudWatch
+2 -2
View File
@@ -128,7 +128,7 @@ And here's the new look for Dashboard settings:
<img src="/img/docs/v3/dashboard_settings.png">
Check out the <a href="http://play.grafana.org" target="_blank">Play
Check out the <a href="https://play.grafana.org" target="_blank">Play
Site</a> to get a feel for some of the UI changes.
## Improved Annotations
@@ -219,7 +219,7 @@ created and maintained by [Alexander Zobnin](https://github.com/alexanderzobnin/
<img src="/img/docs/v3/zabbix_app.png">
Checkout the full list of plugins on [Grafana.com](https://grafana.com/plugins)
Check out the full list of plugins on [Grafana.com](https://grafana.com/plugins)
## CHANGELOG
+1 -1
View File
@@ -59,7 +59,7 @@ Elasticsearch 1.x is no longer supported. Please upgrade to Elasticsearch 2.x or
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
## Download
+1 -1
View File
@@ -76,7 +76,7 @@ are reserved as global built in variables. We might add more global built in var
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
## Download
+1 -1
View File
@@ -23,7 +23,7 @@ Grafana v4.3 Beta is now [available for download](https://grafana.com/grafana/do
- New [MySQL Data Source](http://docs.grafana.org/features/datasources/mysql/) (alpha version to get some early feedback)
- 60+ small fixes and improvements, most of them contributed by our fantastic community!
Check out the [New Features in v4.3 Dashboard](http://play.grafana.org/dashboard/db/new-features-in-v4-3?orgId=1) on the Grafana Play site for a showcase of these new features.
Check out the [New Features in v4.3 Dashboard](https://play.grafana.org/dashboard/db/new-features-in-v4-3?orgId=1) on the Grafana Play site for a showcase of these new features.
## Histogram Support
+1 -1
View File
@@ -19,7 +19,7 @@ Grafana v4.6 brings many enhancements to Annotations, Cloudwatch and Prometheus.
{{< docs-imagebox img="/img/docs/v46/add_annotation_region.png" max-width= "800px" >}}
You can now add annotation events and regions right from the graph panel! Just hold Ctrl/Cmd+Click or drag region to open the **Add Annotation** view. The
[Annotations]({{< relref "reference/annotations.md" >}}) documentation is updated to include details on this new exciting feature.
[Annotations]({{< relref "../reference/annotations.md" >}}) documentation is updated to include details on this new exciting feature.
### Cloudwatch
+1 -1
View File
@@ -175,6 +175,6 @@ You can update plugins using grafana-cli
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
+1 -1
View File
@@ -121,5 +121,5 @@ More information in the [Provisioning documentation](/administration/provisionin
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
+1 -1
View File
@@ -97,5 +97,5 @@ user that has editor role in an organization or the edit permission in at least
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
+1 -1
View File
@@ -88,5 +88,5 @@ This new variable type will display as a free text input field with an optional
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
+1 -1
View File
@@ -79,5 +79,5 @@ Grafana v5.4 adds support for customizing home dashboard, timezone and theme for
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list
of new features, changes, and bug fixes.
+2 -2
View File
@@ -36,8 +36,8 @@ This is the most substantial update that Grafana has ever seen. This article wil
The new dashboard layout engine allows for much easier movement and sizing of panels, as other panels now move out of the way in
a very intuitive way. Panels are sized independently, so rows are no longer necessary to create layouts. This opens
up many new types of layouts where panels of different heights can be aligned easily. Checkout the new grid in the video
above or on the [play site](http://play.grafana.org). All your existing dashboards will automatically migrate to the
up many new types of layouts where panels of different heights can be aligned easily. Check out the new grid in the video
above or on the [play site](https://play.grafana.org). All your existing dashboards will automatically migrate to the
new position system and look close to identical. The new panel position makes dashboards saved in v5.0 incompatible
with older versions of Grafana.
+1 -1
View File
@@ -173,4 +173,4 @@ See [upgrade notes](/installation/upgrading/#upgrading-to-v6-0).
## Changelog
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
+1 -1
View File
@@ -54,6 +54,6 @@ This release contains a lot of small features and fixes:
- it is now possible to add user details to requests sent to the dataproxy.
- Heatmap and Explore fixes.
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
A huge thanks to our community for all the reported issues, bug fixes and feedback.
+2 -2
View File
@@ -16,7 +16,7 @@ For all details please read the full [CHANGELOG.md](https://github.com/grafana/g
If you use a password for your data sources please read the [upgrade notes](/installation/upgrading/#upgrading-to-v6-2).
Checkout the [demo dashboard](https://play.grafana.org/d/ZvPm55mWk/new-features-in-v6-2?orgId=1) of some the new features in v6.2.
Check out the [demo dashboard](https://play.grafana.org/d/ZvPm55mWk/new-features-in-v6-2?orgId=1) of some the new features in v6.2.
## Improved security
@@ -87,7 +87,7 @@ This release contains a lot of small features and fixes:
- CloudWatch - Important fix for default alias disappearing in v6.1.
- Search - Works in a scope of dashboard's folder by default when viewing dashboard.
Checkout the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
Check out the [CHANGELOG.md](https://github.com/grafana/grafana/blob/master/CHANGELOG.md) file for a complete list of new features, changes, and bug fixes.
A huge thanks to our community for all the reported issues, bug fixes and feedback.

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