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 Summary
Constructors Constructor Description CallMetricRecorder()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static CallMetricRecorder
getCurrent()
Returns the call metric recorder attached to the currentContext
.CallMetricRecorder
recordApplicationUtilizationMetric(double value)
Records a call metric measurement for application specific utilization in the range [0, inf).CallMetricRecorder
recordCallMetric(String name, double value)
Deprecated.userecordRequestCostMetric(java.lang.String, double)
instead.CallMetricRecorder
recordCpuUtilizationMetric(double value)
Records a call metric measurement for CPU utilization in the range [0, inf).CallMetricRecorder
recordEpsMetric(double value)
Records a call metric measurement for errors per second (eps) in the range [0, inf).CallMetricRecorder
recordMemoryUtilizationMetric(double value)
Records a call metric measurement for memory utilization in the range [0, 1].CallMetricRecorder
recordNamedMetric(String name, double value)
Records an application-specific opaque custom metric measurement.CallMetricRecorder
recordQpsMetric(double value)
Records a call metric measurement for queries per second (qps) in the range [0, inf).CallMetricRecorder
recordRequestCostMetric(String name, double value)
Records a call metric measurement for request cost.CallMetricRecorder
recordUtilizationMetric(String name, double value)
Records a call metric measurement for utilization in the range [0, 1].
-
-
-
Method Detail
-
getCurrent
public static CallMetricRecorder getCurrent()
Returns the call metric recorder attached to the currentContext
. 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., withContext.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.userecordRequestCostMetric(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
-
-