Мониторинг#
В ПВ используется распределенная система мониторинга. которая реализована в виде выделенного процесса onemonitord
, являющегося составной частью службы сервера управления.
Система мониторинга собирает следующую информацию, касающуюся серверов виртуализации и виртуальных машин: - состояние сервера виртуализации; - основные показатели производительности сервера виртуализации; - состояние ВМ; - вычислительные ресурсы, потребляемые ВМ. - Информация мониторинга формируется в результате выполнения ряда тестовых программ на серверах виртуализации и транслируется по сети на сервер управления (по умолчанию используется TCP/UDP-порт 4124).
Предупреждение
Межсетевой экран сервера управления должен разрешать получение пакетов по прослушиваемому порту.
Схема работы системы мониторинга:

При первичном запуске система мониторинга подключается к узлу виртуализации с помощью ssh
и запускает на нем сервис агента мониторинга. Агент мониторинга выполняет тесты и затем отсылает собранные данные на сервер управления в систему мониторинга. Затем агент мониторинга с заданной периодичностью выполняет тесты и отсылает собранные данные. В связи с этим системе мониторинга не требуется выполнять новые ssh-соединения для получения данных.
В случае, если в заданный промежуток времени в систему мониторинга не поступили данные от агента мониторинга, производится повторное подключение и перезапуск агента.
Настройка системы мониторинга#
Действия по настройке системы мониторинга выполняются в ОС СН под учетной записью администратора ОС СН с высоким уровнем целостности.
Настройки системы мониторинга размещены в конфигурационном файле /etc/one/monitord.conf
, в котором можно задать значения параметров:
Параметр |
Описание |
---|---|
MANAGER_TIMER |
Время в секундах, необходимое для оценки периодических функций |
MONITORING_INTERVAL_HOST |
Время ожидания данных от агента мониторинга (в секундах). Если за указанное время данные не получены, то выполняется повторное подключение и перезапуск агента мониторинга |
HOST_MONITORING_EXPIRATION_TIME |
Время в секундах, по истечении которого информация мониторинга сервера виртуализации устаревает. Если необходимо отключить мониторинг, следует установить значение 0 |
DB |
Блок настроек подключения к БД. Основные настройки подключения к БД задаются в конфигурационном файле |
LOG |
Блок параметров для настройки регистрации событий системы мониторинга. Содержит следующие параметры: 1) SYSTEM — тип системы регистрации, возможные значения: file — регистрация в файл |
NETWORK |
Блок настроек сетевого соединения. Указываются значения следующих параметров: 1) ADDRESS — IP-адрес, на котором принимать информацию мониторинга (на заданный TCP/UDP-порт); 2) MONITOR_ADDRESS — IP-адрес сервера управления, на который агенты мониторинга отправляют информацию мониторинга. Если используется технология Raft, то необходимо указать плавающий IP-адрес кластера; 3) PORT — TCP/UDP-порт, на котором принимать информацию мониторинга; 4) THREADS — количество потоков обработки информации мониторинга; 5) PUBKEY — абсолютный путь для открытого ключа. Не указывается, если кодирование не применяется; 6) PRIKEY — абсолютный путь для закрытого ключа. Не указывается, если кодирование не применяется |
PROBES_PERIOD |
Блок настроек тестов. Указываются значения следующих параметров: 1) BEACON_HOST — время в секундах, по прошествии которого на сервер виртуализации отправляется тестовый пакет, для проверки его работоспособности; 2) SYSTEM_HOST — время в секундах, по прошествии которого, должна быть получена информация о состоянии и конфигурации сервера виртуализации; 3) MONITOR_HOST — время в секундах, по прошествии которого, должна быть получена информация мониторинга сервера виртуализации (о вычислительных ресурсах и сетевой нагрузке); 4) STATE_VM — время в секундах, по прошествии которого, должна быть получена информация о состоянии ВМ; 5) MONITOR_VM — время в секундах, по прошествии которого, должна быть получена информация о вычислительных ресурсах, потребляемых ВМ; 6) SYNC_STATE_VM — время ожидания информации мониторинга ВМ. Если за указанное время информация не получена, то направляется полный отчет о ВМ |
После внесения изменений в конфигурационный файл необходимо перезапустить службу сервера управления командой:
sudo systemctl restart opennebula
Примечание
Пример
Значения параметров системы мониторинга, установленные по умолчанию:
#MANAGER_TIMER = 15
MONITORING_INTERVAL_HOST = 30 #rbt: automigration
#HOST_MONITORING_EXPIRATION_TIME = 43200
#VM_MONITORING_EXPIRATION_TIME = 43200
DB = [
CONNECTIONS = 15
]
NETWORK = [
ADDRESS = "0.0.0.0",
MONITOR_ADDRESS = "auto",
PORT = 4124,
THREADS = 8,
PUBKEY = "",
PRIKEY = ""
]
PROBES_PERIOD = [
BEACON_HOST = 30,
SYSTEM_HOST = 600,
MONITOR_HOST = 120,
STATE_VM = 5,
MONITOR_VM = 30,
SYNC_STATE_VM = 180
]
Для указания настроек информационного драйвера в конфигурационном файле /etc/one/monitord.conf
используется блок IM_MAD
, в котором указываются значения параметров:
Параметр |
Описание |
---|---|
NAME |
Наименование информационного драйвера |
SUNSTONE_NAME |
Тип гипервизора, установленного на узле виртуализации |
EXECUTABLE |
Путь исполняемого модуля драйвера, может быть абсолютным или относительным (относительно каталога |
ARGUMENTS |
Параметры настройки функционирования информационного драйвера: |
THREADS |
количество потоков обработки информации мониторинга |
Примечание
Пример
Настройки информационного драйвера для узла виртуализации с гипервизором kvm, установленные по умолчанию:
IM_MAD = [
NAME = "kvm",
SUNSTONE_NAME = "KVM",
EXECUTABLE = "one_im_ssh",
ARGUMENTS = "-r 3 -t 15 -w 90 kvm",
THREADS = 0
]
Отчет системы мониторинга#
По умолчанию отчеты системы мониторинга сохраняются в файл /var/log/one/monitor.log
.
Примечание
Пример
Результаты мониторинга сервера виртуализации с идентификатором 0 (host: 0
) и виртуальной машины с идентификатором 10 (VM: 10
):
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading drivers.
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: kvm
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: kvm
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: qemu
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: qemu
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: lxd
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: lxd
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: lxc
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: lxc
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: firecracker
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: firecracker
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Loading driver: vcenter
Thu Jun 23 12:35:28 2022 [Z0][DrM][I]: Driver loaded: vcenter
Thu Jun 23 12:35:32 2022 [Z0][HMM][I]: Raft status: SOLO
Thu Jun 23 12:35:41 2022 [Z0][HMM][I]: Successfully monitored VM: 10
Thu Jun 23 12:36:17 2022 [Z0][HMM][D]: Monitoring host fn.brest.local(0)
Thu Jun 23 12:36:23 2022 [Z0][HMM][I]: Successfully monitored VM: 10
Thu Jun 23 12:36:23 2022 [Z0][HMM][I]: Successfully monitored host: 0
Thu Jun 23 12:36:23 2022 [Z0][HMM][D]: Start monitor success, host: 0
Thu Jun 23 12:36:24 2022 [Z0][HMM][I]: Successfully monitored host: 0
Thu Jun 23 12:36:24 2022 [Z0][HMM][I]: Successfully monitored VM: 10
Thu Jun 23 12:36:55 2022 [Z0][HMM][I]: Successfully monitored VM: 10
Thu Jun 23 12:37:25 2022 [Z0][HMM][I]: Successfully monitored VM: 10
Thu Jun 23 12:38:02 2022 [Z0][HMM][D]: Monitoring host fn.brest.local(0)
Кроме того, в файле /var/log/one/oned.log
также фиксируются сообщения, относящиеся к системе мониторинга.
Примечание
Пример
Thu Jun 23 12:35:40 2022 [Z0][InM][D]: Monitoring datastore images-ds (100)
Thu Jun 23 12:35:40 2022 [Z0][InM][D]: Monitoring datastore system-ds (101)
Thu Jun 23 12:35:40 2022 [Z0][InM][D]: Monitoring datastore default (1)
Thu Jun 23 12:35:40 2022 [Z0][InM][D]: Monitoring datastore files (2)
...
Thu Jun 23 12:36:23 2022 [Z0][InM][D]: Host fn.brest.local (0) successfully monitored.
Thu Jun 23 12:36:26 2022 [Z0][InM][D]: Host fn.brest.local (0) successfully monitored.
Thu Jun 23 12:37:29 2022 [Z0][InM][D]: VM_STATE update from host: 0.
VM id: 10, state: RUNNING
Настройка и расширение#
Кодирование информации мониторинга#
В ПВ можно включить кодирование сообщений, которые агенты мониторинга направляют на сервер управления. Для этого необходимо выполнить следующие действия:
На сервере управления войти в ОС СН под учетной записью администратора с высоким уровнем целостности равным 127.
Создать открытый и закрытый ключи, сохранив их, например, в каталог
/etc/one/
, командой:
sudo ssh-keygen -f /etc/one/onemonitor
Для всех параметров оставлять значения по умолчанию (сразу нажимать клавишу Enter.
Создать новый файл открытого ключа в формате
PKCS#1
командой:
sudo ssh-keygen -f /etc/one/onemonitor.pub -e -m pem | \ sudo tee /etc/one/onemonitor_pem.pub
В конфигурационном файле
/etc/one/monitord.conf
, в блоке настроек сетевого соединения указать абсолютные пути открытого и закрытого ключей.
Примечание
Пример
NETWORK = [
...
PUBKEY = "/etc/one/onemonitor_pem.pub",
PRIKEY = "/etc/one/onemonitor"
]
Перезапустить службу
opennebula
командой:
sudo systemctl restart opennebula
Перезапустить агенты мониторинга на серверах виртуализации командой:
sudo -u oneadmin onehost sync -f
Пример вывода после выполнения команды:
* Adding fn.brest.local to upgrade
[========================================] 1/1 fn.brest.local
All hosts updated successfully.
Если для обеспечения отказоустойчивости службы сервера управления применяется технология Raft
, то открытый и закрытый ключи, а также конфигурационный файл /etc/one/monitord.conf
необходимо скопировать на другие экземпляры сервера управления. Для этого следует выполнить следующие действия:
1. Скопировать файл закрытого ключа командой: .. code-block:: bash
sudo scp /etc/one/onemonitor <сервер_управления>:/etc/one/
где <сервер_управления>
— сетевое имя экземпляра сервера управления. Допускается вместо сетевого имени указать IP-адрес.
Скопировать файл открытого ключа в формате
PKCS#1
командой:
sudo scp /etc/one/onemonitor_pem.pub <сервер_управления>:/etc/one/
Скопировать конфигурационный файл командой:
sudo scp /etc/one/monitord.conf <сервер_управления>:/etc/one/
На другом экземпляре сервера управления перезапустить запустить службу сервера управления командой:
sudo systemctl restart opennebula
Тесты#
Тесты представляют собой специальные программы, которые обеспечивают получение контрольных показателей мониторинга. Конфигурационные файлы тестов определяются для каждого гипервизора. Для гипервизора KVM используется конфигурационный файл /var/lib/one/remotes/etc/im/<hypervisor>-probe.d/probe_db.conf
. Следующие параметры доступны для корректировки значений:
obsolete
— период времени (в минутах), по истечению которого информация о статусе ВМ считается устаревшей и будет удалена;times_missing
— количество тестов, завершившихся неудачей, после которых для ВМ устанавливается статус «недоступна».
Примечание
** Пример**
Настройки теста для сервера виртуализации с гипервизором kvm
, установленные по умолчанию:
:obsolete: 720
:times_missing: 5
После внесения изменений в конфигурационные файлы тестов необходимо перезапустить агенты мониторинга на серверах виртуализации командой:
sudo -u oneadmin onehost sync -f
Получение информации о потреблении ресурсов#
Для вывода информации о потреблении ресурсов узла виртуализации используется команда:
onehost monitoring <идентификатор_узла> <параметр_мониторинга> <вид_отображения>
Описание параметров мониторинга:
Параметр |
Описание |
---|---|
|
Количество свободных ЦП |
|
Объем свободной памяти |
|
Количество ЦП, выделенных для работы всех ВМ |
|
Объем памяти, выделенной для работы всех ВМ |
|
Объем входящего сетевого трафика |
|
Объем исходящего сетевого трафика |
Если не указывать вид отображения, то информация мониторинга будет выведена в виде графика (в ОС СН должен быть установлен пакет gnuplot
). Кроме того, в качестве вида отображения информации мониторинга можно указать следующее:
--table
— табличный вид отображения;--csv ’<символ_разделителя>’
— отображение в форматеcsv
.
Дополнительно можно указать следующие параметры отображения:
--n
— отображать последние «n» записей;unit <единицы_измерения>
— отображение в заданных единицах измерения (например, «G» — в гигабайтах);--start <дата>
— отображать записи, начиная с указанной даты;--end <дата>
— отображать записи, до указанной даты.
Примечание
Примеры
Для отображения в виде графика (в ОС СН должен быть установлен пакет
gnuplot
) необходимо выполнить команду:
onehost monitoring 0 FREE_CPU --n 10 --unit G
Пример вывода после выполнения команды:
gnuplot 5.2 patchlevel 6
Host 0 FREE_CPU from 07/07/2022 10:00 to 07/07/2022 12:11
400 +------------------------------------------------------------+
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | + \*\* | + + + | + | \| | | | |
+=============+============+=======+==================+================+=======+=======+=======+
| 395 \|-+ | \*\* \* | A A | | +-\| | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | \* | \* | \**\* \*\* | | \| | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 390 \|-+ | \* | \* | \* \* \* \* | | +-\| | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | \* | \* | \*\* | \* \* \* | | \| | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 385 \|-+ | \* | \* | \* | \* \* | \* | | +-\| |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | \*\* | \* | \*\* | \* \* | \* | | \| |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 380 \|-+ | \* | \* | \* | \* \* | \* | | +-\| |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 375 \|-+ | \* | \* | \*\* | \* \* | \* | | +-\| |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | \* | \* | \* | \* \* | \* | | \| |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 370 \|-+ \* | \* | \*\* | \*\* | \* | | \**\| | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| \*\* | \* \* | A | \* | \*****\* \| | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 365 \|*+ | \**\* | | \* \*****\* +-\| | | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| | A | | A*\* \| | | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| 360 \|-+ | | | +-\| | | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
| \| + | + + | + | + + \| | | | | |
+-------------+------------+-------+------------------+----------------+-------+-------+-------+
..
355 +------------------------------------------------------------+
12:04 12:05 12:06 12:07 12:08 12:09 12:10 12:11
Для отображения в виде таблицы необходимо выполнить команду:
onehost monitoring 0 FREE_CPU --table --n 10 --unit G
Пример вывода после выполнения команды:
Host 0 FREE_CPU from 07/07/2022 10:00 to 07/07/2022 12:06
TIME VALUE
11:59 396
11:59 360
12:01 396
12:01 360
12:02 400
12:02 356
12:04 396
12:04 364
12:06 400
12:06 364
Для отображения в формате
csv
необходимо выполнить команду:
onehost monitoring 0 FREE_CPU --csv ’;’ --n 10 --unit G
Пример вывода после выполнения команды:
TIME;VALUE
11:59;396
11:59;360
12:01;396
12:01;360
12:02;400
12:02;356
12:04;396
12:04;364
12:06;400
12:06;364