Какие задачи решаем с помощью Zabbix и Prometheus

Проект: CRM-система POSIFLORA для цветочного бизнеса

CRM-система POSIFLORA помогает цветочному бизнесу держать работу под контролем: продавать букеты, учитывать остатки и часы работы сотрудников, планировать закупки. Все процессы — в одном интерфейсе. Работать с POSIFLORA удобно.

В системе уже работает больше 1000 пользователей: от небольших студий до крупных цветочных сетей со множеством магазинов.

Так выглядит интерфейс POSIFLORA

Для отслеживания неполадок используем две системы мониторинга: Zabbix и Prometheus

Чтобы POSiFLORA работала стабильно и не ломалась, мы отслеживаем неполадки с помощью системы мониторинга. Она собирает и анализирует данные, например:

  • скорость загрузки каталога товаров;
  • объем трафика;
  • использование оперативной памяти.

При обнаружении опасности система мониторинга отправляет уведомление девопс-инженеру. Он разбирается с проблемой, и POSiFLORA продолжает работать без сбоев.

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

Раньше мы использовали одну систему мониторинга — Zabbix. С ее помощью удобно отслеживать работу и серверной, и клиентской частей. Однако Zabbix стал одной из причин излишней нагрузки на сервера. Чтобы это исправить, мы перебросили часть мониторинга на Prometheus.

Теперь мы используем две системы:

  • Zabbix наблюдает за работой клиентской части.
  • Prometheus в связке с Grafana и экспортерами Node Exporter и MySQL Exporter — за серверной.

Рассказываем подробно, как пришли к такому решению.

Проблема: Zabbix создавал лишнюю нагрузку

POSiFLORA использует для работы облачные сервера Yandex.Cloud. У них есть лимит нагрузки: одновременно сервер выдерживает 50 тысяч сетевых подключений. Если хотя бы один сервер достигнет лимита, POSiFLORA начнет тормозить и выдавать ошибки.

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

Чтобы этого не допустить, девопс-инженер проанализировал работу системы и нашел компоненты, которые создают слишком много подключений. Одним из них оказался Zabbix: на него приходилось 8—9 тысяч соединений. Если их число уменьшить, риск перегрузки системы снизится.

Лишние соединения возникали из-за реакции Zabbix на перезапуск Docker-контейнеров. Контейнеры — это безопасная «упаковка» для программного кода. В ней он загружается на сервер и исполняется, не конфликтуя с другими компонентами системы.

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

Решение: разделить мониторинг между Zabbix и Prometheus

Чтобы снизить число сетевых соединений, мы отдали серверный мониторинг Prometheus. Сам Prometheus — это база данных. Для полноценной работы его дополняют экспортерами для сбора метрик и инструментами визуализации.

Отслеживание контейнеров — часть серверного мониторинга. Поэтому лишние соединения Zabbix пропали, когда он перестал следить за контейнерами. Prometheus получает и отдает все метрики в одном соединении. Он создает меньше нагрузки, чем Zabbix.

Тем не менее полностью перейти на Prometheus нельзя: он не умеет следить за клиентской частью POSiFLORA. Мы решили разделить работу между двумя системами мониторинга: за серверной частью, включая контейнеры, следит Prometheus, за клиентской — Zabbix.

Какие задачи решаем с помощью Prometheus

Мониторинг серверной части

Prometheus в связке с Grafana и экспортерами Node Exporter и MySQL Exporter следит за состоянием сервера:

  • Node Exporter собирает системные метрики: данные об использовании оперативной памяти, загрузке процессора и сотни других показателей;
  • MySQL Exporter собирает метрики сервера базы данных MySQL.

Экспортеры переводят данные на понятный базе данных язык и отправляют ей по запросу. В нашем случае — примерно каждые 10 секунд. База данных хранит их в течение заданного времени.

Визуализация и оповещения

Чтобы с данными было удобно работать, к Prometheus подключена Grafana — инструмент визуализации. Она строит информативные графики и отправляет уведомления об ошибках в Telegram.

Так выглядят графики, построенные по метрикам MySQL Exporter

Какие задачи решаем с помощью Zabbix

Мониторинг клиентской части

Zabbix отслеживает параметры POSiFLORA. Девопс-инженер создает в Zabbix запросы для проверки каждого параметра: количества активных устройств, скорости загрузки каталога, объема трафика и других. Система собирает и хранит данные.

Пример запроса на проверку количества активных устройств

Визуализация и оповещения

Чтобы девопс-инженер мог видеть все метрики сразу и анализировать их изменение во времени, Zabbix визуализирует данные в виде графиков.

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

Пример визуализации данных о работе POSiFLORA

Результаты: распределили нагрузку и обеспечили бесперебойную работу системы

Разделили мониторинг между Zabbix и Prometheus и решили проблему лишних соединений. Это обеспечит стабильную работу POSiFLORA в дни пиковых нагрузок.

Настроили мониторинг: постоянно отслеживаем работу POSiFLORA и ее серверной инфраструктуры.При нахождении ошибок система сразу же сообщает о них в Telegram.

Непрерывность работы POSiFLORA составляет 99,95%, а возможное время аварийной остановки — не более часа в год.

0
Комментарии
-3 комментариев
Раскрывать всегда