US20190026295A1 - System and method for obtaining application insights through search - Google Patents
System and method for obtaining application insights through search Download PDFInfo
- Publication number
- US20190026295A1 US20190026295A1 US15/653,762 US201715653762A US2019026295A1 US 20190026295 A1 US20190026295 A1 US 20190026295A1 US 201715653762 A US201715653762 A US 201715653762A US 2019026295 A1 US2019026295 A1 US 2019026295A1
- Authority
- US
- United States
- Prior art keywords
- metric
- search
- computing system
- learned
- user
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 21
- 230000014509 gene expression Effects 0.000 description 17
- 238000012544 monitoring process Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012552 review Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013024 troubleshooting Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- KJLLKLRVCJAFRY-UHFFFAOYSA-N mebutizide Chemical compound ClC1=C(S(N)(=O)=O)C=C2S(=O)(=O)NC(C(C)C(C)CC)NC2=C1 KJLLKLRVCJAFRY-UHFFFAOYSA-N 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
Images
Classifications
-
- G06F17/30088—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G06F17/30156—
-
- G06F17/3023—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/35—Switches specially adapted for specific applications
- H04L49/356—Switches specially adapted for specific applications for storage area networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
Definitions
- Virtual computing systems are widely used in a variety of applications.
- Virtual computing systems include one or more host machines running one or more virtual machines concurrently.
- the one or more virtual machines utilize the hardware resources of the underlying one or more host machines.
- Each virtual machine may be configured to run an instance of an operating system.
- Modern virtual computing systems allow several operating systems and several software applications to be safely run at the same time on the virtual machines of a single host machine, thereby increasing resource utilization and performance efficiency.
- present day virtual computing systems still have limitations due to their configuration and the way they operate.
- a method includes receiving, by a search computing system of a virtual computing system, a search query via a search interface, converting, by the search computing system, the search query into a structured query, and identifying, by the search computing system, at least one of a configured metric, a learned metric, and a correlation from the structured query.
- the configured metric, the learned metric, and the correlation are based upon a particular metric associated with a software application of the virtual computing system.
- the configured metric is obtained by applying one or more filters to the particular metric, the learned metric is based upon a frequency of presence of the particular metric in the search query, and the correlation is based upon a pattern formed by the search query in conjunction with a subset of prior search queries.
- the method further includes displaying, by the search computing system, data related to the particular metric on the search interface, such that the data is based upon the configured metric, the learned metric, and the correlation identified within the structured query.
- a system in accordance with some other aspects of the present disclosure, includes a configuration system of a virtual computing system, the configuration system having a metric database configured to store one or more statistics counters created by the configuration system, and a processing unit.
- the processing unit is configured to receive a selection, via a configuration interface, of a software application, receive a selection, via the configuration interface, of a particular metric associated with the software application, and receive a selection, via the configuration interface, of one or more filter values associated with selected one of the particular metric.
- the processing circuit is further configured to apply the selected one of the particular metric and the one or more filter values to an instance of the one or more statistics counters, and store the instance of the one or more statistics counters within the metric database.
- the method includes configuring, by a configuration system of a virtual computing system, a particular metric associated with a software application of the virtual computing system to obtain a configured metric.
- the configuring comprises applying one or more filter values to the particular metric.
- the method also includes receiving, by a search computing system of the virtual computing system, a search query via a search interface, identifying, by the search computing system, keywords within the search query indicative of the configured metric, and accessing, by the search computing system, the configuration system for obtaining data corresponding to the configured metric.
- the method additionally includes displaying, by the search computing system, the data on the search interface.
- FIG. 1 is a block diagram of a virtual computing system, in accordance with some embodiments of the present disclosure.
- FIG. 2 is a block diagram of a search computing system, a configuration system, and a learned metric system connected together in operational association within the virtual computing system of FIG. 1 , in accordance with some embodiments of the present disclosure.
- FIGS. 3A-3B are block diagrams of a user injected block of the configuration system of FIG. 2 , in accordance with some embodiments of the present disclosure.
- FIG. 4 is a block diagram of the learned metric system of FIG. 2 , in accordance with some embodiments of the present disclosure.
- FIG. 5 is an example flowchart outlining operations for performing a search operation, in accordance with some embodiments of the present disclosure.
- FIG. 6 is an example flowchart outlining operations for configuring a metric of a software application, in accordance with some embodiments of the present disclosure.
- FIG. 7 is an example flowchart outlining operations for learning the metric, in accordance with some embodiments of the present disclosure.
- FIG. 8 is an example flowchart outlining operations for learning correlations related to the metric, in accordance with some embodiments of the present disclosure.
- the present disclosure is generally directed to a search computing system and a configuration system associated with a virtual computing system.
- the search computing system operates in collaboration with the configuration system to provide real-time data pertaining to one or more metrics associated with a software application within the virtual computing system.
- the metrics provide various statistics related to the software application.
- one of the metrics associated with the software application may be for central processing unit (CPU) utilization.
- the CPU utilization metric may collect statistics relating to the software application's usage of the various processing resources when the software application is running. By reviewing the statistics or data collected by the CPU utilization metric, the user may be able to identify performance problems associated with the software application.
- other metrics associated with the software application may provide valuable insights about other operational and functional aspects of the software application.
- the present disclosure provides a system and method by which the data may be viewed in real-time while the software application is running.
- the user may be able to monitor the software application in real-time.
- the user may identify a problem while it is occurring or predict a problem that is about to occur.
- the user may pro-actively take action to prevent the problem or at least reduce the impact of the problem.
- the user To monitor the software application by reviewing the data collected by the metrics in real-time, the user first configures the metrics that the user is interested in monitoring.
- the user uses the configuration system. Specifically, through the configuration system, the user may configure the metrics by defining various filters.
- the filters may include various thresholds, such as upper and lower thresholds, or any limiting attribute or parameter associated with the metric that the user is interested in monitoring. For example and with respect to the CPU utilization metric discussed above, the user may configure the CPU utilization metric by defining an upper threshold value (e.g., seventy five percent), a lower threshold value (e.g., twenty five percent), a range of threshold values (e.g., between twenty five and seventy five percent), etc.
- an upper threshold value e.g., seventy five percent
- a lower threshold value e.g., twenty five percent
- a range of threshold values e.g., between twenty five and seventy five percent
- the CPU utilization metric may collect data from the software application that satisfies the defined filters. Therefore, for example, if the CPU utilization metric has been configured with an upper threshold value of seventy five percent, the CPU utilization metric collects data when the software application's usage of the various processing resources exceeds seventy five percent. Thus, based upon the parameters that the user is interested in monitoring, the user may configure the metrics with those parameters.
- the user may easily search for the data collected by those metrics. Specifically, the user may run search queries using the search computing system to obtain the data collected by the metrics as search results. To distinguish one configured metric from another configured metric, the user may create a statistics counter for each configured metric. By creating the statistics counter for the configured metrics, the user may run search queries using the created statistics counters as well.
- the present disclosure also provides a learned metric system, which is configured to learn the metrics and associated parameters (e.g., thresholds) that the user commonly runs search queries for based upon a frequency of a particular search query.
- the learned metric system may also identify patterns within multiple search queries to create a correlation.
- the learned metrics or created correlations may or may not have been configured by the user.
- the search computing system may access the learned metric system to return relevant search results to the user.
- the present disclosure provides an efficient and convenient mechanism for a user to monitor the health of a software application in real-time, identify problems or failures occurring or impending within the software application, and timely and efficiently address the identified problems or failures to prevent adverse impact on the software application and/or other aspects of the virtual computing system.
- the virtual computing system 100 includes a plurality of nodes, such as a first node 105 , a second node 110 , and a third node 115 .
- Each of the first node 105 , the second node 110 , and the third node 115 includes user virtual machines (VMs) 120 and a hypervisor 125 configured to create and run the user VMs.
- VMs virtual machines
- Each of the first node 105 , the second node 110 , and the third node 115 also includes a controller/service VM 130 that is configured to manage, route, and otherwise handle workflow requests to and from the user VMs 120 of a particular node.
- the controller/service VM 130 is connected to a network 135 to facilitate communication between the first node 105 , the second node 110 , and the third node 115 .
- the hypervisor 125 may also be connected to the network 135 .
- the virtual computing system 100 may also include a storage pool 140 .
- the storage pool 140 may include network-attached storage 145 and direct-attached storage 150 .
- the network-attached storage 145 may be accessible via the network 135 and, in some embodiments, may include cloud storage 155 , as well as local storage area network 160 .
- the direct-attached storage 150 may include storage components that are provided within each of the first node 105 , the second node 110 , and the third node 115 , such that each of the first, second, and third nodes may access its respective direct-attached storage without having to access the network 135 .
- FIG. 1 It is to be understood that only certain components of the virtual computing system 100 are shown in FIG. 1 . Nevertheless, several other components that are commonly provided or desired in a virtual computing system are contemplated and considered within the scope of the present disclosure. Additional features of the virtual computing system 100 are described in U.S. Pat. No. 8,601,473, the entirety of which is incorporated by reference herein.
- the first node 105 , the second node 110 , and the third node 115 are shown in the virtual computing system 100 , in other embodiments, greater or fewer than three nodes may be used.
- the number of the user VMs on the first, second, and third nodes may vary to include either a single user VM or more than two user VMs.
- the first node 105 , the second node 110 , and the third node 115 need not always have the same number of the user VMs 120 .
- more than a single instance of the hypervisor 125 and/or the controller/service VM 130 may be provided on the first node 105 , the second node 110 , and the third node 115 .
- each of the first node 105 , the second node 110 , and the third node 115 may be a hardware device, such as a server.
- one or more of the first node 105 , the second node 110 , and the third node 115 may be an NX-1000 server, NX-3000 server, NX-6000 server, NX-8000 server, etc. provided by Nutanix, Inc. or server computers from Dell, Inc., Lenovo Group Ltd. or Lenovo PC International, Cisco Systems, Inc., etc.
- one or more of the first node 105 , the second node 110 , or the third node 115 may be another type of hardware device, such as a personal computer, an input/output or peripheral unit such as a printer, or any type of device that is suitable for use as a node within the virtual computing system 100 .
- the virtual computing system 100 may be part of a data center.
- Each of the first node 105 , the second node 110 , and the third node 115 may also be configured to communicate and share resources with each other via the network 135 .
- the first node 105 , the second node 110 , and the third node 115 may communicate and share resources with each other via the controller/service VM 130 and/or the hypervisor 125 .
- the first node 105 , the second node 110 , and the third node 115 may have attributes that are typically needed or desired in nodes of a virtual computing system (e.g., the virtual computing system 100 ).
- One or more of the first node 105 , the second node 110 , and the third node 115 may also be organized in a variety of network topologies, and may be termed as a “host” or “host machine.”
- one or more of the first node 105 , the second node 110 , and the third node 115 may include one or more processing units configured to execute instructions.
- the instructions may be carried out by a special purpose computer, logic circuits, or hardware circuits of the first node 105 , the second node 110 , and the third node 115 .
- the processing units may be implemented in hardware, firmware, software, or any combination thereof.
- execution is, for example, the process of running an application or the carrying out of the operation called for by an instruction.
- the instructions may be written using one or more programming language, scripting language, assembly language, etc. The processing units, thus, execute an instruction, meaning that they perform the operations called for by that instruction.
- the processing units may be operably coupled to the storage pool 140 , as well as with other elements of the respective first node 105 , the second node 110 , and the third node 115 to receive, send, and process information, and to control the operations of the underlying first, second, or third node.
- the processing units may retrieve a set of instructions from the storage pool 140 , such as, from a permanent memory device like a read only memory (ROM) device and copy the instructions in an executable form to a temporary memory device that is generally some form of random access memory (RAM).
- ROM and RAM may both be part of the storage pool 140 , or in some embodiments, may be separately provisioned from the storage pool.
- the processing units may include a single stand-alone processing unit, or a plurality of processing units that use the same or different processing technology.
- the direct-attached storage 150 may include a variety of types of memory devices.
- the direct-attached storage 150 may include, but is not limited to, any type of RAM, ROM, flash memory, magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips, etc.), optical disks (e.g., compact disk (CD), digital versatile disk (DVD), etc.), smart cards, solid state devices, etc.
- the network-attached storage 145 may include any of a variety of network accessible storage (e.g., the cloud storage 155 , the local storage area network 160 , etc.) that is suitable for use within the virtual computing system 100 and accessible via the network 135 .
- the storage pool 140 including the network-attached storage 145 and the direct-attached storage 150 may together form a distributed storage system configured to be accessed by each of the first node 105 , the second node 110 , and the third node 115 via the network 135 and the controller/service VM 130 , and/or the hypervisor 125 .
- the various storage components in the storage pool 140 may be configured as virtual disks for access by the user VMs 120 .
- Each of the user VMs 120 is a software-based implementation of a computing machine in the virtual computing system 100 .
- the user VMs 120 emulate the functionality of a physical computer.
- the hardware resources, such as processing unit, memory, storage, etc., of the underlying computer e.g., the first node 105 , the second node 110 , and the third node 115
- the hypervisor 125 is virtualized or transformed by the hypervisor 125 into the underlying support for each of the plurality of user VMs 120 that may run its own operating system and applications on the underlying physical resources just like a real computer.
- the user VMs 120 are compatible with most standard operating systems (e.g.
- the hypervisor 125 is a virtual machine monitor that allows a single physical server computer (e.g., the first node 105 , the second node 110 , third node 115 ) to run multiple instances of the user VMs 120 , with each user VM sharing the resources of that one physical server computer, potentially across multiple environments.
- a single physical server computer e.g., the first node 105 , the second node 110 , third node 115
- multiple workloads and multiple operating systems may be run on a single piece of underlying hardware computer (e.g., the first node, the second node, and the third node) to increase resource utilization and manage workflow.
- the user VMs 120 are controlled and managed by the controller/service VM 130 .
- the controller/service VM 130 of each of the first node 105 , the second node 110 , and the third node 115 is configured to communicate with each other via the network 135 to form a distributed system 165 .
- the hypervisor 125 of each of the first node 105 , the second node 110 , and the third node 115 may be configured to run virtualization software, such as, ESXi from VMWare, AHV from Nutanix, Inc., XenServer from Citrix Systems, Inc., etc., for running the user VMs 120 and for managing the interactions between the user VMs and the underlying hardware of the first node 105 , the second node 110 , and the third node 115 .
- the controller/service VM 130 and the hypervisor 125 may be configured as suitable for use within the virtual computing system 100 .
- the network 135 may include any of a variety of wired or wireless network channels that may be suitable for use within the virtual computing system 100 .
- the network 135 may include wired connections, such as an Ethernet connection, one or more twisted pair wires, coaxial cables, fiber optic cables, etc.
- the network 135 may include wireless connections, such as microwaves, infrared waves, radio waves, spread spectrum technologies, satellites, etc.
- the network 135 may also be configured to communicate with another device using cellular networks, local area networks, wide area networks, the Internet, etc.
- the network 135 may include a combination of wired and wireless communications.
- one of the first node 105 , the second node 110 , or the third node 115 may be configured as a leader node.
- the leader node may be configured to monitor and handle requests from other nodes in the virtual computing system 100 . If the leader node fails, another leader node may be designated.
- first node 105 the second node 110 , and the third node 115 may be combined together to form a network cluster (also referred to herein as simply “cluster.”)
- cluster all of the nodes (e.g., the first node 105 , the second node 110 , and the third node 115 ) in the virtual computing system 100 may be divided into one or more clusters.
- One or more components of the storage pool 140 may be part of the cluster as well.
- the virtual computing system 100 as shown in FIG. 1 may be part of one cluster. Multiple clusters may exist within a given virtual computing system.
- the user VMs 120 that are part of a cluster may be configured to share resources with each other.
- one or more of the user VMs 120 may be configured to have a search computing system 170 .
- the search computing system 170 may be provided on one or more of the user VMs 120 of the leader node, while in other embodiments, the search computing system 170 may be provided on another node.
- the search computing system 170 has been shown as being provided on one of the user VMs 120 , in some embodiments, the search computing system may be provided on multiple user VMs. In yet other embodiments, the search computing system 170 may be provided on a computing machine that is outside of the first node 105 , the second node 110 , and the third node 115 , but connected to those nodes in operational association.
- the computing machine on which the search computing system 170 is provided may be either within the virtual computing system 100 or outside of the virtual computing system and operationally associated therewith.
- the search computing system 170 may be connected to for receiving data from one or more clusters within the virtual computing system 100 .
- a single instance of the search computing system 170 or multiple instances of the search computing system, with each search computing system instance being connected to one or more clusters may be provided.
- search computing system 170 may be used to receive search queries from a user and provide results back to the user in response to the received search queries.
- the search results may correspond to data received back from the components of the cluster(s) that are connected to and communicating with the search computing system 170 . Additional details of the search computing system are provided in U.S. application Ser. No. 15/143,060, filed on Apr. 29, 2016, the entirety of which is incorporated by reference herein.
- the search computing system 170 may be used for troubleshooting purposes as well.
- the search computing system 170 may be used by a user to run search queries to identify various undesirable conditions within the virtual computing system 100 .
- the search computing system 170 is associated with a learned metric system (See FIG. 2 ) and a configuration system (See FIG. 2 ) to effectively and efficiently detect those undesirable conditions.
- each of the user VMs 120 also includes one or more software applications 175 that are designated to perform one or more functions, tasks, or activities.
- the software applications 175 may be user applications such as word processing applications, multimedia applications, database applications, photo editing applications, web based applications, etc.
- the software applications 175 may also be system applications that are configured to run, boot, or otherwise manage the operation of the underlying instance of the user VMs 120 or the virtual computing system 100 in general.
- the software applications 175 may include a combination of user applications and system applications.
- the software applications 175 may be configured in a variety of ways.
- the software applications 175 may be a stand-alone application or be part of an application suite or enterprise software.
- the software applications 175 are intended to include any type of software applications that are suitable for use within a virtual environment, such as the virtual computing system 100 .
- the software applications 175 may be configured to interface with the search computing system 170 , such that by using the search computing system, the user may run search queries to obtain statistics related to the software applications 175 , as discussed below.
- the search computing system 200 includes a search interface 205 that is configured to receive search queries from the user and provide search results back to the user.
- the search computing system 200 is a contextual search system that identifies the context of a search query and particularly, identifies the intent of the user in running the search query.
- the search computing system 200 may identify the intent of the user by analyzing the search query, as detailed below, to determine whether the user is in a troubleshooting mode, exploration mode, a management mode, or another type of work flow mode.
- the search computing system 200 may return results back based upon the identified intent of the user.
- the search interface 205 communicates with a query parser 210 .
- the query parser 210 parses the search query, converts the parsed search query into a structured query, retrieves, compiles, and returns the search results back to the search interface 205 .
- the query parser 210 communicates with database 215 and structured query database 220 .
- Each of the search interface 205 , the query parser 210 , the database 215 , and the structured query database 220 is described in greater detail below.
- the search computing system 200 is communicably coupled with a configuration system 225 .
- the configuration system 225 is used to configure metrics for software applications 230 , as described below. By configuring metrics for the software applications 230 , certain statistics or data pertaining to those software applications may be collected. Statistics or data collected by the configured metrics may be searched using a search query in the search interface 205 .
- the search computing system 200 is also communicably coupled with a learned metric system 235 , which may be used to learn the metrics and create correlations related to the software applications 230 based upon the search queries that are being run by the user.
- the learned metric system 230 may be part of the search computing system 200 .
- the search interface 205 includes a user interface 240 having a search box 245 for receiving search queries from the user and a search display box 250 for displaying the search results retrieved in response to the search queries entered into the search box.
- the user interface 240 is configured to receive information from and provide information back to the user.
- the user interface 240 may be any suitable user interface.
- the user interface 240 may be an interface for receiving user input and/or machine instructions for entry into the search box 245 .
- the user interface 240 may use various input technologies including, but not limited to, a keyboard, a stylus and/or touch screen, a mouse, a track ball, a keypad, a microphone, voice recognition, motion recognition, disk drives, remote controllers, input ports, one or more buttons, dials, joysticks, etc. to allow an external source, such as the user, to enter information into the search box 245 .
- the user interface 240 may also be configured to provide an interface for presenting information from the search computing system 200 to external systems, users, memory, etc.
- the user interface 240 may display the search results within the search display box 250 .
- the user interface 240 may include an interface for a printer, speaker, alarm/indicator lights, etc. to provide or augment the search results.
- the user interface 240 can be provided on a color display, a cathode-ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, etc. Further, only certain features of the user interface 240 are shown herein.
- the user interface 240 may include navigational menus, adjustment options, adjustment settings, adjustment display settings, etc.
- the user interface 240 may also be configured to send information to and receive information from the query parser 210 and any additional components within the virtual computing system 100 that are deemed desirable to communicate with the search interface 205 .
- the user inputs a search query into the search box 245 and interacts with (e.g., click, press-and-hold, roll or hover over, etc.) a search button 255 to send the search query for further processing and retrieval of search results.
- the search interface 205 and particularly, the search box 245 may be configured to receive and recognize a variety of configurations of the search query.
- the user may input the search query in the form of keywords. Keywords are pre-defined terms or phrases that are understood by the search computing system 200 . A list of all keywords understood by the search computing system 200 may be stored within (e.g., the database 215 ) or accessible by the search computing system. The list of keywords may also be made available to the user.
- Entity type keywords may include the different entities, such as, clusters, nodes, virtual machines, virtual disks, software applications, and other hardware, software, storage, virtual clouds, and data center components that make up the virtual computing system 100 .
- “Properties” keywords include various attributes, such as type of operating system, number of processing units, number of storage units, etc. of each “entity type.” “Properties” keywords may also include various metrics associated with the “entity type,” as well as values of a given attribute, such as the value of an IP address, values of various statistics and metrics, such as processing unit utilization, disk space, etc.
- the “identifiers” keywords may include any identification information that may be used to uniquely identify an “entity type.”
- the “identifiers” keywords may include entity name (e.g., host name, cluster name, etc.), entity version, or any other identifying information that may be used to uniquely identify and distinguish one “entity type” from another “entity type” within a cluster.
- the “actions” keywords may include any actions that a particular “entity type” may be authorized to perform.
- “actions” keywords may include create, modify, delete, add, etc. that an “entity type” may perform.
- the user may enter the search query in the form of an expression.
- Expressions may include phrases or keywords that are separated by an operator.
- the operator may also include advanced filter values (e.g., contains, does not contain, etc.).
- a valid expression includes a left hand side term and a right hand side term separated by the operator.
- the left hand side term may be a keyword or a commonly used, “human friendly,” word.
- the right hand side term may be a value of the left hand side term.
- the left hand side term, “version” may be a recognized keyword (or a commonly used term that may be translated into a recognized keyword by the search computing system 200 ) and the right hand side term, “5.0,” is a value of the left hand side term, “version.”
- a list of all recognized operators may be stored within or be accessible by the search computing system 200 .
- the user may enter an Internet Protocol (IP) address as the search query.
- IP Internet Protocol
- the user may simply use “human friendly” words to construct the search query, which may then be translated by the query parser 210 into recognized keywords.
- the user may enter the search query in the form of keywords, expressions, IP addresses, “human-friendly” terms, or a combination thereof.
- the search interface 205 may also provide other features in the search box 245 .
- the search box 245 may have an auto-complete feature, such that as the user is inputting (e.g., typing) the search query, the search interface suggests options to complete the query.
- the search box 245 may also suggest synonyms, alternate terms, and/or keywords that the user may use as part of the search query. Additional features of the search query are described in the U.S. application Ser. No. 15/143,060 mentioned above.
- the search query entered into the search box 245 is sent to the query parser 210 .
- the query parser 210 includes a keyword block 260 a , an expression block 260 b , an IP address block 260 c , and a result generator 265 .
- the query parser 210 receives the search query from the search interface 205 and converts that query into a structured query using a tokenizer 270 .
- the tokenizer 270 of the query parser 210 may break or tokenize the search query and particularly, the characters of the search query, into a plurality of tokens. For each token, the tokenizer 270 may parse that token into recognized keywords, expressions, and IP addresses.
- the tokenizer 270 may communicate with the keyword block 260 a , the expression block 260 b , and the IP address block 260 c to parse the search query.
- the tokenizer 270 may also convert any “human-friendly” terms in the search query into recognized keywords. After parsing each token, the tokenizer 270 may also convert all of the tokens of the search query into one structured query that is usable by the search computing system 200 .
- the tokenizer 270 may also include or be in communication with additional components such as a ranking block to rank the keywords, a relationship block to identify relationships between the keywords, a matching block to match keywords and assign scores, etc. to parse the search query and covert the search query into a structured query. Additional details of converting the search query into a structured query are provided in the above mentioned U.S. application Ser. No. 15/143,060, again, the entirety of which is incorporated by reference herein.
- the keyword block 260 a may include a list of all keywords recognized by the search computing system 200 .
- the expression block 260 b may include a list of all recognized expressions
- the IP address block 260 c may include a list of all recognized IP addresses.
- one or more of the keyword block 260 a , the expression block 260 b , and the IP address block 260 c may be part of the database 215 or combined with one another, or another database within the search computing system 200 .
- the database 215 itself may be the same as, or a part of, the storage pool 140 .
- the database 215 may be separate from the storage pool 140 and may be connected to the storage pool 140 in operational association.
- the keyword block 260 a and/or the expression block 260 b may include a correlation of “human-friendly” words into recognized keywords.
- the structured queries may be stored within the structured query database 220 . Although shown as a separate database, in some embodiments, the structured query database 220 may be part of the database 215 , the keyword block 260 a , the expression block 260 b , the IP address block 260 c , and/or another database within the search computing system 200 .
- the structured queries may also be provided to the result generator 265 .
- the result generator 265 may be configured to access the database 215 (as well as other databases accessible to the search computing system 200 ) to gather results corresponding to the structured queries.
- the result generator 265 may aggregate and sort the gathered results and display those results within the search display box 250 .
- the search display box 250 may be divided into various boxes, such as a summary box 275 a , an alerts box 275 b , a performance metrics box 275 c , a metrics statistics box 275 d , and other information box 275 e .
- the summary box 275 a may display an overall summary of the search results
- the alerts box 275 b may display any alerts that may have been gathered as part of the search results
- the performance metrics box 275 c may display results pertaining to various performance metrics
- the metric statistics box 275 d may display data pertaining to configured metrics of the software applications 230
- the other information box 275 e may list any other pertinent data that may have been uncovered by the result generator 265 .
- the result generator 265 may sort the search results to be displayed within these various boxes of the search display box 250 . Further, the results displayed within each of the summary box 275 a , the alerts box 275 b , the performance metrics box 275 c , the metrics statistics box 275 d , and the other information box 275 e may or may not be interactive. If interactive, the user may interact with (e.g., click) a particular item within those boxes to view/access additional information related to that item. Some of the boxes may be empty if there are no results to display.
- the search display box 250 may include a configuration settings box 275 f to view or change the settings for how the search results are displayed within the display box, and adjust various settings pertaining to the search interface 205 .
- the configuration settings box 275 f may be provided outside of the search display box 250 .
- the configuration system 225 is used to configure metrics related to the software applications 230 .
- the software applications 230 are analogous to the software applications 175 , discussed in FIG. 1 above. It is to be understood that although only two of the software applications 230 are shown in FIG. 2 , in other embodiments, greater than or fewer than two software applications, with each of the application in communication with the configuration system 225 may be used. Further, although the configuration system 225 and the software applications 230 have been shown as being separate from, but in operational association with, the search computing system 200 , in other embodiments, either or both of the configuration interface and the software applications may be provided as part of the search computing system.
- each of the software applications 230 may be preconfigured (e.g., at the time of creation or installation) with a plurality of metrics.
- each of the software applications 230 may include metrics 280 a , 280 b , and 280 c .
- three of the metrics 280 a , 280 b , and 280 c are shown in each of the software applications 230 , in other embodiments, fewer than or greater than three metrics may be used in each software application. Further, each of the software applications 230 may include a different number of metrics.
- the metrics 280 a , 280 b , and/or 280 c may be related to performance measures experienced by end users of the software applications, and/or related to measuring the computational resources used by the software applications.
- the metrics 280 a , 280 b , and/or 280 c may be related to number of transactions per second processed by the software applications 175 , response time of the software applications, CPU utilization, latency, memory parameters, buffer sizes, etc.
- the metrics 280 a , 280 b , and 280 c of each of the software applications 230 may be different based upon the functionality of that software application. For example, a software application that is designed for word processing may have different metrics than a software application that is designed for image processing.
- the metrics 280 a , 280 b , and 280 c depend upon the type and functionality of the software applications 230 with which the metrics are associated.
- Each of the metrics 280 a , 280 b , and 280 c is used to collect statistics or data from the respective one of the software applications 230 .
- the data that is collected depends upon the type of information that the particular one of the metrics 280 a , 280 b , and 280 c is designed to collect.
- a metric designed for CPU utilization may collect data pertaining to resource usage of the underlying software application.
- a metric designed for latency may collect data pertaining to latency of the underlying software application.
- the metrics 280 a , 280 b , and 280 c are configured to collect the data discussed above when the underlying instance of the software applications 230 is running, whether actively or passively in the background.
- the data collected by the metrics 280 a , 280 b , and 280 c may provide valuable insights into the operation of the software applications 230 , as discussed above.
- the user may run a search query using the search interface 205 to review the collected data to identify any currently occurring or impending problems with the software applications 230 in real-time.
- the metrics 280 a , 280 b , and 280 c may be configured by defining various filters (e.g., limiting parameters or attributes) and creating statistics counters 285 a , 285 b , and 285 c , respectively, for the configured metrics using the configuration system 225 .
- the configured metrics may be stored within the configuration system 225 , a database associated with the software applications 230 , or any other database associated with the search computing system 200 .
- the user may obtain a real-time view of the operation of the software applications 230 and identify any issues related to those software applications that may need attention.
- each of the metrics 280 a , 280 b , and 280 c has been described as being configured and having a corresponding instance of the statistics counters 285 a , 285 b , and 285 c , in some embodiments, not all of the metrics need to be configured. For example, only those ones of the metrics 280 a , 280 b , and 280 c for which the user desires to review the collected data using the search interface 205 may be configured. Additionally, in some embodiments, one or more of the metrics 280 a , 280 b , and 280 c may have multiple configurations, with each configuration varying from the other configurations in some aspect (e.g., by using different filters or different values of the same filters).
- each of the metrics 280 a , 280 b , and 280 c may have a keyword associated therewith that is recognized by the search computing system 200 . Those keywords may be stored within the keyword block 260 a .
- the statistics counters 285 a , 285 b , and 285 c have been shown as being part of the software applications 230 , in other embodiments, the statistics counters may instead or additionally be stored within the configuration system 225 or within any other database associated with the search computing system 200 .
- the metrics 280 a , 280 b , and 280 c may be classified into two categories: preconfigured metrics and user injected metrics.
- Preconfigured metrics are those metrics that are already configured within the software applications 230 at the time of creation or installation of the software application.
- the preconfigured statistics counters are not configured by the users, and the users may not have the ability to vary the configuration (e.g., change filters) of the preconfigured metrics.
- the preconfigured metrics may be stored within a preconfigured metric block 290 a of the configuration system 225 .
- the user injected metrics are configured by the user.
- the user may configure one or more of the metrics 280 a , 280 b , and 280 c by assigning one or more filters, as discussed below.
- the user may also create the statistics counters 285 a , 285 b , 285 c for the configured metrics. Additionally, the user may have the ability to delete or modify the user injected metrics.
- the user injected metrics may be created using a user injected block 290 b of the configuration system 225 .
- the configured metrics and their corresponding statistics counters may be stored within a metric database 295 of the configuration system 225 .
- the metric database 295 has been shown separate from the preconfigured metric block 290 a and the user injected block 290 b , in some embodiments, one or more of those components may be integrated together.
- the learned metric system 235 is used to learn the metrics 280 a , 280 b , 280 c and their various attributes (e.g., parameters) from the search queries that are run by the user.
- the metrics that are learned by the learned metric system 235 may or may not have been configured by the user.
- the learned metrics may include preconfigured metrics, the user injected metrics, or any other metric that is associated with the software applications 230 .
- the learned metric system 235 may learn metrics (or attributes of those metrics) based upon the frequency of a search query or based upon a pattern of search queries run by the user.
- the learned metric system 235 may be configured to look for certain patterns of search queries. For example, if the learned metric system 235 determines that the user is running a search query for a particular one of the software applications 230 (e.g., “Application A”), followed by a search query for “CPU utilization greater than 75%,” the learned metric system 235 may infer that the user is interested in searching for “CPU utilization greater than 75%” in the “Application A.” The learned metric system 235 may create a correlation between the “Application A” and the “CPU utilization greater than 75%,” and store the correlation within the learned metric system.
- a particular one of the software applications 230 e.g., “Application A”
- search query for “CPU utilization greater than 75%” the learned metric system 235 may infer that the user is interested in searching for “CPU utilization greater than 75%” in the “Application A.”
- the learned metric system 235 may create a correlation between the “Application A”
- the learned metric system 235 may identify that a correlation exists for “Application A” and the search interface 205 may propose “CPU utilization greater than 75%” in an auto-complete feature while the user is typing the search query, or alternatively, when displaying the results within the search display box 250 , the search interface may obtain results relating to “CPU utilization greater than 75%” for “Application A.” Likewise, if the user searches for “CPU utilization greater than 75%,” the learned metric system 235 may identify that a correlation exists with “Application A” and obtain results CPU utilization results related to “Application A.” Thus, by identifying and creating correlations using the learned metric system 235 , the search computing system 200 attempts to determine the intent of the user in running a particular search, and provides appropriate search results based upon the identified intent, thereby saving the user's time and providing results that are useful to the user.
- the learned metric system 235 may be configured to identify and create correlations from more than two consecutive search queries, or possibly from non-consecutive search queries as well. For example, if the user has searched for “Application A,” which is a word processing software application (e.g., the software applications 230 ) followed by “Application B,” which is an image processing software application, and further followed by “Metric A,” which relates to “Application A” but not “Application B,” then the learned metric system 235 may identify a correlation between “Application A” and “Metric A” even though a search for “Application B” was run in between.
- “Application A” is a word processing software application (e.g., the software applications 230 ) followed by “Application B,” which is an image processing software application, and further followed by “Metric A,” which relates to “Application A” but not “Application B”
- the learned metric system 235 may identify a correlation between “Application A” and
- the learned metric system 235 may be configured to identify correlations in search queries based upon rules programmed within the learned metric system. The rules may specify what correlations are deemed acceptable.
- the learned metric system 235 may include information pertaining to some or all of the software applications 230 associated with the search computing system 200 , as well as the metrics 280 a , 280 b , and 280 c that are associated with one of the software applications.
- the learned metric system 235 may also include commonly used thresholds, values, attributes, units, and/or other information of the data that those metrics are configured to collect from the software applications. In other embodiments, additional, fewer, or different information may be used to identify correlations.
- the learned metric system 235 may collaborate with the query parser 210 to obtain structured queries and identify keywords indicative of correlations in accordance with the programmed rules.
- the learned metric system 235 may look for the frequency of a particular search query. For example, if the user has searched for a particular metric (e.g., the metrics 280 a , 280 b , 280 c ), an attribute of the particular metric, or a combination thereof greater than a predetermined number of times within a predetermined number of period, the learned metric system 235 may infer that the user is interested in monitoring the particular metric identified from the search query, and learn that metric.
- a particular metric e.g., the metrics 280 a , 280 b , 280 c
- the search computing system 200 may return pertinent results even if the user has not created a statistics counter (e.g., the statistics counters 285 a , 285 b , 285 c ) for a particular metric (e.g., the metrics 280 a , 280 b , 280 c ).
- a statistics counter e.g., the statistics counters 285 a , 285 b , 285 c
- a particular metric e.g., the metrics 280 a , 280 b , 280 c .
- the search computing system 200 is configured to communicate with the search computing system 200 to both learn the metrics, create correlations, as well as to return results related to the learned metrics and correlations.
- the learned metric system 235 may be part of the configuration system or the search computing system.
- the learned metric system 235 may work in collaboration with at least the query parser 210 for converting the search queries into structured queries, and for identifying keywords, expressions, and IP addresses within the search queries.
- the learned correlations and metrics may be stored within the database 215 , the metric database 295 , or another database associated with the search computing system 200 .
- the user injected block 300 may be used by the user to configure one or more of the metrics 280 a , 280 b , and 280 c .
- the user injected block 300 may also be used to create new statistics counters as part of the configuration process, as well as to edit and delete existing statistics counters.
- the user injected block 300 may include a configuration interface 305 .
- the configuration interface 305 may present various options to the user for managing existing statistics counters or for creating new statistics counters.
- the configuration interface 305 may include a configure metric block 310 for enabling the user to configure a metric and to create a new statistics counter, a delete block 315 for deleting existing statistics counters, and a modify block 320 for editing (e.g., changing the filters) the existing statistics counters.
- a configure metric block 310 for enabling the user to configure a metric and to create a new statistics counter
- a delete block 315 for deleting existing statistics counters
- a modify block 320 for editing (e.g., changing the filters) the existing statistics counters.
- the configuration interface 305 is only an example. The size, shape, and design of the configuration interface 305 may vary from one embodiment to another. Likewise, the arrangement and other configuration of the configure metric block 310 , the delete block 315 , the modify block 320 , as well as any other feature provided within the configuration interface 305 may vary from one embodiment to another. Furthermore, in some embodiments, one or more of the configure metric block 310 , the delete block 315 , and the modify block 320 may be merged together into a single feature. Additionally, only some features of the configuration interface 305 are shown herein. Nevertheless, the configuration interface 305 may include additional features that may be desired. Generally speaking, the configuration interface 305 may have similar features as the user interface 240 .
- the user interacts with (e.g., click on) the configure metric block 310 .
- the user may be taken to configuration interface 325 of FIG. 3B .
- the user is presented with an application list 330 .
- the application list 330 may include a list of all software applications (e.g., the software applications 230 ) that are associated with the search computing system 200 and that have metrics that may be configured by the user.
- the user may interact with (e.g., click on) the software application within the application list 330 for which the user desires to configure metrics for. For example, as shown, if the user desires to configure metrics for “Application 1” in the application list 330 , the user may interact with (e.g., click on) “Application 1.”
- the configurable metrics list 335 may include a list of metrics that are available to the user to configure. The user may select (e.g., by clicking on) the metric from the configurable metrics list 335 that the user desires to configure. For example, if the user desires to configure “Metric 1,” the user may interact with (e.g., click on) “Metric 1” to open another dialog box related to configurable filters 340 .
- the configurable filters 340 may include a list of all filters that are available for the selected “Metric 1” that the user may apply to the metric.
- the configurable filters 340 may include an upper threshold filter, a lower threshold filter, or any other configurable attribute suitable for being applied as a filter for “Metric 1.”
- the user may assign specific filter values to one or more selected filters within the configurable filters 340 .
- the user may interact with the specific filter within the configurable filters 340 that the user desires to apply to “Metric 1.”
- a filter within the configurable filters 340 is an upper threshold filter
- the user may interact with (e.g., click on) the upper threshold filter to set the desired value for the upper threshold.
- the accepted filter values may be presented to the user in the form of a drop down list.
- there may be predefined limits within with the filter values may be set by the user.
- the conditions imposed on a particular filter value may depend upon the type of application (e.g., “Application 1”), type of metric (e.g., “Metric 1”), as well as the type of filter (e.g., “upper threshold”) that the user is configuring. For example, for a CPU utilization metric, the upper threshold may have a filter value in percentage form, while for a latency metric, the upper threshold may have a filter value in seconds (or another unit of time). Furthermore, the values of the filters may vary depending upon the application (e.g., “Application 1”).
- the configurable filters 340 may include a variety of filter options that may be suitable for the selected metric (e.g., “Metric 1”). However, the user need not assign a filter value to each filter option provided within the configurable filters 340 . In some embodiments, the user may assign filter values only to the desired filters options within the configurable filters 340 . For example, in some embodiments, the user may only assign an “upper threshold” filter value, and not a “lower threshold” filter value, etc.
- the user may create a statistics counter for the configured metric, “Metric 1.” For example, in some embodiments, the user may assign the created statistics counter a counter name. In other embodiments, the user injected block 300 may assign the created statistics counter a name. In some embodiments, the name of the created statistics counter may include the name of the metric (e.g., “Metric 1”) for which the statistics counter has been created.
- the created statistics counter may be stored within a statistics counters list 345 . Although the statistics counters list 345 has been shown as being part of the user injected block 300 , in some embodiments, the statistics counters list may be part of the metric database 295 and/or the software applications 230 .
- the configuration interface 325 is only an example. In other embodiments, the configuration interface 325 and particularly, the various dialog boxes (e.g., the application list 330 , the configurable metrics list 335 , configurable filters 340 , and the statistics counters list 345 ) may vary from one embodiment to another. Additionally, the dialog boxes (e.g., the application list 330 , the configurable metrics list 335 , configurable filters 340 , and the statistics counters list 345 ) have been shown together within the configuration interface 325 for ease of explanation. In other embodiments, the configuration of those dialog boxes, how they are displayed, arranged, or otherwise designed may vary. Further, additional options may be provided within one or more of those dialog boxes in other embodiments.
- one or more of the application list 330 , the configurable metrics list 335 , configurable filters 340 , and the statistics counters list 345 may include only those options that are configurable by the user.
- one or more of the application list 330 , the configurable metrics list 335 , configurable filters 340 , and the statistics counters list 345 may include those options as well that are not configurable by the user. Such options may be provided such that while they are visible to the user, the user may not be able to interact with (e.g., click on) those options or configure those options in any way. For example, such options may be “grayed-out.”
- the user may delete or modify the existing statistics counters using the configuration interface 305 .
- the user may interact with the delete block 315 .
- the user may be presented with the statistics counters list 345 (or a similar list with all the created statistics counters), and the user may select the statistics counter to be deleted from that list.
- modify an existing statistics counter the user may interact with the modify block 320 .
- the modify block 320 the user may be presented with all of the created statistics counters, as well as their configured (and non-configured) filter values. The user may change the filter values and save the changes to modify the configuration of a metric.
- the user injected block 300 may be used for configuring one or more of the metrics 280 a , 280 b , 280 c and creating, deleting, or modifying statistics counters (e.g., the statistics counters 285 a , 285 b , 285 c ) for those metrics.
- the learned metric system 400 is used for learning metrics (and/or their associated attributes) and/or creating correlations that may be used to assist the user in conducting searches using the search interface 205 .
- the learned metric system 400 includes a learned threshold block 405 and a learned correlation block 410 .
- the learned threshold block 405 is used to learn frequently searched metrics and/or their associated thresholds.
- the learned correlation block 410 is used to identify and create correlations based upon patterns of search queries that are run by the user.
- Each of the learned threshold block 405 and the learned correlation block 410 includes a counter block 415 and a comparator block 420 .
- the counter block 415 of the learned threshold block 405 is used to keep track of a number of times a particular search query for a particular metric has been run by the user.
- the learned threshold block 405 identifies that search query for learning.
- the learned thresholds block 405 may store the search query (e.g., the structured query corresponding to that search query) within a database.
- the counter block 415 of the learned correlation block 410 may be used to identify a number of times that a particular pattern of the search queries has occurred.
- the learned correlation block 410 may create a correlation based on that pattern.
- the created correlation may be in the format, for example, ⁇ name of software application> ⁇ metric> ⁇ threshold>.
- a correlation may look like ⁇ Application A CPU utilization greater than 75%>.
- Other formats may be used for creating correlations as well in other embodiments.
- the learned metric system 400 may learn the search queries that the user is running to enable the search computing system 200 to provide faster and more accurate results.
- the learning of the search queries is particularly useful when the user has not created a statistic counter for a particular metric.
- the process 500 may include additional, fewer, or different operations, depending on the particular embodiment.
- the user enters a search query into the search box 245 of the search interface 205 .
- the format of the search query may take various forms.
- the search query may include the name of a software application (e.g., the software applications 230 ), the name of a particular metric associated with the software application, and/or a value of the metric.
- performance keywords e.g., less than, greater than, etc.
- the search query may be in the form of keywords, expressions, “human friendly” words, IP addresses, or a combination thereof.
- the user interacts with (e.g., clicks on) the search button 255 .
- the input search query is sent to the query parser 210 , which tokenizes the search query, and categorizes each token into keywords, expressions, and IP addresses. Based upon the categorization, the query parser 210 converts the search query into a structured query, which may be stored within the structured query database 220 .
- the query parser 210 determines from the structured query of the operation 510 whether the search query includes keywords or expressions that may be indicative of an existing statistics counter (e.g., the statistics counters 285 a , 285 b , 285 c ), a metric related to one or more of the software applications 230 (e.g., the metrics 280 a , 280 b , 280 c ), and/or a value of that metric.
- an existing statistics counter e.g., the statistics counters 285 a , 285 b , 285 c
- a metric related to one or more of the software applications 230 e.g., the metrics 280 a , 280 b , 280 c
- the query parser 210 may access the metric database 295 to retrieve the data published to that statistics counter by the associated metric at operation 520 .
- the query parser 210 may identify the statistics counters in the search query based upon keywords in the keyword block 260 a that may have been associated with the created statistics counters, by accessing the user injected block 290 b and/or the metric database 295 , both of which may have a list of all existing statistics counters.
- the query parser 210 may determine whether the metric and/or the value of the metric is a learned metric and if a correlation exists for that metric.
- the query parser 210 may access the learned metric system 235 to make such a determination.
- the result generator 265 may access one or more of the preconfigured metric block 290 a , the metric database 295 , the database 215 , and/or another database associated with the search computing system 200 to gather the results associated with the learned metric or the identified correlation.
- the result generator 265 may return the gathered results, at the operation 520 , on the search display box 250 and particularly within one or more of the summary box 275 a , the alerts box 275 b , the performance metrics box 275 c , the metrics statistics box 275 d , and/or the other information box 275 e .
- the process 500 then loops back to the operation 510 to wait for the next search query.
- the query parser 210 determines from the structured query that the search query is neither an existing statistics counter, nor a learned metric or a correlation
- the process 500 loops back to the operation 510 to wait for the next search query.
- the query parser 210 determines that the that the search query is neither an existing statistics counter, nor a learned metric or a correlation, but still relates to a metric and/or a value of the metric
- the result generator may still gather the results that may be associated with the metric and/or the value of the metric.
- results need not be limited to the software applications 230 .
- the result generator 265 may gather results from all components (including the software applications 230 ) that may be connected to the search computing system 200 .
- the gathered results may be displayed on the search display box 250 .
- these results may include data that the user may not be interested in and the user may be required to sift through the data to retrieve the desirable information. Therefore, establishing statistics counters, learning metrics, and/or creating correlations is a useful and efficient mechanism for obtaining the relevant results pertaining to the desired metrics of the software applications 230 quickly.
- FIG. 6 a flowchart outlining a process 600 for configuring a metric and creating a statistics counter is shown, in accordance with some embodiments of the present disclosure.
- the process 600 may include additional, fewer, or different operations, depending on the particular embodiment.
- the user accesses the user injected block 300 .
- the user selects a software application (e.g., from the application list 330 ) to create a statistics counter for.
- the selection is sent to the user injected block 300 at operation 610 , which presents the configurable metrics list 335 upon receiving the selection of the software application.
- the user selects a metric from the configurable metrics list 335 .
- the selection is sent back to the user injected block 300 at operation 615 , which in turn presents the configurable filters 340 to the user.
- the process 600 is described as the user selecting one metric from the configurable metrics list 335 , in some embodiments, the user may be able to select multiple metrics and configure all of the selected metrics simultaneously. In other embodiments, the user may be able to configure multiple metrics, but one at a time. Thus, the statistics counter that is created may be for a single metric or for multiple metrics of the software application selected by the user above.
- the user may set various filters corresponding to the metric(s) selected above. For example, the user may provide an upper threshold value, a lower threshold value, etc.
- the user injected block 300 receives the user's filter selections at operation 620 and creates a statistics counter at operation 625 . Specifically, in some embodiments, the user may assign a user friendly name to the newly created statistics counter. In addition to or instead of the user friendly name, the user injected block 300 may assign a keyword to the newly created statistics counter. The keyword associated with the newly created keyword may be stored within the keyword block 260 a . Additionally, the user injected block 300 stores the newly created statistics counter within the metric database 295 at operation 630 . In some embodiments, the statistics counter may be stored within another database associated with the search computing system 200 .
- the software applications 230 may publish the data corresponding to the metrics for which the statistics counters are created. Such data may be stored within the metric database 295 along with the statistics counters. Thus, when the user searches for a particular statistics counter, the search computing system 200 may access the metric database 295 to obtain real time data pertaining to the underlying metrics associated with a particular software application.
- the process 600 ends at operation 635 .
- the process 700 may include additional, fewer, or different operations, depending on the particular embodiment.
- the process 700 waits for a user to enter a search query in the search box 245 .
- the search computing system 200 converts the search query into a structured query, as outlined above.
- the structured query is provided to the learned metric system 235 , which identifies keywords indicative of metrics and/or thresholds associated with one or more of the software applications 230 .
- the learned metric system 235 may poll the structured query database 220 for new structured queries.
- the structured query database 220 and/or the query parser 210 may provide new structured queries to the learned metric system 235 .
- the learned metric system 235 and particularly, the learned threshold block 405 of the learned metric system may parse the structured query to identify keywords associated with metrics and/or thresholds of one or more of the software applications 230 . If the learned threshold block 405 identifies keywords associated with the metrics and/or thresholds of one or more of the software applications 230 , the learned threshold block updates a count value within the counter block 415 at operation 715 . At operation 720 , the learned threshold block 405 compares the count value with a predetermined threshold by using the comparator block 420 . If the count value is greater than the predetermined threshold, then the learned threshold block 405 learns the metric corresponding to the search query at operation 725 and stores the learned metric within the learned threshold block 405 .
- the learned metrics may be stored within the database 215 , the metric database 295 , or another database associated with the search computing system 200 .
- the process 700 the returns to the operation 710 to start learning another metric.
- the process of learning metrics may occur simultaneously with gathering of search results by the result generator 265 , as described in FIG. 5 above.
- the process 800 may include additional, fewer, or different operations, depending on the particular embodiment.
- the process 800 waits for a user to enter a search query in the search box 245 .
- the search computing system 200 converts the search query into a structured query, as outlined above. From the structured query, the search computing system 200 and particularly, the learned metric system 235 of the search computing system, identifies patterns of search queries relating to metrics and/or thresholds of one or more of the software applications 230 .
- the learned metric system 235 may poll the structured query database 220 for new structured queries, while in other embodiments, the structured query database 220 and/or the query parser 210 may provide the new structured queries to the learned metric system.
- the learned metric system 235 and particularly, the learned correlation block 410 of the learned metric system may parse the structured query to identify patterns of search queries related to one or more of the software applications 230 .
- the learned correlation block 410 may review the search queries received by the learned correlation block within a predetermined period of time preceding the structured query received at the operation 810 .
- the learned correlation block 410 may review a predetermined number of search queries received prior to the structured query received at the operation 810 . Based upon the review of the prior structured queries, the learned correlation block 410 identifies whether a specific pattern is formed. Rule or guidelines for correlating search queries as an acceptable pattern may be stored within the learned correlation block 410 .
- a rule may indicate that if the prior structured queries along with the current structured query received at the operation 810 includes the name of one or more of the software applications, one or more metrics or thresholds associated with those software applications, a correlation may be found. If the learned correlation block 410 identifies a correlation, the learned correlation block updates a count value within the counter block 415 at operation 815 . At operation 820 , the learned correlation block 410 compares the count value with a predetermined threshold by using the comparator block 420 . If the count value is greater than the predetermined threshold, then the learned correlation block 410 learns the correlation at operation 825 and stores the learned correlation within the learned correlation block 410 . By using the counter block 415 and the comparator block 420 , the learned correlation block 410 may identify commonly searched correlations and learn only those correlations that are frequently searched by the user.
- the learned correlation block 410 may be configured such that each time the learned correlation block identifies a correlation, that correlation is learned and saved. In such embodiments, the counter block 415 and the comparator block 420 may not be needed. Further, in some embodiments, the learned correlations may be stored within the database 215 , the metric database 295 , or another database associated with the search computing system 200 . The process 800 the returns to the operation 810 to start learning another search query. The process of identifying and creating correlations may occur simultaneously with learning metrics and gathering search results by the result generator 265 . It is also to be understood that a particular one or more of the metrics of the software applications 230 may be configured into one or more statistics counters, learned metrics, and/or be part of a correlation.
- the teachings of the present disclosure may also be used to configure metrics for other components of the virtual computing system.
- the teachings of the present disclosure may be applied to a troubleshooting infrastructure to identify problems, issues, or to otherwise gain insight relating to various troubleshooting parameters.
- a metric may be configured for CPU Utilization of the controller/service VM 130 . The configured metric may then be used to monitor issues with the controller/service VM 130 .
- the present disclosure may be applied to other components as well.
- the present disclosure provides a system and method for automatically monitoring one or more metrics of software applications that the user may desire to monitor.
- the user may configure the metrics that the user desires to monitor. Those metrics are configured by defining filters and creating statistics counters.
- the metrics may publish data to the statistics counters based upon the defined filters.
- the users may simply search for the statistics counters to obtain the real-time data pertaining to the metrics. Such data may offer a glimpse into any currently occurring or impending problems associated with the software application, and allow the user to pro-actively address those problems.
- the present disclosure provides a simple and effective mechanism to monitor the software applications within the virtual computing system in real-time.
- the present disclosure also provides a system and method to automatically learn metrics, as well as identify and create correlations for the metrics of the software applications based upon the search queries that are run by the user.
- the present disclosure aids the user in troubleshooting by timely identifying certain problems.
- any of the operations described herein may be implemented at least in part as computer-readable instructions stored on a computer-readable memory. Upon execution of the computer-readable instructions by a processor, the computer-readable instructions may cause a node to perform the operations.
- any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being “operably couplable,” to each other to achieve the desired functionality.
- operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.
- the phrase “A or B” will be understood to include the possibilities of “A” or “B” or “A and B.” Further, unless otherwise noted, the use of the words “approximate,” “about,” “around,” “substantially,” etc., mean plus or minus ten percent.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
- The following description is provided to assist the understanding of the reader. None of the information provided or references cited is admitted to be prior art.
- Virtual computing systems are widely used in a variety of applications. Virtual computing systems include one or more host machines running one or more virtual machines concurrently. The one or more virtual machines utilize the hardware resources of the underlying one or more host machines. Each virtual machine may be configured to run an instance of an operating system. Modern virtual computing systems allow several operating systems and several software applications to be safely run at the same time on the virtual machines of a single host machine, thereby increasing resource utilization and performance efficiency. However, present day virtual computing systems still have limitations due to their configuration and the way they operate.
- In accordance with some aspects of the present disclosure, a method is disclosed. The method includes receiving, by a search computing system of a virtual computing system, a search query via a search interface, converting, by the search computing system, the search query into a structured query, and identifying, by the search computing system, at least one of a configured metric, a learned metric, and a correlation from the structured query. The configured metric, the learned metric, and the correlation are based upon a particular metric associated with a software application of the virtual computing system. The configured metric is obtained by applying one or more filters to the particular metric, the learned metric is based upon a frequency of presence of the particular metric in the search query, and the correlation is based upon a pattern formed by the search query in conjunction with a subset of prior search queries. The method further includes displaying, by the search computing system, data related to the particular metric on the search interface, such that the data is based upon the configured metric, the learned metric, and the correlation identified within the structured query.
- In accordance with some other aspects of the present disclosure, a system is disclosed. The system includes a configuration system of a virtual computing system, the configuration system having a metric database configured to store one or more statistics counters created by the configuration system, and a processing unit. The processing unit is configured to receive a selection, via a configuration interface, of a software application, receive a selection, via the configuration interface, of a particular metric associated with the software application, and receive a selection, via the configuration interface, of one or more filter values associated with selected one of the particular metric. The processing circuit is further configured to apply the selected one of the particular metric and the one or more filter values to an instance of the one or more statistics counters, and store the instance of the one or more statistics counters within the metric database.
- In accordance with yet other aspects of the present disclosure, another method is disclosed. The method includes configuring, by a configuration system of a virtual computing system, a particular metric associated with a software application of the virtual computing system to obtain a configured metric. The configuring comprises applying one or more filter values to the particular metric. The method also includes receiving, by a search computing system of the virtual computing system, a search query via a search interface, identifying, by the search computing system, keywords within the search query indicative of the configured metric, and accessing, by the search computing system, the configuration system for obtaining data corresponding to the configured metric. The method additionally includes displaying, by the search computing system, the data on the search interface.
- The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the following drawings and the detailed description.
-
FIG. 1 is a block diagram of a virtual computing system, in accordance with some embodiments of the present disclosure. -
FIG. 2 is a block diagram of a search computing system, a configuration system, and a learned metric system connected together in operational association within the virtual computing system ofFIG. 1 , in accordance with some embodiments of the present disclosure. -
FIGS. 3A-3B are block diagrams of a user injected block of the configuration system ofFIG. 2 , in accordance with some embodiments of the present disclosure. -
FIG. 4 is a block diagram of the learned metric system ofFIG. 2 , in accordance with some embodiments of the present disclosure. -
FIG. 5 is an example flowchart outlining operations for performing a search operation, in accordance with some embodiments of the present disclosure. -
FIG. 6 is an example flowchart outlining operations for configuring a metric of a software application, in accordance with some embodiments of the present disclosure. -
FIG. 7 is an example flowchart outlining operations for learning the metric, in accordance with some embodiments of the present disclosure. -
FIG. 8 is an example flowchart outlining operations for learning correlations related to the metric, in accordance with some embodiments of the present disclosure. - The foregoing and other features of the present disclosure will become apparent from the following description and appended claims, taken in conjunction with the accompanying drawings. Understanding that these drawings depict only several embodiments in accordance with the disclosure and are, therefore, not to be considered limiting of its scope, the disclosure will be described with additional specificity and detail through use of the accompanying drawings.
- In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, and designed in a wide variety of different configurations, all of which are explicitly contemplated and make part of this disclosure.
- The present disclosure is generally directed to a search computing system and a configuration system associated with a virtual computing system. The search computing system operates in collaboration with the configuration system to provide real-time data pertaining to one or more metrics associated with a software application within the virtual computing system. The metrics provide various statistics related to the software application. For example, one of the metrics associated with the software application may be for central processing unit (CPU) utilization. The CPU utilization metric may collect statistics relating to the software application's usage of the various processing resources when the software application is running. By reviewing the statistics or data collected by the CPU utilization metric, the user may be able to identify performance problems associated with the software application. Similarly, other metrics associated with the software application may provide valuable insights about other operational and functional aspects of the software application.
- Traditionally, such data is included in error logs or reports after the software application has encountered a performance or another problem. Thus, traditionally the user reviews the data after the fact. The present disclosure provides a system and method by which the data may be viewed in real-time while the software application is running. Thus, the user may be able to monitor the software application in real-time. By reviewing the data in real-time, the user may identify a problem while it is occurring or predict a problem that is about to occur. Additionally, upon identifying a currently occurring or impending problem, the user may pro-actively take action to prevent the problem or at least reduce the impact of the problem.
- To monitor the software application by reviewing the data collected by the metrics in real-time, the user first configures the metrics that the user is interested in monitoring. To configure the metrics, the user uses the configuration system. Specifically, through the configuration system, the user may configure the metrics by defining various filters. The filters may include various thresholds, such as upper and lower thresholds, or any limiting attribute or parameter associated with the metric that the user is interested in monitoring. For example and with respect to the CPU utilization metric discussed above, the user may configure the CPU utilization metric by defining an upper threshold value (e.g., seventy five percent), a lower threshold value (e.g., twenty five percent), a range of threshold values (e.g., between twenty five and seventy five percent), etc. By configuring the CPU utilization metric, the CPU utilization metric may collect data from the software application that satisfies the defined filters. Therefore, for example, if the CPU utilization metric has been configured with an upper threshold value of seventy five percent, the CPU utilization metric collects data when the software application's usage of the various processing resources exceeds seventy five percent. Thus, based upon the parameters that the user is interested in monitoring, the user may configure the metrics with those parameters.
- Furthermore, by configuring the metrics, the user may easily search for the data collected by those metrics. Specifically, the user may run search queries using the search computing system to obtain the data collected by the metrics as search results. To distinguish one configured metric from another configured metric, the user may create a statistics counter for each configured metric. By creating the statistics counter for the configured metrics, the user may run search queries using the created statistics counters as well.
- The present disclosure also provides a learned metric system, which is configured to learn the metrics and associated parameters (e.g., thresholds) that the user commonly runs search queries for based upon a frequency of a particular search query. The learned metric system may also identify patterns within multiple search queries to create a correlation. The learned metrics or created correlations may or may not have been configured by the user. By automatically learning the metrics and creating correlations, the search computing system may access the learned metric system to return relevant search results to the user.
- Thus, the present disclosure provides an efficient and convenient mechanism for a user to monitor the health of a software application in real-time, identify problems or failures occurring or impending within the software application, and timely and efficiently address the identified problems or failures to prevent adverse impact on the software application and/or other aspects of the virtual computing system.
- Referring now to
FIG. 1 , avirtual computing system 100 is shown, in accordance with some embodiments of the present disclosure. Thevirtual computing system 100 includes a plurality of nodes, such as afirst node 105, asecond node 110, and athird node 115. Each of thefirst node 105, thesecond node 110, and thethird node 115 includes user virtual machines (VMs) 120 and ahypervisor 125 configured to create and run the user VMs. Each of thefirst node 105, thesecond node 110, and thethird node 115 also includes a controller/service VM 130 that is configured to manage, route, and otherwise handle workflow requests to and from theuser VMs 120 of a particular node. The controller/service VM 130 is connected to anetwork 135 to facilitate communication between thefirst node 105, thesecond node 110, and thethird node 115. Although not shown, in some embodiments, thehypervisor 125 may also be connected to thenetwork 135. - The
virtual computing system 100 may also include astorage pool 140. Thestorage pool 140 may include network-attachedstorage 145 and direct-attachedstorage 150. The network-attachedstorage 145 may be accessible via thenetwork 135 and, in some embodiments, may includecloud storage 155, as well as localstorage area network 160. In contrast to the network-attachedstorage 145, which is accessible via thenetwork 135, the direct-attachedstorage 150 may include storage components that are provided within each of thefirst node 105, thesecond node 110, and thethird node 115, such that each of the first, second, and third nodes may access its respective direct-attached storage without having to access thenetwork 135. - It is to be understood that only certain components of the
virtual computing system 100 are shown inFIG. 1 . Nevertheless, several other components that are commonly provided or desired in a virtual computing system are contemplated and considered within the scope of the present disclosure. Additional features of thevirtual computing system 100 are described in U.S. Pat. No. 8,601,473, the entirety of which is incorporated by reference herein. - Although three of the plurality of nodes (e.g., the
first node 105, thesecond node 110, and the third node 115) are shown in thevirtual computing system 100, in other embodiments, greater or fewer than three nodes may be used. Likewise, although only two of theuser VMs 120 are shown on each of thefirst node 105, thesecond node 110, and thethird node 115, in other embodiments, the number of the user VMs on the first, second, and third nodes may vary to include either a single user VM or more than two user VMs. Further, thefirst node 105, thesecond node 110, and thethird node 115 need not always have the same number of theuser VMs 120. Additionally, more than a single instance of thehypervisor 125 and/or the controller/service VM 130 may be provided on thefirst node 105, thesecond node 110, and thethird node 115. - Further, in some embodiments, each of the
first node 105, thesecond node 110, and thethird node 115 may be a hardware device, such as a server. For example, in some embodiments, one or more of thefirst node 105, thesecond node 110, and thethird node 115 may be an NX-1000 server, NX-3000 server, NX-6000 server, NX-8000 server, etc. provided by Nutanix, Inc. or server computers from Dell, Inc., Lenovo Group Ltd. or Lenovo PC International, Cisco Systems, Inc., etc. In other embodiments, one or more of thefirst node 105, thesecond node 110, or thethird node 115 may be another type of hardware device, such as a personal computer, an input/output or peripheral unit such as a printer, or any type of device that is suitable for use as a node within thevirtual computing system 100. In some embodiments, thevirtual computing system 100 may be part of a data center. - Each of the
first node 105, thesecond node 110, and thethird node 115 may also be configured to communicate and share resources with each other via thenetwork 135. For example, in some embodiments, thefirst node 105, thesecond node 110, and thethird node 115 may communicate and share resources with each other via the controller/service VM 130 and/or thehypervisor 125. Additionally and generally speaking, thefirst node 105, thesecond node 110, and thethird node 115 may have attributes that are typically needed or desired in nodes of a virtual computing system (e.g., the virtual computing system 100). One or more of thefirst node 105, thesecond node 110, and thethird node 115 may also be organized in a variety of network topologies, and may be termed as a “host” or “host machine.” - Also, although not shown, one or more of the
first node 105, thesecond node 110, and thethird node 115 may include one or more processing units configured to execute instructions. The instructions may be carried out by a special purpose computer, logic circuits, or hardware circuits of thefirst node 105, thesecond node 110, and thethird node 115. The processing units may be implemented in hardware, firmware, software, or any combination thereof. The term “execution” is, for example, the process of running an application or the carrying out of the operation called for by an instruction. The instructions may be written using one or more programming language, scripting language, assembly language, etc. The processing units, thus, execute an instruction, meaning that they perform the operations called for by that instruction. - The processing units may be operably coupled to the
storage pool 140, as well as with other elements of the respectivefirst node 105, thesecond node 110, and thethird node 115 to receive, send, and process information, and to control the operations of the underlying first, second, or third node. The processing units may retrieve a set of instructions from thestorage pool 140, such as, from a permanent memory device like a read only memory (ROM) device and copy the instructions in an executable form to a temporary memory device that is generally some form of random access memory (RAM). The ROM and RAM may both be part of thestorage pool 140, or in some embodiments, may be separately provisioned from the storage pool. Further, the processing units may include a single stand-alone processing unit, or a plurality of processing units that use the same or different processing technology. - With respect to the
storage pool 140 and particularly with respect to the direct-attachedstorage 150, it may include a variety of types of memory devices. For example, in some embodiments, the direct-attachedstorage 150 may include, but is not limited to, any type of RAM, ROM, flash memory, magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips, etc.), optical disks (e.g., compact disk (CD), digital versatile disk (DVD), etc.), smart cards, solid state devices, etc. Likewise, the network-attachedstorage 145 may include any of a variety of network accessible storage (e.g., thecloud storage 155, the localstorage area network 160, etc.) that is suitable for use within thevirtual computing system 100 and accessible via thenetwork 135. Thestorage pool 140 including the network-attachedstorage 145 and the direct-attachedstorage 150 may together form a distributed storage system configured to be accessed by each of thefirst node 105, thesecond node 110, and thethird node 115 via thenetwork 135 and the controller/service VM 130, and/or thehypervisor 125. In some embodiments, the various storage components in thestorage pool 140 may be configured as virtual disks for access by theuser VMs 120. - Each of the
user VMs 120 is a software-based implementation of a computing machine in thevirtual computing system 100. Theuser VMs 120 emulate the functionality of a physical computer. Specifically, the hardware resources, such as processing unit, memory, storage, etc., of the underlying computer (e.g., thefirst node 105, thesecond node 110, and the third node 115) are virtualized or transformed by thehypervisor 125 into the underlying support for each of the plurality ofuser VMs 120 that may run its own operating system and applications on the underlying physical resources just like a real computer. By encapsulating an entire machine, including CPU, memory, operating system, storage devices, and network devices, theuser VMs 120 are compatible with most standard operating systems (e.g. Windows, Linux, etc.), applications, and device drivers. Thus, thehypervisor 125 is a virtual machine monitor that allows a single physical server computer (e.g., thefirst node 105, thesecond node 110, third node 115) to run multiple instances of theuser VMs 120, with each user VM sharing the resources of that one physical server computer, potentially across multiple environments. By running the plurality ofuser VMs 120 on each of thefirst node 105, thesecond node 110, and thethird node 115, multiple workloads and multiple operating systems may be run on a single piece of underlying hardware computer (e.g., the first node, the second node, and the third node) to increase resource utilization and manage workflow. - The
user VMs 120 are controlled and managed by the controller/service VM 130. The controller/service VM 130 of each of thefirst node 105, thesecond node 110, and thethird node 115 is configured to communicate with each other via thenetwork 135 to form a distributedsystem 165. Thehypervisor 125 of each of thefirst node 105, thesecond node 110, and thethird node 115 may be configured to run virtualization software, such as, ESXi from VMWare, AHV from Nutanix, Inc., XenServer from Citrix Systems, Inc., etc., for running theuser VMs 120 and for managing the interactions between the user VMs and the underlying hardware of thefirst node 105, thesecond node 110, and thethird node 115. The controller/service VM 130 and thehypervisor 125 may be configured as suitable for use within thevirtual computing system 100. - The
network 135 may include any of a variety of wired or wireless network channels that may be suitable for use within thevirtual computing system 100. For example, in some embodiments, thenetwork 135 may include wired connections, such as an Ethernet connection, one or more twisted pair wires, coaxial cables, fiber optic cables, etc. In other embodiments, thenetwork 135 may include wireless connections, such as microwaves, infrared waves, radio waves, spread spectrum technologies, satellites, etc. Thenetwork 135 may also be configured to communicate with another device using cellular networks, local area networks, wide area networks, the Internet, etc. In some embodiments, thenetwork 135 may include a combination of wired and wireless communications. - Referring still to
FIG. 1 , in some embodiments, one of thefirst node 105, thesecond node 110, or thethird node 115 may be configured as a leader node. The leader node may be configured to monitor and handle requests from other nodes in thevirtual computing system 100. If the leader node fails, another leader node may be designated. Furthermore, one or more of thefirst node 105, thesecond node 110, and thethird node 115 may be combined together to form a network cluster (also referred to herein as simply “cluster.”) Generally speaking, all of the nodes (e.g., thefirst node 105, thesecond node 110, and the third node 115) in thevirtual computing system 100 may be divided into one or more clusters. One or more components of thestorage pool 140 may be part of the cluster as well. For example, thevirtual computing system 100 as shown inFIG. 1 may be part of one cluster. Multiple clusters may exist within a given virtual computing system. Theuser VMs 120 that are part of a cluster may be configured to share resources with each other. - Further, as shown herein, one or more of the
user VMs 120 may be configured to have asearch computing system 170. In some embodiments, thesearch computing system 170 may be provided on one or more of theuser VMs 120 of the leader node, while in other embodiments, thesearch computing system 170 may be provided on another node. Although thesearch computing system 170 has been shown as being provided on one of theuser VMs 120, in some embodiments, the search computing system may be provided on multiple user VMs. In yet other embodiments, thesearch computing system 170 may be provided on a computing machine that is outside of thefirst node 105, thesecond node 110, and thethird node 115, but connected to those nodes in operational association. In some such embodiments, the computing machine on which thesearch computing system 170 is provided may be either within thevirtual computing system 100 or outside of the virtual computing system and operationally associated therewith. Generally speaking, thesearch computing system 170 may be connected to for receiving data from one or more clusters within thevirtual computing system 100. Thus, either a single instance of thesearch computing system 170 or multiple instances of the search computing system, with each search computing system instance being connected to one or more clusters may be provided. - Furthermore, the
search computing system 170 may be used to receive search queries from a user and provide results back to the user in response to the received search queries. The search results may correspond to data received back from the components of the cluster(s) that are connected to and communicating with thesearch computing system 170. Additional details of the search computing system are provided in U.S. application Ser. No. 15/143,060, filed on Apr. 29, 2016, the entirety of which is incorporated by reference herein. - In some embodiments and as described below, the
search computing system 170 may be used for troubleshooting purposes as well. For example, thesearch computing system 170 may be used by a user to run search queries to identify various undesirable conditions within thevirtual computing system 100. Further and, as discussed below, thesearch computing system 170 is associated with a learned metric system (SeeFIG. 2 ) and a configuration system (SeeFIG. 2 ) to effectively and efficiently detect those undesirable conditions. - Referring still to
FIG. 1 , each of theuser VMs 120 also includes one ormore software applications 175 that are designated to perform one or more functions, tasks, or activities. Thesoftware applications 175 may be user applications such as word processing applications, multimedia applications, database applications, photo editing applications, web based applications, etc. Thesoftware applications 175 may also be system applications that are configured to run, boot, or otherwise manage the operation of the underlying instance of theuser VMs 120 or thevirtual computing system 100 in general. In some embodiments, thesoftware applications 175 may include a combination of user applications and system applications. Further, thesoftware applications 175 may be configured in a variety of ways. For example, thesoftware applications 175 may be a stand-alone application or be part of an application suite or enterprise software. Generally speaking, thesoftware applications 175 are intended to include any type of software applications that are suitable for use within a virtual environment, such as thevirtual computing system 100. - It is to be understood that although a single instance of the
software applications 175 is shown inFIG. 1 on each of theuser VMs 120, in other embodiments, no software applications or multiple software applications may be provided on one or more of the user VMs. Furthermore, thesoftware applications 175 may be configured to interface with thesearch computing system 170, such that by using the search computing system, the user may run search queries to obtain statistics related to thesoftware applications 175, as discussed below. - Turning to
FIG. 2 , asearch computing system 200 is shown, in accordance with some embodiments of the present disclosure. Thesearch computing system 200 includes asearch interface 205 that is configured to receive search queries from the user and provide search results back to the user. Thesearch computing system 200 is a contextual search system that identifies the context of a search query and particularly, identifies the intent of the user in running the search query. Thesearch computing system 200 may identify the intent of the user by analyzing the search query, as detailed below, to determine whether the user is in a troubleshooting mode, exploration mode, a management mode, or another type of work flow mode. Thesearch computing system 200 may return results back based upon the identified intent of the user. - Specifically, upon receiving a search query, the
search interface 205 communicates with aquery parser 210. Thequery parser 210 parses the search query, converts the parsed search query into a structured query, retrieves, compiles, and returns the search results back to thesearch interface 205. To facilitate parsing of the search query, converting into a structured query, and for retrieving the search results, thequery parser 210 communicates withdatabase 215 and structuredquery database 220. Each of thesearch interface 205, thequery parser 210, thedatabase 215, and the structuredquery database 220 is described in greater detail below. Thesearch computing system 200 is communicably coupled with aconfiguration system 225. Theconfiguration system 225 is used to configure metrics forsoftware applications 230, as described below. By configuring metrics for thesoftware applications 230, certain statistics or data pertaining to those software applications may be collected. Statistics or data collected by the configured metrics may be searched using a search query in thesearch interface 205. Thesearch computing system 200 is also communicably coupled with a learnedmetric system 235, which may be used to learn the metrics and create correlations related to thesoftware applications 230 based upon the search queries that are being run by the user. In some embodiments, the learnedmetric system 230 may be part of thesearch computing system 200. - The
search interface 205 includes auser interface 240 having asearch box 245 for receiving search queries from the user and asearch display box 250 for displaying the search results retrieved in response to the search queries entered into the search box. Thus, theuser interface 240 is configured to receive information from and provide information back to the user. Theuser interface 240 may be any suitable user interface. For example, theuser interface 240 may be an interface for receiving user input and/or machine instructions for entry into thesearch box 245. Theuser interface 240 may use various input technologies including, but not limited to, a keyboard, a stylus and/or touch screen, a mouse, a track ball, a keypad, a microphone, voice recognition, motion recognition, disk drives, remote controllers, input ports, one or more buttons, dials, joysticks, etc. to allow an external source, such as the user, to enter information into thesearch box 245. - The
user interface 240 may also be configured to provide an interface for presenting information from thesearch computing system 200 to external systems, users, memory, etc. For example, theuser interface 240 may display the search results within thesearch display box 250. Alternatively or additionally, theuser interface 240 may include an interface for a printer, speaker, alarm/indicator lights, etc. to provide or augment the search results. Theuser interface 240 can be provided on a color display, a cathode-ray tube (CRT), a liquid crystal display (LCD), a plasma display, an organic light-emitting diode (OLED) display, etc. Further, only certain features of theuser interface 240 are shown herein. Nevertheless, in other embodiments, other features that are commonly provided on user interfaces and particularly, on user interfaces used in a virtualization environment (e.g., the virtual computing system 100) may be provided. For example, in some embodiments, theuser interface 240 may include navigational menus, adjustment options, adjustment settings, adjustment display settings, etc. Theuser interface 240 may also be configured to send information to and receive information from thequery parser 210 and any additional components within thevirtual computing system 100 that are deemed desirable to communicate with thesearch interface 205. - Thus, the user inputs a search query into the
search box 245 and interacts with (e.g., click, press-and-hold, roll or hover over, etc.) asearch button 255 to send the search query for further processing and retrieval of search results. Thesearch interface 205 and particularly, thesearch box 245, may be configured to receive and recognize a variety of configurations of the search query. For example, in some embodiments, the user may input the search query in the form of keywords. Keywords are pre-defined terms or phrases that are understood by thesearch computing system 200. A list of all keywords understood by thesearch computing system 200 may be stored within (e.g., the database 215) or accessible by the search computing system. The list of keywords may also be made available to the user. - Each keyword may be classified into one or more of four categories: entity type, properties, identifiers, and actions. “Entity type” keywords may include the different entities, such as, clusters, nodes, virtual machines, virtual disks, software applications, and other hardware, software, storage, virtual clouds, and data center components that make up the
virtual computing system 100. “Properties” keywords include various attributes, such as type of operating system, number of processing units, number of storage units, etc. of each “entity type.” “Properties” keywords may also include various metrics associated with the “entity type,” as well as values of a given attribute, such as the value of an IP address, values of various statistics and metrics, such as processing unit utilization, disk space, etc. for each “entity type.” The “identifiers” keywords may include any identification information that may be used to uniquely identify an “entity type.” For example, the “identifiers” keywords may include entity name (e.g., host name, cluster name, etc.), entity version, or any other identifying information that may be used to uniquely identify and distinguish one “entity type” from another “entity type” within a cluster. The “actions” keywords may include any actions that a particular “entity type” may be authorized to perform. For example, “actions” keywords may include create, modify, delete, add, etc. that an “entity type” may perform. - In addition to simple keywords, in some embodiments, the user may enter the search query in the form of an expression. Expressions may include phrases or keywords that are separated by an operator. The operator may be a symbol (e.g., =, >, <, etc.) or a subjective keyword (e.g., slow, high, low, top, greater than, less than, equal to, etc.). In some embodiments, the operator may also include advanced filter values (e.g., contains, does not contain, etc.). A valid expression includes a left hand side term and a right hand side term separated by the operator. In some embodiments, the left hand side term may be a keyword or a commonly used, “human friendly,” word. The right hand side term may be a value of the left hand side term. For example, an expression could be “version=5.0.” In this example, the left hand side term, “version,” may be a recognized keyword (or a commonly used term that may be translated into a recognized keyword by the search computing system 200) and the right hand side term, “5.0,” is a value of the left hand side term, “version.” Similar to the keywords, a list of all recognized operators may be stored within or be accessible by the
search computing system 200. - In some other embodiments, the user may enter an Internet Protocol (IP) address as the search query. In yet other embodiments, the user may simply use “human friendly” words to construct the search query, which may then be translated by the
query parser 210 into recognized keywords. Thus, the user may enter the search query in the form of keywords, expressions, IP addresses, “human-friendly” terms, or a combination thereof. Thesearch interface 205 may also provide other features in thesearch box 245. For example, in some embodiments, thesearch box 245 may have an auto-complete feature, such that as the user is inputting (e.g., typing) the search query, the search interface suggests options to complete the query. Thesearch box 245 may also suggest synonyms, alternate terms, and/or keywords that the user may use as part of the search query. Additional features of the search query are described in the U.S. application Ser. No. 15/143,060 mentioned above. - The search query entered into the
search box 245 is sent to thequery parser 210. Thequery parser 210 includes akeyword block 260 a, anexpression block 260 b, anIP address block 260 c, and aresult generator 265. Thequery parser 210 receives the search query from thesearch interface 205 and converts that query into a structured query using atokenizer 270. For example, thetokenizer 270 of thequery parser 210 may break or tokenize the search query and particularly, the characters of the search query, into a plurality of tokens. For each token, thetokenizer 270 may parse that token into recognized keywords, expressions, and IP addresses. Thetokenizer 270 may communicate with thekeyword block 260 a, theexpression block 260 b, and theIP address block 260 c to parse the search query. Thetokenizer 270 may also convert any “human-friendly” terms in the search query into recognized keywords. After parsing each token, thetokenizer 270 may also convert all of the tokens of the search query into one structured query that is usable by thesearch computing system 200. - Although not shown, in some embodiments, the
tokenizer 270 may also include or be in communication with additional components such as a ranking block to rank the keywords, a relationship block to identify relationships between the keywords, a matching block to match keywords and assign scores, etc. to parse the search query and covert the search query into a structured query. Additional details of converting the search query into a structured query are provided in the above mentioned U.S. application Ser. No. 15/143,060, again, the entirety of which is incorporated by reference herein. - The
keyword block 260 a may include a list of all keywords recognized by thesearch computing system 200. Similarly, theexpression block 260 b may include a list of all recognized expressions, while theIP address block 260 c may include a list of all recognized IP addresses. Although shown as separate components, in other embodiments, one or more of thekeyword block 260 a, theexpression block 260 b, and theIP address block 260 c may be part of thedatabase 215 or combined with one another, or another database within thesearch computing system 200. In some embodiments, thedatabase 215 itself may be the same as, or a part of, thestorage pool 140. In other embodiments, thedatabase 215 may be separate from thestorage pool 140 and may be connected to thestorage pool 140 in operational association. Also, in some embodiments, thekeyword block 260 a and/or theexpression block 260 b may include a correlation of “human-friendly” words into recognized keywords. - The structured queries may be stored within the structured
query database 220. Although shown as a separate database, in some embodiments, the structuredquery database 220 may be part of thedatabase 215, thekeyword block 260 a, theexpression block 260 b, theIP address block 260 c, and/or another database within thesearch computing system 200. The structured queries may also be provided to theresult generator 265. Theresult generator 265 may be configured to access the database 215 (as well as other databases accessible to the search computing system 200) to gather results corresponding to the structured queries. Theresult generator 265 may aggregate and sort the gathered results and display those results within thesearch display box 250. - The
search display box 250 may be divided into various boxes, such as asummary box 275 a, analerts box 275 b, a performance metrics box 275 c, ametrics statistics box 275 d, andother information box 275 e. Thesummary box 275 a may display an overall summary of the search results, thealerts box 275 b may display any alerts that may have been gathered as part of the search results, the performance metrics box 275 c may display results pertaining to various performance metrics, themetric statistics box 275 d may display data pertaining to configured metrics of thesoftware applications 230, and theother information box 275 e may list any other pertinent data that may have been uncovered by theresult generator 265. Theresult generator 265 may sort the search results to be displayed within these various boxes of thesearch display box 250. Further, the results displayed within each of thesummary box 275 a, thealerts box 275 b, the performance metrics box 275 c, the metrics statistics box 275 d, and theother information box 275 e may or may not be interactive. If interactive, the user may interact with (e.g., click) a particular item within those boxes to view/access additional information related to that item. Some of the boxes may be empty if there are no results to display. - Although the
summary box 275 a, thealerts box 275 b, the performance metrics box 275 c, metrics statistics box 275 d, and theother information box 275 e are shown herein, in other embodiments, additional, fewer, or different boxes may be displayed. Further, in some embodiments, the number and types of boxes, as well as the shape, size, arrangement, and other configuration of the boxes that are displayed within thesearch display box 250 may vary in other embodiments. Additionally, thesearch display box 250 may include a configuration settings box 275 f to view or change the settings for how the search results are displayed within the display box, and adjust various settings pertaining to thesearch interface 205. In some embodiments, the configuration settings box 275 f may be provided outside of thesearch display box 250. - Referring still to
FIG. 2 , theconfiguration system 225 is used to configure metrics related to thesoftware applications 230. Thesoftware applications 230 are analogous to thesoftware applications 175, discussed inFIG. 1 above. It is to be understood that although only two of thesoftware applications 230 are shown inFIG. 2 , in other embodiments, greater than or fewer than two software applications, with each of the application in communication with theconfiguration system 225 may be used. Further, although theconfiguration system 225 and thesoftware applications 230 have been shown as being separate from, but in operational association with, thesearch computing system 200, in other embodiments, either or both of the configuration interface and the software applications may be provided as part of the search computing system. - Further, each of the
software applications 230 may be preconfigured (e.g., at the time of creation or installation) with a plurality of metrics. For example and as shown, each of thesoftware applications 230 may includemetrics metrics software applications 230, in other embodiments, fewer than or greater than three metrics may be used in each software application. Further, each of thesoftware applications 230 may include a different number of metrics. Themetrics metrics software applications 175, response time of the software applications, CPU utilization, latency, memory parameters, buffer sizes, etc. Additionally, themetrics software applications 230 may be different based upon the functionality of that software application. For example, a software application that is designed for word processing may have different metrics than a software application that is designed for image processing. Generally speaking, themetrics software applications 230 with which the metrics are associated. - Each of the
metrics software applications 230. The data that is collected depends upon the type of information that the particular one of themetrics metrics software applications 230 is running, whether actively or passively in the background. The data collected by themetrics software applications 230, as discussed above. The user may run a search query using thesearch interface 205 to review the collected data to identify any currently occurring or impending problems with thesoftware applications 230 in real-time. - Before the data collected by the
metrics search interface 205, those metrics are configured. Themetrics configuration system 225. The configured metrics may be stored within theconfiguration system 225, a database associated with thesoftware applications 230, or any other database associated with thesearch computing system 200. By configuring themetrics search interface 205, the user may obtain a real-time view of the operation of thesoftware applications 230 and identify any issues related to those software applications that may need attention. - Although each of the
metrics metrics search interface 205 may be configured. Additionally, in some embodiments, one or more of themetrics metrics search computing system 200. Those keywords may be stored within thekeyword block 260 a. Furthermore, although the statistics counters 285 a, 285 b, and 285 c have been shown as being part of thesoftware applications 230, in other embodiments, the statistics counters may instead or additionally be stored within theconfiguration system 225 or within any other database associated with thesearch computing system 200. - Furthermore, the
metrics software applications 230 at the time of creation or installation of the software application. In other words, the preconfigured statistics counters are not configured by the users, and the users may not have the ability to vary the configuration (e.g., change filters) of the preconfigured metrics. The preconfigured metrics may be stored within a preconfiguredmetric block 290 a of theconfiguration system 225. In contrast to the preconfigured metrics, the user injected metrics are configured by the user. The user may configure one or more of themetrics block 290 b of theconfiguration system 225. - The configured metrics and their corresponding statistics counters may be stored within a
metric database 295 of theconfiguration system 225. Although themetric database 295 has been shown separate from the preconfiguredmetric block 290 a and the user injectedblock 290 b, in some embodiments, one or more of those components may be integrated together. - Referring still to
FIG. 2 , the learnedmetric system 235 is used to learn themetrics metric system 235 may or may not have been configured by the user. Thus, the learned metrics may include preconfigured metrics, the user injected metrics, or any other metric that is associated with thesoftware applications 230. The learnedmetric system 235 may learn metrics (or attributes of those metrics) based upon the frequency of a search query or based upon a pattern of search queries run by the user. - Thus, in some embodiments, the learned
metric system 235 may be configured to look for certain patterns of search queries. For example, if the learnedmetric system 235 determines that the user is running a search query for a particular one of the software applications 230 (e.g., “Application A”), followed by a search query for “CPU utilization greater than 75%,” the learnedmetric system 235 may infer that the user is interested in searching for “CPU utilization greater than 75%” in the “Application A.” The learnedmetric system 235 may create a correlation between the “Application A” and the “CPU utilization greater than 75%,” and store the correlation within the learned metric system. By creating such correlations, in the future, when the user searches for “Application A,” the learnedmetric system 235 may identify that a correlation exists for “Application A” and thesearch interface 205 may propose “CPU utilization greater than 75%” in an auto-complete feature while the user is typing the search query, or alternatively, when displaying the results within thesearch display box 250, the search interface may obtain results relating to “CPU utilization greater than 75%” for “Application A.” Likewise, if the user searches for “CPU utilization greater than 75%,” the learnedmetric system 235 may identify that a correlation exists with “Application A” and obtain results CPU utilization results related to “Application A.” Thus, by identifying and creating correlations using the learnedmetric system 235, thesearch computing system 200 attempts to determine the intent of the user in running a particular search, and provides appropriate search results based upon the identified intent, thereby saving the user's time and providing results that are useful to the user. - Although the correlation described above is based upon two consecutive search queries, in some embodiments, the learned
metric system 235 may be configured to identify and create correlations from more than two consecutive search queries, or possibly from non-consecutive search queries as well. For example, if the user has searched for “Application A,” which is a word processing software application (e.g., the software applications 230) followed by “Application B,” which is an image processing software application, and further followed by “Metric A,” which relates to “Application A” but not “Application B,” then the learnedmetric system 235 may identify a correlation between “Application A” and “Metric A” even though a search for “Application B” was run in between. - The learned
metric system 235 may be configured to identify correlations in search queries based upon rules programmed within the learned metric system. The rules may specify what correlations are deemed acceptable. For example, in some embodiments, the learnedmetric system 235 may include information pertaining to some or all of thesoftware applications 230 associated with thesearch computing system 200, as well as themetrics metric system 235 may also include commonly used thresholds, values, attributes, units, and/or other information of the data that those metrics are configured to collect from the software applications. In other embodiments, additional, fewer, or different information may be used to identify correlations. In some embodiments, the learnedmetric system 235 may collaborate with thequery parser 210 to obtain structured queries and identify keywords indicative of correlations in accordance with the programmed rules. - In addition to or instead of identifying patterns of search queries and creating correlations from those patterns, in some embodiments, the learned
metric system 235 may look for the frequency of a particular search query. For example, if the user has searched for a particular metric (e.g., themetrics metric system 235 may infer that the user is interested in monitoring the particular metric identified from the search query, and learn that metric. By learning the metrics or by creating correlations, thesearch computing system 200 may return pertinent results even if the user has not created a statistics counter (e.g., the statistics counters 285 a, 285 b, 285 c) for a particular metric (e.g., themetrics - The
search computing system 200 is configured to communicate with thesearch computing system 200 to both learn the metrics, create correlations, as well as to return results related to the learned metrics and correlations. Although shown separate from thesearch computing system 200 and theconfiguration system 225, in some embodiments, the learnedmetric system 235 may be part of the configuration system or the search computing system. The learnedmetric system 235 may work in collaboration with at least thequery parser 210 for converting the search queries into structured queries, and for identifying keywords, expressions, and IP addresses within the search queries. In some embodiments, the learned correlations and metrics may be stored within thedatabase 215, themetric database 295, or another database associated with thesearch computing system 200. - Referring now to
FIGS. 3A and 3B , block diagrams showing an example of a user injectedblock 300 is shown, in accordance with some embodiments of the present disclosure. As discussed above, the user injectedblock 300 may be used by the user to configure one or more of themetrics block 300 may also be used to create new statistics counters as part of the configuration process, as well as to edit and delete existing statistics counters. Referring specifically toFIG. 3A , the user injectedblock 300 may include aconfiguration interface 305. Theconfiguration interface 305 may present various options to the user for managing existing statistics counters or for creating new statistics counters. For example, theconfiguration interface 305 may include a configuremetric block 310 for enabling the user to configure a metric and to create a new statistics counter, adelete block 315 for deleting existing statistics counters, and a modifyblock 320 for editing (e.g., changing the filters) the existing statistics counters. - It is to be understood that the
configuration interface 305 is only an example. The size, shape, and design of theconfiguration interface 305 may vary from one embodiment to another. Likewise, the arrangement and other configuration of the configuremetric block 310, thedelete block 315, the modifyblock 320, as well as any other feature provided within theconfiguration interface 305 may vary from one embodiment to another. Furthermore, in some embodiments, one or more of the configuremetric block 310, thedelete block 315, and the modifyblock 320 may be merged together into a single feature. Additionally, only some features of theconfiguration interface 305 are shown herein. Nevertheless, theconfiguration interface 305 may include additional features that may be desired. Generally speaking, theconfiguration interface 305 may have similar features as theuser interface 240. - To configure a metric (e.g., the
metrics metric block 310. Upon interacting with the configuremetric block 310 of theconfiguration interface 305, the user may be taken toconfiguration interface 325 ofFIG. 3B . Within theconfiguration interface 325, the user is presented with anapplication list 330. Theapplication list 330 may include a list of all software applications (e.g., the software applications 230) that are associated with thesearch computing system 200 and that have metrics that may be configured by the user. The user may interact with (e.g., click on) the software application within theapplication list 330 for which the user desires to configure metrics for. For example, as shown, if the user desires to configure metrics for “Application 1” in theapplication list 330, the user may interact with (e.g., click on) “Application 1.” - Interacting with “
Application 1” opens another dialog box withconfigurable metrics list 335. The configurable metrics list 335 may include a list of metrics that are available to the user to configure. The user may select (e.g., by clicking on) the metric from the configurable metrics list 335 that the user desires to configure. For example, if the user desires to configure “Metric 1,” the user may interact with (e.g., click on) “Metric 1” to open another dialog box related toconfigurable filters 340. Theconfigurable filters 340 may include a list of all filters that are available for the selected “Metric 1” that the user may apply to the metric. For example, theconfigurable filters 340 may include an upper threshold filter, a lower threshold filter, or any other configurable attribute suitable for being applied as a filter for “Metric 1.” - The user may assign specific filter values to one or more selected filters within the configurable filters 340. Specifically, the user may interact with the specific filter within the
configurable filters 340 that the user desires to apply to “Metric 1.” For example, if a filter within theconfigurable filters 340 is an upper threshold filter, the user may interact with (e.g., click on) the upper threshold filter to set the desired value for the upper threshold. In some embodiments, the accepted filter values may be presented to the user in the form of a drop down list. In some embodiments, there may be predefined limits within with the filter values may be set by the user. The conditions imposed on a particular filter value may depend upon the type of application (e.g., “Application 1”), type of metric (e.g., “Metric 1”), as well as the type of filter (e.g., “upper threshold”) that the user is configuring. For example, for a CPU utilization metric, the upper threshold may have a filter value in percentage form, while for a latency metric, the upper threshold may have a filter value in seconds (or another unit of time). Furthermore, the values of the filters may vary depending upon the application (e.g., “Application 1”). - It is to be understood that the
configurable filters 340 may include a variety of filter options that may be suitable for the selected metric (e.g., “Metric 1”). However, the user need not assign a filter value to each filter option provided within the configurable filters 340. In some embodiments, the user may assign filter values only to the desired filters options within the configurable filters 340. For example, in some embodiments, the user may only assign an “upper threshold” filter value, and not a “lower threshold” filter value, etc. - After assigning all the desired filter values within the
configurable filters 340, the user may create a statistics counter for the configured metric, “Metric 1.” For example, in some embodiments, the user may assign the created statistics counter a counter name. In other embodiments, the user injectedblock 300 may assign the created statistics counter a name. In some embodiments, the name of the created statistics counter may include the name of the metric (e.g., “Metric 1”) for which the statistics counter has been created. The created statistics counter may be stored within a statistics counterslist 345. Although the statistics counterslist 345 has been shown as being part of the user injectedblock 300, in some embodiments, the statistics counters list may be part of themetric database 295 and/or thesoftware applications 230. - It is to be understood that the
configuration interface 325 is only an example. In other embodiments, theconfiguration interface 325 and particularly, the various dialog boxes (e.g., theapplication list 330, theconfigurable metrics list 335,configurable filters 340, and the statistics counters list 345) may vary from one embodiment to another. Additionally, the dialog boxes (e.g., theapplication list 330, theconfigurable metrics list 335,configurable filters 340, and the statistics counters list 345) have been shown together within theconfiguration interface 325 for ease of explanation. In other embodiments, the configuration of those dialog boxes, how they are displayed, arranged, or otherwise designed may vary. Further, additional options may be provided within one or more of those dialog boxes in other embodiments. For example, in some embodiments, one or more of theapplication list 330, theconfigurable metrics list 335,configurable filters 340, and the statistics counterslist 345 may include only those options that are configurable by the user. In other embodiments, one or more of theapplication list 330, theconfigurable metrics list 335,configurable filters 340, and the statistics counterslist 345 may include those options as well that are not configurable by the user. Such options may be provided such that while they are visible to the user, the user may not be able to interact with (e.g., click on) those options or configure those options in any way. For example, such options may be “grayed-out.” - Returning to
FIG. 3A , in addition to configuring the metrics (e.g., themetrics configuration interface 305. To delete one or more existing statistics counters, the user may interact with thedelete block 315. The user may be presented with the statistics counters list 345 (or a similar list with all the created statistics counters), and the user may select the statistics counter to be deleted from that list. Likewise, to modify an existing statistics counter, the user may interact with the modifyblock 320. Within the modifyblock 320, the user may be presented with all of the created statistics counters, as well as their configured (and non-configured) filter values. The user may change the filter values and save the changes to modify the configuration of a metric. - Thus, the user injected
block 300 may be used for configuring one or more of themetrics - Turning now to
FIG. 4 , an example block diagram of a learnedmetric system 400 is shown, in accordance with some embodiments of the present disclosure. As indicated above, the learnedmetric system 400 is used for learning metrics (and/or their associated attributes) and/or creating correlations that may be used to assist the user in conducting searches using thesearch interface 205. The learnedmetric system 400 includes a learnedthreshold block 405 and a learnedcorrelation block 410. The learnedthreshold block 405 is used to learn frequently searched metrics and/or their associated thresholds. The learnedcorrelation block 410 is used to identify and create correlations based upon patterns of search queries that are run by the user. - Each of the learned
threshold block 405 and the learnedcorrelation block 410 includes acounter block 415 and acomparator block 420. Thecounter block 415 of the learnedthreshold block 405 is used to keep track of a number of times a particular search query for a particular metric has been run by the user. When the count value within thecounter block 415 exceeds a predetermined threshold, as determined by a comparison of the count value with the predetermined threshold by thecomparator block 420, the learnedthreshold block 405 identifies that search query for learning. To learn a particular search query, the learned thresholds block 405 may store the search query (e.g., the structured query corresponding to that search query) within a database. - Similarly, the
counter block 415 of the learnedcorrelation block 410 may be used to identify a number of times that a particular pattern of the search queries has occurred. When a count value of the pattern within thecounter block 415 exceeds a predetermined threshold as determined by thecomparator block 420, the learnedcorrelation block 410 may create a correlation based on that pattern. The created correlation may be in the format, for example, <name of software application><metric><threshold>. For example, in some embodiments, a correlation may look like <Application A CPU utilization greater than 75%>. Other formats may be used for creating correlations as well in other embodiments. - Thus, the learned
metric system 400 may learn the search queries that the user is running to enable thesearch computing system 200 to provide faster and more accurate results. The learning of the search queries is particularly useful when the user has not created a statistic counter for a particular metric. - Referring now to
FIG. 5 in conjunction withFIG. 2 , a flowchart outlining aprocess 500 for searching for data related to metrics of thesoftware applications 230 using thesearch interface 205 is shown, in accordance with some embodiments of the present disclosure. Theprocess 500 may include additional, fewer, or different operations, depending on the particular embodiment. After starting at anoperation 505, the user enters a search query into thesearch box 245 of thesearch interface 205. The format of the search query may take various forms. For example, the search query may include the name of a software application (e.g., the software applications 230), the name of a particular metric associated with the software application, and/or a value of the metric. One or more operators (e.g., >, <, =) and/or performance keywords (e.g., less than, greater than, etc.) may be used as well within the search query. Further, as noted above, the search query may be in the form of keywords, expressions, “human friendly” words, IP addresses, or a combination thereof. - To input the search query, the user interacts with (e.g., clicks on) the
search button 255. The input search query is sent to thequery parser 210, which tokenizes the search query, and categorizes each token into keywords, expressions, and IP addresses. Based upon the categorization, thequery parser 210 converts the search query into a structured query, which may be stored within the structuredquery database 220. - At
operation 515, thequery parser 210 determines from the structured query of theoperation 510 whether the search query includes keywords or expressions that may be indicative of an existing statistics counter (e.g., the statistics counters 285 a, 285 b, 285 c), a metric related to one or more of the software applications 230 (e.g., themetrics query parser 210 determines that the search query is indicative of an existing statistics counter (e.g., the statistics counters 285 a, 285 b, 285 c), then the query parser and particularly, theresult generator 265 of the query parser may access themetric database 295 to retrieve the data published to that statistics counter by the associated metric atoperation 520. In some embodiments, thequery parser 210 may identify the statistics counters in the search query based upon keywords in thekeyword block 260 a that may have been associated with the created statistics counters, by accessing the user injectedblock 290 b and/or themetric database 295, both of which may have a list of all existing statistics counters. - If the
query parser 210 determines that the search query is not indicative of an existing statistics counter, but rather includes the name (or keyword) of a metric or a value of a metric, the query parser may determine whether the metric and/or the value of the metric is a learned metric and if a correlation exists for that metric. Thequery parser 210 may access the learnedmetric system 235 to make such a determination. If thequery parser 210 determines that the search query is a learned metric or that a correlation exists for the metric in the search query, theresult generator 265 may access one or more of the preconfiguredmetric block 290 a, themetric database 295, thedatabase 215, and/or another database associated with thesearch computing system 200 to gather the results associated with the learned metric or the identified correlation. - It is to be understood that the identification by the
query parser 210 of whether the search query relates to a statistics counter, a learned metric, and/or correlation may occur simultaneously even though it has been described above as a sequential procedure. Theresult generator 265 may return the gathered results, at theoperation 520, on thesearch display box 250 and particularly within one or more of thesummary box 275 a, thealerts box 275 b, the performance metrics box 275 c, the metrics statistics box 275 d, and/or theother information box 275 e. Theprocess 500 then loops back to theoperation 510 to wait for the next search query. - On the other hand, if at the
operation 515, thequery parser 210 determines from the structured query that the search query is neither an existing statistics counter, nor a learned metric or a correlation, theprocess 500 loops back to theoperation 510 to wait for the next search query. In some embodiments, if thequery parser 210 determines that the that the search query is neither an existing statistics counter, nor a learned metric or a correlation, but still relates to a metric and/or a value of the metric, the result generator may still gather the results that may be associated with the metric and/or the value of the metric. However, such results need not be limited to thesoftware applications 230. Rather, theresult generator 265 may gather results from all components (including the software applications 230) that may be connected to thesearch computing system 200. The gathered results may be displayed on thesearch display box 250. However, these results may include data that the user may not be interested in and the user may be required to sift through the data to retrieve the desirable information. Therefore, establishing statistics counters, learning metrics, and/or creating correlations is a useful and efficient mechanism for obtaining the relevant results pertaining to the desired metrics of thesoftware applications 230 quickly. - Turning now to
FIG. 6 in conjunction withFIG. 3B , a flowchart outlining aprocess 600 for configuring a metric and creating a statistics counter is shown, in accordance with some embodiments of the present disclosure. Theprocess 600 may include additional, fewer, or different operations, depending on the particular embodiment. After starting atoperation 605, the user accesses the user injectedblock 300. Within theconfiguration interface 325 of the user injectedblock 300, the user selects a software application (e.g., from the application list 330) to create a statistics counter for. The selection is sent to the user injectedblock 300 atoperation 610, which presents the configurable metrics list 335 upon receiving the selection of the software application. The user then selects a metric from theconfigurable metrics list 335. The selection is sent back to the user injectedblock 300 atoperation 615, which in turn presents theconfigurable filters 340 to the user. - Although the
process 600 is described as the user selecting one metric from theconfigurable metrics list 335, in some embodiments, the user may be able to select multiple metrics and configure all of the selected metrics simultaneously. In other embodiments, the user may be able to configure multiple metrics, but one at a time. Thus, the statistics counter that is created may be for a single metric or for multiple metrics of the software application selected by the user above. - From the
configurable filters 340, the user may set various filters corresponding to the metric(s) selected above. For example, the user may provide an upper threshold value, a lower threshold value, etc. The user injectedblock 300 receives the user's filter selections atoperation 620 and creates a statistics counter atoperation 625. Specifically, in some embodiments, the user may assign a user friendly name to the newly created statistics counter. In addition to or instead of the user friendly name, the user injectedblock 300 may assign a keyword to the newly created statistics counter. The keyword associated with the newly created keyword may be stored within thekeyword block 260 a. Additionally, the user injectedblock 300 stores the newly created statistics counter within themetric database 295 atoperation 630. In some embodiments, the statistics counter may be stored within another database associated with thesearch computing system 200. - Furthermore, periodically based upon a predetermined interval or when new data becomes available, or based upon a filter value specified within the statistics counters, the
software applications 230 may publish the data corresponding to the metrics for which the statistics counters are created. Such data may be stored within themetric database 295 along with the statistics counters. Thus, when the user searches for a particular statistics counter, thesearch computing system 200 may access themetric database 295 to obtain real time data pertaining to the underlying metrics associated with a particular software application. Theprocess 600 ends atoperation 635. - Turning now to
FIG. 7 , a flowchart outlining aprocess 700 for learning metrics is shown, in accordance with some embodiments of the present disclosure. Theprocess 700 may include additional, fewer, or different operations, depending on the particular embodiment. After starting atoperation 705, theprocess 700 waits for a user to enter a search query in thesearch box 245. When the user inputs the search query, atoperation 710, thesearch computing system 200 converts the search query into a structured query, as outlined above. The structured query is provided to the learnedmetric system 235, which identifies keywords indicative of metrics and/or thresholds associated with one or more of thesoftware applications 230. In some embodiments, the learnedmetric system 235 may poll the structuredquery database 220 for new structured queries. In other embodiments, the structuredquery database 220 and/or thequery parser 210 may provide new structured queries to the learnedmetric system 235. - The learned
metric system 235 and particularly, the learnedthreshold block 405 of the learned metric system, may parse the structured query to identify keywords associated with metrics and/or thresholds of one or more of thesoftware applications 230. If the learnedthreshold block 405 identifies keywords associated with the metrics and/or thresholds of one or more of thesoftware applications 230, the learned threshold block updates a count value within thecounter block 415 at operation 715. At operation 720, the learnedthreshold block 405 compares the count value with a predetermined threshold by using thecomparator block 420. If the count value is greater than the predetermined threshold, then the learnedthreshold block 405 learns the metric corresponding to the search query atoperation 725 and stores the learned metric within the learnedthreshold block 405. In some embodiments, the learned metrics may be stored within thedatabase 215, themetric database 295, or another database associated with thesearch computing system 200. Theprocess 700 the returns to theoperation 710 to start learning another metric. The process of learning metrics may occur simultaneously with gathering of search results by theresult generator 265, as described inFIG. 5 above. - Referring now to
FIG. 8 , a flowchart outlining aprocess 800 for learning correlations is shown, in accordance with some embodiments of the present disclosure. Theprocess 800 may include additional, fewer, or different operations, depending on the particular embodiment. After starting atoperation 805, theprocess 800 waits for a user to enter a search query in thesearch box 245. When the user inputs the search query, atoperation 810, thesearch computing system 200 converts the search query into a structured query, as outlined above. From the structured query, thesearch computing system 200 and particularly, the learnedmetric system 235 of the search computing system, identifies patterns of search queries relating to metrics and/or thresholds of one or more of thesoftware applications 230. As discussed above, in some embodiments, the learnedmetric system 235 may poll the structuredquery database 220 for new structured queries, while in other embodiments, the structuredquery database 220 and/or thequery parser 210 may provide the new structured queries to the learned metric system. - The learned
metric system 235 and particularly, the learned correlation block 410 of the learned metric system, may parse the structured query to identify patterns of search queries related to one or more of thesoftware applications 230. For example, in some embodiments, the learnedcorrelation block 410 may review the search queries received by the learned correlation block within a predetermined period of time preceding the structured query received at theoperation 810. In other embodiments, the learnedcorrelation block 410 may review a predetermined number of search queries received prior to the structured query received at theoperation 810. Based upon the review of the prior structured queries, the learnedcorrelation block 410 identifies whether a specific pattern is formed. Rule or guidelines for correlating search queries as an acceptable pattern may be stored within the learnedcorrelation block 410. - For example, in some embodiments, a rule may indicate that if the prior structured queries along with the current structured query received at the
operation 810 includes the name of one or more of the software applications, one or more metrics or thresholds associated with those software applications, a correlation may be found. If the learnedcorrelation block 410 identifies a correlation, the learned correlation block updates a count value within thecounter block 415 atoperation 815. Atoperation 820, the learnedcorrelation block 410 compares the count value with a predetermined threshold by using thecomparator block 420. If the count value is greater than the predetermined threshold, then the learned correlation block 410 learns the correlation atoperation 825 and stores the learned correlation within the learnedcorrelation block 410. By using thecounter block 415 and thecomparator block 420, the learnedcorrelation block 410 may identify commonly searched correlations and learn only those correlations that are frequently searched by the user. - In other embodiments, the learned
correlation block 410 may be configured such that each time the learned correlation block identifies a correlation, that correlation is learned and saved. In such embodiments, thecounter block 415 and thecomparator block 420 may not be needed. Further, in some embodiments, the learned correlations may be stored within thedatabase 215, themetric database 295, or another database associated with thesearch computing system 200. Theprocess 800 the returns to theoperation 810 to start learning another search query. The process of identifying and creating correlations may occur simultaneously with learning metrics and gathering search results by theresult generator 265. It is also to be understood that a particular one or more of the metrics of thesoftware applications 230 may be configured into one or more statistics counters, learned metrics, and/or be part of a correlation. Further, although the present disclosure has been described in terms of configuring metrics for software applications, in other embodiments, the teachings of the present disclosure may also be used to configure metrics for other components of the virtual computing system. For example, in some embodiments, the teachings of the present disclosure may be applied to a troubleshooting infrastructure to identify problems, issues, or to otherwise gain insight relating to various troubleshooting parameters. As an example, a metric may be configured for CPU Utilization of the controller/service VM 130. The configured metric may then be used to monitor issues with the controller/service VM 130. Similarly, the present disclosure may be applied to other components as well. - Thus, the present disclosure provides a system and method for automatically monitoring one or more metrics of software applications that the user may desire to monitor. To facilitate the monitoring, the user may configure the metrics that the user desires to monitor. Those metrics are configured by defining filters and creating statistics counters. By creating statistics counters, the metrics may publish data to the statistics counters based upon the defined filters. The users may simply search for the statistics counters to obtain the real-time data pertaining to the metrics. Such data may offer a glimpse into any currently occurring or impending problems associated with the software application, and allow the user to pro-actively address those problems. Thus, the present disclosure provides a simple and effective mechanism to monitor the software applications within the virtual computing system in real-time. The present disclosure also provides a system and method to automatically learn metrics, as well as identify and create correlations for the metrics of the software applications based upon the search queries that are run by the user. Thus, the present disclosure aids the user in troubleshooting by timely identifying certain problems.
- Although the present disclosure has been described with respect to software applications, in other embodiments, one or more aspects of the present disclosure may be applicable to other components of the
virtual computing system 100 that may be suitable for real-time monitoring by the user. - It is also to be understood that in some embodiments, any of the operations described herein may be implemented at least in part as computer-readable instructions stored on a computer-readable memory. Upon execution of the computer-readable instructions by a processor, the computer-readable instructions may cause a node to perform the operations.
- The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being “operably couplable,” to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.
- With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.
- It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as “open” terms (e.g., the term “including” should be interpreted as “including but not limited to,” the term “having” should be interpreted as “having at least,” the term “includes” should be interpreted as “includes but is not limited to,” etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases “at least one” and “one or more” to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim recitation to inventions containing only one such recitation, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an” (e.g., “a” and/or “an” should typically be interpreted to mean “at least one” or “one or more”); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of “two recitations,” without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to “at least one of A, B, and C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, and C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances where a convention analogous to “at least one of A, B, or C, etc.” is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., “a system having at least one of A, B, or C” would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It will be further understood by those within the art that virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase “A or B” will be understood to include the possibilities of “A” or “B” or “A and B.” Further, unless otherwise noted, the use of the words “approximate,” “about,” “around,” “substantially,” etc., mean plus or minus ten percent.
- The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/653,762 US20190026295A1 (en) | 2017-07-19 | 2017-07-19 | System and method for obtaining application insights through search |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/653,762 US20190026295A1 (en) | 2017-07-19 | 2017-07-19 | System and method for obtaining application insights through search |
Publications (1)
Publication Number | Publication Date |
---|---|
US20190026295A1 true US20190026295A1 (en) | 2019-01-24 |
Family
ID=65019073
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/653,762 Abandoned US20190026295A1 (en) | 2017-07-19 | 2017-07-19 | System and method for obtaining application insights through search |
Country Status (1)
Country | Link |
---|---|
US (1) | US20190026295A1 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287000A (en) * | 2019-05-29 | 2019-09-27 | 北京达佳互联信息技术有限公司 | Data processing method, device, electronic equipment and storage medium |
US11295135B2 (en) * | 2020-05-29 | 2022-04-05 | Corning Research & Development Corporation | Asset tracking of communication equipment via mixed reality based labeling |
US11374808B2 (en) | 2020-05-29 | 2022-06-28 | Corning Research & Development Corporation | Automated logging of patching operations via mixed reality based labeling |
US12189644B1 (en) | 2017-07-31 | 2025-01-07 | Cisco Technology, Inc. | Creating dashboards for viewing data in a data storage system based on natural language requests |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051023B2 (en) * | 2003-04-04 | 2006-05-23 | Yahoo! Inc. | Systems and methods for generating concept units from search queries |
US20070266002A1 (en) * | 2006-05-09 | 2007-11-15 | Aol Llc | Collaborative User Query Refinement |
US7346629B2 (en) * | 2003-10-09 | 2008-03-18 | Yahoo! Inc. | Systems and methods for search processing using superunits |
US7836039B2 (en) * | 2006-12-12 | 2010-11-16 | International Business Machines Corporation | Searching descendant pages for persistent keywords |
US20100306191A1 (en) * | 2009-05-27 | 2010-12-02 | Lebeau Michael J | Computer Application Data In Search Results |
US20110219015A1 (en) * | 2008-08-28 | 2011-09-08 | Nhn Business Platform Corporation | Searching method using extended keyword pool and system thereof |
US20120296927A1 (en) * | 2011-05-17 | 2012-11-22 | Yahoo! Inc. | System and method for contextualizing query instructions using user's recent search history |
US20160275188A1 (en) * | 2015-03-16 | 2016-09-22 | International Business Machines Corporation | Shared url content update to improve search engine optimization |
US20180089328A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Techniques for ingesting metrics data |
US20180246811A1 (en) * | 2017-02-27 | 2018-08-30 | International Business Machines Corporation | Heuristic method to control fetching of metadata from a cache hierarchy |
-
2017
- 2017-07-19 US US15/653,762 patent/US20190026295A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051023B2 (en) * | 2003-04-04 | 2006-05-23 | Yahoo! Inc. | Systems and methods for generating concept units from search queries |
US7346629B2 (en) * | 2003-10-09 | 2008-03-18 | Yahoo! Inc. | Systems and methods for search processing using superunits |
US20070266002A1 (en) * | 2006-05-09 | 2007-11-15 | Aol Llc | Collaborative User Query Refinement |
US7836039B2 (en) * | 2006-12-12 | 2010-11-16 | International Business Machines Corporation | Searching descendant pages for persistent keywords |
US20110219015A1 (en) * | 2008-08-28 | 2011-09-08 | Nhn Business Platform Corporation | Searching method using extended keyword pool and system thereof |
US20100306191A1 (en) * | 2009-05-27 | 2010-12-02 | Lebeau Michael J | Computer Application Data In Search Results |
US20120296927A1 (en) * | 2011-05-17 | 2012-11-22 | Yahoo! Inc. | System and method for contextualizing query instructions using user's recent search history |
US20160275188A1 (en) * | 2015-03-16 | 2016-09-22 | International Business Machines Corporation | Shared url content update to improve search engine optimization |
US20180089328A1 (en) * | 2016-09-26 | 2018-03-29 | Splunk Inc. | Techniques for ingesting metrics data |
US20180246811A1 (en) * | 2017-02-27 | 2018-08-30 | International Business Machines Corporation | Heuristic method to control fetching of metadata from a cache hierarchy |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12189644B1 (en) | 2017-07-31 | 2025-01-07 | Cisco Technology, Inc. | Creating dashboards for viewing data in a data storage system based on natural language requests |
CN110287000A (en) * | 2019-05-29 | 2019-09-27 | 北京达佳互联信息技术有限公司 | Data processing method, device, electronic equipment and storage medium |
US11295135B2 (en) * | 2020-05-29 | 2022-04-05 | Corning Research & Development Corporation | Asset tracking of communication equipment via mixed reality based labeling |
US11374808B2 (en) | 2020-05-29 | 2022-06-28 | Corning Research & Development Corporation | Automated logging of patching operations via mixed reality based labeling |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12099517B1 (en) | Supplementing extraction rules based on event clustering | |
US11741396B1 (en) | Efficient command execution using aggregated compute units | |
US11023472B2 (en) | System and method for troubleshooting in a virtual computing system | |
US11841853B2 (en) | Identifying related field sets based on related source types | |
US9612932B2 (en) | System, method, and computer program product for monitoring computer system infrastructure and assets | |
US10198511B1 (en) | Datacenter search query interpretation system | |
CN109328335B (en) | Intelligent configuration discovery techniques | |
US10997190B2 (en) | Context-adaptive selection options in a modular visualization framework | |
US11915156B1 (en) | Identifying leading indicators for target event prediction | |
US20240086447A1 (en) | Clustering Using Natural Language Processing | |
US9754395B2 (en) | Proactive monitoring tree providing distribution stream chart with branch overlay | |
US11630695B1 (en) | Dynamic reassignment in a search and indexing system | |
US11194794B2 (en) | Search input recommendations | |
US11593443B1 (en) | Facilitating alerts for predicted conditions | |
US20200349151A1 (en) | Methods, systems, and computer readable mediums for performing an aggregated free-form query | |
US11429935B2 (en) | Retrieving historical tags hierarchy plus related objects | |
US20190340281A1 (en) | System and method for dynamic search | |
US12130829B2 (en) | Generation of modified queries using a field value for different fields | |
US20190026295A1 (en) | System and method for obtaining application insights through search | |
US11693710B1 (en) | Workload pool hierarchy for a search and indexing system | |
US20190129961A1 (en) | System and method for ranking search results | |
US20180341682A1 (en) | System and method for generating rules from search queries | |
US20190130003A1 (en) | System and method for monitoring datacenter components using subqueries | |
US12271423B1 (en) | Automated provision of a listing of events related and corresponding attributes related to a selected event through generation of graph-based dense representations of events of a nodal graph | |
US20190236196A1 (en) | System and method for navigating using a search functionality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: NUTANIX, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MAITI, ATREYEE;SHUKLA, HIMANSHU;SINGH, RAHUL;SIGNING DATES FROM 20170706 TO 20170711;REEL/FRAME:043056/0338 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |