Information technology specialists, or system administrators, are responsible for maintaining, managing, protecting and configuring computer systems and their resources. More and more, such maintenance includes ensuring multiple users local and remote access to vast resources of data over a great number of computer applications and systems, including the Internet. Moreover, system administrators are asked to provide access to these highly reliable systems at practically any time of day while ensuring the system's integrity is not threatened by dataflow bottlenecks or excessive overhead.
In addition, many companies now take advantage of virtualization solutions to consolidate several specialized physical servers and workstations into fewer servers running virtual machines. Understanding the performance of a virtual infrastructure, however, is a complex challenge. Performance issues with virtual machines can be based on a variety of factors, including what is occurring within the virtual machine itself, problems with the underlying platform, problems caused by consumption of resource(s) by other virtual servers running on the same underlying platform, and/or problems of priority and allocation of resource(s) to the virtual machine(s). When seeking to ensure performance and maximize uptime, administrators often struggle to understand and monitor the virtual infrastructure, and also to quickly diagnose and resolve problems.
For purposes of summarizing the disclosure, certain aspects, advantages and novel features of the inventions have been described herein. It is to be understood that not necessarily all such advantages can be achieved in accordance with any particular embodiment of the inventions disclosed herein. Thus, the inventions disclosed herein can be embodied or carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other advantages as can be taught or suggested herein.
In certain embodiments, a method of providing information about dependencies in a computing environment to a user includes receiving monitoring data obtained from a plurality of monitored resources in a computing environment. The method can further include transforming the monitoring data into a topology model having a plurality of interconnected topology objects. The topology objects can represent the monitored resources. In addition, interconnections between the topology objects can reflect existing relationships between the plurality of monitored resources in the computing environment. The method may also include tracking first dependencies between first ones of the topology objects based at least in part on observed interactions between the first topology objects. The observed interactions between the first topology objects can be at least partially different from the existing relationships represented in the topology model. The method may also include inferring second dependencies between second ones of the topology objects based at least in part on the observed interactions between the first topology objects and the interconnections between the topology objects represented in the topology model. Moreover, the method may include storing data representing the first and second dependencies in a dependency graph, as well as providing a registry user interface configured to enable users to annotate the dependency graph to adjust the first and second dependencies represented in the dependency graph to thereby produce a modified dependency graph. Furthermore, the method can include applying, with a computer system comprising computer hardware, one or more custom filters to the modified dependency graph to select a custom view of the second dependencies in the modified dependency graph for display, and outputting the custom view of the second dependencies for presentation to a user.
Various embodiments of a system for providing information about dependencies in a computing environment to a user can include a topology engine that can transform monitoring data received from a plurality of computing devices into a topology model comprising a plurality of interconnected topology objects, such that interconnections between the topology objects reflect existing relationships between the plurality of computing devices; a dependency detector configured to build a dependency graph by inferring dependencies between first ones of the topology objects based at least in part on observed interactions between second ones of the topology objects and the interconnections between the topology objects represented in the topology model. The method can also include a custom filter module including computer hardware. The custom filter module can provide functionality for defining a custom filter for filtering the dependency graph and to apply, in response to a user request to view dependencies, the custom filter to the dependency graph to select a subset of the dependencies in the dependency graph and provide the subset of dependencies as an output.
Non-transitory physical computer storage can also be provided that has instructions stored thereon that, when executed by one or more processors, implement components for providing information about dependencies in a computing environment to a user. The components can include a dependency detector that can build a dependency graph from dependencies detected between computing devices in a computing environment, a registry module that can provide functionality that enables users to modify the dependency graph to adjust the dependencies represented in the dependency graph to thereby produce a modified dependency graph, and a plurality of custom filters that can filter the modified dependency graph to select a subset of the dependencies in the modified dependency graph and provide the subset of dependencies as an output.
Further, in some embodiments, a method of providing information about dependencies in a computing environment to a user can include receiving monitoring data obtained from a plurality of monitored resources in a computing environment and transforming the monitoring data into a topology model having a plurality of interconnected topology objects. The topology objects can represent the monitored resources, where interconnections between the topology objects can reflect existing relationships between the plurality of monitored resources in the computing environment. The method may also include tracking first dependencies between first ones of the topology objects based at least in part on observed interactions between the first topology objects. The observed interactions between the first topology objects may be at least partially different from the existing relationships represented in the topology model. The method may also include inferring second dependencies between second ones of the topology objects based at least in part on the observed interactions between the first topology objects and the interconnections between the topology objects represented in the topology model. The method may further include storing data representing the first and second dependencies in a dependency graph and outputting, with a computer system including computer hardware, a registry user interface that can enable users to annotate the dependency graph to adjust one or both of the first and second dependencies represented in the dependency graph to thereby produce a modified dependency graph. Further, the method may include outputting a portion of the modified dependency graph for presentation to a user.
In many embodiments, a system for providing information about dependencies in a computing environment to a user includes a topology engine that can transform monitoring data received from a plurality of computing devices into a topology model having a plurality of interconnected topology objects, such that interconnections between the topology objects can reflect existing relationships between the plurality of computing devices. The system may also include a dependency detector that can build a dependency graph by inferring dependencies between first ones of the topology objects based at least in part on observed interactions between second ones of the topology objects and the interconnections between the topology objects represented in the topology model. The system may also include a registry module including computer hardware. The registry module can provide functionality that enables users to modify the dependency graph to adjust the dependencies represented in the dependency graph to thereby produce a modified dependency graph.
Non-transitory physical computer storage can also be provided that includes instructions stored thereon that, when executed by one or more processors, implement components for providing information about dependencies in a computing environment to a user. The components can include a topology engine that can transform monitoring data received from a plurality of computing devices into a topology model having a plurality of interconnected topology objects, such that interconnections between the topology objects reflect existing relationships between the plurality of computing devices. The components can also include a dependency detector that can build a dependency graph from dependencies detected between the computing devices as represented by dependencies between the topology objects. Further, the components can include a registry module that can provide functionality that enables users to modify the dependency graph to adjust the dependencies represented in the dependency graph to thereby produce a modified dependency graph.
Throughout the drawings, reference numbers are re-used to indicate correspondence between referenced elements. The drawings are provided to illustrate embodiments of the inventions described herein and not to limit the scope thereof.
Information Technology (IT) professionals often struggle to understand what infrastructure and application components actually support a given application. While the general architecture of a computing environment is rarely a complete mystery, it is equally rare that IT professionals have the full details at their fingertips. Most often, information about interactions between computing systems is out of date or incomplete, stored in a combination of spreadsheets, Microsoft Vision™ diagrams, and configuration management databases. Performance monitoring and troubleshooting can improve if an easier way to track and model the underlying architecture of applications were to be found.
This disclosure describes embodiments of systems and methods for identifying, tracking, and customizing dependencies between components of a computing environment. By providing greater insight and transparency into dependencies, the systems and methods can facilitate modeling the underlying architecture of applications and computer hardware. As a result, IT personnel can better track relationships between components. Custom dependency tracking features described herein can also provide IT personnel with tools to switch from different types of dependency views that focus on application-oriented views, hardware-oriented views, or other custom views. Model annotation tools described herein can also enable IT personnel to customize a dependency model to reflect real-world application and hardware monitoring conditions.
In certain embodiments, the computing management system 110 creates a model, referred to herein as a topology model, that stores representations of inherent physical or virtual relationships between resources 102. The computing system 110 can leverage the topology model to further create a dependency model that tracks dynamic relationships or dependencies between resources 102. Dependency information can provide IT personnel with a visualization of which resources 102 affect the performance of other resources 102, facilitating troubleshooting and performance tuning. Advantageously, in certain embodiments, the computing system 110 can provide tools for annotating and filtering the dependency model to provide customized user views into the dependencies.
The monitored resources 102 for which dependencies can be tracked can include physical and/or virtual computing devices, such as physical machines and/or virtual machines. Monitored resources 102 may, for instance, include devices in a data center or in a plurality of data centers. Some examples of monitored resources 102 include the following: virtual machines, servers, web servers, application servers, databases, applications, processors, memories, hard drives or other storage devices, peripherals, software components, database tables, tablespaces in a database, application tiers, network switches and other network hardware, combinations of the same, and the like. Additional examples are provided below. The monitored resources 102 can be geographically separate or collocated.
An agent manager 120 communicates with the computing management system 110, for example, over a network 108, which can be a local area network (LAN) and/or a wide area network (WAN, which may include the Internet). The agent manager 120 includes agents 112a, which can be hardware or software modules that collect data about the monitored resources 102 for submission to the computing management system 110. This data can include performance data, status data, configuration data, combinations of the same, or the like. In the topology model (described in detail below) maintained by the computing management system 110, each of the monitored resources 102 can be considered an object, and data collected about each object can be stored in the topology model. The agents 112a can collect this monitoring data (or object data) remotely by querying libraries or application programming interfaces (API) of the monitored resources 102. For example, the agents 112a can make web service calls to one or more of the monitored resources 102 to obtain monitoring data. The agents 112a can collect this monitoring data periodically, for example, according to a schedule, on-demand, or a combination of the same. Some monitored resources 102 may include one or more agents 112b installed locally with the monitored resources 102. For example, if a monitored resource 102 is a virtual machine, an agent 112b can run from within the virtual machine to obtain monitoring data.
The monitoring data may include information about attributes, characteristics, or properties of the monitored resources 102, such as the number of processors in a physical host device, memory or storage capacity, hardware or software specifications, virtual machine characteristics, and so forth. The monitoring data can also include information about the performance of the monitored resources 102. For virtual machines, this performance information may include information about characteristics as virtual machines per physical host, virtual machine memory allocations, processor load, memory load, remaining free storage, network bandwidth, network latency, or any of a variety of other parameters. This performance data can also include alarms or alerts that indicate whether certain monitored resource 102 characteristics are outside of established performance criteria.
The agents 112a, 112b provide the collected monitoring data to the computing management system 110. The computing management system 110 can include one or more physical or virtual servers that process the monitoring data. A topology engine 130 of the computing management system 110 can transform the monitoring data into the topology model. The topology model can include a plurality of interrelated topology objects, where each topology object can represent a monitored resource 102. The topology model can be a graph or the like, where nodes in the graph represent objects or monitored resources 102 and edges connecting the nodes represent existing relationships between the objects. For example, a set of monitored resources 102 may include a virtual machine, a hypervisor on which the virtual machine runs, and a physical host computing device upon which the hypervisor runs. The topology engine 130 can transform data representing each of these monitored resources 102 into topology objects that are related to each other in the topology model by virtue of their inherent physical or virtual relationships. An inherent relationship between a virtual machine and a hypervisor, for instance, may be that the virtual machine runs on the hypervisor. Similarly, an inherent relationship between a hard disk and a physical host device may be that the hard disk is a component of the physical host device. The topology engine 130 can store the topology model in a data store 160, which can include physical computer storage, one or more databases, one or more file systems, or any combination of the same.
The creation of topology models will now be described in more detail with respect to
The physical environment layer 210 can encompass the physical computing environment being monitored, including hardware, software, and observed end-user behavior. The software or hardware components (e.g., monitored resources 102) that the computing management system 110 can automatically discover can include (as a non-limiting list of examples): any device with a network address, such as an IP address; network devices, such as switches, routers, and wireless access points; physical hosts or virtual hosts, including the following virtualization examples: VMware™ (ESX Servers, data centers, data stores, resource pools, clusters, virtual machines), Hyper-V™ (clusters, servers, virtual Machines), Solaris™ zones and containers, and IBM™ AIX partitions (e.g., logical partitions (LPARs), workload partitions (WPARs), or other *PARs); any process running on a server; threads within processes; web servers; Java™ and .NET™ Applications (e.g., enterprise applications and web applications); databases, such as Oracle™ and SQL Server™ databases; physical host components, such as CPU, memory, and hard disk storage; and storage area network components, such as RAID arrays, controllers, Fiber channel components, and SCSI components.
In the data collection layer 220, as described above, agents 112 can be used for data collection. In addition, the computing management system 110 can use other sources for data collection, such as agent-less collection, third party sources (e.g., monitoring tools like IBM™ Tivoli Enterprise Console or HP™ OVO, specialized domain monitoring tools, APIs, SNMP, Windows Management Instrumentation (WMI), scripts, combinations of the same, or the like). As data is collected, the computing management system 110 can build one or more topology models (in the topology model layer 230) by transforming incoming data into a collection-independent form called a canonical data transformation. During transformation, the topology engine 130 of the computing management system 110 can use context data to build objects of a particular type within the topology model(s). For example, when collecting system data, the topology engine 130 can use the name of a resource (such as a host name) to create an object for that resource with the same name as the name of the resource. The decoupling of the physical environment layer 210 from the topology model layer 230 can decouple the topology model layer 230 from the configuration of the physical environment, which may be constantly changing.
Example implementations for collecting data and creating topology models are described in the following U.S. Patents and Applications, each of which is hereby incorporated by reference in its entirety: U.S. Pat. No. 7,979,245, filed May 16, 2007, titled “Model-Based Systems and Methods for Monitoring Computing Resource Performance,” (“the '245 patent”) and U.S. application Ser. No. 12/370,399 (“the '399 application”). The computing management system 110 and/or agents 112 can implement some or all of the features described in the '245 patent and the '399 application. In addition, in one embodiment, the computing management system 110 and/or agents 112 can implement the features described herein together with at least some of the features of the Foglight™ and/or vFoglight™ software available from Quest Software of Aliso Viejo, Calif.
The topology model can be leveraged to track observed dependencies between objects in the topology model. Referring again to
In general, the dependency detector 142 can discover and model infrastructure and transactional dependencies. In some embodiments, the dependency detector 142 observes communications between monitored resources 102 as reported by one or more agents 112. The agents 112 may use netstat or CISCO™ NetFlow commands to detect incoming and outgoing network connections between monitored resources 102. The agents 112 can also use packet sniffers to detect network communications, Java byte-code instrumentation to detect communications between Java components, and/or other tools that detect communications between software and/or hardware components. The dependency detector 142 can identify, from this collected data, resources 102 that are communicating with each other (unidirectionally or bidirectionally). In response to detecting this communication, the dependency detector 142 can create a dependency between the communicating resources 102 as a directed edge in the dependency graph.
The dependency detector 142 can infer dependencies between resources 102 that are topologically related to the communicating resources 102 according to the topology model. For example, a first process running in a first virtual machine may communicate with a second process running in a second virtual machine. The dependency detector 142 can identify this communication from data collected by one or more agents 112 and create a dependency in the dependency graph between the two processes. Further, the dependency detector 142 can look up each of the two processes in the topology model to determine what model objects are related to the two processes. In doing so, the dependency detector 142 can traverse the topology graph to identify the first and second virtual machines as being related to the first and second processes, respectively. Because the two processes have a dependency relationship, the dependency detector 142 can then infer that the two virtual machines also have a dependency relationship. Thus, the dependency detector 142 can leverage the relationships in the topology model to infer dependencies.
In some embodiments, the topology model is stored as a tree abstract data type having one or more tree data structures. More generally, the topology model can be stored as a hierarchical data structure. The dependency detector 142 can then follow ancestor and/or descendant links in the one or more trees to infer dependency relationships among components. For example, referring to
In the dependency example described above, two processes communicated with each other and were hence dependent on each other. Likewise, in the depicted embodiment, two of the processes 320 communicate with one another either bidirectionally or unidirectionally. Agents 112 or other data collection mechanisms can detect this communication between processes 320, and the dependency detector 142 can analyze this collected data to identify the communication between the processes. Doing so, the dependency detector 142 detects a dependency relationship between the two processes, which the dependency detector 142 stores an indication of in the data store 160. An arrow 302 indicates this dependency between the processes 320.
Once the dependency detector 142 has identified this dependency, the dependency detector 142 can traverse the tree in the topology model 300 to infer dependencies between ancestors of the processes 320. Thus, in the depicted example embodiment, the dependency detector 142 infers a dependency (304) between the two operating systems 318, as well as a dependency (306) between two virtual machines related to the processes 320, a dependency (308) between hypervisors 314, and a dependency (310) between physical hosts 312. In a troubleshooting scenario, a user trying to identify problems with a first host 312 (or other resource) can review other components dependent on the first host 312, such as other hosts 312, to identify the specific element causing the first host 312 to experience issues. In some embodiments, dependencies (not shown) can also be inferred between descendants of the processes 320, such as between the threads 322.
Some additional examples of dependencies that the dependency manager can discover or infer include the following: process to host (process X runs on host X), process/host to host (process X on host X to host Y), process/host to process/host (process X on host X to process Y on host Y), host to network device (e.g., host X talks to router Y), application component to host (e.g., database X runs on host X), virtual hosts to virtual controller, and virtual machine to storage location (RAID array, logical unit number (LUN), etc.). These dependencies can be considered to be dependencies between infrastructure components (physical or virtual) of a computing environment. Another type of dependency is a dependency between application or transactional components, some examples of which include an application server to a Java Database Connectivity (JDBC) resource (e.g., Java server X talks to database server Y), relationships between queues in WebSphere™ MQ series systems, end-user requests to web servers, application servers to enterprise applications (e.g., enterprise application X uses the following enterprise Java Beans (EJBs), servlets, etc.), single trace end-user requests to java executions, and application components to application tiers (e.g., database+host=database tier).
Although not shown, in some embodiments, certain monitored resources 102 or objects can be further grouped together into services. For instance, services can include logical groupings of hosts and/or other objects together based on functionality. As one example, a service can represent a web application that is implemented on one or more virtual machine hosts. Services may be user-definable, and data representing services can be stored in the topology model. A service can, for instance, be a parent object to one or more virtual host objects or other objects representing other monitored resources 102. Services provide a mechanism for users to represent their IT infrastructure in ways that mirror business views of IT.
Referring again to
Advantageously, in certain embodiments, the dependency manager 140 includes a registry module 144 and a custom filter module 146 that enable custom dependency views to be generated. The registry module 144 can provide functionality for users to annotate dependency models to specify registry variables that define exceptions to dependency models. The registry variables or exceptions can include instructions or indications that the dashboard user interface module 150 can use to modify the dependency model and/or render dependencies. Referring again to the example dependencies shown in
More generally, the registry module 144 can allow users to exclude or add any type of dependency to a dependency model. The registry module 144 can store user-specified exceptions in the data store 160. The stored exceptions can act as rendering directives that affect the dependency views rendered for output by the dashboard user interface module 150. In another embodiment, the exceptions modify the dependency model itself to break or otherwise remove unwanted dependencies (or add new dependencies).
Like the registry module 144, the custom filter module 146 can provide a mechanism for customizing dependency views. The custom filter module 146 can provide functionality for users to create custom filters that dynamically select dependencies from the dependency model based on various criteria. The custom filter module 146 can provide software or hardware tools for users to create scripts that can define the custom filters. For example, the custom filter module 146 can include a custom filter API that has routines for defining custom views of dependency data. Custom filters can accomplish some or all of the same purposes as exceptions, such as excluding certain dependencies, but may be more flexible than exceptions. Custom filters can also allow users to control the layout of objects in a dependency view. In addition, the custom filters can use the exceptions in the registry as part of the dependency data filtering process in some instances.
The registry module 144 and the custom filter module 146 can be used by a vendor or provider of the computing management system 110 to adjust dependency views. The vendor may ship or otherwise provide the computing management system 110 with one or more predefined exceptions and one or more custom filters in some cases. In other embodiments, the registry module 144 and the custom filter module 146 can also or instead be used by customers of the vendor, including administrators of the computing management system 110. Administrators can extend the functionality of the exceptions and filters provided by the vendor or may create their own exceptions and custom filters.
It should be noted that the registry variables created using the registry module 144 can be used at different times. Some registry variables, such as the example variable described above for defining object parents, can be initially used by the dependency detector 142 when building the dependency model or graph. Other registry variables, such as variables that allow parent objects to be skipped, can be accessed by the custom filter module 146 and/or dashboard user interface module 150 when generating dependency views (see, e.g.,
Referring to
The process 350 begins at block 352, where the dashboard user interface module 150 receives a user selection of an object in a topology model. The user selection can be provided in response to first outputting one or more topology objects for display to the user. In another embodiment, a menu of available types of topology objects can first be output for display to the user (see, e.g.,
At block 354, the custom filter module 146 can identify the object in a dependency graph. The custom filter module 146 can identify dependencies of the object by transitively searching the graph for a next node (where each node represents an object) at block 356. If there is a next node (block 358), the custom filter module 146 can evaluate whether the next node is subject to an exception and/or filter condition at block 360. If so, the custom filter module 146 applies the exception and/or filter condition at block 362. For example, if the initially selected object was a process and the next node is an operating system associated with that process, the custom filter module 146 can determine whether an exception exists in the registry for skipping operating systems in a dependency tree. As another example, if a custom filter specifies that host dependencies are to be obtained, the custom filter module 146 may skip nodes in the dependency graph that correspond to objects other than hosts.
If there is no applicable exception or filter condition, the process 350 can loop back to block 356, where the custom filter module 146 searches for a next node. If there is no next node at block 358, the dashboard user interface module 150 outputs any dependencies found in the traversed portion of the dependency graph for presentation to the user at block 364. Several example user interfaces and dependency views are described in greater detail below.
In some embodiments, the custom filter module 146 performs another embodiment of a dependency view process by initially traversing a dependency graph to identify nodes and edges. The custom filter module 146 can then apply filer conditions to the nodes and edges by accessing properties in the topology model of the objects corresponding to the identified nodes.
The user interface 400 of
Of note, among the many types of monitored resources 102 described above, only hosts and services may be selected for viewing in the user interface 400. The restriction of options to viewing hosts or services can be made by the registry module 144 and/or custom filter module 146. A particular user may wish to view only host or service dependencies, instead of other dependencies, and therefore may specify an exception via the registry module 144 that restricts dependency views accordingly.
Turning to
By selecting the tab 522 marked “Tabular,” the user can cause the dashboard user interface module 150 to output dependencies in tabular format as shown in the user interface 600 of
Turning to
In the tree example of
An example of a registry user interface 800 that can be implemented by the registry module 144 is shown in
The registry variable Dependency_Mapping_Parent_Properties can specify which objects are defined to have a child relationship with certain parent topology object types. The parent topology object types are listed in a topology type column 810, while the child objects are listed in a value column 830. A third column, topology object name 820, can be used to specify specific topology objects and is blank in this example (in other examples, parentage or other attributes of specific topology objects can be manipulated using this column). Thus, for example, the objects esxServers and resourcePools in the same row 804 of the table as the VMWCluster topology type indicates that both esxServers and resourcePools (VMWare™ ESX servers and resource pools) are children of the VMWCluster (VMware™ cluster) object type. Add and delete buttons 802 are provided for adding or deleting registry values. For example, the add button 802 allows a user to specify further parent-child relationships, while the delete button 802 allows a user to delete a parent-child relationship.
Thus, in an embodiment, when inferring dependencies from children to parents, the dependency manager 142 of
There are many other examples of registry variables that can be edited by users using the registry module 144. For example, similar to the Dependency_Mapping_Parent_Properties variable, one registry variable can allow users to define children of other objects rather than parents of other objects. Additional registry variables can be created for ignoring or skipping parent or child objects when inferring dependencies. For example, as described above, it can be desirable for some users to ignore certain inferred dependencies, such as dependencies between operating systems or hypervisors. A registry variable for ignoring parent dependencies, for instance, might allow a user to specify a value “host” in the user interface 800 of
The custom filter module 146 described above can provide an API or scripting interface that enables a user to specify custom filters for viewing dependency data. Custom filters will be described initially using the example dependency views 900A-900G shown in
Referring to
Custom filters can be created for the purpose of outputting inferred dependencies. The custom filter module 146 described above can provide a user interface, scripting interface, or API that enables users to create custom filters for depicting inferred dependencies. The custom filter module 146 can store these custom filters for later access by users. The dashboard user interface module 150 can provide access to these custom filters by outputting a user interface (such as the user interface 400 of
An example custom filter that enables users to view dependencies between hosts instead of processes, as in
In the above filter example, the custom filter includes a filter chain (FilterChain), which can be a class or other logical grouping that contains an ordered list of filter definitions (FilterDefinition). Each filter definition can be a routine (e.g., function or method) that applies a set of rendering directives or commands to nodes in the dependency graph. While a single filter definition is shown in this filter chain, there may be multiple filter definitions in other filter chains, examples of which are described below. The filterMethod command within the filter definition can specify which initial objects are to be identified. In this example, the filterMethod command specifies that any objects are to be identified via an Any( ) routine, without filtering objects based on regular expressions or string matching (see below). The Any( ) routine can obtain objects that are transitively related to one or more objects selected by a user for dependency viewing, thereby obtaining the dependency graph related to the user-selected objects. Thus, for example, a user selection of an object at block 352 of the process 350 (see
The retrieved objects can be filtered or otherwise have a subset selected thereof using a displayOption command. The rollup command selects objects from the objects found by the filterMethod at a level of the dependency graph specified in the rollup condition (in this example, at the level of hosts according to the command, “rollup:HostRollup( )”). Rolling up the objects to select a subset thereof is one example of the process 350 applying a filter condition to successive nodes in the dependency graph at blocks 360 and 362 (see
A layer command in the custom filter defines an ordering of the rolled-up objects for display. As shown, the hosts 920 are grouped roughly into columns, with a prod-web host 920 in a first column, prod-app0 and prod-app1 hosts 920 in a second column, a prod-queue host 920 in a third column, and a prod-db host 920 in a fourth column. The layer command can affect the ordering of objects in these columns. By specifying that the layering will done by tier (“LayerByTier( )”), the output of the columns correspond logically from left to right, depicting each successive object to the right of the object from which it depends. The layer command can be adjusted to change the ordering of these columns, among other options. The dashboard user interface module 150 can execute the example custom filter 1 to obtain a set of display results, which the dashboard user interface module 150 can then output for display to a user.
The example custom filter 1 above can be modified to display both hosts and processes together, with processes contained by their parent hosts, with the following custom filter 2:
The groupBy command causes the retrieved objects to be grouped together according to one or more specified criteria, which in this example is by host (HostGroupBy( )). The one or more specified criteria can be a shared property of the objects, such as the same name or type of the objects, among others. Example output of the example custom filter 2 is shown in
The rollup and groupBy commands can be used together. For example, the following example custom filter can rollup to hosts and then group the hosts by services:
The resulting output is shown in
Sometimes, a user would like to see a subset of the objects in a group of dependencies. For example, in the scenario 900E shown in
In this example custom filter, two filter definitions are included, which can be executed in order. The filter method routine in the first filter definition, instead of looking for any object using the “Any( )” command, looks for specific prod-related object names using the “ObjectName(regex:‘prod.*’)” command. The regex command embedded within the ObjectName( ) command causes a regular expression to be executed that searches for nodes named ‘prod.’ (where “*” is a wildcard character), returning the prod-web and prod-db nodes. The “displayOption:Node( )” command then displays each of these objects as nodes. The subsequent filter definition includes a filter method command that searches for any remaining objects (using the “Any( )” command) and displays them as a cloud using the display option “Cloud( )” The display option “Cloud( )” enables the cloud 950 to be shown in place of the nodes 940.
As an extension of the example custom filter 4, regular expressions (regex) can be used in other contexts, such as in identifying certain types of objects (such as services or hosts) rather than specific objects.
The dependency 960 is shown in dashed lines in the depicted embodiment to indicate that it is a prior dependency. In other embodiments, the dependency 960 may be shown in a different color from the dependencies 902, such as a grayed-out color or the like. Likewise, the process 970 associated with the previous dependency 960 may be shown grayed out, in a different color, in parentheses (as shown), in strikethrough, combinations of the same, or the like.
In one embodiment, the dependency manager 140 of
It should be noted that the rollup and groupBy functions can affect whether or not differences between current and previous dependency graphs are displayed. In
Although not shown in the examples of
In some embodiments, the filterMethod function(s) of a custom filter can support Boolean logic, including NOT, AND, OR, or other Boolean operators. The “OR” Boolean operator is implicitly used in some embodiments by chaining multiple filterMethods or filterDefinitions together in one filterChain. Boolean logic can be used, for example, in combination with regular expressions to more easily identify monitored resources to be included in the filter.
The filterMethod function(s) of a custom filter can support a plurality of definitions and features, including custom scripts, type-based filtering, and object-collection based filtering. The filter examples in
The layer command described above can also specify dependencies to include in a hidden layer, not to be shown. This hidden layer command can allow objects to be easily hidden from display and may be easier than defining the custom filter differently to exclude certain items. For example, a system may include a first group of hosts that run web servers and a second group of hosts that run database servers. A third group of hosts may include both web servers and database servers. A custom filter to depict all web servers while hiding any server that includes a database server may be generated by searching for all hosts that include web servers (which would also return those hosts that have both web and database servers) and hiding those hosts that also have database servers.
Many other embodiments other than those described above can be implemented by the computing management system 110. For instance, in one embodiment, registry variables and/or custom filters may be time-sensitive. The registry module 144 may provide functionality (e.g., via a user interface or scripting interface) that enables users to specify expiration times for registry variables, start and/or stop times for registry variables, or the like. Further, in some embodiments, the registry module 144 can respond to certain inputs to temporarily change a registry variable setting.
One example application for time-sensitive registry settings is maintenance blackout periods. Monitored resources 102 are occasionally taken out of service or offline for maintenance. Maintenance may be scheduled or unplanned. In either scheduled or unplanned maintenance scenarios, objects that represent offline monitored resources 102 can be removed from the dependency model and/or dependency views. For instance, such objects can be tagged with metadata in the dependency model and/or registry indicating that maintenance is occurring on the corresponding monitored resources.
IT personnel may, for instance, access a user interface output by the registry module 144 to tag objects for maintenance. In one embodiment, the registry module 144 enables users to tag an object for maintenance, and the registry module 144 can infer that any child or descendent objects from the tagged object are also tagged for maintenance. The registry module 144 may also provide scheduling functionality that allows users to specify time periods in which an object or set of objects will be tagged for maintenance.
In general, taking components offline (due to planned or unplanned maintenance) can cause the topology model to change. Changes to the topology model can be propagated to the dependency graph, which can then be reflected in dependency views. However, there may be a significant delay between a component going offline and the dependency views being updated, which delay can be mitigated by providing time-sensitive updates to registry settings and/or custom filters.
The registry module 144 may also allow users to define queries that specify sets of objects that will be tagged for maintenance. More generally, the registry module 144 can also allow users to define queries for a variety of registry variable settings. Queries can be used to define relationships, such as parent-child object relationships for dependency purposes. One or more objects that match a query can be defined to be a child or parent of a host object, for instance. Queries can provide for more flexible definitions of parent-child relationships or other registry settings. In some embodiments, queries can be particularly useful to find groups that are related to a particular object but that are unknown to be related to that object, including some scenarios where objects are part of multiple groups or containers. Some monitored resources may have a property that they are associated with a certain group, but this property may be not be stored in the topology model. Accordingly, a query can be executed to identify any group to which the monitored resources belong. Queries can be in structured query language (SQL) format or in another language.
In another embodiment, the dependency detector 142 can detect transient dependencies associated with individual business transactions. A customer purchase of an item in an electronic commerce store, for instance, may involve interactions between several monitored resources, such as a web server, application server, and database server and associated storage devices. The dependency detector 142 can identify a communication from the web server associated with such a transaction and follow subsequent related communications to other monitored resources to identify dependencies to the application server, database server, and data storage devices. In one embodiment, the dependency detector 142 tracks the transaction by associating communications between components that share a unique identifier associated with the transaction. The identity of the user or the purchased product, for instance, may be used throughout the transaction, allowing the dependency detector 142 to identify communications between components as being related. The dependency detector 142 can associate the components involved in the transaction together under a transaction category, similar to a service encapsulating multiple hosts described above. The dashboard user interface module 150 can provide functionality for users to explore dependencies by transactions. Likewise, the custom filter module 146 can provide filters for finding transactions based on product identifiers, user identifiers, or queries for other information to enable the dashboard user interface module 150 to output transactional dependencies.
In another embodiment, the dashboard user interface module 150 may provide a verbose option that allows users to turn off exceptions and/or custom filters to thereby see an entire dependency graph or larger subset thereof. Such views may be useful in some maintenance or planning scenarios.
It should also be noted that although described herein with respect to topology models, the dependency tracking features herein need not be used in conjunction with topology models. Instead, dependencies can be tracked between computing devices without first building topology models in some embodiments.
In still other embodiments, the features of the computing management system 110 can be applied to contexts outside of IT computing environments. For instance, the features of the computing management system 110 can be applied to tracking dependencies between electrical power grid components, including electricity power meters, substations, and so forth. Each electrical component, for instance, can be represented by an object, and data from the objects (such as electricity consumption data from power meters) can be tracked and stored in a central repository. Dependencies between electrical components can be displayed to power company personnel. As another example, the features described herein can be implemented in general programming languages. Registries and custom filters, for instance, can allow object-oriented programming parent/child relationships to be redefined at runtime can be implemented.
In some embodiments, registry variables can be considered to be global variables that are override certain type definitions in the topology model and/or dependency graph. These type definitions can include parentage definitions, for example, as described above. Further, custom filters can override registry variables for some or all of the topology model and/or dependency graph. For instance, while a registry variable may define a new parent of an object not already included in the topology model or dependency graph, the custom filter can ignore this parent definition entirely. Registry variables can therefore be useful for global changes to the topology model/dependency graph while custom filters can be useful for local custom view of a portion of the topology model/dependency graph. Custom filters can also be used to view the global topology model/dependency graph in some embodiments.
In many embodiments described herein, a dependency graph is filtered to obtain a dependency view that is output for presentation to a user. However, any of the embodiments described herein can be modified to perform actions with a filtered dependency graph other than (or in addition to) displaying the filtered dependency graph. For instance, in one embodiment a filtered dependency graph can be provided to a performance monitoring process that analyzes the filtered dependency graph. The performance monitoring process may send an alarm to a user if a dependency in the filtered dependency graph has changed (e.g., without permission). The custom filter module 146 can provide data representing a comparison between a previous and current dependency graph view, as described above, to enable the performance monitoring process to detect the change. In another embodiment, filtered dependency data (or a previous/current comparison of such data) can be used to update service membership of one or more services. If a filtered dependency graph includes changes, a service definition can be changed to reflect those changes. In yet another embodiment, filtered dependency data can be used for capacity planning purposes. Changes in filtered dependency data over time can reflect whether a computing infrastructure is growing and therefore may need additional storage capacity and/or processing resources in the future (e.g., soon).
Many other variations than those described herein will be apparent from this disclosure. For example, depending on the embodiment, certain acts, events, or functions of any of the algorithms described herein can be performed in a different sequence, can be added, merged, or left out all together (e.g., not all described acts or events are necessary for the practice of the algorithms). Moreover, in certain embodiments, acts or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. In addition, different tasks or processes can be performed by different machines and/or computing systems that can function together.
Some or all of the features described herein are sufficiently mathematically or technically complex that one or more computing devices may be necessary to carry them out. Thus, for example, the various illustrative logical blocks, modules, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.
The various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a general purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor can be a microprocessor, but in the alternative, the processor can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor may also include primarily analog components. For example, any of the signal processing algorithms described herein may be implemented in analog circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a personal organizer, a device controller, and a computational engine within an appliance, to name a few.
The steps of a method, process, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable storage medium, media, or physical computer storage known in the art. An example storage medium can be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor. The processor and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor and the storage medium can reside as discrete components in a user terminal.
Conditional language used herein, such as, among others, “can,” “might,” “may,” “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or states. Thus, such conditional language is not generally intended to imply that features, elements and/or states are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without author input or prompting, whether these features, elements and/or states are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. Further, the term “each,” as used herein, in addition to having its ordinary meaning, can mean any subset of a set of elements to which the term “each” is applied.
While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it will be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As will be recognized, certain embodiments of the inventions described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others.
Number | Name | Date | Kind |
---|---|---|---|
3701971 | Sanner et al. | Oct 1972 | A |
3839707 | Woodward et al. | Oct 1974 | A |
4468728 | Wang | Aug 1984 | A |
4683532 | Yount et al. | Jul 1987 | A |
4937740 | Agarwal et al. | Jun 1990 | A |
5103394 | Blasciak | Apr 1992 | A |
5321838 | Hensley et al. | Jun 1994 | A |
5375199 | Harrow et al. | Dec 1994 | A |
5432932 | Chen et al. | Jul 1995 | A |
5450586 | Kuzara et al. | Sep 1995 | A |
5493658 | Chiang et al. | Feb 1996 | A |
5506955 | Chen et al. | Apr 1996 | A |
5517629 | Boland | May 1996 | A |
5528753 | Fortin | Jun 1996 | A |
5539907 | Srivastava et al. | Jul 1996 | A |
5572640 | Schettler | Nov 1996 | A |
5600789 | Parker et al. | Feb 1997 | A |
5623598 | Voigt et al. | Apr 1997 | A |
5649187 | Hornbuckle | Jul 1997 | A |
5671351 | Wild et al. | Sep 1997 | A |
5673386 | Batra | Sep 1997 | A |
5684945 | Chen et al. | Nov 1997 | A |
5701137 | Kiernan et al. | Dec 1997 | A |
5708775 | Nakamura | Jan 1998 | A |
5715388 | Tsuchihashi | Feb 1998 | A |
5715415 | Dazey et al. | Feb 1998 | A |
5720018 | Muller et al. | Feb 1998 | A |
5740357 | Gardiner et al. | Apr 1998 | A |
5748881 | Lewis et al. | May 1998 | A |
5752062 | Gover et al. | May 1998 | A |
5768501 | Lewis | Jun 1998 | A |
5872909 | Wilner et al. | Feb 1999 | A |
5881306 | Levine et al. | May 1999 | A |
5903453 | Stoddard, II | May 1999 | A |
5903898 | Cohen et al. | May 1999 | A |
5911048 | Graf | Jun 1999 | A |
5960425 | Buneman et al. | Sep 1999 | A |
5978594 | Bonnell et al. | Nov 1999 | A |
5983366 | King | Nov 1999 | A |
5999734 | Willis et al. | Dec 1999 | A |
6018567 | Dulman | Jan 2000 | A |
6029170 | Garger et al. | Feb 2000 | A |
6035412 | Tamer et al. | Mar 2000 | A |
6128016 | Coelho et al. | Oct 2000 | A |
6148335 | Haggard et al. | Nov 2000 | A |
6173322 | Hu | Jan 2001 | B1 |
6195092 | Dhond et al. | Feb 2001 | B1 |
6199199 | Johnston et al. | Mar 2001 | B1 |
6223171 | Chaudhuri et al. | Apr 2001 | B1 |
6243105 | Hoyer et al. | Jun 2001 | B1 |
6330008 | Razdow et al. | Dec 2001 | B1 |
6351754 | Bridge et al. | Feb 2002 | B1 |
6381628 | Hunt | Apr 2002 | B1 |
6473791 | Al-Ghosein et al. | Oct 2002 | B1 |
6538669 | Lagueux, Jr. et al. | Mar 2003 | B1 |
6543006 | Zundel et al. | Apr 2003 | B1 |
6594655 | Tal et al. | Jul 2003 | B2 |
6622221 | Zahavi | Sep 2003 | B1 |
RE38270 | Nakajima | Oct 2003 | E |
6633640 | Cohen et al. | Oct 2003 | B1 |
6654830 | Taylor et al. | Nov 2003 | B1 |
6751555 | Poedjono | Jun 2004 | B2 |
6771646 | Sarkissian et al. | Aug 2004 | B1 |
6833787 | Levi | Dec 2004 | B1 |
6847970 | Keller et al. | Jan 2005 | B2 |
6901582 | Harrison | May 2005 | B1 |
6993454 | Murstein et al. | Jan 2006 | B1 |
7010588 | Martin et al. | Mar 2006 | B2 |
7103843 | Hand et al. | Sep 2006 | B2 |
7127324 | Batori et al. | Oct 2006 | B2 |
7257635 | Chellis et al. | Aug 2007 | B2 |
7274375 | David | Sep 2007 | B1 |
7363211 | Naganathan et al. | Apr 2008 | B1 |
7370105 | Lebourg et al. | May 2008 | B2 |
7389345 | Adams | Jun 2008 | B1 |
7436822 | Lee et al. | Oct 2008 | B2 |
7480647 | Murstein et al. | Jan 2009 | B1 |
7480866 | Germain et al. | Jan 2009 | B2 |
7483978 | Esfahany et al. | Jan 2009 | B2 |
7512888 | Sugino et al. | Mar 2009 | B2 |
7523128 | Miller | Apr 2009 | B1 |
7532642 | Peacock | May 2009 | B1 |
7557803 | Furukawa et al. | Jul 2009 | B2 |
7558790 | Miller et al. | Jul 2009 | B1 |
7565610 | Li et al. | Jul 2009 | B2 |
7587492 | Dyck et al. | Sep 2009 | B2 |
7620984 | Kallahalla et al. | Nov 2009 | B2 |
7644397 | Warren et al. | Jan 2010 | B2 |
7685251 | Houlihan et al. | Mar 2010 | B2 |
7698683 | Miller et al. | Apr 2010 | B1 |
7784027 | Harrison | Aug 2010 | B2 |
7792941 | Fried et al. | Sep 2010 | B2 |
7822837 | Urban et al. | Oct 2010 | B1 |
7882216 | Houlihan et al. | Feb 2011 | B2 |
7917617 | Ponnapur et al. | Mar 2011 | B1 |
7950026 | Urbach | May 2011 | B1 |
7962590 | Or et al. | Jun 2011 | B1 |
7979245 | Bourlatchkov et al. | Jul 2011 | B1 |
8051162 | Arlitt et al. | Nov 2011 | B2 |
8051330 | Cinato et al. | Nov 2011 | B2 |
8051382 | Kingdom et al. | Nov 2011 | B1 |
8103638 | Voznika et al. | Jan 2012 | B2 |
8103826 | Kobayashi | Jan 2012 | B2 |
8112366 | Hollingsworth et al. | Feb 2012 | B2 |
8155996 | Cassone et al. | Apr 2012 | B1 |
8161058 | Agarwal et al. | Apr 2012 | B2 |
8175862 | Bourlatchkov et al. | May 2012 | B1 |
8175863 | Ostermeyer et al. | May 2012 | B1 |
8181154 | Harrison | May 2012 | B2 |
8185598 | Golovin et al. | May 2012 | B1 |
8203972 | Sauermann | Jun 2012 | B2 |
8217945 | Moscovici | Jul 2012 | B1 |
8239526 | Simpson et al. | Aug 2012 | B2 |
8255516 | Zhang et al. | Aug 2012 | B1 |
8307337 | Chamieh et al. | Nov 2012 | B2 |
8347273 | Nageshappa et al. | Jan 2013 | B2 |
8364460 | Ostermeyer et al. | Jan 2013 | B2 |
8423646 | Jamjoom et al. | Apr 2013 | B2 |
8438609 | Cohen et al. | May 2013 | B2 |
8490055 | Basak | Jul 2013 | B2 |
8555244 | Harrison | Oct 2013 | B2 |
8635498 | Kahana et al. | Jan 2014 | B2 |
8712950 | Smith et al. | Apr 2014 | B2 |
RE44964 | Kymal et al. | Jun 2014 | E |
8819673 | Wilkinson et al. | Aug 2014 | B1 |
8880678 | Colton et al. | Nov 2014 | B1 |
8892415 | Bourlatchkov et al. | Nov 2014 | B2 |
8902248 | Bidarkar et al. | Dec 2014 | B1 |
8930395 | Sharma et al. | Jan 2015 | B2 |
8966036 | Asgekar et al. | Feb 2015 | B1 |
8966039 | Fultz et al. | Feb 2015 | B1 |
9075911 | Mohan et al. | Jul 2015 | B2 |
9288147 | Kern et al. | Mar 2016 | B2 |
9497243 | Binns et al. | Nov 2016 | B1 |
9557879 | Wang et al. | Jan 2017 | B1 |
9569179 | Kachmar et al. | Feb 2017 | B1 |
9811365 | Borthakur | Nov 2017 | B2 |
9860139 | Spracklen et al. | Jan 2018 | B2 |
9882969 | Reddy et al. | Jan 2018 | B2 |
9998393 | Hanis et al. | Jun 2018 | B2 |
10075459 | Suryanarayanan et al. | Sep 2018 | B1 |
20010018710 | Clarke et al. | Aug 2001 | A1 |
20020138659 | Trabaris et al. | Sep 2002 | A1 |
20020175941 | Hand et al. | Nov 2002 | A1 |
20030009551 | Benfield et al. | Jan 2003 | A1 |
20030028630 | Bischof et al. | Feb 2003 | A1 |
20030084155 | Graupner et al. | May 2003 | A1 |
20030097438 | Bearden et al. | May 2003 | A1 |
20030101262 | Godwin | May 2003 | A1 |
20030126256 | Cruickshank et al. | Jul 2003 | A1 |
20030149753 | Lamb | Aug 2003 | A1 |
20030204588 | Peebles et al. | Oct 2003 | A1 |
20030225563 | Gonos | Dec 2003 | A1 |
20040006763 | Van De Vanter et al. | Jan 2004 | A1 |
20040012637 | Alford, Jr. et al. | Jan 2004 | A1 |
20040030592 | Buck et al. | Feb 2004 | A1 |
20040039728 | Fenlon et al. | Feb 2004 | A1 |
20040046785 | Keller | Mar 2004 | A1 |
20040059812 | Assa | Mar 2004 | A1 |
20040064293 | Hamilton et al. | Apr 2004 | A1 |
20040068560 | Oulu et al. | Apr 2004 | A1 |
20040102925 | Giffords | May 2004 | A1 |
20040147265 | Kelley et al. | Jul 2004 | A1 |
20050021743 | Fleig et al. | Jan 2005 | A1 |
20050021748 | Garcea et al. | Jan 2005 | A1 |
20050044528 | Olsen | Feb 2005 | A1 |
20050060300 | Stolte et al. | Mar 2005 | A1 |
20050111352 | Ho et al. | May 2005 | A1 |
20050187750 | Satoh et al. | Aug 2005 | A1 |
20050198649 | Zakonov | Sep 2005 | A1 |
20050232227 | Jorgenson et al. | Oct 2005 | A1 |
20060002478 | Seo | Jan 2006 | A1 |
20060101340 | Sridhar et al. | May 2006 | A1 |
20060168199 | Chagoly et al. | Jul 2006 | A1 |
20060171334 | Hirata et al. | Aug 2006 | A1 |
20060173875 | Stefaniak | Aug 2006 | A1 |
20060235928 | Cacenco et al. | Oct 2006 | A1 |
20070008884 | Tang | Jan 2007 | A1 |
20070028239 | Dyck et al. | Feb 2007 | A1 |
20070043860 | Pabari | Feb 2007 | A1 |
20070087756 | Hoffberg | Apr 2007 | A1 |
20070226341 | Mateo | Sep 2007 | A1 |
20070250525 | Sanghvi et al. | Oct 2007 | A1 |
20070255805 | Beams et al. | Nov 2007 | A1 |
20070255814 | Green et al. | Nov 2007 | A1 |
20080016115 | Bahl et al. | Jan 2008 | A1 |
20080077366 | Neuse et al. | Mar 2008 | A1 |
20080155537 | Dinda et al. | Jun 2008 | A1 |
20080162107 | Aniszczyk et al. | Jul 2008 | A1 |
20080162387 | Singh et al. | Jul 2008 | A1 |
20080208888 | Mitchell | Aug 2008 | A1 |
20080222633 | Kami | Sep 2008 | A1 |
20080263073 | Ohba et al. | Oct 2008 | A1 |
20080306711 | Bansal | Dec 2008 | A1 |
20080320269 | Houlihan et al. | Dec 2008 | A1 |
20090013281 | Helfman et al. | Jan 2009 | A1 |
20090083276 | Barsness et al. | Mar 2009 | A1 |
20090119301 | Cherkasova et al. | May 2009 | A1 |
20090147011 | Buck | Jun 2009 | A1 |
20090150538 | Tripathi et al. | Jun 2009 | A1 |
20090164250 | Hamilton et al. | Jun 2009 | A1 |
20090172666 | Yahalom et al. | Jul 2009 | A1 |
20090177567 | McKerlich et al. | Jul 2009 | A1 |
20090199177 | Edwards et al. | Aug 2009 | A1 |
20090204718 | Lawton et al. | Aug 2009 | A1 |
20090210527 | Kawato | Aug 2009 | A1 |
20090222558 | Xu et al. | Sep 2009 | A1 |
20090241108 | Edwards et al. | Sep 2009 | A1 |
20090271646 | Talwar et al. | Oct 2009 | A1 |
20090300605 | Edwards et al. | Dec 2009 | A1 |
20090307597 | Bakman | Dec 2009 | A1 |
20100015926 | Luff | Jan 2010 | A1 |
20100114554 | Misra | May 2010 | A1 |
20100125665 | Simpson et al. | May 2010 | A1 |
20100138744 | Kamay et al. | Jun 2010 | A1 |
20100153862 | Schreiber | Jun 2010 | A1 |
20100153916 | Bhatkhande et al. | Jun 2010 | A1 |
20100190509 | Davis | Jul 2010 | A1 |
20100223609 | DeHaan et al. | Sep 2010 | A1 |
20100229096 | Maiocco et al. | Sep 2010 | A1 |
20100241690 | Kurapati et al. | Sep 2010 | A1 |
20100250892 | Logan et al. | Sep 2010 | A1 |
20100305721 | Kostadinov et al. | Dec 2010 | A1 |
20100315958 | Luo et al. | Dec 2010 | A1 |
20100317420 | Hoffberg | Dec 2010 | A1 |
20100325273 | Kudo | Dec 2010 | A1 |
20110047496 | Harrison | Feb 2011 | A1 |
20110066780 | Bruce et al. | Mar 2011 | A1 |
20110119748 | Edwards et al. | May 2011 | A1 |
20110125800 | Seager et al. | May 2011 | A1 |
20110145380 | Glikson et al. | Jun 2011 | A1 |
20110153724 | Raja et al. | Jun 2011 | A1 |
20110161851 | Barber et al. | Jun 2011 | A1 |
20110187711 | Giovinazzi et al. | Aug 2011 | A1 |
20110197205 | Wagner et al. | Aug 2011 | A1 |
20110208827 | Pitkow et al. | Aug 2011 | A1 |
20110209146 | Box et al. | Aug 2011 | A1 |
20110254704 | Fournier et al. | Oct 2011 | A1 |
20110270566 | Sawada et al. | Nov 2011 | A1 |
20110298804 | Hao et al. | Dec 2011 | A1 |
20110302577 | Reuther et al. | Dec 2011 | A1 |
20120005148 | Horvitz et al. | Jan 2012 | A1 |
20120011254 | Jamjoom et al. | Jan 2012 | A1 |
20120023429 | Medhi | Jan 2012 | A1 |
20120029929 | Schaude et al. | Feb 2012 | A1 |
20120030346 | Fukuda et al. | Feb 2012 | A1 |
20120079497 | Gangemi et al. | Mar 2012 | A1 |
20120137367 | Dupont et al. | May 2012 | A1 |
20120166623 | Suit | Jun 2012 | A1 |
20120198073 | Srikanth et al. | Aug 2012 | A1 |
20120221314 | Bourlatchkov et al. | Aug 2012 | A1 |
20120222002 | Harrison | Aug 2012 | A1 |
20120254395 | Bonas | Oct 2012 | A1 |
20120254900 | Kumar et al. | Oct 2012 | A1 |
20120271821 | Qin et al. | Oct 2012 | A1 |
20120271937 | Cotten et al. | Oct 2012 | A1 |
20120284713 | Ostermeyer et al. | Nov 2012 | A1 |
20130066823 | Sweeney et al. | Mar 2013 | A1 |
20130080641 | Lui et al. | Mar 2013 | A1 |
20130097580 | Meijer et al. | Apr 2013 | A1 |
20130159115 | Adams | Jun 2013 | A1 |
20130159999 | Chiueh et al. | Jun 2013 | A1 |
20130174127 | Chen et al. | Jul 2013 | A1 |
20130185433 | Zhu et al. | Jul 2013 | A1 |
20130211905 | Qin et al. | Aug 2013 | A1 |
20130212285 | Hoffmann et al. | Aug 2013 | A1 |
20130218547 | Ostermeyer et al. | Aug 2013 | A1 |
20130253718 | Meagher et al. | Sep 2013 | A1 |
20130262915 | Frank et al. | Oct 2013 | A1 |
20130331963 | Ahangar et al. | Dec 2013 | A1 |
20140006580 | Raghu | Jan 2014 | A1 |
20140013315 | Genevski et al. | Jan 2014 | A1 |
20140052712 | Savage et al. | Feb 2014 | A1 |
20140079297 | Tadayon et al. | Mar 2014 | A1 |
20140082612 | Breitgand et al. | Mar 2014 | A1 |
20140089901 | Hadar | Mar 2014 | A1 |
20140092722 | Jain et al. | Apr 2014 | A1 |
20140108647 | Bleess et al. | Apr 2014 | A1 |
20140115164 | Kalyanaraman et al. | Apr 2014 | A1 |
20140165054 | Wang et al. | Jun 2014 | A1 |
20140165063 | Shiva et al. | Jun 2014 | A1 |
20140229934 | Larkin et al. | Aug 2014 | A1 |
20140258872 | Spracklen et al. | Sep 2014 | A1 |
20140269691 | Xue et al. | Sep 2014 | A1 |
20140279838 | Tsirogiannis et al. | Sep 2014 | A1 |
20140304407 | Moon | Oct 2014 | A1 |
20140310813 | Murthy | Oct 2014 | A1 |
20140317261 | Shatzkamer et al. | Oct 2014 | A1 |
20140317293 | Shatzkamer | Oct 2014 | A1 |
20140337500 | Lee | Nov 2014 | A1 |
20140350888 | Gesmann | Nov 2014 | A1 |
20140365196 | Melander et al. | Dec 2014 | A1 |
20140372230 | Ray et al. | Dec 2014 | A1 |
20150032436 | van de Kamp | Jan 2015 | A1 |
20150032437 | Kumar et al. | Jan 2015 | A1 |
20150046212 | Mos | Feb 2015 | A1 |
20150052250 | Doganata et al. | Feb 2015 | A1 |
20150089483 | Guthridge | Mar 2015 | A1 |
20150127415 | Showalter et al. | May 2015 | A1 |
20150127815 | Billore et al. | May 2015 | A1 |
20150134589 | Marrelli et al. | May 2015 | A1 |
20150142457 | Marshall | May 2015 | A1 |
20150199207 | Lin et al. | Jul 2015 | A1 |
20150358391 | Moon et al. | Dec 2015 | A1 |
20160011894 | Reddy et al. | Jan 2016 | A1 |
20160035114 | Hesse et al. | Feb 2016 | A1 |
20160042296 | Shan et al. | Feb 2016 | A1 |
20160048408 | Madhu et al. | Feb 2016 | A1 |
20160094401 | Anwar et al. | Mar 2016 | A1 |
20160147522 | Dimitrakos et al. | May 2016 | A1 |
20160191345 | Despotovic et al. | Jun 2016 | A1 |
20160254965 | Maes | Sep 2016 | A1 |
20160274948 | Kelly et al. | Sep 2016 | A1 |
20160291942 | Hutchison | Oct 2016 | A1 |
20160359872 | Yadav et al. | Dec 2016 | A1 |
Number | Date | Country |
---|---|---|
WO-2013162596 | Oct 2013 | WO |
Entry |
---|
Foglight 5.6.4 Managing Dependency Mapping User Guide, Quest Software, Inc., pp. 1-62 (2012). |
Foglight 5.6.2 Managing Dependency Mapping User Guide, Quest Software, Inc., pp. 1-55 (2011). |
Foglight APM: An Adaptive Architecture for all Environments, Quest Software, Inc., pp. 1-25 (2011). |
VFoglight Alarms Overview—Demo 6, pp. 1-31 (2009). |
Foglight 5.5.8 Managing Dependency Mapping User Guide, Quest Software, Inc., pp. 1-53 (2011). |
Cappelli, APM Needs Three-Layered Application Models, Gartner Research, pp. 1-5 (Feb. 26, 2010). |
“Instance Monitor the Real-Time Database Monitoring and Diagnostic Solution for Oracle,” Brochure, Quest Software, Inc. 1999, 2 pages. |
Boucher et al., Essential Guide to Object Monitors, Mar. 1999, whole book. |
Dewan, et al. “A High-Level and Flexible Framework for Implementing Multiuser User Interfaces”, 1992, ACM, p. 345-380. |
Distributed Management Task Force, Inc., “Common Information Model (CIM) Infrastructure Specification”; Version 2.3 Final; Oct. 4, 2005; 102 pages. |
Harrison, Guy, “Building a High-Perfornance Oracle Database Server,” and “Tuning the Database Server,” in: “Oracle SQL High-Performance Tuning,” (New Jersey. Prentice-Hall, 1997), pp. 363-364, 399-400. |
Hitachi TP Broker User's Guide, Release 3.1, 1998, entire manual. |
Laessig; “Score Big with JSR 77, the J2EE Management Specification”, Javaworld; Jun. 14, 2002; 8 pages. |
Muller, Focus on HP OpenView: A Guide to Hewlett Packard's Network Management Platform, 1995, entire book. |
Savant Corporation, “Products,” http://www.savant-corp.com/prods.html, 1 page downloaded from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Products,” http://www.savant-corp.com/prods.html, 1 page, downloaded and printed from the World Wide Web on Feb. 15, 2000. |
Savant Corporation, “Q Application Diagnostics,” http:///savant-corp.com/qappd.html, 1 page, downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Q Hot SQL,” http:///www.savant-corp.com/qhsql.html, 1 page, downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Q Instance Overview,” http:///www.savant-corp.com/qiov.html, 1 page, downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Q Job Queue Manager,” http:///www.savant-corp.com/qjobq.html, 1 page, downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Q Lock Manager,” http:///www.savant-corp.com/qlock.html, 1 page, downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Savant Corporation, “Q Replay Viewer,” http:///www.savant-corp.com/qreplay.html, 1 page downloaded and printed from the World Wide Web on Nov. 16, 1999. |
Singh et al; “Designing Web Services with the JDEE™1.4 Platform,” Chapter 6 (pp. 247-289), May 2004; 46 total pages. |
Tang, et al. “Blending Structured Graphics and Layout”, 1994, ACM, p. 167-174. |
What is a System Center Advisor?, http://onlinehelp.microsoft.com/en-us/advisor/ff962512(printer).aspx, accessed on Apr. 5, 2011. |
Microsoft System Center Advisor page, https://www.systemcenteradvisor.com/, accessed on Apr. 4, 2011. |
Windows Management Instrumentation: Frequently Asked Questions, Troubleshooting and Tips, http://technet.microsoft.com/en-us/library/ee692772(d=printer).aspx, Microsoft TechNet, published Jul. 28, 2004, updated Sep. 10, 2004, pp. 1-20. |
Maston, Managing Windows with WMI, Microsoft TechNet, Published Nov. 1, 1999, pp. 1-11. |
Harrison, U.S. Appl. No. 09/695,609, now U.S. Pat. No. 6,901,582, filed Oct. 23, 2000, Monitoring System for Monitoring the Performance of an Application. |
Harrison, U.S. Appl. No. 11/121,523, now U.S. Pat. No. 7,784,027, filed May 4, 2005, Systems and Methods for Monitoring a Computing Environment. |
Harrison, U.S. Appl. No. 12/860,159 Published 2011/0047496 A1, now U.S. Pat. No. 8,181,154, filed Aug. 20, 2010, Systems and Methods for Monitoring a Computing Environment. |
Harrison, U.S. Appl. No. 13/467,424, filed May 9, 2012, Systems and Methods for Monitoring a Computing Environment. |
Bourlatchkov et al., U.S. Appl. No. 11/749,559, now U.S. Pat. No. 7,979,245, filed May 16, 2007, Model-Based Systems and Methods for Monitoring Computing Resource Performance. |
Bourlatchkov et al., U.S. Appl. No. 13/179,405, now U.S. Pat. No. 8,175,862, filed Jul. 8, 2011, Model-Based Systems and Methods for Monitoring Computing Resource Performance. |
Bourlatchkov et al., U.S. Appl. No. 13/465,708, filed May 7, 2012, Model-Based Systems and Methods for Monitoring Computing Resource Performance. |
Ostermeyer et al., U.S. Appl. No. 12/370,399, now U.S. Pat. No. 8,175,863, filed Feb. 12, 2009, Systems and Methods for Analyzing Performance of Virtual Environments. |
Ostermeyer et al., U.S. Appl. No. 13/464,042, filed May 4, 2012, Systems and Methods for Analyzing Performance of Virtual Environments. |
Wang et al., U.S. Appl. No. 13/658,709, filed Oct. 23, 2012, System for Inferring Dependencies Among Computing Systems. |
BMC Software, Inc.; “BMC Atrium Discovery and Dependency Mapping”; http://documents.bmc.com/products/documents/18/60/451860/451860.pdf ; 2014; 2 pages. |
Grisby, Duncan; “The Power behind BMC Atrium Discovery and Dependency Mapping”; http://documents.bmc.com/products/documents/18/97/451897/451897.pdf; 2014; 5 pages. |
Hewlett-Packard Development Company, L.P.; “Data Sheet: HP Universal Discovery Software”; http://h20195.www2.hp.com/V2/GetPDF.aspx/4AA4-1812ENW.pdf; Sep. 2014; 8 pages. |
U.S. Appl. No. 14/562,474, Rustad et al. |
U.S. Appl. No. 14/249,147, Rustad et al. |
U.S. Appl. No. 14/292,135, Rustad. |
U.S. Appl. No. 14/619,897, Diep et al. |
U.S. Appl. No. 14/858,341, Qin et al. |
Layered Technologies, Inc., “Optimized Application Performance and User Experience: Application Performance Management Service,” 2013, 4 pages. |
Levey, Tom, “Monitoring the Real End User Experience,” www.appdynamics.com, Jul. 25, 2013, 7 pages. |
Quarles, John et al.; “A Mixed Reality Approach for Merging Abstract and Concrete Knowledge”; IEEE Virtual Reality 2008; Mar. 8-12, 2008; pp. 27-34. |
Aternity, Inc., “Aternity Virtual Desktop Monitoring: Get Visibility into all Tiers of the Virtual Desktop,” http://www.aternity.com/products/workforce-apm/virtual-desktop-monitoring/, May 11, 2014, 2 pages. |
Solarwinds Worldwide. LLC., “SolarWinds: Virtualization Manager Administrator Guide,” DocVersion 6.3.0.1, Sep. 8, 2015, 321 pages. |
EG Innovations, Inc., “eG Enterprise Performance Monitoring for Citrix XenDesktop: Performance Assurance for Citrix Virtual Desktops,” www.eginnovations.com, accessed on Sep. 17, 2015, 2 pages. |
EG Innovations, Inc., “Service Overview: VDI Performance Assessment: Move VDI Deployments from Test to Best,” www.eginnovations.com, accessed on Sep. 17, 2015, 2 pages. |
EG Innovations, Inc., “Total Performance Monitoring for Citrix XenApp and XenDesktop,” www.eginnovations.com, accessed on Sep. 17, 2015, 2 pages. |
Goliath Technologies, “Goliath Performance Monitor: for Citrix XenApp & XenDesktop,” http://goliathtechnologies.com, May 2014, 2 pages. |
Goliath Technologies, “Goliath Performance Monitor: for VMware,” http://goliathtechnologies.com, May 2014, 2 pages. |
VMturbo, “VDI Control Module,” http://vmturbo.com, Nov. 2014, 2 pages. |
VMturbo,“VMTurbo Operations Manager: Demand-Driven Control for Cloud and Virtualization,” http://vmturbo.com, Jun. 2015, 2 pages. |
U.S. Appl. No. 13/745,677, Ostermeyer. |
U.S. Appl. No. 14/725,778, Chen et al. |
U.S. Appl. No. 14/607,776, Qin et al. |
U.S. Appl. No. 14/607,907, Qin et al. |
Wikimedia Foundation, Inc.; “Network Functions Virtualization”; http://en.wikipedia.org/wiki/Network_Functions_Virtualization; last modified Mar. 17, 2015; 6 pages. |
NEO4J; “Network Dependency Graph”; http://www.neo4j.org/graphgist?github-neo4J . . . ; Jun. 18, 2014; 9 pages. |
Template Software, Workflow Template Process Template, “Developing a WFT Workflow System”, 1997, whole manual. |
Partridge C. et al. FIRE State Message Protocol Specification, BBN Technologies, Jul. 12, 2000, (pp. 1-19). |
Newrelicblog, “Platform as a Service Meets SaaS Application Performance Management”; http://blog.newrelic.com/2011/01/13/platform-as-a-service-meets-saas-application-performance-management/; Jan. 13, 2011; 3 pages. |
U.S. Appl. No. 13/658,709, Wang et al. |
U.S. Appl. No. 15/201,655, Qin et al. |
U.S. Appl. No. 15/201,657, Qin et al. |
Wood, Timothy, et al.; Middleware 2008; “Profiling and Modeling Resource Usage of Virtualized Applications”; vol. 5346 of the series Lecture Notes in Computer Science; Dec. 2008; pp. 366-387. |
Liquidware Labs; “Performance Validation and Optimization”; http://www.liquidwarelabs.com/products/stratusphere-ux/performance-validation-optimization; Oct. 1, 2015; 2 pages. |
Dell, Inc.; “Monitoring with User Dashboards”; vWorkspace Monitoring and Diagnostics 5.5.5—User's Guide; http://documents.software.dell.com/vworkspace-monitoring-and-diagnostics/5.6.5/users-guide/users-guide/working-with-foglight-for-virtual-desktops/monitoring-with-user-dashboards?ParentProduct=687; last revised on May 23, 2013; 4 pages. |
Agrawal, Banit, et al.; “VMware View® Planner: Measuring True Virtual Desktop Experience at Scale”; VMWare Technical Journal (VMTJ), Winter 2012; Dec. 2012; pp. 69-79. |
Spracklen, Lawrence, et al.; “Comprehensive User Experience Monitoring”; VMWare Technical Journal (VMTJ), Spring 2012; Mar. 2012; pp. 22-31. |