Complete end-to-end tracing with the ActivityId?

Sep 9, 2011 at 1:57 PM

Hi Josh,

First of, thanks for this project and for the documentation you have provided in your blog posts and on this project; it has all been immensely useful.

I have implemented end-to-end tracing bettwen my ASP.Net client and WCF servers following your advice with the CorrelationManager. Now, I would like to know if it is possible to push the end-to-end tracing one level further. Based on this statement from MSDN:

For instance, a request for a script execution on a Web page leaves a client machine and arrives at the network layer on a server. Then it travels through the HTTP driver, IIS, the ASP.NET engine, and maybe an Exchange Server on another machine. The goal of end-to-end tracing is to record all the relevant activities regarding this request through ETW events for later debugging and performance analysis. This requires a unique ID that can identify individual requests. Correlation can be performed during consumption with the help of this unique activity ID.

The author suggests that correlation of a given request with the activity id can be done at the instrumentation level for all the different layers. For instance, when I turn on the "ASP.Net Events" ETW, I would like to be able to correlate the events generated with my user-generated traces. The problem is that the ASP.Net engine resides in a different process, thread, etc, and have their own activity ids. When I try to correlate the activities from the SVCLog produced by my own tracing with the ETW logs (converted to SVCLog), the activity ids do not match.

Do you know if the statement from the MSDN article is actually doable with the activity id? Do you know if it is possible to flow the activity id of, for example, the ASP.Net engine ETW events into our user code? This would be quite useful to enable complete end-to-end tracing...

Any advice on this will be appreciated.

Once again, thanks for your good work!