grpc_plugin.cc
Go to the documentation of this file.
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 
20 
22 
23 #include <limits.h>
24 
25 #include "absl/base/attributes.h"
26 #include "opencensus/tags/tag_key.h"
27 #include "opencensus/trace/span.h"
28 
29 #include <grpcpp/opencensus.h>
30 #include <grpcpp/server_context.h>
31 
39 
40 namespace grpc {
41 
43  RegisterChannelFilter<CensusChannelData, CensusClientCallData>(
44  "opencensus_client", GRPC_CLIENT_CHANNEL, INT_MAX /* priority */,
45  nullptr /* condition function */);
46  RegisterChannelFilter<CensusChannelData, CensusServerCallData>(
47  "opencensus_server", GRPC_SERVER_CHANNEL, INT_MAX /* priority */,
48  nullptr /* condition function */);
49 
50  // Access measures to ensure they are initialized. Otherwise, creating a view
51  // before the first RPC would cause an error.
61 
67 }
68 
71  if (context == nullptr) return opencensus::trace::Span::BlankSpan();
72 
73  return reinterpret_cast<const grpc::CensusContext*>(context->census_context())
74  ->Span();
75 }
76 
77 // These measure definitions should be kept in sync across opencensus
78 // implementations--see
79 // https://github.com/census-instrumentation/opencensus-java/blob/master/contrib/grpc_metrics/src/main/java/io/opencensus/contrib/grpc/metrics/RpcMeasureConstants.java.
80 ::opencensus::tags::TagKey ClientMethodTagKey() {
81  static const auto method_tag_key =
82  ::opencensus::tags::TagKey::Register("grpc_client_method");
83  return method_tag_key;
84 }
85 
86 ::opencensus::tags::TagKey ClientStatusTagKey() {
87  static const auto status_tag_key =
88  ::opencensus::tags::TagKey::Register("grpc_client_status");
89  return status_tag_key;
90 }
91 
92 ::opencensus::tags::TagKey ServerMethodTagKey() {
93  static const auto method_tag_key =
94  ::opencensus::tags::TagKey::Register("grpc_server_method");
95  return method_tag_key;
96 }
97 
98 ::opencensus::tags::TagKey ServerStatusTagKey() {
99  static const auto status_tag_key =
100  ::opencensus::tags::TagKey::Register("grpc_server_status");
101  return status_tag_key;
102 }
103 
104 // Client
107  "grpc.io/client/sent_messages_per_rpc";
108 
110  "grpc.io/client/sent_bytes_per_rpc";
111 
114  "grpc.io/client/received_messages_per_rpc";
115 
118  "grpc.io/client/received_bytes_per_rpc";
119 
121  "grpc.io/client/roundtrip_latency";
122 
124  "grpc.io/client/server_latency";
125 
127  "grpc.io/client/retries_per_call";
128 
131  "grpc.io/client/transparent_retries_per_call";
132 
134  "grpc.io/client/retry_delay_per_call";
135 
136 // Server
139  "grpc.io/server/sent_messages_per_rpc";
140 
142  "grpc.io/server/sent_bytes_per_rpc";
143 
146  "grpc.io/server/received_messages_per_rpc";
147 
150  "grpc.io/server/received_bytes_per_rpc";
151 
153  "grpc.io/server/server_latency";
154 } // namespace grpc
grpc::ClientContext::census_context
struct census_context * census_context() const
Returns the census context that has been set, or nullptr if not set.
Definition: grpcpp/impl/codegen/client_context.h:378
grpc::RpcServerServerLatency
MeasureDouble RpcServerServerLatency()
Definition: measures.cc:133
grpc::kRpcServerSentMessagesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcServerSentMessagesPerRpcMeasureName
Definition: grpc_plugin.cc:138
opencensus.proto.trace.v1.trace_pb2.Span
Span
Definition: trace_pb2.py:1049
grpc::ServerContext
Definition: grpcpp/impl/codegen/server_context.h:566
ABSL_CONST_INIT
#define ABSL_CONST_INIT
Definition: abseil-cpp/absl/base/attributes.h:716
grpc::kRpcServerSentBytesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcServerSentBytesPerRpcMeasureName
Definition: grpc_plugin.cc:141
grpc::kRpcClientServerLatencyMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientServerLatencyMeasureName
Definition: grpc_plugin.cc:123
grpc::RpcClientRetriesPerCall
MeasureInt64 RpcClientRetriesPerCall()
Definition: measures.cc:93
grpc
Definition: grpcpp/alarm.h:33
grpc::RpcClientReceivedBytesPerRpc
MeasureDouble RpcClientReceivedBytesPerRpc()
Definition: measures.cc:53
channel_filter.h
grpc::kRpcClientTransparentRetriesPerCallMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientTransparentRetriesPerCallMeasureName
Definition: grpc_plugin.cc:130
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
grpc::RegisterOpenCensusPlugin
void RegisterOpenCensusPlugin()
Definition: grpc_plugin.cc:42
grpc::kRpcClientSentMessagesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientSentMessagesPerRpcMeasureName
Definition: grpc_plugin.cc:106
grpc::ClientMethodTagKey
::opencensus::tags::TagKey ClientMethodTagKey()
Definition: grpc_plugin.cc:80
grpc::CensusContext
Definition: cpp/ext/filters/census/context.h:44
grpc::ServerStatusTagKey
::opencensus::tags::TagKey ServerStatusTagKey()
Definition: grpc_plugin.cc:98
grpc::RpcClientRetryDelayPerCall
MeasureDouble RpcClientRetryDelayPerCall()
Definition: measures.cc:109
GRPC_SERVER_CHANNEL
@ GRPC_SERVER_CHANNEL
Definition: channel_stack_type.h:36
grpc::RpcClientReceivedMessagesPerRpc
MeasureInt64 RpcClientReceivedMessagesPerRpc()
Definition: measures.cc:85
grpc::RpcServerSentMessagesPerRpc
MeasureInt64 RpcServerSentMessagesPerRpc()
Definition: measures.cc:142
grpc::RpcClientRoundtripLatency
MeasureDouble RpcClientRoundtripLatency()
Definition: measures.cc:60
grpc::RpcClientServerLatency
MeasureDouble RpcClientServerLatency()
Definition: measures.cc:69
grpc::kRpcClientRetriesPerCallMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientRetriesPerCallMeasureName
Definition: grpc_plugin.cc:126
opencensus.h
channel_stack_type.h
grpc::kRpcClientReceivedBytesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientReceivedBytesPerRpcMeasureName
Definition: grpc_plugin.cc:117
grpc::RpcClientSentBytesPerRpc
MeasureDouble RpcClientSentBytesPerRpc()
Definition: measures.cc:46
measures.h
grpc_plugin.h
grpc::kRpcClientRetryDelayPerCallMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientRetryDelayPerCallMeasureName
Definition: grpc_plugin.cc:133
grpc::kRpcServerServerLatencyMeasureName
const ABSL_CONST_INIT absl::string_view kRpcServerServerLatencyMeasureName
Definition: grpc_plugin.cc:152
grpc::RpcClientSentMessagesPerRpc
MeasureInt64 RpcClientSentMessagesPerRpc()
Definition: measures.cc:78
grpc::GetSpanFromServerContext
::opencensus::trace::Span GetSpanFromServerContext(ServerContext *context)
Definition: grpc_plugin.cc:69
client_filter.h
grpc::kRpcClientRoundtripLatencyMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientRoundtripLatencyMeasureName
Definition: grpc_plugin.cc:120
GRPC_CLIENT_CHANNEL
@ GRPC_CLIENT_CHANNEL
Definition: channel_stack_type.h:26
grpc::RpcServerReceivedBytesPerRpc
MeasureDouble RpcServerReceivedBytesPerRpc()
Definition: measures.cc:126
grpc::ClientStatusTagKey
::opencensus::tags::TagKey ClientStatusTagKey()
Definition: grpc_plugin.cc:86
server_context.h
grpc::RpcClientTransparentRetriesPerCall
MeasureInt64 RpcClientTransparentRetriesPerCall()
Definition: measures.cc:102
grpc::ServerMethodTagKey
::opencensus::tags::TagKey ServerMethodTagKey()
Definition: grpc_plugin.cc:92
grpc::kRpcClientSentBytesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientSentBytesPerRpcMeasureName
Definition: grpc_plugin.cc:109
grpc::RpcServerSentBytesPerRpc
MeasureDouble RpcServerSentBytesPerRpc()
Definition: measures.cc:119
grpc::RpcServerReceivedMessagesPerRpc
MeasureInt64 RpcServerReceivedMessagesPerRpc()
Definition: measures.cc:149
context
grpc::ClientContext context
Definition: istio_echo_server_lib.cc:61
grpc::kRpcServerReceivedBytesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcServerReceivedBytesPerRpcMeasureName
Definition: grpc_plugin.cc:149
server_filter.h
channel_filter.h
grpc::kRpcClientReceivedMessagesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcClientReceivedMessagesPerRpcMeasureName
Definition: grpc_plugin.cc:113
context.h
grpc::kRpcServerReceivedMessagesPerRpcMeasureName
const ABSL_CONST_INIT absl::string_view kRpcServerReceivedMessagesPerRpcMeasureName
Definition: grpc_plugin.cc:145
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:47