跳转到主要内容

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_tracingdisable_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_tracingdisable_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 (7.5 kB 查看哈希值)

上传时间 源代码

支持者