featurebase/util/statd.go
2015-02-05 21:09:07 +00:00

57 lines
967 B
Go

package util
import (
log "github.com/cihub/seelog"
"pilosa/config"
"github.com/cactus/go-statsd-client/statsd"
)
type args struct {
stat string
delta int64
rate float32
}
var (
timer chan args
count chan string
end chan bool
)
func init() {
timer = make(chan args, 100)
count = make(chan string, 100)
end = make(chan bool)
stat_config := config.GetStringDefault("statsd_server", "127.0.0.1:8125")
log.Warn("New Stats", stat_config)
stats, _ := statsd.New(stat_config, "")
go func() {
for {
select {
case ci := <-timer:
stats.Gauge(ci.stat, ci.delta, ci.rate)
case stat := <-count:
stats.Inc(stat, 1, 1.0)
case <-end:
log.Warn("DONE Stats")
return
}
}
}()
}
func SendTimer(stat string, delta int64) {
pstat := "pilosa." + stat
timer <- args{pstat, delta, 1.0}
}
func SendInc(stat string) {
pstat := "pilosa." + stat
count <- pstat
}
func ShutdownStats() {
log.Warn("Shutdown Stats")
end <- true
}