Налаштування APM: моніторинг продуктивності сайту та додатків

Сайт гальмує, а стандартні логи не показують, де саме втрачається час? Ми налаштовуємо APM-моніторинг на базі OpenTelemetry, Grafana Tempo та Sentry Performance, щоб ви бачили повну картину — від HTTP-запиту до відповіді бази даних. Наша команда реалізує проєкт під ключ: аудит, впровадження, налаштування алертів і подальшу підтримку, забезпечуючи стабільну роботу вашого продукту.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Налаштування APM: моніторинг продуктивності сайту та додатків

Аналітика та метрикиСкладний~3-5 днів
Часті запитання

Уявіть: сайт гальмує, користувачі скаржаться, а ви не розумієте, у чому справа. Стандартні логи та метрики сервера не показують, який саме SQL-запит виконується 3 секунди або чому контролер зависає на 2 секунди. APM (Application Performance Monitoring) вирішує цю проблему — він відстежує продуктивність на рівні коду. В одному з проєктів на Laravel ми виявили, що повільний запит до таблиці orders займав 3.2 секунди через відсутність індексу. APM показав це через 5 хвилин після встановлення. Ми налаштовуємо APM, щоб ви бачили повну картину: від HTTP-запиту до відповіді бази даних. APM дає відповіді на питання: який ендпоінт найповільніший? яка функція жере процесор? де відбувається витік пам'яті? З APM ви не гадаєте — ви знаєте. Наш досвід включає впровадження для 20+ проєктів із навантаженням до 1 млн запитів на день — 5+ років на ринку.

Які проблеми вирішує APM?

  • Повільні SQL-запити. Один неоптимізований запит може додавати секунди до часу відповіді. APM показує повний стек викликів і час виконання кожного запиту.
  • N+1 запити ORM. Типова проблема Laravel і Django: цикл по колекції породжує сотні запитів до бази. Трасування виявляють це миттєво.
  • Вузькі місця в коді. Flamegraph профілювання показує, яка функція споживає найбільше процесора або пам'яті.
  • Помилки та винятки. APM автоматично збирає stack trace і пов'язує з конкретним запитом.

Як працює трасування запитів?

Кожен вхідний HTTP-запит отримує унікальний ідентифікатор (trace ID). На кожному етапі — контролер, сервіс, ORM, SQL, Redis — створюються спани. Спани містять час початку, тривалість, статус та атрибути (наприклад, SQL-текст). Всі спани об'єднуються в трасування, яке візуалізується як waterfall-діаграма. Ми використовуємо семплювання (10–20% запитів), щоб не перевантажувати продакшен.

Які метрики продуктивності контролювати?

Ключові метрики для оцінки якості роботи додатку:

Метрика Цільове значення Опис
p95 latency < 500 мс Час відповіді для 95% запитів
Error rate < 0.1% Частка запитів із помилками
Apdex > 0.95 Частка швидких запитів

Ці SLO-метрики допомагають об'єктивно оцінити, як додаток справляється з навантаженням.

Чому OpenTelemetry — найкращий вибір?

OpenTelemetry — це вендор-нейтральний стандарт збору трасувань і метрик. Один SDK відправляє дані в будь-яку APM-систему: Jaeger, Zipkin, Datadog, New Relic, Grafana Tempo. Ви не залежите від одного вендора і можете змінити бекенд без переписування коду.

// bootstrap/telemetry.php
use OpenTelemetry\API\Globals;
use OpenTelemetry\SDK\Trace\TracerProviderFactory;
use OpenTelemetry\Contrib\Otlp\OtlpHttpSpanExporter;

$exporter = OtlpHttpSpanExporter::fromConnectionString(
    'http://otel-collector:4318',
    'myapp',
    '1.0.0'
);

$tracerProvider = (new TracerProviderFactory())->create($exporter);
Globals::registerInitializer(fn() => $tracerProvider);

Ми підключаємо middleware для трасування HTTP-запитів і слухачі для SQL-запитів. Все це працює без зміни бізнес-логіки.

import { NodeSDK } from '@opentelemetry/sdk-node';
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
import { getNodeAutoInstrumentations } from '@opentelemetry/auto-instrumentations-node';

const sdk = new NodeSDK({
  resource: new Resource({
    'service.name': 'myapp-api',
    'service.version': process.env.APP_VERSION || '1.0.0',
  }),
  traceExporter: new OTLPTraceExporter({
    url: 'http://otel-collector:4318/v1/traces',
  }),
  instrumentations: [
    getNodeAutoInstrumentations({
      '@opentelemetry/instrumentation-express': {
        enabled: true,
      },
      '@opentelemetry/instrumentation-pg': {
        enabled: true,
      },
      '@opentelemetry/instrumentation-redis': {
        enabled: true,
      },
    }),
  ],
});

sdk.start();

Гарантуємо, що інструментація не впливає на продуктивність продакшену — ми використовуємо семплювання (наприклад, 10% запитів).

Що входить у налаштування APM?

  1. Аналіз інфраструктури — визначаємо точки збору даних: HTTP, SQL, Redis, черги.
  2. Встановлення OpenTelemetry SDK — налаштування для вашого стеку (PHP, Node.js, Python, Go).
  3. Інтеграція з бекендом — підключення Grafana Tempo, Sentry Performance або іншого інструменту.
  4. Створення дашбордів — візуалізація latency, error rate, Apdex, SLO.
  5. Налаштування алертів — сповіщення при перевищенні порогів (p95 > 1 с, error rate > 1%).
  6. Документація та навчання — опис архітектури збору та інструкції для команди.

Строки реалізації

Задача Строк
Sentry Performance (швидкий старт) 0.5 дня
OpenTelemetry + Grafana Tempo (self-hosted) 3–4 дні
Datadog/New Relic APM 1–2 дні
Повна інструментація (HTTP + DB + Redis + черги) 2–3 дні
SLO дашборди та алерти +1–2 дні

Вартість розраховується індивідуально залежно від складності. Ми оцінюємо проєкт після вивчення вимог.

Чому варто впровадити APM?

Без APM ви витрачаєте години на пошук вузьких місць. З ним — отримуєте готові дашборди та алерти за кілька днів. APM скорочує час пошуку вузьких місць у 10 разів порівняно з ручним аналізом логів. Наш досвід впровадження включає проєкти з високим навантаженням (мільйони запитів на день). Ми гарантуємо, що налаштування прозоре і не вимагає змін у бізнес-логіці. APM окупається за рахунок скорочення часу на налагодження та підвищення стабільності додатку.

Зв'яжіться з нами, щоб ми оцінили ваш проєкт. Замовте налаштування APM під ключ — отримайте повний контроль над продуктивністю. Отримайте консультацію з налаштування APM для вашого проєкту — ми оцінимо складність і запропонуємо оптимальне рішення.

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

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

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060