Статья содержит команды для выявления причин некорректной работы платформы, а также команды для перезапуска контейнеров и некоторых служб для восстановления их работы.
Общая диагностика
Раздел содержит список команд, которые вы можете выполнить в качестве первого шага диагностики. Эти команды позволят исключить базовые проблемы и сократить время поиска неполадок.
Версия операционной системы (ОС)
Если ОС мастер-сервера или сервера-локации не поддерживается платформой, установка или подключение завершится с ошибкой. Чтобы определить версию ОС, выполните команду:
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'
Перезапуск платформы
Перезапуск платформы может решить ряд базовых проблем, таких как зависание, некорректное отображение информации в интерфейсе, некорректное поведение обработчиков услуг. Чтобы перезапустить платформу, выполните команду:
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 состоит из двух частей:
- TaskManager worker — исполняемый файл, который запускается в качестве сервиса. Файл получает список задач от TaskManager master сервиса и производит запуск файлов и скриптов.
- 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. Для этого:
-
Перезапустите модуль на сервере локации:
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
-
Перезапустите сервис 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, мы не рекомендуем модифицировать или удалять их вручную.
Статус службы и конфигурация
Чтобы проверить статус службы файрвола, выполните команду в зависимости от ОС:
systemctl status nftables
systemctl status firewalld
Для вывода конфигурации службы выполните команду в зависимости от ОС:
nft list ruleset
firewall-cmd --list-ports
Перезапуск службы
Перезапуск службы необходим в случае её некорректной работы, а также для восстановления правил по умолчанию.
Чтобы перезапустить службу, выполните команду:
systemctl restart firewalld.service
systemctl restart nftables.service
Чтобы восстановить правила по умолчанию:
-
Перезапустите nftables командой:
Для CentOS, AlmaLinuxsystemctl restart firewalld.service
Для Ubuntu, Astra Linuxsystemctl restart nftables.service
-
Перезапустите docker командой:
systemctl restart docker.service
- Перезапустите платформу командой из раздела Перезапуск платформы этой статьи.
Поиск информации в базе данных
Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.
Создайте резервную копию платформы перед выполнением любых действий с БД.
С помощью запросов к базе данных можно увидеть информацию о состоянии локации, отобразить шаблоны ОС и другие значения. Ниже приведён список запросов для получения данных из базы.
Чтобы выполнить запросы, подключитесь к контейнеру 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';