SERVER-BASED INSTRUMENTATION SYSTEM FOR INTERNET-ENABLED APPLICATIONS
Field of the Invention
The present invention is directed to techniques for monitoring the performance of computer transactions, and more particularly to a system for monitoring transactions which occur over a distributed communications network, such as the Internet.
Background of the Invention
There exist a variety of situations in which it is desirable to monitor the efficiency of computer systems. In one known approach, the performance of a computer system is monitored by measuring the period of time which elapses between the instant at which a particular transaction is initiated, for example by a user or within an application program, and the time when a response is received. For instance, individual users may access a common database via their respective computers. A user may request a listing of all records in the database which contain a certain type of information. To monitor the performance of the computer system, the time at which the user initiates the request is recorded, as well as the time when the records matching the search criteria are displayed to the user. The difference between these two times indicates the latency within the computer system, and serves as one measure of its performance efficiency.
One particular system for monitoring the performance of client-server programs is described in U.S. Patent No. 5,872,976, the disclosure of which is incorporated herein by reference. In the system of that patent, an application agent is resident on each node of a computer network having an application program whose performance is to be measured. The user identifies particular events of interest to be tracked during the operation of the application program. These events are provided to the agent, which records the times at which they
occur on the user's computer. The latencies between starting and stopping times are then calculated, and stored for subsequent reporting purposes. For example, all of the agents which are located on the individual users' computers may report the stored results to a central server, where they are tabulated to form a comprehensive report.
It is desirable to be able to perform similar types of monitoring functions in connection with transactions that occur over distributed communications networks, such as the Internet. For instance, an electronic commerce retailer who is hosting a site on the World-Wide Web may desire to know how efficiently responses are being provided to prospective customers. If a user has to wait too long for a web page to download, he or she may become frustrated and move on to another site, resulting in the loss of potential sales. By knowing that the page is taking too long, however, the retailer can redesign it for faster downloading, e.g. by removing graphics or animation. The retailer may also desire to know the amount of time that customers spend in consideration of the choices presented on a web page, before making a selection, to optimize the amount of information contained on each page.
The ability to monitor individual transactions, in the manner provided by the system disclosed in the aforementioned '976 patent, would therefore be useful to entities hosting sites on the World-Wide Web. However, it would not be practical to implement a performance monitoring system where a software agent, or the like, must be installed at each individual user's site. Unlike a local area network or an enterprise system, where every computer is managed by a single entity, the computers which access information via the Internet are, for the most part, independent of those which provide the information. Hence, there is no convenient mechanism available to web site hosts that would enable them to have monitoring agents installed on potential viewers' computers. Theoretically, it might be possible to incorporate a monitoring agent within browser programs, that are employed by the individual users to access information via the Internet.
However, the users may object to having programs installed on their computer systems which monitor all of the transactions that they perform over the Internet, particularly if it is done without prior approval. Furthermore, even if such an approach were to be implemented, it would be cumbersome to attempt to segregate and transmit all of the recorded data by web site, so that only the transaction data pertaining to a given web site is reported to the host of that site.
Accordingly, it is desirable to provide a system which is capable of monitoring transactions that are carried out via a distributed communications network, such as the Internet, but which does not require the installation of any software on the user's computer. Further in this regard, it is desirable to provide such a system which enables a web site host to obtain data of interest which pertains to only that host's site.
Summary of the Invention
In accordance with the present invention, the foregoing objectives are achieved by means of a system in which transaction and event monitoring functions are directly incorporated into web pages, and similar types of data structures, that are transmitted from a host site to individual users. Each monitoring function operates within the context of the web page with which it is transmitted, and does not require any software to be loaded on the user's computer. In a preferred embodiment of the invention, the monitoring function is carried out by an applet incorporated into each web page that relates to transactions of interest, such as an interactive page via which users submit requests for information.
In one embodiment, three types of data are incorporated into the pages that relate to transactions of interest. One type of data consists of particular tags, or indicators, such as DHTML tags, which identify events of interests, and which call one or more functions when a particular event occurs. The second type of data consists of scripts that perform the functions called by the tags. The third
type of data comprises an applet which operates as a communications broker between a server at the host site and the functions performed by the scripts, as well as a processor for calculating elapsed time between related pairs of detected events. By means of such a system, the period of time that elapses between a user's request for a particular web page and receipt of a response to that request can be measured at the user's site in a manner that is transparent to the user. By measuring the elapsed time at the user's site, the system takes into account all of the factors which affect the user's experience at a particular web site, including operations performed at both the user's computer and the server computer. Furthermore, by incorporating the monitoring function into the web pages themselves, each web host can customize the transaction monitoring operation in a manner which best suits the concerns of the host. As a result, each host is able to obtain the information which is most useful in making decisions that affect the appearance and functionality of their respective sites.
As a further feature of the invention, a tool is provided which automates the process for incorporating the monitoring function into web pages. A web site host provides an indication of the type of operations which are to be monitored, and these operations are stored in a database. Thereafter, when a web page is transmitted from the host's site, it is examined to determine whether it contains any commands or tags that are stored in the database, and if so the web page is modified by adding the appropriate codes to perform the monitoring function.
The foregoing features of the invention, and the advantages offered thereby, are explained in greater detail hereinafter with reference to exemplary embodiments illustrated in the accompanying drawings.
Brief Description of the Drawings
Figure 1 is a block diagram of an exemplary computer system in which the present invention can be implemented;
Figures 2a-2c are exemplary web pages illustrating transactions conducted over the Internet;
Figure 3 is a flow diagram illustrating the exchange of information between a server and a user's computer; Figures 4-6 are representative reports generated by the monitoring program;
Figure 7 is a view of a web page with a menu for designating monitoring actions;
Figure 8 is a view of the web page with a list of the possible actions that can be defined for an object;
Figure 9 is an illustration of the database which stores the actions that have been defined for a web site's pages; and
Figure 10 is a flow diagram of the process that is carried out to dynamically insert the monitoring code into web pages as they are being transmitted.
Detailed Description
To facilitate an understanding of the present invention, it is described hereinafter with particular reference to its application in the context of monitoring transactions that occur via Internet web pages. It will be appreciated, however, that the practical applications of the present invention are not limited to this particular embodiment. Rather, the principles which underlie the invention can be employed in any situation in which it is desirable to provide a form of instrumentation for monitoring transactions which occur through the transmission of data structures between a central site and remote sites, without requiring the installation of software at the remote sites. Furthermore, while the Internet is described as a particular type of communication and information network in which the invention can be implemented, it will be understood that the invention can be successfully employed in any type of distributed communication network, where
the remote sites may be managed and/or owned independently of the central server, and therefore the installation of monitoring software at the remote sites is neither practical nor desirable.
Figure 1 illustrates a typical environment in which the monitoring system of the present invention might be employed. This illustration depicts an electronic commerce arrangement, in which various e-commerce retailers conduct transactions with customers via a global communications network, such as the Internet. Each retailer hosts one or more e-commerce sites on associated servers 10, 12, 14. Each retailer may be associated with a different respective server, or multiple retailers may have each of their sites hosted on a single server.
The e-commerce retailers conduct transactions with individual customers by means of web pages that are transmitted via a communications network 16, e.g. the Internet. Individual customers access the web pages by means of personal computers 18-24, or equivalent types of devices which are capable of providing a connection to the communications network and viewing the web pages, for instance by means of a browser program.
The web pages are individually downloaded from the servers 10-14 to the users' communications devices 18-24, and contain information about the products that are available from the various e-commerce retailers. The web pages also provide a form of interactivity, via which the users can enter requests for particular types of products, and submit orders.
Examples of transactions that might be carried out between an e-commerce retailer and a typical user are illustrated with respect to various simplified web pages depicted in Figures 2a-2c. Figure 2a illustrates the initial web page that is downloaded to a user's communication device when the user first connects to the retailer's site. In the illustrated example, the retailer offers various types of media, such as books, music and videos. The web page includes search windows via which the user can enter criteria for identifying products of interest. In the illustrated example, a first window 26 enables the user to select the general
category of interest, e.g. books, music or videos. A second window 28 enables the user to insert text which describes the subject matter in which the user is interested. In this example, the user has indicated an interest in books relating to the topic of lasers. The remainder of the web page might contain graphical and/or textual displays advertising particular products of the retailer, and links to other pages that pertain to specific products. After entering all of the appropriate information in the windows 26 and 28, the user clicks on a button 30 to transmit the information back to the server.
Assuming that the retailer is one which does not specialize in technically oriented materials, it may be the case that the retailer does not have any books which meet the user's search criteria. In that case, the response to the user's request might be the transmission of a web page such as that illustrated in Figure 2b, which informs the user that no matches were found for the particular keywords entered by the user. The web page may also provide a dialog window 32, to enable the user to enter new search criteria, and thereby redefine the subject matter being sought. In the illustrated example, the user has entered new subject matter, namely "computer", and resubmitted the request, by clicking on a button 34.
If the search is successful in finding books which meet this request, a new web page, such as that illustrated in Figure 2c, is transmitted to the user's communication device. The web page contains a listing of each of the books available from a retailer which contain the word "computer", or otherwise match the user's request. The title of each book might provide a link to another web page (not shown) which contains more detailed information about the book. These additional web pages might also provide the user with the ability to enter ordering information, or to add the book to a virtual shopping cart, via which the user completes the order at the end of the shopping session.
In the context of these types of transactions, it is useful for the retailer to know the responsiveness of the web site to user's requests, which is a significant
factor affecting whether the web site provides a generally positive user experience. If the transmission of web pages that are responsive to the user's requests takes too long, the user may become frustrated and simply leave the site, rather than wait for a responsive answer. Other types of information may also provide an indication of the overall user experience. For instance, if a single web page contains a large amount of information for the user to review, the user may find it difficult to identify the particular product of interest. Conversely, if each web page contains too little information, it may be necessary for the user to navigate through a number of successive pages before reaching the desired result. This too can lead to an unsatisfactory experience, particularly if each page requires an appreciably long period of time to download. The amount of time that a user spends reviewing each page, before transmitting a request to the server, can provide a useful indication of whether the web pages contain an appropriate amount of information. In accordance with the present invention, these types of information are obtained by monitoring the occurrence and timing of specific events that relate to the downloading of web pages and submission of user requests. This monitoring is carried out by incorporating event monitoring functions within the web pages themselves. More particularly, most web pages are formatted in the Hyper Text Markup Language (HTML). Generally speaking, HTML files are text files that contain embedded markup in the form of tags. The tags provide a variety of functions, such as to identify the overall structure of a web page, the locations of graphics and text, the formatting of text and the functionality of various types of input forms, such as the windows 26, 28 and 32 in the examples of Figures 2a-2c. The present invention incorporates features into the HTML web pages to detect when events of interest occur during the conduct of transactions between the web site servers 10-12 and the users' communication devices 18-24. In one implementation of the invention, one of the extensions of HTML technology, known as dynamic HTML, or DHTML, is employed to incorporate one aspect of
the monitoring feature. In general, DHTML provides the ability to make a web page interactive, rather than merely present static information. In the context of the invention, this interactivity is employed to call up functions that enable the occurrence of preselected events to be monitored. For instance, in the example described above, two particular events may be of interest to the web site host, namely the time at which a user submits a request for information, such as a search query, and the time that a web page responsive to the request is loaded into the user's computer or other communication device. These two events can be detected by means of DHTML statements that are incorporated into the HTML tags of a web page. The following HTML code listing depicts a body tag which includes a DHTML statement that calls a function for logging the occurrence of an event, and a form tag which includes a DHTML statement that calls another function for indicating the start of a transaction:
<HTML> < HEAD >
Header Data < /HEAD >
< BODY ... onload = "DetectEvent ('Bookseller Home Page', 'Loaded') > Body Data < FORM ... onsubmit = "TransactionStart ('Search For')" >
< /FORM > < /BODY> < /HTML>
The first of these DHTML statements (highlighted in bold) indicates that, upon loading of the web page into the user's computer, a function "DetectEvent" is to be called, and two items of data, namely "Bookseller Home Page" and "Loaded" are provided with the call. In a similar fashion, the second DHTML
statement indicates that upon submission of the data in a form, for example upon clicking of the button 30, a function "TransactionStart" is called, and the function is provided with the textual data "Search For".
The functions that are called by the DHTML statements are encoded within one or more script files that are incorporated within the web page. For instance, the script file may follow the HTML document. The following example illustrates pseudocode in the Java script language which implements four functions, namely TransactionStart, TransactionStop, TransactionFailed and DetectEvent:
< SCRIPT LANGUAGE= "javascriptl .2" > function TransactionStart(transactionName) { transactionName = transactionName + "[" + document . form 1. mode . options [document . form 1. mode . selectedlndex] . value + "] keywords = "; transactionName = transactionName + "[" + document, forml. keywords, value + "]";
document . applets . WebMonitor . transactionStart(tr ansactionName) ;
} function TransactionStop(transactionName) {
document . applets . WebMonitor . transactionStop(transactionName) ; } function TransactionFailed(transactionName) { document . applets . WebMonitor . transactionFailed(transactionName) ;
} function DetectEvent(eventName, event Action) {
document. applets. WebMonitor. logEvent(eventName, eventAction);
}
< /SCRIPT >
As noted above, the DetectEvent function is called when a page is loaded which contains the "onload" DHTML statement. When this function is called, it issues a "logEvent" call to an applet contained within the current document, or web page. The applet operates to record data provided by function calls, and subsequently communicates this data to the server from which the page was transmitted. In the illustrated example, this applet is named "WebMonitor". In response to the "logEvent" call, the applet records two items of data provided by the calling function, i.e. the name of the event and the action associated with the event. In the example described above, the name of the event corresponds to "Bookseller Home Page" and the action is "Loaded".
The following pseudocode illustrates one example of an applet in the Java programming language, called WebMonitor, which can be included in the code for a web page document:
< APPLET code = WebMonitor .class name = WebMonitor archive = WebMonitor . j ar height =0 width=0 VIEWASTEXT id=Appletl > < /APPLET >
The TransactionStart function operates in a similar manner, to call the applet. In this case, the function provides data which identifies the submission that was made by the user. For instance, in the example of Figure 2a, upon pressing the button 30, the TransactionStart function calls the WebMonitor applet
and provides an indication that the user initiated a search within the category "books", using the keyword "laser".
The TransactionFailed function is associated with web pages that are displayed to the user when the results of a search are unsuccessful, such as the example of Figure 2b. The following HTML code provides an illustration of one manner in which the TransactionFailed function can be called:
<HTML>
<HEAD >
Header Data < /HEAD >
< BODY ... onload = "TransactionFailed ('Search For [books] keywords = [laser] ') " > Body Data
< FORM ... onsubmit = "TransactionStart ('Search For', forml, forml. mode.options[forml.mode.selected Index].text)" >
< /FORM > < /BODY > < /HTML >
When the TransactionFailed function is called, it in turn calls the WebMonitor applet and provides it with data relating to the failed transaction. In this example, a search for books using the keyword laser was the transaction that failed. The foregoing example also illustrates that the TransactionStart function is encoded within the web page, to initiate the recording of a new transaction if the user inserts information in the form window 32 (which has the name "forml") and activates the search button 34.
The TransactionStop function is associated with web pages that are downloaded to the user in response to a successful match, such as the web page of
Figure 2c. An example of HTML code which includes a DHTML statement for calling this function follows:
< HTML>
<HEAD > Header Data
< /HEAD >
< BODY ... onload = "Transaction Stop ('Search for [books] keywords = [computer] ' ) " > Body Data < FORM ... onsubmit = "TransactionStart ('Search For')" >
< /FORM > < /BODY > < /HTML>
In a manner similar to the previously described functions, the TransactionStop function operates to call the applet, and provides it with data to indicate that the search for books using the keyword "computer" was successful.
In addition to recording the data provided by each of the various functions, relating to the start of transactions, the termination of transactions, failed transactions, and logged events, the applet determines the elapsed time associated with successful transactions. Upon receiving a TransactionStart call, the applet associates a time stamp with the data that is provided to it. Similarly, when the TransactionStop function is called as a result of a successful response, the applet provides a similar time stamp, and then determines the elapsed time between the starting and stopping times. Another operation performed by the applet is to communicate the pertinent data received from the various functions to a central location. Figure 3 illustrates the flow of information that occurs in the operation of the present invention. At
the outset, the user establishes a connection between his computer 18, or other form of Internet communications device, and a web site host server 10. In response, the server 10 downloads a web page to the user's computer. For example, the downloaded page may be the home page of an e-commerce retailer. The downloaded web page contains the normal content associated with the retailer's home page. In addition, it includes the DHTML statements incorporated within the HTML tags, a script file containing the appropriate functions, and the applet, e.g. WebMonitor. Upon the occurrence of any of the events associated with the DHTML statements, such as the loading of the web page or the submission of a request, the appropriate one of the functions in the script file is called, which in turn causes the applet to record the appropriate data, for example in a temporary cache memory, and report this data back to a monitoring program on a central server. This report occurs as part of the same connection session between the server and the user, i.e. the data is reported back immediately rather than being stored at the user's site and reported at a later time. For this purpose, when the applet is instantiated it establishes a guaranteed unique identification value, which it employs for the session. Each time that data is reported back to the monitoring program, it is stamped with this identification, so the particular session during which a reported event occurred can be readily identified. The monitoring program can be located on the same server as the web page that was transmitted to the user, or on a separate server, e.g. to a separate IP address.
The monitoring program provides a variety of different types of reports in a manner that corresponds to the retailer's interest. For instance, Figure 4 illustrates an example of a Transaction Summary Report, which identifies each transaction, whether it was successful, and the response time associated with it. If a greater amount of information is desired, the monitor program can provide a Transaction Detail Report, of the type illustrated in Figure 5. In addition to the information contained in the summary report, the detailed report identifies the specific IP address of the remote computer to which the web pages were
transmitted, and the times that the pertinent events were recorded at that computer. An Event Detail Report is illustrated in Figure 6. This report provides a log of the particular events that were recorded in response to the calling of the detect event function. One example of a monitoring program which provides reporting capabilities of this type is Performance Works, distributed by Landmark Systems Corporation.
In the foregoing embodiment of the invention, DHTML codes are employed as tags which call up functions, embodied in script files, that carry out the appropriate steps to perform a monitoring operation. In an alternate embodiment of the invention, it is not necessary to employ such tags to invoke the functions. Rather, events of interest can be processed within functions that may already be present in a web page.
In the implementation of the invention, one approach is to manually encode each web page with the appropriate DHMTL codes, scripts and applets that are required for a particular monitoring session. However, for a web site having a large number of pages, such an approach could require a significant effort, and could result in numerous errors which would need to be identified and fixed. In another aspect of the invention, therefore, the process for incorporating the monitoring code into the web pages is automated, to thereby reduce the effort that is required and minimize the likelihood of errors.
One component of this feature of the invention is an extension to conventional browser applications that enables a user to readily identify objects on a web page which are to be associated with the monitoring of events and transactions. Most browser applications, such as Netscape Navigator and Microsoft Internet Explorer, permit a user to view information about an HTML page and perform certain operations in response to a special action, such as clicking on the right button of a mouse. Figure 7 illustrates an example of a contextual menu 36 that is displayed when the user clicks the right mouse button while the cursor is positioned over a particular object in a web page, in this case
the button 30 associated with the text input windows. This menu lists various types of operations that can be performed on the data of the web page, by means of the browser application. The last item on this menu is a command to define an action. In response to the selection of this latter item, the user is presented with a list of the possible actions and events that can be associated with that type of object, as shown in Figure 8. In the case of an input form, the choices in the list 38 include the ability to start a transaction, end a transaction, indicate a failure or detect an event. When the user selects one of these choices from the list, it is stored in a database, along with identifications of the web page and object with which it is associated, as depicted in Figure 9. This database is stored on the server with the web pages of the site.
Thereafter, whenever a page is to be transmitted from the server, it is checked against the list of pages stored in the database, as depicted in the flow diagram of Figure 10. If there is a match, the HTML code for the page is examined to locate the objects stored in the database, e.g. body, form, etc. , and the appropriate DHTML code for the indicated function is inserted at that point in the page. In addition, the appropriate scripts and/or applets are added to the end of the web page. With this approach, therefore, the appropriate code to perform a monitoring function is dynamically added to each page at the time it is being transmitted, thereby removing the need to manually code each web page with the required statements.
From the foregoing, it can be seen that the present invention provides a system for monitoring the actual response times that are experienced by users of information provided over the Internet, and similar types of distributed communication systems, in a non-intrusive manner. The monitoring of events and transaction status is carried out without the need to install any software on the user's computer. Furthermore, the monitoring activities are transparent to the user, and do not interfere with the user's experience.
It will be appreciated by those of ordinary skill in the art that the present invention can be embodied in other specific forms without departing from the spirit or essential characteristics thereof. For example, while the foregoing examples illustrate that functions are called upon the loading of web pages and the submission of data via forms, other types of events that may be of interest to web site hosts can also be used to call a function, for instance via DHTML statements. The presently disclosed embodiments are therefore considered in all respects to be illustrative, and not restrictive. The scope of the invention is indicated by the appended claims, rather than the foregoing description, and all changes that come within the meaning and range of equivalence thereof are intended to be embraced therein.