Система мониторинга и логирования для Бауцентр

«Бауцентр» – российская сеть гипермаркетов строительных и отделочных материалов, товаров для дома, а также для сада и огорода.

Гипермаркеты «Бауцентр» расположены в 5 городах России: 3 в Калининграде, 2 в Краснодаре, 1 в Новороссийске, 2 в Омске и 1 в г. Пушкино Московской области.

Общая площадь 9 магазинов сети в настоящий момент составляет более 120 000 кв.м

Ежедневно магазины «Бауцентр» посещает более 70 000 потенциальных покупателей.

Средняя площадь гипермаркета составляет около 14 000 кв.м

Сотрудничество Интаро и Бауцентр началось более 7 лет назад. Совместными усилиями мы развиваем и поддерживаем интернет-магазин baucenter.ru и коробочную версию RetailCRM. Многолетнее сотрудничество и глубокое погружение в бизнес клиента позволяет нашим специалистам предлагать оптимальные и передовые решения для электронной коммерции.

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

Немного теории

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

Проблема и решение

PIM

Каталог, акции, контент, интеграция с Битрикс

Битрикс

WEB, iOS,
Android

Сайт в браузере и два мобильных приложения

Avarda

Учетная система, программа лояльность, кассы

СПЦ

Микросервис между Авардой и Битриксом хранит данные об условиях программы лояльности и актуальном балансе бонусного счета

RetailCRM

Продажи и маркетинг, Интеграция с Битрикс, Mailguner, Devinoonline, Geohelper, Asterisk, Telegram, Viber, ГА

Командой Интаро была собрана система мониторинга логов. Эта система позволяет собирать записи из различных log-файлов, обрабатывать их, сохранять их на длительное время, и просматривать в удобном и настраиваемом графическом интерфейсе.

Система позволяет технической поддержке точечно обрабатывать обращения покупателей и усовершенствовать процессы обменов и кода.

Стек технологий

Основной задачей было логирование API сайта. Мы доработали код так, чтобы в лог записывался запрос, ответ, статус и время работы каждого API-метода. Запись логов производилась в файлы, т.к. это самый безопасный вариант для production-среды.

Далее мы настроили систему логирования на базе

Vector

ClickHouse

Grafana

Application

Log

Vector Log Collector

ClickHouse

Grafana

Vector - это сборщик и обработчик записей из логов, он собирает записи из логов и отправляет их в базу данных в ClickHouse. ClickHouse хранит таблицы с логами. Grafana выступает в качестве интерфейса для просмотра записей логов из базы в ClickHouse.

Grafana позволяет не просто выводит записи из базы, но и конвертирует их в более удобный для пользователя вид и позволяет проводить поиск по ним.

Также Grafana позволяет строить графики на основе полученных данных.

Процесс реализации

Чтобы легко диагностировать проблемы, для API мы сохраняем

Название метода

Текст запроса

Текст ответа

Дополнительные данные (название устройства, идентификатор пользователя и т.д.)

HTTP-статус

Время ответа

При реализации мы предусмотрели исключение из логов чувствительных пользовательских данных.

Мы настроили не только логи API, но и логи обмена с внутренней системой Avarda. Также был настроен сбор системных логов: ошибки MySQL, PHP и nginx, access log сервера. Теперь они также отображаются в одном месте. С помощью Grafana мы можем работать с данными в удобном интерфейсе, а ClickHouse СУБД заточен под большой объем данных и обеспечивает хорошую работу в условиях высокой нагрузки.

Так как Бауцентр - высоконагруженный интернет-магазин, он работает на кластере из серверов (несколько балансировщиков, application-серверов и серверов БД). Каждый из серверов пишет логи в свою файловую систему. Поиск по логам на всех серверах - неудобно и трудоемко, поэтому очень важно аккумулировать логи со всех серверов в единое хранилище.

В результате

Обеспечение безопасности, производительности и оптимизации интернет-магазина;

Грамотный подбор стека технологий, гарантирующий отказоустойчивость крупного интернет–магазина.

Сбор данных о ошибках и запросах в едином окне;

Минимизация рисков и срока реакции на устранение неполадок;

Эффективный контроль системы интернет-магазина;

Предупреждение возникновения ошибок в будущем;