The present invention relates to a method, system and computer program product for dynamically identifying one or more components contributing to a resource or service degradation. In particular, the present invention relates to a method, system and computer program product for dynamically identifying one or more components utilized by an application contributing to a resource or service degradation at a given point-in-time, using logic to evaluate and analyze configuration data obtained from a configuration management database in conjunction with information acquired from one or more monitoring systems for resources utilized by an application experiencing the resource or service degradation.
Businesses, in particular, Information Technology (IT) organizations within businesses are constantly facing more complex heterogeneous environments where identification of which component or components, in the enterprise are causing or contributing to a service disruption or resource unavailability is increasing in difficulty and complexity. Identification of the correct component or components causing the service or availability disruption is critical to being able to focus the necessary IT talents and resources to resolve the service disruption. Efforts spent trying to resolve service disruptions that address the wrong IT components result in wasted time and money and can actually increase the impact being felt by a disruption. As such, there is a need for a business and/or an IT organization to provide a cost-effective way to develop ways to identify the correct components that are causing or contributing to a service disruption or resource unavailability.
In a first aspect of the invention, there is provided a method of dynamically identifying one or more components contributing to a service degradation at a given point-in-time. The method includes obtaining from a configuration management database a set of configuration data for one or more components utilized by an application experiencing a service degradation at a given point-in-time and dynamically building a model using the set of configuration data obtained from the configuration management database and status data obtained from one or more monitoring sources configured to monitor the one or more components. Further, the method includes evaluating the model using logic and identifying the one or more components utilized by the application contributing to the service degradation at the given point-in-time. The method further includes reporting the one or more components identified, such that, an appropriate action can be taken with respect to the one or more components contributing to the service degradation at the given point-in-time. The obtaining step includes providing the configuration management database configured to store therein the set of configuration data for the one or more components utilized by the application. Further, in an embodiment, the dynamically building step includes providing a dynamic correlation logic tool having logic that is configured to dynamically build the model for the application experiencing service degradation and to analyze the model using the logic. Furthermore, the dynamically building step includes acquiring from the one or more monitoring sources a current status for the one or more components utilized by the application for dynamically building the model. In an embodiment, the obtaining step further includes providing the configuration management database configured to update the set of configuration data stored therein on a predetermined basis, such that the set of configuration data for the one or more components utilized by the application experiencing the service degradation at the given point-in-time obtained by the dynamic correlation logic tool is an up-to-date set of configuration data. In an embodiment, the acquiring step further includes determining the one or more monitoring sources configured to monitor the one or more components that are utilized by the application experiencing the service degradation at the given point-in-time. In an embodiment, the set of configuration data includes one or more of: types of components, component relationships, types of relationships, attributes for each component and attributes for each relationship.
In another aspect of the invention, there is provided a system for dynamically identifying one or more resources contributing to a service degradation at a given point-in-time. The system includes an application experiencing a service degradation at a given point-in-time, the application utilizing one or more resources. Further, the system includes a configuration management database configured to store therein a set of configuration data for the one or more resources utilized by the application and a dynamic correlation logic tool having logic, the dynamic correlation logic tool being configured to dynamically build a model using the set of configuration data obtained from the configuration management database and using status information for the one or more resources obtained from one or more monitoring systems configured to monitor the one or more resources for the application experiencing the service degradation at the given point-in-time and is configured to analyze the model using the logic to dynamically identify the one or more resources contributing to the service degradation at the given point-in-time, such that, appropriate action can be taken with respect to the one or more resources identified. In an embodiment, the dynamic correlation logic tool is further configured to obtain from the one or more monitoring systems, as needed, a current status for the one or more resources in order to build the model. In an embodiment, the configuration management database is further configured to update on a predetermined basis the set of configuration data for the one or more resources utilized by the application. Further, the dynamic correlation logic tool is further configured to use the set of configuration data that is updated in the configuration management database, such that the set of configuration data used by the dynamic correlation logic tool to build the model is an up-to-date set of configuration data. Further, in an embodiment, the dynamic correlation logic tool is configured to dynamically build the model using the up-to-date set of configuration data obtained from the configuration management database and the current status for the one or more resources obtained from the one or more monitoring systems. In an embodiment, the set of configuration data includes one or more of: types of resources, resource relationships, types of relationships, attributes for each resource and attributes for each relationship.
In yet another aspect of the invention, there is provided a computer program product for dynamically identifying one or more resources contributing to a service degradation at a given point-in-time. The computer program product includes a computer readable medium and first program instructions to obtain from a configuration management database a set of configuration data for one or more resources utilized by an application experiencing a service degradation at a given point-in-time. The computer program product further includes second program instructions to dynamically build a model using the set of configuration data obtained from the configuration management database and status data obtained from one or more monitoring sources configured to monitor the one or more resources and third program instructions to evaluate the model to identify the one or more resources utilized by the application contributing to the service degradation at the given point-in-time. In an embodiment, the first program instructions further include instructions to provide the configuration management database configured to store therein the set of configuration data for the one or more resources utilized by the application and configured to update the set of configuration data stored therein on a predetermined basis, such that the set of configuration data for the one or more resources utilized by the application experiencing the service degradation at the given point-in-time stored in the configuration management database includes an up-to-date set of configuration data. Further, in an embodiment, the second program instructions include instructions to acquire from the one or more monitoring sources, as needed, a current status for the one or more resources utilized by the application to dynamically build the model. Furthermore, the second program instructions include instructions to dynamically build the model using the up-to-date set of configuration data obtained from the configuration management database and the current status acquired for the one or more resources from the one or more monitoring sources. In an embodiment, the third program instructions include instructions to report the one or more resources identified, such that, an appropriate action can be taken with respect to the one or more resources contributing to the service degradation at the given point-in-time. In an embodiment, the set of configuration data includes one or more of: types of resources, resource relationships, types of relationships, attributes for each resource and attributes for each relationship. Preferably, each of the first, second and third program instructions are stored on the computer readable medium.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
Modules may also be implemented in software for execution by various types of processors. An identified module or component of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.
Further, a module of executable code could be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, over disparate memory devices, and may exist, at least partially, merely as electronic signals on a system or network.
Furthermore, modules may also be implemented as a combination of software and one or more hardware devices. For instance, a module may be embodied in the combination of a software executable code stored on a memory device. In a further example, a module may be the combination of a processor that operates on a set of operational data. Still further, a module may be implemented in the combination of an electronic signal communicated via transmission circuitry.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
Moreover, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. It will be apparent to those skilled in the art that various modifications and variations can be made to the present invention without departing from the spirit and scope of the invention. Thus, it is intended that the present invention cover the modifications and variations of this invention provided they come within the scope of the appended claims and their equivalents. Reference will now be made in detail to the preferred embodiments of the invention.
In one embodiment, the invention provides a method for dynamically identifying one or more components contributing to a resource or service degradation at a given point-in-time. In particular, in an embodiment, the invention provides a method of identifying a component or components utilized by an application that are actually responsible for causing a service disruption by correlating the resources and relationships contained in a dynamically changing database with information obtained from one or more monitoring systems for those resources using a dynamic correlation logic tool, as described further herein with respect to
Turning to
Accordingly, the method of dynamically identifying the actual failing component or components is logic invoked, passing as input, application XYZ (reference numeral 202) as the starting point for the analysis. The processing involved in the identification of the actual failing component logic is to look at each object in the model (where each object represents a resource or relationship) and to examine the object in order to determine what type (class) of resource the object represents, what is the relationship of the resource to the other resources, a current status of the object as obtained from a monitoring system or source for the object and additional attributes for the resource and/or relationships. With respect to determining the type (class) of resource, there are certain types of resources that are more important to the functioning of the service than others. For example, a web server may be more important that a print server. Further, different relationships among the resources can be weighted to reflect importance and may additionally also be associated with the type of resource. The status obtained from the monitoring system or systems may include relationship status that may be relevant in identifying the component or resource contributing to a resource or service degradation at a given point-in-time. Moreover, additional attributes from the object, such as, last change date or other customized attributes are gathered as defined. The set of information is then processed together to determine the failing component.
Accordingly, when a condition is detected or when there is degradation in performance or availability, the dynamic correlation logic tool is run, such that the point-in-time model 130 is built or created dynamically using the configuration data (the resources, relationships) in the configuration management database 120 at that particular point-in-time, plus the status received for each object shown in
Reference is now made to
In one embodiment, as shown in
In yet another embodiment, the invention provides a computer program product for dynamically identifying one or more resources or components contributing to a resource or service degradation experienced by an application at a given point-in-time. Preferably, the computer program product comprises a form accessible from the computer-usable or computer-readable medium, which provides program codes or instructions for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any apparatus that can contain, store, communicate, propagate, or transport the codes or instructions for use by or in connection with the instruction execution system, apparatus, or device. Preferably, the medium can include an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. More preferably, the computer-readable medium can include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Further, examples of optical disks include compact disc—read only memory (CD-ROM), compact disc—read/write (CD-R/W) and digital versatile/video disc (DVD). The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
The computer program product further comprises first program instructions to obtain from a configuration management database a set of configuration data for one or more resources utilized by an application experiencing a service degradation at a given point-in-time. The computer program product further includes second program instructions to dynamically build a point-in-time model using the set of configuration data obtained from the configuration management database and status data obtained from one or more monitoring sources configured to monitor the one or more resources and third program instructions to evaluate the point-in-time model to identify the one or more resources utilized by the application contributing to the service degradation at the given point-in-time. In an embodiment, the first program instructions further include instructions to provide the configuration management database configured to store therein the set of configuration data for the one or more resources utilized by the application and configured to update the set of configuration data stored therein on a predetermined basis, such that the set of configuration data for the one or more resources utilized by the application experiencing the service degradation at the given point-in-time stored in the configuration management database includes an up-to-date set of configuration data. Further, in an embodiment, the second program instructions include instructions to acquire from the one or more monitoring sources, as needed, a current status for the one or more resources utilized by the application to dynamically build the point-in-time model. Furthermore, the second program instructions include instructions to dynamically build the point-in-time model using the up-to-date set of configuration data obtained from the configuration management database and the current status acquired for the one or more resources from the one or more monitoring sources. In an embodiment, the third program instructions include instructions to report the one or more resources identified, such that, an appropriate action can be taken with respect to the one or more resources contributing to the service degradation at the given point-in-time. In an embodiment, the set of configuration data includes one or more of: types of resources, resource relationships, types of relationships, attributes for each resource and attributes for each relationship. Preferably, each of the first, second and third program instructions are stored on the computer readable medium.
Referring now to
In general, an application (such as, application 1, reference numeral 430 through application X, reference numeral 432) may interface with infrastructure 402 for utilizing one or more resources connected to the infrastructure 402, such as resource 1, reference numeral 442 through resource X, reference numeral 444. Further, as shown, one or more monitoring system(s) or monitoring source(s) 440 can interface with infrastructure 402. Similarly, an administrator 434 can interface with infrastructure 402 for supporting and/or configuring the infrastructure 402, such as, upgrading the dynamic correlation logic tool 414. In general, the parties could access infrastructure 402 directly, or over a network via interfaces (e.g., client web browsers) loaded on computerized devices (e.g., personal computers, laptops, handheld devices, etc.). In the case of the latter, the network can be any type of network such as the Internet or can be any other network, such as, a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), etc. In any event, communication with infrastructure 402 could occur via a direct hardwired connection (e.g., serial port), or via an addressable connection that may utilize any combination of wire line and/or wireless transmission methods. Moreover, conventional network connectivity, such as Token Ring, Ethernet, WiFi or other conventional communications standards could be used. Still yet, connectivity could be provided by conventional TCP/IP sockets-based protocol. In this instance, the parties could utilize an Internet service provider to establish connectivity to infrastructure 402. It should be understood that under the present invention, infrastructure 402 could be owned and/or operated by a party, such as, a provider 446, or by an independent entity. Regardless, use of infrastructure 402 and the teachings described herein could be offered to the parties on a subscription or fee-basis. In either scenario, an administrator 434 could support and configure infrastructure 402, as mentioned herein above.
Computer system or server 404 is shown to include a CPU (hereinafter “processing unit 406”), a memory 412, a bus 410, and input/output (I/O) interfaces 408. Further, computer system 400 is shown in communication with external I/O devices/resources 424 and storage system 422. In an embodiment as shown, the storage system 422 has stored therein the configuration management database (CMDB) 426 that provides the set of configuration data for the one or more resources utilized by an application that is experiencing a resource or service degradation at a given point-in-time. In general, processing unit 406 executes computer program codes, such as, the dynamic correlation logic tool 414, which is configured to dynamically build a point-in-time model 416 using the set of configuration data obtained from the configuration management database (CMDB) 426 and using status information for the one or more resources 1 through X (reference numeral 442 through 44) obtained from one or more monitoring systems 440 that are configured to monitor the one or more resources (1 through X) that may be utilized by an application 1 through X that is experiencing resource or service degradation. While executing the dynamic correlation logic tool 414, the processing unit 406 can read and/or write data, to/from memory 412, storage systems 422, and/or I/O interfaces 408. Bus 410 provides a communication link between each of the components in computer system 400. External devices 424 can include any devices (e.g., keyboard, pointing device, display, etc.) that enable a user to interact with computer system 400 and/or any devices (e.g., network card, modem, etc.) that enable computer system 400 to communicate with one or more other computing devices.
Computer infrastructure 402 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 402 includes two or more computing devices (e.g., a server cluster) that communicate over a network to perform the various process steps of the invention. Moreover, computer system 400 is only representative of various possible computer systems that can include numerous combinations of hardware. To this extent, in other embodiments, computer system 400 can include any specific purpose computing article of manufacture comprising hardware and/or computer program code for performing specific functions, any computing article of manufacture that includes a combination of specific purpose and general purpose hardware/software, or the like. In each case, the program code and hardware can be created using standard programming and engineering techniques, respectively. Moreover, processing unit 406 may include a single processing unit, or be distributed across one or more processing units in one or more locations, e.g., on a client and server. Similarly, memory 412 and/or storage system 422 can include any combination of various types of data storage and/or transmission media that reside at one or more physical locations. Further, I/O interfaces 408 can include any system for exchanging information with one or more external devices 424. Still further, it is understood that one or more additional components (e.g., system software, math co-processing unit, etc., not shown in
Storage system 422 can be any type of system (e.g., a database) capable of storing and/or updating information or configuration data, such as, the configuration management database (CMDB) 426. To this extent, storage system 422 could include one or more storage devices, such as a magnetic disk drive or an optical disk drive. In another embodiment, storage system 422 includes data distributed across, for example, a local area network (LAN), wide area network (WAN) or a storage area network (SAN) (not shown). Although not shown, additional components, such as cache memory, communication systems, system software, etc., may be incorporated into computer system 400.
The foregoing descriptions of specific embodiments of the present invention have been presented for the purpose of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to the particular use contemplated. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.