Наблюдатель панели
Настройте Cloudflare Worker, который проверяет панель раз в минуту и присылает уведомления о сбое и восстановлении в Telegram.
На этой странице
Наблюдатель панели — небольшой Cloudflare Worker, который раз в минуту проверяет публичный адрес панели. После трёх неудачных проверок подряд он отправляет одно сообщение в Telegram; когда панель снова отвечает, приходит одно сообщение о восстановлении с длительностью сбоя.
Если не задан хотя бы один из двух секретов Telegram, Worker ничего не делает.
Любой HTTP-статус ниже 500 считается ответом панели, в том числе её сайт-маска с кодом 404. Тайм-аут, ошибка соединения или TLS и любой ответ 5xx считаются сбоем. Worker не проксирует трафик, не меняет DNS и не добавляет маршрут на домен панели. Его публичный обработчик fetch всегда отвечает 404, а workers_dev выключен.
Запросы и стоимость#
Расписание запускается раз в минуту: 1 440 проверок в день, по одному запросу к панели и одному чтению KV на проверку. KV записывается только при изменении счётчика ошибок или состояния «сбой / восстановление»; на успешных проверках и во время долгого сбоя после порога записи нет.
Настройка#
Выполните команды из deploy/cloudflare-watcher:
-
Скопируйте пример и создайте пространство KV:
cp wrangler.toml.example wrangler.toml wrangler kv namespace create WATCH -
Вставьте выданный Wrangler ID пространства в
wrangler.toml, в секцию[[kv_namespaces]]. -
Задайте
HEALTH_URL— публичный адрес панели, напримерhttps://panel.example.com/. Достаточно страницы-маски; не указывайте закрытый адрес. -
При необходимости задайте в
[vars]HEALTH_TIMEOUT_MS(по умолчанию8000),ALERT_AFTER(по умолчанию3неудачные проверки подряд),ALERT_NAME(по умолчаниюMistgate panel) иALERT_LANG(enилиru, по умолчаниюen). -
Добавьте токен Telegram-бота как секрет:
wrangler secret put TELEGRAM_BOT_TOKENИспользуйте того же бота, что и для алертов панели. Токен можно взять у BotFather; панель его больше не показывает.
-
Возьмите ID чата из собственной привязанной карточки в разделе Интеграции → Алерты в Telegram и добавьте его как секрет:
wrangler secret put TELEGRAM_CHAT_ID -
Установите зависимости и разверните Worker:
pnpm install wrangler deploy
Worker вызывает только метод Telegram sendMessage. Он не опрашивает бота и не настраивает webhook, поэтому панель продолжает получать сообщения для привязки чата.
Проверка уведомлений#
На три минуты временно укажите в HEALTH_URL закрытый порт публичного хоста панели или остановите панель. После трёх проверок подряд Worker должен прислать уведомление о сбое. Верните исходный адрес или запустите панель; следующая успешная проверка должна прислать сообщение о восстановлении. После проверки верните прежнее значение HEALTH_URL.