From: G�nter Prossliner on

Hello NG!

In ETW the ActivityID is provided to allow clients to analyse traces from
different providers in a End-To-End Analysis.

What I don't really understand is what is needed in the Application to
support such a scenario, and what is provided by the OS or MS-Servers to do
so (everything for Windows 2008 Server).

Example:

* I implement a Service which uses the HTTP-API to communicate with clients
* The Service calls an SQL2008 Instance

Workflow:

1. A SYN TCP Package is issued from the Client, this is traced by the
Windows TCP Stack with ETW
2. The TCP Session is established, this is also traced
3. The HTTP.sys takes over, parses the request, and feeds it to my service
(which has a HttpRecieveHttpRequest operation pending). AFAIK HTTP.sys also
produces ETW Traces.
4. My Service processes the request (and also produces some ETW Traces)
5. As part of the Request-Processing an Batch is send to a SQL-Server
(SQL2008, which also implements ETW).
6. The Service prepares the HttpResponse for the Client-Request
7. HTTP.sys does whatever is needed to send the HTTP-Response.
8. The Client gets it

How can the Activity-IDs be managed to support an End-To-End Tracing in such
a (common) scenario? I want an ETW-Client to build an report which starts
from the first SYN, contains HTTP.sys traces, Application traces and
SQL-traces.

So:

* Who generates the Acticity-IDs in the first place?
* What are the best practices to serialize Actitiy-IDs in a protocol? for
HTTP a special Header may be used, but what about TDS (SQL-Server Protocol)?
* What about other services that may be involved (e.g. an ISA Firewall
between the Client and the Server, if ISA Server implements ETW (I don't
know) should it be possible to included Firewall-Logs in the trace?)
* What clients can be used to support such End-To-End Tracing Scenarios?


GP