Pārlūkot izejas kodu

feat(metrics): improve graphite settings

Fixes the broken support for overriding settings with ENV variables.
closes #5769
bergquist 9 gadi atpakaļ
vecāks
revīzija
f7a9102523
4 mainītis faili ar 38 papildinājumiem un 11 dzēšanām
  1. 4 3
      conf/defaults.ini
  2. 5 4
      conf/sample.ini
  3. 6 1
      pkg/metrics/graphite.go
  4. 23 3
      pkg/metrics/graphite_test.go

+ 4 - 3
conf/defaults.ini

@@ -353,9 +353,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 = service.grafana.%(instance_name)s.
 
 [grafana_net]
 url = https://grafana.net

+ 5 - 4
conf/sample.ini

@@ -300,12 +300,13 @@ check_for_updates = true
 enabled           = true
 
 # Publish interval
-;interval_seconds  = 10
+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 = service.grafana.%(instance_name)s.
 
 #################################### Internal Grafana Metrics ##########################
 # Url used to to import dashboards directly from Grafana.net

+ 6 - 1
pkg/metrics/graphite.go

@@ -24,10 +24,15 @@ 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.address = address
 
 	safeInstanceName := strings.Replace(setting.InstanceName, ".", "_", -1)
 	prefix := graphiteSection.Key("prefix").Value()

+ 23 - 3
pkg/metrics/graphite_test.go

@@ -34,7 +34,7 @@ func TestGraphitePublisher(t *testing.T) {
 		So(publisher.address, ShouldEqual, "localhost:2001")
 	})
 
-	Convey("Test graphite publisher default values", t, func() {
+	Convey("Test graphite publisher default prefix", t, func() {
 		var err error
 		err = setting.NewConfigContext(&setting.CommandLineArgs{
 			HomePath: "../../",
@@ -42,7 +42,10 @@ func TestGraphitePublisher(t *testing.T) {
 
 		So(err, ShouldBeNil)
 
-		_, err = setting.Cfg.NewSection("metrics.graphite")
+		sec, err := setting.Cfg.NewSection("metrics.graphite")
+		sec.NewKey("address", "localhost:2001")
+
+		So(err, ShouldBeNil)
 
 		setting.InstanceName = "hostname.with.dots.com"
 		publisher, err := CreateGraphitePublisher()
@@ -51,6 +54,23 @@ func TestGraphitePublisher(t *testing.T) {
 		So(publisher, ShouldNotBeNil)
 
 		So(publisher.prefix, ShouldEqual, "service.grafana.hostname_with_dots_com.")
-		So(publisher.address, ShouldEqual, "localhost:2003")
+		So(publisher.address, ShouldEqual, "localhost:2001")
+	})
+
+	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, ShouldBeNil)
 	})
 }