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

Правила диагностики: сначала следует проверить состояние Docker-контейнеров и состояние серверной части (backend health), далее логи серверной части. Большинство ошибок конфигурации устройств содержит тело ответа RESTCONF в поле response_body.

Для быстрой диагностики системы выполнить команды:

docker ps -a --filter 'name=tcm-'
docker logs --tail=120 tcm-backend
curl http://127.0.0.1:8000/health
sudo ./termidesk-cm.sh status
sudo ./termidesk-cm.sh logs backend

Перечень возможных неисправностей и способы их устранения представлены в таблице (см. таблицу Перечень возможных неисправностей и способы их устранения).

Таблица 1. Перечень возможных неисправностей и способы их устранения
Проблема Возможная причина Рекомендуемые действия

curl/health: Connection reset by peer

Сбой при запуске серверной части

docker logs --tail=120 tcm-backend

Частые причины: PostgreSQL недоступен, указан неверный TCM_DATABASE_URL, ошибка схемы БД, не запущен tcm-postgres

PostgreSQL недоступен

Ошибка инициализации или аварийное завершение tcm-postgres

docker exec -it tcm-postgres pg_isready -U tcm -d tcm; docker logs tcm-postgres

Проверить значения полей POSTGRES_DB/USER/PASSWORD и Docker-том

Веб-интерфейс открывается, но API недоступен

Указан неверный адрес в поле VITE_API_URL или серверная часть не запущена

Проверить значение VITE_API_URL и доступность адреса http://<IP-адрес>:8000/health со стороны клиентского устройства. Выполнить перезапуск веб-интерфейса

Вывод ошибки 401 Unauthorized после обновления

В веб-браузере остался старый токен

Выйти из системы или очистить локальное хранилище localStorage: localStorage.removeItem("tcm_auth_token"); location.reload()

Не удается добавить устройство

Недоступен интерфейс RESTCONF/metrics или неверные учетные данные

Проверить HTTPS-доступ к устройству, логин и пароль, параметр verify_tls. Выполнить проверку через команду curl к https://<устройство>/metrics и /xtern/data/termidesk-system:system

Отсутствуют syslog-события

Устройство не отправляет syslog-события или порт 514 закрыт

Проверить сетевой экран (Firewall) 514 по протоколу TCP и UDP.

В разделе веб-интерфейса «Устройства» убедиться, что активирована кнопка «Syslog».

Посмотреть системный вывод командой docker logs backend.

Выполнить проверку сетевой связности по порту 514

Пропускная способность (throughput) равен 0 после первого опроса

Для расчета скоростb (rate) нужен предыдущий снимок счетчиков

Дождаться второго опроса или нажать обновление еще раз

Резервная копия устройства: SSH/SFTP/sudo ошибка

Недоступен SSH по порту 22, SFTP по порту 222, bash или sudo-права

Проверить сетевую доступность портов 22/222, учетную запись устройства, sudo без интерактива и возможность выполнения команд bash/vamgr/snag

RESTCONF 409 instance-required по VRF

На целевом устройстве нет VRF, указанного в переносимой конфигурации

В шаблоне выбрать VRF из списка целевого устройства. Список берется из termidesk-vrf:vrfname[].name

RESTCONF 409 instance-required по ip-set

rs-pool ссылается на ip-set, который не создан на целевом устройстве

Убедиться, что шаблон собрал ip-set и он применяется для rs-pool. Проверить детали выполнения шаблона

RESTCONF 409 instance-required по http-profile/tcp-profile

Конфигурация ссылается на Профиль, отсутствующий на целевом устройстве

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

RESTCONF 412 data-not-unique в rs-pool

В одном rs-pool получились два одинаковых Реальных Сервера (значение ip:port).

В форме применения шаблона изменить один эндпоинт или отключить лишний Реальный сервер чекбоксом «Исп.»

Lua-скрипт не загружается

Валидатор нашел ошибки уровня Error или недоступен SFTP

Открыть блок валидации, устранить ошибки, проверить SFTP по порту 222 и путь /var/lib/tdc/lbscripts/*

OpenBao не отвечает

Контейнер не запущен, неверный URL-адрес или токен

Выполнить команды curl http://127.0.0.1:8200/v1/sys/health, docker logs tcm-openbao. Проверить URL-адрес для серверной части http://tcm-openbao:8200 и токен.

«Ingress Controller» не виден в меню веб-интерфейса

Раздел скрыт как экспериментальный

Перейти в раздел «Система» – «Экспериментальные разделы» и включить параметр «Показывать раздел «Ingress Controller» в главном меню»

В Ingress discovery не видны ресурсы

Неверный API URL-адрес кластера, токен, УЦ, ingressClass или пространство имен (namespace)

Проверить корректность настройки прав доступа сервисного аккаунта (ServiceAccount), параметров TLS-верификации (verify_tls), фильтрации по пространствам имен (namespace filter) и используемого класса ингресса (ingress class), а также результаты отображение статуса диагностики «Проверить» в карточке кластера

Ручная проверка RESTCONF

Для проверки RESTCONF выполнить команды:

curl -kvv -X GET   -H "Content-Type: application/yang-data+json"   --user tdadmin:tdadmin   https://<device_ip>/xtern/data/termidesk-system:system
curl -kvv -X GET   -H "Content-Type: application/yang-data+json"   --user tdadmin:tdadmin   https://<device_ip>/xtern/data/termidesk-vrf:vrf

Проверка PostgreSQL

Для проверки PostgreSQL выполнить команды:

docker exec -it tcm-postgres psql -U tcm -d tcm -c '\dt'
docker exec -it tcm-postgres psql -U tcm -d tcm -c 'select id, management_ip, hostname, version from devices;'
docker exec -it tcm-postgres psql -U tcm -d tcm -c 'select count(*) from events;'

Проверка зависимостей серверной части

Для проверки зависимостей серверной части выполнить команды:

docker logs --tail=100 tcm-frontend
docker run --rm -it   -w /app   -v "$PWD/frontend:/app"   node:22-slim   sh -lc 'ls -la node_modules/.bin |grep vite && npm run dev -- --host 0.0.0.0 --port 5173'