Уявіть: сайт гальмує, користувачі скаржаться, а ви не розумієте, у чому справа. Стандартні логи та метрики сервера не показують, який саме 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?
- Аналіз інфраструктури — визначаємо точки збору даних: HTTP, SQL, Redis, черги.
- Встановлення OpenTelemetry SDK — налаштування для вашого стеку (PHP, Node.js, Python, Go).
- Інтеграція з бекендом — підключення Grafana Tempo, Sentry Performance або іншого інструменту.
- Створення дашбордів — візуалізація latency, error rate, Apdex, SLO.
- Налаштування алертів — сповіщення при перевищенні порогів (p95 > 1 с, error rate > 1%).
- Документація та навчання — опис архітектури збору та інструкції для команди.
Строки реалізації
| Задача | Строк |
|---|---|
| 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 для вашого проєкту — ми оцінимо складність і запропонуємо оптимальне рішення.







