From 03f0bc46a1be77e629e8bfbbff12db277290fbe4 Mon Sep 17 00:00:00 2001 From: bergquist Date: Wed, 10 Aug 2016 11:15:27 +0200 Subject: [PATCH] fix(metrics): make metrics cfg backwards compatible --- conf/defaults.ini | 2 +- conf/sample.ini | 4 ++-- pkg/metrics/graphite.go | 8 ++++++-- pkg/metrics/graphite_test.go | 40 ++++++++++++++++++++++++++++-------- 4 files changed, 41 insertions(+), 13 deletions(-) diff --git a/conf/defaults.ini b/conf/defaults.ini index afa99c701b2..28c0e509fb4 100644 --- a/conf/defaults.ini +++ b/conf/defaults.ini @@ -358,7 +358,7 @@ interval_seconds = 60 # Send internal Grafana metrics to graphite ; [metrics.graphite] ; address = localhost:2003 -; prefix = service.grafana.%(instance_name)s. +; prefix = service.grafana.%(instance_name)s [grafana_net] url = https://grafana.net diff --git a/conf/sample.ini b/conf/sample.ini index 8e3c01cf45e..80ca033f035 100644 --- a/conf/sample.ini +++ b/conf/sample.ini @@ -303,10 +303,10 @@ enabled = true # Publish interval ;interval_seconds = 10 -# Send internal metrics to Graphite. %instance_name% in prefix will be replaced with the value of instance_name +# Send internal metrics to Graphite ; [metrics.graphite] ; address = localhost:2003 -; prefix = service.grafana.%instance_name% +; prefix = service.grafana.%(instance_name)s #################################### Internal Grafana Metrics ########################## # Url used to to import dashboards directly from Grafana.net diff --git a/pkg/metrics/graphite.go b/pkg/metrics/graphite.go index a384b7f9d28..2b3da3e490c 100644 --- a/pkg/metrics/graphite.go +++ b/pkg/metrics/graphite.go @@ -30,9 +30,13 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) { publisher.address = graphiteSection.Key("address").MustString("localhost:2003") safeInstanceName := strings.Replace(setting.InstanceName, ".", "_", -1) - prefix := graphiteSection.Key("prefix").MustString("service.grafana.%instance_name%") + prefix := graphiteSection.Key("prefix").Value() - publisher.prefix = strings.Replace(prefix, "%instance_name%", safeInstanceName, -1) + if prefix == "" { + prefix = "service.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 764214fcb10..31620bdd161 100644 --- a/pkg/metrics/graphite_test.go +++ b/pkg/metrics/graphite_test.go @@ -10,22 +10,46 @@ import ( func TestGraphitePublisher(t *testing.T) { - Convey("Test graphite prefix", t, func() { - err := setting.NewConfigContext(&setting.CommandLineArgs{ + Convey("Test graphite prefix replacement", t, func() { + var err error + err = setting.NewConfigContext(&setting.CommandLineArgs{ HomePath: "../../", - Args: []string{ - "cfg:metrics.graphite.prefix=service.grafana.%instance_name%", - "cfg:metrics.graphite.address=localhost:2003", - }, }) + + So(err, ShouldBeNil) + + sec, err := setting.Cfg.NewSection("metrics.graphite") + sec.NewKey("prefix", "service.grafana.%(instance_name)s") + sec.NewKey("address", "localhost:2003") + So(err, ShouldBeNil) setting.InstanceName = "hostname.with.dots.com" - publisher, err2 := CreateGraphitePublisher() + publisher, err := CreateGraphitePublisher() - So(err2, ShouldBeNil) + So(err, ShouldBeNil) So(publisher, ShouldNotBeNil) So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com") }) + + Convey("Test graphite publisher default values", t, func() { + var err error + err = setting.NewConfigContext(&setting.CommandLineArgs{ + HomePath: "../../", + }) + + So(err, ShouldBeNil) + + _, err = setting.Cfg.NewSection("metrics.graphite") + + setting.InstanceName = "hostname.with.dots.com" + 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") + }) }