Commit 03f0bc46 by bergquist

fix(metrics): make metrics cfg backwards compatible

parent c5d0c9f0
...@@ -358,7 +358,7 @@ interval_seconds = 60 ...@@ -358,7 +358,7 @@ interval_seconds = 60
# Send internal Grafana metrics to graphite # Send internal Grafana metrics to graphite
; [metrics.graphite] ; [metrics.graphite]
; address = localhost:2003 ; address = localhost:2003
; prefix = service.grafana.%(instance_name)s. ; prefix = service.grafana.%(instance_name)s
[grafana_net] [grafana_net]
url = https://grafana.net url = https://grafana.net
...@@ -303,10 +303,10 @@ enabled = true ...@@ -303,10 +303,10 @@ enabled = true
# Publish interval # Publish interval
;interval_seconds = 10 ;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] ; [metrics.graphite]
; address = localhost:2003 ; address = localhost:2003
; prefix = service.grafana.%instance_name% ; prefix = service.grafana.%(instance_name)s
#################################### Internal Grafana Metrics ########################## #################################### Internal Grafana Metrics ##########################
# Url used to to import dashboards directly from Grafana.net # Url used to to import dashboards directly from Grafana.net
......
...@@ -30,9 +30,13 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) { ...@@ -30,9 +30,13 @@ func CreateGraphitePublisher() (*GraphitePublisher, error) {
publisher.address = graphiteSection.Key("address").MustString("localhost:2003") publisher.address = graphiteSection.Key("address").MustString("localhost:2003")
safeInstanceName := strings.Replace(setting.InstanceName, ".", "_", -1) 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 return publisher, nil
} }
......
...@@ -10,22 +10,46 @@ import ( ...@@ -10,22 +10,46 @@ import (
func TestGraphitePublisher(t *testing.T) { func TestGraphitePublisher(t *testing.T) {
Convey("Test graphite prefix", t, func() { Convey("Test graphite prefix replacement", t, func() {
err := setting.NewConfigContext(&setting.CommandLineArgs{ var err error
err = setting.NewConfigContext(&setting.CommandLineArgs{
HomePath: "../../", 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) So(err, ShouldBeNil)
setting.InstanceName = "hostname.with.dots.com" setting.InstanceName = "hostname.with.dots.com"
publisher, err2 := CreateGraphitePublisher() publisher, err := CreateGraphitePublisher()
So(err, ShouldBeNil)
So(publisher, ShouldNotBeNil)
So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com")
})
So(err2, ShouldBeNil) 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, ShouldNotBeNil)
So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com") So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com")
So(publisher.address, ShouldEqual, "localhost:2003")
}) })
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment