Мониторинг статуса виртуальных машин

Материал из ISPWiki
Перейти к: навигация, поиск

Иерархия: VMmanager KVM -> Виртуальные машины
VMmanager Cloud -> Виртуальные машины

Назначение

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

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

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

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

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

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

Сервис vmwatch-master

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

Для VMmanager Cloud: при включенных облачных функциях в случае смены мастер-сервера сервис останавливается и блокируется на старом мастере, на новом мастере в панели выполняется функция настройки сервисов, которая запускает vmwatch-master и перенастраивает все сервисы vmwatch-node для передачи сообщений на новый мастер.


Сервис vmwatch-node

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

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

Запуск и автозапуск сервисов контролируется службой sysvinit (systemd для CentOS 7). Сервис vmwatch-master и его управляющий скрипт находятся в пакете vmmanager-kvm для VMmanager KVM и в пакете vmmanager-cloud для VMmanager Cloud. Сервис 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 - идентификатор узла кластера, используется в сообщениях для идентификации источника сообщения.

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

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

  • при выполнении обновления до версии, поддерживающей подсистему мониторинга и при наличии узлов в составе кластера;
  • при добавлении узла в состав кластера;
  • при переносе мастера на другой узел (только для VMmanager Cloud при включенных облачных функциях).

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

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

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

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

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

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

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

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

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

Проверка состояния 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.