在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:rcrowley/go-metrics开源软件地址:https://github.com/rcrowley/go-metrics开源编程语言:Go 99.8%开源软件介绍:go-metricsGo port of Coda Hale's Metrics library: https://github.com/dropwizard/metrics. Documentation: http://godoc.org/github.com/rcrowley/go-metrics. UsageCreate and update metrics: c := metrics.NewCounter()
metrics.Register("foo", c)
c.Inc(47)
g := metrics.NewGauge()
metrics.Register("bar", g)
g.Update(47)
r := NewRegistry()
g := metrics.NewRegisteredFunctionalGauge("cache-evictions", r, func() int64 { return cache.getEvictionsCount() })
s := metrics.NewExpDecaySample(1028, 0.015) // or metrics.NewUniformSample(1028)
h := metrics.NewHistogram(s)
metrics.Register("baz", h)
h.Update(47)
m := metrics.NewMeter()
metrics.Register("quux", m)
m.Mark(47)
t := metrics.NewTimer()
metrics.Register("bang", t)
t.Time(func() {})
t.Update(47) Register() is not threadsafe. For threadsafe metric registration use GetOrRegister: t := metrics.GetOrRegisterTimer("account.create.latency", nil)
t.Time(func() {})
t.Update(47) NOTE: Be sure to unregister short-lived meters and timers otherwise they will leak memory: // Will call Stop() on the Meter to allow for garbage collection
metrics.Unregister("quux")
// Or similarly for a Timer that embeds a Meter
metrics.Unregister("bang") Periodically log every metric in human-readable form to standard error: go metrics.Log(metrics.DefaultRegistry, 5 * time.Second, log.New(os.Stderr, "metrics: ", log.Lmicroseconds)) Periodically log every metric in slightly-more-parseable form to syslog: w, _ := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
go metrics.Syslog(metrics.DefaultRegistry, 60e9, w) Periodically emit every metric to Graphite using the Graphite client: import "github.com/cyberdelia/go-metrics-graphite"
addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
go graphite.Graphite(metrics.DefaultRegistry, 10e9, "metrics", addr) Periodically emit every metric into InfluxDB: NOTE: this has been pulled out of the library due to constant fluctuations in the InfluxDB API. In fact, all client libraries are on their way out. see issues #121 and #124 for progress and details. import "github.com/vrischmann/go-metrics-influxdb"
go influxdb.InfluxDB(metrics.DefaultRegistry,
10e9,
"127.0.0.1:8086",
"database-name",
"username",
"password"
) Periodically upload every metric to Librato using the Librato client: Note: the client included with this repository under the import "github.com/mihasya/go-metrics-librato"
go librato.Librato(metrics.DefaultRegistry,
10e9, // interval
"[email protected]", // account owner email address
"token", // Librato API token
"hostname", // source
[]float64{0.95}, // percentiles to send
time.Millisecond, // time unit
) Periodically emit every metric to StatHat: import "github.com/rcrowley/go-metrics/stathat"
go stathat.Stathat(metrics.DefaultRegistry, 10e9, "[email protected]") Maintain all metrics along with expvars at This uses the same mechanism as the official expvar
but exposed under import "github.com/rcrowley/go-metrics/exp"
exp.Exp(metrics.DefaultRegistry) Installationgo get github.com/rcrowley/go-metrics StatHat support additionally requires their Go client: go get github.com/stathat/go Publishing MetricsClients are available for the following destinations:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论