mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 14:11:50 +08:00
58 lines
1.5 KiB
Python
58 lines
1.5 KiB
Python
"""
|
|
The gRPC integration traces the client and server using interceptor pattern.
|
|
|
|
gRPC will be automatically instrumented with ``patch_all``, or when using
|
|
the ``ddtrace-run`` command.
|
|
gRPC is instrumented on import. To instrument gRPC manually use the
|
|
``patch`` function.::
|
|
|
|
import grpc
|
|
from ddtrace import patch
|
|
patch(grpc=True)
|
|
|
|
# use grpc like usual
|
|
|
|
To configure the gRPC integration on an per-channel basis use the
|
|
``Pin`` API::
|
|
|
|
import grpc
|
|
from ddtrace import Pin, patch, Tracer
|
|
|
|
patch(grpc=True)
|
|
custom_tracer = Tracer()
|
|
|
|
# override the pin on the client
|
|
Pin.override(grpc.Channel, service='mygrpc', tracer=custom_tracer)
|
|
with grpc.insecure_channel('localhost:50051') as channel:
|
|
# create stubs and send requests
|
|
pass
|
|
|
|
To configure the gRPC integration on the server use the ``Pin`` API::
|
|
|
|
import grpc
|
|
from grpc.framework.foundation import logging_pool
|
|
|
|
from ddtrace import Pin, patch, Tracer
|
|
|
|
patch(grpc=True)
|
|
custom_tracer = Tracer()
|
|
|
|
# override the pin on the server
|
|
Pin.override(grpc.Server, service='mygrpc', tracer=custom_tracer)
|
|
server = grpc.server(logging_pool.pool(2))
|
|
server.add_insecure_port('localhost:50051')
|
|
add_MyServicer_to_server(MyServicer(), server)
|
|
server.start()
|
|
"""
|
|
|
|
|
|
from ...utils.importlib import require_modules
|
|
|
|
required_modules = ['grpc']
|
|
|
|
with require_modules(required_modules) as missing_modules:
|
|
if not missing_modules:
|
|
from .patch import patch, unpatch
|
|
|
|
__all__ = ['patch', 'unpatch']
|