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") )
Semantic conventions for attribute keys for gRPC.
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 common RPC attributes.
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") )
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(ctx context.Context, md *metadata.MD, opts ...Option)
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(opts ...Option) stats.Handler
NewClientHandler creates a stats.Handler for a gRPC client.
▹ Example
func NewServerHandler(opts ...Option) stats.Handler
NewServerHandler creates a stats.Handler for a gRPC server.
▹ Example
func SemVersion() string
SemVersion is the semantic version to be supplied to tracer/meter creation.
Deprecated: Use Version instead.
func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor
StreamClientInterceptor returns a grpc.StreamClientInterceptor suitable for use in a grpc.Dial call.
Deprecated: Use NewClientHandler instead.
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(opts ...Option) grpc.UnaryClientInterceptor
UnaryClientInterceptor returns a grpc.UnaryClientInterceptor suitable for use in a grpc.Dial call.
Deprecated: Use NewClientHandler instead.
func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor
UnaryServerInterceptor returns a grpc.UnaryServerInterceptor suitable for use in a grpc.NewServer call.
Deprecated: Use NewServerHandler instead.
func Version() string
Version is the current release version of the gRPC instrumentation.
Event type that can be recorded, see WithMessageEvents.
type Event int
Different types of events that can be recorded, see WithMessageEvents.
const ( ReceivedEvents Event = iota SentEvents )
Filter is a predicate used to determine whether a given request in interceptor info should be traced. A Filter must return true if the request should be traced.
type Filter func(*InterceptorInfo) bool
InterceptorInfo is the union of some arguments to four types of gRPC interceptors.
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 }
InterceptorType is the flag to define which gRPC interceptor the InterceptorInfo object is.
type InterceptorType uint8
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 )
Option applies an option value for a config.
type Option interface {
// contains filtered or unexported methods
}
func WithInterceptorFilter(f Filter) Option
WithInterceptorFilter returns an Option to use the request filter.
Deprecated: Use stats handlers instead.
func WithMessageEvents(events ...Event) Option
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:
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(p propagation.TextMapPropagator) Option
WithPropagators returns an Option to use the Propagators when extracting and injecting trace context from requests.
func WithSpanOptions(opts ...trace.SpanStartOption) Option
WithSpanOptions configures an additional set of trace.SpanOptions, which are applied to each new span.
func WithTracerProvider(tp trace.TracerProvider) Option
WithTracerProvider returns an Option to use the TracerProvider when creating a Tracer.