mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
refactor tracing
This commit is contained in:
parent
4c9cd6dc8e
commit
48f172facb
@ -13,7 +13,9 @@ sd_proiver_class = ProviderManager.get_provider(settings.SD_PROVIDER)
|
||||
discover = sd_proiver_class(settings=settings.SD_PROVIDER_SETTINGS, conn_mgr=connect_mgr)
|
||||
|
||||
from tracing.factory import TracerFactory
|
||||
tracer = TracerFactory.new_tracer(settings.TRACING_TYPE, settings.TracingConfig)
|
||||
from grpc_utils import GrpcSpanDecorator
|
||||
tracer = TracerFactory.new_tracer(settings.TRACING_TYPE, settings.TracingConfig,
|
||||
span_decorator=GrpcSpanDecorator())
|
||||
|
||||
from mishards.server import Server
|
||||
grpc_server = Server(conn_mgr=connect_mgr, tracer=tracer)
|
||||
|
||||
@ -1,3 +1,24 @@
|
||||
from grpc_opentracing import SpanDecorator
|
||||
from milvus.grpc_gen import status_pb2
|
||||
|
||||
|
||||
class GrpcSpanDecorator(SpanDecorator):
|
||||
def __call__(self, span, rpc_info):
|
||||
status = None
|
||||
if isinstance(rpc_info.response, status_pb2.Status):
|
||||
status = rpc_info.response
|
||||
else:
|
||||
status = rpc_info.response.status
|
||||
if status.error_code == 0:
|
||||
return
|
||||
span.set_tag('error', True)
|
||||
span.set_tag('error_code', status.error_code)
|
||||
error_log = {'event': 'error',
|
||||
'request': rpc_info.request,
|
||||
'response': rpc_info.response
|
||||
}
|
||||
span.log_kv(error_log)
|
||||
|
||||
def mark_grpc_method(func):
|
||||
setattr(func, 'grpc_method', True)
|
||||
return func
|
||||
|
||||
@ -48,13 +48,20 @@ TESTING_WOSERVER = env.str('TESTING_WOSERVER', 'tcp://127.0.0.1:19530')
|
||||
|
||||
TRACING_TYPE = env.str('TRACING_TYPE', '')
|
||||
class TracingConfig:
|
||||
TRACING_LOGGING = env.bool('TRACING_LOGGING', True)
|
||||
TRACING_SERVICE_NAME = env.str('TRACING_SERVICE_NAME', 'mishards')
|
||||
TRACING_VALIDATE = env.bool('TRACING_VALIDATE', True)
|
||||
TRACING_LOG_PAYLOAD = env.bool('TRACING_LOG_PAYLOAD', DEBUG)
|
||||
TRACING_REPORTING_HOST = env.str('TRACING_REPORTING_HOST', '127.0.0.1')
|
||||
TRACING_REPORTING_PORT = env.str('TRACING_REPORTING_PORT', '5775')
|
||||
|
||||
TRACING_LOG_PAYLOAD = env.bool('TRACING_LOG_PAYLOAD', False)
|
||||
TRACING_CONFIG = {
|
||||
'sampler': {
|
||||
'type': env.str('TRACING_SAMPLER_TYPE', 'const'),
|
||||
'param': env.str('TRACING_SAMPLER_PARAM', "1"),
|
||||
},
|
||||
'local_agent': {
|
||||
'reporting_host': env.str('TRACING_REPORTING_HOST', '127.0.0.1'),
|
||||
'reporting_port': env.str('TRACING_REPORTING_PORT', '5775')
|
||||
},
|
||||
'logging': env.bool('TRACING_LOGGING', True)
|
||||
}
|
||||
|
||||
if __name__ == '__main__':
|
||||
import logging
|
||||
|
||||
@ -1,16 +1,3 @@
|
||||
from grpc_opentracing import SpanDecorator
|
||||
|
||||
class GrpcSpanDecorator(SpanDecorator):
|
||||
def __call__(self, span, rpc_info):
|
||||
if rpc_info.response.status.error_code == 0:
|
||||
return
|
||||
span.set_tag('error', True)
|
||||
error_log = {'event': 'error',
|
||||
'error.kind': str(rpc_info.response.status.error_code),
|
||||
'message': rpc_info.response.status.reason
|
||||
}
|
||||
span.log_kv(error_log)
|
||||
|
||||
def empty_server_interceptor_decorator(target_server, interceptor):
|
||||
return target_server
|
||||
|
||||
|
||||
@ -4,7 +4,6 @@ from grpc_opentracing.grpcext import intercept_server
|
||||
from grpc_opentracing import open_tracing_server_interceptor
|
||||
|
||||
from tracing import (Tracer,
|
||||
GrpcSpanDecorator,
|
||||
empty_server_interceptor_decorator)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -12,22 +11,12 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
class TracerFactory:
|
||||
@classmethod
|
||||
def new_tracer(cls, tracer_type, tracer_config, **kwargs):
|
||||
def new_tracer(cls, tracer_type, tracer_config, span_decorator=None, **kwargs):
|
||||
if not tracer_type:
|
||||
return Tracer()
|
||||
|
||||
if tracer_type.lower() == 'jaeger':
|
||||
config = Config(config={
|
||||
'sampler': {
|
||||
'type': 'const',
|
||||
'param': 1,
|
||||
},
|
||||
'local_agent': {
|
||||
'reporting_host': tracer_config.TRACING_REPORTING_HOST,
|
||||
'reporting_port': tracer_config.TRACING_REPORTING_PORT
|
||||
},
|
||||
'logging': tracer_config.TRACING_LOGGING,
|
||||
},
|
||||
config = Config(config=tracer_config.TRACING_CONFIG,
|
||||
service_name=tracer_config.TRACING_SERVICE_NAME,
|
||||
validate=tracer_config.TRACING_VALIDATE
|
||||
)
|
||||
@ -35,7 +24,7 @@ class TracerFactory:
|
||||
tracer = config.initialize_tracer()
|
||||
tracer_interceptor = open_tracing_server_interceptor(tracer,
|
||||
log_payloads=tracer_config.TRACING_LOG_PAYLOAD,
|
||||
span_decorator=GrpcSpanDecorator())
|
||||
span_decorator=span_decorator)
|
||||
|
||||
return Tracer(tracer, tracer_interceptor, intercept_server)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user