diff --git a/.gitignore b/.gitignore
index 4932342..a533fb5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@
/grafana_webpack-6.1.4.tar.gz
/grafana-6.1.6.tar.gz
/grafana_webpack-6.1.6.tar.gz
+/grafana-6.2.2.tar.gz
+/grafana_webpack-6.2.2.tar.gz
diff --git a/000-go-test-fixes.patch b/000-go-test-fixes.patch
deleted file mode 100644
index b8a9e82..0000000
--- a/000-go-test-fixes.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-diff --git a/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go b/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go
-index b8d1d6cc2..39cfe3f76 100644
---- a/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go
-+++ b/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go
-@@ -107,19 +107,19 @@ func TestAzureMonitorDatasource(t *testing.T) {
- So(len(res.Series[0].Points), ShouldEqual, 5)
-
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 2.0875)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1549620780000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1549620780000))
-
- So(res.Series[0].Points[1][0].Float64, ShouldEqual, 2.1525)
-- So(res.Series[0].Points[1][1].Float64, ShouldEqual, 1549620840000)
-+ So(res.Series[0].Points[1][1].Float64, ShouldEqual, int64(1549620840000))
-
- So(res.Series[0].Points[2][0].Float64, ShouldEqual, 2.155)
-- So(res.Series[0].Points[2][1].Float64, ShouldEqual, 1549620900000)
-+ So(res.Series[0].Points[2][1].Float64, ShouldEqual, int64(1549620900000))
-
- So(res.Series[0].Points[3][0].Float64, ShouldEqual, 3.6925)
-- So(res.Series[0].Points[3][1].Float64, ShouldEqual, 1549620960000)
-+ So(res.Series[0].Points[3][1].Float64, ShouldEqual, int64(1549620960000))
-
- So(res.Series[0].Points[4][0].Float64, ShouldEqual, 2.44)
-- So(res.Series[0].Points[4][1].Float64, ShouldEqual, 1549621020000)
-+ So(res.Series[0].Points[4][1].Float64, ShouldEqual, int64(1549621020000))
- })
-
- Convey("when data from query aggregated as total to one time series", func() {
-@@ -139,7 +139,7 @@ func TestAzureMonitorDatasource(t *testing.T) {
- So(err, ShouldBeNil)
-
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 8.26)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1549718940000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1549718940000))
- })
-
- Convey("when data from query aggregated as maximum to one time series", func() {
-@@ -159,7 +159,7 @@ func TestAzureMonitorDatasource(t *testing.T) {
- So(err, ShouldBeNil)
-
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 3.07)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1549722360000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1549722360000))
- })
-
- Convey("when data from query aggregated as minimum to one time series", func() {
-@@ -179,7 +179,7 @@ func TestAzureMonitorDatasource(t *testing.T) {
- So(err, ShouldBeNil)
-
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 1.51)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1549723380000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1549723380000))
- })
-
- Convey("when data from query aggregated as Count to one time series", func() {
-@@ -199,7 +199,7 @@ func TestAzureMonitorDatasource(t *testing.T) {
- So(err, ShouldBeNil)
-
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 4)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1549723440000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1549723440000))
- })
-
- Convey("when data from query aggregated as total and has dimension filter", func() {
-diff --git a/pkg/tsdb/mssql/mssql_test.go b/pkg/tsdb/mssql/mssql_test.go
-index c3d447060..cc27304fc 100644
---- a/pkg/tsdb/mssql/mssql_test.go
-+++ b/pkg/tsdb/mssql/mssql_test.go
-@@ -162,7 +162,7 @@ func TestMSSQL(t *testing.T) {
- So(column[19].(time.Time), ShouldEqual, dt.Truncate(time.Minute))
- So(column[20].(time.Time), ShouldEqual, dt.Truncate(24*time.Hour))
- So(column[21].(time.Time), ShouldEqual, time.Date(1, 1, 1, dt.Hour(), dt.Minute(), dt.Second(), dt.Nanosecond(), time.UTC))
-- So(column[22].(time.Time), ShouldEqual, dt2.In(time.FixedZone("UTC", int(-7*time.Hour))))
-+ So(column[22].(time.Time), ShouldEqual, dt2.In(time.FixedZone("UTC-7", int(-7*60*60))))
- })
- })
-
-diff --git a/pkg/tsdb/stackdriver/stackdriver_test.go b/pkg/tsdb/stackdriver/stackdriver_test.go
-index 78c3086a9..1ab1e099f 100644
---- a/pkg/tsdb/stackdriver/stackdriver_test.go
-+++ b/pkg/tsdb/stackdriver/stackdriver_test.go
-@@ -236,13 +236,13 @@ func TestStackdriver(t *testing.T) {
-
- Convey("timestamps should be in ascending order", func() {
- So(res.Series[0].Points[0][0].Float64, ShouldEqual, 0.05)
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1536670020000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1536670020000))
-
- So(res.Series[0].Points[1][0].Float64, ShouldEqual, 1.05)
-- So(res.Series[0].Points[1][1].Float64, ShouldEqual, 1536670080000)
-+ So(res.Series[0].Points[1][1].Float64, ShouldEqual, int64(1536670080000))
-
- So(res.Series[0].Points[2][0].Float64, ShouldEqual, 1.0666666666667)
-- So(res.Series[0].Points[2][1].Float64, ShouldEqual, 1536670260000)
-+ So(res.Series[0].Points[2][1].Float64, ShouldEqual, int64(1536670260000))
- })
- })
-
-@@ -365,9 +365,9 @@ func TestStackdriver(t *testing.T) {
- }
-
- Convey("timestamps should be in ascending order", func() {
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1536668940000)
-- So(res.Series[0].Points[1][1].Float64, ShouldEqual, 1536669000000)
-- So(res.Series[0].Points[2][1].Float64, ShouldEqual, 1536669060000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1536668940000))
-+ So(res.Series[0].Points[1][1].Float64, ShouldEqual, int64(1536669000000))
-+ So(res.Series[0].Points[2][1].Float64, ShouldEqual, int64(1536669060000))
- })
-
- Convey("bucket bounds should be correct", func() {
-@@ -410,8 +410,8 @@ func TestStackdriver(t *testing.T) {
- }
-
- Convey("timestamps should be in ascending order", func() {
-- So(res.Series[0].Points[0][1].Float64, ShouldEqual, 1550859086000)
-- So(res.Series[0].Points[1][1].Float64, ShouldEqual, 1550859146000)
-+ So(res.Series[0].Points[0][1].Float64, ShouldEqual, int64(1550859086000))
-+ So(res.Series[0].Points[1][1].Float64, ShouldEqual, int64(1550859146000))
- })
-
- Convey("bucket bounds should be correct", func() {
-diff --git a/pkg/tsdb/time_range_test.go b/pkg/tsdb/time_range_test.go
-index 37ced412e..38b147689 100644
---- a/pkg/tsdb/time_range_test.go
-+++ b/pkg/tsdb/time_range_test.go
-@@ -70,11 +70,11 @@ func TestTimeRange(t *testing.T) {
-
- res, err := tr.ParseFrom()
- So(err, ShouldBeNil)
-- So(res.UnixNano()/int64(time.Millisecond), ShouldEqual, 1474973725473)
-+ So(res.UnixNano()/int64(time.Millisecond), ShouldEqual, int64(1474973725473))
-
- res, err = tr.ParseTo()
- So(err, ShouldBeNil)
-- So(res.UnixNano()/int64(time.Millisecond), ShouldEqual, 1474975757930)
-+ So(res.UnixNano()/int64(time.Millisecond), ShouldEqual, int64(1474975757930))
- })
-
- Convey("Cannot parse asdf", func() {
diff --git a/001-login-oauth-use-oauth2-exchange.patch b/001-login-oauth-use-oauth2-exchange.patch
new file mode 100644
index 0000000..d62067d
--- /dev/null
+++ b/001-login-oauth-use-oauth2-exchange.patch
@@ -0,0 +1,13 @@
+diff --git a/pkg/api/login_oauth.go b/pkg/api/login_oauth.go
+index a3599bc7a..0c6579847 100644
+--- a/pkg/api/login_oauth.go
++++ b/pkg/api/login_oauth.go
+@@ -125,7 +125,7 @@ func (hs *HTTPServer) OAuthLogin(ctx *m.ReqContext) {
+ oauthCtx := context.WithValue(context.Background(), oauth2.HTTPClient, oauthClient)
+
+ // get token from provider
+- token, err := connect.Exchange(oauthCtx, code)
++ token, err := connect.Exchange(oauthCtx, code, oauth2.AccessTypeOnline)
+ if err != nil {
+ ctx.Handle(500, "login.OAuthLogin(NewTransportWithCode)", err)
+ return
diff --git a/001-man-pages.patch b/001-man-pages.patch
deleted file mode 100644
index 44ff37d..0000000
--- a/001-man-pages.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-diff --git a/docs/man/man1/grafana-cli.1 b/docs/man/man1/grafana-cli.1
-new file mode 100644
-index 000000000..171748fcd
---- /dev/null
-+++ b/docs/man/man1/grafana-cli.1
-@@ -0,0 +1,51 @@
-+.TH GRAFANA "1" "February 2019" "Grafana cli version 5.4.3" "User Commands"
-+.SH NAME
-+grafana-cli \- command line administration for the Grafana metrics dashboard and graph editor
-+.SH DESCRIPTION
-+.SS "NAME:"
-+.IP
-+grafana-cli
-+.SS "USAGE:"
-+.IP
-+\fBgrafana\-cli\fP [\fIglobal options\fP] \fIcommand\fP [\fIcommand options\fP] [\fIarguments\fP...]
-+.SS "COMMANDS:"
-+.TP
-+plugins
-+Manage plugins for grafana
-+.TP
-+admin
-+Grafana admin commands
-+.TP
-+help, h
-+Shows a list of commands or help for one command
-+.SS "GLOBAL OPTIONS:"
-+.TP
-+\fB\-\-pluginsDir\fR value
-+path to the grafana plugin directory (default: "/var/lib/grafana/plugins") [$GF_PLUGIN_DIR]
-+.TP
-+\fB\-\-repo\fR value
-+url to the plugin repository (default: "https://grafana.com/api/plugins") [$GF_PLUGIN_REPO]
-+.TP
-+\fB\-\-pluginUrl\fR value
-+Full url to the plugin zip file instead of downloading the plugin from grafana.com/api [$GF_PLUGIN_URL]
-+.TP
-+\fB\-\-insecure\fR
-+Skip TLS verification (insecure)
-+.TP
-+\fB\-\-debug\fR, \fB\-d\fR
-+enable debug logging
-+.TP
-+\fB\-\-help\fR, \fB\-h\fR
-+show help
-+.TP
-+\fB\-\-version\fR, \fB\-v\fR
-+print the version
-+.SH "SEE ALSO"
-+Additional documentation for
-+.B grafana-cli
-+is available on-line at
-+.BR http://docs.grafana.org/administration/cli/ .
-+The full documentation for
-+.B Grafana
-+is available on-line at
-+.BR http://docs.grafana.org/ .
-diff --git a/docs/man/man1/grafana-server.1 b/docs/man/man1/grafana-server.1
-new file mode 100644
-index 000000000..30b7c1306
---- /dev/null
-+++ b/docs/man/man1/grafana-server.1
-@@ -0,0 +1,156 @@
-+.TH VERSION "1" "February 2019" "Version 5.4.3" "User Commands"
-+.SH NAME
-+grafana-server \- back-end server for the Grafana metrics dashboard and graph editor
-+.SH DESCRIPTION
-+.B grafana-server
-+is the back-end server for the Grafana metrics dashboard and graph editor.
-+The
-+.B grafana-server
-+program should not normally be run from the command line,
-+except when testing or for development purposes.
-+Rather it should be managed by
-+.BR systemd .
-+After installing Grafana, the systemd service should be enabled and started as follows:
-+.P
-+.in 1i
-+.B systemctl daemon-reload
-+.br
-+.B systemctl enable grafana-server.service
-+.br
-+.B systemctl start grafana-server.service
-+.in
-+.P
-+.SH OPTIONS
-+The
-+.B gafana-server
-+configuration is specified in
-+.BR /etc/grafana/grafana.ini
-+and is well documented with comments.
-+The command-line options listed below override options of
-+the same (or similar) name in the configuration file and also provide
-+additional options for testing Grafana.
-+.P
-+.HP
-+\fB\-config\fR string
-+.IP
-+path to config file
-+.HP
-+\fB\-homepath\fR string
-+.IP
-+path to grafana install/home path, defaults to working directory
-+.HP
-+\fB\-packaging\fR string
-+.IP
-+describes the way Grafana was installed (default "unknown")
-+.HP
-+\fB\-pidfile\fR string
-+.IP
-+path to pid file
-+.HP
-+\fB\-profile\fR
-+.IP
-+Turn on pprof profiling
-+.HP
-+\fB\-profile\-port\fR int
-+.IP
-+Define custom port for profiling (default 6060)
-+.HP
-+\fB\-test\fR.bench regexp
-+.IP
-+run only benchmarks matching regexp
-+.HP
-+\fB\-test\fR.benchmem
-+.IP
-+print memory allocations for benchmarks
-+.HP
-+\fB\-test\fR.benchtime d
-+.IP
-+run each benchmark for duration d (default 1s)
-+.HP
-+\fB\-test\fR.blockprofile file
-+.IP
-+write a goroutine blocking profile to file
-+.HP
-+\fB\-test\fR.blockprofilerate rate
-+.IP
-+set blocking profile rate (see runtime.SetBlockProfileRate) (default 1)
-+.HP
-+\fB\-test\fR.count n
-+.IP
-+run tests and benchmarks n times (default 1)
-+.HP
-+\fB\-test\fR.coverprofile file
-+.IP
-+write a coverage profile to file
-+.HP
-+\fB\-test\fR.cpu list
-+.IP
-+comma\-separated list of cpu counts to run each test with
-+.HP
-+\fB\-test\fR.cpuprofile file
-+.IP
-+write a cpu profile to file
-+.HP
-+\fB\-test\fR.failfast
-+.IP
-+do not start new tests after the first test failure
-+.HP
-+\fB\-test\fR.list regexp
-+.IP
-+list tests, examples, and benchmarks matching regexp then exit
-+.HP
-+\fB\-test\fR.memprofile file
-+.IP
-+write a memory profile to file
-+.HP
-+\fB\-test\fR.memprofilerate rate
-+.IP
-+set memory profiling rate (see runtime.MemProfileRate)
-+.HP
-+\fB\-test\fR.mutexprofile string
-+.IP
-+write a mutex contention profile to the named file after execution
-+.HP
-+\fB\-test\fR.mutexprofilefraction int
-+.IP
-+if >= 0, calls runtime.SetMutexProfileFraction() (default 1)
-+.HP
-+\fB\-test\fR.outputdir dir
-+.IP
-+write profiles to dir
-+.HP
-+\fB\-test\fR.parallel n
-+.IP
-+run at most n tests in parallel (default 8)
-+.HP
-+\fB\-test\fR.run regexp
-+.IP
-+run only tests and examples matching regexp
-+.HP
-+\fB\-test\fR.short
-+.IP
-+run smaller test suite to save time
-+.HP
-+\fB\-test\fR.testlogfile file
-+.IP
-+write test action log to file (for use only by cmd/go)
-+.HP
-+\fB\-test\fR.timeout d
-+.IP
-+panic test binary after duration d (default 0, timeout disabled)
-+.HP
-+\fB\-test\fR.trace file
-+.IP
-+write an execution trace to file
-+.HP
-+\fB\-test\fR.v
-+.IP
-+verbose: print additional output
-+.TP
-+\fB\-v\fR
-+prints current version and exits
-+.SH "SEE ALSO"
-+The full documentation for
-+.B Grafana
-+is available on-line at
-+.BR http://docs.grafana.org/ .
diff --git a/005-remove-jaeger-tracing.patch b/002-remove-jaeger-tracing.patch
similarity index 96%
rename from 005-remove-jaeger-tracing.patch
rename to 002-remove-jaeger-tracing.patch
index f2b4778..1f624cc 100644
--- a/005-remove-jaeger-tracing.patch
+++ b/002-remove-jaeger-tracing.patch
@@ -1,15 +1,15 @@
diff --git a/pkg/cmd/grafana-server/server.go b/pkg/cmd/grafana-server/server.go
-index c10212329..a29d14c85 100644
+index 2ac326ed3..20943918c 100644
--- a/pkg/cmd/grafana-server/server.go
+++ b/pkg/cmd/grafana-server/server.go
-@@ -31,7 +31,6 @@ import (
+@@ -21,7 +21,6 @@ import (
_ "github.com/grafana/grafana/pkg/infra/metrics"
_ "github.com/grafana/grafana/pkg/infra/remotecache"
_ "github.com/grafana/grafana/pkg/infra/serverlock"
- _ "github.com/grafana/grafana/pkg/infra/tracing"
_ "github.com/grafana/grafana/pkg/infra/usagestats"
- _ "github.com/grafana/grafana/pkg/plugins"
- _ "github.com/grafana/grafana/pkg/services/alerting"
+ "github.com/grafana/grafana/pkg/log"
+ "github.com/grafana/grafana/pkg/login"
diff --git a/pkg/infra/tracing/tracing.go b/pkg/infra/tracing/tracing.go
deleted file mode 100644
index fd7258b7a..000000000
diff --git a/002-update-golang-oauth2-vendor-sources.patch b/002-update-golang-oauth2-vendor-sources.patch
deleted file mode 100644
index f0c3f34..0000000
--- a/002-update-golang-oauth2-vendor-sources.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/pkg/api/login_oauth.go b/pkg/api/login_oauth.go
-index a3599bc7a..0c6579847 100644
---- a/pkg/api/login_oauth.go
-+++ b/pkg/api/login_oauth.go
-@@ -125,7 +125,7 @@ func (hs *HTTPServer) OAuthLogin(ctx *m.ReqContext) {
- oauthCtx := context.WithValue(context.Background(), oauth2.HTTPClient, oauthClient)
-
- // get token from provider
-- token, err := connect.Exchange(oauthCtx, code)
-+ token, err := connect.Exchange(oauthCtx, code, oauth2.AccessTypeOnline)
- if err != nil {
- ctx.Handle(500, "login.OAuthLogin(NewTransportWithCode)", err)
- return
-diff --git a/pkg/login/social/social.go b/pkg/login/social/social.go
-index 3ec0e2c96..72807d73e 100644
---- a/pkg/login/social/social.go
-+++ b/pkg/login/social/social.go
-@@ -29,7 +29,7 @@ type SocialConnector interface {
- IsSignupAllowed() bool
-
- AuthCodeURL(state string, opts ...oauth2.AuthCodeOption) string
-- Exchange(ctx context.Context, code string) (*oauth2.Token, error)
-+ Exchange(ctx context.Context, code string, opts ...oauth2.AuthCodeOption) (*oauth2.Token, error)
- Client(ctx context.Context, t *oauth2.Token) *http.Client
- TokenSource(ctx context.Context, t *oauth2.Token) oauth2.TokenSource
- }
diff --git a/003-file-mode-updates.patch b/003-file-mode-updates.patch
deleted file mode 100644
index 3eb1243..0000000
--- a/003-file-mode-updates.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/public/app/features/dashboard/components/DashboardSettings/SettingsCtrl.ts b/public/app/features/dashboard/components/DashboardSettings/SettingsCtrl.ts
-old mode 100755
-new mode 100644
-diff --git a/public/app/features/folders/services/FolderPageLoader.ts b/public/app/features/folders/services/FolderPageLoader.ts
-old mode 100755
-new mode 100644
-diff --git a/public/app/plugins/datasource/elasticsearch/img/elasticsearch.svg b/public/app/plugins/datasource/elasticsearch/img/elasticsearch.svg
-old mode 100755
-new mode 100644
-diff --git a/public/app/plugins/datasource/graphite/partials/query.editor.html b/public/app/plugins/datasource/graphite/partials/query.editor.html
-old mode 100755
-new mode 100644
-diff --git a/public/app/plugins/datasource/stackdriver/partials/query.editor.html b/public/app/plugins/datasource/stackdriver/partials/query.editor.html
-old mode 100755
-new mode 100644
-diff --git a/public/app/plugins/panel/graph/graph.ts b/public/app/plugins/panel/graph/graph.ts
-old mode 100755
-new mode 100644
-diff --git a/public/fonts/grafana-icons.svg b/public/fonts/grafana-icons.svg
-old mode 100755
-new mode 100644
-diff --git a/public/sass/components/_panel_text.scss b/public/sass/components/_panel_text.scss
-index e69de29bb..cd0183132 100644
---- a/public/sass/components/_panel_text.scss
-+++ b/public/sass/components/_panel_text.scss
-@@ -0,0 +1 @@
-+// nothing here
diff --git a/003-new-files.patch b/003-new-files.patch
new file mode 100644
index 0000000..0701856
--- /dev/null
+++ b/003-new-files.patch
@@ -0,0 +1,1627 @@
+diff --git a/conf/distro-defaults.ini b/conf/distro-defaults.ini
+new file mode 100644
+index 000000000..eeb974369
+--- /dev/null
++++ b/conf/distro-defaults.ini
+@@ -0,0 +1,601 @@
++##################### Grafana Configuration Defaults for distros #####################
++#
++# Do not modify this file in grafana installs
++#
++
++# possible values : production, development
++app_mode = production
++
++# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty
++instance_name = ${HOSTNAME}
++
++#################################### Paths ###############################
++[paths]
++# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
++data = /var/lib/grafana
++
++# Temporary files in `data` directory older than given duration will be removed
++temp_data_lifetime = 24h
++
++# Directory where grafana can store logs
++logs = /var/log/grafana
++
++# Directory where grafana will automatically scan and look for plugins
++plugins = /var/lib/grafana/plugins
++
++# folder that contains provisioning config files that grafana will apply on startup and while running.
++provisioning = conf/provisioning
++
++#################################### Server ##############################
++[server]
++# Protocol (http, https, socket)
++protocol = http
++
++# The ip address to bind to, empty will bind to all interfaces
++http_addr =
++
++# The http port to use
++http_port = 3000
++
++# The public facing domain name used to access grafana from a browser
++domain = localhost
++
++# Redirect to correct domain if host header does not match domain
++# Prevents DNS rebinding attacks
++enforce_domain = false
++
++# The full public facing url
++root_url = %(protocol)s://%(domain)s:%(http_port)s/
++
++# Log web requests
++router_logging = false
++
++# the path relative working path
++static_root_path = public
++
++# enable gzip
++enable_gzip = false
++
++# https certs & key file
++cert_file =
++cert_key =
++
++# Unix socket path
++socket = /tmp/grafana.sock
++
++#################################### Database ############################
++[database]
++# You can configure the database connection by specifying type, host, name, user and password
++# as separate properties or as on string using the url property.
++
++# Either "mysql", "postgres" or "sqlite3", it's your choice
++type = sqlite3
++host = 127.0.0.1:3306
++name = grafana
++user = root
++# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
++password =
++# Use either URL or the previous fields to configure the database
++# Example: mysql://user:secret@host:port/database
++url =
++
++# Max idle conn setting default is 2
++max_idle_conn = 2
++
++# Max conn setting default is 0 (mean not set)
++max_open_conn =
++
++# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
++conn_max_lifetime = 14400
++
++# Set to true to log the sql calls and execution times.
++log_queries =
++
++# For "postgres", use either "disable", "require" or "verify-full"
++# For "mysql", use either "true", "false", or "skip-verify".
++ssl_mode = disable
++
++ca_cert_path =
++client_key_path =
++client_cert_path =
++server_cert_name =
++
++# For "sqlite3" only, path relative to data_path setting
++path = grafana.db
++
++# For "sqlite3" only. cache mode setting used for connecting to the database
++cache_mode = private
++
++#################################### Cache server #############################
++[remote_cache]
++# Either "redis", "memcached" or "database" default is "database"
++type = database
++
++# cache connectionstring options
++# database: will use Grafana primary database.
++# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
++# memcache: 127.0.0.1:11211
++connstr =
++
++#################################### Data proxy ###########################
++[dataproxy]
++
++# This enables data proxy logging, default is false
++logging = false
++
++# How long the data proxy should wait before timing out default is 30 (seconds)
++timeout = 30
++
++# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.
++send_user_header = false
++
++#################################### Analytics ###########################
++[analytics]
++# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
++# No ip addresses are being tracked, only simple counters to track
++# running instances, dashboard and error counts. It is very helpful to us.
++# Change this option to false to disable reporting.
++reporting_enabled = false
++
++# Set to false to disable all checks to https://grafana.com
++# for new versions (grafana itself and plugins), check is used
++# in some UI views to notify that grafana or plugin update exists
++# This option does not cause any auto updates, nor send any information
++# only a GET request to https://grafana.com to get latest versions
++check_for_updates = false
++
++# Google Analytics universal tracking code, only enabled if you specify an id here
++google_analytics_ua_id =
++
++# Google Tag Manager ID, only enabled if you specify an id here
++google_tag_manager_id =
++
++#################################### Security ############################
++[security]
++# default admin user, created on startup
++admin_user = admin
++
++# default admin password, can be changed before first start of grafana, or in profile settings
++admin_password = admin
++
++# used for signing
++secret_key = SW2YcwTIb9zpOOhoPsMm
++
++# disable gravatar profile images
++disable_gravatar = false
++
++# data source proxy whitelist (ip_or_domain:port separated by spaces)
++data_source_proxy_whitelist =
++
++# disable protection against brute force login attempts
++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"
++cookie_samesite = lax
++
++# set to true if you want to allow browsers to render Grafana in a ,