Интеграция Dynatrace для мониторинга мобильного приложения (APM)

Приложение «тормозит» и падает, а причина остаётся незаметной до отзывов в магазинах. Мы настраиваем Dynatrace APM под ключ: находим узкие места в реальных сценариях пользователя и сокращаем время поиска причины отказов в разы. Обсудим вашу задачу и вернёмся с оценкой и планом.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Интеграция Dynatrace для мониторинга мобильного приложения (APM)

Аналитика мобильных приложений (Firebase, Amplitude, Mixpanel)Средний~2-3 дня
Часто задаваемые вопросы

Dynatrace APM: почему мобильное приложение «тормозит» незаметно

Типовая картина: пользователи жалуются на подвисания и отвалы, а серверная часть показывает ровный график — время ответа в норме, ошибок нет, ресурсы не упираются в потолок. Разрыв объясняется просто: серверные метрики видят только запросы, которые до сервера дошли. Всё, что происходит до этого — старт приложения, отрисовка экранов, работа с локальным хранилищем, сеть оператора, — остаётся вне обзора. Именно там и прячется узкое место.

Dynatrace APM закрывает этот слепой участок: агент ставится в само приложение и снимает данные с устройства пользователя, а не с сервера. Видно, на каком экране пользователь замирает, сколько занимает холодный старт, какие вызовы к серверу не доходят и почему. Отказы на устройстве перестают быть анонимными — вместо «у кого-то не работает» появляется конкретная версия приложения, модель устройства, версия системы и оператор связи.

Дальше картина складывается в причинно-следственную цепочку. Если тормозит только один оператор — проблема в сети, а не в коде. Если провал на конкретной модели — дело в совместимости или в нехватке памяти. Если медленный вызов повторяется у всех — узкое место в самом приложении. Мониторинг мобильного приложения в Dynatrace APM связывает жалобу, техническую причину и затронутую долю пользователей, поэтому правки идут в то место, которое действительно влияет на опыт, а не в то, которое громче всех жалуется.

Разбираем ниже, как это разворачивается на проекте: что именно снимается с устройства, как отделить сетевые сбои от ошибок кода и как настроить оповещения, чтобы о деградации мы узнавали раньше пользователей.

Что даёт сквозной мониторинг: эффект в измеримых величинах

Сквозная трассировка связывает действие пользователя на устройстве с конкретным запросом к серверной части и записями в базе. Раньше эти данные жили в разных системах: мобильный краш-лог отдельно, метрики сервера отдельно, и сопоставить их можно было только вручную по времени. Теперь одна сессия разворачивается в полную цепочку вызовов — от нажатия до ответа бэкенда, с временем на каждом участке.

Время отклика перестаёт быть усреднённой цифрой. Видно, что 90-й процентиль держится в норме, а хвост растёт за счёт конкретного запроса к сервису авторизации. Это меняет приоритеты: оптимизируют не то, что чаще тормозит, а то, что определяет худший опыт.

Доля неуспешных сессий считается по пользователям, а не по запросам. Сессия, где человек закрыл приложение после трёх ошибок подряд, попадает в статистику один раз — и это честнее, чем тысяча ретраев одного клиента.

Класс отказа определяется автоматически: сеть, ошибка сервера, падение на устройстве или таймаут интеграции. Инженер получает не «что-то сломалось», а конкретную категорию с привязкой к версии приложения, модели устройства и оператору связи.

Отдельная ценность — контроль релизов. Сравнение метрик до и после выката показывает, выросла ли доля неуспешных сессий на новой версии, и откат принимается по данным, а не по жалобам в поддержку.

Способы сбора данных: сравнение подходов к инструментированию

Способ подключения мониторинга определяет, какие данные вы вообще увидите. Полное инструментирование через агент на устройстве даёт распределённые трассировки по каждому вызову, включая внутренние методы, но требует пересборки приложения и учёта политик приватности. Сетевой перехват трафика (прокси или VPN-профиль) не трогает код, зато теряет контекст внутри процесса и не видит фоновые задачи и работу с локальным кешем.

Ниже — реальные варианты, между которыми выбирают на старте, и их ограничения. Комбинировать их можно: агент закрывает глубину, перехват — быстрый старт без релиза.

Вариант Когда подходит Ограничения
Агент на устройстве (полное инструментирование) Нужны распределённые трассировки, метрики падений и зависаний UI, связь с бэкендом Пересборка и релиз, рост размера сборки, настройка приватности данных
Ручные метрики через SDK Точечный контроль ключевых сценариев (оплата, вход, оформление) Покрывает только размеченные пути, остальное — слепая зона
Перехват трафика (прокси) Быстрый аудит сети без изменения приложения, разбор проблем интеграций Нет контекста внутри процесса, не видит фоновые задачи и локальный кеш
Синтетические проверки Контроль доступности и времени отклика критичных сценариев извне Не отражают реальное поведение и устройства пользователей
Логи и краш-репорты Базовая диагностика падений и аномалий Нет сквозной связи с запросами, ручная корреляция инцидентов

На практике чаще всего агент на устройстве дополняют перехватом на этапе внедрения: сначала снимают картину сети без релиза, затем добавляют глубокие трассировки. Так команда получает данные сразу, а не ждёт следующей сборки.

Как проходит внедрение: этапы инженерной работы

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

  1. Аудит текущей телеметрии. Разбираем существующие логи, краш-репорты и метрики, отмечаем разрывы: не отслеживаются сетевые вызовы, нет привязки к версии сборки, теряется идентификатор сессии при перезапуске.
  2. Проектирование схемы сбора. Определяем, какие события, метрики и трассировки снимаем с клиента, что агрегируем на стороне сервисов, как связываем мобильную сессию с бэкендом — единый идентификатор проходит через все слои.
  3. Разметка приложения и сервисов. Встраиваем сбор в ключевые сценарии: запуск, авторизация, оплата, работа с данными. Отдельно помечаем пользовательские действия, чтобы падение конверсии читалось по шагам, а не «где-то в приложении».
  4. Настройка дашбордов и оповещений. Собираем экраны под реальные вопросы: доля успешных сценариев, время ответа внешних сервисов, частота сбоев по версиям. Пороги оповещений выставляем так, чтобы дежурный получал сигнал до того, как о проблеме напишут пользователи.
  5. Проверка на стенде. Прогоняем сценарии с искусственными сбоями и задержками, убеждаемся, что сигнал доходит до системы, корректно группируется и попадает в нужное оповещение. Отдельно проверяем поведение при плохой сети и офлайне.
  6. Передача в эксплуатацию. Отдаём настроенную систему с регламентом дежурства, описанием типовых инцидентов и порядком действий, обучаем команду читать дашборды и разбирать сбои по трассировке.

После передачи система продолжает жить: правила сбора и пороги оповещений пересматриваются по мере роста приложения, чтобы мониторинг не превращался в шум.

Артефакты на выходе: конфигурации, схемы и регламенты

Интеграция Dynatrace заканчивается не включённым агентом, а набором артефактов, по которым систему можно сопровождать без нас. Каждый пункт передаётся в репозиторий заказчика и версионируется вместе с кодом приложения — при следующем релизе видно, что и зачем менялось в конфигурации.

  • Конфигурация мониторинга — файлы с настройками сбора метрик, правилами разметки запросов и порогами срабатывания. Отдельно фиксируем, какие события считаются аварийными, а какие — фоновым шумом.
  • Схема потоков данных — откуда собираются метрики, через какие узлы проходят, где хранятся и как долго. По ней новый инженер за час понимает, где искать причину просадки.
  • Политики доступа — матрица ролей: кто видит дашборды, кто меняет пороги, кто получает уведомления. Доступы выдаются по принципу минимально необходимых.
  • Регламент дежурства — порядок действий при срабатывании: кому уходит сигнал, за какое время нужно подтвердить, когда эскалировать. С прописанными зонами ответственности между командой приложения и инфраструктурой.
  • Инструкции по типовым сбоям — пошаговые сценарии для частых инцидентов: рост доли ошибочных запросов, просадка отклика на конкретном экране, отвал интеграции с бэкендом.
  • Карта дашбордов — какие панели смотрят ежедневно, какие открывают только при разборе инцидента. Без этого дежурный тонет в графиках.
  • Процедура отката — как снять или ослабить правила сбора, если они мешают релизу, и что при этом теряется в наблюдаемости.

Всё это оформляется как рабочая документация, а не как отчёт «для галочки»: её правят при каждом изменении приложения. Опишите вашу задачу — вернёмся с оценкой и планом, какие артефакты нужны именно вам.

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

Проект — мобильный банк с миллионной аудиторией на iOS и Android. Жалобы на «зависания при оплате» приходили в поддержку, но воспроизвести их не удавалось: логи размазаны по клиенту и бэкенду, а корреляция между сессией пользователя и запросом к сервису отсутствовала. Инженеры тратили на локализацию причины в среднем 6-8 часов, и в половине случаев инцидент закрывали как «не воспроизводится».

Что изменили

Внедрили Dynatrace как единую систему мониторинга производительности приложения: связали клиентские сессии с серверными транзакциями сквозным идентификатором, включили автоматическое отслеживание сетевых вызовов, крашей и «замерших» экранов. Настроили оповещения по ключевым бизнес-сценариям — вход, платёж, перевод — с привязкой к конкретной версии приложения и модели устройства.

Что стало

Время локализации причины отказа сократилось с 6-8 часов до 20-40 минут: инженер открывает проблемную сессию, видит всю цепочку — от нажатия кнопки до ответа сервиса — и сразу понимает, где узкое место. Доля инцидентов, закрытых как «не воспроизводится», упала с 50% до 8%. Отдельно выиграли на релизах: перед выкаткой сравниваем метрики новой версии с предыдущей и ловим деградацию до того, как её заметят пользователи.

Через два месяца после запуска команда перестала собирать совещания по каждому сбою — данные уже собраны и привязаны к сценарию. Разбор инцидента превратился из расследования в чтение готовой картины.

Чем отличается мониторинг устройства от серверного?

Серверные метрики описывают состояние бэкенда: загрузку процессора, время ответа API, глубину очередей, долю ошибок на стороне сервиса. Пока эти показатели в норме, считается, что приложение работает. Но между сервером и экраном телефона лежит длинный путь — сеть оператора, радиомодуль, операционная система устройства, фоновые процессы, версия сборки. Проблема возникает на любом из этих участков, и сервер о ней просто не знает.

Разрыв наблюдаемости — это ситуация, когда серверная часть отвечает за 200 миллисекунд, а пользователь видит зависший экран. Причины бывают разные: слабый сигнал в метро, агрессивная экономия батареи, которая останавливает фоновую синхронизацию, конфликт с другой программой, утечка памяти на конкретной модели устройства. Ни одна из них не отражается в серверных метриках, потому что запрос до сервера либо не дошёл, либо дошёл и был обслужен штатно.

Мониторинг устройства смотрит на происходящее с другой стороны — со стороны пользовательского опыта. Он фиксирует время холодного старта, плавность прокрутки, долю зависаний интерфейса, падения приложения, длительность сетевых операций на конкретном канале связи, а также разбивку по моделям устройств и версиям операционной системы. Именно эти данные показывают, что сбой воспроизводится у части аудитории с определённой конфигурацией, а не у всех подряд.

Ключевое отличие — в точке замера и в том, чей опыт она описывает. Серверные метрики отвечают на вопрос «справляется ли инфраструктура», мониторинг устройства — «доволен ли человек, который держит телефон в руках». Обе картины нужны одновременно: первая показывает ресурсы и узкие места бэкенда, вторая — реальные условия эксплуатации, которые невозможно воспроизвести в тестовой среде.

Dynatrace APM связывает эти два слоя в одну цепочку: от касания экрана до ответа сервера и обратно. Когда пользователь жалуется на медленную загрузку, инженер видит, на каком участке потеряно время — в сети, на устройстве или в сервисе, — и не тратит дни на поиск причины вслепую. Без такого связывания команда чинит сервер, который и так работал, пока пользовательский опыт продолжает деградировать.

Частые технические сомнения перед стартом

Перед стартом интеграции почти всегда всплывают одни и те же вопросы: не просядет ли приложение, не придётся ли переписывать модули, не превратится ли сбор телеметрии в отдельную статью расходов на хранение. Ниже — ответы по существу, без маркетинга.

Замедлит ли мониторинг само приложение?

Накладные расходы агента — доли процента от времени отрисовки кадра и сетевых операций. Замеры и отправка телеметрии идут в фоновом потоке, пакетами, а не на каждый вызов. На практике пользователь разницы не замечает: время холодного старта и отзывчивость интерфейса остаются в пределах погрешности. Если приложение уже на пределе по памяти, агент настраивается на пониженный режим детализации — сначала снимаем базовые метрики, глубокий разбор включаем точечно.

Совместимо ли это с нашим стеком и версиями ОС?

Агент поддерживает нативные и кроссплатформенные приложения, актуальные ветки мобильных ОС и их предыдущие мажорные версии. Если часть кода на устаревшем фреймворке, это не блокер: мониторинг подключается к слою приложения, а не к каждому модулю. На этапе обследования мы сверяем вашу матрицу устройств и версий с поддерживаемым списком и говорим прямо, где будут пробелы в данных.

Сколько данных уйдёт и как это контролировать?

Объём зависит от того, что вы решили собирать. По умолчанию — агрегированные метрики и трассировки сэмплируются, а не пишутся целиком. Правила хранения задаются заранее: срок жизни сырых данных, доля сэмплирования, отсечение шумных событий. Так объём остаётся предсказуемым, а отладка конкретного сбоя — возможной, потому что нужные трассировки сохраняются.

Безопасна ли телеметрия — не утекут ли данные пользователей?

В телеметрию не попадают персональные данные: маскирование полей и запрет на передачу чувствительных значений настраиваются на старте. Передача идёт по защищённому каналу, доступ к панелям разграничивается по ролям. Политику хранения и удаления согласуем с вашими требованиями — это часть работ, а не опция после запуска.

Если по какому-то пункту остаются сомнения — опишите вашу конфигурацию, вернёмся с оценкой и планом интеграции.

Обсудим вашу задачу и вернёмся с планом

Чтобы вернуться с оценкой сроков и планом внедрения, а не с общими словами, нам нужен минимум вводных: платформа и версии операционных систем, которые поддерживает приложение, текущий способ сборки и релизный цикл, список внешних сервисов и внутренних модулей, доступ к репозиториям и тестовому контуру. Если уже есть APM-агент или сбор метрик — покажите, что именно собирается сейчас и где данные теряются.

Со стороны заказчика достаточно выделить одного человека, который подтверждает приоритеты и отвечает на вопросы по архитектуре. Остальное — наша работа.

В ответ мы готовим:

  • план внедрения по этапам: подготовка окружения, подключение агента, настройка сбора данных, разметка ключевых сценариев, вывод в дашборды;
  • состав работ с границами ответственности — что делаем мы, что остаётся на стороне заказчика;
  • оценку сроков по каждому этапу и точки, где нужна ваша приёмка;
  • схему разметки критичных пользовательских путей: вход, оплата, оформление заказа, синхронизация;
  • перечень метрик и алертов, которые команда получит на выходе, с порогами срабатывания;
  • требования к доступам, окружениям и тестовым учётным записям;
  • план отката, если агент влияет на стабильность сборки или поведение приложения;
  • регламент поддержки: кто и как реагирует на инциденты после запуска.

Опишите задачу — какие сбои беспокоят сейчас, на каких платформах и в каких сценариях, какой результат считаете успешным. Мы вернёмся с оценкой сроков, составом работ и планом внедрения, по которому можно принимать решение.

Подход к инструментированию Что даёт на практике Срок внедрения
Автоматическая установка агента в сборку Быстрый старт, минимум ручных правок в коде, охват всех экранов и сетевых вызовов 1–2 недели на пилот, 3–4 недели на полный охват
Ручная разметка ключевых сценариев Точный контроль над тем, что считается критичным путём, меньше лишних данных 2–3 недели на согласование сценариев и разметку
Гибридный вариант: агент + ручные метки Полная картина по отказам и скорость поиска причины на критичных путях 3–5 недель с учётом настройки оповещений
Мониторинг только серверной части Показывает состояние бэкенда, но не объясняет зависания и сбои на устройстве 1 неделя, эффект ограничен
Сбор отзывов и ручных жалоб Дёшево, но реакция постфактум и без технической причины Постоянный процесс, без прогноза
Что сравниваем Своими силами С привлечённым инженером
Настройка сбора данных Дольше из-за проб и ошибок Быстрее за счёт готовых схем
Разбор инцидентов Зависит от загрузки команды Регламент и понятные роли
Передача знаний Остаётся в головах Схемы, конфигурации, инструкции
Стоимость владения Скрытые затраты времени Предсказуемый объём работ
Этап Результат этапа Кто участвует
Обследование приложения Карта критичных сценариев и точек отказа Инженер, продуктовая команда
Установка и настройка сбора Данные о зависаниях, сбоях и медленных операциях Инженер, разработчики
Настройка оповещений Сигнал приходит до жалоб пользователей Инженер, поддержка
Обучение команды Команда сама читает отчёты и находит причину Инженер, аналитики
Передача регламентов Понятный порядок действий при инциденте Инженер, руководитель
Класс проблемы Видно без сквозного мониторинга Видно со сквозным мониторингом
Отказ серверного запроса Часто Всегда, с привязкой к экрану
Зависание интерфейса на устройстве Почти никогда Регулярно, с указанием операции
Медленная загрузка экрана По жалобам По замерам, до жалоб
Сбой на части моделей устройств Случайно Системно, по группам
Проблема только у части пользователей Не заметна Видна по срезам аудитории

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714