Зачем свой мониторинг вместо Pulse
У заказчика парк серверов на Proxmox VE и резервные копии на Proxmox Backup Server. Нужно было видеть в одном месте, живы ли ноды, не перегреваются ли процессоры, у всех ли виртуальных машин есть свежие бэкапы и не открыты ли служебные порты в интернет, а тревоги получать в Telegram. Вместо Pulse написан свой лёгкий сервис под эти задачи, «Дозор».
Что собирается и как
- Proxmox API только на чтение. Для сбора заводится отдельный пользователь с ролью аудитора на PVE и PBS, ничего изменить в кластере он не может.
- Доступность нод проверяется раз в 30 секунд, сервер считается недоступным после трёх неудач подряд.
- Загрузка CPU, память, uptime берутся из API, температура процессора от маленького агента на ноде: Python без зависимостей, только чтение, отвечает только адресам из белого списка.
- Сертификаты Proxmox самоподписанные, поэтому Дозор доверяет ровно одному сертификату по отпечатку. Если отпечаток изменился, сбор останавливается и приходит тревога.
- Бэкапы проверяются раз в 5 минут.
Установка на ноду делается одним скриптом примерно за минуту, повторный запуск безопасен, есть инструкция по удалению.
Контроль бэкапов на Proxmox Backup Server
Дозор сопоставляет задания бэкапа на нодах, копии на PBS и журналы задач за 14 дней. По каждой виртуальной машине видно:
- нет ни одной копии;
- последняя успешная копия старше расписания: для ежедневных заданий больше 26 часов;
- после последней успешной копии была ошибка, причём частые ошибки переведены на понятный язык: нет места, PBS недоступен, таймаут, проблема гостевого агента;
- копий меньше двух;
- бэкап идёт прямо сейчас.
Новая машина не считается проблемой, пока для неё не подошло время первой копии, а старые копии с тем же номером от удалённой машины не засчитываются. Дополнительно видны заполненность хранилищ PBS, статусы проверки и очистки.
Проверка открытых портов снаружи
Отдельный сервер вне белых списков заказчика каждые 5 минут проверяет ноды так, как их видит интернет: SSH и веб-интерфейсы Proxmox. Порт считается открытым, только если ответил настоящий сервис, потому что защита хостера от DDoS принимает любые соединения. Если порт открыт дольше 10 минут, приходит критическая тревога с советом закрыть его файрволом.
Тревоги в Telegram без ложных срабатываний
| Тревога | Условие |
|---|---|
| Высокая загрузка CPU | от 80% дольше 5 минут, снимается ниже 75% |
| Перегрев CPU | от 80 °C дольше 3 минут, снимается ниже 77 °C |
| Сервер недоступен | три неудачные проверки подряд |
| Проблемы с бэкапами | сводно по ноде со списком машин и причиной |
| Порт открыт в интернет | дольше 10 минут |
- Задержка и гистерезис: тревога срабатывает, только если условие держится заданное время, и снимается ниже отдельного порога, чтобы не мигать на границе.
- «Нет данных» не значит «норма»: если сервер недоступен или сбор упал, горящие тревоги не снимаются.
- Кнопки под тревогой: заглушить на час или на 8 часов, открыть дашборд. Команды бота ставят сервер на обслуживание до 14 дней.
- Утренняя сводка в 9:00: серверы в сети, самый горячий процессор, бэкапы за сутки, машины без свежей копии, заполненность хранилищ.
Дашборд
- Обзор: серверы плитками или таблицей с мини-графиками CPU и температуры и список активных тревог.
- Бэкапы: хранилища PBS и все машины из заданий с фильтром проблем.
- События: журнал за 48 часов.
- Карточка сервера: графики загрузки, температуры и памяти за сутки, связь, задания бэкапа, заметка.
Как устроено
Python, FastAPI и httpx, SQLite: метрики хранятся 14 дней, события 90. Сервис работает на отдельном сервере мониторинга службой systemd с урезанными правами, HTTPS через Caddy, вход в дашборд по паролю с защитой от подбора.
Скриншоты

Частые вопросы
Как мониторить серверы Proxmox с уведомлениями в Telegram?
Дозор опрашивает Proxmox API и агент на нодах, а тревоги с задержкой и гистерезисом отправляет в Telegram-группу с кнопками «заглушить» и «открыть».
Как проверить, что бэкапы на Proxmox Backup Server свежие?
Сервис сопоставляет задания, копии на PBS и журналы задач и по каждой машине показывает, есть ли свежая успешная копия и почему упала последняя.
Нужен ли доступ по SSH к серверам?
Нет. Используется API Proxmox с правами только на чтение и маленький агент для температуры.
Не будет ли спама тревогами?
Тревоги срабатывают с задержкой и снимаются по отдельному порогу, а если событий много, приходит одна сводка вместо пачки сообщений.





