Elasticsearch的OpenTracing支持
项目描述
此软件包使Python的elasticsearch-py和elasticsearch-dsl库能够实现分布式追踪。
安装
运行以下命令
$ pip install elasticsearch_opentracing
入门
请参阅示例目录。总的来说,使用需要设置一个追踪器,并初始化Elasticsearch客户端,指定TracingTransport作为追踪类,并可选地设置一个活动跨度(在追踪实际的Elasticsearch语句时用作父跨度)
import elasticsearch_opentracing
elasticsearch_opentracing.init_tracing(tracer) # An OpenTracing compatible tracer.
es = Elasticsearch(transport_class=elasticsearch_opentracing.TracingTransport)
elasticsearch_opentracing.set_active_span(main_span) # Optional.
es.index(index='test-index', doc_type='tweet', id=99, body={
'author': 'linus',
'text': 'Hello there',
'timestamp': datetime.now(),
})
res = es.get(index='test-index', doc_type='tweet', id=99)
elasticsearch_opentracing.clear_active_span()
默认情况下,所有Elasticsearch请求都会被追踪。在初始化库时,可以将其设置为false,并调用enable_tracing和disable_tracing以显式地追踪该部分发生的语句
elasticsearch_opentracing.init_tracing(tracer, trace_all_requests=False)
elasticsearch_opentracing.enable_tracing()
res1 = es.get(index='test-index', doc_type='tweet', id=99)
res2 = es.get(index='test-index', doc_type='user', id=666)
elasticsearch_opentracing.disable_tracing()
当使用trace_all_requests时,对enable_tracing和disable_tracing的任何调用都将被忽略。
如果在块中发生异常,将隐式调用disable_tracing,并将引起错误的请求包括错误信息在内。
DSL
当使用运行在elasticsearch-py之上的elasticsearch-dsl库时,使用相同的语义和调用。在创建默认连接时,也可以指定传输
# elasticsearch_dsl.connections.connections
connections.create_connection(hosts=['127.0.0.1'],
transport_class=elasticsearch_opentracing.TracingTransport)
多线程
追踪和父跨度数据被保留为线程局部数据,这意味着使用许多线程(Django、Flask、Pyramid等)的应用程序将正常运行。
更多信息
如果您想了解更多关于OpenTracing标准的信息,请访问opentracing.io或加入邮件列表。如果您想在项目中实现OpenTracing并需要帮助,请随时给我们发邮件到community@opentracing.io。
项目详情
关闭
elasticsearch_opentracing-0.1.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6cd985588c95e8e54c23587d19ece79f0ad0eeba6df185bfb3a8c6a6808a49c |
|
MD5 | 1ad85219aec7555e2340f883880b4066 |
|
BLAKE2b-256 | c1048a322b42d3910537b76d0a45ac65b955bd1ab78ccb7ee9caf8aa9f5d880f |