hostprofi.ru
Подобрать хостинг
Термин·буква E

Elastic APM

краткое определение

Elastic APM — инструмент мониторинга производительности приложений (Application Performance Monitoring) из экосистемы Elastic Stack: собирает трейсы запросов, метрики и ошибки из приложений, визуализируя узкие места в реальном времени.

Elastic APM — компонент платформы ELK Stack (Elasticsearch, Logstash, Kibana) для мониторинга производительности приложений. Система отслеживает полный жизненный цикл HTTP-запроса через микросервисную архитектуру: от входящего запроса до ответа из базы данных, с разбивкой задержки по сервисам и span-ам.

Как работает

Архитектура Elastic APM состоит из трёх частей:

  • APM Agent — библиотека, встраиваемая в приложение. Поддерживает Java, Python, Ruby, Node.js, Go, .NET, PHP, JavaScript (RUM). Агент автоматически инструментирует популярные фреймворки (Django, Flask, Rails, Express, Spring) и перехватывает SQL-запросы, HTTP-вызовы, очереди.
  • APM Server — промежуточный компонент, принимающий данные от агентов по HTTP и отправляющий их в Elasticsearch. С версии 7.7+ встроен в Elasticsearch (Fleet).
  • Kibana APM UI — визуализация: карта сервисов, waterfall-диаграммы трейсов, тепловые карты задержек, ошибки, метрики инфраструктуры.

Ключевые концепции:

  • Транзакция — верхнеуровневый запрос (входящий HTTP, фоновая задача).
  • Span — отдельная операция внутри транзакции (SQL-запрос, HTTP к внешнему сервису, вызов Redis).
  • Trace — полный путь запроса через несколько сервисов с распределённым контекстом (W3C Trace Context / Elastic B3).

Elastic APM совместим с OpenTelemetry: агенты OTel могут отправлять данные в APM Server, что позволяет использовать единый бэкенд для гетерогенной инфраструктуры.

История

Elastic приобрела компанию Opbeat в 2017 году, на её технологиях построен Elastic APM. Первая стабильная версия Elastic APM выпущена в 2018 году (Elastic Stack 6.x). В 2020 году APM Server интегрирован в Elasticsearch Fleet. В 2021 году добавлена поддержка OpenTelemetry. В 2023 году Elastic переработала UI в рамках платформы Elastic Observability.

На что обращать внимание

Накладные расходы агента: в языках с JIT-компиляцией (Java, .NET) — 1–3% CPU, в интерпретируемых (Python, Ruby) — 3–7%. Для продакшена настраивайте семплирование (transaction_sample_rate = 0.1–0.5): полная трассировка всех запросов создаёт значительную нагрузку на Elasticsearch. Storage: один трейс занимает 1–5 КБ; при 1000 RPS и 100% семплировании это ~50–250 МБ/час только для трейсов. Конкурирующие решения: New Relic, Datadog, Jaeger (open source), Zipkin.

История Elastic APM

Elastic APM (Application Performance Monitoring) анонсирован Elastic в 2017 году как часть Elastic Stack. Версия 6.2 (2018) — первый GA-релиз с Java и Node.js агентами. К 2023 году поддерживаются агенты для Java, .NET, Go, Node.js, Python, Ruby, PHP, RUM (Real User Monitoring). Elastic APM конкурирует с Datadog APM, New Relic, Jaeger (для distributed tracing). OpenTelemetry — открытый стандарт для метрик, трейсов и логов; Elastic APM поддерживает OpenTelemetry с 7.13 (2021).

Компоненты Elastic APM

  • APM Server: принимает данные от агентов, записывает в Elasticsearch.
  • APM Agents: библиотеки в приложении, автоматически инструментируют запросы.
  • Kibana APM UI: визуализация трейсов, зависимостей, медленных транзакций.

Elastic APM vs Jaeger vs Zipkin

ПараметрElastic APMJaegerZipkin
ХранениеElasticsearchCassandra/ES/BadgerMySQL/ES/Cassandra
Метрики + Трейсыдатолько трейсытолько трейсы
Агенты8 языковOpenTelemetryOpenTelemetry

Практическое применение на хостинге

Elastic APM устанавливается на VPS: APM Server требует доступ к Elasticsearch. Агент добавляется в приложение как зависимость (для PHP: composer require elastic/apm-agent). Трейсы показывают полный путь запроса: веб-сервер → PHP-FPM → запрос к MySQL → ответ. Помогает найти N+1 проблемы в ORM и медленные SQL-запросы.

Другие термины