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
21 #include "absl/time/time.h"
22 #include "opencensus/stats/internal/aggregation_window.h"
23 #include "opencensus/stats/internal/set_aggregation_window.h"
24 #include "opencensus/stats/stats.h"
25
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
CountDistributionAggregation()54 Aggregation CountDistributionAggregation() {
55 return Aggregation::Distribution(BucketBoundaries::Exponential(17, 1.0, 2.0));
56 }
57
MinuteDescriptor()58 ViewDescriptor MinuteDescriptor() {
59 auto descriptor = ViewDescriptor();
60 SetAggregationWindow(AggregationWindow::Interval(absl::Minutes(1)),
61 &descriptor);
62 return descriptor;
63 }
64
HourDescriptor()65 ViewDescriptor HourDescriptor() {
66 auto descriptor = ViewDescriptor();
67 SetAggregationWindow(AggregationWindow::Interval(absl::Hours(1)),
68 &descriptor);
69 return descriptor;
70 }
71
72 } // namespace
73
RegisterOpenCensusViewsForExport()74 void RegisterOpenCensusViewsForExport() {
75 ClientSentMessagesPerRpcCumulative().RegisterForExport();
76 ClientSentBytesPerRpcCumulative().RegisterForExport();
77 ClientReceivedMessagesPerRpcCumulative().RegisterForExport();
78 ClientReceivedBytesPerRpcCumulative().RegisterForExport();
79 ClientRoundtripLatencyCumulative().RegisterForExport();
80 ClientServerLatencyCumulative().RegisterForExport();
81
82 ServerSentMessagesPerRpcCumulative().RegisterForExport();
83 ServerSentBytesPerRpcCumulative().RegisterForExport();
84 ServerReceivedMessagesPerRpcCumulative().RegisterForExport();
85 ServerReceivedBytesPerRpcCumulative().RegisterForExport();
86 ServerServerLatencyCumulative().RegisterForExport();
87 }
88
89 // client cumulative
ClientSentBytesPerRpcCumulative()90 const ViewDescriptor& ClientSentBytesPerRpcCumulative() {
91 const static ViewDescriptor descriptor =
92 ViewDescriptor()
93 .set_name("grpc.io/client/sent_bytes_per_rpc/cumulative")
94 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
95 .set_aggregation(BytesDistributionAggregation())
96 .add_column(ClientMethodTagKey());
97 return descriptor;
98 }
99
ClientReceivedBytesPerRpcCumulative()100 const ViewDescriptor& ClientReceivedBytesPerRpcCumulative() {
101 const static ViewDescriptor descriptor =
102 ViewDescriptor()
103 .set_name("grpc.io/client/received_bytes_per_rpc/cumulative")
104 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
105 .set_aggregation(BytesDistributionAggregation())
106 .add_column(ClientMethodTagKey());
107 return descriptor;
108 }
109
ClientRoundtripLatencyCumulative()110 const ViewDescriptor& ClientRoundtripLatencyCumulative() {
111 const static ViewDescriptor descriptor =
112 ViewDescriptor()
113 .set_name("grpc.io/client/roundtrip_latency/cumulative")
114 .set_measure(kRpcClientRoundtripLatencyMeasureName)
115 .set_aggregation(MillisDistributionAggregation())
116 .add_column(ClientMethodTagKey());
117 return descriptor;
118 }
119
ClientServerLatencyCumulative()120 const ViewDescriptor& ClientServerLatencyCumulative() {
121 const static ViewDescriptor descriptor =
122 ViewDescriptor()
123 .set_name("grpc.io/client/server_latency/cumulative")
124 .set_measure(kRpcClientServerLatencyMeasureName)
125 .set_aggregation(MillisDistributionAggregation())
126 .add_column(ClientMethodTagKey());
127 return descriptor;
128 }
129
ClientCompletedRpcsCumulative()130 const ViewDescriptor& ClientCompletedRpcsCumulative() {
131 const static ViewDescriptor descriptor =
132 ViewDescriptor()
133 .set_name("grpc.io/client/completed_rpcs/cumulative")
134 .set_measure(kRpcClientRoundtripLatencyMeasureName)
135 .set_aggregation(Aggregation::Count())
136 .add_column(ClientMethodTagKey())
137 .add_column(ClientStatusTagKey());
138 return descriptor;
139 }
140
ClientSentMessagesPerRpcCumulative()141 const ViewDescriptor& ClientSentMessagesPerRpcCumulative() {
142 const static ViewDescriptor descriptor =
143 ViewDescriptor()
144 .set_name("grpc.io/client/received_messages_per_rpc/cumulative")
145 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
146 .set_aggregation(CountDistributionAggregation())
147 .add_column(ClientMethodTagKey());
148 return descriptor;
149 }
150
ClientReceivedMessagesPerRpcCumulative()151 const ViewDescriptor& ClientReceivedMessagesPerRpcCumulative() {
152 const static ViewDescriptor descriptor =
153 ViewDescriptor()
154 .set_name("grpc.io/client/sent_messages_per_rpc/cumulative")
155 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
156 .set_aggregation(CountDistributionAggregation())
157 .add_column(ClientMethodTagKey());
158 return descriptor;
159 }
160
ClientRetriesPerCallCumulative()161 const ViewDescriptor& ClientRetriesPerCallCumulative() {
162 const static ViewDescriptor descriptor =
163 ViewDescriptor()
164 .set_name("grpc.io/client/retries_per_call/cumulative")
165 .set_measure(kRpcClientRetriesPerCallMeasureName)
166 .set_aggregation(CountDistributionAggregation())
167 .add_column(ClientMethodTagKey());
168 return descriptor;
169 }
170
ClientRetriesCumulative()171 const ViewDescriptor& ClientRetriesCumulative() {
172 const static ViewDescriptor descriptor =
173 ViewDescriptor()
174 .set_name("grpc.io/client/retries/cumulative")
175 .set_measure(kRpcClientRetriesPerCallMeasureName)
176 .set_aggregation(Aggregation::Sum())
177 .add_column(ClientMethodTagKey());
178 return descriptor;
179 }
180
ClientTransparentRetriesPerCallCumulative()181 const ViewDescriptor& ClientTransparentRetriesPerCallCumulative() {
182 const static ViewDescriptor descriptor =
183 ViewDescriptor()
184 .set_name("grpc.io/client/transparent_retries_per_call/cumulative")
185 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
186 .set_aggregation(CountDistributionAggregation())
187 .add_column(ClientMethodTagKey());
188 return descriptor;
189 }
190
ClientTransparentRetriesCumulative()191 const ViewDescriptor& ClientTransparentRetriesCumulative() {
192 const static ViewDescriptor descriptor =
193 ViewDescriptor()
194 .set_name("grpc.io/client/transparent_retries/cumulative")
195 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
196 .set_aggregation(Aggregation::Sum())
197 .add_column(ClientMethodTagKey());
198 return descriptor;
199 }
200
ClientRetryDelayPerCallCumulative()201 const ViewDescriptor& ClientRetryDelayPerCallCumulative() {
202 const static ViewDescriptor descriptor =
203 ViewDescriptor()
204 .set_name("grpc.io/client/retry_delay_per_call/cumulative")
205 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
206 .set_aggregation(MillisDistributionAggregation())
207 .add_column(ClientMethodTagKey());
208 return descriptor;
209 }
210
211 // server cumulative
ServerSentBytesPerRpcCumulative()212 const ViewDescriptor& ServerSentBytesPerRpcCumulative() {
213 const static ViewDescriptor descriptor =
214 ViewDescriptor()
215 .set_name("grpc.io/server/received_bytes_per_rpc/cumulative")
216 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
217 .set_aggregation(BytesDistributionAggregation())
218 .add_column(ServerMethodTagKey());
219 return descriptor;
220 }
221
ServerReceivedBytesPerRpcCumulative()222 const ViewDescriptor& ServerReceivedBytesPerRpcCumulative() {
223 const static ViewDescriptor descriptor =
224 ViewDescriptor()
225 .set_name("grpc.io/server/sent_bytes_per_rpc/cumulative")
226 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
227 .set_aggregation(BytesDistributionAggregation())
228 .add_column(ServerMethodTagKey());
229 return descriptor;
230 }
231
ServerServerLatencyCumulative()232 const ViewDescriptor& ServerServerLatencyCumulative() {
233 const static ViewDescriptor descriptor =
234 ViewDescriptor()
235 .set_name("grpc.io/server/elapsed_time/cumulative")
236 .set_measure(kRpcServerServerLatencyMeasureName)
237 .set_aggregation(MillisDistributionAggregation())
238 .add_column(ServerMethodTagKey());
239 return descriptor;
240 }
241
ServerCompletedRpcsCumulative()242 const ViewDescriptor& ServerCompletedRpcsCumulative() {
243 const static ViewDescriptor descriptor =
244 ViewDescriptor()
245 .set_name("grpc.io/server/completed_rpcs/cumulative")
246 .set_measure(kRpcServerServerLatencyMeasureName)
247 .set_aggregation(Aggregation::Count())
248 .add_column(ServerMethodTagKey())
249 .add_column(ServerStatusTagKey());
250 return descriptor;
251 }
252
ServerSentMessagesPerRpcCumulative()253 const ViewDescriptor& ServerSentMessagesPerRpcCumulative() {
254 const static ViewDescriptor descriptor =
255 ViewDescriptor()
256 .set_name("grpc.io/server/received_messages_per_rpc/cumulative")
257 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
258 .set_aggregation(CountDistributionAggregation())
259 .add_column(ServerMethodTagKey());
260 return descriptor;
261 }
262
ServerReceivedMessagesPerRpcCumulative()263 const ViewDescriptor& ServerReceivedMessagesPerRpcCumulative() {
264 const static ViewDescriptor descriptor =
265 ViewDescriptor()
266 .set_name("grpc.io/server/sent_messages_per_rpc/cumulative")
267 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
268 .set_aggregation(CountDistributionAggregation())
269 .add_column(ServerMethodTagKey());
270 return descriptor;
271 }
272
273 // client minute
ClientSentBytesPerRpcMinute()274 const ViewDescriptor& ClientSentBytesPerRpcMinute() {
275 const static ViewDescriptor descriptor =
276 MinuteDescriptor()
277 .set_name("grpc.io/client/sent_bytes_per_rpc/minute")
278 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
279 .set_aggregation(BytesDistributionAggregation())
280 .add_column(ClientMethodTagKey());
281 return descriptor;
282 }
283
ClientReceivedBytesPerRpcMinute()284 const ViewDescriptor& ClientReceivedBytesPerRpcMinute() {
285 const static ViewDescriptor descriptor =
286 MinuteDescriptor()
287 .set_name("grpc.io/client/received_bytes_per_rpc/minute")
288 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
289 .set_aggregation(BytesDistributionAggregation())
290 .add_column(ClientMethodTagKey());
291 return descriptor;
292 }
293
ClientRoundtripLatencyMinute()294 const ViewDescriptor& ClientRoundtripLatencyMinute() {
295 const static ViewDescriptor descriptor =
296 MinuteDescriptor()
297 .set_name("grpc.io/client/roundtrip_latency/minute")
298 .set_measure(kRpcClientRoundtripLatencyMeasureName)
299 .set_aggregation(MillisDistributionAggregation())
300 .add_column(ClientMethodTagKey());
301 return descriptor;
302 }
303
ClientServerLatencyMinute()304 const ViewDescriptor& ClientServerLatencyMinute() {
305 const static ViewDescriptor descriptor =
306 MinuteDescriptor()
307 .set_name("grpc.io/client/server_latency/minute")
308 .set_measure(kRpcClientServerLatencyMeasureName)
309 .set_aggregation(MillisDistributionAggregation())
310 .add_column(ClientMethodTagKey());
311 return descriptor;
312 }
313
ClientCompletedRpcsMinute()314 const ViewDescriptor& ClientCompletedRpcsMinute() {
315 const static ViewDescriptor descriptor =
316 MinuteDescriptor()
317 .set_name("grpc.io/client/completed_rpcs/minute")
318 .set_measure(kRpcClientRoundtripLatencyMeasureName)
319 .set_aggregation(Aggregation::Count())
320 .add_column(ClientMethodTagKey())
321 .add_column(ClientStatusTagKey());
322 return descriptor;
323 }
324
ClientSentMessagesPerRpcMinute()325 const ViewDescriptor& ClientSentMessagesPerRpcMinute() {
326 const static ViewDescriptor descriptor =
327 MinuteDescriptor()
328 .set_name("grpc.io/client/sent_messages_per_rpc/minute")
329 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
330 .set_aggregation(CountDistributionAggregation())
331 .add_column(ClientMethodTagKey());
332 return descriptor;
333 }
334
ClientReceivedMessagesPerRpcMinute()335 const ViewDescriptor& ClientReceivedMessagesPerRpcMinute() {
336 const static ViewDescriptor descriptor =
337 MinuteDescriptor()
338 .set_name("grpc.io/client/received_messages_per_rpc/minute")
339 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
340 .set_aggregation(CountDistributionAggregation())
341 .add_column(ClientMethodTagKey());
342 return descriptor;
343 }
344
ClientRetriesPerCallMinute()345 const ViewDescriptor& ClientRetriesPerCallMinute() {
346 const static ViewDescriptor descriptor =
347 MinuteDescriptor()
348 .set_name("grpc.io/client/retries_per_call/minute")
349 .set_measure(kRpcClientRetriesPerCallMeasureName)
350 .set_aggregation(CountDistributionAggregation())
351 .add_column(ClientMethodTagKey());
352 return descriptor;
353 }
354
ClientRetriesMinute()355 const ViewDescriptor& ClientRetriesMinute() {
356 const static ViewDescriptor descriptor =
357 MinuteDescriptor()
358 .set_name("grpc.io/client/retries/minute")
359 .set_measure(kRpcClientRetriesPerCallMeasureName)
360 .set_aggregation(Aggregation::Sum())
361 .add_column(ClientMethodTagKey());
362 return descriptor;
363 }
364
ClientTransparentRetriesPerCallMinute()365 const ViewDescriptor& ClientTransparentRetriesPerCallMinute() {
366 const static ViewDescriptor descriptor =
367 MinuteDescriptor()
368 .set_name("grpc.io/client/transparent_retries_per_call/minute")
369 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
370 .set_aggregation(CountDistributionAggregation())
371 .add_column(ClientMethodTagKey());
372 return descriptor;
373 }
374
ClientTransparentRetriesMinute()375 const ViewDescriptor& ClientTransparentRetriesMinute() {
376 const static ViewDescriptor descriptor =
377 MinuteDescriptor()
378 .set_name("grpc.io/client/transparent_retries/minute")
379 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
380 .set_aggregation(Aggregation::Sum())
381 .add_column(ClientMethodTagKey());
382 return descriptor;
383 }
384
ClientRetryDelayPerCallMinute()385 const ViewDescriptor& ClientRetryDelayPerCallMinute() {
386 const static ViewDescriptor descriptor =
387 MinuteDescriptor()
388 .set_name("grpc.io/client/retry_delay_per_call/minute")
389 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
390 .set_aggregation(MillisDistributionAggregation())
391 .add_column(ClientMethodTagKey());
392 return descriptor;
393 }
394
395 // server minute
ServerSentBytesPerRpcMinute()396 const ViewDescriptor& ServerSentBytesPerRpcMinute() {
397 const static ViewDescriptor descriptor =
398 MinuteDescriptor()
399 .set_name("grpc.io/server/sent_bytes_per_rpc/minute")
400 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
401 .set_aggregation(BytesDistributionAggregation())
402 .add_column(ServerMethodTagKey());
403 return descriptor;
404 }
405
ServerReceivedBytesPerRpcMinute()406 const ViewDescriptor& ServerReceivedBytesPerRpcMinute() {
407 const static ViewDescriptor descriptor =
408 MinuteDescriptor()
409 .set_name("grpc.io/server/received_bytes_per_rpc/minute")
410 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
411 .set_aggregation(BytesDistributionAggregation())
412 .add_column(ServerMethodTagKey());
413 return descriptor;
414 }
415
ServerServerLatencyMinute()416 const ViewDescriptor& ServerServerLatencyMinute() {
417 const static ViewDescriptor descriptor =
418 MinuteDescriptor()
419 .set_name("grpc.io/server/server_latency/minute")
420 .set_measure(kRpcServerServerLatencyMeasureName)
421 .set_aggregation(MillisDistributionAggregation())
422 .add_column(ServerMethodTagKey());
423 return descriptor;
424 }
425
ServerCompletedRpcsMinute()426 const ViewDescriptor& ServerCompletedRpcsMinute() {
427 const static ViewDescriptor descriptor =
428 MinuteDescriptor()
429 .set_name("grpc.io/server/completed_rpcs/minute")
430 .set_measure(kRpcServerServerLatencyMeasureName)
431 .set_aggregation(Aggregation::Count())
432 .add_column(ServerMethodTagKey())
433 .add_column(ServerStatusTagKey());
434 return descriptor;
435 }
436
ServerSentMessagesPerRpcMinute()437 const ViewDescriptor& ServerSentMessagesPerRpcMinute() {
438 const static ViewDescriptor descriptor =
439 MinuteDescriptor()
440 .set_name("grpc.io/server/sent_messages_per_rpc/minute")
441 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
442 .set_aggregation(CountDistributionAggregation())
443 .add_column(ServerMethodTagKey());
444 return descriptor;
445 }
446
ServerReceivedMessagesPerRpcMinute()447 const ViewDescriptor& ServerReceivedMessagesPerRpcMinute() {
448 const static ViewDescriptor descriptor =
449 MinuteDescriptor()
450 .set_name("grpc.io/server/received_messages_per_rpc/minute")
451 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
452 .set_aggregation(CountDistributionAggregation())
453 .add_column(ServerMethodTagKey());
454 return descriptor;
455 }
456
457 // client hour
ClientSentBytesPerRpcHour()458 const ViewDescriptor& ClientSentBytesPerRpcHour() {
459 const static ViewDescriptor descriptor =
460 HourDescriptor()
461 .set_name("grpc.io/client/sent_bytes_per_rpc/hour")
462 .set_measure(kRpcClientSentBytesPerRpcMeasureName)
463 .set_aggregation(BytesDistributionAggregation())
464 .add_column(ClientMethodTagKey());
465 return descriptor;
466 }
467
ClientReceivedBytesPerRpcHour()468 const ViewDescriptor& ClientReceivedBytesPerRpcHour() {
469 const static ViewDescriptor descriptor =
470 HourDescriptor()
471 .set_name("grpc.io/client/received_bytes_per_rpc/hour")
472 .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
473 .set_aggregation(BytesDistributionAggregation())
474 .add_column(ClientMethodTagKey());
475 return descriptor;
476 }
477
ClientRoundtripLatencyHour()478 const ViewDescriptor& ClientRoundtripLatencyHour() {
479 const static ViewDescriptor descriptor =
480 HourDescriptor()
481 .set_name("grpc.io/client/roundtrip_latency/hour")
482 .set_measure(kRpcClientRoundtripLatencyMeasureName)
483 .set_aggregation(MillisDistributionAggregation())
484 .add_column(ClientMethodTagKey());
485 return descriptor;
486 }
487
ClientServerLatencyHour()488 const ViewDescriptor& ClientServerLatencyHour() {
489 const static ViewDescriptor descriptor =
490 HourDescriptor()
491 .set_name("grpc.io/client/server_latency/hour")
492 .set_measure(kRpcClientServerLatencyMeasureName)
493 .set_aggregation(MillisDistributionAggregation())
494 .add_column(ClientMethodTagKey());
495 return descriptor;
496 }
497
ClientCompletedRpcsHour()498 const ViewDescriptor& ClientCompletedRpcsHour() {
499 const static ViewDescriptor descriptor =
500 HourDescriptor()
501 .set_name("grpc.io/client/completed_rpcs/hour")
502 .set_measure(kRpcClientRoundtripLatencyMeasureName)
503 .set_aggregation(Aggregation::Count())
504 .add_column(ClientMethodTagKey())
505 .add_column(ClientStatusTagKey());
506 return descriptor;
507 }
508
ClientSentMessagesPerRpcHour()509 const ViewDescriptor& ClientSentMessagesPerRpcHour() {
510 const static ViewDescriptor descriptor =
511 HourDescriptor()
512 .set_name("grpc.io/client/sent_messages_per_rpc/hour")
513 .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
514 .set_aggregation(CountDistributionAggregation())
515 .add_column(ClientMethodTagKey());
516 return descriptor;
517 }
518
ClientReceivedMessagesPerRpcHour()519 const ViewDescriptor& ClientReceivedMessagesPerRpcHour() {
520 const static ViewDescriptor descriptor =
521 HourDescriptor()
522 .set_name("grpc.io/client/received_messages_per_rpc/hour")
523 .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
524 .set_aggregation(CountDistributionAggregation())
525 .add_column(ClientMethodTagKey());
526 return descriptor;
527 }
528
ClientRetriesPerCallHour()529 const ViewDescriptor& ClientRetriesPerCallHour() {
530 const static ViewDescriptor descriptor =
531 HourDescriptor()
532 .set_name("grpc.io/client/retries_per_call/hour")
533 .set_measure(kRpcClientRetriesPerCallMeasureName)
534 .set_aggregation(CountDistributionAggregation())
535 .add_column(ClientMethodTagKey());
536 return descriptor;
537 }
538
ClientRetriesHour()539 const ViewDescriptor& ClientRetriesHour() {
540 const static ViewDescriptor descriptor =
541 HourDescriptor()
542 .set_name("grpc.io/client/retries/hour")
543 .set_measure(kRpcClientRetriesPerCallMeasureName)
544 .set_aggregation(Aggregation::Sum())
545 .add_column(ClientMethodTagKey());
546 return descriptor;
547 }
548
ClientTransparentRetriesPerCallHour()549 const ViewDescriptor& ClientTransparentRetriesPerCallHour() {
550 const static ViewDescriptor descriptor =
551 HourDescriptor()
552 .set_name("grpc.io/client/transparent_retries_per_call/hour")
553 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
554 .set_aggregation(CountDistributionAggregation())
555 .add_column(ClientMethodTagKey());
556 return descriptor;
557 }
558
ClientTransparentRetriesHour()559 const ViewDescriptor& ClientTransparentRetriesHour() {
560 const static ViewDescriptor descriptor =
561 HourDescriptor()
562 .set_name("grpc.io/client/transparent_retries/hour")
563 .set_measure(kRpcClientTransparentRetriesPerCallMeasureName)
564 .set_aggregation(Aggregation::Sum())
565 .add_column(ClientMethodTagKey());
566 return descriptor;
567 }
568
ClientRetryDelayPerCallHour()569 const ViewDescriptor& ClientRetryDelayPerCallHour() {
570 const static ViewDescriptor descriptor =
571 HourDescriptor()
572 .set_name("grpc.io/client/retry_delay_per_call/hour")
573 .set_measure(kRpcClientRetryDelayPerCallMeasureName)
574 .set_aggregation(MillisDistributionAggregation())
575 .add_column(ClientMethodTagKey());
576 return descriptor;
577 }
578
579 // server hour
ServerSentBytesPerRpcHour()580 const ViewDescriptor& ServerSentBytesPerRpcHour() {
581 const static ViewDescriptor descriptor =
582 HourDescriptor()
583 .set_name("grpc.io/server/sent_bytes_per_rpc/hour")
584 .set_measure(kRpcServerSentBytesPerRpcMeasureName)
585 .set_aggregation(BytesDistributionAggregation())
586 .add_column(ServerMethodTagKey());
587 return descriptor;
588 }
589
ServerReceivedBytesPerRpcHour()590 const ViewDescriptor& ServerReceivedBytesPerRpcHour() {
591 const static ViewDescriptor descriptor =
592 HourDescriptor()
593 .set_name("grpc.io/server/received_bytes_per_rpc/hour")
594 .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
595 .set_aggregation(BytesDistributionAggregation())
596 .add_column(ServerMethodTagKey());
597 return descriptor;
598 }
599
ServerServerLatencyHour()600 const ViewDescriptor& ServerServerLatencyHour() {
601 const static ViewDescriptor descriptor =
602 HourDescriptor()
603 .set_name("grpc.io/server/server_latency/hour")
604 .set_measure(kRpcServerServerLatencyMeasureName)
605 .set_aggregation(MillisDistributionAggregation())
606 .add_column(ServerMethodTagKey());
607 return descriptor;
608 }
609
ServerCompletedRpcsHour()610 const ViewDescriptor& ServerCompletedRpcsHour() {
611 const static ViewDescriptor descriptor =
612 HourDescriptor()
613 .set_name("grpc.io/server/completed_rpcs/hour")
614 .set_measure(kRpcServerServerLatencyMeasureName)
615 .set_aggregation(Aggregation::Count())
616 .add_column(ServerMethodTagKey())
617 .add_column(ServerStatusTagKey());
618 return descriptor;
619 }
620
ServerSentMessagesPerRpcHour()621 const ViewDescriptor& ServerSentMessagesPerRpcHour() {
622 const static ViewDescriptor descriptor =
623 HourDescriptor()
624 .set_name("grpc.io/server/sent_messages_per_rpc/hour")
625 .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
626 .set_aggregation(CountDistributionAggregation())
627 .add_column(ServerMethodTagKey());
628 return descriptor;
629 }
630
ServerReceivedMessagesPerRpcHour()631 const ViewDescriptor& ServerReceivedMessagesPerRpcHour() {
632 const static ViewDescriptor descriptor =
633 HourDescriptor()
634 .set_name("grpc.io/server/received_messages_per_rpc/hour")
635 .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
636 .set_aggregation(CountDistributionAggregation())
637 .add_column(ServerMethodTagKey());
638 return descriptor;
639 }
640
641 } // namespace grpc
642