APM (Application Performance Monitoring) — это комплексный подход к наблюдению за производительностью программного обеспечения, включающий сбор метрик, трассировку запросов и диагностику ошибок в реальном времени. По данным Gartner IT Glossary, 2024, APM объединяет три ключевых направления: мониторинг пользовательского опыта, обнаружение сбоев в архитектуре приложения и аналитику данных выполнения для глубокой диагностики инцидентов.
Главное
APM (Application Performance Monitoring) — это дисциплина управления производительностью приложений, охватывающая сбор, визуализацию и анализ данных о работе программного обеспечения. В отличие от точечного мониторинга отдельных метрик (CPU, память), APM предоставляет целостную картину: как приложение ведёт себя с точки зрения пользователя, как взаимодействуют его компоненты и где возникают узкие места.
Концепция APM сформировалась в 2010-х годах с переходом от монолитных приложений к микросервисной архитектуре. Когда количество сервисов превысило 10–15 единиц, традиционные методы мониторинга перестали работать — невозможно было определить, какой именно сервис вызвал замедление всего запроса. APM-решения решили эту проблему через distributed tracing и автоматическое построение карты сервисов.
По данным Grand View Research (2024), рынок APM оценивается в 8.2 миллиарда долларов США и растёт на 11.5% ежегодно. Основные драйверы — миграция в облако, рост числа микросервисов и повышение требований к качеству пользовательского опыта в мобильных приложениях и веб-сервисах.
Современный APM строится на трёх типах данных, которые вместе образуют полную картину состояния приложения. Метрики — это числовые агрегаты: время ответа, количество запросов, процент ошибок. Они отвечают на вопрос "что происходит" и позволяют настраивать алерты по пороговым значениям.
Трассировка (distributed tracing) отвечает на вопрос "почему это происходит". Каждый входящий запрос прослеживается через все микросервисы, базы данных и внешние вызовы. APM-система объединяет метрики и трассировку: если метрика времени ответа выросла, разработчик переходит к дашборду трасс и видит точный запрос, вызвавший замедление, с разбивкой по каждому сервису.
Логи дают контекст — конкретное сообщение об ошибке, значение переменной, стек вызовов. Современные APM-платформы (Datadog, New Relic, Grafana) связывают логи с трассами через общий trace_id, позволяя переходить от графика метрики к логу конкретного запроса. По данным Datadog (2025), корреляция логов с трассами сокращает среднее время диагностики инцидента с 45 до 12 минут.
| Сигнал | Вопрос | Единица |
|---|---|---|
| Метрики | Что происходит? | Числовые агрегаты |
| Трассировка | Почему это происходит? | Spans и traces |
| Логи | Что именно пошло не так? | Текстовые записи |
Классическая APM-архитектура состоит из трёх уровней: агент, коллектор и бэкенд. Агент — это библиотека, внедряемая в приложение или запускаемая рядом с ним (sidecar). Агент перехватывает входящие и исходящие вызовы, собирает данные о времени выполнения и отправляет их в коллектор по защищённому каналу.
APM-агент для Java может подключаться через javaagent на уровне JVM, автоматически инструментируя все HTTP-запросы, вызовы баз данных, очереди сообщений и внешние API. Для мобильных платформ агент подключается как SDK и собирает метрики с устройства. New Relic Agent для Android, например, автоматически отслеживает все сетевые запросы через OkHttp, HTTP-клиенты и WebView.
import com.newrelic.agent.android.NewRelic;
public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
NewRelic.withApplicationToken("YOUR_TOKEN")
.start(this);
}
}
Код инициализирует New Relic Agent в Android-приложении. После запуска агент автоматически собирает метрики сетевых запросов, ошибки, ANR и данные о производительности UI без дополнительной инструментации каждого экрана. Агент работает в фоновом потоке и не влияет на производительность основного интерфейса приложения.
Коллектор принимает данные от тысяч агентов, агрегирует метрики, выполняет семплирование трасс и сохраняет данные в долговременное хранилище с возможностью горячего и холодного хранения. Бэкенд APM предоставляет дашборды, алерты, сервисные карты и API для интеграции с внешними системами (Slack, PagerDuty, Jira, ServiceNow). Datadog обрабатывает более 10 миллионов точек данных в секунду через свои коллекторы, расположенные в 20+ регионах мира для минимальной задержки передачи.
Apdex (Application Performance Index) — открытый стандарт для измерения удовлетворённости пользователей временем отклика приложения. Значение Apdex вычисляется по формуле: (количество довольных пользователей + количество терпимых пользователей / 2) / общее количество пользователей. Результат — число от 0 до 1, где 1 означает, что все пользователи довольны.
Пороги Apdex задаются индивидуально для каждого приложения. Для мобильных приложений типичный порог удовлетворённости — время ответа до 1.5 секунд, терпимый — до 4.5 секунд. Всё, что превышает 4.5 секунды, считается неприемлемым. Apdex score 0.94 и выше считается отличным показателем для production-среды.
Apdex используется не только как метрика качества, но и как порог для алертов. Если Apdex падает ниже 0.85 в течение 10 минут, APM-система отправляет уведомление дежурной команде. Это более сбалансированный подход, чем привязка к абсолютным значениям времени ответа, которые могут колебаться в зависимости от времени суток и нагрузки.
Мобильный APM имеет свою специфику: приложение работает на устройстве пользователя, которое может находиться в разных сетевых условиях, иметь разный объём свободной памяти и версию ОС. Mobile APM должен учитывать все эти факторы и предоставлять разбивку метрик по моделям устройств, версиям ОС, регионам и операторам связи.
Мобильные APM-агенты собирают метрики на устройстве и отправляют их на сервер пачками (batch) с интервалом 1–5 минут. Это минимизирует влияние на трафик пользователя. В случае потери соединения данные сохраняются в локальном кэше и отправляются при следующем подключении. Firebase Performance и Dynatrace Mobile поддерживают автоматическую ретрансляцию при потере сети.
К стандартным APM-метрикам в мобильной разработке добавляются специфичные: время холодного старта, FPS при скролле, объём потребляемой памяти, частота ANR (Android) и количество watchdog-терминаций (iOS). New Relic Mobile дополнительно отслеживает map views, процент использования кэша и время рендеринга конкретных ViewController.
import NewRelic
class ProfileViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NewRelic.startInteraction(withName: "ProfileView")
}
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
NewRelic.stopCurrentInteraction()
}
}
Код на Swift создаёт interaction trace для экрана профиля пользователя. New Relic автоматически измерит время загрузки данных, отрисовки UI и всех сетевых запросов, выполненных во время отображения этого экрана.
Рынок APM представлен десятками решений, различающихся по глубине мониторинга, стоимости и поддерживаемым платформам. Datadog APM лидирует по интеграции метрик, трасс и логов в едином интерфейсе. New Relic предлагает наиболее детализированную трассировку для мобильных платформ. Dynatrace использует AI-движок Davis для автоматического обнаружения корневых причин проблем.
| Платформа | Мобильный агент | Distributed tracing | Бесплатный тариф |
|---|---|---|---|
| Datadog | iOS, Android | Да | Нет |
| New Relic | iOS, Android | Да | 100 GB/мес |
| Dynatrace | iOS, Android | Да | 15 дней |
| Grafana | Через OpenTelemetry | Да | Да (OSS) |
Выбор APM-платформы зависит от размера команды, стека технологий и бюджета. Для стартапов оптимален Firebase Performance в комбинации с Grafana для бэкенда. Для enterprise-проектов с высокими требованиями к SLA — Datadog или Dynatrace с полным набором observability-инструментов и поддержкой AI-анализа первопричин инцидентов.
Часто задаваемые вопросы
Обычный мониторинг отслеживает инфраструктурные метрики: CPU, память, диск. APM смотрит на уровень приложения: время выполнения конкретных транзакций, SQL-запросов, HTTP-вызовов между микросервисами. APM может показать, что CPU в норме, но приложение тормозит из-за медленного запроса к базе данных.
Для одного сервиса достаточно стандартного мониторинга + логирования для базового покрытия. APM становится необходимым, когда сервисов 5 и больше, и запрос проходит через несколько из них за один пользовательский сценарий. APM даёт ответ, какой именно сервис тормозит весь поток запроса и где находится узкое место.
APM-агенты потребляют 1–3% CPU и 50–200 MB памяти на сервере. Стоимость лицензий варьируется от 15 до 80 долларов за хост в месяц. Трафик телеметрии составляет 1–10 GB в день на хост в зависимости от интенсивности трассировки. OpenTelemetry + Grafana — бесплатная альтернатива коммерческим APM.
Да, мобильные APM-агенты работают автономно. Они собирают метрики на устройстве, даже если приложение не имеет серверной части: время старта, FPS, краши, сетевые запросы к сторонним API. Данные отправляются в APM-платформу, когда устройство подключается к интернету.
Базовая конфигурация APM (пороги, дашборды, алерты) настраивается один раз и корректируется при изменении архитектуры или benchmark-тестов производительности. Agent configuration обновляется автоматически через панель управления APM-платформы без необходимости перевыпускать приложение или изменять код.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также