3

I am looking for a programming language neutral file format for call traces.

I am looking for a trace similar to set -x in the bash shell. Or like the output of python-hunter

line-traces-python

First step would be to store all method calls and every line which gets executed by the run-time.

Simplification: For me it is enough to trace single process, single thread execution. No parallelism.

Next step would be to trace http calls (microservices) which are involved.

I develop with Python, but the trace file format needs to be language neutral.

guettli
  • 25,042
  • 81
  • 346
  • 663

2 Answers2

2

You labeled this question with jaeger and opentracing, and I'm afraid there's no standard wire format for OpenTracing. Jaeger has its own format, but it's not really documented (yet!). The closest to a standard in this area is B3 from Zipkin.

Outside of the OpenTracing and distributed tracing world, there are some formats that you could use, like the Common Tracing Format or pcap.

Note that tracing local process calls in a single-threaded environment (like tapping into syscalls or kernel events) is very different than tracing microservices calls, mostly because your application needs to pass the "context" over the wire to the next service, to establish the correlation between the calls.

jpkroehling
  • 13,881
  • 1
  • 37
  • 39
  • Yes, tracing local processes is different than tracing microservices. But they share some parts. I guess it should be possible to have a format which can get used for both use cases. – guettli Jan 28 '19 at 09:32
  • I would really suggest joining the OpenTracing Gitter channel if you haven't already, and tell people there what's your goal. I'm pretty sure more people are interested in this area and there might even be some work going on already. – jpkroehling Jan 28 '19 at 09:57
2

opentracing has provide tracking standards, but there are no restrictions on language. Any language is ok. If you mean data format,the most popular data format is JSON,but with tracer system,the number of spans is huge,I think protobuf may be a better choice. I started a project which name is nodetraicng,It implements opentracing with NodeJS:

https://github.com/cheneyweb/nodetracing

cheney
  • 21
  • 1
  • Yes, JSON could be used, or protobuf. I am interested in the schema. This is like utf8 vs unicode. If trace creating and trace visualization should be seperated (which would be great, to make it more plugable) then the agreement on a standard schema needs to be done. – guettli Jan 30 '19 at 08:59
  • If there is a common schema, then it does not matter much if JSON or protobuf gets used. – guettli Jan 30 '19 at 09:04
  • Yes,trace creating and trace visualization is seperated – cheney Jan 31 '19 at 14:53
  • 1
    Yes, trace creating and trace visualization is seperated. Opentracing has defined schema for tracer system. like Span, SpanContext, Tracer and the fields they contain. But there is still no a general processing language for tracer because different languages track differently.By the way, the service mesh is another solution for cross-platform tracking with general configuration, but it too complicated to deploy. – cheney Jan 31 '19 at 15:06