Что это
Когда приложение падает или не может подключиться, оно отправляет на сервер разработчика журнал, версию и состояние сети. Разработчик видит проблему раньше, чем пользователь напишет.
Как используем
Свой приёмник на Python в Docker на сервере заказчика: секреты маскируются на устройстве, при обрыве связи отчёт ждёт в очереди. Не зависит от иностранных сервисов.
Где это нужно бизнесу
- От пользователей приходит «у меня не работает», а разработчику нужны журнал, версия, состояние сети и причина падения.
- Отчёты не должны уходить в сторонние сервисы: данные тестеров и клиентов остаются у владельца.
- В журнале могут оказаться ключи, ссылки подписок и пароли, и отчёт не должен стать утечкой.
- О сбое хочется узнать раньше, чем пользователь напишет в поддержку.
Как мы это используем
У наших приложений два приёмника отчётов на своих серверах: для плеера OshaPlay и для VPN-клиента. Приёмник — небольшая программа на Python в Docker за nginx; приём только по токену, наружу отчёты не отдаются, разработчик читает их скриптом.
- VPN-клиент присылает четыре вида отчётов: падение, журнал по кнопке «Отправить диагностику», результаты проверки входов и сообщение пользователя. В режиме тестера отчёты о падениях и аномалиях — петле переподключений, сбое ядра, скачке задержки — уходят сами.
- OshaPlay отправляет журнал до 5 МБ, модель телефона, аудиовыходы, наушники и отчёт проверки ЦАПа раз в 12 часов, после падения при следующем запуске и сразу при ошибке воспроизведения. Музыкальные файлы не отправляются никогда.
- Польза на практике. По отчётам с телефона нашли причину заиканий звука при выключенном экране на Huawei.
Приёмник отчётов делаем в разделе Приложения для Android и Windows.
Типичные проблемы
- Секреты в журнале. Ссылки подписок, ключи
vless://, UUID, пароли, токены и заголовки Bearer маскируются на устройстве при записи журнала, а не на сервере. Это проверено на реальных отчётах. - Нет связи. VPN-клиент кладёт отчёты в очередь на диске, до 20 файлов и 50 МБ, и досылает, когда приёмник снова доступен. Отправка никогда не блокирует приложение.
- Шум. Автоматические отчёты одного вида уходят не чаще раза в 5 минут. Ответ 413 сбрасывает отчёт, ответ 403 останавливает отправку до перезапуска приложения.
- Место на сервере. Отчёты OshaPlay хранятся 90 дней и не больше 800 МБ в сумме.
- Согласие. Режим тестера включён по умолчанию, потому что все сборки пока тестовые, и одновременно служит согласием на отправку. Для публичного выпуска его нужно выключить.
Когда это не нужно
Если у приложения десяток пользователей и разработчик сидит с ними в одном офисе, журнал можно забрать руками. Свой приёмник окупается, когда устройств много, они далеко, а данные нельзя отдавать стороннему сервису.