浏览代码

(#22) Refactor StatHat support into its own package.

I would rather not force every go-metrics user to link StatHat's Go client unless they explicitly ask to.
Richard Crowley 12 年之前
父节点
当前提交
6c9cbbbec4
共有 2 个文件被更改,包括 21 次插入14 次删除
  1. 10 3
      cmd/metrics-example/metrics-example.go
  2. 11 11
      stathat/stathat.go

+ 10 - 3
cmd/metrics-example/metrics-example.go

@@ -3,6 +3,7 @@ package main
 import (
 import (
 	"errors"
 	"errors"
 	"github.com/rcrowley/go-metrics"
 	"github.com/rcrowley/go-metrics"
+	// "github.com/rcrowley/go-metrics/stathat"
 	"log"
 	"log"
 	"math/rand"
 	"math/rand"
 	"os"
 	"os"
@@ -116,15 +117,21 @@ func main() {
 	metrics.RegisterRuntimeMemStats(r)
 	metrics.RegisterRuntimeMemStats(r)
 	go metrics.CaptureRuntimeMemStats(r, 5e9)
 	go metrics.CaptureRuntimeMemStats(r, 5e9)
 
 
-	go metrics.Stathat(r,10e9,"your@email.domain")
 	metrics.Log(r, 60e9, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
 	metrics.Log(r, 60e9, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
 
 
-
-
 	/*
 	/*
 		w, err := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
 		w, err := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
 		if nil != err { log.Fatalln(err) }
 		if nil != err { log.Fatalln(err) }
 		metrics.Syslog(r, 60e9, w)
 		metrics.Syslog(r, 60e9, w)
 	*/
 	*/
 
 
+	/*
+		addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
+		metrics.Graphite(r, 10e9, "metrics", addr)
+	*/
+
+	/*
+		stathat.Stathat(r, 10e9, "example@example.com")
+	*/
+
 }
 }

+ 11 - 11
stathat.go → stathat/stathat.go

@@ -1,13 +1,14 @@
-package metrics
+// Metrics output to StatHat.
+package stathat
 
 
 import (
 import (
-
+	"github.com/rcrowley/go-metrics"
+	"github.com/stathat/go"
 	"log"
 	"log"
 	"time"
 	"time"
-	"github.com/stathat/go"
 )
 )
 
 
-func Stathat(r Registry, d time.Duration, userkey string) {
+func Stathat(r metrics.Registry, d time.Duration, userkey string) {
 	for {
 	for {
 		if err := sh(r, userkey); nil != err {
 		if err := sh(r, userkey); nil != err {
 			log.Println(err)
 			log.Println(err)
@@ -16,14 +17,14 @@ func Stathat(r Registry, d time.Duration, userkey string) {
 	}
 	}
 }
 }
 
 
-func sh(r Registry, userkey string) error {
+func sh(r metrics.Registry, userkey string) error {
 	r.Each(func(name string, i interface{}) {
 	r.Each(func(name string, i interface{}) {
 		switch m := i.(type) {
 		switch m := i.(type) {
-		case Counter:
+		case metrics.Counter:
 			stathat.PostEZCount(name, userkey, int(m.Count()))
 			stathat.PostEZCount(name, userkey, int(m.Count()))
-		case Gauge:
+		case metrics.Gauge:
 			stathat.PostEZValue(name, userkey, float64(m.Value()))
 			stathat.PostEZValue(name, userkey, float64(m.Value()))
-		case Histogram:
+		case metrics.Histogram:
 			ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
 			ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZValue(name+".min", userkey, float64(m.Min()))
 			stathat.PostEZValue(name+".min", userkey, float64(m.Min()))
@@ -35,13 +36,13 @@ func sh(r Registry, userkey string) error {
 			stathat.PostEZValue(name+".95-percentile", userkey, float64(ps[2]))
 			stathat.PostEZValue(name+".95-percentile", userkey, float64(ps[2]))
 			stathat.PostEZValue(name+".99-percentile", userkey, float64(ps[3]))
 			stathat.PostEZValue(name+".99-percentile", userkey, float64(ps[3]))
 			stathat.PostEZValue(name+".999-percentile", userkey, float64(ps[4]))
 			stathat.PostEZValue(name+".999-percentile", userkey, float64(ps[4]))
-		case Meter:
+		case metrics.Meter:
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZValue(name+".one-minute", userkey, float64(m.Rate1()))
 			stathat.PostEZValue(name+".one-minute", userkey, float64(m.Rate1()))
 			stathat.PostEZValue(name+".five-minute", userkey, float64(m.Rate5()))
 			stathat.PostEZValue(name+".five-minute", userkey, float64(m.Rate5()))
 			stathat.PostEZValue(name+".fifteen-minute", userkey, float64(m.Rate15()))
 			stathat.PostEZValue(name+".fifteen-minute", userkey, float64(m.Rate15()))
 			stathat.PostEZValue(name+".mean", userkey, float64(m.RateMean()))
 			stathat.PostEZValue(name+".mean", userkey, float64(m.RateMean()))
-		case Timer:
+		case metrics.Timer:
 			ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
 			ps := m.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZCount(name+".count", userkey, int(m.Count()))
 			stathat.PostEZValue(name+".min", userkey, float64(m.Min()))
 			stathat.PostEZValue(name+".min", userkey, float64(m.Min()))
@@ -58,7 +59,6 @@ func sh(r Registry, userkey string) error {
 			stathat.PostEZValue(name+".fifteen-minute", userkey, float64(m.Rate15()))
 			stathat.PostEZValue(name+".fifteen-minute", userkey, float64(m.Rate15()))
 			stathat.PostEZValue(name+".mean", userkey, float64(m.RateMean()))
 			stathat.PostEZValue(name+".mean", userkey, float64(m.RateMean()))
 		}
 		}
-
 	})
 	})
 	return nil
 	return nil
 }
 }