Переходите с UptimeRobot? Импортируйте мониторы одним кликом по ключу API только для чтения.Начать бесплатно →
  1. Главная
  2. Решения
  3. WordPress
Для сайтов на WordPress

WordPress ломается вежливо, поэтому проверяйте именно такие сбои

Большинство сбоев WordPress возвращает бодрый код 200. Вот проверки, которые замечают их всё равно.

WordPress

Набор из пяти мониторов

Набор мониторов для одного сайта

Пять мониторов на сайт

  • Главная страницасодержит «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» пропускает почти всё это. Подход ниже накладывает проверки слоями, чтобы за каждым видом сбоя следило что-то отдельное. Для этого нужны обычные типы мониторов, а не плагин.

Набор из пяти мониторов

  1. Главная страница с ключевым словом. Требуйте строку, которая есть только на правильно отрисованной странице, например фразу из футера или wp-content, и запретите Error establishing a database connection. Запускайте проверку с интервалом 1 мин на Starter или 30 с на Pro.
  2. wp-login.php доступен. Обычная HTTP-проверка с ожидаемым кодом 200 или 200–399, если вход перенаправляет на https. Она выявляет блокировки из-за правил безопасности.
  3. Heartbeat для wp-cron. Heartbeat-адрес, на который пингует настоящий серверный cron или WP-CLI-задание wp cron event run --due-now. Если запланированные публикации и резервные копии остановятся, об этом сообщит пропавший пинг.
  4. Проверка REST API. Запросите /wp-json/ и ожидайте код 200 и строку namespaces в JSON. От него зависят headless-фронтенды, блочный редактор и многие плагины, а ломается он отдельно от темы.
  5. Срок действия 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 — перейдите на тариф выше.