Подсистема мониторинга статуса виртуальных машин предназначена для передачи информации о состоянии виртуальных машин от сервиса libvirtd в панель управления VMmanager KVM. Основные цели подсистемы:

  • синхронизация данных панели управления о наличии и фактическом состоянии виртуальных машин;
  • передача событий изменения статуса виртуальных машин с минимальной задержкой по времени;
  • регистрация событий изменения статуса виртуальных машин.

Подсистема мониторинга:

  • участвует в процессе установки операционной системы на виртуальную машину;
  • обеспечивает контроль дубликатов виртуальных машин.

Архитектура подсистемы


Подсистема состоит из двух сервисов: vmwatch-master и vmwatch-node. Для взаимодействия между сервисами используется очередь сообщений. Очередь реализована с помощью библиотеки ZeroMQ по схеме PUSH-PULL.

Сервис vmwatch-master

Выполняется на узле, где расположена панель управления. Сервис принимает сообщения на указанном в конфигурационном файле IP-адресе и порту, обрабатывает их и выполняет вызовы соответствующих функций API панели управления для передачи информации об изменении состояния виртуальных машин.

Сервис vmwatch-node

Выполняется на каждом узле кластера. Сервис отправляет сообщения на указанный в конфигурационном файле IP-адрес и порт. Информацию об изменении состояния виртуальных машин сервис получает от сервиса libvirtd. В случае потери соединения с libvirtd сервис завершает работу.

Конфигурация сервисов


Запуск и автозапуск сервисов контролируется системой System V (System D для CentOS 7). Сервис vmwatch-master и его управляющий скрипт находятся в пакете vmmanager-kvm для VMmanager KVM. Сервис vmwatch-node и его управляющий скрипт находятся в пакете vmmanager-pkg-vmnode.

Запуск сервисов выполняется автоматически в процессе загрузки ОС или панелью управления в процессе настройки.

После установки VMmanager сервис vmwatch-master находится в заблокированном состоянии до тех пор, пока не будет добавлен первый узел в состав кластера.

Параметры работы сервисов записываются в конфигурационных файлах vmwatch-master.conf и vmwatch-node.conf соответственно, которые располагаются в каталоге /usr/local/mgr5/etc. Конфигурационные файлы формируются панелью управления автоматически.

Конфигурационные файлы записываются в формате ИМЯ_ПАРАМЕТРА=ЗНАЧЕНИЕ, по одному параметру на строке.

Конфигурационный файл vmwatch-master.conf

Может содержать следующие параметры:

  • disabled — наличие параметра со значением yes блокирует выполнение сервиса;
  • listen — значение параметра в формате 'протокол://IP:порт' определяет сокет, на котором сервис принимает сообщения;
  • secret — произвольная строка символов (A-Z, 0-9), значение параметра используется для аутентификации входящих сообщений.

Конфигурационный файл vmwatch-node.conf

Может содержать следующие параметры:

  • connect — значение параметра в формате протокол://IP:порт определяет сокет, на который сервис отправляет сообщения;
  • secret — значение параметра используется для аутентификации исходящих сообщений. Должно совпадать со значением параметра secret конфигурационного файла vmwatch-master;
  • node_id — идентификатор узла кластера, используется в сообщениях для идентификации источника сообщения.

Настройка сервисов

Настройка сервисов выполняется панелью в автоматическом режиме по необходимости:

  • при выполнении обновления до версии, поддерживающей подсистему мониторинга, и при наличии узлов в составе кластера;
  • при добавлении узла в состав кластера.

Определение IP-адреса, на котором vmwatch-master будет принимать сообщения, выполняется следующим образом:

  • проверяется значение параметра VmwatchListenIp конфигурационного файла панели;
  • если IP-адрес не задан параметром, выполняется поиск узла кластера, на котором расположена панель управления;
  • если локального узла кластера нет, выполняется сканирование IP-адресов на всех сетевых интерфейсах сервера, на котором располагается панель управления. Выбирается первый из списка IP-адрес, который не является локальным.

Порт, на котором vmwatch-master принимает сообщения, определяется параметром VmwatchListenPort конфигурационного файла панели. Значение по умолчанию — 1515.

Для изменения IP-адреса и/или порта запишите соответствующие параметры в конфигурационный файл панели управления, перезапустите панель и вызовите функцию API vmwatch.configure. Эта функция сконфигурирует все сервисы мониторинга в соответствии с указанными параметрами.

Контроль состояния сервисов


Контроль состояния сервиса vmwatch-master выполняется панелью при вызове функции API periodic по расписанию каждые 60 минут.

Если функция контроля обнаружит, что сервис остановлен, она зарегистрирует соответствующее уведомление о проблеме, при решении которой будет выполнено повторное конфигурирование всей подсистемы мониторинга.

Контроль состояния сервиса vmwatch-node выполняется панелью при вызове функции API periodic по расписанию каждые 5 минут в процессе проверки состояния панели управления узла кластера (vmmini).

Если сервис остановлен, функция контроля регистрирует соответствующее уведомление о проблеме, при решении которой будет выполнение повторное конфигурирование сервиса на этом узле кластера.

Проверка состояния VM


Опции кластера → Политики → опция Проверять активность VM позволяет проверять состояние виртуальных машин. Алгоритм проверки состояния использует статистические данные, передаваемые сервисами мониторинга VM. Проверка состояния заключается в периодическом анализе количества отправленных по сети пакетов и количества запросов на запись в диск виртуальной машины. Сервис vmwatch-node каждые 10 мин собирает статистику со всех доменов и отсылает ее сервису vmwatch-master. Если любое из этих значений равно нулю, в списке VM выводится соответствующее предупреждение.

Журналы сервисов

Журнал сервиса vmwatch-master находится в файле /usr/local/mgr5/var/vmwatch-master.log, сервиса vmwatch-node в файле /usr/local/mgr5/var/vmwatch-node.log.