Налаштування APM (Application Performance Monitoring) для 1С-Бітрікс
APM — це постійне спостереження за продуктивністю додатку в реальному часі: час відповіді, кількість помилок, повільні запити, деградація під навантаженням. На відміну від профайлерів (Xdebug, Blackfire), які запускаються вручну, APM працює безперервно й сигналізує ще до того, як клієнти почнуть скаржитися.
З чого складається APM для Бітрікс
Для 1С-Бітрікс практично використовуються два стеки: Elastic APM (open-source, self-hosted) та New Relic / Datadog (SaaS). Принцип однаковий — PHP-агент перехоплює виконання запитів і відправляє метрики в центральне сховище.
Elastic APM — схема:
PHP-agent (elastic-apm-php) → APM Server → Elasticsearch → Kibana (APM UI)
Установка PHP-агента:
# Debian/Ubuntu
curl -L -O https://github.com/elastic/apm-agent-php/releases/download/v1.x.x/apm-agent-php_Linux_x86-64.deb
dpkg -i apm-agent-php_Linux_x86-64.deb
У php.ini:
extension=elastic_apm.so
elastic_apm.server_url=http://apm-server:8200
elastic_apm.service_name=bitrix-site
elastic_apm.environment=production
elastic_apm.transaction_sample_rate=0.1
transaction_sample_rate=0.1 — профілюється 10% запитів. На навантажених сайтах 100% дає помітне навантаження.
Що моніторить APM у Бітрікс
Агент автоматично перехоплює:
- Вхідні HTTP-запити — час відповіді, статус, URL, метод.
-
SQL-запити — до
b_iblock_element,b_sale_order,b_crm_dealта всім іншим таблицям. Видно: час, тіло запиту, план виконання. -
Зовнішні HTTP-виклики —
curl_exec,file_get_contents. Запити до 1С, платіжних систем, зовнішніх API. -
Винятки —
\Bitrix\Main\SystemException, необроблені помилки.
Для користувацьких операцій (довгий скрипт імпорту, важка агрегація) створюємо span вручну:
use Elastic\Apm\ElasticApm;
$transaction = ElasticApm::getCurrentTransaction();
$span = $transaction->beginCurrentContextSpan('import.products', 'custom');
// ... логіка імпорту ...
$span->end();
Ключові метрики та алерти
Після налаштування в Kibana APM UI доступні:
- Response time — середній та 95-й перцентиль часу відповіді за URL.
- Throughput — запитів на хвилину.
- Error rate — відсоток запитів з помилками.
- Apdex — індекс задоволення: співвідношення швидких (< T), допустимих (< 4T) та повільних запитів.
Алерти налаштовуються в Kibana Alerting: якщо p95 response time перевищує 3 секунди понад 5 хвилин — сповіщення в Slack або email.
Строки налаштування
| Етап | Строк |
|---|---|
| Установка APM Server + Elasticsearch | 1 день |
| Налаштування PHP-агента, перші дані | 2–4 години |
| Налаштування дашбордів та алертів | 1 день |
| Тонке налаштування (sampling, користувацькі span) | 1–2 дні |
APM не замінює профайлування — він показує що деградує та коли. Профайлер пояснює чому.







