func (r *RequestDurationSeconds) Route(route string) *RequestDurationSeconds {
	return &RequestDurationSeconds{
		Histogram: r.Histogram.With("route", route),
		module:    r.module,
		service:   r.service,
		route:     route,
	}
}
Route specifies the method label for RequestDurationSeconds.
package srvgrpc
import (
	"context"
	"time"
	"github.com/go-kit/kit/metrics"
	"github.com/grpc-ecosystem/go-grpc-prometheus"
	"google.golang.org/grpc"
)
type MetricsModule struct{}
func (m MetricsModule) ProvideGRPC(server *grpc.Server) {
	grpc_prometheus.Register(server)
}
func Metrics(metrics *RequestDurationSeconds) grpc.UnaryServerInterceptor {
	return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) {
		start := time.Now()
		defer func() {
			metrics.Route(info.FullMethod).Observe(time.Since(start).Seconds())
		}()
		return handler(ctx, req)
	}
}
type RequestDurationSeconds struct {
	Histogram metrics.Histogram
	module  string
	service string
	route   string
}
func (r *RequestDurationSeconds) Module(module string) *RequestDurationSeconds {
	return &RequestDurationSeconds{
		Histogram: r.Histogram.With("module", module),
		module:    module,
		service:   r.service,
		route:     r.route,
	}
}
func (r *RequestDurationSeconds) Service(service string) *RequestDurationSeconds {
	return &RequestDurationSeconds{
		Histogram: r.Histogram.With("service", service),
		module:    r.module,
		service:   service,
		route:     r.route,
	}
}