Is it possible to use golang tracer capabilities and build something Dapper-like but on function level? Here's the thing: let's say, I have lots of webservices written in Go which communicate to each other. I need to trace their communication: request is processed by service A, then passed to service B and so on. Google Dapper (and its implementations like https://github.com/sourcegraph/appdash) solve this problem, but they solve it on a level of webservice. For instance, Appdash can tell me how much time service A was processing the request, then how much time service B was processing the request that it got from service A. I need more fine-grained trace: how long some function A1 spent in webservice A before forwarding request to service B. And in service B how long functions B1 and B2 were running until response was sent back to service A.
I was playing with golang tracer, looks good, but I didn't find how to "mark" some particular goroutine trace with a tag. Design document contains information about functions "TraceScopeStart(id string)" and "TraceScopeEnd(id string)", but they are not in the code (yet?)