diff --git a/CHANGELOG.md b/CHANGELOG.md index cf1c3ecd2d8..734b036213f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ # 3.1.2 (unreleased) * **Templating**: Fixed issue when combining row & panel repeats, fixes [#5790](https://github.com/grafana/grafana/issues/5790) * **Drag&Drop**: Fixed issue with drag and drop in latest Chrome(51+), fixes [#5767](https://github.com/grafana/grafana/issues/5767) -* **Internal Metrics**: Fixed issue with dots in instance_name when sending internal metrics to Graphitge, fixes [#5739](https://github.com/grafana/grafana/issues/5739) +* **Internal Metrics**: Fixed issue with dots in instance_name when sending internal metrics to Graphite, fixes [#5739](https://github.com/grafana/grafana/issues/5739) +* **Grafana-CLI**: Add default plugin path for MAC OS, fixes [#5806](https://github.com/grafana/grafana/issues/5806) # 3.1.1 (2016-08-01) * **IFrame embedding**: Fixed issue of using full iframe height, fixes [#5605](https://github.com/grafana/grafana/issues/5606) diff --git a/conf/defaults.ini b/conf/defaults.ini index 8b0b7db16ab..574367d8f3d 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -373,12 +373,13 @@ enabled = false # Metrics available at HTTP API Url /api/metrics [metrics] enabled = true -interval_seconds = 60 +interval_seconds = 10 # Send internal Grafana metrics to graphite -; [metrics.graphite] -; address = localhost:2003 -; prefix = service.grafana.%(instance_name)s. +[metrics.graphite] +# Enable by setting the address setting (ex localhost:2003) +address = +prefix = prod.grafana.%(instance_name)s. [grafana_net] url = https://grafana.net diff --git a/conf/sample.ini b/conf/sample.ini index 74beb9bd611..0180710e8f5 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -298,33 +298,34 @@ check_for_updates = true # Metrics available at HTTP API Url /api/metrics [metrics] # Disable / Enable internal metrics -enabled = true +;enabled = true # Publish interval ;interval_seconds = 10 # Send internal metrics to Graphite -; [metrics.graphite] -; address = localhost:2003 -; prefix = service.grafana.%(instance_name)s. +[metrics.graphite] +# Enable by setting the address setting (ex localhost:2003) +;address = +;prefix = prod.grafana.%(instance_name)s. #################################### Internal Grafana Metrics ########################## # Url used to to import dashboards directly from Grafana.net [grafana_net] -url = https://grafana.net +;url = https://grafana.net #################################### External image storage ########################## [external_image_storage] # Used for uploading images to public servers so they can be included in slack/email messages. # you can choose between (s3, webdav or internal) -provider = s3 +;provider = s3 [external_image_storage.s3] -bucket_url = -access_key = -secret_key = +;bucket_url = +;access_key = +;secret_key = [external_image_storage.webdav] -url = -username = -password = +;url = +;username = +;password = diff --git a/docker/blocks/postgres/fig b/docker/blocks/postgres/fig index c7458cbe400..33499688810 100644 --- a/docker/blocks/postgres/fig +++ b/docker/blocks/postgres/fig @@ -3,5 +3,6 @@ postgrestest: environment: POSTGRES_USER: grafana POSTGRES_PASSWORD: password + POSTGRES_DATABASE: grafana ports: - "5432:5432" diff --git a/docs/sources/installation/configuration.md b/docs/sources/installation/configuration.md index 931d123c68b..af3bb796e2d 100644 --- a/docs/sources/installation/configuration.md +++ b/docs/sources/installation/configuration.md @@ -466,7 +466,7 @@ Enable metrics reporting. defaults true. Available via HTTP API `/api/metrics`. ### interval_seconds -Flush/Write interval when sending metrics to external TSDB. Defaults to 60s. +Flush/Write interval when sending metrics to external TSDB. Defaults to 10s. ## [metrics.graphite] Include this section if you want to send internal Grafana metrics to Graphite. diff --git a/pkg/cmd/grafana-cli/main.go b/pkg/cmd/grafana-cli/main.go index 131d9189022..fbdec792322 100644 --- a/pkg/cmd/grafana-cli/main.go +++ b/pkg/cmd/grafana-cli/main.go @@ -8,39 +8,11 @@ import ( "github.com/codegangsta/cli" "github.com/grafana/grafana/pkg/cmd/grafana-cli/commands" "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" + "github.com/grafana/grafana/pkg/cmd/grafana-cli/utils" ) var version = "master" -func getGrafanaPluginDir() string { - currentOS := runtime.GOOS - defaultNix := "/var/lib/grafana/plugins" - - if currentOS == "windows" { - return "../data/plugins" - } - - pwd, err := os.Getwd() - - if err != nil { - logger.Error("Could not get current path. using default") - return defaultNix - } - - if isDevenvironment(pwd) { - return "../data/plugins" - } - - return defaultNix -} - -func isDevenvironment(pwd string) bool { - // if ../conf/defaults.ini exists, grafana is not installed as package - // that its in development environment. - _, err := os.Stat("../conf/defaults.ini") - return err == nil -} - func main() { setupLogging() @@ -54,7 +26,7 @@ func main() { cli.StringFlag{ Name: "pluginsDir", Usage: "path to the grafana plugin directory", - Value: getGrafanaPluginDir(), + Value: utils.GetGrafanaPluginDir(runtime.GOOS), EnvVar: "GF_PLUGIN_DIR", }, cli.StringFlag{ diff --git a/pkg/cmd/grafana-cli/utils/grafana_path.go b/pkg/cmd/grafana-cli/utils/grafana_path.go new file mode 100644 index 00000000000..fa6dc46d783 --- /dev/null +++ b/pkg/cmd/grafana-cli/utils/grafana_path.go @@ -0,0 +1,46 @@ +package utils + +import ( + "os" + + "github.com/grafana/grafana/pkg/cmd/grafana-cli/logger" +) + +func GetGrafanaPluginDir(currentOS string) string { + //currentOS := runtime.GOOS + + if currentOS == "windows" { + return returnOsDefault(currentOS) + } + + pwd, err := os.Getwd() + + if err != nil { + logger.Error("Could not get current path. using default") + return returnOsDefault(currentOS) + } + + if isDevenvironment(pwd) { + return "../data/plugins" + } + + return returnOsDefault(currentOS) +} + +func isDevenvironment(pwd string) bool { + // if ../conf/defaults.ini exists, grafana is not installed as package + // that its in development environment. + _, err := os.Stat("../conf/defaults.ini") + return err == nil +} + +func returnOsDefault(currentOs string) string { + switch currentOs { + case "windows": + return "../data/plugins" + case "darwin": + return "/usr/local/var/lib/grafana/plugins" + default: //"linux" + return "/var/lib/grafana/plugins" + } +} diff --git a/pkg/metrics/graphite.go b/pkg/metrics/graphite.go index bbd5696c85d..e88df2ebb1b 100644 --- a/pkg/metrics/graphite.go +++ b/pkg/metrics/graphite.go @@ -24,20 +24,25 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) { return nil, nil } + address := graphiteSection.Key("address").String() + if address == "" { + return nil, nil + } + publisher := &GraphitePublisher{} publisher.prevCounts = make(map[string]int64) publisher.protocol = "tcp" - publisher.address = graphiteSection.Key("address").MustString("localhost:2003") + publisher.prefix = graphiteSection.Key("prefix").MustString("prod.grafana.%(instance_name)s") + publisher.address = address safeInstanceName := strings.Replace(setting.InstanceName, ".", "_", -1) prefix := graphiteSection.Key("prefix").Value() if prefix == "" { - prefix = "service.grafana.%(instance_name)s." + prefix = "prod.grafana.%(instance_name)s." } publisher.prefix = strings.Replace(prefix, "%(instance_name)s", safeInstanceName, -1) - return publisher, nil } diff --git a/pkg/metrics/graphite_test.go b/pkg/metrics/graphite_test.go index 8ecee9449a5..2f866ddd7b6 100644 --- a/pkg/metrics/graphite_test.go +++ b/pkg/metrics/graphite_test.go @@ -19,7 +19,7 @@ func TestGraphitePublisher(t *testing.T) { So(err, ShouldBeNil) sec, err := setting.Cfg.NewSection("metrics.graphite") - sec.NewKey("prefix", "service.grafana.%(instance_name)s.") + sec.NewKey("prefix", "prod.grafana.%(instance_name)s.") sec.NewKey("address", "localhost:2001") So(err, ShouldBeNil) @@ -30,7 +30,30 @@ func TestGraphitePublisher(t *testing.T) { So(err, ShouldBeNil) So(publisher, ShouldNotBeNil) - So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com.") + So(publisher.prefix, ShouldEqual, "prod.grafana.hostname_with_dots_com.") + So(publisher.address, ShouldEqual, "localhost:2001") + }) + + Convey("Test graphite publisher default prefix", t, func() { + var err error + err = setting.NewConfigContext(&setting.CommandLineArgs{ + HomePath: "../../", + }) + + So(err, ShouldBeNil) + + sec, err := setting.Cfg.NewSection("metrics.graphite") + sec.NewKey("address", "localhost:2001") + + So(err, ShouldBeNil) + + setting.InstanceName = "hostname.with.dots.com" + publisher, err := CreateGraphitePublisher() + + So(err, ShouldBeNil) + So(publisher, ShouldNotBeNil) + + So(publisher.prefix, ShouldEqual, "prod.grafana.hostname_with_dots_com.") So(publisher.address, ShouldEqual, "localhost:2001") }) @@ -48,9 +71,6 @@ func TestGraphitePublisher(t *testing.T) { publisher, err := CreateGraphitePublisher() So(err, ShouldBeNil) - So(publisher, ShouldNotBeNil) - - So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com.") - So(publisher.address, ShouldEqual, "localhost:2003") + So(publisher, ShouldBeNil) }) } diff --git a/public/app/core/controllers/inspect_ctrl.js b/public/app/core/controllers/inspect_ctrl.js index 2adc62f0039..0f8582ef5ce 100644 --- a/public/app/core/controllers/inspect_ctrl.js +++ b/public/app/core/controllers/inspect_ctrl.js @@ -7,7 +7,7 @@ define([ function (angular, _, $, coreModule) { 'use strict'; - coreModule.default.controller('InspectCtrl', function($scope) { + coreModule.default.controller('InspectCtrl', function($scope, $sanitize) { var model = $scope.inspector; function getParametersFromQueryString(queryString) { @@ -32,7 +32,11 @@ function (angular, _, $, coreModule) { if (_.isString(model.error.data)) { $scope.response = $("