Jelajahi Sumber

Add a prefix to Graphite metrics.

Richard Crowley 13 tahun lalu
induk
melakukan
73a2e512a7
2 mengubah file dengan 33 tambahan dan 33 penghapusan
  1. 1 1
      README.md
  2. 32 32
      graphite.go

+ 1 - 1
README.md

@@ -49,7 +49,7 @@ Periodically emit every metric to Graphite:
 
 ```go
 addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
-metrics.Graphite(metrics.DefaultRegistry, 10, addr)
+metrics.Graphite(metrics.DefaultRegistry, 10, "metrics", addr)
 ```
 
 Installation

+ 32 - 32
graphite.go

@@ -7,7 +7,7 @@ import (
 	"time"
 )
 
-func Graphite(r Registry, interval int, addr *net.TCPAddr) {
+func Graphite(r Registry, interval int, prefix string, addr *net.TCPAddr) {
 	for {
 		now := time.Now().Unix()
 		conn, err := net.DialTCP("tcp", nil, addr)
@@ -18,43 +18,43 @@ func Graphite(r Registry, interval int, addr *net.TCPAddr) {
 		r.Each(func(name string, i interface{}) {
 			switch m := i.(type) {
 			case Counter:
-				fmt.Fprintf(w, "%s.count %d %d\n", name, m.Count(), now)
+				fmt.Fprintf(w, "%s.%s.count %d %d\n", prefix, name, m.Count(), now)
 			case Gauge:
-				fmt.Fprintf(w, "%s.value %d %d\n", name, m.Value(), now)
+				fmt.Fprintf(w, "%s.%s.value %d %d\n", prefix, name, m.Value(), now)
 			case Histogram:
 				ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
-				fmt.Fprintf(w, "%s.count %d %d\n", name, m.Count(), now)
-				fmt.Fprintf(w, "%s.min %d %d\n", name, m.Min(), now)
-				fmt.Fprintf(w, "%s.max %d %d\n", name, m.Max(), now)
-				fmt.Fprintf(w, "%s.mean %.2f %d\n", name, m.Mean(), now)
-				fmt.Fprintf(w, "%s.std-dev %.2f %d\n", name, m.StdDev(), now)
-				fmt.Fprintf(w, "%s.50-percentile %.2f %d\n", name, ps[0], now)
-				fmt.Fprintf(w, "%s.75-percentile %.2f %d\n", name, ps[1], now)
-				fmt.Fprintf(w, "%s.95-percentile %.2f %d\n", name, ps[2], now)
-				fmt.Fprintf(w, "%s.99-percentile %.2f %d\n", name, ps[3], now)
-				fmt.Fprintf(w, "%s.999-percentile %.2f %d\n", name, ps[4], now)
+				fmt.Fprintf(w, "%s.%s.count %d %d\n", prefix, name, m.Count(), now)
+				fmt.Fprintf(w, "%s.%s.min %d %d\n", prefix, name, m.Min(), now)
+				fmt.Fprintf(w, "%s.%s.max %d %d\n", prefix, name, m.Max(), now)
+				fmt.Fprintf(w, "%s.%s.mean %.2f %d\n", prefix, name, m.Mean(), now)
+				fmt.Fprintf(w, "%s.%s.std-dev %.2f %d\n", prefix, name, m.StdDev(), now)
+				fmt.Fprintf(w, "%s.%s.50-percentile %.2f %d\n", prefix, name, ps[0], now)
+				fmt.Fprintf(w, "%s.%s.75-percentile %.2f %d\n", prefix, name, ps[1], now)
+				fmt.Fprintf(w, "%s.%s.95-percentile %.2f %d\n", prefix, name, ps[2], now)
+				fmt.Fprintf(w, "%s.%s.99-percentile %.2f %d\n", prefix, name, ps[3], now)
+				fmt.Fprintf(w, "%s.%s.999-percentile %.2f %d\n", prefix, name, ps[4], now)
 			case Meter:
-				fmt.Fprintf(w, "%s.count %d %d\n", name, m.Count(), now)
-				fmt.Fprintf(w, "%s.one-minute %.2f %d\n", name, m.Rate1(), now)
-				fmt.Fprintf(w, "%s.five-minute %.2f %d\n", name, m.Rate5(), now)
-				fmt.Fprintf(w, "%s.fifteen-minute %.2f %d\n", name, m.Rate15(), now)
-				fmt.Fprintf(w, "%s.mean %.2f %d\n", name, m.RateMean(), now)
+				fmt.Fprintf(w, "%s.%s.count %d %d\n", prefix, name, m.Count(), now)
+				fmt.Fprintf(w, "%s.%s.one-minute %.2f %d\n", prefix, name, m.Rate1(), now)
+				fmt.Fprintf(w, "%s.%s.five-minute %.2f %d\n", prefix, name, m.Rate5(), now)
+				fmt.Fprintf(w, "%s.%s.fifteen-minute %.2f %d\n", prefix, name, m.Rate15(), now)
+				fmt.Fprintf(w, "%s.%s.mean %.2f %d\n", prefix, name, m.RateMean(), now)
 			case Timer:
 				ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
-				fmt.Fprintf(w, "%s.count %d %d\n", name, m.Count(), now)
-				fmt.Fprintf(w, "%s.min %d %d\n", name, m.Min(), now)
-				fmt.Fprintf(w, "%s.max %d %d\n", name, m.Max(), now)
-				fmt.Fprintf(w, "%s.mean %.2f %d\n", name, m.Mean(), now)
-				fmt.Fprintf(w, "%s.std-dev %.2f %d\n", name, m.StdDev(), now)
-				fmt.Fprintf(w, "%s.50-percentile %.2f %d\n", name, ps[0], now)
-				fmt.Fprintf(w, "%s.75-percentile %.2f %d\n", name, ps[1], now)
-				fmt.Fprintf(w, "%s.95-percentile %.2f %d\n", name, ps[2], now)
-				fmt.Fprintf(w, "%s.99-percentile %.2f %d\n", name, ps[3], now)
-				fmt.Fprintf(w, "%s.999-percentile %.2f %d\n", name, ps[4], now)
-				fmt.Fprintf(w, "%s.one-minute %.2f %d\n", name, m.Rate1(), now)
-				fmt.Fprintf(w, "%s.five-minute %.2f %d\n", name, m.Rate5(), now)
-				fmt.Fprintf(w, "%s.fifteen-minute %.2f %d\n", name, m.Rate15(), now)
-				fmt.Fprintf(w, "%s.mean %.2f %d\n", name, m.RateMean(), now)
+				fmt.Fprintf(w, "%s.%s.count %d %d\n", prefix, name, m.Count(), now)
+				fmt.Fprintf(w, "%s.%s.min %d %d\n", prefix, name, m.Min(), now)
+				fmt.Fprintf(w, "%s.%s.max %d %d\n", prefix, name, m.Max(), now)
+				fmt.Fprintf(w, "%s.%s.mean %.2f %d\n", prefix, name, m.Mean(), now)
+				fmt.Fprintf(w, "%s.%s.std-dev %.2f %d\n", prefix, name, m.StdDev(), now)
+				fmt.Fprintf(w, "%s.%s.50-percentile %.2f %d\n", prefix, name, ps[0], now)
+				fmt.Fprintf(w, "%s.%s.75-percentile %.2f %d\n", prefix, name, ps[1], now)
+				fmt.Fprintf(w, "%s.%s.95-percentile %.2f %d\n", prefix, name, ps[2], now)
+				fmt.Fprintf(w, "%s.%s.99-percentile %.2f %d\n", prefix, name, ps[3], now)
+				fmt.Fprintf(w, "%s.%s.999-percentile %.2f %d\n", prefix, name, ps[4], now)
+				fmt.Fprintf(w, "%s.%s.one-minute %.2f %d\n", prefix, name, m.Rate1(), now)
+				fmt.Fprintf(w, "%s.%s.five-minute %.2f %d\n", prefix, name, m.Rate5(), now)
+				fmt.Fprintf(w, "%s.%s.fifteen-minute %.2f %d\n", prefix, name, m.Rate15(), now)
+				fmt.Fprintf(w, "%s.%s.mean %.2f %d\n", prefix, name, m.RateMean(), now)
 			}
 			w.Flush()
 		})