package
1.7.2
Repository: https://github.com/neatlab/neatio.git
Documentation: pkg.go.dev

# README

go-metrics

travis build status

Go port of Coda Hale's Metrics library: https://github.com/dropwizard/metrics.

Documentation: http://godoc.org/github.com/rcrowley/go-metrics.

Usage

Create 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 librato package has been deprecated and moved to the repository linked above.

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 /debug/metrics:

This uses the same mechanism as the official expvar but exposed under /debug/metrics, which shows a json representation of all your usual expvars as well as all your go-metrics.

import "github.com/rcrowley/go-metrics/exp"

exp.Exp(metrics.DefaultRegistry)

Installation

go get github.com/rcrowley/go-metrics

StatHat support additionally requires their Go client:

go get github.com/stathat/go

Publishing Metrics

Clients are available for the following destinations:

# Packages

Hook go-metrics into expvar on any /debug/metrics request, load all vars from the registry into expvar, and execute regular expvar handler.
No description provided by the author
No description provided by the author

# Functions

No description provided by the author
No description provided by the author
Capture new values for the Go runtime statistics exported in runtime.MemStats.
Capture new values for the Go runtime statistics exported in runtime.MemStats.
CollectProcessMetrics periodically collects various metrics about the running process.
Call the given function for each registered metric.
Get the metric by the given name or nil if none is registered.
Gets an existing metric or creates and registers a new one.
No description provided by the author
No description provided by the author
No description provided by the author
GetOrRegisterHistogram returns an existing Histogram or constructs and registers a new StandardHistogram.
GetOrRegisterMeter returns an existing Meter or constructs and registers a new StandardMeter.
GetOrRegisterResettingTimer returns an existing ResettingTimer or constructs and registers a new StandardResettingTimer.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Output each metric in the given registry periodically using the given logger.
Register the given metric under the given name.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
NewExpDecaySample constructs a new exponentially-decaying sample with the given reservoir size and alpha.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
NewHistogram constructs a new StandardHistogram from a Sample.
NewMeter constructs a new StandardMeter and launches a goroutine.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
NewRegisteredHistogram constructs and registers a new StandardHistogram from a Sample.
NewMeter constructs and registers a new StandardMeter and launches a goroutine.
NewRegisteredResettingTimer constructs and registers a new StandardResettingTimer.
No description provided by the author
Create a new registry.
NewResettingTimer constructs a new StandardResettingTimer.
No description provided by the author
No description provided by the author
NewUniformSample constructs a new uniform sample with the given reservoir size.
OpenTSDB is a blocking exporter function which reports metrics in r to a TSDB server located at addr, flushing them every d duration and prepending metric names with prefix.
OpenTSDBWithConfig is a blocking exporter function just like OpenTSDB, but it takes a OpenTSDBConfig instead.
No description provided by the author
Register the given metric under the given name.
No description provided by the author
Register runtimeMetrics for the Go runtime statistics exported in runtime and specifically runtime.MemStats.
Run all registered healthchecks.
SampleMax returns the maximum value of the slice of int64.
SampleMean returns the mean value of the slice of int64.
SampleMin returns the minimum value of the slice of int64.
SamplePercentiles returns an arbitrary percentile of the slice of int64.
SamplePercentiles returns a slice of arbitrary percentiles of the slice of int64.
SampleStdDev returns the standard deviation of the slice of int64.
SampleSum returns the sum of the slice of int64.
SampleVariance returns the variance of the slice of int64.
Output each metric in the given registry to syslog periodically using the given syslogger.
Unregister the metric with the given name.
Write sorts writes each metric in the given registry periodically to the given io.Writer.
WriteJSON writes metrics from the given registry periodically to the specified io.Writer as JSON.
WriteJSONOnce writes metrics from the given registry to the specified io.Writer as JSON.
WriteOnce sorts and writes metrics in the given registry to the given io.Writer.

# Constants

Initial slice capacity for the values stored in a ResettingTimer.
MetricsEnabledFlag is the CLI flag name to use to enable metrics collections.

# Variables

No description provided by the author
Enabled is checked by the constructor functions for all of the standard metrics.

# Structs

No description provided by the author
ExpDecaySample is an exponentially-decaying sample using a forward-decaying priority reservoir.
No description provided by the author
No description provided by the author
No description provided by the author
HistogramSnapshot is a read-only copy of another Histogram.
MeterSnapshot is a read-only copy of another Meter.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
NilHistogram is a no-op Histogram.
NilMeter is a no-op Meter.
NilResettingTimer is a no-op ResettingTimer.
NilSample is a no-op Sample.
No description provided by the author
OpenTSDBConfig provides a container with configuration parameters for the OpenTSDB exporter.
No description provided by the author
ResettingTimerSnapshot is a point-in-time copy of another ResettingTimer.
SampleSnapshot is a read-only copy of another Sample.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
StandardHistogram is the standard implementation of a Histogram and uses a Sample to bound its memory use.
StandardMeter is the standard implementation of a Meter.
The standard implementation of a Registry is a mutex-protected map of names to metrics.
StandardResettingTimer is the standard implementation of a ResettingTimer.
No description provided by the author
No description provided by the author
A uniform sample using Vitter's Algorithm R.

# Interfaces

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Histograms calculate distribution statistics from a series of int64 values.
No description provided by the author
Meters count events to produce exponentially-weighted moving average rates at one-, five-, and fifteen-minutes and a mean rate.
A Registry holds references to a set of metrics by name and can iterate over them, calling callback functions provided by the user.
ResettingTimer is used for storing aggregated values for timers, which are reset on every flush interval.
Samples maintain a statistically-significant selection of values from a stream.
Stoppable defines the metrics which has to be stopped.
No description provided by the author

# Type aliases

No description provided by the author
DuplicateMetric is the error returned by Registry.Register when a metric already exists.
No description provided by the author
No description provided by the author
No description provided by the author
Int64Slice attaches the methods of sort.Interface to []int64, sorting in increasing order.