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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция Datadog для мониторинга мобильного приложения (APM)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    874
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

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

APM для мобильных приложений — это не то же самое, что APM на бэкенде. На сервере трейс начинается с HTTP-запроса и заканчивается ответом. На мобильном клиенте цепочка сложнее: холодный старт → инициализация SDK → навигация → сетевой запрос → рендер экрана. Datadog Mobile SDK умеет связывать все эти этапы в единый распределённый трейс, но только при правильной инструментации.

Почему Datadog, а не просто Firebase Crashlytics

Firebase хорошо ловит крэши. Datadog решает другую задачу — видеть производительность живых сессий: сколько времени занимает Time to Interactive на конкретном экране, какие HTTP-запросы тормозят рендер, на каком шаге воронки пользователь ждёт дольше 3 секунд.

Связка DD-Trace на iOS/Android с dd-trace на бэкенде позволяет пробросить trace-id из мобильного клиента в серверный запрос — и в Datadog APM вы видите полный путь от нажатия кнопки до ответа базы данных.

Подключение SDK

iOS (Swift Package Manager):

// Package.swift dependency
.package(url: "https://github.com/DataDog/dd-sdk-ios", from: "2.0.0")
import DatadogCore
import DatadogRUM
import DatadogTrace

Datadog.initialize(
    with: Datadog.Configuration(
        clientToken: "pub-xxxxx",
        env: "production",
        site: .eu1
    ),
    trackingConsent: .granted
)

RUM.enable(with: RUM.Configuration(applicationID: "your-rum-app-id"))
Trace.enable()

Параметр trackingConsent критичен для GDPR: если пользователь ещё не дал согласие — используйте .pending, SDK будет буферизовать данные локально. Как только получите согласие — вызовите Datadog.set(trackingConsent: .granted) и всё отправится.

Android (Kotlin):

// build.gradle.kts
implementation("com.datadoghq:dd-sdk-android-rum:2.+")
implementation("com.datadoghq:dd-sdk-android-trace:2.+")
implementation("com.datadoghq:dd-sdk-android-okhttp:2.+")
val config = Configuration.Builder(
    clientToken = "pub-xxxxx",
    env = "production"
).build()

Datadog.initialize(this, config, TrackingConsent.GRANTED)

val rumConfig = RumConfiguration.Builder("your-rum-app-id")
    .trackUserInteractions()
    .trackLongTasks(durationThreshold = 100L)
    .build()
RumMonitor.enable(rumConfig)

Инструментация View и Action

По умолчанию Datadog автоматически трекает UIViewController на iOS и Activity/Fragment на Android. Но автотрекинг показывает имена классов, а не читаемые названия экранов. Добавляем кастомные имена:

// iOS — кастомное имя View
RUM.monitor?.startView(viewController: self, name: "ProductDetailScreen")
// Android — manual View tracking в Fragment
GlobalRumMonitor.get().startView(
    key = this,
    name = "ProductDetailScreen",
    attributes = mapOf("product_id" to productId)
)

Для действий пользователя: Datadog автоматически трекает тапы через trackUserInteractions(). Кастомные бизнес-события лучше логировать явно:

GlobalRumMonitor.get().addAction(
    type = RumActionType.CUSTOM,
    name = "AddToCart",
    attributes = mapOf("sku" to sku, "quantity" to qty)
)

Распределённая трассировка mobile → backend

Самая ценная часть — связать мобильный запрос с серверным трейсом. Для этого Datadog SDK инжектирует заголовки x-datadog-trace-id и x-datadog-parent-id в исходящие HTTP-запросы.

iOS с URLSession:

let session = URLSession(
    configuration: .default,
    delegate: DDURLSessionDelegate(),
    delegateQueue: nil
)

Android с OkHttp:

val okHttpClient = OkHttpClient.Builder()
    .addInterceptor(
        DatadogInterceptor.Builder(listOf("api.myapp.com"))
            .setTraceSampler(RateBasedSampler(20f)) // 20% трейсов
            .build()
    )
    .build()

Обратите внимание на RateBasedSampler — для high-traffic приложений 100% трассировка быстро перегрузит квоту. На этапе отладки нового экрана ставьте 100%, в продакшене 10–20% обычно достаточно.

На бэкенде (допустим, Node.js с dd-trace):

const tracer = require('dd-trace').init({ service: 'mobile-api' });
// dd-trace автоматически извлечёт x-datadog-trace-id из заголовков

В UI Datadog APM появится граф от мобильного RUM View до конкретного SQL-запроса на сервере.

Кастомные метрики и алерты

Для бизнес-метрик используем addAttribute на уровне RUM View:

RUM.monitor?.addAttribute(forKey: "checkout.step", value: "payment")
RUM.monitor?.addAttribute(forKey: "cart.value", value: cartTotal)

В Datadog Monitors создаём алерт на p95(rum.view.loading_time) > 3000 для экрана оформления заказа — это ловит деградацию раньше, чем пользователи начнут жаловаться.

Что делаем

  • Подключаем SDK для iOS и Android (или Flutter через datadog_flutter_plugin)
  • Настраиваем автотрекинг Views, Actions, Errors и Long Tasks
  • Инструментируем сетевой слой для распределённых трейсов
  • Создаём дашборды: Time to Interactive, Error Rate, p95 Network Latency в разбивке по экранам
  • Настраиваем алерты на деградацию производительности

Сроки

Базовое подключение с RUM и APM: 2–3 дня. Добавление кастомных бизнес-атрибутов и дашбордов — ещё день. Стоимость рассчитывается индивидуально.