| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // Package metrics provides both a means of generating metrics and the ability
- // to send metric data to a graphite endpoint.
- // The usage of this package without providing a graphite_addr when calling
- // NewBucket results in NOP metric objects. No data will be collected.
- package metrics
- import (
- "io"
- gometrics "github.com/coreos/etcd/third_party/github.com/rcrowley/go-metrics"
- )
- type Timer gometrics.Timer
- type Gauge gometrics.Gauge
- type Bucket interface {
- // If a timer exists in this Bucket, return it. Otherwise, create
- // a new timer with the given name and store it in this Bucket.
- // The returned object will fulfull the Timer interface.
- Timer(name string) Timer
- // This acts similarly to Timer, but with objects that fufill the
- // Gauge interface.
- Gauge(name string) Gauge
- // Write the current state of all Metrics in a human-readable format
- // to the provide io.Writer.
- Dump(io.Writer)
- // Instruct the Bucket to periodically push all metric data to the
- // provided graphite endpoint.
- Publish(string) error
- }
- // Create a new Bucket object that periodically
- func NewBucket(name string) Bucket {
- if name == "" {
- return nilBucket{}
- }
- return newStandardBucket(name)
- }
|