Explorar el Código

fix(metrics): make metrics cfg backwards compatible

bergquist hace 9 años
padre
commit
03f0bc46a1
Se han modificado 4 ficheros con 41 adiciones y 13 borrados
  1. 1 1
      conf/defaults.ini
  2. 2 2
      conf/sample.ini
  3. 6 2
      pkg/metrics/graphite.go
  4. 32 8
      pkg/metrics/graphite_test.go

+ 1 - 1
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

+ 2 - 2
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

+ 6 - 2
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
 }

+ 32 - 8
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(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.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com")
+		So(publisher.address, ShouldEqual, "localhost:2003")
 	})
 }