Перейти к содержанию

Примеры проблем и их решение

Назначение документа

В документе рассмотрены потенциальные проблемы, которые могут возникнуть при эксплуатации Супераппа.

Документ предназначен для использования администраторами организации.

Дополнительная документация

Авторизация в системе — в документе рассмотрены проблемы, специфичные для сервисов авторизации (синхронизация пользователей, авторизация, доставка 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

В этом случае приложение отобразит пользователю диалоговое окно с предложением ввести адрес сервера, на котором установлен Мессенджер и ВКС. Чтобы пользователям не пришлось выполнять дополнительные действия, настройте редирект:

https://EXAMPLE.com/myteam-config.json -> https://u.vkteams.EXAMPLE.com/myteam-config.json

Для корректной работы браузерной версии (WebIM) необходимо к редиректу добавить CORS:

access-control-allow-credentials: true 
access-control-allow-origin: https://webim.vkteams.EXAMPLE.com

Если настройка редиректа невозможна (например, для гостевых учетных записей с внешним доменом), пользователь может:

  • указать в диалоговом окне адрес сервера (vkteams.EXAMPLE.com для примера выше);
  • сразу ввести логин с адресом сервера через знак #:

    username@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 с дополнительными модулями, необходимыми для функционирования проекта).

Управление:

sudo /usr/local/bin/nginx.sh

Расположение конфигурационных файлов:

  • /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

Проверка конфигурационных файлов на ошибки:

/usr/local/nginx-im/sbin/nginx -tc /usr/local/nginx-im/conf/nginx.conf

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 # Перезапуск инстанса

Пример использования утилиты:

  1. При входе в Мессенджер выдает ошибку о неправильно введенном email.

  2. Проверьте состояние работы инстансов выполнив команду tarantoolctl status.

  3. В списке статусов у инстанса nomail-1 статус stopped (из-за большой нагрузки на виртуальную машину).

  4. Выполните команды:

``` tarantoolctl stop nomail-1 tarantoolctl start nomail-1