-15%Скидка 15% на разработку сайта или магазина при старте до конца месяца

Логирование и мониторинг интернет-магазина (Prometheus, Grafana)

Логирование и мониторинг интернет-магазина на 1С-Битрикс через Prometheus и Grafana

О том, что магазин лежит, вы узнаёте от клиента в чате поддержки — а не от системы мониторинга за десять минут до того, как проблема стала заметна. Или оформление заказа тихо замедлилось после релиза, конверсия просела, и вы поняли это только по выручке в конце недели. Пока за магазином на 1С-Битрикс никто не наблюдает системно, вы управляете им вслепую и разбираете инциденты постфактум, теряя заказы и время.

В этой статье разберём, как настроить логирование и мониторинг интернет-магазина на 1С-Битрикс с помощью Prometheus и Grafana: какие метрики снимать с инфраструктуры, приложения и бизнеса, как сделать свой экспортёр для заказов, как задать SLO и осмысленные алерты. Настройку наблюдаемости и оптимизацию мы делаем в рамках услуги по аудиту и оптимизации 1С.

Коротко

  • Prometheus собирает и хранит метрики во времени, Grafana рисует дашборды и шлёт алерты.
  • Снимайте метрики слоями: сначала инфраструктура, потом приложение, потом бизнес-показатели заказов.
  • Бизнес-метрики (заказы, ошибки оплаты, статус обмена с 1С) отдаёт свой экспортёр с кэшированием.
  • Алерты настраивают от SLO по симптомам, влияющим на пользователя, а мониторинг разносят на отдельный сервер.

Зачем магазину мониторинг

Мониторинг решает три задачи. Первая — узнавать о проблемах раньше клиентов: алерт о росте ошибок или замедлении приходит команде до того, как посыпятся жалобы. Вторая — быстро находить причину: когда что-то сломалось, метрики и логи показывают, где именно — в базе, в PHP, в обмене с 1С или в инфраструктуре. Третья — видеть тренды: как система ведёт себя под нагрузкой, хватает ли ресурсов, не деградирует ли скорость от релиза к релизу.

Для магазина всё это напрямую про деньги. Каждая минута недоступности каталога или сломанного оформления — это потерянные заказы, а тихая деградация скорости бьёт по конверсии незаметно. Наблюдаемость превращает эксплуатацию из реактивного «чиним, когда упало» в управляемый процесс, где проблемы видны заранее и разбираются по данным, а не по догадкам.

Логи против метрик

Логи и метрики — разные инструменты, и полноценная наблюдаемость нужна обоих.

АспектМетрикиЛоги
Что этоЧисла во времениЗаписи о событиях
Отвечают на вопросЧто и насколько (сколько ошибок, как быстро)Почему именно (что за ошибка, у кого)
ИнструментPrometheus + GrafanaФайлы, ELK/Loki
ОбъёмКомпактный, долго хранитсяБольшой, хранится ограниченно
Для алертовИдеальныХуже подходят напрямую

Схема работы такая: метрика говорит «выросли ошибки оформления заказа» и поднимает алерт, а логи отвечают, почему именно — какой запрос упал, у какого пользователя, с какой ошибкой. Метрики — для наблюдения и оповещения, логи — для расследования. Эта статья в основном про метрики и стек Prometheus/Grafana, но без разбора логов картина неполна.

Инфраструктура магазина: окружения и мониторинг РазработкаstagingCI/CDсборка, деплойProductionбоевой серверМониторинглоги, алертыОтдельные окружения и мониторинг делают выкатку безопасной
Схема: код проходит через staging и CI/CD на боевой сервер, а мониторинг с логами и алертами сразу показывает проблемы. Разделение окружений делает релизы безопасными.

Как работают Prometheus и Grafana

Стек устроен просто и модульно. Prometheus — база временных рядов: он по расписанию опрашивает (scrape) эндпоинты-экспортёры, которые отдают метрики в текстовом формате «имя_метрики значение», и хранит эти числа во времени. Grafana подключается к Prometheus как к источнику данных и рисует дашборды, а также умеет отправлять алерты.

Ключевые компоненты вокруг магазина:

Важное свойство стека — он независим от того, что наблюдает: те же Prometheus и Grafana одинаково работают и для сервера, и для базы, и для бизнес-показателей. Достаточно, чтобы источник отдавал метрики в понятном формате.

Метрики инфраструктуры

Начинают всегда с фундамента — «жив ли и здоров ли сервер». Это самый дешёвый в настройке и самый первый по важности слой.

Именно инфраструктурный слой чаще всего первым сигнализирует о беде: очередь PHP-FPM растёт, диск заканчивается, база захлёбывается медленными запросами. Правильно заложенная инфраструктура упрощает и мониторинг — про это наш материал про инфраструктуру и BitrixVM.

Метрики приложения Битрикс

Следующий слой — «работает ли магазин с точки зрения пользователя». Здесь снимают показатели самого приложения, а не только железа.

Эти метрики связывают инфраструктуру с бизнесом: замедление оформления при нормальном железе может означать неоптимальные запросы или проблемы с кэшем. Про грамотную работу с базой через объектную модель — наш материал про D7 ORM в Битрикс, а про безопасную выкатку изменений, которые влияют на скорость, — про CI/CD и деплой.

Бизнес-метрики заказов

Самый ценный слой — бизнес-метрики. Они отвечают на главный вопрос: «зарабатывает ли магазин прямо сейчас». Технические метрики могут быть в норме, а заказы при этом не идут — например, сломалась оплата или обмен с 1С.

Падение заказов — метрика №1. График «заказов в минуту» с алертом на аномальное падение часто ловит инциденты быстрее любых технических метрик: он реагирует на всё, что мешает клиенту купить, независимо от причины.

Свой экспортёр для Битрикс

Бизнес-метрики не появятся сами — под них делают собственный экспортёр: эндпоинт или скрипт на стороне Битрикс, который считает показатели и отдаёт их в формате Prometheus. Prometheus опрашивает этот адрес по расписанию.

  1. Считайте по данным Sale. Число заказов, ошибки оплаты, статусы — через D7-запросы к модулю «Интернет-магазин».
  2. Кэшируйте результат. Не пересчитывайте тяжёлые метрики на каждый scrape — обновляйте кэш раз в минуту.
  3. Отдавайте в формате Prometheus. Простой текст «metric_name value» с нужными метками.
  4. Закройте эндпоинт. Доступ к метрикам — только для сервера Prometheus, не наружу.
  5. Версионируйте. Экспортёр лучше оформить отдельным модулем и катить через CI/CD.

Такой экспортёр удобно оформить как модуль Битрикс — тогда его легко обновлять и переносить между проектами. Как это делается, мы разбираем в статье про разработку модуля Битрикс. Доступ к эндпоинту метрик обязательно ограничивают — принципы защиты внутренних интерфейсов те же, что для REST и вебхуков.

Логирование и его сбор

Метрики скажут, что и насколько сломалось, но почему — расскажут логи. Чтобы они помогали, а не мешали, логирование должно быть организованным.

Связка метрик и логов даёт полную картину: алерт по метрике приводит вас к нужному отрезку времени, а логи за этот отрезок показывают конкретную причину. Без структурированных логов расследование инцидента превращается в раскопки, которые съедают самое дорогое — время простоя.

SLO и осмысленные алерты

Алерты без опоры на цели быстро превращаются в шум, на который перестают реагировать. Поэтому сначала задают SLO — измеримые цели качества, а от них уже пороги оповещений.

Разумные SLO для магазина:

Алерты строят на симптомах, влияющих на клиента (рост 5xx, замедление оформления, падение заказов), с выдержкой по времени, чтобы не срабатывать на секундные всплески. Каждый алерт должен требовать действия: если на него никто не реагирует, его чинят или удаляют. Хороший набор алертов — это несколько важных сигналов, а не сотня «мигающих лампочек».

Дашборды в Grafana

Дашборд — это не «все метрики на одном экране», а инструмент для ответа на конкретный вопрос. Полезно иметь несколько дашбордов под разные задачи.

Хороший дашборд отвечает на вопрос за секунды, а не заставляет всматриваться в десятки графиков. Настраивайте их под реальные сценарии команды, а не «чтобы было красиво».

Внедрение пошагово

Наблюдаемость выстраивают слоями, от простого к ценному:

  1. Разверните стек отдельно. Prometheus и Grafana на отдельном сервере, чтобы пережить падение боевого.
  2. Снимите инфраструктуру. node_exporter и экспортёры nginx, PHP-FPM, MySQL.
  3. Добавьте метрики приложения. Время ответа ключевых страниц, hit rate кэша, ошибки.
  4. Сделайте экспортёр заказов. Бизнес-метрики через модуль Sale с кэшированием.
  5. Организуйте логи. Структурированный формат и централизованный сбор.
  6. Задайте SLO и алерты. Цели по критичным путям и оповещения на симптомы.
  7. Соберите дашборды. Обзорный, инфраструктурный, бизнес и инцидентный.
  8. Обкатайте на инцидентах. Проверьте, что алерты ловят реальные проблемы, и уберите шумные.

Частые ошибки

Чек-лист внедрения

  1. Стек вынесен отдельно. Prometheus и Grafana не на боевом сервере магазина.
  2. Инфраструктура под наблюдением. Сервер, nginx, PHP-FPM, база отдают метрики.
  3. Приложение измеряется. Время ответа ключевых страниц и hit rate кэша.
  4. Экспортёр заказов работает. Заказы, оплаты, обмен с 1С — с кэшированием и закрытым доступом.
  5. Логи собираются. Структурированные, с контекстом, централизованно.
  6. SLO заданы. Цели по каталогу, оформлению и оплате.
  7. Алерты осмысленны. На симптомы клиента, с выдержкой, каждый требует действия.
  8. Дашборды под задачи. Обзорный, инфраструктурный, бизнес, инцидентный.

Вывод

Логирование и мониторинг превращают эксплуатацию магазина из тушения пожаров в управляемый процесс. Prometheus и Grafana дают стандартный, независимый от объекта стек: собрать метрики, хранить историю, рисовать дашборды и вовремя оповещать. Стройте наблюдаемость слоями — сначала инфраструктура, потом приложение, потом бизнес-метрики заказов, — и каждый слой закроет свой класс проблем.

Главное — довести дело до бизнес-метрик и осмысленных алертов: график «заказов в минуту» и оповещение на его падение часто спасают выручку быстрее любых технических дашбордов. Разнесите мониторинг на отдельный сервер, свяжите метрики с логами для расследований и задайте SLO по критичным путям. Тогда о проблемах вы будете узнавать раньше клиентов и чинить их по данным, а не по догадкам.

Частые вопросы

Разве встроенного монитора производительности Битрикс недостаточно?

Штатный монитор производительности и панель показывают текущее состояние и разовые замеры, но не хранят историю в удобном виде и не строят долгие тренды. Prometheus с Grafana дают непрерывный временной ряд метрик, алерты по порогам и дашборды, где видно, как система вела себя вчера ночью или в прошлую акцию. Это разные инструменты: встроенные — для быстрой диагностики, Prometheus/Grafana — для постоянного наблюдения и алертинга.

Что такое Prometheus и Grafana простыми словами?

Prometheus — это база временных рядов, которая регулярно опрашивает экспортёры (агенты, отдающие метрики в текстовом формате) и хранит числовые показатели во времени. Grafana — это система дашбордов, которая рисует эти данные графиками и таблицами. Prometheus собирает и хранит, Grafana показывает и предупреждает. Вместе они образуют стандартный стек мониторинга, независимый от того, что именно вы наблюдаете.

Какие метрики снимать с магазина на Битрикс в первую очередь?

Начните с инфраструктуры: запросы и коды ответов nginx, активные процессы и очередь PHP-FPM, медленные запросы и соединения MySQL, память и диск сервера. Затем добавьте прикладные: время ответа ключевых страниц (каталог, карточка, корзина, оформление) и hit rate кэша. И только потом бизнес-метрики: число заказов в минуту, ошибки оплаты, статус обмена с 1С. Такой порядок закрывает сначала «жив ли сервер», потом «работает ли магазин».

Как снимать бизнес-метрики заказов в Prometheus?

Нужен свой экспортёр: небольшой скрипт или эндпоинт на стороне Битрикс, который считает нужные показатели (заказы за период, ошибки оплаты, зависшие обмены) и отдаёт их в формате Prometheus. Prometheus опрашивает этот эндпоинт по расписанию. Считать метрики стоит по данным модуля «Интернет-магазин» через D7-запросы, кэшируя результат, чтобы сам сбор не нагружал базу на каждый опрос.

Что такое SLO и зачем оно магазину?

SLO (Service Level Objective) — это заранее заданная цель по качеству сервиса, например «оформление заказа отвечает быстрее 1 секунды в 99% случаев» или «доступность каталога 99,9% в месяц». SLO переводит расплывчатое «сайт тормозит» в измеримый порог, по которому настраивают алерты и оценивают инциденты. Для магазина SLO задают на критичные пути: каталог, карточка, корзина, оплата — то, что напрямую влияет на выручку.

Как настроить алерты, чтобы они не превратились в шум?

Алерты должны срабатывать на симптомы, влияющие на пользователя (рост ошибок 5xx, замедление оформления, падение числа заказов), а не на каждое колебание метрики. Задавайте пороги от SLO, добавляйте выдержку по времени (проблема держится N минут), группируйте связанные алерты и разделяйте по срочности. Алерт, на который никто не реагирует, надо либо чинить, либо удалять — иначе команда перестаёт им доверять.

Не будет ли мониторинг сам нагружать сервер магазина?

При разумной настройке нагрузка минимальна. Экспортёры отдают уже готовые числа, Prometheus опрашивает их не чаще, чем нужно (обычно раз в 15–60 секунд), а тяжёлые бизнес-метрики кэшируют. Проблемы возникают, только если считать дорогие показатели на каждый опрос без кэша или снимать слишком частые высококардинальные метрики. Мониторинг проектируют так, чтобы он был лёгким наблюдателем, а не дополнительной нагрузкой.

Где разворачивать Prometheus и Grafana — на том же сервере?

Лучше на отдельном сервере или в отдельном контуре, чтобы мониторинг продолжал работать, даже если основной сервер магазина упал, — иначе вы потеряете данные именно в момент инцидента. На боевом сервере магазина живут только лёгкие экспортёры. Такой разнос особенно важен для нагруженных проектов и хорошо сочетается с продуманной инфраструктурой на BitrixVM и балансировкой.

Поделиться:

Хотите узнавать о проблемах раньше клиентов?

Развернём Prometheus и Grafana, снимем метрики инфраструктуры и заказов, настроим SLO и алерты для вашего магазина на 1С-Битрикс.

Аудит и оптимизация 1С

Редакция B2Bsite

Команда B2Bsite. С 2014 года разрабатываем и сопровождаем интернет-магазины на 1С-Битрикс: настраиваем мониторинг, оптимизируем производительность и держим нагруженные проекты стабильными.

← Все статьи блога