amazon-kinesis-client-go/batchconsumer/stats/stats.go

51 lines
879 B
Go
Raw Normal View History

2017-08-07 03:05:41 +00:00
package stats
import (
"time"
"gopkg.in/Clever/kayvee-go.v6/logger"
)
var log = logger.New("amazon-kinesis-client-go")
type datum struct {
name string
value int
category string
}
var queue = make(chan datum, 1000)
func init() {
data := map[string]int{}
tick := time.Tick(time.Minute)
go func() {
for {
select {
case d := <-queue:
if d.category == "counter" {
data[d.name] = data[d.name] + d.value
} else if d.category == "gauge" {
data[d.name] = d.value
} else {
log.ErrorD("unknow-stat-category", logger.M{"category": d.category})
}
case <-tick:
tmp := logger.M{}
for k, v := range data {
tmp[k] = v
}
log.InfoD("stats", tmp)
}
}
}()
}
func Counter(name string, val int) {
queue <- datum{name, val, "counter"}
}
func Gauge(name string, val int) {
queue <- datum{name, val, "gauge"}
}