code: func (i *Interceptor) UnaryClient() grpc.UnaryClientInterceptor {
  	monitor := i.monitoring.client
  
  	return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
  		start := time.Now()
  
  		err := invoker(ctx, method, req, reply, cc, opts...)
  		code := grpc.Code(err)
  		service, method := split(method)
  		labels := prometheus.Labels{
  			"service": service,
  			"handler": method,
  			"code":    code.String(),
  			"type":    "unary",
  		}
  		if err != nil && code != codes.OK {
  			monitor.errors.With(labels).Add(1)
  		}
  
  		monitor.requestDuration.With(labels).Observe(time.Since(start).Seconds())
  		monitor.requestsTotal.With(labels).Add(1)
  
  		return err
  	}
  }
docs: // UnaryClient ...