Abstract:
The invention provides a method and system for monitoring status in a relatively continuous consistent and intelligent manner. A status monitor receives monitoring data, and adaptively and dynamically associates those known combinations with assessments of the monitored devices, systems, or networks. From an initial set of selected knowledge (or even no knowledge at all), the status monitor develops a database of information regarding anomalous conditions, and measurements of likely causes and faults and learns which of those anomalous conditions require response. Appropriate responses can include informing a system operator, taking remedial action, and altering or terminating the monitored device, systems or network.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS  
       [0001]    This application is a continuation of application Ser. No. 09/307,089, filed May 7, 1999 (now allowed). This application is also related to PCT application Serial Number PCT/US00/12491 filed May 5, 2000. 
     
    
     
       BACKGROUND OF THE INVENTION  
         [0002]    1. Field of the Invention  
           [0003]    The invention relates to status monitors, including those for adaptively monitoring status information from multiple sources such as file servers and system administrators.  
           [0004]    2. Related Art  
           [0005]    Monitoring devices collect and present monitoring information, such as information regarding operation of a device, system, or network. The monitoring information is sometimes used to determine or respond to faults in the monitored devices, systems, or networks.  
           [0006]    One problem in the known art is that of recognizing and responding to anomalous behavior on the part of the monitored devices, systems, or networks. Because the monitored devices, systems, or networks can be complex, it is difficult or impossible to anticipate all, or even most, of the possible ways in which anomalous behavior can occur. Even if it were possible to anticipate anomalous behaviors, it is difficult or impossible to anticipate how those anomalous behaviors would manifest themselves in the available data.  
           [0007]    A first known method is to present a visual display of status information, and to rely on a human operator to determine whether the behavior of the monitored devices, systems, or networks are anomalous, and if so, to determine what that anomalous behavior indicates about possible errors or faults in operation. While this method can achieve the purpose of recognizing and responding to anomalous behaviors, it has the drawback of requiring constant and consistent attention of a human being relatively skilled in the operation of the monitored devices, systems, or networks. This drawback is exacerbated when there are a relatively large number of monitored devices, systems, or networks or when the monitored devices, systems or networks are complex. Moreover, this known method is also subject to the drawback that it is limited to those aspects of behavior that are predetermined for presentation to the human being.  
           [0008]    A second known method is to present information, as in the first method, to an expert system or other software designed for recognizing and responding to anomalous behavior. While this known method has the advantage of not requiring the constant and consistent attention of a human being, it suffers from the drawback that it is limited by the skill predetermined for inclusion in the expert system or other software. As with the first known method, this method is also subject to the drawback that it is limited to those aspects of behavior that are predetermined for presentation (to the expert system). Moreover, this method is also subject to the drawback that it can erroneously determine and respond to anomalous conditions that are not in fact faults, without substantial opportunity to learn.  
           [0009]    Accordingly, it would be desirable to provide a method and system for monitoring status in a relatively continuous, consistent, and intelligent manner. This method is achieved in an embodiment of the invention in which a status monitor receives monitoring data, adaptively and dynamically builds a database of known combinations of monitoring data, and adaptively and dynamically associates those known combinations with assessments of the monitored devices, systems, or networks. From an initial set of selected knowledge that is limited (even limited to no knowledge at all), the status monitor can learn those anomalous conditions that require response and what responses are appropriate.  
         SUMMARY OF THE INVENTION  
         [0010]    The invention provides a method and system for monitoring status in a relatively continuous, consistent, and intelligent manner. A status monitor receives monitoring data, adaptively and dynamically builds a database of known combinations of monitoring data, and adaptively and dynamically associates those known combinations with assessments of the monitored devices, systems, or networks. From an initial set of selected knowledge that is limited (even limited to no knowledge at all), the status monitor learns those anomalous conditions that require response and what responses are appropriate. The status monitor develops a database of information regarding distinguishable conditions, and measurements of the likely causes or effects of recognizable errors or faults. When an anomalous pattern is recognized, the status monitor, responsive to the anomalous pattern, diagnoses and corrects, or informs a human operator regarding, the monitored devices, systems, or network.  
           [0011]    In a preferred embodiment, the monitoring data includes a set of data streams each possibly having a different format, and each selectively interpreted so as to present information to the status monitor in a format usable by the status monitor. New data streams and formats can be dynamically added or altered. Appropriate responses can include informing human beings; taking remedial action for the monitored devices, systems, or networks; or altering or terminating the operation of the monitored devices, systems, or networks. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0012]    [0012]FIG. 1 shows a block diagram of a system including a status monitor for adaptively monitoring status information from multiple sources.  
         [0013]    [0013]FIG. 2 shows a block diagram of a status monitor for adaptively monitoring status information from multiple sources.  
         [0014]    [0014]FIG. 3 shows a process flow diagram of a method of operation for a status monitor for adaptively monitoring status information from multiple sources. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0015]    In the following description, a preferred embodiment of the invention is described with regard to preferred process steps and data structures. However, those skilled in the art would recognize, after perusal of this application, that embodiments of the invention may be implemented using one or more general purpose processors (or special purpose processors adapted to the particular process steps and data structures) operating under program control, and that implementation of the preferred process steps and data structures described herein using such equipment would not require undue experimentation or further invention.  
         [0016]    System Elements  
         [0017]    [0017]FIG. 1 shows a block diagram of a system including a status monitor for adaptively monitoring status information from multiple sources.  
         [0018]    A system  1 x 100  includes a set of data sources  1 x 10 , a set of corresponding data interfaces  1 x 20 , a status monitor  1 x 30 , and a status recipient  1 x 40 .  
         [0019]    The data sources  1 x 10  can include differing types of data sources  1 x 10  for which monitoring is appropriate, including a file server  1 x 11  or other type of server, a system administrator  1 x 12  or other operator, an HVAV controller  1 x 13 , a refinery; controller  1 x 14 , a software element in a computer system  1 x 15  or other diagnostic sources  1 x 16 . The differing types of data sources  1 x 10  can generate data in differing formats. For example, the file server  1 x 11  or other type of server can generate data in SNMP format; the system administrator  1 x 12  or other operator can generate data using an email program, and the other diagnostic sources  1 x 16  can generate data in other formats. SNMP format and email formats are known in the art of network communication.  
         [0020]    In a preferred embodiment, the data sources  1 x 10  use a communication network to send information to the data interfaces  1 x 20 . The communication network can include any known apparatus and methods for sending information from the data sources  1 x 10  to the data interfaces  1 x 20 . Those skilled in the art would recognize, after perusal of this application, that any such apparatus and methods would be within the scope and spirit of the invention. In a preferred embodiment, the communication network includes a LAN (local area network), WAN (wide area network), an internet, intranet, extranet, VPN (virtual private network), or some combination thereof.  
         [0021]    The data interfaces  1 x 20  each correspond to one of the data sources  1 x 10 . Each data interface  1 x 20  receives data from its corresponding data source  1 x 10 , and forwards that data to the status monitor  1 x 30  in a format usable by the status monitor  1 x 30 . Additional data interfaces can be added, if desired. In a preferred embodiment, each data interface  1 x 20  is disposed for recognizing and parsing the format of its corresponding data source  1 x 10 , and for generating messages in a single format usable by the status monitor  1 x 30 . Moreover, data interfaces may completely encapsulate all knowledge of the format and the language of the data source.  
         [0022]    The status monitor  1 x 30  includes a processor, program and data memory, and can include mass storage. Construction and use of devices including processors, program and data memory, and mass storage are known in the art of computer programming.  
         [0023]    The status monitor  1 x 30  need not be a separate physical device. It can be embodied in a software element in a device also used for other purposes, and can be physically co-located with the status recipient  1 x 40 . In a preferred embodiment, software elements of the status monitor  1 x 30  operate as an application program under control of an operating system on the processor with program and data memory. The application program can include software derived from source code compiled or interpreted from a Perl script or one or more programming languages such as the C++ programming language. Both the Perl scripting language and the C++ programming language are known in the art of computer programming.  
         [0024]    The status monitor  1 x 30  receives messages from the data interfaces  1 x 20 , and is disposed for processing those messages to recognize fault conditions and to determine the nature of the fault with which the fault conditions are correlated.  
         [0025]    As used herein, the term “fault” and the phrase “fault condition” refer to conditions of interest to operators of the system  1 x 10 , such as human operators or control programs. There is no particular requirement in the invention that a fault or fault condition refer to an actual error or failure in operation of the system  1 x 00  or one of its parts.  
         [0026]    When recognizing fault conditions and determining the nature of the correlated faults, the status monitor  1 x 30  sends a message to the status recipient  1 x 40  indicating the fault conditions and the faults.  
         [0027]    The status recipient  1 x 40  can include an operator of the system  1 x 10 , such as a human operator or a control program, a log file, or a communication link for distributing messages regarding the fault conditions and the faults.  
         [0028]    The status recipient  1 x 40  can include a workstation for use by the operator of the system  1 x 10 , logically remote from the device  1 x 11 , which can be physically relatively local or physically relatively remote. In a preferred embodiment, the system can include more than one such device  1 x 11  being monitored, and more than one such status recipient  1 x 40  disposed for receiving monitoring information.  
         [0029]    the workstation for the status recipient can include a monitoring and analysis program, including a graphical user interface and a set of commands for analyzing and presenting data.  
         [0030]    Status Monitor Elements  
         [0031]    [0031]FIG. 2 shows a block diagram of a status monitor for adaptively monitoring status information from multiple sources.  
         [0032]    The status monitor  1 x 30  includes multiple data input ports  2 x 10 , each of which is associated with a corresponding data interface  1 x 20  and a corresponding filter  211 . Each input port  2 x 10  receives messages indicating values for raw data  2 x 01  from its corresponding data interface  1 x 20 . Each input port  2 x 10  processes the raw data  2 x 01  to provide regularized data  2 x 02 , and sends the regularized data  2 x 02  to a corresponding comparison element  2 x 20 .  
         [0033]    As used herein, the phrase “regularized data”  2 x 02  refers only to a form of the raw data  2 x 01  after the input port  2 x 10  has processed it. There is no particular requirement that the regularized data  2 x 02  must follow some known distribution, although it is expected that many items of raw data  2 x 01  will have known random distributions such as a normal, binomial, poisson, or equiprobable distributions.  
         [0034]    In a preferred embodiment, the input ports  2 x 10  may regularize the raw data  2 x 01  by determining a trend. The input ports  2 x 10  can determine a trend using any one of a number of known techniques, including for example relative time change in the raw data  2 x 01 . In alternative embodiments, the input ports  2 x 10  can regularize the raw data  2 x 01  by determining other statistical measures, such as confidence values or correlation values.  
         [0035]    The comparison elements  2 x 20  each receive the regularized data  2 x 02 , and determine if the received values for the regularized data  2 x 02  are outside of a selected limit range, designated by a selected lower limit value  2 x 03  and a selected upper limit value  2 x 04 . Each comparison elements  2 x 20  provides a corresponding out-of-limit indicator bit  2 x 05  indicating whether or not the regularized data  2 x 02  is within the selected limit range.  
         [0036]    The indicator bits  2 x 05  from the comparison elements  2 x 20  are collected into an indicator bit vector  2 x 06 . The indicator bit vector  2 x 06  is coupled to a bit vector comparator  2 x 30 .  
         [0037]    The bit vector comparator  2 x 30  includes a bit vector memory  2 x 31 , which itself includes a set of selected bit vectors  2 x 06 , each associated with a fault descriptor  2 x 07 . The fault descriptor  2 x 07  indicates information about a fault associated with its corresponding bit vector  2 x 06 .  
         [0038]    In a preferred embodiment, the number of bit vectors  2 x 06  in the bit vector memory  2 x 31  can be selected by a system administrator  1 x 12  or other operator, and is preferably at least about  32 .  
         [0039]    In a preferred embodiment, the fault descriptor  2 x 07  includes a pointer to a data structure  2 x 08  that includes further information about the fault. This further information can include one or more of, or some combination of, the following:  
         [0040]    an assessment of the fault, such as a numeric degree of seriousness;  
         [0041]    a description of the fault, such as a title or text description;  
         [0042]    or  
         [0043]    a set of actions to be taken in response to the fault, such as a set of individuals to inform about the fault (whether by email, pager, or other technique), a set of functions for the system  100  that should be suspended in response to the fault, or other appropriate actions.  
         [0044]    The bit vector comparator  2 x 30  receives the indicator bit vector  2 x 06  and compares it against the selected bit vectors  2 x 06  in the bit vector memory  2 x 31 . The bit vector comparator  2 x 30  selects one or more matching selected bit vectors  2 x 06  and provides, in response to associated fault descriptors  2 x 07 , one or more outputs.  
         [0045]    In a preferred embodiment, the bit vector comparator  2 x 30  selects the “best match” among the selected bit vectors  2 x 06  in the bit vector memory  2 x 31  for the indicator bit vector  2 x 06 , and provides one output in response to the corresponding fault descriptor  2 x 07 . The bit vector comparator  2 x 30  sends the indicator bit vector  2 x 06  and the corresponding fault descriptor  2 x 07  to the status recipient  1 x 40 , and takes other appropriate action as indicated by the fault descriptor  2 x 07 .  
         [0046]    In a preferred embodiment, at least one (and possibly several) of the selected bit vectors  2 x 06  in the bit vector memory  2 x 31  has an associated fault descriptor  2 x 07  that describes a “normal” or non-fault condition. Thus, the bit vector comparator  2 x 30  can select, in response to the input bit vector  2 x 06 , an associated “normal” fault descriptor  2 x 07 . Thus, some anomalous bit vectors  2 x 06  can be associated with known lack of error.  
         [0047]    In a preferred embodiment, the “normal” fault descriptor  2 x 07  can be selected to indicate that all is well with the system  1 x 00  and that no action is required. Moreover, the “normal” fault descriptor  2 x 07  (and other fault descriptor  2 x 07  deemed insufficiently serious) can be set so that no action is taken in response thereto, including sending no message to the status recipient  1 x 40 .  
         [0048]    In a preferred embodiment, the selected techniques or values used by the system  1 x 00  can be included in a configuration database  1 x 32  associated with the status monitor  1 x 30  and alterable by the system administrator  1 x 12  or other operator. The configuration database  1 x 32  can include one or more of, or any combination of, any of the following:  
         [0049]    The technique(s) used by each data interface  1 x 20  to reformat the data from the data sources  1 x 10 . For example, data interfaces  1 x 20  disposed for receiving SNMP messages can be configured to recognize and extract data from those messages. Data interfaces  1 x 20  disposed for receiving email or other text can be configured to recognize text in response to selected keywords and to asses that text in response thereto.  
         [0050]    The technique(s) used by each input port  2 x 10  to determine trends.  
         [0051]    Known associations between selected bit vector patterns and selected faults or other events.  
         [0052]    In a preferred embodiment, the configuration database  1 x 32  can include a set of possible anomalies that might be associated with the functional status of the device  1 x 11  and an set of associations between those anomalies and a set of selected fault conditions.  
         [0053]    Method of Operation  
         [0054]    [0054]FIG. 3 shows a process flow diagram of a method of operation for a status monitor for adaptively monitoring status information from multiple sources.  
         [0055]    A method  3 x 00  is performed by the system  1 x 00  operating in conjunction, including the data sources  1 x 10 , data interfaces  1 x 20 , and the status monitor  1 x 30 .  
         [0056]    At a flow point  3 x 10 , the system  1 x 00  is in operation and the method  3 x 00  is being continuously performed.  
         [0057]    At a step  3 x 11 , the data sources  1 x 10  provide data to the data interfaces  1 x 20 . In a preferred embodiment, the data sources  1 x 10  provide data by sending messages to the data interfaces  1 x 20  in known formats, as described above.  
         [0058]    At a step  3 x 12 , each data interface  1 x 20  can receive data from its corresponding data source  1 x 10 . For each data interface  1 x 20  that receives data, the data interface  1 x 20  (a) receives the data, (b) reformats the data if necessary into a the format usable by the status monitor  1 x 30 , and (c) sends the reformatted data to the status monitor  1 x 30  in that usable format.  
         [0059]    At a step  3 x 13 , the input ports  2 x 10  of the status monitor  1 x 30  can each receive a set of values for raw data  2 x 01 . For each input port  2 x 10  that receives raw data  2 x 01 , the input port  2 x 10  (a) receives the raw data  2 x 01 , (b) processes the raw data  2 x 01  to provide regularized data  2 x 02 , and (c) sends the regularized data  2 x 02  to its corresponding comparison element  2 x 20  in the status monitor  1 x 30 .  
         [0060]    As part of this step, each input port  2 x 10  that receives raw data  2 x 01  can determine a trend for that raw data  2 x 01 , as described above.  
         [0061]    At a step  3 x 14 , the comparison elements  2 x 20  in the status monitor  1 x 30  can each receive a set of values for the regularized data  2 x 02 . For each comparison element  2 x 20  that receives regularized data  2 x 02 , the comparison element  2 x 20  (a) receives the regularized data  2 x 02 , and (b) processes the regularized data  2 x 02  to determine if the received values for the regularized data  2 x 02  are outside of a selected limit range, as described above. In response to this processing, the comparison element  2 x 20  provides a corresponding out-of-limit indicator bit  2 x 05  indicating whether or not the regularized data  2 x 02  is within the selected limit range.  
         [0062]    At a step  3 x 15 , the indicator bits  2 x 05  from the comparison elements  2 x 20  are collected into an indicator bit vector  2 x 06 . The indicator bit vector  2 x 06  is coupled to a bit vector comparator  2 x 30 .  
         [0063]    At a step  3 x 16 , the bit vector comparator  2 x 30  receives the indicator bit vector  2 x 06  and compares it against the selected bit vectors  2 x 06  in the bit vector memory  2 x 31 .  
         [0064]    At a step  3 x 17 , in response to the comparison in the previous step, the bit vector comparator  2 x 30  selects one or more matching selected bit vectors  2 x 06  and provides, in response to fault descriptors  2 x 07  associated with those matching selected bit vectors  2 x 06 , one or more outputs. In a preferred embodiment, the bit vector comparator  2 x 30  selects one “best match” among the selected bit vectors  2 x 06  in the bit vector memory  2 x 31  for the indicator bit vector  2 x 06 , and provides one output in response to the corresponding fault descriptor  2 x 07 , as described above.  
         [0065]    At a step  3 x 18 , in response to the fault descriptors  2 x 07  determined in the previous step, the bit vector comparator  2 x 30  sends the indicator bit vector  2 x 06  and the corresponding fault descriptor  2 x 07  to the status recipient  1 x 40 , and takes other appropriate action as indicated by the fault descriptor  2 x 07 .  
         [0066]    The method  3 x 00  operates continuously, and so returns to the flow point  3 x 10 .  
         [0067]    In a preferred embodiment, the system  1 x 00  starts with substantially no information in the bit vector memory  2 x 31 , and so spends an amount of time in a learning phase. During the learning phase, the status monitor  1 x 30  determines that indicator bit vectors  2 x 06  that do not well match any of the selected bit vectors  2 x 06  in the bit vector memory  2 x 31  are new bit vectors  2 x 06 , and adds those new bit vectors  2 x 06  to the bit vector memory  2 x 31 .  
         [0068]    When recognizing a new bit vector  2 x 06 , the status monitor  1 x 30  can send a message to the status recipient  1 x 40  requesting information to associate in the fault descriptor  2 x 07  for that new bit vector  2 x 06 .  
         [0069]    When recognizing a new bit vector  2 x 06 , the status monitor  1 x 30  can also adapatively respond to other information available at the time the new bit vector  2 x 06  is received, including one or more of, or any combination of, any of the following:  
         [0070]    Selected patterns can be associated with keywords or other aspects (such as priority) of email received from selected users.  
         [0071]    Selected anomalous patterns can be associated with normal activity. For example, period of low network activity in the absence of other factors may be associated with off-peak hours.  
         [0072]    Selected anomalous patterns can be associated with specific defects based upon past history.  
         [0073]    or  
         [0074]    Selected anomalous patterns can be associated with preset data that is included in the configuration database  1 x 32 .  
         [0075]    Alternative Embodiments  
         [0076]    Although preferred embodiments are disclosed herein, many variations are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those skilled in the art after perusal of this application.