Zipkin: Help wanted: make a generic python tracer for zipkin

Created on 1 Sep 2016  Â·  13Comments  Â·  Source: openzipkin/zipkin

Right now, there's support for python apps that use pyramid or swagger via pyramid_zipkin.

We are regularly asked about a generic python tracer, but we are missing a champion to do this.

Note that these aren't mutually exclusive, but a solid python zipkin-capable tracer is certainly the outcome. If you can champion this, please reply back and let us know which direction, for example, if you want a repo created.

Here are some contacts of interest:

Users who've expressed interest: @jmontemayor @sundararn_twitter @joeb-git
Those who've contributed to existing OSS existing python tracers: @abesto @prat0318 @yurishkuro @zsol
Those who've written in-house python tracers: @yzhang226 @virtuald @liyichao @pavanch007 @mansu

help wanted

Most helpful comment

I am, of course, biased, but just want to mention that using the OpenTracing API opens up a lot of possibilities to reuse already existing instrumentations like these:

I do not have free cycles to work on supporting B3 headers in jaeger-client-python, but am happy to provide guidance and prompt code reviews if someone wants to add the B3-based injectors/extractors and a Sender to ship already Thrift-formatted spans to one of Zipkin supported transports.

All 13 comments

i will be highly interested to follow on this. Do we have a doc or similar tracer in another language (i think we have one in ruby?) to get the APIs sketched out?

@prat0318 for api design, there's two paths that are repeated

  • Zipkin Tracer - Many zipkin apis, including finagle, ruby and javascript use the same approach. Ex Trace.record("event"). These apis only offer zipkin features, so are more straightforward to support in zipkin.
  • OpenTracing Span - ex https://github.com/uber/jaeger-client-python is an opentracing api, even using zipkin thrifts, but lacking B3 and zipkin transports. Ex I changed their java client to support zipkin https://github.com/uber/jaeger-client-java/pull/34. OpenTracing is a generic API, but has some features that aren't supported in zipkin/B3 (like arbitrary attachments and baggage).

I am, of course, biased, but just want to mention that using the OpenTracing API opens up a lot of possibilities to reuse already existing instrumentations like these:

I do not have free cycles to work on supporting B3 headers in jaeger-client-python, but am happy to provide guidance and prompt code reviews if someone wants to add the B3-based injectors/extractors and a Sender to ship already Thrift-formatted spans to one of Zipkin supported transports.

@yurishkuro which of the things you mentioned are jaeger-specific? Ex if someone wanted to make an zipkin-capable python opentracer outside uber's org, would they still be able to use uber-common/opentracing-python-instrumentation?

Yes, all 3 instrumentation libs above can be used with any OpenTracing tracer.

I will dig more on the weekend if jaeger-client can be integrated with B3 headers (at the cost of depping on opentracing, tornado & others) or will it make sense to create a simple new one.

:thumbsup:

On 1 Sep 2016 15:15, "Prateek Agarwal" [email protected] wrote:

I will dig more on the weekend if jaeger-client can be integrated with B3
headers (at the cost of depping on opentracing, tornado & others) or will
it make sense to create a simple new one.

—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/openzipkin/zipkin/issues/1265#issuecomment-243995815,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAD6107nRfKSLECsfuMEz7cHe_crWjrtks5qlnt3gaJpZM4JyMS2
.

@adriancole we're in the process of doing this right now, and are probably a few days away from open-sourcing it. We essentially just pulled all the non-pyramid stuff out of pyramid-zipkin.

@mjbryant Adrian recently sent a PR to our jaeger-client-java that added a sender and codecs to support B3 headers and report to Zipkin directly. A similar change can be made to jaeger-client-python

for those interested, I just made an example project https://github.com/openzipkin/pyramid_zipkin-example/pull/1

fyi all, there's been some progress on opentracing+python+zipkin here https://github.com/openzipkin/zipkin-python-opentracing/pull/1

Hello folks, there's been some further progress on the openzipkin/zipkin-python-opentracing#1 . It's able to talk to ot-zipkin-js and zipkin and do some basic tracing. It's multi-threaded-happy and it has some tests. Some problems it has is that it logs events wrongly as binary annotations instead of real events and general alpha-ness. Will come back with more, but if any of you wants to have a play - please feel free... comments and screenshots of bugs greatly appreciated.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

zeagord picture zeagord  Â·  4Comments

adriancole picture adriancole  Â·  7Comments

rathitester picture rathitester  Â·  3Comments

liangman picture liangman  Â·  4Comments

narayaruna picture narayaruna  Â·  5Comments