Разработка

Как мы объединили Zabbix, резервное копирование и мессенджер MAX

Единый бот для уведомлений, контроля бэкапов и оперативной работы с событиями ИТ-инфраструктуры

ООО «Бизнес Системы» 2026 год
Как мы объединили Zabbix, резервное копирование и мессенджер MAX

О проекте

Коротко о проекте

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

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

Исходная задача

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

Отдельной задачей стали уведомления о проблемах Zabbix: важно доставлять их ответственным сотрудникам, предоставлять им подходящие права и не превращать чат в бесконечный поток повторов.

Что реализовали

  • Бот MAX с меню, кнопками, сценариями управления и разделением прав.
  • Приём событий Zabbix через защищаемый секретом вебхук, фильтрация адресатов по ролям, хостам и тегам.
  • Просмотр проблем Zabbix, статуса сайтов, перечня хостов и температуры в серверной.
  • Действия с событиями Zabbix из MAX: подтверждение и, когда это разрешено настройками Zabbix, закрытие проблемы.
  • Отдельный контур контроля файлов резервного копирования с параметрами для каждой папки.
  • История проверок, ежедневная сводка, сообщения об ошибках и восстановлении нормального состояния.
  • Очередь повторной доставки уведомлений Zabbix при временных сбоях связи с MAX.

Архитектура

На центральном Linux-сервере работает приложение Python/FastAPI. Оно принимает вебхуки MAX и Zabbix, обращается к Zabbix API, хранит конфигурацию и рабочие данные в SQLite и выполняет фоновые задания через APScheduler.

Источник

Назначение

Zabbix → вебхук → бот → MAX

События мониторинга, маршрутизация уведомлений, действия по событиям через Zabbix API.

Windows-агент → JSON-отчёт → бот → MAX

Проверка возраста и размера файлов, доступности папок и актуальности отчёта; отдельный от Zabbix канал данных.

SQLite

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

APScheduler

Периодические проверки отчётов, ежедневная сводка, повторные попытки доставки событий.

 

В используемой схеме агентский контур и подсистема Zabbix логически независимы: сервер Zabbix не выступает транспортом JSON-отчётов о резервных копиях. Их объединяет центральное приложение и единый пользовательский интерфейс в MAX.

Контроль резервных копий: не просто «задание завершено»

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

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

История проверок сохраняется в SQLite и помогает анализировать ситуацию задним числом. Ежедневный отчёт формируется по расписанию, которое можно менять из интерфейса бота. По умолчанию в коде предусмотрено время 18:00, но это параметр настройки.

Управление мониторингом через чат

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

Такой подход снижает число ручных операций: повседневная настройка выполняется через меню, а не редактированием файлов приложения на сервере.

Zabbix в MAX: уведомления и действия

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

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

Что обеспечивает устойчивость уведомлений

В версии RC5 для событий Zabbix реализован отдельный механизм надёжной доставки. Бот резервирует сообщение в SQLite, пытается передать его в MAX и при сбое использует очередь повторных попыток. Успешно доставленные сообщения не должны отправляться повторно только потому, что для другого получателя возникла ошибка. Повторный идентичный вебхук также обрабатывается с защитой от дублей.

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

Технический стек

Компонент

Технология

Серверная логика

Python, FastAPI, Uvicorn

Интеграция с мониторингом

Zabbix webhook + Zabbix API

Сообщения и управление

MAX Bot API

Хранение и журналирование

SQLite, в том числе очередь доставки событий

Фоновые задачи

APScheduler

Агентская схема резервного копирования

PowerShell, JSON-отчёты, обмен конфигурациями

Технологии и инструменты

PythonFastAPIZabbix APIMAX Bot APISQLiteAPSchedulerPowerShellJSON

Результаты

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

Нужен похожий проект?

Расскажите о вашей задаче — подберём решение и сделаем бесплатный аудит.