Статья содержит команды для выявления причин некорректной работы платформы, а также команды для перезапуска контейнеров и некоторых служб для восстановления их работы.
Общая диагностика
Раздел содержит список команд, которые вы можете выполнить в качестве первого шага диагностики. Эти команды позволят исключить базовые проблемы и сократить время поиска неполадок.
Версия операционной системы (ОС)
Если ОС мастер-сервера или сервера-локации не поддерживается платформой, установка или подключение завершится с ошибкой. Чтобы определить версию ОС, выполните команду:
cat /etc/*releaseСписок поддерживаемых ОС см. в документации DCImanager 6:
- для мастер-сервера — в статье Требования к серверу;
- для сервера-локации — в статье Локации. Общая информация.
Дата и время на сервере
Во время периодической синхронизации с сервером лицензий происходит проверка даты и времени. Если на сервере с платформой установлены некорректная дата или время, платформа будет заблокирована или её работа будет некорректной. Чтобы определить текущую дату и время на сервере, выполните команду:
date -RЗанятое пространство диска и оперативная память
Для корректной работы платформы свободное пространство диска и оперативная память должны соответствовать требованиям, указанным в статье Требования к серверу документации DCImanager 6. Также, если свободного пространства или оперативной памяти недостаточно, резервные копии не будут создаваться. Чтобы проверить объём занятого пространства диска и данные о файловой системе, выполните команду:
df -hTЧтобы проверить информацию об оперативной памяти, выполните команду:
free -hInodes
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. Для этого:
Подробнее о модуле проксирования BMC см. в статье Модуль "Проксирование BMC через сервер локации" документации DCImanager 6.
Подключение сервера локации
В этом разделе рассмотрена диагностика проблем с подключением локации.
Программа-демон sshd
sshd — программа-демон для SSH, принимающая запросы на соединения. Перед подключением сервера локации необходимо проверить, что на нём работает sshd. Для этого выполните команду:
systemctl status sshdПроверьте в конфигурационном файле /etc/ssh/sshd_config наличие этих параметров:
PermitRootLogin yes
PasswordAuthentication yesДобавьте их, если эти параметры отсутствуют. Они необходимы для подключения сервера локации по протоколу SSH.
Кроме этого, проверьте:
Файрвол
Если в файрволе нет правил для службы docker, возможны проблемы с работой платформы и сети. Необходимые правила создаются автоматически при запуске службы docker, мы не рекомендуем модифицировать или удалять их вручную.
Статус службы и конфигурация
Чтобы проверить статус службы файрвола, выполните команду в зависимости от ОС:
systemctl status nftablessystemctl status firewalldДля вывода конфигурации службы выполните команду в зависимости от ОС:
nft list rulesetfirewall-cmd --list-portsПерезапуск службы
Перезапуск службы необходим в случае её некорректной работы, а также для восстановления правил по умолчанию.
Чтобы перезапустить службу, выполните команду:
systemctl restart firewalld.servicesystemctl restart nftables.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';