Abiquo Documentation Cookies Policy

Our Documentation website uses cookies to improve your experience. Please visit our Cookie Policy page for more information about cookies and how we use them.


Skip to end of metadata
Go to start of metadata

What is virtual machine synchronization?

Abiquo 3.0 is able to detect changes in the virtual machines running on all hypervisors, including public cloud. Specifically it can detect:

  • Number of assigned virtual CPUs
  • Amount of assigned RAM
  • Hypervisor datastore where the virtual machine's primary disk is located
    • Persistent disks are not supported as they are not stored on the hypervisor datastore

How does it work?

Monitor manager

The monitor manager executes a periodic operation for each hypervisor in order to detect the changes in the running virtual machines. For each virtual machine, the values of CPU, RAM and Datastore are compared with the values persisted in Redis.

If the values of a virtual machine have been changed, the new values are persisted in Redis and a notification is published in RabbitMQ.

The execution interval is defined by the property abiquo.vsm.vmsyncfrequency.plugin_type_in_lower_case (e.g. abiquo.vsm.vsmsyncfrequency.esxi) and has a default value of 180000 ms (three minutes).

The delay between virtual machine synchronizer operations in milliseconds


The API consumes the sent notifications, and for each:

  • Tries to find the related virtual machine by name. If not found, the process finishes here.
  • For each virtual machine found:
    • Check if RAM has been changed and update the value if needed
    • Check if CPU has been changed and update the value if needed
    • Check if Datastore where the primary disk of the virtual machine is located has been changed and update if needed

The datastore update includes the creation of a datastore if it was not previously registered in Abiquo (a new datastore).

Three tracers are published with the following messages:

  • RAM of virtual machine '{VIRTUAL_MACHINE_NAME}' has been changed from '{OLD_VALUE}' to '{NEW_VALUE}'.
  • CPU of virtual machine '{VIRTUAL_MACHINE_NAME}' has been changed from '{OLD_VALUE}' to '{NEW_VALUE}'.
  • Datastore of virtual machine '{VIRTUAL_MACHINE_NAME}' has been changed from '{OLD_VALUE}' to '{NEW_VALUE}'.

RabbitMQ configuration

  • The monitor manager publishes notifications to the direct exchange abiquo.virtualmachines
  • The API consumes notifications from the queue abiquo.virtualmachines.definitionsyncs
  • No labels