Files
deb-python-eventlet/eventlet/zipkin/patcher.py
Yuichi Bando 654a271b82 New feature: Add zipkin tracing to eventlet
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
2017-03-17 22:42:27 +03:00

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