Примеры проблем и их решение
Назначение документа
В документе рассмотрены потенциальные проблемы, которые могут возникнуть при эксплуатации Супераппа.
Документ предназначен для использования администраторами организации.
Дополнительная документация
Авторизация в системе — в документе рассмотрены проблемы, специфичные для сервисов авторизации (синхронизация пользователей, авторизация, доставка OTP).
Несоответствие логина пользователя и адреса сервера (API endpoints)
Когда пользователь вводит логин вида username@vkteams.EXAMPLE.com, приложение обращается по следующим адресам для получения конечных точек (эндпоинтов) API:
- https://u.vkteams.EXAMPLE.com/myteam-config.json
- https://vkteams.EXAMPLE.com/myteam-config.json
Файл myteam-config.json генерируется автоматически скриптом конфигурации сервера Мессенджер и ВКС и не требует ручного редактирования.
Если сервер Мессенджер и ВКС установлен, например, по адресу vkteams.EXAMPLE.com, а адрес пользователя — username@EXAMPLE.com, приложение не сможет найти конфигурационный файл по адресам:
- https://u.EXAMPLE.com/myteam-config.json
- https://EXAMPLE.com/myteam-config.json
В этом случае приложение отобразит пользователю диалоговое окно с предложением ввести адрес сервера, на котором установлен Мессенджер и ВКС. Чтобы пользователям не пришлось выполнять дополнительные действия, настройте редирект:
Для корректной работы браузерной версии (WebIM) необходимо к редиректу добавить CORS:
access-control-allow-credentials: true
access-control-allow-origin: https://webim.vkteams.EXAMPLE.com
Если настройка редиректа невозможна (например, для гостевых учетных записей с внешним доменом), пользователь может:
- указать в диалоговом окне адрес сервера (vkteams.EXAMPLE.com для примера выше);
-
сразу ввести логин с адресом сервера через знак #:
Тогда приложение будет сразу обращаться по адресам:
- https://u.vkteams.EXAMPLE.com/myteam-config.json
- https://vkteams.EXAMPLE.com/myteam-config.json
Массовые проблемы с клиентским приложением
Протокол HTTPS (443/TCP) — основа коммуникации «клиент — сервер», поэтому при любых массовых проблемах с приложением необходимо проверять доступность по HTTPS. Все запросы от клиента (за исключением звонков) принимает сервис Nginx-im (сборка Nginx с дополнительными модулями, необходимыми для функционирования проекта).
Управление:
Расположение конфигурационных файлов:
- /usr/local/nginx-im/confv/2nginx.conf — основной файл;
- /usr/local/nginx-im/confv2/conf.d/ — настройки отдельных виртуальных хостов.
Расположение журналов /oap/icq/domains/local_proxy.icq.com/logs/:
- *error.log — журналы ошибок отдельных виртуальных хостов;
- *access.log — журналы доступа отдельных виртуальных хостов.
В лог-файлах проверяйте наличие запросов и статусы HTTP-ответов. Основной точкой входа для запросов пользователя является u.<user_domain>, поэтому наиболее важными журналами являются:
- /oap/icq/domains/local_proxy.icq.com/logs/u-access.log
- /oap/icq/domains/local_proxy.icq.com/logs/u-error.log
Ротация лог-файлов происходит каждый час. Предыдущие журналы доступны в каталоге /oap/icq/domains/local_proxy.icq.com/logs/old_logs/ и сжаты с использованием gzip (по умолчанию), lz4 или zstd.
Примечание
Файлы с расширением .zst необходимо открывать при помощи команды zstdcat и искать в них при помощи zstdgrep. Например: zstdgrep user@vkteams.example.com/oap/icq/domains/local_proxy.icq.com/logs/old_logs/u-access.log-20200410-1900.rot.zst
Проверка конфигурационных файлов на ошибки:
SSL-сертификаты:
- /usr/local/etc/im_ssl/default_ssl.cert
- /usr/local/etc/im_ssl/default_ssl.key
Не доходят пуш-сообщения
При получении сообщения на устройство пользователя отправляется пуш-уведомление. В зависимости от платформы уведомление отправляется либо на серверы Apple, либо на серверы Google. Журнал пуш-сервиса: /var/log/mru-пуш-me/gosender.log. Ошибки логируются с пометкой ERROR (или пометкой более высокого уровня), стандартные сообщения — с пометкой INFO.
Пример 1
2020-04-14 16:56:08:INFO:5852:+ios:icq aimsid=XXX.XXXXXXXX.topsecret:user@vkteams.example.com; bundle_id=ru.mail.myteam-onpremise; hist_msg_id=0; token=XXXXXXXXXXXXXXXXXX
Отправлено пуш-сообщение для пользователя user, платформа iOS.
Пример 2
2020-03-22 10:45:27:FATAL:1098524:error create queueCluster nodes: [пушer.intim]; queues: [127.0.0.1:3321]
Недоступна БД Tarantool c очередью на отправку.
Оценить состояние инстансов БД
Для проверки состояния инстансов БД вы можете воспользоваться утилитой tarantoolctl.
Для просмотра всех доступных команд утилиты tarantoolctl на сервере, где установлено приложение, в командной строке выполните команду tarantoolctl --help.
С помощью данной утилиты выможете выполнить:
- запустить инстанс.
- остановить/перезапустить инстанс.
- управлять конфигурацией.
Основные команды управления инстансами:
tarantoolctl start name_instance # Запускает инстанс
tarantoolctl stop name_instance # Останавливает работу инстанса
tarantoolctl status name_instance # Показывает текущий статус инстанса
tarantoolctl check name_instance # Проверка файла конфигурации на ошибки
tarantoolctl restart name_instance # Перезапуск инстанса
Пример использования утилиты:
-
При входе в Мессенджер выдает ошибку о неправильно введенном email.
-
Проверьте состояние работы инстансов выполнив команду
tarantoolctl status. -
В списке статусов у инстанса nomail-1 статус
stopped(из-за большой нагрузки на виртуальную машину). -
Выполните команды:
``` tarantoolctl stop nomail-1 tarantoolctl start nomail-1