| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package metrics
- import (
- "fmt"
- "syslog"
- "time"
- )
- // Output each metric in the given registry to syslog periodically using
- // the given syslogger. The interval is to be given in seconds.
- func Syslog(r Registry, interval int, w *syslog.Writer) {
- for {
- r.EachCounter(func(name string, c Counter) {
- w.Info(fmt.Sprintf("counter %s: count: %d", name, c.Count()))
- })
- r.EachGauge(func(name string, g Gauge) {
- w.Info(fmt.Sprintf("gauge %s: value: %d", name, g.Value()))
- })
- r.RunHealthchecks()
- r.EachHealthcheck(func(name string, h Healthcheck) {
- w.Info(fmt.Sprintf("healthcheck %s: error: %v", name, h.Error()))
- })
- r.EachHistogram(func(name string, h Histogram) {
- ps := h.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
- w.Info(fmt.Sprintf(
- "histogram %s: count: %d min: %d max: %d mean: %.2f stddev: %.2f median: %.2f 75%%: %.2f 95%%: %.2f 99%%: %.2f 99.9%%: %.2f",
- name,
- h.Count(),
- h.Min(),
- h.Max(),
- h.Mean(),
- h.StdDev(),
- ps[0],
- ps[1],
- ps[2],
- ps[3],
- ps[4],
- ))
- })
- r.EachMeter(func(name string, m Meter) {
- w.Info(fmt.Sprintf(
- "meter %s: count: %d 1-min: %.2f 5-min: %.2f 15-min: %.2f mean: %.2f",
- name,
- m.Count(),
- m.Rate1(),
- m.Rate5(),
- m.Rate15(),
- m.RateMean(),
- ))
- })
- r.EachTimer(func(name string, t Timer) {
- ps := t.Percentiles([]float64{0.5, 0.75, 0.95, 0.99, 0.999})
- w.Info(fmt.Sprintf(
- "timer %s: count: %d min: %d max: %d mean: %.2f stddev: %.2f median: %.2f 75%%: %.2f 95%%: %.2f 99%%: %.2f 99.9%%: %.2f 1-min: %.2f 5-min: %.2f 15-min: %.2f mean: %.2f",
- name,
- t.Count(),
- t.Min(),
- t.Max(),
- t.Mean(),
- t.StdDev(),
- ps[0],
- ps[1],
- ps[2],
- ps[3],
- ps[4],
- t.Rate1(),
- t.Rate5(),
- t.Rate15(),
- t.RateMean(),
- ))
- })
- time.Sleep(int64(1e9) * int64(interval))
- }
- }
|