refactor tracing

This commit is contained in:
peng.xu 2019-09-26 11:38:31 +08:00
parent 4c9cd6dc8e
commit 48f172facb
5 changed files with 39 additions and 33 deletions

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)