21
21
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_RECEIVED_BYTES_PER_RPC ;
22
22
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_RECEIVED_MESSAGES_PER_METHOD ;
23
23
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_RECEIVED_MESSAGES_PER_RPC ;
24
+ import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_RETRIES_PER_CALL ;
25
+ import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_RETRY_DELAY_PER_CALL ;
24
26
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_ROUNDTRIP_LATENCY ;
25
27
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_SENT_BYTES_PER_METHOD ;
26
28
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_SENT_BYTES_PER_RPC ;
29
31
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_SERVER_LATENCY ;
30
32
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_STARTED_RPCS ;
31
33
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_STATUS ;
34
+ import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_CLIENT_TRANSPARENT_RETRIES_PER_CALL ;
32
35
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_SERVER_METHOD ;
33
36
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_SERVER_RECEIVED_BYTES_PER_METHOD ;
34
37
import static io .opencensus .contrib .grpc .metrics .RpcMeasureConstants .GRPC_SERVER_RECEIVED_BYTES_PER_RPC ;
@@ -131,6 +134,10 @@ public final class RpcViewConstants {
131
134
0.0 , 1.0 , 2.0 , 4.0 , 8.0 , 16.0 , 32.0 , 64.0 , 128.0 , 256.0 , 512.0 , 1024.0 , 2048.0 ,
132
135
4096.0 , 8192.0 , 16384.0 , 32768.0 , 65536.0 ));
133
136
137
+ @ VisibleForTesting
138
+ static final List <Double > RETRY_COUNT_PER_CALL_BUCKET_BOUNDARIES =
139
+ Collections .unmodifiableList (Arrays .asList (1.0 , 2.0 , 3.0 , 4.0 , 5.0 ));
140
+
134
141
// Use Aggregation.Mean to record sum and count stats at the same time.
135
142
@ VisibleForTesting static final Aggregation MEAN = Aggregation .Mean .create ();
136
143
@ VisibleForTesting static final Aggregation COUNT = Count .create ();
@@ -151,6 +158,10 @@ public final class RpcViewConstants {
151
158
static final Aggregation AGGREGATION_WITH_COUNT_HISTOGRAM =
152
159
Distribution .create (BucketBoundaries .create (RPC_COUNT_BUCKET_BOUNDARIES ));
153
160
161
+ @ VisibleForTesting
162
+ static final Aggregation AGGREGATION_WITH_COUNT_RETRY_HISTOGRAM =
163
+ Distribution .create (BucketBoundaries .create (RETRY_COUNT_PER_CALL_BUCKET_BOUNDARIES ));
164
+
154
165
@ VisibleForTesting static final Duration MINUTE = Duration .create (60 , 0 );
155
166
@ VisibleForTesting static final Duration HOUR = Duration .create (60 * 60 , 0 );
156
167
@@ -502,6 +513,71 @@ public final class RpcViewConstants {
502
513
COUNT ,
503
514
Arrays .asList (GRPC_CLIENT_METHOD ));
504
515
516
+ /**
517
+ * {@link View} for client retries per call.
518
+ *
519
+ * @since 0.28
520
+ */
521
+ public static final View GRPC_CLIENT_RETRIES_PER_CALL_VIEW =
522
+ View .create (
523
+ View .Name .create ("grpc.io/client/retries_per_call" ),
524
+ "Number of client retries per call" ,
525
+ GRPC_CLIENT_RETRIES_PER_CALL ,
526
+ AGGREGATION_WITH_COUNT_RETRY_HISTOGRAM ,
527
+ Arrays .asList (GRPC_CLIENT_METHOD ));
528
+
529
+ /**
530
+ * {@link View} for total transparent client retries across calls.
531
+ *
532
+ * @since 0.28
533
+ */
534
+ public static final View GRPC_CLIENT_TRANSPARENT_RETRIES_VIEW =
535
+ View .create (
536
+ View .Name .create ("grpc.io/client/transparent_retries" ),
537
+ "Total number of transparent client retries across calls" ,
538
+ GRPC_CLIENT_TRANSPARENT_RETRIES_PER_CALL ,
539
+ SUM ,
540
+ Arrays .asList (GRPC_CLIENT_METHOD ));
541
+
542
+ /**
543
+ * {@link View} for total time of delay while there is no active attempt during the client call.
544
+ *
545
+ * @since 0.28
546
+ */
547
+ public static final View GRPC_CLIENT_RETRY_DELAY_PER_CALL_VIEW =
548
+ View .create (
549
+ View .Name .create ("grpc.io/client/retry_delay_per_call" ),
550
+ "Total time of delay while there is no active attempt during the client call" ,
551
+ GRPC_CLIENT_RETRY_DELAY_PER_CALL ,
552
+ AGGREGATION_WITH_MILLIS_HISTOGRAM ,
553
+ Arrays .asList (GRPC_CLIENT_METHOD ));
554
+
555
+ /**
556
+ * {@link View} for total retries across all calls, excluding transparent retries.
557
+ *
558
+ * @since 0.28
559
+ */
560
+ public static final View GRPC_CLIENT_RETRIES_VIEW =
561
+ View .create (
562
+ View .Name .create ("grpc.io/client/retries" ),
563
+ "Total number of client retries across all calls" ,
564
+ GRPC_CLIENT_RETRIES_PER_CALL ,
565
+ SUM ,
566
+ Arrays .asList (GRPC_CLIENT_METHOD ));
567
+
568
+ /**
569
+ * {@link View} for transparent retries per call.
570
+ *
571
+ * @since 0.28
572
+ */
573
+ public static final View GRPC_CLIENT_TRANSPARENT_RETRIES_PER_CALL_VIEW =
574
+ View .create (
575
+ View .Name .create ("grpc.io/client/transparent_retries_per_call" ),
576
+ "Number of transparent client retries per call" ,
577
+ GRPC_CLIENT_TRANSPARENT_RETRIES_PER_CALL ,
578
+ AGGREGATION_WITH_COUNT_RETRY_HISTOGRAM ,
579
+ Arrays .asList (GRPC_CLIENT_METHOD ));
580
+
505
581
// Rpc server cumulative views.
506
582
507
583
/**
0 commit comments