/
/
Мониторинг сайтов через Telegram и MAX

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

Данный плагин позволит отслеживать доступность ваших сайтов в панели ispmanager 6 через уведомления в Telegram и/или MAX.

Принцип работы

Принцип определения доступности сайта основан на отправке стандартного HTTP-запроса к серверу и анализу его ответа.

Процесс устроен следующим образом:

  1. Инициализация запроса.
Скрипт формирует сетевой запрос к проверяемому домену по протоколу HTTP, при этом в заголовках передается уникальный заголовок User-Agent: ispmanager-SiteMonitor/1.0, чтобы эти запросы можно было легко идентифицировать в логах веб-сервера.
  2. Замер времени (Response Time).
Перед самой отправкой фиксируется точное время старта, после получения ответа время фиксируется повторно, разница между ними переводится в миллисекунды; данные отображаются в столбце Response Time.
  3. Анализ HTTP кода ответа (Status). Сайт считается доступным (статус "up"), если удаленный веб-сервер вернул один из следующих кодов:
    • 200 OK - Сайт доступен.
    • 301 и 302 - Присутствует перенаправление (на HTTPS или другую страницу), но сам веб-сервер отвечает.
    • 401 Unauthorized и 403 Forbidden - Доступ к странице ограничен (паролем или настройками сервера), но сам веб-сервер и сайт доступны.
    • 404 Not Found - Искомая страница не найдена, но сам веб-сервер и сайт доступны.
  4. Фиксация недоступности. Сайт признается недоступным (статус "down"), если:
    • Произошла сетевая ошибка: домен не разрешается в сети (не привязан к IP-адресу) или нет связи с веб-сервером.
    • Истекло время ожидания проверки доступности: например, если веб-сервер не прислал ответ за 10 секунд, скрипт разрывает соединение.
    • Сервер вернул критическую ошибку: 500 Internal Server Error, 502 Bad Gateway или 504 Gateway Timeout.

Установка

Для отправки уведомлений в MAX необходимо установить на сервере сертификат Минцифры.

Для установки потребуется скачать и разместить файлы плагина:

  1. Скачайте файл ispmgr_mod_sitemonitor.xml и поместите его в каталог /usr/local/mgr5/etc/xml/
  2. Скачайте файлы handler.py и sitemonitor_cron.py и поместите их в каталог /usr/local/mgr5/addon/
  3. Для файлов handler.py и sitemonitor_cron.py выставьте права 755 в атрибутах файлов или выполнив команду:
chmod 755 /usr/local/mgr5/addon/handler.py /usr/local/mgr5/addon/sitemonitor_cron.py

Чтобы проверка сайтов выполнялась автоматически, создайте задание в планировщике CRON:

(crontab -l 2>/dev/null; echo "* * * * * /usr/local/mgr5/addon/sitemonitor_cron.py >/dev/null 2>&1") | crontab -

После перезапустите ядро панели, выполнив команду:

pkill core

Статусы сайтов будут хранится в автоматически создаваемом файле state.json, а настройки плагина в аналогичном файле config.json. Оба файла будут созданы в том же каталоге, что и sitemonitor_cron.py.

После установки, настройки плагина будут доступны в разделе Управление сайтами - Site Monitor.

Для актуальности статусов, задание должно выполняться достаточно часто, например каждые 5 минут.

Настройка

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

В столбце Monitoring State будет отображен статус мониторинга сайта.

Настройки проверки доступности и настройки уведомлений в мессенджеры Telegram и MAX доступна по кнопке с изображением шестеренки.

Настройки проверки доступности включают в себя:

  • Check interval (sec) - интервал между проверками доступности в секундах;
  • Timeout (sec) - длительность ожидания ответа от сайта в секундах, после которого будет считаться, что сайт недоступен;
  • Retry count - количество попыток проверки доступности, если достигнут таймаут.

Настройки для мессенджеров одинаковы и содержат обязательные поля:

  • Bot Token - токен бота, который будет отправлять уведомления;
  • Chat ID - ID вашего с ботом чата, в который будет отправляться уведомления.

Пример уведомлений о недоступности двух сайтов и восстановления доступа к ним.