Мониторинг#

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

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

Предупреждение

Межсетевой экран сервера управления должен разрешать получение пакетов по прослушиваемому порту.

Схема работы системы мониторинга:

../../../../_images/monitoring_sys.png

При первичном запуске система мониторинга подключается к узлу виртуализации с помощью ssh и запускает на нем сервис агента мониторинга. Агент мониторинга выполняет тесты и затем отсылает собранные данные на сервер управления в систему мониторинга. Затем агент мониторинга с заданной периодичностью выполняет тесты и отсылает собранные данные. В связи с этим системе мониторинга не требуется выполнять новые ssh-соединения для получения данных.

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

Настройка системы мониторинга#

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

Настройки системы мониторинга размещены в конфигурационном файле /etc/one/monitord.conf, в котором можно задать значения параметров:

Параметр

Описание

MANAGER_TIMER

Время в секундах, необходимое для оценки периодических функций

MONITORING_INTERVAL_HOST

Время ожидания данных от агента мониторинга (в секундах). Если за указанное время данные не получены, то выполняется повторное подключение и перезапуск агента мониторинга

HOST_MONITORING_EXPIRATION_TIME

Время в секундах, по истечении которого информация мониторинга сервера виртуализации устаревает. Если необходимо отключить мониторинг, следует установить значение 0

DB

Блок настроек подключения к БД. Основные настройки подключения к БД задаются в конфигурационном файле /etc/one/one.d/db.conf. В файле /etc/one/monitord.conf указывается только значение параметра CONNECTIONS — количество одновременных подключений к БД

LOG

Блок параметров для настройки регистрации событий системы мониторинга. Содержит следующие параметры: 1) SYSTEM — тип системы регистрации, возможные значения: file — регистрация в файл /var/log/one/monitor.log (установлено по умолчанию); syslog — регистрация в системный журнал; std — регистрация в стандартный поток ошибок; 2) DEBUG_LEVEL — уровень протоколирования, возможные значения: «0» — регистрировать сообщения об ошибках; «1» — регистрировать предупреждения; «2» — регистрировать информационные сообщения; «3» — регистрировать общие отладочные сообщения (установлено по умолчанию)

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

Путь исполняемого модуля драйвера, может быть абсолютным или относительным (относительно каталога /usr/lib/one/mads/)

ARGUMENTS

Параметры настройки функционирования информационного драйвера: r — количество перезапусков агента мониторинга, выполняемых в случае отсутствия конформации мониторинга в заданный период времени; t — количество наблюдаемых агентов мониторинга; w — таймаут (в секундах) до повторного выполнения внешних команд (по ssh)

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

Настройка и расширение#

Кодирование информации мониторинга#

В ПВ можно включить кодирование сообщений, которые агенты мониторинга направляют на сервер управления. Для этого необходимо выполнить следующие действия:

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

  2. Создать открытый и закрытый ключи, сохранив их, например, в каталог /etc/one/, командой:

sudo ssh-keygen -f /etc/one/onemonitor

Для всех параметров оставлять значения по умолчанию (сразу нажимать клавишу Enter.

  1. Создать новый файл открытого ключа в формате PKCS#1 командой:

sudo ssh-keygen -f /etc/one/onemonitor.pub -e -m pem | \ sudo tee /etc/one/onemonitor_pem.pub
  1. В конфигурационном файле /etc/one/monitord.conf, в блоке настроек сетевого соединения указать абсолютные пути открытого и закрытого ключей.

Примечание

Пример

NETWORK = [
    ...
    PUBKEY = "/etc/one/onemonitor_pem.pub",
    PRIKEY = "/etc/one/onemonitor"
    ]
  1. Перезапустить службу opennebula командой:

sudo systemctl restart opennebula
  1. Перезапустить агенты мониторинга на серверах виртуализации командой:

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-адрес.

  1. Скопировать файл открытого ключа в формате PKCS#1 командой:

sudo scp /etc/one/onemonitor_pem.pub <сервер_управления>:/etc/one/
  1. Скопировать конфигурационный файл командой:

sudo scp /etc/one/monitord.conf <сервер_управления>:/etc/one/
  1. На другом экземпляре сервера управления перезапустить запустить службу сервера управления командой:

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 <идентификатор_узла> <параметр_мониторинга> <вид_отображения>

Описание параметров мониторинга:

Параметр

Описание

FREE_CPU

Количество свободных ЦП

FREE_MEMORY

Объем свободной памяти

USED_CPU

Количество ЦП, выделенных для работы всех ВМ

USED_MEMORY

Объем памяти, выделенной для работы всех ВМ

NETRX

Объем входящего сетевого трафика

NETTX

Объем исходящего сетевого трафика

Если не указывать вид отображения, то информация мониторинга будет выведена в виде графика (в ОС СН должен быть установлен пакет gnuplot). Кроме того, в качестве вида отображения информации мониторинга можно указать следующее:

  • --table — табличный вид отображения;

  • --csv ’<символ_разделителя>’ — отображение в формате csv.

Дополнительно можно указать следующие параметры отображения:

  • --n — отображать последние «n» записей;

  • unit <единицы_измерения> — отображение в заданных единицах измерения (например, «G» — в гигабайтах);

  • --start <дата> — отображать записи, начиная с указанной даты;

  • --end <дата> — отображать записи, до указанной даты.

Примечание

Примеры

  1. Для отображения в виде графика (в ОС СН должен быть установлен пакет 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
  1. Для отображения в виде таблицы необходимо выполнить команду:

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
  1. Для отображения в формате 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