Open wangming1993 opened 7 years ago
package main import ( "fmt" "github.com/rcrowley/go-metrics" "github.com/vrischmann/go-metrics-influxdb" //"reflect" "math/rand" "time" ) var ( database = "local" url = "http://127.0.0.1:8086" ) var ( registry = metrics.DefaultRegistry defaultCounter = metrics.NewCounter() defaultMeter = metrics.NewMeter() defaultGuage = metrics.NewGauge() defaultTimer = metrics.NewTimer() ) func main() { go push(registry) produce(registry) } func push(registry metrics.Registry) { duration := time.Second * 5 influxdb.InfluxDB(registry, duration, url, database, "", "") } func produce(registry metrics.Registry) { intervalTicker := time.Tick(time.Second * 1) var times int64 for { if times > 10 { //break } select { case <-intervalTicker: times++ fmt.Println("Time comes...") counter(registry) meter(registry) gauge(registry) timer(registry) } } fmt.Println("Done...") } func counter(registry metrics.Registry) { registry.GetOrRegister("counert", defaultCounter) incr := random(100) if incr%2 == 0 { incr = 0 - incr } defaultCounter.Inc(incr) } func meter(registry metrics.Registry) { registry.GetOrRegister("meter", defaultMeter) defaultMeter.Mark(random(100)) } func gauge(registry metrics.Registry) { registry.GetOrRegister("gauge", defaultGuage) defaultGuage.Update(random(100)) } func timer(registry metrics.Registry) { registry.GetOrRegister("timer", defaultTimer) defaultTimer.Time(func() {}) defaultTimer.Update(time.Second) } func random(n int) int64 { n = rand.Intn(n) return int64(n) }