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 CallMetricRecordergetCurrent()Returns the call metric recorder attached to the currentContext.CallMetricRecorderrecordApplicationUtilizationMetric(double value)Records a call metric measurement for application specific utilization in the range [0, inf).CallMetricRecorderrecordCallMetric(String name, double value)Deprecated.userecordRequestCostMetric(java.lang.String, double)instead.CallMetricRecorderrecordCpuUtilizationMetric(double value)Records a call metric measurement for CPU utilization in the range [0, inf).CallMetricRecorderrecordEpsMetric(double value)Records a call metric measurement for errors per second (eps) in the range [0, inf).CallMetricRecorderrecordMemoryUtilizationMetric(double value)Records a call metric measurement for memory utilization in the range [0, 1].CallMetricRecorderrecordNamedMetric(String name, double value)Records an application-specific opaque custom metric measurement.CallMetricRecorderrecordQpsMetric(double value)Records a call metric measurement for queries per second (qps) in the range [0, inf).CallMetricRecorderrecordRequestCostMetric(String name, double value)Records a call metric measurement for request cost.CallMetricRecorderrecordUtilizationMetric(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
Contextunder 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
-
-