Любому сайту нужен мониторинг, не существует такого ресурса, о даунтайме которого владелец предпочел бы не знать. Забавно, что многие разработчики не мониторят свои пет-проекты, а фрилансеры вообще почти никогда не заморачиваются проверкой доступности, хотя это как правило не сложнее чем подключить какую-нибудь аналитику и может сэкономить много нервов.
Существует не один десяток сервисов для мониторинга сайтов, большинство из них полностью платные или сильно урезанные в бесплатной версии. Особняком от них стоит UptimeRobot, который предоставляет огромный функционал бесплатно и позволяет гибко настраивать платную подписку под свои нужды.
В большинстве случаев UptimeRobot шлёт HTTP-запросы на указанный адрес и по заголовкам ответа определяет его доступность (2хх — всё ок, 4хх/5хх — в течение 30 секунд обстреливает повторными запросами из других точек, если ответ снова отрицательный, засчитывается downtime).
Бесплатно
- 50 мониторов с частотой обновления от 5 минут
- HTTP(S)-запросы по любым адресам
- Поиск ключевого слова на странице
- Ping (ICMP-запросы)
- Проверка портов
- Оповещения по почте, вебхуками, сообщениями в Twitter, Telegram, Slack и в других сервисах
- Статистика по времени отклика
- Подробные логи за два месяца
- Возможность публиковать статистику на общедоступную страницу (пример)
- Открытый API
Платно
- До 10000 мониторов с минутным интервалом обновления
- Отслеживание срока годности SSL-сертификата и мониторинг проблем с HTTPS
- Разнообразная логика оповещений (с установкой интервалов и прочим)
- Кастомизация HTTP-запросов (в том числе заголовки и статусы)
- Heartbeat мониторинг (мониторинг серверов за NATом)
- Оповещения смсками/звонками (до 900 в месяц)
- Доступны логи за два года
Как видно, бесплатных ништяков у сервиса даже больше чем покупных, и скорее всего именно это принесло UptimeRobot популярность и признание. Хотя, спустя несколько редизайнов, его всё ещё ругают за ужасный интерфейс.
Ключевые слова
Если используете какой-нибудь компонент с условной отрисовкой (например, плашка о технических работах), с помощью поиска по keyword’ам можете отслеживать его состояние. Вообще у этой штуки много крутых вариантов использования: так как для каждого запроса сохраняется время отклика, можно замерять отрисовку разных частей приложения “со стороны” — запросы отправляются из разных точек мира и могут давать совершенно разную картину. Можно настроить алерты на появление нежелательного содержимого на странице и наоборот, проверять наличие нужного текста. Моё любимое — в два клика делается напоминалка, которая срабатывает, когда определенная статья на Хабре выходит в топ за день/неделю/etc:
Оповещения настраиваются в интерфейсе без каких-либо проблем:
API
UptimeRobot предоставляет простой API в XML/JSON/JSON-P, полностью дублирующий функционал веб-версии. Подробное описание методов и параметров находится на странице API, вкратце — можно считывать статистику и логи, создавать/удалять/редактировать/сбрасывать мониторы и управлять пользователями.
Есть интересный гайд Automating uptime monitoring on Kubernetes with UptimeRobot, клиент на Go, Python и ещё куча интерпретаций под другие языки, панелек и кастомных status pages.
Heartbeat
Для мониторинга серверов, недоступных напрямую, в платной версии доступны heartbeat-мониторы. При создании такого, генерируется уникальная ссылка, на которой сервис UptimeRobot слушает периодические входящие запросы от удаленного сервера. Если запросы перестали поступать, засчитывается downtime.
Что можно сделать прямо сейчас
На один бесплатный аккаунт полагается 50 мониторов, чего обычно вполне хватает для покрытия личных сайтов и проектов. Если у вы еще не подключили везде халявный мониторинг — самое время это сделать. За 5 минут и без малейшего вмешательства в код. А если требуется более глубокая интеграция мониторинга в проект, изучите API. Только не забудьте сначала поискать готовые решения для вашего стека, их наверняка навалом.