|  | @@ -0,0 +1,491 @@
 | 
	
		
			
				|  |  | +/*
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Copyright 2018 gRPC authors.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Licensed under the Apache License, Version 2.0 (the "License");
 | 
	
		
			
				|  |  | + * you may not use this file except in compliance with the License.
 | 
	
		
			
				|  |  | + * You may obtain a copy of the License at
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + *     http://www.apache.org/licenses/LICENSE-2.0
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Unless required by applicable law or agreed to in writing, software
 | 
	
		
			
				|  |  | + * distributed under the License is distributed on an "AS IS" BASIS,
 | 
	
		
			
				|  |  | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
	
		
			
				|  |  | + * See the License for the specific language governing permissions and
 | 
	
		
			
				|  |  | + * limitations under the License.
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include <grpc/support/port_platform.h>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include "src/cpp/ext/filters/census/grpc_plugin.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#include "absl/time/time.h"
 | 
	
		
			
				|  |  | +#include "opencensus/stats/internal/aggregation_window.h"
 | 
	
		
			
				|  |  | +#include "opencensus/stats/internal/set_aggregation_window.h"
 | 
	
		
			
				|  |  | +#include "opencensus/stats/stats.h"
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace grpc {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +using ::opencensus::stats::Aggregation;
 | 
	
		
			
				|  |  | +using ::opencensus::stats::AggregationWindow;
 | 
	
		
			
				|  |  | +using ::opencensus::stats::BucketBoundaries;
 | 
	
		
			
				|  |  | +using ::opencensus::stats::ViewDescriptor;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// These measure definitions should be kept in sync across opencensus
 | 
	
		
			
				|  |  | +// implementations.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +namespace {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Aggregation BytesDistributionAggregation() {
 | 
	
		
			
				|  |  | +  return Aggregation::Distribution(BucketBoundaries::Explicit(
 | 
	
		
			
				|  |  | +      {0, 1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216,
 | 
	
		
			
				|  |  | +       67108864, 268435456, 1073741824, 4294967296}));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Aggregation MillisDistributionAggregation() {
 | 
	
		
			
				|  |  | +  return Aggregation::Distribution(BucketBoundaries::Explicit(
 | 
	
		
			
				|  |  | +      {0,   0.01, 0.05, 0.1,  0.3,   0.6,   0.8,   1,     2,   3,   4,
 | 
	
		
			
				|  |  | +       5,   6,    8,    10,   13,    16,    20,    25,    30,  40,  50,
 | 
	
		
			
				|  |  | +       65,  80,   100,  130,  160,   200,   250,   300,   400, 500, 650,
 | 
	
		
			
				|  |  | +       800, 1000, 2000, 5000, 10000, 20000, 50000, 100000}));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Aggregation CountDistributionAggregation() {
 | 
	
		
			
				|  |  | +  return Aggregation::Distribution(BucketBoundaries::Exponential(17, 1.0, 2.0));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ViewDescriptor MinuteDescriptor() {
 | 
	
		
			
				|  |  | +  auto descriptor = ViewDescriptor();
 | 
	
		
			
				|  |  | +  SetAggregationWindow(AggregationWindow::Interval(absl::Minutes(1)),
 | 
	
		
			
				|  |  | +                       &descriptor);
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +ViewDescriptor HourDescriptor() {
 | 
	
		
			
				|  |  | +  auto descriptor = ViewDescriptor();
 | 
	
		
			
				|  |  | +  SetAggregationWindow(AggregationWindow::Interval(absl::Hours(1)),
 | 
	
		
			
				|  |  | +                       &descriptor);
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}  // namespace
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void RegisterGrpcViewsForExport() {
 | 
	
		
			
				|  |  | +  ClientSentMessagesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ClientSentBytesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ClientReceivedMessagesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ClientReceivedBytesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ClientRoundtripLatencyCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ClientServerLatencyCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  ServerSentMessagesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ServerSentBytesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ServerReceivedMessagesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ServerReceivedBytesPerRpcCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +  ServerServerLatencyCumulative().RegisterForExport();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// client cumulative
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentBytesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_bytes_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedBytesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_bytes_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientRoundtripLatencyCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/roundtrip_latency/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientServerLatencyCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/server_latency/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientCompletedRpcsCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/completed_rpcs/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ClientStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentMessagesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_messages_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedMessagesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_messages_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// server cumulative
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentBytesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_bytes_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedBytesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_bytes_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerServerLatencyCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/elapsed_time/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerCompletedRpcsCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/completed_rpcs/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ServerStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentMessagesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_messages_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedMessagesPerRpcCumulative() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      ViewDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_messages_per_rpc/cumulative")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// client minute
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentBytesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_bytes_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedBytesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_bytes_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientRoundtripLatencyMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/roundtrip_latency/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientServerLatencyMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/server_latency/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientCompletedRpcsMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/completed_rpcs/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ClientStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentMessagesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_messages_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedMessagesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_messages_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// server minute
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentBytesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_bytes_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedBytesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_bytes_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerServerLatencyMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/server_latency/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerCompletedRpcsMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/completed_rpcs/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ServerStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentMessagesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_messages_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedMessagesPerRpcMinute() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      MinuteDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_messages_per_rpc/minute")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// client hour
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentBytesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_bytes_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedBytesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_bytes_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientRoundtripLatencyHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/roundtrip_latency/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientServerLatencyHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/server_latency/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientCompletedRpcsHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/completed_rpcs/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientRoundtripLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ClientStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientSentMessagesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/sent_messages_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ClientReceivedMessagesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/client/received_messages_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcClientReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ClientMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// server hour
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentBytesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_bytes_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedBytesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_bytes_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedBytesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(BytesDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerServerLatencyHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/server_latency/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(MillisDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerCompletedRpcsHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/completed_rpcs/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerServerLatencyMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(Aggregation::Count())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey())
 | 
	
		
			
				|  |  | +          .add_column(ServerStatusTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerSentMessagesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/sent_messages_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerSentMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +const ViewDescriptor& ServerReceivedMessagesPerRpcHour() {
 | 
	
		
			
				|  |  | +  const static ViewDescriptor descriptor =
 | 
	
		
			
				|  |  | +      HourDescriptor()
 | 
	
		
			
				|  |  | +          .set_name("grpc.io/server/received_messages_per_rpc/hour")
 | 
	
		
			
				|  |  | +          .set_measure(kRpcServerReceivedMessagesPerRpcMeasureName)
 | 
	
		
			
				|  |  | +          .set_aggregation(CountDistributionAggregation())
 | 
	
		
			
				|  |  | +          .add_column(ServerMethodTagKey());
 | 
	
		
			
				|  |  | +  return descriptor;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}  // namespace grpc
 |