1818
1919import static com .google .common .base .Preconditions .checkNotNull ;
2020import static io .grpc .internal .GrpcUtil .IMPLEMENTATION_VERSION ;
21+ import static io .grpc .opentelemetry .internal .OpenTelemetryConstants .HEDGE_BUCKETS ;
2122import static io .grpc .opentelemetry .internal .OpenTelemetryConstants .LATENCY_BUCKETS ;
23+ import static io .grpc .opentelemetry .internal .OpenTelemetryConstants .RETRY_BUCKETS ;
2224import static io .grpc .opentelemetry .internal .OpenTelemetryConstants .SIZE_BUCKETS ;
25+ import static io .grpc .opentelemetry .internal .OpenTelemetryConstants .TRANSPARENT_RETRY_BUCKETS ;
2326
2427import com .google .common .annotations .VisibleForTesting ;
2528import com .google .common .base .Stopwatch ;
@@ -64,8 +67,8 @@ public Stopwatch get() {
6467 };
6568
6669 @ VisibleForTesting
67- static boolean ENABLE_OTEL_TRACING = GrpcUtil . getFlag ( "GRPC_EXPERIMENTAL_ENABLE_OTEL_TRACING" ,
68- false );
70+ static boolean ENABLE_OTEL_TRACING =
71+ GrpcUtil . getFlag ( "GRPC_EXPERIMENTAL_ENABLE_OTEL_TRACING" , false );
6972
7073 private final OpenTelemetry openTelemetrySdk ;
7174 private final MeterProvider meterProvider ;
@@ -241,6 +244,54 @@ static OpenTelemetryMetricsResource createMetricInstruments(Meter meter,
241244 .build ());
242245 }
243246
247+ if (isMetricEnabled ("grpc.client.call.retries" , enableMetrics , disableDefault )) {
248+ builder .clientCallRetriesCounter (
249+ meter .histogramBuilder (
250+ "grpc.client.call.retries" )
251+ .setUnit ("{retry}" )
252+ .setDescription ("Number of retries during the client call. "
253+ + "If there were no retries, 0 is not reported." )
254+ .ofLongs ()
255+ .setExplicitBucketBoundariesAdvice (RETRY_BUCKETS )
256+ .build ());
257+ }
258+
259+ if (isMetricEnabled ("grpc.client.call.transparent_retries" , enableMetrics ,
260+ disableDefault )) {
261+ builder .clientCallTransparentRetriesCounter (
262+ meter .histogramBuilder (
263+ "grpc.client.call.transparent_retries" )
264+ .setUnit ("{transparent_retry}" )
265+ .setDescription ("Number of transparent retries during the client call. "
266+ + "If there were no transparent retries, 0 is not reported." )
267+ .ofLongs ()
268+ .setExplicitBucketBoundariesAdvice (TRANSPARENT_RETRY_BUCKETS )
269+ .build ());
270+ }
271+
272+ if (isMetricEnabled ("grpc.client.call.hedges" , enableMetrics , disableDefault )) {
273+ builder .clientCallHedgesCounter (
274+ meter .histogramBuilder (
275+ "grpc.client.call.hedges" )
276+ .setUnit ("{hedge}" )
277+ .setDescription ("Number of hedges during the client call. "
278+ + "If there were no hedges, 0 is not reported." )
279+ .ofLongs ()
280+ .setExplicitBucketBoundariesAdvice (HEDGE_BUCKETS )
281+ .build ());
282+ }
283+
284+ if (isMetricEnabled ("grpc.client.call.retry_delay" , enableMetrics , disableDefault )) {
285+ builder .clientCallRetryDelayCounter (
286+ meter .histogramBuilder (
287+ "grpc.client.call.retry_delay" )
288+ .setUnit ("s" )
289+ .setDescription ("Total time of delay while there is no active attempt during the "
290+ + "client call" )
291+ .setExplicitBucketBoundariesAdvice (LATENCY_BUCKETS )
292+ .build ());
293+ }
294+
244295 if (isMetricEnabled ("grpc.server.call.started" , enableMetrics , disableDefault )) {
245296 builder .serverCallCountCounter (
246297 meter .counterBuilder ("grpc.server.call.started" )
@@ -259,8 +310,8 @@ static OpenTelemetryMetricsResource createMetricInstruments(Meter meter,
259310 .build ());
260311 }
261312
262- if (isMetricEnabled ("grpc.server.call.sent_total_compressed_message_size" , enableMetrics ,
263- disableDefault )) {
313+ if (isMetricEnabled ("grpc.server.call.sent_total_compressed_message_size" ,
314+ enableMetrics , disableDefault )) {
264315 builder .serverTotalSentCompressedMessageSizeCounter (
265316 meter .histogramBuilder (
266317 "grpc.server.call.sent_total_compressed_message_size" )
@@ -271,8 +322,8 @@ static OpenTelemetryMetricsResource createMetricInstruments(Meter meter,
271322 .build ());
272323 }
273324
274- if (isMetricEnabled ("grpc.server.call.rcvd_total_compressed_message_size" , enableMetrics ,
275- disableDefault )) {
325+ if (isMetricEnabled ("grpc.server.call.rcvd_total_compressed_message_size" ,
326+ enableMetrics , disableDefault )) {
276327 builder .serverTotalReceivedCompressedMessageSizeCounter (
277328 meter .histogramBuilder (
278329 "grpc.server.call.rcvd_total_compressed_message_size" )
0 commit comments