gcp-observability: add new *compressed_bytes_per_rpc views (#9893)

* Add new metric views; Register latency and bytes per metrics views for observability
* update view description to inlcude client/server
* Use pre-defined aggregation from OpenCensus for bytes histogram
* updated view names
This commit is contained in:
DNVindhya 2023-02-15 17:17:39 -08:00 committed by GitHub
parent 19eab29f8d
commit 7942b9e7f5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,73 @@
/*
* Copyright 2023 The 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.
*/
package io.grpc.census.internal;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_CLIENT_METHOD;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_CLIENT_RECEIVED_BYTES_PER_RPC;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_CLIENT_SENT_BYTES_PER_RPC;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_CLIENT_STATUS;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_SERVER_METHOD;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_SERVER_RECEIVED_BYTES_PER_RPC;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_SERVER_SENT_BYTES_PER_RPC;
import static io.opencensus.contrib.grpc.metrics.RpcMeasureConstants.GRPC_SERVER_STATUS;
import io.opencensus.contrib.grpc.metrics.RpcViewConstants;
import io.opencensus.stats.Aggregation;
import io.opencensus.stats.View;
import java.util.Arrays;
/** Temporary holder class for the observability specific OpenCensus constants.
* The class will be removed once the new views are added in OpenCensus library. */
public final class ObservabilityCensusConstants {
static final Aggregation AGGREGATION_WITH_BYTES_HISTOGRAM =
RpcViewConstants.GRPC_CLIENT_SENT_BYTES_PER_RPC_VIEW.getAggregation();
public static final View GRPC_CLIENT_SENT_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW =
View.create(
View.Name.create("grpc.io/client/sent_compressed_message_bytes_per_rpc"),
"Compressed message bytes sent per client RPC attempt",
GRPC_CLIENT_SENT_BYTES_PER_RPC,
AGGREGATION_WITH_BYTES_HISTOGRAM,
Arrays.asList(GRPC_CLIENT_METHOD, GRPC_CLIENT_STATUS));
public static final View GRPC_CLIENT_RECEIVED_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW =
View.create(
View.Name.create("grpc.io/client/received_compressed_message_bytes_per_rpc"),
"Compressed message bytes received per client RPC attempt",
GRPC_CLIENT_RECEIVED_BYTES_PER_RPC,
AGGREGATION_WITH_BYTES_HISTOGRAM,
Arrays.asList(GRPC_CLIENT_METHOD, GRPC_CLIENT_STATUS));
public static final View GRPC_SERVER_SENT_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW =
View.create(
View.Name.create("grpc.io/server/sent_compressed_message_bytes_per_rpc"),
"Compressed message bytes sent per server RPC",
GRPC_SERVER_SENT_BYTES_PER_RPC,
AGGREGATION_WITH_BYTES_HISTOGRAM,
Arrays.asList(GRPC_SERVER_METHOD, GRPC_SERVER_STATUS));
public static final View GRPC_SERVER_RECEIVED_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW =
View.create(
View.Name.create("grpc.io/server/received_compressed_message_bytes_per_rpc"),
"Compressed message bytes received per server RPC",
GRPC_SERVER_RECEIVED_BYTES_PER_RPC,
AGGREGATION_WITH_BYTES_HISTOGRAM,
Arrays.asList(GRPC_SERVER_METHOD, GRPC_SERVER_STATUS));
private ObservabilityCensusConstants() {}
}

View File

@ -28,6 +28,7 @@ import io.grpc.ServerInterceptor;
import io.grpc.ServerStreamTracer; import io.grpc.ServerStreamTracer;
import io.grpc.census.InternalCensusStatsAccessor; import io.grpc.census.InternalCensusStatsAccessor;
import io.grpc.census.InternalCensusTracingAccessor; import io.grpc.census.InternalCensusTracingAccessor;
import io.grpc.census.internal.ObservabilityCensusConstants;
import io.grpc.gcp.observability.interceptors.ConditionalClientInterceptor; import io.grpc.gcp.observability.interceptors.ConditionalClientInterceptor;
import io.grpc.gcp.observability.interceptors.ConfigFilterHelper; import io.grpc.gcp.observability.interceptors.ConfigFilterHelper;
import io.grpc.gcp.observability.interceptors.InternalLoggingChannelInterceptor; import io.grpc.gcp.observability.interceptors.InternalLoggingChannelInterceptor;
@ -152,10 +153,20 @@ public final class GcpObservability implements AutoCloseable {
// client views // client views
viewManager.registerView(RpcViewConstants.GRPC_CLIENT_COMPLETED_RPC_VIEW); viewManager.registerView(RpcViewConstants.GRPC_CLIENT_COMPLETED_RPC_VIEW);
viewManager.registerView(RpcViewConstants.GRPC_CLIENT_STARTED_RPC_VIEW); viewManager.registerView(RpcViewConstants.GRPC_CLIENT_STARTED_RPC_VIEW);
viewManager.registerView(RpcViewConstants.GRPC_CLIENT_ROUNDTRIP_LATENCY_VIEW);
viewManager.registerView(
ObservabilityCensusConstants.GRPC_CLIENT_SENT_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW);
viewManager.registerView(
ObservabilityCensusConstants.GRPC_CLIENT_RECEIVED_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW);
// server views // server views
viewManager.registerView(RpcViewConstants.GRPC_SERVER_COMPLETED_RPC_VIEW); viewManager.registerView(RpcViewConstants.GRPC_SERVER_COMPLETED_RPC_VIEW);
viewManager.registerView(RpcViewConstants.GRPC_SERVER_STARTED_RPC_VIEW); viewManager.registerView(RpcViewConstants.GRPC_SERVER_STARTED_RPC_VIEW);
viewManager.registerView(RpcViewConstants.GRPC_SERVER_SERVER_LATENCY_VIEW);
viewManager.registerView(
ObservabilityCensusConstants.GRPC_SERVER_SENT_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW);
viewManager.registerView(
ObservabilityCensusConstants.GRPC_SERVER_RECEIVED_COMPRESSED_MESSAGE_BYTES_PER_RPC_VIEW);
} }
@VisibleForTesting @VisibleForTesting