Documentation ¶
Overview ¶
Package otelgrpc is the instrumentation library for google.golang.org/grpc.
Use NewClientHandler with grpc.WithStatsHandler to instrument a gRPC client.
Use NewServerHandler with grpc.StatsHandler to instrument a gRPC server.
Index ¶
- Constants
- Variables
- func Extract(ctx context.Context, md *metadata.MD, opts ...Option) (baggage.Baggage, trace.SpanContext)
- func Inject(ctx context.Context, md *metadata.MD, opts ...Option)
- func NewClientHandler(opts ...Option) stats.Handler
- func NewServerHandler(opts ...Option) stats.Handler
- func SemVersion() stringdeprecated
- func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptordeprecated
- func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptordeprecated
- func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptordeprecated
- func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptordeprecated
- func Version() string
- type Event
- type Filter
- type InterceptorFilterdeprecated
- type InterceptorInfo
- type InterceptorType
- type Option
- func WithFilter(f Filter) Option
- func WithInterceptorFilter(f InterceptorFilter) Optiondeprecated
- func WithMessageEvents(events ...Event) Option
- func WithMeterProvider(mp metric.MeterProvider) Option
- func WithPropagators(p propagation.TextMapPropagator) Option
- func WithSpanOptions(opts ...trace.SpanStartOption) Option
- func WithTracerProvider(tp trace.TracerProvider) Option
Examples ¶
Constants ¶
const ( // ScopeName is the instrumentation scope name. ScopeName = "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" // GRPCStatusCodeKey is convention for numeric status code of a gRPC request. GRPCStatusCodeKey = attribute.Key("rpc.grpc.status_code") )
const ( // Name of message transmitted or received. RPCNameKey = attribute.Key("name") // Type of message transmitted or received. RPCMessageTypeKey = attribute.Key("message.type") // Identifier of message transmitted or received. RPCMessageIDKey = attribute.Key("message.id") // The compressed size of the message transmitted or received in bytes. RPCMessageCompressedSizeKey = attribute.Key("message.compressed_size") // The uncompressed size of the message transmitted or received in // bytes. RPCMessageUncompressedSizeKey = attribute.Key("message.uncompressed_size") )
Semantic conventions for attribute keys for gRPC.
Variables ¶
var ( // Semantic convention for gRPC as the remoting system. RPCSystemGRPC = semconv.RPCSystemGRPC // Semantic convention for a message named message. RPCNameMessage = RPCNameKey.String("message") // Semantic conventions for RPC message types. RPCMessageTypeSent = RPCMessageTypeKey.String("SENT") RPCMessageTypeReceived = RPCMessageTypeKey.String("RECEIVED") )
Semantic conventions for common RPC attributes.
Functions ¶
func Extract ¶
func Extract(ctx context.Context, md *metadata.MD, opts ...Option) (baggage.Baggage, trace.SpanContext)
Extract returns the correlation context and span context that another service encoded in the gRPC metadata object with Inject. This function is meant to be used on incoming requests. Deprecated: Unnecessary public func.
func Inject ¶
Inject injects correlation context and span context into the gRPC metadata object. This function is meant to be used on outgoing requests. Deprecated: Unnecessary public func.
func NewClientHandler ¶
NewClientHandler creates a stats.Handler for a gRPC client.
Example ¶
package main import ( "google.golang.org/grpc" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ) func main() { _, _ = grpc.NewClient("localhost", grpc.WithStatsHandler(otelgrpc.NewClientHandler())) }
Output:
func NewServerHandler ¶
Example ¶
package main import ( "google.golang.org/grpc" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" ) func main() { _ = grpc.NewServer(grpc.StatsHandler(otelgrpc.NewServerHandler())) }
Output:
func SemVersion
deprecated
func StreamClientInterceptor
deprecated
func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor
StreamClientInterceptor returns a grpc.StreamClientInterceptor suitable for use in a grpc.NewClient call.
Deprecated: Use NewClientHandler instead.
func StreamServerInterceptor
deprecated
func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor
StreamServerInterceptor returns a grpc.StreamServerInterceptor suitable for use in a grpc.NewServer call.
Deprecated: Use NewServerHandler instead.
func UnaryClientInterceptor
deprecated
func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor
UnaryClientInterceptor returns a grpc.UnaryClientInterceptor suitable for use in a grpc.NewClient call.
Deprecated: Use NewClientHandler instead.
func UnaryServerInterceptor
deprecated
func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor
UnaryServerInterceptor returns a grpc.UnaryServerInterceptor suitable for use in a grpc.NewServer call.
Deprecated: Use NewServerHandler instead.
Types ¶
type Filter ¶
type Filter func(*stats.RPCTagInfo) bool
Filter is a predicate used to determine whether a given request in should be instrumented by the attached RPC tag info. A Filter must return true if the request should be instrumented.
type InterceptorFilter
deprecated
type InterceptorFilter func(*InterceptorInfo) bool
InterceptorFilter is a predicate used to determine whether a given request in interceptor info should be instrumented. A InterceptorFilter must return true if the request should be traced.
Deprecated: Use stats handlers instead.
type InterceptorInfo ¶
type InterceptorInfo struct { // Method is method name registered to UnaryClient and StreamClient Method string // UnaryServerInfo is the metadata for UnaryServer UnaryServerInfo *grpc.UnaryServerInfo // StreamServerInfo if the metadata for StreamServer StreamServerInfo *grpc.StreamServerInfo // Type is the type for interceptor Type InterceptorType }
InterceptorInfo is the union of some arguments to four types of gRPC interceptors.
type InterceptorType ¶
type InterceptorType uint8
InterceptorType is the flag to define which gRPC interceptor the InterceptorInfo object is.
const ( // UndefinedInterceptor is the type for the interceptor information that is not // well initialized or categorized to other types. UndefinedInterceptor InterceptorType = iota // UnaryClient is the type for grpc.UnaryClient interceptor. UnaryClient // StreamClient is the type for grpc.StreamClient interceptor. StreamClient // UnaryServer is the type for grpc.UnaryServer interceptor. UnaryServer // StreamServer is the type for grpc.StreamServer interceptor. StreamServer )
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option applies an option value for a config.
func WithFilter ¶
WithFilter returns an Option to use the request filter.
func WithInterceptorFilter
deprecated
func WithInterceptorFilter(f InterceptorFilter) Option
WithInterceptorFilter returns an Option to use the request filter.
Deprecated: Use stats handlers instead.
func WithMessageEvents ¶
WithMessageEvents configures the Handler to record the specified events (span.AddEvent) on spans. By default only summary attributes are added at the end of the request.
Valid events are:
- ReceivedEvents: Record the number of bytes read after every gRPC read operation.
- SentEvents: Record the number of bytes written after every gRPC write operation.
func WithMeterProvider ¶
func WithMeterProvider(mp metric.MeterProvider) Option
WithMeterProvider returns an Option to use the MeterProvider when creating a Meter. If this option is not provide the global MeterProvider will be used.
func WithPropagators ¶
func WithPropagators(p propagation.TextMapPropagator) Option
WithPropagators returns an Option to use the Propagators when extracting and injecting trace context from requests.
func WithSpanOptions ¶
func WithSpanOptions(opts ...trace.SpanStartOption) Option
WithSpanOptions configures an additional set of trace.SpanOptions, which are applied to each new span.
func WithTracerProvider ¶
func WithTracerProvider(tp trace.TracerProvider) Option
WithTracerProvider returns an Option to use the TracerProvider when creating a Tracer.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package filters provides a set of filters useful with the [otelgrpc.WithFilter] option to control which inbound requests are instrumented.
|
Package filters provides a set of filters useful with the [otelgrpc.WithFilter] option to control which inbound requests are instrumented. |
interceptor
Package interceptor provides a set of filters useful with the [otelgrpc.WithInterceptorFilter] option to control which inbound requests are instrumented.
|
Package interceptor provides a set of filters useful with the [otelgrpc.WithInterceptorFilter] option to control which inbound requests are instrumented. |
test
Package test contains functions used by interop client/server.
|
Package test contains functions used by interop client/server. |