Class 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 Detail

      • CallMetricRecorder

        public CallMetricRecorder()
    • Method Detail

      • 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(java.lang.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