US 20050027727 A1
A system and method is provided for gathering and aggregating operational metrics (e.g., performance metrics, process events, health monitor state, server state) for a plurality of members as a single entity and for a plurality of entities as a singular entity. The system and method provides for operational metrics of members and entities to be aggregated and retrieved as a single result set, such that entity wide operational metrics can be acquired, monitored and displayed as a single entity.
1. A method for gathering and aggregating operational metrics of a plurality of members configured as an entity, comprising the steps of:
querying an operational metric from the plurality of members; and
aggregating the operational metric from the plurality of members to form a unified result set.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
8. The method of
9. The method of
10. The method of
11. The method of
12. The method of
13. The method of
14. A computer-readable medium having computer-executable instructions for performing the steps of
15. An electrical signal representation of computer-executable operations for performing the steps of
16. The method of
17. The method of
18. The method of
19. The method of
20. The method of
21. The method of
22. The method of
23. A method for gathering and aggregating operational metrics of a plurality of members configured as an entity to determine a status of the entity, comprising:
monitoring member specific operational metrics from the plurality of members;
logging the member specific operational metrics to a data store;
querying the data store to retrieve the member specific operational metrics from the data store;
aggregating the member specific operational metrics to form a composite result set; and
determining the status of the entity by applying an entity based rule set to the composite result set.
24. The method of
25. The method of
26. The method of
27. The method of
28. The method of
29. The method of
30. The method of
31. The method of
32. A computer-readable medium having computer-executable instructions for performing the method of
33. An electrical signal representation of computer-executable operations for performing the method of
This application is a divisional of U.S. patent application Ser. No. 09/710,172, entitled “DISTRIBUTED DATA GATHERING AND AGGREGATION AGENT”, filed on Nov. 10, 2000. This application is also related to co-pending U.S. patent application Ser. No. ______ (Atty. Dkt. No. MS154756.02/MSFTP125USA) entitled “DISTRIBUTED DATA GATHERING AND AGGREGATION AGENT” filed on Aug. 23, 2004, and co-pending U.S. patent application Ser. ______ No. (Atty. Dkt. No. MS154756.03/MSFTP125USB) entitled “DISTRIBUTED DATA GATHERING AND AGGREGATION AGENT” filed on Aug. 23, 2004, and co-pending U.S. patent application Ser. No. ______ (Atty. Dkt. No. MS154756.05/MSFTP125USD) entitled “DISTRIBUTED DATA GATHERING AND AGGREGATION AGENT” filed on Aug. 23, 2004. The entireties of the above-noted applications are incorporated herein by reference.
The present invention relates generally to computer systems, and more particularly to a system and method for gathering and aggregating operational metrics of a plurality of computers cooperating as an entity wherein the entity may be interfaced collectively as a whole and/or individually. Additionally, the system and method may be employed to gather and aggregate operational metrics of a plurality of entities cooperating as a higher entity where a parent entity may be interfaced directly or as part of an even higher collection of parent entities. The gathering of operational metrics is hierarchical with no predefined limits.
With the advent of Internet applications, computing system requirements and demands have increased dramatically. Many businesses, for example, have made important investments relating to Internet technology to support growing electronic businesses such as E-Commerce. Since companies are relying on an ever increasing amount of network commerce to support their businesses, computing systems generally have become more complex in order to substantially ensure that servers providing network services never fail. Consequently, system reliability is an important aspect to the modern business model.
A first approach for providing powerful and reliable services may be associated with a large multiprocessor system (e.g., mainframe) for managing a server, for example. Since more than one processor may be involved within a large system, services may continue even if one of the plurality of processors fail. Unfortunately, these large systems may be extraordinarily expensive and may be available to only the largest of corporations. A second approach for providing services may involve employing a plurality of lesser expensive systems (e.g., off the shelf PC) individually configured as an array to support the desired service. Although these systems may provide a more economical hardware solution, system management and administration of individual servers is generally more complex and time consuming.
Currently, management of a plurality of servers is a time intensive and problematic endeavor. For example, managing server content (e.g., software, configuration, data files, components, etc.) requires administrators to explicitly distribute (e.g., manually and/or through custom script files) new or updated content and/or configurations (e.g., web server configuration, network settings, etc.) across the servers. If a server's content becomes corrupted, an administrator often has no automatic means of correcting the problem. Furthermore, configuration, load-balance adjusting/load balance tool selection, and monitoring generally must be achieved via separate applications. Thus, management of the entity (e.g., plurality of computers acting collectively) as a whole generally requires individual configuration of loosely coupled servers whereby errors and time expended are increased.
Presently, there is not a straightforward and efficient system and/or process for providing system wide operational metric data of the collection of servers. Additionally, there is no system and/or process for providing system wide operational metric data of a collection of arrays of servers. Some applications may exist that provide operational metrics of an individual server, however, these applications generally do not provide operational metrics across the logical collection of loosely coupled servers. For example, many times it is important to view information from the collection of servers to determine relevant system-wide performance. Thus, getting a quick response view of pertinent operational metrics (e.g., performance, status, health, events) associated with the plurality of servers may be problematic, however, since each server generally must be searched independently. Downloading all operational metric information from each individual server would overwhelm the network and be extremely cumbersome to an administrator to review all of the operational metric information to find problems or determine a state of the array. Furthermore, the complexity would be substantially increased for a collection of arrays.
The present invention relates to a system and method for gathering and aggregating operational metrics (e.g., performance metrics, system events, health, server state) of a plurality of entities acting as a single entity. For example, the entities may include a plurality of members (e.g., computers, servers, clusters) collectively cooperating as a whole. In accordance with the present invention, an interface may be provided wherein a consistent and unified presentation of metric information of a plurality of the entities as a whole may be obtained from any of the members associated with the entity. The system and method provides for operational metrics of members to be gathered and aggregated to provide a single result set for the entity as a whole, such that entity wide performance can be obtained from a single source or requestor.
In one aspect of the invention, the operational metric data is logged to a data store according to operational metric types. The data can be aggregated across time and then stored to the data store. The data can then be accessed by a gathering and aggregation system for aggregating the data into a single result set across members. Each operational metric type can be provided with an aggregation component adapted to transform and aggregate metric data based on the specific operational metric type. For example, if performance metrics information has been requested for the entity as a whole, a performance aggregation component matches up data point values with respect to time for each member and provides a single result set of aggregated data values to the requestor. The data can be aggregated by performing mathematical operations on each time data point for a particular metric type for each entity that provides this performance data. However, if event metrics information is requested for the entity as a whole, an event coalescing component coalesces event data from each member and provides a single result set to the requester. Each event is assigned a unique event identifier (e.g., GUID), which uniquely identifies the event. The unique event identifier allows for paging functionality, such that reduced manageable blocks or portions of event data can be provided to the requestor. It is to be appreciated that multiple aggregation components can be plugged into the aggregation system for aggregating different types of metric data with respect to the operation of the entity as a whole.
The following description and the annexed drawings set forth in detail certain illustrative aspects of the invention. These aspects are indicative, however, of but a few of the various ways in which the principles of the invention may be employed and the present invention is intended to include all such aspects and their equivalents. Other advantages and novel features of the invention will become apparent from the following detailed description of the invention when considered in conjunction with the drawings.
The present invention is now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. The present invention is described with reference to a system and method for gathering and/or aggregating operational metrics from a plurality of members forming an entity. The members of the entity monitor the operational metrics and log this data locally to a data store. An interface can then request operational metrics data from the members via a gathering and aggregation system. The gathering and aggregation system requests and receives operational metrics data from the members based on a requested time period, and in some cases, a particular time resolution and an operational metric. The request can be either for a single member or from all members of the entity. The gathering and aggregation system will then aggregate and format operational metric data for a particular operational metric based on the requested time period and resolution. If the request is for an operational metric for the entity as a whole, the gathering and aggregation system will aggregate or coalesce the member data to provide an overall operational metric data set for the entity. Data that is aggregated refers to data that is manipulated such that a reduced data set or result is provided. Data that is coalesced refers to data that is not manipulated to the extent that the data set or result is reduced. The aggregated or coalesced formatted operational metric data set can then be communicated to an interface, such as a user interface for displaying the data set. Alternatively, the data set can be accessed by a local or remote process, an external user interface, an external consumer or another member or entity not part of entity from which the data set refers. The gathering and aggregation system can include a plurality of pluggable aggregation components dedicated to aggregating or coalescing a particular operational metric based on the data type of the metric.
In accordance with the present invention, an operational gathering and aggregation system is provided that greatly facilitates management and administration of an entity. The operation gathering and aggregation system interface substantially automates system information retrieval by enabling an application to retrieve the operational metric data of the entity from any of a plurality of systems operatively coupled to the entity. A consistent interface is therefore provided wherein the operation metric data of the entity may be retrieved as if the entity were a singular machine—thereby providing a substantial improvement over conventional systems that may require an administrator to individually retrieve metric data from each machine comprising the entity. Thus, the present invention saves time and administration costs associated with conventional systems. Moreover, system troubleshooting is improved since entity members may be considered as a collective whole (e.g., retrieving system wide performance) and/or individual members may be identified and operated upon.
Although the present example will be discussed with reference to a gathering and aggregation system, it is to be appreciated that information and/or data may be aggregated or coalesced based on the operational metric being gathered. Referring initially to
Other sources that may not be part of the entity 12, may also be coupled to the network 14 for retrieving gathered and aggregated data from the entity 12 or for gathering and aggregating raw metric data from the entity 12 by employing its own gathering and aggregation system. For example, an external consumer of data 26 can connect to one of the computer systems 22 through the network 14 to retrieve raw or aggregated metric data or connect to one of the interfaces 16 a through 16 d to retrieve raw or aggregated metric data. Additionally, a separate user interface 27 can connect to one of the computer systems 22 through the network 14 to retrieve raw or aggregated metric data or connect to one of the interfaces 16 a through 16 d to retrieve raw or aggregated metric data. Furthermore, a parent entity 28, parallel entities 29 and/or a child entity 30 can connect to any member of the entity or to the member itself for retrieving and passing metric data between entities for gathering and/or aggregating. In order to request and provide specific gathered and aggregated operation information of the entity 12, a plurality of interfaces (e.g., computer monitor) 16 a through 16 d may provide output, and an input device (e.g., mouse, keyboard) 24 a through 24 d may provide input requests to the operation gathering and aggregation system 18 a through 18 d.
As depicted by the system 10, the interface 16 enables an application or process to retrieve, display or monitor the entity 12 from each member 22 a-22 d and/or from non-members such as any of the components 26-30. The interface 16 provides a consistent interface for an application or process to measure the operational metrics of the entity 12 as if it was a singular machine. Consequently, the user does not have to administer (e.g., gain access to each machine) and configure (e.g., download new content/software) each machine individually. Thus, time is saved and errors are mitigated. It is noted that the interface 16 generally does not have to run on each computer in the system 10. As will be described in more detail below, full entity operation monitoring may be achieved by interfacing to a single member, for example.
The interface 16 may be served with information provided from each member 22 a through 22 d employing any of the operation gathering and aggregation systems 18 a through 18 d. This may be achieved by enabling each member to distribute information to the entity 12. Therefore, the interface 16 may provide aggregated information of the entity as a whole through the operation gathering and aggregation system 18—in contrast to conventional systems wherein information of a member may be received and displayed only at the individual member employing an operation monitoring system 20 a-20 d. For example, computer systems 22 a-22 d processor performance may be displayed as an aggregation of the output of each member of the entity 12. Any of the interfaces 16 a through 16 d may be provided with a similar consistent result set. It is noted that the members 22 a through 22 d may also be entities. For example, some members could also be a collection of members represented by an entity. Thus, the entity 12 may include members that are entities in their own right.
Alternatively, the interface 16 is provided with individual operational metrics from any of the operation gathering and aggregation systems 18 a through 18 d by requesting this information from that particular operation gathering and aggregation system. Furthermore, entity configurations may be modified from any of the interfaces 16 by enabling the user to provide input to the interface and thereby distribute resultant modifications throughout the entity 12. This may be achieved for example, by providing the input to a single member wherein the single member may then distribute the modified configuration throughout the entity 12. It is to be appreciated that other distribution systems may be provided. For example, rather than have entity operation information centrally distributed and aggregated at the single member, individual members 22 a-22 d may share a master file (e.g., XML) describing the configuration information of each member.
As illustrated in
As an example of aggregation, the operation gathering and aggregation system 34 may acquire events from the data stores 44 (e.g., CPU utilization) and perform an average of the member data relating to CPU utilization and thus provide an average entity CPU utilization to an interface 32. Thus, entity administration, monitoring and troubleshooting is improved over conventional systems by providing a single point of access for an application to administer and monitor entity metrics. It is to be appreciated that events 48 may also be characterized as general purpose interrupts that may be triggered at the occurrence of a predetermined condition. Thus, it is understood that a UNIX and/or other operating system may be similarly configured, for example.
Failure management may be facilitated by including a failure management system 36 (e.g., Windows Health Monitor) which provides the ability to monitor event sources such as system resources (disk, CPU), applications services, performance counters, set rules on the sources (e.g., CPU>90% for 2 minutes), and take actions when the rule thresholds are triggered. For example, if the above example rule “CPU>90% for 2 minutes” were exceeded, an application may be notified which could then send an e-mail notice and/or a script file may be generated. Rules provide a system to define metrics that determine whether a member/entity is healthy (status=ok), whether problems may occur soon (status=warning), and/or whether there is a problem (status=critical), for example. Although the failure management system 36 is illustrated as residing on the metric gathering and aggregation system 34, a failure management system may reside on each member 46.
The system monitor component 66 or some component employed by the system monitor component 66 can then dynamically aggregate or collapse the counter performance data values based on the predefined time period to higher time periods (e.g., 10 seconds, 1 minute, 15 minutes, 1 hour, 1 day) as data time points are increased, so that data is provided for larger periods of time and higher time resolutions (e.g., aggregate or collapse across time). Various mathematical methodologies may be employed to perform such aggregation. For example, for an aggregation from ten seconds to one minute, the performance data values would include six points. The data values of these six points could be aggregated to a minute by taking the average, the minimum, the maximum, the last, the weighted average or some other value of the data values of these six points for supplying the one minute data value.
In the case of member events, the system monitor 66 or a component employed by the system monitor 66 can capture these events when they are generated and log these events to the data store 64. Additionally, health or member status based on predefined rules may be logged to the data store 64 by the system monitor 66 or queried directly by the operation gathering and aggregation member 58. It is to be appreciated that any data type relating to the operation metrics of the aggregator 50 and each member 60 may be logged to the corresponding data store 64 and/or queried directly by the aggregator 50.
An interface 56 can provide a request to the operation gathering and aggregation system 58 for operational data for a particular operation metric over a particular time period based on a single member or based on aggregation or coalescing of the operational metric over the entire entity. The operation gathering and aggregation system 58 requests this information from the data stores 64 through a query component 49. The query component 49 may include error handling. For example, if a member is not available results are returned from the other members and aggregated appropriately, while an error is returned for the unavailable member, which is not utilized to provide the aggregated results. It is to be appreciated that component(s) may reside between the operation aggregation system 58 and the query component 49 for setting up communication links, accessing data and/or transforming data. The operation metric data is provided to the operation gathering and aggregation system 58 for the particular operation metric that is requested. The operation gathering and aggregation system 58 collapses the data of a given operation metric to fit within a particular time period and resolution to be returned to the interface 56 based on the request. If the operation data is to be returned for the entire entity, the operation aggregation system 58 performs one of an aggregation or coalescing of the data based on the particular operation metric.
For example, for performance metrics the performance data values are aggregated at each data time point to provide a single result set of aggregated data time points for a specified time period and resolution. Again various mathematical methodologies may be employed to perform aggregation with respect to performance data values. For example, for aggregation of four members, the performance data values for each time data point would include four points. The data values of these four points could be aggregated by taking the average, the minimum, the maximum, the last, the weighted average or some other value of the data values of these four points for supplying a single aggregated data value for the entity. For event data, each event will be coalesced into a single event result set over a specified time period including reference to the particular member that the event had occurred. A filter component can be employed to limit the event types to be retrieved by the operation and gathering system 58 and returned to the requester. For server status, each server's status would be determined and a single status would be returned based on a rule set. For example, if nine servers were operational and one server was not, the entity status would be good. However, if any additional servers stopped operating, this would cause the system to be return an entity status of critical. Another type of operation is the health of the members. In this situation, the data is hierarchical. This type of data would be aggregated over different levels of data to return a composite result set. The health of the entity can then be determined on an entity based rule set employing the composite result set. Alternatively, metrics can be queried for each member and the metrics aggregated or coalesced. An aggregated member based rule set may then be employed to determine the health of the entity.
It is to be appreciated that not all members will return operation metric data or have operation metric data for a particular point in time. In this situation, the gathering and aggregation system disregards the lack of operation metric data and determines an appropriate aggregated operation metric data on valid data that was returned by the members. Additionally, when more data points are returned to the gathering and aggregation system than requested by the interface, the gathering and aggregation system will interpolate down the data points by calculating the width of the time slice represented by each data point (end time-start time/data points requested), grouping data points from the result sets and then taking an average or sum as appropriate.
It is to be appreciated that the type of data collected by the performance aggregation component 70, the entity status aggregation component 76, the health aggregation component 74 and any additional aggregation components 78, alternatively can be collapsed into events at each member and collected by the event aggregation component 72. Additionally, data collected and aggregated by the performance aggregation component 70, the entity status aggregation component 76, the health aggregation component 74 and any additional aggregation components 78 can be collapsed into events for the entity by the event aggregation component 72. For example, if CPU utilization reaches over 90% for the entire entity (e.g., based on collected performance data), an event can be fired providing information of this condition, which can be coalesced into other events by the event aggregation component 72. Furthermore, if memory utilization of N number of systems remains below a certain level for a given period of time (e.g., based on a rule set of the health monitor component 74), an event can be fired providing this information, which can be coalesced into other events by the event aggregation component 72. It is to be appreciated that substantially any metric type can be collapsed into an event at the member level and/or the entity level.
Referring again to
The metric aggregation system 82 will receive a request from a requestor (e.g., an interface or a source) to receive event information over a certain time period for either a particular member or for the entity as a whole. The metric aggregation systems 82 can then access or query event information relating to the time period to be received for a single member or over all members. The metric aggregation system 82 includes an event entity coalescing component 124 adapted to coalesce event data into a single event result set for a particular time period requested by the interface. A filter component 126 can be employed to limit the event types to be retrieved by the metric aggregation systems 82. The GUID represents a bookmark into the coalesced unified result set. Therefore, the interface and a paging component 128 can maintain a record of the first and last event of the received coalesced unified result set. The GUID can then be employed to retrieve subsequent and previous portions of the coalesced result set acting as a virtual bookmark into the result set. To retrieve details on a single event the interface can make a second query specifying a specific event GUID which can identify the source for which the event occurred. The event entity coalescing component 124 will retrieve information from the events message table for that specific event GUID and member and return the information to the requestor.
In order to provide a context for the various aspects of the invention,
With reference to
The system bus may be any of several types of bus structure including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of conventional bus architectures such as PCI, VESA, Microchannel, ISA and EISA, to name a few. The system memory includes read only memory (ROM) 424 and random access memory (RAM) 425. A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within the server computer 420, such as during start-up, is stored in ROM 424.
The computer 420 further includes a hard disk drive 427, a magnetic disk drive 428, e.g., to read from or write to a removable disk 429, and an optical disk drive 430, e.g., for reading a CD-ROM disk 431 or to read from or write to other optical media. The hard disk drive 427, magnetic disk drive 428, and optical disk drive 430 are connected to the system bus 423 by a hard disk drive interface 432, a magnetic disk drive interface 433, and an optical drive interface 434, respectively. The drives and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, etc. for the server computer 420. Although the description of computer-readable media above refers to a hard disk, a removable magnetic disk and a CD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, and the like, may also be used in the exemplary operating environment, and further that any such media may contain computer-executable instructions for performing the methods of the present invention.
A number of program modules may be stored in the drives and RAM 425, including an operating system 435, one or more application programs 436, other program modules 437, and program data 438. The operating system 435 in the illustrated computer may be a Microsoft operating system (e.g., Windows NT operating system). It is to be appreciated that other operating systems may be employed such as UNIX for example.
A user may enter commands and information into the server computer 420 through a keyboard 440 and a pointing device, such as a mouse 442. Other input devices (not shown) may include a microphone, a joystick, a game pad, a satellite dish, a scanner, or the like. These and other input devices are often connected to the processing unit 421 through a serial port interface 446 that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, a game port or a universal serial bus (USB). A monitor 447 or other type of display device is also connected to the system bus 423 via an interface, such as a video adapter 448. In addition to the monitor, computers typically include other peripheral output devices (not shown), such as speakers and printers.
The computer 420 may operate in a networked environment using logical connections to one or more remote computers, such as a remote client computer 449. The remote computer 449 may be a workstation, a server computer, a router, a peer device or other common network node, and typically includes many or all of the elements described relative to the server computer 420, although only a memory storage device 450 is illustrated in
When employed in a LAN networking environment, the server computer 420 may be connected to the local network 451 through a network interface or adapter 453. When utilized in a WAN networking environment, the server computer 420 generally may include a modem 454, and/or is connected to a communications server on the LAN, and/or has other means for establishing communications over the wide area network 452, such as the Internet. The modem 454, which may be internal or external, may be connected to the system bus 423 via the serial port interface 446. In a networked environment, program modules depicted relative to the computer 420, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
In accordance with the practices of persons skilled in the art of computer programming, the present invention has been described with reference to acts and symbolic representations of operations that are performed by a computer, such as the computer 420, unless otherwise indicated. Such acts and operations are sometimes referred to as being computer-executed. It will be appreciated that the acts and symbolically represented operations include the manipulation by the processing unit 421 of electrical signals representing data bits which causes a resulting transformation or reduction of the electrical signal representation, and the maintenance of data bits at memory locations in the memory system (including the system memory 422, hard drive 427, floppy disks 429, and CD-ROM 431) to thereby reconfigure or otherwise alter the computer system's operation, as well as other processing of signals. The memory locations wherein such data bits are maintained are physical locations that have particular electrical, magnetic, or optical properties corresponding to the data bits.
What has been described above are preferred aspects of the present invention. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the present invention, but one of ordinary skill in the art will recognize that many further combinations and permutations of the present invention are possible. Accordingly, the present invention is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims.