Patent ID: 8424000

Claim:
A method comprising: receiving information indicating an operating state of each of a plurality of applications executing in a virtual machine from a monitoring agent executing in the virtual machine; determining a priority of each of the plurality of applications by a decision-making agent, wherein the decision-making agent is not executing in the virtual machine; determining whether a desired set of applications of the plurality of applications is executing properly based on the received operating state of each of the plurality of applications and the determined priority of each of the plurality of applications; generating a decision as to whether the virtual machine should be restarted based on the determining whether the desired set of applications of the plurality of applications is executing properly; detecting whether the monitoring agent is registered to provide heartbeat messages to a virtualization controller; preventing, based on the detecting whether the monitoring agent is registered and the generated decision, the monitoring agent from transmitting a heartbeat message to the virtualization controller prior to expiration of a timeout interval, wherein the heartbeat message identifies the operating state of each of the plurality of applications, the decision-making agent multiplexes multiple application states into a single heartbeat message, the virtualization controller is configured to restart the virtual machine if the monitoring agent does not send the heartbeat message prior to expiration of the timeout interval, and the preventing is performed by a computing device; and restarting the virtual machine, wherein the restarting is performed in response to the preventing.