Набор из пяти мониторов
Пять мониторов на сайт
- Главная страницасодержит «wp-content», не содержит «Error establishing a database connection»Ключевое словоFree
- wp-login.phpстатус 200 (или 200-399, если ведёт на https)HTTPFree
- wp-cronнастоящий серверный cron пингует каждый часHeartbeatStarter
- /wp-json/статус 200 и содержит «namespaces»JSONStarter
- Сертификат и регистрацияпредупреждения за 30, 14 и 3 дняSSL + доменStarter
Иллюстративный макет
Что на самом деле идёт не так
Если вы работаете с WordPress не первый год, то сталкивались со всем этим. Сервер базы данных перезапускается, и на каждой странице появляется Error establishing a database connection, хотя код ответа при этом совершенно здоровый. Обновление плагина вызывает фатальную ошибку: публичная часть сайта лежит, а админка ещё открывается. Плагин кеширования сохраняет страницу технических работ и шесть часов отдаёт её всему миру. Плагин безопасности начинает проверять всех на странице входа, в том числе клиента. SSL-сертификат, который должно было продлить cron-задание, тихо перестав работать три месяца назад, перестаёт действовать в субботу.
Простой монитор «возвращает ли адрес 2xx» пропускает почти всё это. Подход ниже накладывает проверки слоями, чтобы за каждым видом сбоя следило что-то отдельное. Для этого нужны обычные типы мониторов, а не плагин.
Набор из пяти мониторов
- Главная страница с ключевым словом. Требуйте строку, которая есть только на правильно отрисованной странице, например фразу из футера или
wp-content, и запретитеError establishing a database connection. Запускайте проверку с интервалом 1 мин на Starter или 30 с на Pro. - wp-login.php доступен. Обычная HTTP-проверка с ожидаемым кодом 200 или 200–399, если вход перенаправляет на https. Она выявляет блокировки из-за правил безопасности.
- Heartbeat для wp-cron. Heartbeat-адрес, на который пингует настоящий серверный cron или WP-CLI-задание
wp cron event run --due-now. Если запланированные публикации и резервные копии остановятся, об этом сообщит пропавший пинг. - Проверка REST API. Запросите
/wp-json/и ожидайте код 200 и строкуnamespacesв JSON. От него зависят headless-фронтенды, блочный редактор и многие плагины, а ломается он отдельно от темы. - Срок действия SSL и домена. Одна проверка сертификата и одна — домена, с предупреждениями за 30, 14 и 7 дней.
Каждая из этих проверок подробно описана на странице мониторинга WordPress, а рассуждения за ними разобраны в статье пять проверок WordPress (на английском). Готового шаблона WordPress в один клик нет: при импорте списка сайтов каждый URL становится HTTP-монитором, а проверки ключевого слова, сертификата и домена вы добавляете для каждого сайта или отдельными строками CSV.
Отравление кеша страниц — сбой, которого никто не замечает
Кеши целых страниц прекрасны, пока не закешируют не то. Запрос, пришедший во время короткого сбоя базы данных, получает страницу ошибки; кеш сохраняет её и отдаёт ещё долго после того, как база восстановилась. Вариант для авторизованного пользователя попадает в анонимный кеш. Сохраняется редирект 302 на тестовый домен. С точки зрения сервера всё в порядке: он быстро отдаёт ответы.
Помогают две недорогие проверки. Первая — правило с ключевым словом на главной странице: оно требует фразу, которая есть только на настоящей странице, поэтому закешированная страница ошибки считается сбоем. Вторая — ещё один монитор для той же страницы с параметром, обходящим кеш, например /?tenium=1. Если обычный адрес не отвечает, а адрес с параметром работает, проблема в кеше, а не на сервере, и это видно по данным в инциденте (фрагмент ответа, статус по регионам). Тогда очистка кеша становится первым шагом в вашей инструкции по реагированию, а не пятым.
Обновления плагинов и ядра
Мониторинг не устанавливает обновления и не заменяет регулярное обслуживание. Он замыкает цикл: вы запускаете обновления, а следующие несколько проверок подтверждают, что сайт по-прежнему отображается. Если вы обновляете по расписанию, запланируйте на это время окно обслуживания, чтобы не получать оповещения о работах, которые начали сами, а проверку по ключевому слову оставляйте включённой: неудачное обновление заметят в течение минуты. Для сайтов, которые вы не контролируете, ежемесячный отчёт для клиента превращает список инцидентов в доказательство того, что за сайтом кто-то следит.
Какой тариф выбрать и на сколько сайтов его хватит
Тариф Free включает 30 мониторов с проверкой каждые 5 мин: этого хватит для одного сайта с простой проверкой главной страницы, с проверкой главной страницы и правилом по ключевому слову, но без проверок SSL, домена, DNS и heartbeat. Starter ($7) добавляет проверки JSON, контроль срока действия SSL и домена, DNS и heartbeat для cron, оповещения в Telegram и Slack и 3 страницы статуса. При пяти мониторах на сайт этого хватит на 20 сайтов. Pro ($29) увеличивает это до 60 сайтов, добавляет проверки каждые 30 с и ежемесячный отчёт под вашим брендом. Agency ($59) добавляет пространства клиентов для агентств, которые ведут сайты для других людей; подробнее — на странице для агентств. Сравнить варианты можно на странице тарифов.
Вопросы о WordPress
Почему ответ 200 не доказывает, что мой сайт на WordPress работает?
Потому что в нескольких видах сбоев WordPress сам показывает страницы ошибок с кодом успеха; самый известный пример — экран ошибки базы данных. Проверка, которая дополнительно требует фразу с настоящей страницы, превращает такой тихий сбой в оповещение.
Нужно ли устанавливать плагин?
Нет. Проверки выполняются снаружи, и ничего устанавливать не нужно. Плагин или однострочный mu-plugin пригодится, только если вам нужен heartbeat, подтверждающий, что сам wp-cron выполняется.
Можно ли использовать бесплатный тариф для сайта на WordPress?
Да, для HTTP-проверки главной страницы и правила по ключевому слову, которое ловит типичную страницу с ошибкой базы данных. Контроль срока действия SSL и домена, мониторинг DNS и heartbeat для wp-cron доступны со Starter за $7, так что сайты, которым нужен полный набор, переходят с Free.
Может ли плагин безопасности заблокировать монитор?
Может: повторные запросы к wp-login.php похожи на сканирование. Добавьте в белый список (allow-list) адреса серверов проверки, которые мы публикуем, или передавайте секретный заголовок. Если сайт стоит за Cloudflare, прочитайте инструкцию по allow-list для Cloudflare.
Сколько сайтов на WordPress вмещает один тариф?
При пяти мониторах на сайт Starter охватывает 20 сайтов, Pro — 60 сайтов, а Agency — 200 сайтов.
Проверяйте сайт на WordPress так, как его видит посетитель
Бесплатный тариф, без карты. Добавьте главную страницу, а когда понадобятся проверки SSL и heartbeat для cron — перейдите на тариф выше.