
Zipkin is a trend distributed tracing framewrok developed at Twitter. Such tracing is useful for both developers and operatos to understand the behavior of complex distributed systems and find performance bottlenecks. This patch provides a WSGI application using eventlet with tracing facility that complies with Zipkin. Signed-off-by: Yuichi Bando <bando.yuichi@lab.ntt.co.jp> Original commit modified for PEP-8 fixes. https://github.com/eventlet/eventlet/pull/218
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
from eventlet.zipkin import http
|
|
from eventlet.zipkin import wsgi
|
|
from eventlet.zipkin import greenthread
|
|
from eventlet.zipkin import log
|
|
from eventlet.zipkin import api
|
|
from eventlet.zipkin.client import ZipkinClient
|
|
|
|
|
|
def enable_trace_patch(host='127.0.0.1', port=9410,
|
|
trace_app_log=False, sampling_rate=1.0):
|
|
""" Apply monkey patch to trace your WSGI application.
|
|
|
|
:param host: Scribe daemon IP address (default: '127.0.0.1')
|
|
:param port: Scribe daemon port (default: 9410)
|
|
:param trace_app_log: A Boolean indicating if the tracer will trace
|
|
application log together or not. This facility assume that
|
|
your application uses python standard logging library.
|
|
(default: False)
|
|
:param sampling_rate: A Float value (0.0~1.0) that indicates
|
|
the tracing frequency. If you specify 1.0, all request
|
|
are traced (and sent to Zipkin collecotr).
|
|
If you specify 0.1, only 1/10 requests are traced. (default: 1.0)
|
|
"""
|
|
api.client = ZipkinClient(host, port)
|
|
|
|
# monkey patch for adding tracing facility
|
|
wsgi.patch(sampling_rate)
|
|
http.patch()
|
|
greenthread.patch()
|
|
|
|
# monkey patch for capturing application log
|
|
if trace_app_log:
|
|
log.patch()
|
|
|
|
|
|
def disable_trace_patch():
|
|
http.unpatch()
|
|
wsgi.unpatch()
|
|
greenthread.unpatch()
|
|
log.unpatch()
|
|
api.client.close()
|