Abstract:
The present invention provides a method of collecting system performance metrics from a plurality of monitored systems and reporting system performance metrics to a requesting client system. In accordance with the present invention, the system performance metrics are collected to a database so that requesting client systems requiring the metrics need not have access to each monitored system. The monitored systems may limit user access and maintain system security while still providing the metrics required to address system availability and load problems.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
   None. 
   STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT 
   None. 
   TECHNICAL FIELD 
   The present invention relates to collecting and reporting system performance metrics. More particularly, the present invention relates to collecting and reporting system performance metrics by collecting the metrics to a central database and reporting the collected metrics to a requesting client system so that the requesting client system does not require access to the monitored systems. 
   BACKGROUND OF THE INVENTION 
   Computing systems have become an integral part of business, government, and most other aspects of modern life. Most people are likely regrettably familiar with poor performing computer systems. A poor performing computer system may be simply poorly designed and, therefore, fundamentally incapable of performing well. Even well-designed systems will perform poorly, however, if inadequate resources are not available to meet the demands placed upon the systems. Properly matching the resources available to a system with the demand placed upon the system requires both accurate capacity planning and adequate system testing to predict the resources that will be necessary for the system to function properly at the loads expected for the system. Additionally, after the system is in production, continual monitoring of capacity and load metrics validates the pre-production planning while also indicating when more resources are required. 
   Measuring the load that is placed upon a system may involve a number of issues, and this measurement may be performed in a variety of ways. For example, system performance metrics such as system availability and load may be tracked continuously or periodically during operation by software or hardware-based measurement mechanisms. Most of these mechanisms reside on the monitored system and thus require system access by a user who would like to view the system performance metrics. 
   Due to system security concerns, it may be undesirable to allow all users to access all monitored systems in order to view and report system performance metrics. It is often difficult to limit security access to only allow reporting system metrics without permitting the user to access other data and applications residing on the monitored system. By permitting a user to report system metrics from a database, security access to monitored systems is not required. 
   SUMMARY OF THE INVENTION 
   The current invention addresses the need to make system performance metrics available to a large number of requesting client systems without compromising the security of the monitored systems. By collecting the system performance metrics to a central repository, the invention presents the requesting client system with one location, and thus one system access, to retrieve all system and load measurements of interest. 
   The present invention provides a system and method to collect system performance metrics from a plurality of monitored systems. The system then presents an interface to the requesting client system to query a database and to deliver the resulting system performance metrics to the requesting client system. 

   
     BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS 
     The present invention is described in detail below with reference to the attached drawing figures, wherein: 
       FIG. 1  illustrates the components of a monitored system; 
       FIG. 2  illustrates a computing architecture for implementing the present invention; 
       FIG. 3  illustrates a further computing architecture for implementing the present invention; 
       FIG. 4  illustrates a method in accordance with the present invention for collecting system performance metrics from monitored systems and storing the system performance metrics to a database; 
       FIG. 5  illustrates a further method in accordance with the present invention for collecting system performance metrics from monitored systems and storing the system performance metrics to a database; 
       FIG. 6  illustrates a method in accordance with the present invention for reporting system performance metrics from a database to a requesting client system; 
       FIG. 7  illustrates a further method in accordance with the present invention for reporting system performance metrics from a database to a requesting client system; 
   

   DETAILED DESCRIPTION OF THE INVENTION 
   The present invention provides a system and methods for collecting and reporting system performance metrics from monitored systems, wherein a system comprises computer software operating on computer hardware. Examples of system performance metrics are measurements such as availability (up-time) and load for a particular system, CPU, memory and disk utilization measurements as well as resource consumption by application. The present invention may be used to collect and report system performance metrics of a plurality of monitored systems. One example of such a system is an order processing system that receives orders input into a user interface, processes that information, and then provides pertinent information to persons or systems responsible for filling the orders. However, any system comprising software operating on hardware may be subject to the collecting and reporting methods within the present invention as long as there exists a mechanism to gather the system performance metrics for the monitored system. 
   One skilled in the art will appreciate that a variety of methods, procedures, techniques, and protocols exist or may be developed for system monitoring, and that any of these may be used to monitor a system operating in its production environment to obtain system performance metrics for use in accordance with the present invention. Some examples of system performance monitoring software are TeamQuest Collector, Openview Performance Agent and BMC patrol. 
     FIG. 1  describes the components comprising a monitored system  100 . Each monitored system  100  has operating system software  110  installed. Operating system software is the foundation software for a computer system that manages hardware such as storage, memory and peripherals. This operating system software can be one of many options such as Microsoft Windows, Hewlett-Packard HP-UX, Sun Solaris, IBM AIX, or Linux. Also present on monitored system  100  is system monitoring software  120  which measures system performance metrics and stores the resulting metrics in system performance log files  130  on the system. System monitoring software  120  could be any of a number of solutions to monitor system performance metrics such as load and availability such as TeamQuest. 
     FIG. 2  illustrates a computing architecture for implementing the present invention.  FIG. 2  is composed of a plurality of monitored systems of the form described in  FIG. 1  as monitored system  100 . A plurality of monitored systems are depicted within  FIG. 2  as monitored system A  200 , monitored system B  210 , and monitored system N  220  where N is any number of systems that can be connected on the network. A system performance metrics collector process  230  collects system performance metrics from each of the monitored systems  200 ,  210  and  220 . After collecting the metrics, collector process  230  stores the system performance metrics to a database  240 . The requesting client system  280  sends a request for a report of system performance metrics through the web server process  270  to the query engine process  250 . Query engine process  250  creates the database query required to service the request from requesting client system  280  and executes the resulting query against database  240 . Database  240  responds to query engine process  250  with the system performance metrics resulting from the query. The resulting metrics are passed to the file builder process  260  to compose the required file format. The file created by file builder process  260  is passed through web server  270  to requesting client system  280 . The various processes (collector process  230 , web server process  270 , query engine process  250  and file builder process  260 ) may exist on a single or a plurality of separate systems as is convenient for the particular implementation. 
   Referring now to  FIG. 3 , a further computing architecture for implementing the present invention is described. Again, the plurality of monitored systems are represented as monitored system A  200 , monitored system B  210 , and monitored system N  220  where N is any number of systems that can be connected on the network. System performance metrics collector process  230  collects system performance metrics from each of monitored systems  200 ,  210  and  220 . After collecting the metrics, collector process  230  stores the system performance metrics to database  240 . Requesting client system  280  sends a request for a report of system performance metrics through web server process  270  to query engine process  300 . Query engine process  300  creates the database query required to service the request from requesting client system  280  and executes the resulting query against database  240 . Database  240  responds to query engine process  300  with the system performance metrics resulting from the query. The resulting metrics are passed to file builder process  310  to compose the required file format based on the operating system software installed on the specific monitored system. The file created by the file builder process  310  is passed to a file validator process  320  to ensure the format of the file is accurate according to the operating system installed on the specific monitored system. The file is then passed through web server process  270  to requesting client system  280 . The various processes (collector process  230 , web server process  270 , query engine process  300 , file builder process  310 , and file validator process  320 ) may exist on a single or a plurality of separate systems as is convenient for the particular implementation. 
   Referring now to  FIG. 4  a method  400  in accordance with the present invention for collecting system performance metrics is illustrated. The initial step  410  in collecting system performance metrics is to collect system performance metrics from monitored systems. The next step  420  is to store system performance metrics to a database. 
   Referring now to  FIG. 5  a further method  500  in accordance with the present invention for collecting system performance metrics is illustrated. The initial step  510  in collecting system performance metrics is to collect system performance metrics from monitored systems once per twenty-four hour period. The next step  520  is to store system performance metrics to a database. 
   While the current embodiment collects system performance metrics once per twenty-four hour period, it is reasonable to assume the periodicity could be easily configured to once per hour period, or even once per minute. The limiting factors for increasing the periodicity of the collection may include storage space within the database, the storage time after which records are purged from the database, and the time required to collect all system performance metrics once from each monitored system. 
   Referring now to  FIG. 6  a method  600  in accordance with the present invention for reporting system performance metrics is illustrated. The initial step  610  in reporting system performance metrics is to query the database for system performance metrics when the request is sent from the requesting client system. The second step  620  is to compose metrics into a file. The third step  630  is to deliver file to requesting client system. This delivery function may be accomplished via any number of methods including Internet file transfer, email, or web page display. 
   Referring now to  FIG. 7  a further method  700  in accordance with the present invention for reporting system performance metrics is illustrated. The initial step  710  in reporting system performance metrics is to query the database for system performance metrics based on specific monitored system name and range of dates when the request is sent from the requesting client system. The second step  720  is to determine operating system software installed on monitored system. This step could be performed by any of a number of mechanisms such as a real-time query to the monitored system or a look-up in a database inventory of monitored systems. The third step  730  is to compose metrics into a file format specific to operating system software as determined by the requirements of a modeling software external to this system that uses the metrics file as an input. At this point, a decision is made as to whether to validate file  740  or proceed without validation based again on the requirements of a modeling software external to this system that uses the metrics file as an input. In the option to validate file, the next step  750  is to validate file format followed by an additional step  760  to deliver file to requesting client system. If the decision is to not validate the file, the method flows from the validate file decision  740  to the next step  760  to deliver file to requesting client system. This delivery function may be accomplished via any number of methods including Internet file transfer, email, or web page display. 
   The current invention provides reporting for a single monitored system per query. A requesting client system could request reports for a plurality of monitored systems each using the same or different operating system software. It is also foreseeable that the requesting client system could request a report of monitored systems located at a particular location. 
   While the present invention is not limited to any particular programming language or system monitoring application, it has been particularly implemented with TeamQuest application, Open View Performance Agent (OVPA) software, and Perl programming language with an Oracle database.