1
0
mirror of https://github.com/mainflux/mainflux.git synced 2025-04-26 13:48:53 +08:00
Dušan Borovčanin 7a193829f4 MF-139 - Expose metrics from all services (#213)
* Expose metrics from normalizer service

Add service interface in order to expose method to be monitored.

Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com>

* Refactor normalizer

Add metrics to normalizer service without exporting its internals.

Signed-off-by: Dušan Borovčanin <borovcanindusan1@gmail.com>
2018-04-03 20:25:49 +02:00

31 lines
681 B
Go

package normalizer
import (
"time"
"github.com/go-kit/kit/metrics"
nats "github.com/nats-io/go-nats"
)
type metricsMiddleware struct {
counter metrics.Counter
latency metrics.Histogram
ef eventFlow
}
func newMetricsMiddleware(ef eventFlow, counter metrics.Counter, latency metrics.Histogram) *metricsMiddleware {
return &metricsMiddleware{
counter: counter,
latency: latency,
ef: ef,
}
}
func (mm *metricsMiddleware) handleMessage(msg *nats.Msg) {
defer func(begin time.Time) {
mm.counter.With("method", "handleMessage").Add(1)
mm.latency.With("method", "handleMessage").Observe(time.Since(begin).Seconds())
}(time.Now())
mm.ef.handleMsg(msg)
}