Эта статья относится к устаревшей версии Dion on-premise 2024.05
Документация по актуальной версии Dion on-premise 2024.10 доступна по ссылке.
Если вы столкнулись с неисправностью работы системы Dion - используйте данную инструкция для их нахождения и отладки.
Клиент Dion — это веб-клиент, который подключается к веб-серверу через браузер или приложение Dion. Важно понимать, что взаимодействие клиента с сервером происходит через веб-технологии (HTTPS запросы, WebSocket). Для диагностики проблем с клиентом Dion можно использовать встроенные инструменты разработчика (Developer Tools) в браузере, или в настольном приложении.
Также в настольном приложении можно собрать лог выбрав Меню - Поддержка - Логи - Открыть:
Для вызова инструментов разработчика в браузере часто используется горячая клавиша F12 или Меню - Инструменты разработчика.
Для вызова инструментов разработчика в настольном приложении используется сочетание клавиш Ctrl+Shift+D
При диагностике неисправностей стоит обратить внимание на вкладки Network и Console.
Вкладка Network используется для отслеживания и анализа всех сетевых запросов, которые выполняет веб-страница. Это основное место для диагностики проблем с загрузкой ресурсов и взаимодействием с сервером.
В данном примере можно увидеть, что клиент отправил запрос веб сервису api-clients-dion.YourDomain.com, но не получил от него ответа.
Вкладка Console используется для отображения сообщений от веб-страницы, таких как ошибки, предупреждения, информационные сообщения и вывод JavaScript.
В данном примере можно увидеть, что при обращении к веб сервису https://api-clients-dion.YourDomain.com возникла сетевая ошибка (CONNECTION_REFUSED).
Для сохранения логов из инструментов разработчика воспользуйтесь опцией Export HAR:
Для проверки DNS на стороне клиента можно использовать утилиту nslookup:
nslookup dion.yourdomain.com
Для проверки доступности TCP порта можно использовать утилиту telnet:
telnet dion.yourdomain.com 443
Для проверки через PowerShell можно также использовать команду test-netconnection:
Test-NetConnection -ComputerName 192.168.14.180 -Port 443
Сервер Dion состоит из контейнеров Docker.
Для просмотра списка и состояния контейнеров на сервере используйте команду:
docker ps -a
Для поиска контейнеров в статусе Restarting можно использовать команду:
docker ps -a | grep Rest
Для просмотра логов на серверах Dion можно использовать команду docker logs имя_контейнера:
docker logs st_api_clients
Для просмотра последних 100 строк лога используйте команду:
docker logs st_api_clients -n 100
Для просмотра логов в реальном времени используйте команду:
docker logs st_api_clients -n 100 -f
Для сбора логов всех контейнеров сервера воспользуйтесь командой:
get_dion_logs
После ее выполнения будет создан архив dion_logs_дата.tar.gz
Для просмотра лог файлов можно использовать обычный текстовый редактор. При большом объеме необходимо искать слова error, failed, fatal. Поиск ошибок следует выполнять от конца файла к началу.
Дата в логе представлена в формате ISO 8601.
Пример: 2024-10-17T23:45:58Z
Для упрощения поиска ошибок в лог файлах можно использовать дополнительные инструменты раскраски, такие как Log File Highlighter для Visual Studio Code.
В настройках (settings.json) необходимо:
Включить раскраску для файлов любого объема.
"editor.largeFileOptimizations": false
Применить цвета для соответствующих слов:
"logFileHighlighter.customPatterns": [
{
"pattern": "failed",
"patternFlags": "i",
"foreground": "#ff0000"
},
{
"pattern": "error",
"patternFlags": "i",
"foreground": "#ff0000"
},
{
"pattern": "fatal",
"patternFlags": "i",
"foreground": "#ff0000"
}
Для диагностики проблем с Media можно использовать такие инструменты, как Wireshark, TcpDump, iPerf.
Для проверки сетевого взаимодействия между клиентом и сервером по протоколу UDP выполните следующие действия:
На сервере запустите команду:
sudo tcpdump -i eth0 host 192.168.14.7 and port 3478
sudo
: выполняет команду с правами суперпользователя (root), так как захват сетевого трафика требует административных прав.
tcpdump
: инструмент для захвата сетевых пакетов.
-i eth0
: указывает сетевой интерфейс, на котором будет захватываться трафик.
host 192.168.14.7
: ip адрес клиента.
and
: логический оператор, который связывает несколько условий фильтрации.
port 3478
: номер порта.
На клиенте Windows откройте Powershell ISE и запустите скрипт:
$udpIp = "192.168.14.180"
$udpPort = 3478
$udpClient = New-Object System.Net.Sockets.UdpClient
$udpClient.Send([byte[]]@(0), 1, $udpIp, $udpPort)
$udpClient.Close()
$updIP
: ip адрес сервера
$updPort
: порт сервера
На клиенте Linux можно использовать утилиту nc (NetCat):
echo -n " " | nc -w1 -u 192.168.14.180 3478
В случае успешного прохождения UDP пакетов на сервере будет вывод: