| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package main
- import (
- "errors"
- "github.com/rcrowley/go-metrics"
- "log"
- "math/rand"
- "os"
- // "syslog"
- "time"
- )
- const fanout = 10
- func main() {
- r := metrics.NewRegistry()
- c := metrics.NewCounter()
- r.Register("foo", c)
- for i := 0; i < fanout; i++ {
- go func() {
- for {
- c.Dec(19)
- time.Sleep(300e6)
- }
- }()
- go func() {
- for {
- c.Inc(47)
- time.Sleep(400e6)
- }
- }()
- }
- g := metrics.NewGauge()
- r.Register("bar", g)
- for i := 0; i < fanout; i++ {
- go func() {
- for {
- g.Update(19)
- time.Sleep(300e6)
- }
- }()
- go func() {
- for {
- g.Update(47)
- time.Sleep(400e6)
- }
- }()
- }
- hc := metrics.NewHealthcheck(func(h metrics.Healthcheck) {
- if 0 < rand.Intn(2) {
- h.Healthy()
- } else {
- h.Unhealthy(errors.New("baz"))
- }
- })
- r.Register("baz", hc)
- s := metrics.NewExpDecaySample(1028, 0.015)
- //s := metrics.NewUniformSample(1028)
- h := metrics.NewHistogram(s)
- r.Register("bang", h)
- for i := 0; i < fanout; i++ {
- go func() {
- for {
- h.Update(19)
- time.Sleep(300e6)
- }
- }()
- go func() {
- for {
- h.Update(47)
- time.Sleep(400e6)
- }
- }()
- }
- m := metrics.NewMeter()
- r.Register("quux", m)
- for i := 0; i < fanout; i++ {
- go func() {
- for {
- m.Mark(19)
- time.Sleep(300e6)
- }
- }()
- go func() {
- for {
- m.Mark(47)
- time.Sleep(400e6)
- }
- }()
- }
- t := metrics.NewTimer()
- r.Register("hooah", t)
- for i := 0; i < fanout; i++ {
- go func() {
- for {
- t.Time(func() { time.Sleep(300e6) })
- }
- }()
- go func() {
- for {
- t.Time(func() { time.Sleep(400e6) })
- }
- }()
- }
- metrics.RegisterDebugGCStats(r)
- go metrics.CaptureDebugGCStats(r, 5e9)
- metrics.RegisterRuntimeMemStats(r)
- go metrics.CaptureRuntimeMemStats(r, 5e9)
- go metrics.Stathat(r,10e9,"bketelsen@clarityservices.com")
- metrics.Log(r, 60e9, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
- /*
- w, err := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
- if nil != err { log.Fatalln(err) }
- metrics.Syslog(r, 60e9, w)
- */
- }
|