code: func (i *Interceptor) UnaryServer() grpc.UnaryServerInterceptor {
  	monitor := i.monitoring.server
  
  	return func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
  		start := time.Now()
  
  		res, err := handler(ctx, req)
  		code := grpc.Code(err)
  		service, method := split(info.FullMethod)
  
  		labels := prometheus.Labels{
  			"service":      service,
  			"handler":      method,
  			"code":         code.String(),
  			"type":         "unary",
  			userAgentLabel: userAgent(ctx),
  		}
  		if i.trackPeers {
  			labels["peer"] = peerValue(ctx)
  		}
  		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 res, err
  	}
  }
docs: // UnaryServer ...