База знаний DCImanager 6

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

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

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

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

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

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

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

cat /etc/*release

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

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

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

date -R

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

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

df -hT

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

free -h

Inodes

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

df -i

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

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

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

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

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

Утилита journalctl

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

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

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


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

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

dci stop && dci start

Контейнеры

Служба docker

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

systemctl status docker

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

systemctl start docker

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

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

systemctl restart docker.service

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

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

    Пример ошибки
    Removing network dci_auth
    error while removing network: network dci_auth id 777yy66lkjh has active endpoints
    exit status 1
  • ERROR: for input Cannot start service input: driver failed programming external connectivity on endpoint dci_input_1

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

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

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

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

docker ps

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

docker ps -a

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

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

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

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

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

Для перезапуска модифицированных докер-контейнеров на сервере-локации используйте команды: 

/opt/ispsystem/dci/etc/location_compose.sh down
/opt/ispsystem/dci/etc/location_compose.sh up -d

Подробнее о модификации контейнеров см. в статье Модификация контейнеров на сервере-локации документации DCImanager 6.

Диспетчер задач

Диспетчер задач в DCImanager 6 состоит из двух частей:

  1. TaskManager worker — исполняемый файл, который запускается в качестве сервиса. Файл получает список задач от TaskManager master сервиса и производит запуск файлов и скриптов.
  2. TaskManager master — сервис, который принимает запросы на регистрацию задачи, выполняет контроль очередей, а также взаимодействует с БД и TaskManager worker.

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

docker exec -it dci_back supervisorctl restart taskmgr_worker

Если это не помогло, выполните перезапуск TaskManager master:

docker restart dci_taskmgr_1

Логирование

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

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

Проксирование подключений к BMC

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

  1. Перезапустите модуль на сервере локации:

    docker-compose -f /opt/ispsystem/ipmi_proxy_service/etc/docker/ipmi_proxy_v2.yml down
    docker-compose -f /opt/ispsystem/ipmi_proxy_service/etc/docker/ipmi_proxy_v2.yml up -d
  2. Перезапустите сервис drop_sessions в контейнере dci_ipmi_proxy_v2_client_1 на сервере с платформой:

    Имена контейнеров могут отличаться в зависимости от используемой версии Docker Compose. Вместо символа подчёркивания в именах контейнеров может использоваться дефис.

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

    docker ps -a
    docker exec -it dci_ipmi_proxy_v2_client_1 supervisorctl restart drop_sessions

Подробнее о модуле проксирования BMC см. в статье Модуль "Проксирование BMC через сервер локации" документации DCImanager 6.

Подключение сервера локации

В этом разделе рассмотрена диагностика проблем с подключением локации.

Программа-демон sshd

sshd — программа-демон для SSH, принимающая запросы на соединения. Перед подключением сервера локации необходимо проверить, что на нём работает sshd. Для этого выполните команду:

systemctl status sshd

 Проверьте в конфигурационном файле /etc/ssh/sshd_config наличие этих параметров:

PermitRootLogin yes
PasswordAuthentication yes

Добавьте их, если эти параметры отсутствуют. Они необходимы для подключения сервера локации по протоколу SSH.

Кроме этого, проверьте:

  • доступность сервера локации с сервера платформы утилитой ping или curl;
  • наличие свободного пространства на сервере локации командой df -h;
  • соответствие другим требованиям к локации. Подробнее см. в статье Локации. Общая информация документации DCImanager 6.

Файрвол

Если в файрволе нет правил для службы 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. Перезапустите платформу командой из раздела Перезапуск платформы этой статьи.

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

Важно

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

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

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

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

docker exec -it mysql bash -c "mysql auth -p\$MYSQL_ROOT_PASSWORD"

Информация о локации

Информация о локации поможет увидеть полную картину о её состоянии.

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

SELECT userspace,proxy_params,is_main,settings,params_netflow,params_nginx,params_redis,params_dhcp,setup_info,ssh_user,ssh_port,ssh_address,geolocation,status_info,status,id FROM dci_location WHERE id='<location_id>'\G;
Пояснения

Чтобы проверить шаблоны ОС на сервере локации, выполните запрос:

select * from dci_location_os_template where id in (1,2,3) \G;
Пояснения

Задачи

Информация о статусе задачи позволит отследить её состояние, проверить смену статуса зависшей задачи.

Если задача зависла в статусе Выполняется, следить за процессом можно с помощью запроса:

select * from taskmgr_task where status IN ('running')\G

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

select count(*) from taskmgr_task where status='created';