105 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
go-metrics
 | 
						|
==========
 | 
						|
 | 
						|
Go port of Coda Hale's Metrics library: <https://github.com/codahale/metrics>.
 | 
						|
 | 
						|
Documentation: <http://godoc.org/github.com/rcrowley/go-metrics>.
 | 
						|
 | 
						|
Usage
 | 
						|
-----
 | 
						|
 | 
						|
Create and update metrics:
 | 
						|
 | 
						|
```go
 | 
						|
c := metrics.NewCounter()
 | 
						|
metrics.Register("foo", c)
 | 
						|
c.Inc(47)
 | 
						|
 | 
						|
g := metrics.NewGauge()
 | 
						|
metrics.Register("bar", g)
 | 
						|
g.Update(47)
 | 
						|
 | 
						|
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)
 | 
						|
```
 | 
						|
 | 
						|
Periodically log every metric in human-readable form to standard error:
 | 
						|
 | 
						|
```go
 | 
						|
go metrics.Log(metrics.DefaultRegistry, 60e9, log.New(os.Stderr, "metrics: ", log.Lmicroseconds))
 | 
						|
```
 | 
						|
 | 
						|
Periodically log every metric in slightly-more-parseable form to syslog:
 | 
						|
 | 
						|
```go
 | 
						|
w, _ := syslog.Dial("unixgram", "/dev/log", syslog.LOG_INFO, "metrics")
 | 
						|
go metrics.Syslog(metrics.DefaultRegistry, 60e9, w)
 | 
						|
```
 | 
						|
 | 
						|
Periodically emit every metric to Graphite:
 | 
						|
 | 
						|
```go
 | 
						|
addr, _ := net.ResolveTCPAddr("tcp", "127.0.0.1:2003")
 | 
						|
go metrics.Graphite(metrics.DefaultRegistry, 10e9, "metrics", addr)
 | 
						|
```
 | 
						|
 | 
						|
Periodically emit every metric into InfluxDB:
 | 
						|
 | 
						|
```go
 | 
						|
import "github.com/rcrowley/go-metrics/influxdb"
 | 
						|
 | 
						|
go influxdb.Influxdb(metrics.DefaultRegistry, 10e9, &influxdb.Config{
 | 
						|
    Host:     "127.0.0.1:8086",
 | 
						|
    Database: "metrics",
 | 
						|
    Username: "test",
 | 
						|
    Password: "test",
 | 
						|
})
 | 
						|
```
 | 
						|
 | 
						|
Periodically upload every metric to Librato:
 | 
						|
 | 
						|
```go
 | 
						|
import "github.com/rcrowley/go-metrics/librato"
 | 
						|
 | 
						|
go librato.Librato(metrics.DefaultRegistry,
 | 
						|
    10e9,                  // interval
 | 
						|
    "example@example.com", // account owner email address
 | 
						|
    "token",               // Librato API token
 | 
						|
    "hostname",            // source
 | 
						|
    []float64{0.95},       // precentiles to send
 | 
						|
    time.Millisecond,      // time unit
 | 
						|
)
 | 
						|
```
 | 
						|
 | 
						|
Periodically emit every metric to StatHat:
 | 
						|
 | 
						|
```go
 | 
						|
import "github.com/rcrowley/go-metrics/stathat"
 | 
						|
 | 
						|
go stathat.Stathat(metrics.DefaultRegistry, 10e9, "example@example.com")
 | 
						|
```
 | 
						|
 | 
						|
Installation
 | 
						|
------------
 | 
						|
 | 
						|
```sh
 | 
						|
go get github.com/rcrowley/go-metrics
 | 
						|
```
 | 
						|
 | 
						|
StatHat support additionally requires their Go client:
 | 
						|
 | 
						|
```sh
 | 
						|
go get github.com/stathat/go
 | 
						|
```
 |