7 "github.com/go-kit/kit/metrics"
10 func instrumentingMiddleware(
11 requestCount metrics.Counter,
12 requestLatency metrics.Histogram,
13 countResult metrics.Histogram,
15 return func(next StringService) StringService {
16 return instrmw{requestCount, requestLatency, countResult, next}
21 requestCount metrics.Counter
22 requestLatency metrics.Histogram
23 countResult metrics.Histogram
27 func (mw instrmw) Uppercase(s string) (output string, err error) {
28 defer func(begin time.Time) {
29 lvs := []string{"method", "uppercase", "error", fmt.Sprint(err != nil)}
30 mw.requestCount.With(lvs...).Add(1)
31 mw.requestLatency.With(lvs...).Observe(time.Since(begin).Seconds())
34 output, err = mw.StringService.Uppercase(s)
38 func (mw instrmw) Count(s string) (n int) {
39 defer func(begin time.Time) {
40 lvs := []string{"method", "count", "error", "false"}
41 mw.requestCount.With(lvs...).Add(1)
42 mw.requestLatency.With(lvs...).Observe(time.Since(begin).Seconds())
43 mw.countResult.Observe(float64(n))
46 n = mw.StringService.Count(s)