База знаний VMmanager

Базовая диагностика

Статья содержит команды для выявления причин некорректной работы платформы, а также команды для перезапуска контейнеров и некоторых служб для восстановления их работы.

Для некоторых команд могут потребоваться привилегии суперпользователя.

Общая диагностика

Раздел содержит список команд, которые вы можете выполнить в качестве первого шага диагностики. Эти команды позволят исключить базовые проблемы и сократить время поиска неполадок.

Версия операционной системы (ОС)

Если ОС мастер-сервера или сервера для узла не поддерживается платформой, установка или подключение завершится с ошибкой. Чтобы определить версию ОС, выполните команду:

cat /etc/*release

Список поддерживаемых ОС см. в документации VMmanager:

Дата и время на сервере

Во время периодической синхронизации с сервером лицензий происходит проверка даты и времени. Если на сервере с платформой установлены некорректная дата или время, платформа будет заблокирована или её работа будет некорректной. Чтобы определить текущую дату и время на сервере, выполните команду:

date -R

Занятое пространство диска и оперативная память

Для корректной работы платформы свободное пространство диска и оперативная память должны соответствовать требованиям, указанным в статье Требования к серверу документации VMmanager. Также, если свободного пространства или оперативной памяти недостаточно, виртуальные машины и резервные копии не будут создаваться. Чтобы проверить объём занятого пространства диска и данные о файловой системе, выполните команду:

df -hT

Чтобы получить информацию об оперативной памяти, выполните команду:

free -h

Inodes

inodes — это структура, в которой хранятся метаданные файлов. Работа платформы не будет корректной, если на сервере закончились inodes, даже при наличии свободного места на диске. Характерное поведение при нехватке inodes — снижение быстродействия, невозможность создания файлов, некорректный вывод информации в интерфейс платформы. Чтобы проверить число и долю использованных inodes в файловой системе, выполните команду:

df -i

Выявление неполадок в системе Linux

Для выявления неполадок в системе Linux изучите системные логи. Ниже приведены инструменты для поиска неполадок и ошибок в логах сервера. Подробнее о логах продукта см. в статье Лог-файлы платформы документации VMmanager.

Кольцевой буфер ядра

Один из способов выявить некорректную работу системы — просмотр журнала ядра с помощью утилиты dmesg. Ядро записывает все события в кольцевой буфер во время загрузки и работы системы. dmesg позволит изучить сообщения ядра, а также выявить проблемы, связанные с оборудованием. Для поиска проблем выполните эту команду:

dmesg | grep -i -E 'error|failed|critical|bug|panic'

Утилита journalctl

Проанализировать логи и выявить неполадки системы можно с помощью утилиты journalctl. Утилита выводит логи системных служб Linux. Для выявления некорректного поведения системы Linux, выполните команду:

journalctl | grep -i -E 'error|failed|critical|bug|panic'

Перезапуск платформы


С перезапуском платформы произойдёт удаление лог-файлов. Перед перезапуском рекомендуем собрать логи с помощью скрипта. Инструкцию см. в статье Лог-файлы платформы документации VMmanager.

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

vm stop && vm start

CPU

Архитектура CPU

Снижение производительности узла платформы может быть связано с техническими характеристиками CPU. Также информация об архитектуре CPU может быть полезна при диагностике проблем с тонкой настройкой виртуальных машин. Чтобы вывести информацию, выполните команду:

lscpu

Подсчёт CPU на узлах

Лицензирование VMmanager 6 учитывает только физические ядра. Чтобы при заказе лицензии указать точное значение CPU, рассчитайте количество ядер на узлах командой:

dmidecode --type processor | grep -i "core count" | grep -Eo "[0-9]+?"

Также подсчёт CPU необходим в случае, когда управление платформой блокируется из-за ошибки CPU cores number on node exceeds license limit. Ошибка возникает, если количество физических ядер в подключаемом узле превышает лимит. Чтобы проверить превышение лимита, сверьте вывод команды dmidecode с параметрами лицензии VMmanager.

Нагрузка на систему

При повышенной нагрузке на систему снизится производительность узлов. С помощью команды для подсчёта CPU можно определить нагрузку на систему. Для этого сравните количество физических ядер с параметром Load Average. Выполните команду:

uptime

Значение параметра Load Average должно быть меньше количества ядер, полученного командой для подсчёта CPU. 

Виртуальные машины (ВМ)

Состояние ВМ

Отобразить текущий статус всех виртуальных машин, чтобы диагностировать возможные неполадки, можно утилитой virsh.

Чтобы выполнять команды virsh, подключитесь к нужному узлу:

docker exec --tty --interactive vm_box ssh -i /opt/ispsystem/vm/etc/.ssh/vmmgr.1 <IP_address> -p 22
Пояснения

Чтобы отобразить состояние всех ВМ, выполните команду:

virsh list --all

Чтобы отобразить состояние конкретной ВМ, выполните команду:

virsh list --all | grep <название ВМ>

Демон виртуализации libvirt

Libvirt — набор инструментов для управления виртуализацией. Без запущенного сервиса Libvirt (libvirtd) работа платформы будет некорректной. Проверьте текущий статус сервиса командой:

systemctl status libvirtd

Если сервис остановлен или неактивен, запустите его:

systemctl start libvirtd

Если libvirt не установлен, вывод команды systemctl status libvirtd будет содержать сообщение:

Unit libvirtd.service could not be found

В этом случае:

  1. Установите libvirt вручную командой в зависимости от ОС:

    Для RHEL-based ОС (CentOS, AlmaLinux)
    yum install libvirt
    Для Deb-based ОС (Ubuntu, Astra Linux)
    apt install libvirt
  2. Запустите сервис:

    systemctl start libvirtd
  3. Добавьте сервис libvirtd в автозагрузку:

    systemctl enable libvirtd
  4. Повторно проверьте статус сервиса, чтобы убедиться, что он запущен.

Контейнеры

Служба docker

Docker-демон — служба, которая управляет контейнерами, а также другими сущностями docker: сетями, хранилищами и образами. Если эта служба не запущена, платформа не будет работать. Чтобы проверить состояние docker, выполните команду:

systemctl status docker

 Если служба остановлена, запустите её командой:

systemctl start docker

Чтобы проверить версию docker, выполните команду:

docker version

Презапуск службы docker

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

systemctl restart docker.service

Перезапуск службы помогает исправить ряд ошибок, которые могут возникнуть при запуске, перезапуске или выключении платформы:

  • error while removing network: network <имя_сети> has active endpoints

    Пример ошибки
    error while removing network: network vm_vm_box_net id 88888ggggg has active endpoints
    exit status 1 
  • ERROR: for <имя_сервиса> Cannot start service <имя_сервиса>: endpoint with name <имя_контейнера> already exists in network <имя_сети>

    Пример ошибки
    ERROR: for auth_back Cannot start service auth_back: endpoint with name vm_auth_back_1 already exists in network vm_vm_box_net

    В указанном примере не смог запуститься контейнер vm_auth_back_1.

  • ERROR: for input Cannot start service input: driver failed programming external connectivity on endpoint vm_input_1

Для исправления указанных ошибок перезапустите службу docker командой, указанной выше.

Если проблему не удалось решить, обратитесь в службу технической поддержки через личный кабинет в разделе ПоддержкаЗапросыСоздать.

Статус контейнеров

Для диагностики возможных проблем отобразите список контейнеров и их статусов. Чтобы вывести список всех запущенных контейнеров, выполните команду:

docker ps

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

docker ps -a

Если необходимо проверить статус конкретного контейнера, выполните команду:

docker ps | grep <имя-контейнера>

Перезапуск контейнера

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

docker restart <имя-контейнера>

Перезапуск taskmgr

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

docker exec -it vm_box supervisorctl restart taskmgr

Перезапуск monitor

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

docker exec -it vm_box supervisorctl restart monitor

Логирование

Для анализа событий контейнера изучите его журнал. Чтобы вывести последние 100 строк лога контейнера, выполните команду:

docker logs --tail 100 <имя-контейнера>

Файрвол

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

Статус службы и конфигурация

Чтобы проверить статус службы файрвола, выполните команду в зависимости от ОС:

Для Ubuntu, Astra Linux
systemctl status nftables
Для CentOS, AlmaLinux
systemctl status firewalld

Для вывода конфигурации службы выполните команду в зависимости от ОС:

Для Ubuntu, Astra Linux
nft list ruleset
Для CentOS, AlmaLinux
firewall-cmd --list-ports

Перезапуск службы

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

Чтобы перезапустить службу, выполните команду:

Для CentOS, AlmaLinux
systemctl restart firewalld.service
Для Ubuntu, Astra Linux
systemctl restart nftables.service

Чтобы восстановить правила по умолчанию:

  1. Перезапустите nftables командой:

    Для CentOS, AlmaLinux
    systemctl restart firewalld.service
    Для Ubuntu, Astra Linux
    systemctl restart nftables.service
  2. Перезапустите docker командой:

    systemctl restart docker.service
  3. Перезапустите платформу командой из раздела Перезапуск платформы этой статьи.

Поиск информации в базе данных

Важно

Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

Создайте резервную копию платформы перед выполнением любых действий с БД. 

С помощью запросов к базе данных можно увидеть информацию о состоянии ВМ, узлов и других объектов платформы. Ниже приведён список запросов для получения данных из базы.

Чтобы выполнить запросы, подключитесь к контейнеру СУБД:

В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

  • VMmanager Hosting — MySQL;
  • VMmanager Infrastructure:
    • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
    • в остальных случаях — MySQL.

Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

docker ps --filter name=pgsql
Пример ответа
CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql

Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

MySQL
docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
PostgreSQL
 docker exec -it pgsql bash -c "psql -d isp"

Информация о ВМ

Информация о ВМ отобразит все параметры её состояния, внутреннее название, данные узла.

Чтобы получить информацию о виртуальной машине, выполните запрос:

select * from vm_host where id=<id_vm>;
Пояснения

Чтобы вывести информацию об узле и внутреннее название ВМ, выполните запрос:

select id,internal_name,node from vm_host where id=<id_vm>;
Пояснения

Информация об узле

Информация об узле отобразит выбранные параметры узла.

Чтобы получить информацию об узле, выполните запрос:

select id,name,ip_addr,ssh_port from vm_node where id=<id_node>;
Пояснения

Чтобы проверить сеть на узле, выполните запрос:

select * from vm_node_interfaces where node=<id_node>;
Пояснения

Виртуальные диски ВМ

Информация о виртуальном диске поможет диагностировать проблемы, связанные с ним. Например, ошибку virt-resize: error, которая может возникнуть при некорректном значении expand_part (раздел для увеличения) и размере виртуального диска в БД.

Чтобы увидеть всю информацию о диске, выполните этот запрос:

select * from vm_disk where name = 'example_name';
Пояснения

Чтобы проверить фактический размер диска, выполните команду на узле:

virsh domblkinfo --human 1111_example_name vda
Пояснения

Резервное копирование

Запросом к БД можно проверить расписание резервных копий, чтобы выявить возможные проблемы. Чтобы получить информацию, выполните запрос:

select * from vm_schedule;