Class CallMetricRecorder

java.lang.Object
io.grpc.services.CallMetricRecorder

@ExperimentalApi("https://github.com/grpc/grpc-java/issues/6012") @ThreadSafe public final class CallMetricRecorder extends Object
Utility to record call metrics for load-balancing. One instance per call.
  • Constructor Details

    • CallMetricRecorder

      public CallMetricRecorder()
  • Method Details

    • getCurrent

      public static CallMetricRecorder getCurrent()
      Returns the call metric recorder attached to the current Context. If there is none, returns a no-op recorder.

      IMPORTANT:It returns the recorder specifically for the current RPC call. DO NOT save the returned object or share it between different RPC calls.

      IMPORTANT:It must be called under the Context under which the RPC handler was called. If it is called from a different thread, the Context must be propagated to the same thread, e.g., with Context.wrap(Runnable).

      Since:
      1.23.0
    • recordUtilizationMetric

      public CallMetricRecorder recordUtilizationMetric(String name, double value)
      Records a call metric measurement for utilization in the range [0, 1]. Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.23.0
    • recordCallMetric

      @Deprecated @InlineMe(replacement="this.recordRequestCostMetric(name, value)") public CallMetricRecorder recordCallMetric(String name, double value)
      Deprecated.
      use recordRequestCostMetric(String, double) instead. This method will be removed in the future.
      Records a call metric measurement for request cost. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.47.0
    • recordRequestCostMetric

      public CallMetricRecorder recordRequestCostMetric(String name, double value)
      Records a call metric measurement for request cost. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.48.1
    • recordNamedMetric

      public CallMetricRecorder recordNamedMetric(String name, double value)
      Records an application-specific opaque custom metric measurement. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
    • recordCpuUtilizationMetric

      public CallMetricRecorder recordCpuUtilizationMetric(double value)
      Records a call metric measurement for CPU utilization in the range [0, inf). Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.47.0
    • recordApplicationUtilizationMetric

      public CallMetricRecorder recordApplicationUtilizationMetric(double value)
      Records a call metric measurement for application specific utilization in the range [0, inf). Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
    • recordMemoryUtilizationMetric

      public CallMetricRecorder recordMemoryUtilizationMetric(double value)
      Records a call metric measurement for memory utilization in the range [0, 1]. Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.47.0
    • recordQpsMetric

      public CallMetricRecorder recordQpsMetric(double value)
      Records a call metric measurement for queries per second (qps) in the range [0, inf). Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object
      Since:
      1.54.0
    • recordEpsMetric

      public CallMetricRecorder recordEpsMetric(double value)
      Records a call metric measurement for errors per second (eps) in the range [0, inf). Values outside the valid range are ignored. If RPC has already finished, this method is no-op.

      A latter record will overwrite its former name-sakes.

      Returns:
      this recorder object