1. Technical Field
The present invention relates generally to distributed data processing systems. Specifically, the present invention relates to a method, system and computer program product for selectively collecting problem determination data from a remote server and transferring that data to another machine for analysis.
2. Description of Related Art
Modern computing technology has resulted in immensely complicated and ever-changing environments. One such environment is the Internet, which is also referred to as an “internetwork.” The Internet is a set of computer networks, possibly dissimilar, joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. When capitalized, the term “internet” refers to a collection of networks and gateways that use the TCP/IP suite of protocols. Currently, the most commonly employed method of transferring data over the Internet is to employ the World Wide Web environment, also called the “Web”. Other internet resources exist for transferring information, such as File Transfer Protocol (FTP) and Gopher, but have not achieved the popularity of the Web. In the Web environment, servers and clients effect data transactions using the Hypertext Transfer Protocol (HTTP), a known protocol for handling the transfer of various data files such as text, still graphic images, audio, motion video, etc. HTTP is made up of header information and content. HTTP allows for the creation of custom headers. The information in various data files is formatted for presentation to a user by a standard page description language, the Hypertext Markup Language (HTML). The Internet also is used widely to transfer applications to users using browsers. Often times, users may search for and obtain software packages through the Internet.
Other types of complex network data processing systems include those created for facilitating work in large corporations. In many cases, these networks may span across regions in various worldwide locations. These complex networks also may use the Internet as part of a virtual product network for conducting business. These networks are further complicated by the need to collect and analyze data concerning software application errors that occur within the network.
Often, software applications exhibit problems that only occur in a specific customer environment. This makes duplication of the problem in a controlled environment difficult if not impossible until the nature of the problem is determined. Unfortunately, the information necessary to isolate the exact nature of the problem can be difficult to obtain because enabling logging and/or trace information can significantly modify the runtime behavior of the system.
In this situation, the additional overhead and modified runtime execution path of the logging and trace infrastructure can prevent the problem from reoccurring, or cause additional problems to arise that are not relevant to resolving the outstanding problem. This makes it even more costly, time consuming and difficult to fix the problem.
Therefore, it would be advantageous to have an improved method, system and computer program product to selectively collect problem determination (PD) data from a malfunctioning machine and transfer this data to another machine for analysis.
The present invention provides a method, system and computer program product for selectively collecting problem determination data. In a preferred embodiment, the method begins when a request for an application server is received from a user. Once it is determined that the request should have triggers added, triggers are added to the request to form a modified request. This modified request is transmitted to the application server. The application server transmits a modified response back to the Web server containing the desired problem determination data. The Web server removes the problem determination data from the modified response and transmits the unmodified response to the user.
The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures,
In the depicted example, server 104 is connected to network 102 along with storage unit 106. In addition, clients 108, 110, and 112 are connected to network 102. These clients 108, 110, and 112 may be, for example, personal computers or network computers. In the depicted example, server 104 provides data, such as boot files, operating system images, and applications to clients 108-112. Clients 108, 110, and 112 are clients to server 104. Network data processing system 100 may include additional servers, clients, and other devices not shown. In the depicted example, network data processing system 100 is the Internet with network 102 representing a worldwide collection of networks and gateways that use the Transmission Control Protocol/Internet Protocol (TCP/IP) suite of protocols to communicate with one another. At the heart of the Internet is a backbone of high-speed data communication lines between major nodes or host computers, consisting of thousands of commercial, government, educational and other computer systems that route data and messages. Of course, network data processing system 100 also may be implemented as a number of different types of networks, such as for example, an intranet, a local area network (LAN), or a wide area network (WAN).
Referring to
Peripheral component interconnect (PCI) bus bridge 214 connected to I/O bus 212 provides an interface to PCI local bus 216. A number of modems may be connected to PCI local bus 216. Typical PCI bus implementations will support four PCI expansion slots or add-in connectors. Communications links to clients 108-112 in
Additional PCI bus bridges 222 and 224 provide interfaces for additional PCI local buses 226 and 228, from which additional modems or network adapters may be supported. In this manner, data processing system 200 allows connections to multiple network computers. A memory-mapped graphics adapter 230 and hard disk 232 may also be connected to I/O bus 212 as depicted, either directly or indirectly.
Those of ordinary skill in the art will appreciate that the hardware depicted in
The data processing system depicted in
With reference now to
An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 in
Those of ordinary skill in the art will appreciate that the hardware in
As another example, data processing system 300 may be a stand-alone system configured to be bootable without relying on some type of network communication interfaces As a further example, data processing system 300 may be a personal digital assistant (PDA) device, which is configured with ROM and/or flash ROM in order to provide non-volatile memory for storing operating system files and/or user-generated data.
The depicted example in
The present invention provides a method, system and computer program product for selectively collecting problem determination data. In a preferred embodiment, the method begins when a request for an application server is received from a user. Once it is determined that the request should have triggers added, triggers are added to the request to form a modified request. This modified request is transmitted to the application server. The application server transmits a modified response back to the Web server containing the desired problem determination data. The Web server removes the problem determination data from the modified response and transmits the unmodified response to the user.
By collecting the PD data in this manner, the problem of having to duplicate the runtime environment in which the problem occurred is avoided. Also, as the present invention does not enable logging and tracing, the runtime behavior of the system is not altered, making it easier to determine the true nature of the problem. Additionally, the present invention, by having the application server gather the PD data, avoids the problem of additional, extraneous problems arising due to the modified execution path caused by logging and tracing.
With reference now to
In a preferred embodiment, proxy 406 is configured to add the appropriate triggers to gather the PD data for the problem by a user. That is, once a problem is detected or suspected to be occurring in an application server, a user, such as the system administrator, configures proxy 406 to add the triggers necessary to gather the desired information to browser requests. Proxy 406 can be configured so that only certain requests received by Web server 404 turn on proxy 406.
In another embodiment, proxy 406 may have the capability to detect suspicious behavior by application server 410. In such a case, proxy 406 may add the appropriate triggers to requests destined for application server 410. Upon receiving the PD data, proxy 406 would then notify an appropriate user, such as the system administrator that the data was available for analysis.
In a further embodiment, proxy 406 may be equipped with the software to perform anomaly detection and PD data analysis. Currently no specific software exists to do this, but some existing software packages, such as IBM Tivoli software, could be modified to perform this task._In such a case, proxy 406 may add the appropriate triggers to requests destined for application server 410. Upon receiving the PD data, proxy 406 would then analyze the gathered PD data and send its conclusions to an appropriate user, such as the system administrator. Alternately, in a fully autonomic system, proxy 406 would then begin procedures to fix the problem based on its conclusions.
Triggers are piggybacked as meta-data on the underlying protocol of the request. In the case of HTTP protocol, the trigger is one or more special purpose HTTP header fields. These special purpose HTTP header fields are custom created fields. Therefore, not only must proxy 406 be programmed to insert these custom fields, but the application server 410 must be able to understand the custom fields as well. Triggers that application server 410 may not be aware of, or not know how to handle, can be added through Aspect Oriented Programming. Application server 410 is also programmed, using Aspect Oriented Programming, to understand the custom fields as well.
The type of trigger tells application server 410 what PD data to collect. Some examples of PD data include, but are not limited to, method/class flows, method timings, database connection pools, session information, number and type of applications executed, etc.
Modified request 408 is then transmitted to application server 410. Modified request 408 is an example of how a HTTP header might appear once a trigger has been added by proxy 406. In the current example, the trigger that has been added to HTTP header is “Trigger:Servlet-Info,JSP-info”. Application server 410 receives the modified request, decodes the special purpose HTTP header fields and begins collecting PD data, as instructed by the triggers, as indicated by arrow 412. Triggers can be set based on any arbitrary configurable event. Some examples of an arbitrary configurable event include, but are not limited to, per-URL, every nth request of a specific resource, when the time to serve a URL falls out of a QOS criterion, requests from certain IP addresses, on requests to certain backend servers, when a failure is detected on one or more backend servers, when the client requests the PD to be collected, requests to certain urls at certain times, etc.
Aspect Oriented Programming techniques are used to program application server 410 so that application server 410 can identify and understand triggers contained in modified request 408. The trigger specifies, directly or indirectly, that a particular aspect of a component be run in the application server when servicing the request. Different aspects can be created to produce arbitrarily “rich” responses to collect any manner of PD data needed, such as path flow traces, system resource utilization, downstream performance characteristics, cluster work load distribution, network latency, etc. Literally anything that can be instrumented and collected can be implemented in an aspect of a component and reported back to the server that set the trigger. A componentized application server has the ability to dynamically load “containers” on demand, such as to run a JavaServer Pages, a Servlet, a Portlet, Hypertext Preprocessor (PHP) application, etc., and can load different aspects of each of these containers depending on the trigger that was received. Each aspect will provide a different set of PD data piggy backed on the client response.
Once application server 410 has collected the PD data, application server 410 modifies the response to Web server 404 to form a modified response, such as modified response 414. In modified response 414, the response header for the collected PD data is shown as “Content-type: multipart/form-data; boundary=----7cdld6371ec”.
Modified response 414 is then streamed back to Web server 404. PD data can piggybacked on modified response 414 via multipart MIME (RFC 2046) or WebServices SOAP messaging, depending upon the nature of the response. Proxy 406 collects the returned PD data, removing it from response 416. Response 416 is then transmitted to the client. Thus, the client is never even aware of the PD data gathering process. Proxy 406 aggregates and organizes the removed PD data sets. Proxy 406 then transmits this PD data to the appropriate user for analysis.
It is important to note that while in the process described above client and proxy 406 are presented as separate components, client and proxy 406 could be a single component. Therefore, the process would be started by Web server 404, which would then modify its own request through the use of proxy 406.
While the above described process has been described in terms of use with a single application server, the above described process is applicable for use in system with multiple application servers. A single Web server 404 could transfer modified requests to multiple application servers and gather data from multiple application servers. Additionally, the above described process is applicable to systems with webservices tiers in place of or in addition to application servers.
In another embodiment, rather than passing on the gathered PD data, proxy 406 could analyze the data as well as collect it.
While the above described process has been described in terms of using HTTP protocol as the communication protocol, any other protocol, such as WebServices, XML and IIOP, for example, could be used in place of the HTTP protocol or in addition to the HTTP protocol, depending on the implementation. For example, in the case XML, the triggers could be added directly into the XML file itself.
The request turns on a proxy, like proxy 406 in
Triggers are piggybacked as meta-data on the underlying protocol of the request. In the case of HTTP protocol, the trigger is one or more special purpose HTTP header fields. These triggers will cause the application server or webservices tier to collect appropriate PD data and transmit it back to the Web server.
The proxy transmits the modified request to the application server or webservices tier (step 508). Once the Web server receives a response from the application server (step 510), the proxy removes the PD data from the response (step 512). The proxy then transmits the modified response to the client (step 514) and the method ends.
While the above described process has been described in terms of use with a single application server or webservices tier, the above described method is applicable for use with multiple application servers or webservices tiers or a combination thereof.
Furthermore, while the above described process has been described in terms of using HTTP protocol as the communication protocol, any other protocol, such as WebServices, XML and IIOP, for example, could be used in place of the HTTP protocol or in addition to the HTTP protocol, depending on the implementation. For example, in the case XML, the triggers could be added directly into the XML file itself.
Thus the present invention solves the disadvantages of the prior art by providing a method, system and computer program product for to selectively collect problem determination data. In a preferred embodiment, the method begins when a request for an application server is received from a user. Once it is determined that the request should have triggers added, triggers are added. This modified request is transmitted to the application server. The application server transmits a modified response back to the Web server containing the desired problem determination data. The Web server removes the problem determination data from the modified response and transmits the unmodified response to the user.
By collecting the PD data in this manner, the problem of having to duplicate the runtime environment in which the problem occurred is avoided. Also, as the present invention does not enable logging and tracing, the runtime behavior of the system is not altered, making it easier to determine the true nature of the problem. Additionally, the present invention, by having the application server gather the PD data, avoids the problem of additional, extraneous problems arising due to the modified execution path caused by logging and tracing.
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media, such as a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, and transmission-type media, such as digital and analog communications links, wired or wireless communications links using transmission forms, such as, for example, radio frequency and light wave transmissions. The computer readable media may take the form of coded formats that are decoded for actual use in a particular data processing system.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.