Інтеграція 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-агент або збір метрик — покажіть, що саме збирається зараз і де дані губляться.

З боку замовника достатньо виділити одну людину, яка підтверджує пріоритети та відповідає на питання щодо архітектури. Решта — наша робота.

У відповідь ми готуємо:

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

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

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

Останні роботи

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