Tracing a web request through a web server
AssigneeMicrosoft Corporation
InventorsEric D. Deily, Ming Lu, Gabriele Giuseppini, Melur Raghuraman, Jaroslav Dunajsky
Life of this patent
Estimating the term…
Abstract
A method of tracing data on a network for a Web request that detects events of the Web request as the Web request is serviced. The method provides a unique identifier (ID) for the Web request. The ID is associated with all events for the Web request in a trace log. When such events occur in the servicing of the Web request, each event is recorded with the ID of the Web request in a trace log. The trace log can be accessed via the ID to debug a Web request service failure.
Claims31
A method comprising:
- servicing a Web request from a Web application;
- associating a Web request Globally Unique Identifier (Web request GUID) with the Web request, wherein events which happen during servicing of the Web request can be identified by the Web request GUID, wherein the servicing comprises executing the Web application and wherein the Web application interfaces with a server that services the Web request;
- detecting the occurrence of an event in the servicing of the Web request during the execution of the Web application, wherein a kernel trace session component of an operating system of the server performs event buffering to detect the occurrence of the event and traces are processed by a kernel of the operating system when the operating system processes a part of the Web request;
- logging by the server a server entry in a server trace log in response to the detecting of the occurrence of the event in the servicing of the Web request, wherein the server entry comprises:
- information descriptive of the occurrence of the event in the servicing of the Web request;
- a server event GUID corresponding to the event;
- and
- the Web request GUID corresponding to the Web request;
- logging by the Web application an application entry having an application GUID in an application trace log, wherein each application entry is correlated with each server entry in the server trace log by a Web request GUID, and wherein at least one of the detecting and the logging are performed by one or more components of the operating system of the server;
- and
- determining which of the information that is descriptive of the occurrence of the event to put into the server entry or application entry, or both the server entry and the application entry, as appropriate, as a function of a predetermined level of verbosity selected from a plurality of levels of verbosity for the Web application and server.
A computer-readable medium having stored thereon computer-executable instructions, that when executed by a processor of a computing device, cause the computing device to perform acts comprising:
- associating a Web request Globally Unique Identifier (Web request GUID) with a Web request, wherein events which happen during servicing of the Web request can be identified by the Web request GUID, wherein the servicing comprises executing a Web application that interfaces with a server having an operating system and that is servicing the Web request;
- servicing the Web request with a server from a Web application that is executing on the server, wherein during the servicing multiple logger streams are simultaneously active to log the events as the Web request is being serviced by the server;
- detecting the occurrence of the events during the servicing of the Web request by the server, wherein a kernel trace session component of an operating system of the server performs event buffering to detect the occurrence of each event and traces are processed by a kernel of the operating system when the operating system processes a part of each Web request;
- logging by the server each of the events as server entries in a server trace log, wherein at least one of the detecting and the logging are performed by one or more components of the operating system of the server, and wherein each server entry comprises:
- information descriptive of the occurrence of an event;
- an event GUID corresponding to the event;
- and
- the Web request GUID corresponding to the Web request;
- logging by the Web application an application entry having an application GUID in an application trace log, wherein each application entry is correlated with each server entry in the server trace log by a Web request GUID;
- and
- determining which of the descriptive information to put into the server entry or application entry, or both the server entry and the application entry, as appropriate, as a function of a predetermined level of verbosity selected from a plurality of levels of verbosity for the Web application and server.
A system having a processor for tracing a Web request on a network, the system comprising:
- identifying means for identifying when a predetermined event occurs in a predetermined Web request when the predetermined Web request is being serviced, wherein a kernel trace session component of an operating system of the system performs event buffering to detect the occurrence of the event and traces are processed by a kernel of the operating system when the operating system services a part of the Web request;
- a logging means, in communication with the identifying means, for logging the event in a server trace log as the event happens, wherein the log of the event in the server trace log comprises:
- a GUID corresponding to the predetermined Web request;
- and
- information descriptive of the occurrence of the event when the predetermined Web request is being serviced, wherein the logging means is further for determining which of the information that is descriptive of the occurrence of the event to put into the server entry in the server trace log as a function of a predetermined level of verbosity, wherein the level of verbosity is selected from a plurality of verbosity levels;
- a second logging means, in communication with the identifying means, for logging the event in an application trace log after the event happens, wherein the logging of the event in the application trace log comprises:
- a GUID corresponding to the predetermined Web request;
- and
- information descriptive of the occurrence of the event when the predetermined Web request is being serviced, wherein the second logging means is further for determining which of the information to put into the application entry as a function of a predetermined level of verbosity, wherein the level is selected from a plurality of verbosity levels;
- and
- a correlation means for correlating each application entry with each server entry in the server trace log by a Web request GUID.
A network environment comprising a server having a processor, an operating system and multiple simultaneously active logger streams that are concurrently running on the server and that are each trace-enabled, the server servicing Web requests from a Web application while performing Web request-based tracing to produce traces in a server trace log that comprise a Web request GUID for each Web request and to flow each Web request GUID from the server across to the Web application, wherein the Web application produces traces in a Web application trace log, wherein the traces in the server trace log and the Web application trace log comprise information that is descriptive of events which occur during the servicing of the Web request by the server and the Web application, wherein the information in the traces is determined in part as a function of a predetermined level of verbosity, wherein the level is selected from a plurality of levels of verbosity for the server and the Web application, wherein the Web application correlates each event in the Web application trace log with a server GUID from the server by a Web request GUID, and wherein a kernel trace session component of the operating system of the server performs event buffering to detect the occurrence of the events and traces are processed by a kernel of the operating system when the operating system processes a part of each Web request.
A server module operating on a server, the server module comprising:
- logic stored in a memory configured to service a Web request from a Web application operating on the server;
- logic, performed by one or more components of an operating system of the server, configured to detect an occurrence of an event in the servicing of the Web request, the logic forming part of a kernel trace session component of the operating system of the server, the logic configured to perform event buffering to detect an event when traces are processed by the kernel when the operating system processes a part of the Web request;
- logic, performed by one or more components of the operating system of the server, configured to log a server entry in a server trace log, wherein the server entry comprises:
- information descriptive of the occurrence of the event of the servicing of the Web request;
- and
- a Web request Globally Unique Identifier (Web request GUID) corresponding to the Web request, wherein the Web request GUID is associated with the Web request, so that events which happen during servicing of the Web request can be identified by the Web request GUID which is logged with each of the events;
- and
- logic, performed by one or more components of the operating system of the server, configured to log an application entry in an application trace log, wherein the application entry comprises:
- information descriptive of the occurrence of the event of the servicing of the Web request;
- and
- a Web request GUID corresponding to the Web request;
- and
- logic configured to determine which of the information descriptive of the occurrence of the event to put into the server entry, the application entry, or both the server entry and the application entry, as a function of a predetermined level of verbosity, wherein the verbosity is determined by selecting one of a plurality of discrete indices, the indices corresponding to human-readable labels, wherein the descriptive information of the event comprises an event GUID and human readable text, and wherein event GUIDs may be correlated with Web request GUIDs.
Dependencies are inferred from the claim text.