123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- //
- //
- // Copyright 2019 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.
- //
- //
- #ifndef GRPCPP_OPENCENSUS_H
- #define GRPCPP_OPENCENSUS_H
- #include "opencensus/stats/view_descriptor.h"
- #include "opencensus/tags/tag_map.h"
- #include "opencensus/trace/span.h"
- #include "opencensus/trace/span_context.h"
- namespace grpc {
- class ServerContext;
- // These symbols in this file will not be included in the binary unless
- // grpc_opencensus_plugin build target was added as a dependency. At the moment
- // it is only setup to be built with Bazel.
- // Registers the OpenCensus plugin with gRPC, so that it will be used for future
- // RPCs. This must be called before any views are created.
- void RegisterOpenCensusPlugin();
- // RPC stats definitions, defined by
- // https://github.com/census-instrumentation/opencensus-specs/blob/master/stats/gRPC.md
- // Registers the cumulative gRPC views so that they will be exported by any
- // registered stats exporter. For on-task stats, construct a View using the
- // ViewDescriptors below.
- void RegisterOpenCensusViewsForExport();
- // Returns the tracing Span for the current RPC.
- ::opencensus::trace::Span GetSpanFromServerContext(ServerContext* context);
- namespace experimental {
- // The tag keys set when recording RPC stats.
- ::opencensus::tags::TagKey ClientMethodTagKey();
- ::opencensus::tags::TagKey ClientStatusTagKey();
- ::opencensus::tags::TagKey ServerMethodTagKey();
- ::opencensus::tags::TagKey ServerStatusTagKey();
- // Names of measures used by the plugin--users can create views on these
- // measures but should not record data for them.
- extern const y_absl::string_view kRpcClientSentMessagesPerRpcMeasureName;
- extern const y_absl::string_view kRpcClientSentBytesPerRpcMeasureName;
- extern const y_absl::string_view kRpcClientReceivedMessagesPerRpcMeasureName;
- extern const y_absl::string_view kRpcClientReceivedBytesPerRpcMeasureName;
- extern const y_absl::string_view kRpcClientRoundtripLatencyMeasureName;
- extern const y_absl::string_view kRpcClientServerLatencyMeasureName;
- extern const y_absl::string_view kRpcClientStartedRpcsMeasureName;
- extern const y_absl::string_view kRpcClientRetriesPerCallMeasureName;
- extern const y_absl::string_view kRpcClientTransparentRetriesPerCallMeasureName;
- extern const y_absl::string_view kRpcClientRetryDelayPerCallMeasureName;
- extern const y_absl::string_view kRpcClientTransportLatencyMeasureName;
- extern const y_absl::string_view kRpcServerSentMessagesPerRpcMeasureName;
- extern const y_absl::string_view kRpcServerSentBytesPerRpcMeasureName;
- extern const y_absl::string_view kRpcServerReceivedMessagesPerRpcMeasureName;
- extern const y_absl::string_view kRpcServerReceivedBytesPerRpcMeasureName;
- extern const y_absl::string_view kRpcServerServerLatencyMeasureName;
- extern const y_absl::string_view kRpcServerStartedRpcsMeasureName;
- // Canonical gRPC view definitions.
- const ::opencensus::stats::ViewDescriptor& ClientStartedRpcs();
- const ::opencensus::stats::ViewDescriptor& ClientCompletedRpcs();
- const ::opencensus::stats::ViewDescriptor& ClientRoundtripLatency();
- const ::opencensus::stats::ViewDescriptor&
- ClientSentCompressedMessageBytesPerRpc();
- const ::opencensus::stats::ViewDescriptor&
- ClientReceivedCompressedMessageBytesPerRpc();
- const ::opencensus::stats::ViewDescriptor& ClientTransportLatency();
- const ::opencensus::stats::ViewDescriptor& ServerStartedRpcs();
- const ::opencensus::stats::ViewDescriptor& ServerCompletedRpcs();
- const ::opencensus::stats::ViewDescriptor&
- ServerSentCompressedMessageBytesPerRpc();
- const ::opencensus::stats::ViewDescriptor&
- ServerReceivedCompressedMessageBytesPerRpc();
- const ::opencensus::stats::ViewDescriptor& ServerServerLatency();
- const ::opencensus::stats::ViewDescriptor& ClientSentMessagesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientSentBytesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor&
- ClientReceivedMessagesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor&
- ClientReceivedBytesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientRoundtripLatencyCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientServerLatencyCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientStartedRpcsCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientCompletedRpcsCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesPerCallCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesCumulative();
- const ::opencensus::stats::ViewDescriptor&
- ClientTransparentRetriesPerCallCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientTransparentRetriesCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientRetryDelayPerCallCumulative();
- const ::opencensus::stats::ViewDescriptor& ServerSentBytesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor&
- ServerReceivedBytesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor& ServerServerLatencyCumulative();
- const ::opencensus::stats::ViewDescriptor& ServerStartedRpcsCumulative();
- const ::opencensus::stats::ViewDescriptor& ServerCompletedRpcsCumulative();
- const ::opencensus::stats::ViewDescriptor& ServerSentMessagesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor&
- ServerReceivedMessagesPerRpcCumulative();
- const ::opencensus::stats::ViewDescriptor& ClientSentMessagesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ClientSentBytesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ClientReceivedMessagesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ClientReceivedBytesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ClientRoundtripLatencyMinute();
- const ::opencensus::stats::ViewDescriptor& ClientServerLatencyMinute();
- const ::opencensus::stats::ViewDescriptor& ClientStartedRpcsMinute();
- const ::opencensus::stats::ViewDescriptor& ClientCompletedRpcsMinute();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesPerCallMinute();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesMinute();
- const ::opencensus::stats::ViewDescriptor&
- ClientTransparentRetriesPerCallMinute();
- const ::opencensus::stats::ViewDescriptor& ClientTransparentRetriesMinute();
- const ::opencensus::stats::ViewDescriptor& ClientRetryDelayPerCallMinute();
- const ::opencensus::stats::ViewDescriptor& ServerSentMessagesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ServerSentBytesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ServerReceivedMessagesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ServerReceivedBytesPerRpcMinute();
- const ::opencensus::stats::ViewDescriptor& ServerServerLatencyMinute();
- const ::opencensus::stats::ViewDescriptor& ServerStartedRpcsMinute();
- const ::opencensus::stats::ViewDescriptor& ServerCompletedRpcsMinute();
- const ::opencensus::stats::ViewDescriptor& ClientSentMessagesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ClientSentBytesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ClientReceivedMessagesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ClientReceivedBytesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ClientRoundtripLatencyHour();
- const ::opencensus::stats::ViewDescriptor& ClientServerLatencyHour();
- const ::opencensus::stats::ViewDescriptor& ClientStartedRpcsHour();
- const ::opencensus::stats::ViewDescriptor& ClientCompletedRpcsHour();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesPerCallHour();
- const ::opencensus::stats::ViewDescriptor& ClientRetriesHour();
- const ::opencensus::stats::ViewDescriptor&
- ClientTransparentRetriesPerCallHour();
- const ::opencensus::stats::ViewDescriptor& ClientTransparentRetriesHour();
- const ::opencensus::stats::ViewDescriptor& ClientRetryDelayPerCallHour();
- const ::opencensus::stats::ViewDescriptor& ServerSentMessagesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ServerSentBytesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ServerReceivedMessagesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ServerReceivedBytesPerRpcHour();
- const ::opencensus::stats::ViewDescriptor& ServerServerLatencyHour();
- const ::opencensus::stats::ViewDescriptor& ServerStartedRpcsHour();
- const ::opencensus::stats::ViewDescriptor& ServerCompletedRpcsHour();
- // Thread compatible.
- class CensusContext {
- public:
- CensusContext() : span_(::opencensus::trace::Span::BlankSpan()), tags_({}) {}
- explicit CensusContext(y_absl::string_view name,
- const ::opencensus::tags::TagMap& tags)
- : span_(::opencensus::trace::Span::StartSpan(name)), tags_(tags) {}
- explicit CensusContext(const ::opencensus::tags::TagMap& tags)
- : span_(::opencensus::trace::Span::BlankSpan()), tags_(tags) {}
- CensusContext(y_absl::string_view name, const ::opencensus::trace::Span* parent,
- const ::opencensus::tags::TagMap& tags)
- : span_(::opencensus::trace::Span::StartSpan(name, parent)),
- tags_(tags) {}
- CensusContext(y_absl::string_view name,
- const ::opencensus::trace::SpanContext& parent_ctxt)
- : span_(::opencensus::trace::Span::StartSpanWithRemoteParent(
- name, parent_ctxt)),
- tags_({}) {}
- CensusContext(y_absl::string_view name,
- const ::opencensus::trace::SpanContext& parent_ctxt,
- const ::opencensus::tags::TagMap& tags)
- : span_(::opencensus::trace::Span::StartSpanWithRemoteParent(
- name, parent_ctxt)),
- tags_(tags) {}
- void AddSpanAttribute(y_absl::string_view key,
- opencensus::trace::AttributeValueRef attribute) {
- span_.AddAttribute(key, attribute);
- }
- void AddSpanAnnotation(y_absl::string_view description,
- opencensus::trace::AttributesRef attributes) {
- span_.AddAnnotation(description, attributes);
- }
- const ::opencensus::trace::Span& Span() const { return span_; }
- const ::opencensus::tags::TagMap& tags() const { return tags_; }
- ::opencensus::trace::SpanContext Context() const { return Span().context(); }
- void EndSpan() { Span().End(); }
- private:
- ::opencensus::trace::Span span_;
- ::opencensus::tags::TagMap tags_;
- };
- } // namespace experimental
- } // namespace grpc
- #endif // GRPCPP_OPENCENSUS_H
|