<div dir="ltr"><div>I'm trying to design a distributed tracing system for Erlang processes following the <a href="http://opentracing.io">opentracing</a> standard. For the purpose, I'm supporting myself in <a href="https://github.com/Bluehouse-Technology/otter">otter</a> for generating and emitting traces, and <a href="http://jaeger.readthedocs.io/en/latest/">jaeger</a> for collecting, querying and storing them.. The question for which I can't figure out a clear answer is how should I pass the trace payload between processes. The first idea that comes to me is to put the trace information in the all the messages passed between processes, and with that define a sort of message protocol that all messages would have to `extend`. This was the approach Uber used to solve this problem, with the implementation of <a href="https://github.com/uber/tchannel">TChannel</a>. This would be a bit awkward to implement in Erlang, as we would have to `force` all messages exchanged between processes to include this payload, and I don't know how I could do this properly. Do you have a way of doing this ?</div><div><br></div><div>Also , would you see a better (simpler) way of doing this in Erlang, by taking advantage of the ERTS and OTP, for example, like <a href="http://erlang.org/doc/man/seq_trace.html">seq_trace</a> is passing `implicitly` the trace_token in the messages sent between the processes.</div><div><br></div><div>Thank you,</div><div>Ricardo Oliveira<br></div></div>