nameko框架的zipkin跟踪
emplo-nameko-zipkin的Python项目详细描述
员工姓名ko zipkin
nameko框架的zipkin跟踪
安装
pip install emplocity-nameko-zipkin
用法
服务
fromnameko_zipkinimportZipkinfromnameko.rpcimportrpcclassService:name='service'zipkin=Zipkin()# Dependency provider injects py_zipkin.zipkin.zipkin_span object@rpcdefmethod(self):assertself.zipkin.service_name==Service.nameassertself.zipkin.span_name==Service.method.__name__
独立的rpc
frompy_zipkinimportzipkinfromnameko_zipkinimportmonkey_patchfromnameko_zipkin.transportimportHttpHandlerfromnameko.standalone.rpcimportClusterRpcProxyhandler=HttpHandler('http://localhost:9411/api/v1/spans').handlemonkey_patch(handler)withzipkin.zipkin_server_span('RootService','RootMethod',sample_rate=100.,transport_handler=handler):withClusterRpcProxy({'AMQP_URI':"pyamqp://guest:guest@localhost"})asproxy:proxy.service.method()
工作原理
- monkey_patch patches methodproxy类要初始化客户机范围,在依赖项提供程序设置方法中调用它
- 在服务方法调用时,将创建一个服务器范围
- 跟踪参数(trace_id、parent_span_id等)通过上下文数据传递,可在py_zipkin.thread_local.get_zipkin_attrs中访问
- 如果没有参数,则不会跟踪请求
- 还支持儿童服务电话
- 跟踪结果通过nameko_zipkin.transport中的处理程序类报告
配置
Zipkin部分必须添加到nameko service config.yaml中
ZIPKIN:HANDLER:HttpHandlerHANDLER_PARAMS:url:http://localhost:9411/api/v1/spans
计划变更
- 上下文数据中缺少跟踪属性时的跟踪初始化
- 卡夫卡运输支持
- config.yaml('my_module.myhandler')中的自定义处理程序支持