diff --git a/conf/defaults.ini b/conf/defaults.ini index afa99c701b2..48565af6861 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -356,9 +356,10 @@ enabled = true interval_seconds = 60 # 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 8fffcf9b7c9..3978408e24e 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -298,17 +298,18 @@ 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 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 = $("