1 //
2 //
3 // Copyright 2018 gRPC authors.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 //
18
19 #include <grpc/support/port_platform.h>
20 #include <grpcpp/opencensus.h>
21
22 #include <vector>
23
24 #include "absl/time/time.h"
25 #include "opencensus/stats/stats.h"
26 #include "src/cpp/ext/filters/census/grpc_plugin.h"
27
28 namespace grpc {
29
30 using ::opencensus::stats::Aggregation;
31 using ::opencensus::stats::AggregationWindow;
32 using ::opencensus::stats::BucketBoundaries;
33 using ::opencensus::stats::ViewDescriptor;
34
35 // These measure definitions should be kept in sync across opencensus
36 // implementations.
37
38 namespace {
39
BytesDistributionAggregation()40 Aggregation BytesDistributionAggregation() {
41 return Aggregation::Distribution(BucketBoundaries::Explicit(
42 {0, 1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216,
43 67108864, 268435456, 1073741824, 4294967296}));
44 }
45
MillisDistributionAggregation()46 Aggregation MillisDistributionAggregation() {
47 return Aggregation::Distribution(BucketBoundaries::Explicit(
48 {0, 0.01, 0.05, 0.1, 0.3, 0.6, 0.8, 1, 2, 3, 4,
49 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50,
50 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650,
51 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000}));
52 }
53
SetConstantLabels(ViewDescriptor * descriptor)54 void SetConstantLabels(ViewDescriptor* descriptor) {
55 for (const auto& label :
56 grpc::internal::OpenCensusRegistry::Get().ConstantLabels()) {
57 descriptor->add_column(label.tag_key);
58 }
59 }
60
CountDistributionAggregation()61 Aggregation CountDistributionAggregation() {
62 return Aggregation::Distribution(BucketBoundaries::Exponential(17, 1.0, 2.0));
63 }
64
DefaultViewDescriptor()65 ViewDescriptor DefaultViewDescriptor() {
66 auto descriptor = ViewDescriptor();
67 SetConstantLabels(&descriptor);
68 return descriptor;
69 }
70
MinuteDescriptor()71 ViewDescriptor MinuteDescriptor() {
72 auto descriptor = DefaultViewDescriptor();
73 SetAggregationWindow(AggregationWindow::Interval(absl::Minutes(1)),
74 &descriptor);
75 return descriptor;
76 }
77
HourDescriptor()78 ViewDescriptor HourDescriptor() {
79 auto descriptor = DefaultViewDescriptor();
80 SetAggregationWindow(AggregationWindow::Interval(absl::Hours(1)),
81 &descriptor);
82 return descriptor;
83 }
84
85 } // namespace
86
RegisterOpenCensusViewsForExport()87 void RegisterOpenCensusViewsForExport() {
88 experimental::ClientSentMessagesPerRpcCumulative().RegisterForExport();
89 experimental::ClientSentBytesPerRpcCumulative().RegisterForExport();
90 experimental::ClientReceivedMessagesPerRpcCumulative().RegisterForExport();
91 experimental::ClientReceivedBytesPerRpcCumulative().RegisterForExport();
92 experimental::ClientRoundtripLatencyCumulative().RegisterForExport();
93 experimental::ClientServerLatencyCumulative().RegisterForExport();
94
95 experimental::ServerSentMessagesPerRpcCumulative().RegisterForExport();
96 experimental::ServerSentBytesPerRpcCumulative().RegisterForExport();
97 experimental::ServerReceivedMessagesPerRpcCumulative().RegisterForExport();
98 experimental::ServerReceivedBytesPerRpcCumulative().RegisterForExport();
99 experimental::ServerServerLatencyCumulative().RegisterForExport();
100 }
101
102 namespace experimental {
103
104 // client
ClientStartedRpcs()105 const ViewDescriptor& ClientStartedRpcs() {
106 const static ViewDescriptor descriptor =
107 DefaultViewDescriptor()
108 .set_name("grpc.io/client/started_rpcs")
109 .set_measure(kRpcClientStartedRpcsMeasureName)
110 .set_aggregation(Aggregation::Count())
111 .add_column(ClientMethodTagKey());
112 return descriptor;
113 }
114
ClientCompletedRpcs()115 const ViewDescriptor& ClientCompletedRpcs() {
116 const static ViewDescriptor descriptor =
117 DefaultViewDescriptor()
118 .set_name("grpc.io/client/completed_rpcs")
119 .set_measure(kRpcClientRoundtripLatencyMeasureName)
120 .set_aggregation(Aggregation::Count())
121 .add_column(ClientMethodTagKey())
122 .add_column(ClientStatusTagKey());
123 return descriptor;
124 }
125
ClientRoundtripLatency()126 const ViewDescriptor& ClientRoundtripLatency() {
127 const static ViewDescriptor descriptor =
128 DefaultViewDescriptor()
129 .set_name("grpc.io/client/roundtrip_latency")
130 .set_measure(kRpcClientRoundtripLatencyMeasureName)
131 .set_aggregation(MillisDistributionAggregation())
132 .add_column(ClientMethodTagKey());
133 return descriptor;
134 }
135
ClientTransportLatency()136 const ViewDescriptor& ClientTransportLatency() {
137 const static ViewDescriptor descriptor =
138 DefaultViewDescriptor()
139 .set_name("grpc.io/client/transport_latency")
140 .set_measure(kRpcClientTransportLatencyMeasureName)
141 .set_aggregation(MillisDistributionAggregation())
142 .add_column(ClientMethodTagKey());
143 return descriptor;
144 }
145
ClientSentCompressedMessageBytesPerRpc()146 const ViewDescriptor& ClientSentCompressedMessageBytesPerRpc() {
147 const static ViewDescriptor descriptor =
148 DefaultViewDescriptor()
149 .set_name("grpc.io/client/sent_compressed_message_bytes_per_rpc")
150 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
151 .set_aggregation(BytesDistributionAggregation())
152 .add_column(ClientMethodTagKey())
153 .add_column(ClientStatusTagKey());
154 return descriptor;
155 }
156
ClientReceivedCompressedMessageBytesPerRpc()157 const ViewDescriptor& ClientReceivedCompressedMessageBytesPerRpc() {
158 const static ViewDescriptor descriptor =
159 DefaultViewDescriptor()
160 .set_name("grpc.io/client/received_compressed_message_bytes_per_rpc")
161 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
162 .set_aggregation(BytesDistributionAggregation())
163 .add_column(ClientMethodTagKey())
164 .add_column(ClientStatusTagKey());
165 return descriptor;
166 }
167
168 // server
ServerStartedRpcs()169 const ViewDescriptor& ServerStartedRpcs() {
170 const static ViewDescriptor descriptor =
171 DefaultViewDescriptor()
172 .set_name("grpc.io/server/started_rpcs")
173 .set_measure(kRpcServerStartedRpcsMeasureName)
174 .set_aggregation(Aggregation::Count())
175 .add_column(ServerMethodTagKey());
176 return descriptor;
177 }
178
ServerCompletedRpcs()179 const ViewDescriptor& ServerCompletedRpcs() {
180 const static ViewDescriptor descriptor =
181 DefaultViewDescriptor()
182 .set_name("grpc.io/server/completed_rpcs")
183 .set_measure(kRpcServerServerLatencyMeasureName)
184 .set_aggregation(Aggregation::Count())
185 .add_column(ServerMethodTagKey())
186 .add_column(ServerStatusTagKey());
187 return descriptor;
188 }
189
ServerSentCompressedMessageBytesPerRpc()190 const ViewDescriptor& ServerSentCompressedMessageBytesPerRpc() {
191 const static ViewDescriptor descriptor =
192 DefaultViewDescriptor()
193 .set_name("grpc.io/server/sent_compressed_message_bytes_per_rpc")
194 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
195 .set_aggregation(BytesDistributionAggregation())
196 .add_column(ServerMethodTagKey())
197 .add_column(ServerStatusTagKey());
198 return descriptor;
199 }
200
ServerReceivedCompressedMessageBytesPerRpc()201 const ViewDescriptor& ServerReceivedCompressedMessageBytesPerRpc() {
202 const static ViewDescriptor descriptor =
203 DefaultViewDescriptor()
204 .set_name("grpc.io/server/received_compressed_message_bytes_per_rpc")
205 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
206 .set_aggregation(BytesDistributionAggregation())
207 .add_column(ServerMethodTagKey())
208 .add_column(ServerStatusTagKey());
209 return descriptor;
210 }
211
ServerServerLatency()212 const ViewDescriptor& ServerServerLatency() {
213 const static ViewDescriptor descriptor =
214 DefaultViewDescriptor()
215 .set_name("grpc.io/server/server_latency")
216 .set_measure(kRpcServerServerLatencyMeasureName)
217 .set_aggregation(MillisDistributionAggregation())
218 .add_column(ServerMethodTagKey())
219 .add_column(ServerStatusTagKey());
220 return descriptor;
221 }
222
223 // client cumulative
ClientSentBytesPerRpcCumulative()224 const ViewDescriptor& ClientSentBytesPerRpcCumulative() {
225 const static ViewDescriptor descriptor =
226 DefaultViewDescriptor()
227 .set_name("grpc.io/client/sent_bytes_per_rpc/cumulative")
228 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
229 .set_aggregation(BytesDistributionAggregation())
230 .add_column(ClientMethodTagKey());
231 return descriptor;
232 }
233
ClientReceivedBytesPerRpcCumulative()234 const ViewDescriptor& ClientReceivedBytesPerRpcCumulative() {
235 const static ViewDescriptor descriptor =
236 DefaultViewDescriptor()
237 .set_name("grpc.io/client/received_bytes_per_rpc/cumulative")
238 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
239 .set_aggregation(BytesDistributionAggregation())
240 .add_column(ClientMethodTagKey());
241 return descriptor;
242 }
243
ClientRoundtripLatencyCumulative()244 const ViewDescriptor& ClientRoundtripLatencyCumulative() {
245 const static ViewDescriptor descriptor =
246 DefaultViewDescriptor()
247 .set_name("grpc.io/client/roundtrip_latency/cumulative")
248 .set_measure(kRpcClientRoundtripLatencyMeasureName)
249 .set_aggregation(MillisDistributionAggregation())
250 .add_column(ClientMethodTagKey());
251 return descriptor;
252 }
253
ClientServerLatencyCumulative()254 const ViewDescriptor& ClientServerLatencyCumulative() {
255 const static ViewDescriptor descriptor =
256 DefaultViewDescriptor()
257 .set_name("grpc.io/client/server_latency/cumulative")
258 .set_measure(kRpcClientServerLatencyMeasureName)
259 .set_aggregation(MillisDistributionAggregation())
260 .add_column(ClientMethodTagKey());
261 return descriptor;
262 }
263
ClientStartedRpcsCumulative()264 const ViewDescriptor& ClientStartedRpcsCumulative() {
265 const static ViewDescriptor descriptor =
266 DefaultViewDescriptor()
267 .set_name("grpc.io/client/started_rpcs/cumulative")
268 .set_measure(kRpcClientStartedRpcsMeasureName)
269 .set_aggregation(Aggregation::Count())
270 .add_column(ClientMethodTagKey());
271 return descriptor;
272 }
273
ClientCompletedRpcsCumulative()274 const ViewDescriptor& ClientCompletedRpcsCumulative() {
275 const static ViewDescriptor descriptor =
276 DefaultViewDescriptor()
277 .set_name("grpc.io/client/completed_rpcs/cumulative")
278 .set_measure(kRpcClientRoundtripLatencyMeasureName)
279 .set_aggregation(Aggregation::Count())
280 .add_column(ClientMethodTagKey())
281 .add_column(ClientStatusTagKey());
282 return descriptor;
283 }
284
ClientSentMessagesPerRpcCumulative()285 const ViewDescriptor& ClientSentMessagesPerRpcCumulative() {
286 const static ViewDescriptor descriptor =
287 DefaultViewDescriptor()
288 .set_name("grpc.io/client/received_messages_per_rpc/cumulative")
289 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
290 .set_aggregation(CountDistributionAggregation())
291 .add_column(ClientMethodTagKey());
292 return descriptor;
293 }
294
ClientReceivedMessagesPerRpcCumulative()295 const ViewDescriptor& ClientReceivedMessagesPerRpcCumulative() {
296 const static ViewDescriptor descriptor =
297 DefaultViewDescriptor()
298 .set_name("grpc.io/client/sent_messages_per_rpc/cumulative")
299 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
300 .set_aggregation(CountDistributionAggregation())
301 .add_column(ClientMethodTagKey());
302 return descriptor;
303 }
304
ClientRetriesPerCallCumulative()305 const ViewDescriptor& ClientRetriesPerCallCumulative() {
306 const static ViewDescriptor descriptor =
307 DefaultViewDescriptor()
308 .set_name("grpc.io/client/retries_per_call/cumulative")
309 .set_measure(kRpcClientRetriesPerCallMeasureName)
310 .set_aggregation(CountDistributionAggregation())
311 .add_column(ClientMethodTagKey());
312 return descriptor;
313 }
314
ClientRetriesCumulative()315 const ViewDescriptor& ClientRetriesCumulative() {
316 const static ViewDescriptor descriptor =
317 DefaultViewDescriptor()
318 .set_name("grpc.io/client/retries/cumulative")
319 .set_measure(kRpcClientRetriesPerCallMeasureName)
320 .set_aggregation(Aggregation::Sum())
321 .add_column(ClientMethodTagKey());
322 return descriptor;
323 }
324
ClientTransparentRetriesPerCallCumulative()325 const ViewDescriptor& ClientTransparentRetriesPerCallCumulative() {
326 const static ViewDescriptor descriptor =
327 DefaultViewDescriptor()
328 .set_name("grpc.io/client/transparent_retries_per_call/cumulative")
329 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
330 .set_aggregation(CountDistributionAggregation())
331 .add_column(ClientMethodTagKey());
332 return descriptor;
333 }
334
ClientTransparentRetriesCumulative()335 const ViewDescriptor& ClientTransparentRetriesCumulative() {
336 const static ViewDescriptor descriptor =
337 DefaultViewDescriptor()
338 .set_name("grpc.io/client/transparent_retries/cumulative")
339 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
340 .set_aggregation(Aggregation::Sum())
341 .add_column(ClientMethodTagKey());
342 return descriptor;
343 }
344
ClientRetryDelayPerCallCumulative()345 const ViewDescriptor& ClientRetryDelayPerCallCumulative() {
346 const static ViewDescriptor descriptor =
347 DefaultViewDescriptor()
348 .set_name("grpc.io/client/retry_delay_per_call/cumulative")
349 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
350 .set_aggregation(MillisDistributionAggregation())
351 .add_column(ClientMethodTagKey());
352 return descriptor;
353 }
354
355 // server cumulative
ServerSentBytesPerRpcCumulative()356 const ViewDescriptor& ServerSentBytesPerRpcCumulative() {
357 const static ViewDescriptor descriptor =
358 DefaultViewDescriptor()
359 .set_name("grpc.io/server/received_bytes_per_rpc/cumulative")
360 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
361 .set_aggregation(BytesDistributionAggregation())
362 .add_column(ServerMethodTagKey());
363 return descriptor;
364 }
365
ServerReceivedBytesPerRpcCumulative()366 const ViewDescriptor& ServerReceivedBytesPerRpcCumulative() {
367 const static ViewDescriptor descriptor =
368 DefaultViewDescriptor()
369 .set_name("grpc.io/server/sent_bytes_per_rpc/cumulative")
370 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
371 .set_aggregation(BytesDistributionAggregation())
372 .add_column(ServerMethodTagKey());
373 return descriptor;
374 }
375
ServerServerLatencyCumulative()376 const ViewDescriptor& ServerServerLatencyCumulative() {
377 const static ViewDescriptor descriptor =
378 DefaultViewDescriptor()
379 .set_name("grpc.io/server/elapsed_time/cumulative")
380 .set_measure(kRpcServerServerLatencyMeasureName)
381 .set_aggregation(MillisDistributionAggregation())
382 .add_column(ServerMethodTagKey());
383 return descriptor;
384 }
385
ServerStartedRpcsCumulative()386 const ViewDescriptor& ServerStartedRpcsCumulative() {
387 const static ViewDescriptor descriptor =
388 DefaultViewDescriptor()
389 .set_name("grpc.io/server/started_rpcs/cumulative")
390 .set_measure(kRpcServerStartedRpcsMeasureName)
391 .set_aggregation(Aggregation::Count())
392 .add_column(ServerMethodTagKey());
393 return descriptor;
394 }
395
ServerCompletedRpcsCumulative()396 const ViewDescriptor& ServerCompletedRpcsCumulative() {
397 const static ViewDescriptor descriptor =
398 DefaultViewDescriptor()
399 .set_name("grpc.io/server/completed_rpcs/cumulative")
400 .set_measure(kRpcServerServerLatencyMeasureName)
401 .set_aggregation(Aggregation::Count())
402 .add_column(ServerMethodTagKey())
403 .add_column(ServerStatusTagKey());
404 return descriptor;
405 }
406
ServerSentMessagesPerRpcCumulative()407 const ViewDescriptor& ServerSentMessagesPerRpcCumulative() {
408 const static ViewDescriptor descriptor =
409 DefaultViewDescriptor()
410 .set_name("grpc.io/server/received_messages_per_rpc/cumulative")
411 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
412 .set_aggregation(CountDistributionAggregation())
413 .add_column(ServerMethodTagKey());
414 return descriptor;
415 }
416
ServerReceivedMessagesPerRpcCumulative()417 const ViewDescriptor& ServerReceivedMessagesPerRpcCumulative() {
418 const static ViewDescriptor descriptor =
419 DefaultViewDescriptor()
420 .set_name("grpc.io/server/sent_messages_per_rpc/cumulative")
421 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
422 .set_aggregation(CountDistributionAggregation())
423 .add_column(ServerMethodTagKey());
424 return descriptor;
425 }
426
427 // client minute
ClientSentBytesPerRpcMinute()428 const ViewDescriptor& ClientSentBytesPerRpcMinute() {
429 const static ViewDescriptor descriptor =
430 MinuteDescriptor()
431 .set_name("grpc.io/client/sent_bytes_per_rpc/minute")
432 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
433 .set_aggregation(BytesDistributionAggregation())
434 .add_column(ClientMethodTagKey());
435 return descriptor;
436 }
437
ClientReceivedBytesPerRpcMinute()438 const ViewDescriptor& ClientReceivedBytesPerRpcMinute() {
439 const static ViewDescriptor descriptor =
440 MinuteDescriptor()
441 .set_name("grpc.io/client/received_bytes_per_rpc/minute")
442 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
443 .set_aggregation(BytesDistributionAggregation())
444 .add_column(ClientMethodTagKey());
445 return descriptor;
446 }
447
ClientRoundtripLatencyMinute()448 const ViewDescriptor& ClientRoundtripLatencyMinute() {
449 const static ViewDescriptor descriptor =
450 MinuteDescriptor()
451 .set_name("grpc.io/client/roundtrip_latency/minute")
452 .set_measure(kRpcClientRoundtripLatencyMeasureName)
453 .set_aggregation(MillisDistributionAggregation())
454 .add_column(ClientMethodTagKey());
455 return descriptor;
456 }
457
ClientServerLatencyMinute()458 const ViewDescriptor& ClientServerLatencyMinute() {
459 const static ViewDescriptor descriptor =
460 MinuteDescriptor()
461 .set_name("grpc.io/client/server_latency/minute")
462 .set_measure(kRpcClientServerLatencyMeasureName)
463 .set_aggregation(MillisDistributionAggregation())
464 .add_column(ClientMethodTagKey());
465 return descriptor;
466 }
467
ClientStartedRpcsMinute()468 const ViewDescriptor& ClientStartedRpcsMinute() {
469 const static ViewDescriptor descriptor =
470 MinuteDescriptor()
471 .set_name("grpc.io/client/started_rpcs/minute")
472 .set_measure(kRpcClientStartedRpcsMeasureName)
473 .set_aggregation(Aggregation::Count())
474 .add_column(ClientMethodTagKey());
475 return descriptor;
476 }
477
ClientCompletedRpcsMinute()478 const ViewDescriptor& ClientCompletedRpcsMinute() {
479 const static ViewDescriptor descriptor =
480 MinuteDescriptor()
481 .set_name("grpc.io/client/completed_rpcs/minute")
482 .set_measure(kRpcClientRoundtripLatencyMeasureName)
483 .set_aggregation(Aggregation::Count())
484 .add_column(ClientMethodTagKey())
485 .add_column(ClientStatusTagKey());
486 return descriptor;
487 }
488
ClientSentMessagesPerRpcMinute()489 const ViewDescriptor& ClientSentMessagesPerRpcMinute() {
490 const static ViewDescriptor descriptor =
491 MinuteDescriptor()
492 .set_name("grpc.io/client/sent_messages_per_rpc/minute")
493 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
494 .set_aggregation(CountDistributionAggregation())
495 .add_column(ClientMethodTagKey());
496 return descriptor;
497 }
498
ClientReceivedMessagesPerRpcMinute()499 const ViewDescriptor& ClientReceivedMessagesPerRpcMinute() {
500 const static ViewDescriptor descriptor =
501 MinuteDescriptor()
502 .set_name("grpc.io/client/received_messages_per_rpc/minute")
503 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
504 .set_aggregation(CountDistributionAggregation())
505 .add_column(ClientMethodTagKey());
506 return descriptor;
507 }
508
ClientRetriesPerCallMinute()509 const ViewDescriptor& ClientRetriesPerCallMinute() {
510 const static ViewDescriptor descriptor =
511 MinuteDescriptor()
512 .set_name("grpc.io/client/retries_per_call/minute")
513 .set_measure(kRpcClientRetriesPerCallMeasureName)
514 .set_aggregation(CountDistributionAggregation())
515 .add_column(ClientMethodTagKey());
516 return descriptor;
517 }
518
ClientRetriesMinute()519 const ViewDescriptor& ClientRetriesMinute() {
520 const static ViewDescriptor descriptor =
521 MinuteDescriptor()
522 .set_name("grpc.io/client/retries/minute")
523 .set_measure(kRpcClientRetriesPerCallMeasureName)
524 .set_aggregation(Aggregation::Sum())
525 .add_column(ClientMethodTagKey());
526 return descriptor;
527 }
528
ClientTransparentRetriesPerCallMinute()529 const ViewDescriptor& ClientTransparentRetriesPerCallMinute() {
530 const static ViewDescriptor descriptor =
531 MinuteDescriptor()
532 .set_name("grpc.io/client/transparent_retries_per_call/minute")
533 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
534 .set_aggregation(CountDistributionAggregation())
535 .add_column(ClientMethodTagKey());
536 return descriptor;
537 }
538
ClientTransparentRetriesMinute()539 const ViewDescriptor& ClientTransparentRetriesMinute() {
540 const static ViewDescriptor descriptor =
541 MinuteDescriptor()
542 .set_name("grpc.io/client/transparent_retries/minute")
543 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
544 .set_aggregation(Aggregation::Sum())
545 .add_column(ClientMethodTagKey());
546 return descriptor;
547 }
548
ClientRetryDelayPerCallMinute()549 const ViewDescriptor& ClientRetryDelayPerCallMinute() {
550 const static ViewDescriptor descriptor =
551 MinuteDescriptor()
552 .set_name("grpc.io/client/retry_delay_per_call/minute")
553 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
554 .set_aggregation(MillisDistributionAggregation())
555 .add_column(ClientMethodTagKey());
556 return descriptor;
557 }
558
559 // server minute
ServerSentBytesPerRpcMinute()560 const ViewDescriptor& ServerSentBytesPerRpcMinute() {
561 const static ViewDescriptor descriptor =
562 MinuteDescriptor()
563 .set_name("grpc.io/server/sent_bytes_per_rpc/minute")
564 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
565 .set_aggregation(BytesDistributionAggregation())
566 .add_column(ServerMethodTagKey());
567 return descriptor;
568 }
569
ServerReceivedBytesPerRpcMinute()570 const ViewDescriptor& ServerReceivedBytesPerRpcMinute() {
571 const static ViewDescriptor descriptor =
572 MinuteDescriptor()
573 .set_name("grpc.io/server/received_bytes_per_rpc/minute")
574 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
575 .set_aggregation(BytesDistributionAggregation())
576 .add_column(ServerMethodTagKey());
577 return descriptor;
578 }
579
ServerServerLatencyMinute()580 const ViewDescriptor& ServerServerLatencyMinute() {
581 const static ViewDescriptor descriptor =
582 MinuteDescriptor()
583 .set_name("grpc.io/server/server_latency/minute")
584 .set_measure(kRpcServerServerLatencyMeasureName)
585 .set_aggregation(MillisDistributionAggregation())
586 .add_column(ServerMethodTagKey());
587 return descriptor;
588 }
589
ServerStartedRpcsMinute()590 const ViewDescriptor& ServerStartedRpcsMinute() {
591 const static ViewDescriptor descriptor =
592 MinuteDescriptor()
593 .set_name("grpc.io/server/started_rpcs/minute")
594 .set_measure(kRpcServerStartedRpcsMeasureName)
595 .set_aggregation(Aggregation::Count())
596 .add_column(ServerMethodTagKey());
597 return descriptor;
598 }
599
ServerCompletedRpcsMinute()600 const ViewDescriptor& ServerCompletedRpcsMinute() {
601 const static ViewDescriptor descriptor =
602 MinuteDescriptor()
603 .set_name("grpc.io/server/completed_rpcs/minute")
604 .set_measure(kRpcServerServerLatencyMeasureName)
605 .set_aggregation(Aggregation::Count())
606 .add_column(ServerMethodTagKey())
607 .add_column(ServerStatusTagKey());
608 return descriptor;
609 }
610
ServerSentMessagesPerRpcMinute()611 const ViewDescriptor& ServerSentMessagesPerRpcMinute() {
612 const static ViewDescriptor descriptor =
613 MinuteDescriptor()
614 .set_name("grpc.io/server/sent_messages_per_rpc/minute")
615 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
616 .set_aggregation(CountDistributionAggregation())
617 .add_column(ServerMethodTagKey());
618 return descriptor;
619 }
620
ServerReceivedMessagesPerRpcMinute()621 const ViewDescriptor& ServerReceivedMessagesPerRpcMinute() {
622 const static ViewDescriptor descriptor =
623 MinuteDescriptor()
624 .set_name("grpc.io/server/received_messages_per_rpc/minute")
625 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
626 .set_aggregation(CountDistributionAggregation())
627 .add_column(ServerMethodTagKey());
628 return descriptor;
629 }
630
631 // client hour
ClientSentBytesPerRpcHour()632 const ViewDescriptor& ClientSentBytesPerRpcHour() {
633 const static ViewDescriptor descriptor =
634 HourDescriptor()
635 .set_name("grpc.io/client/sent_bytes_per_rpc/hour")
636 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
637 .set_aggregation(BytesDistributionAggregation())
638 .add_column(ClientMethodTagKey());
639 return descriptor;
640 }
641
ClientReceivedBytesPerRpcHour()642 const ViewDescriptor& ClientReceivedBytesPerRpcHour() {
643 const static ViewDescriptor descriptor =
644 HourDescriptor()
645 .set_name("grpc.io/client/received_bytes_per_rpc/hour")
646 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
647 .set_aggregation(BytesDistributionAggregation())
648 .add_column(ClientMethodTagKey());
649 return descriptor;
650 }
651
ClientRoundtripLatencyHour()652 const ViewDescriptor& ClientRoundtripLatencyHour() {
653 const static ViewDescriptor descriptor =
654 HourDescriptor()
655 .set_name("grpc.io/client/roundtrip_latency/hour")
656 .set_measure(kRpcClientRoundtripLatencyMeasureName)
657 .set_aggregation(MillisDistributionAggregation())
658 .add_column(ClientMethodTagKey());
659 return descriptor;
660 }
661
ClientServerLatencyHour()662 const ViewDescriptor& ClientServerLatencyHour() {
663 const static ViewDescriptor descriptor =
664 HourDescriptor()
665 .set_name("grpc.io/client/server_latency/hour")
666 .set_measure(kRpcClientServerLatencyMeasureName)
667 .set_aggregation(MillisDistributionAggregation())
668 .add_column(ClientMethodTagKey());
669 return descriptor;
670 }
671
ClientStartedRpcsHour()672 const ViewDescriptor& ClientStartedRpcsHour() {
673 const static ViewDescriptor descriptor =
674 HourDescriptor()
675 .set_name("grpc.io/client/started_rpcs/hour")
676 .set_measure(kRpcClientStartedRpcsMeasureName)
677 .set_aggregation(Aggregation::Count())
678 .add_column(ClientMethodTagKey());
679 return descriptor;
680 }
681
ClientCompletedRpcsHour()682 const ViewDescriptor& ClientCompletedRpcsHour() {
683 const static ViewDescriptor descriptor =
684 HourDescriptor()
685 .set_name("grpc.io/client/completed_rpcs/hour")
686 .set_measure(kRpcClientRoundtripLatencyMeasureName)
687 .set_aggregation(Aggregation::Count())
688 .add_column(ClientMethodTagKey())
689 .add_column(ClientStatusTagKey());
690 return descriptor;
691 }
692
ClientSentMessagesPerRpcHour()693 const ViewDescriptor& ClientSentMessagesPerRpcHour() {
694 const static ViewDescriptor descriptor =
695 HourDescriptor()
696 .set_name("grpc.io/client/sent_messages_per_rpc/hour")
697 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
698 .set_aggregation(CountDistributionAggregation())
699 .add_column(ClientMethodTagKey());
700 return descriptor;
701 }
702
ClientReceivedMessagesPerRpcHour()703 const ViewDescriptor& ClientReceivedMessagesPerRpcHour() {
704 const static ViewDescriptor descriptor =
705 HourDescriptor()
706 .set_name("grpc.io/client/received_messages_per_rpc/hour")
707 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
708 .set_aggregation(CountDistributionAggregation())
709 .add_column(ClientMethodTagKey());
710 return descriptor;
711 }
712
ClientRetriesPerCallHour()713 const ViewDescriptor& ClientRetriesPerCallHour() {
714 const static ViewDescriptor descriptor =
715 HourDescriptor()
716 .set_name("grpc.io/client/retries_per_call/hour")
717 .set_measure(kRpcClientRetriesPerCallMeasureName)
718 .set_aggregation(CountDistributionAggregation())
719 .add_column(ClientMethodTagKey());
720 return descriptor;
721 }
722
ClientRetriesHour()723 const ViewDescriptor& ClientRetriesHour() {
724 const static ViewDescriptor descriptor =
725 HourDescriptor()
726 .set_name("grpc.io/client/retries/hour")
727 .set_measure(kRpcClientRetriesPerCallMeasureName)
728 .set_aggregation(Aggregation::Sum())
729 .add_column(ClientMethodTagKey());
730 return descriptor;
731 }
732
ClientTransparentRetriesPerCallHour()733 const ViewDescriptor& ClientTransparentRetriesPerCallHour() {
734 const static ViewDescriptor descriptor =
735 HourDescriptor()
736 .set_name("grpc.io/client/transparent_retries_per_call/hour")
737 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
738 .set_aggregation(CountDistributionAggregation())
739 .add_column(ClientMethodTagKey());
740 return descriptor;
741 }
742
ClientTransparentRetriesHour()743 const ViewDescriptor& ClientTransparentRetriesHour() {
744 const static ViewDescriptor descriptor =
745 HourDescriptor()
746 .set_name("grpc.io/client/transparent_retries/hour")
747 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
748 .set_aggregation(Aggregation::Sum())
749 .add_column(ClientMethodTagKey());
750 return descriptor;
751 }
752
ClientRetryDelayPerCallHour()753 const ViewDescriptor& ClientRetryDelayPerCallHour() {
754 const static ViewDescriptor descriptor =
755 HourDescriptor()
756 .set_name("grpc.io/client/retry_delay_per_call/hour")
757 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
758 .set_aggregation(MillisDistributionAggregation())
759 .add_column(ClientMethodTagKey());
760 return descriptor;
761 }
762
763 // server hour
ServerSentBytesPerRpcHour()764 const ViewDescriptor& ServerSentBytesPerRpcHour() {
765 const static ViewDescriptor descriptor =
766 HourDescriptor()
767 .set_name("grpc.io/server/sent_bytes_per_rpc/hour")
768 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
769 .set_aggregation(BytesDistributionAggregation())
770 .add_column(ServerMethodTagKey());
771 return descriptor;
772 }
773
ServerReceivedBytesPerRpcHour()774 const ViewDescriptor& ServerReceivedBytesPerRpcHour() {
775 const static ViewDescriptor descriptor =
776 HourDescriptor()
777 .set_name("grpc.io/server/received_bytes_per_rpc/hour")
778 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
779 .set_aggregation(BytesDistributionAggregation())
780 .add_column(ServerMethodTagKey());
781 return descriptor;
782 }
783
ServerServerLatencyHour()784 const ViewDescriptor& ServerServerLatencyHour() {
785 const static ViewDescriptor descriptor =
786 HourDescriptor()
787 .set_name("grpc.io/server/server_latency/hour")
788 .set_measure(kRpcServerServerLatencyMeasureName)
789 .set_aggregation(MillisDistributionAggregation())
790 .add_column(ServerMethodTagKey());
791 return descriptor;
792 }
793
ServerStartedRpcsHour()794 const ViewDescriptor& ServerStartedRpcsHour() {
795 const static ViewDescriptor descriptor =
796 HourDescriptor()
797 .set_name("grpc.io/server/started_rpcs/hour")
798 .set_measure(kRpcServerStartedRpcsMeasureName)
799 .set_aggregation(Aggregation::Count())
800 .add_column(ClientMethodTagKey());
801 return descriptor;
802 }
803
ServerCompletedRpcsHour()804 const ViewDescriptor& ServerCompletedRpcsHour() {
805 const static ViewDescriptor descriptor =
806 HourDescriptor()
807 .set_name("grpc.io/server/completed_rpcs/hour")
808 .set_measure(kRpcServerServerLatencyMeasureName)
809 .set_aggregation(Aggregation::Count())
810 .add_column(ServerMethodTagKey())
811 .add_column(ServerStatusTagKey());
812 return descriptor;
813 }
814
ServerSentMessagesPerRpcHour()815 const ViewDescriptor& ServerSentMessagesPerRpcHour() {
816 const static ViewDescriptor descriptor =
817 HourDescriptor()
818 .set_name("grpc.io/server/sent_messages_per_rpc/hour")
819 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
820 .set_aggregation(CountDistributionAggregation())
821 .add_column(ServerMethodTagKey());
822 return descriptor;
823 }
824
ServerReceivedMessagesPerRpcHour()825 const ViewDescriptor& ServerReceivedMessagesPerRpcHour() {
826 const static ViewDescriptor descriptor =
827 HourDescriptor()
828 .set_name("grpc.io/server/received_messages_per_rpc/hour")
829 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
830 .set_aggregation(CountDistributionAggregation())
831 .add_column(ServerMethodTagKey());
832 return descriptor;
833 }
834
835 } // namespace experimental
836
837 namespace internal {
838
ClientApiLatency()839 const ViewDescriptor& ClientApiLatency() {
840 const static ViewDescriptor descriptor =
841 DefaultViewDescriptor()
842 .set_name("grpc.io/client/api_latency")
843 .set_measure(kRpcClientApiLatencyMeasureName)
844 .set_aggregation(MillisDistributionAggregation())
845 .add_column(ClientMethodTagKey())
846 .add_column(ClientStatusTagKey());
847 return descriptor;
848 }
849
850 } // namespace internal
851
852 } // namespace grpc
853