Мониторинг WordPress-сайтов
Коротко. WordPress падает чаще обычного сайта: автообновления плагинов, «белый экран смерти», конфликты тем, исчерпание памяти PHP. Мониторьте не только доступность главной (HTTP 200), но и наличие ключевого текста на странице, время отклика, SSL и админку. Лучший сигнал — лёгкий health-эндпоинт, который проверяет базу и не зависит от тяжёлого фронтенда.
Почему WordPress требует особого внимания
WordPress — самая популярная CMS в мире, но и самая хрупкая в эксплуатации. Типичные причины падений, которых нет у статичных сайтов:
- Белый экран смерти (WSOD). Фатальная PHP-ошибка после обновления плагина — страница отдаёт пустоту с кодом 500, а иногда даже 200.
- Автообновления. WordPress сам обновляет ядро и плагины ночью — и наутро сайт может не открываться.
- Исчерпание памяти PHP. Тяжёлый плагин или всплеск трафика упирается в memory_limit.
- истёкший сертификат SSL. Особенно на сайтах, где про сертификат забыли после первой настройки.
- Взлом и редиректы. Скомпрометированный WordPress часто редиректит на спам — главная «работает», но не ваша.
Код ответа 200 на WordPress не гарантирует, что сайт цел. WSOD и взломанные редиректы умеют отдавать 200. Проверяйте, что на странице есть ожидаемый текст — например название сайта или фрагмент из футера.
Что мониторить на WordPress-сайте
| Что проверять | Тип проверки | Что ловит |
|---|---|---|
| Главная страница | HTTP 200 + ключевое слово | WSOD, взлом, редиректы |
| Время отклика | HTTP + порог по ms | Тяжёлые плагины, нехватка ресурсов |
| /wp-login.php | HTTP 200 | Доступность админки |
| проверку SSL | SSL-мониторинг сайтов (14/3 дня) | Истечение сертификата |
| REST API документацию /wp-json | HTTP + JSON | Жив ли PHP и база |
| Cron / WP-Cron задачи | Heartbeat-мониторинг | Зависший планировщик |
Лёгкий health-эндпоинт вместо тяжёлой главной
Главная страница WordPress часто грузит десятки запросов к базе и сторонние скрипты. Проверять её — значит ловить ложные срабатывания при любом всплеске нагрузки. Лучше добавить mu-plugin (must-use plugin), который отдаёт лёгкий health-ответ, проверяя только базу:
<?php
// wp-content/mu-plugins/health-check.php
add_action('init', function () {
if ($_SERVER['REQUEST_URI'] !== '/wp-health') return;
global $wpdb;
$ok = ($wpdb->get_var('SELECT 1') == 1);
status_header($ok ? 200 : 503);
header('Content-Type: application/json');
echo wp_json_encode(['status' => $ok ? 'up' : 'down']);
exit;
});
Теперь монитор на https://site.ru/wp-health с ожидаемым кодом 200 падает ровно тогда, когда умирает база данных, а не когда главная просто долго грузится. Проверить вручную:
curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://site.ru/wp-health
Проверка по ключевому слову — против WSOD и взлома
Самый коварный сбой WordPress — когда страница отдаёт 200, но контент сломан или подменён. Чтобы это ловить, монитор должен искать на странице ожидаемый текст. Если название вашего сайта или фрагмент футера пропал — значит что-то не так, даже если код ответа «хороший».
После каждого обновления плагина или ядра проверяйте, что мониторинг видит ключевое слово на странице. Это ваша первая линия защиты от тихого WSOD.
Мониторинг WP-Cron через heartbeat
WP-Cron в WordPress запускается при заходах на сайт и легко зависает на низкотрафиковых проектах: не уходят письма, не публикуются отложенные посты, не работают бэкапы плагинов. Heartbeat-мониторинг (мёртвый выключатель) решает это: настройте задачу слать «Ping инструмент» в enterno.io, и если пинг не пришёл вовремя — вы получите алерт о зависшем планировщике.
Алерты и многорегиональность
enterno.io шлёт алерты в Telegram, Slack, на email, через webhook, в PagerDuty и Jira. Многорегиональная проверка (Россия, Европа, США) особенно полезна для WordPress: взломанные сайты иногда показывают спам-редирект только посетителям из определённых стран. Проверка из разных регионов это вскрывает.
Частые вопросы
Почему мониторинг по коду 200 пропускает белый экран смерти?
Потому что WSOD и взломанные редиректы умеют отдавать 200. Добавьте проверку по ключевому слову на странице — она ловит сломанный или подменённый контент.
Как мониторить сайт после автообновлений плагинов?
Ставьте проверку каждую минуту (план Pro) и обязательно по ключевому слову. Тогда падение после ночного автообновления вы заметите сразу, а не от жалобы клиента.
Нужно ли мониторить /wp-admin?
Полезно мониторить доступность /wp-login.php — если она недоступна, вы не сможете чинить сайт. Но основной фокус — публичная часть и health-эндпоинт.
Сколько мониторов нужно на один WordPress-сайт?
Минимум 3: главная (с ключевым словом), SSL и health-эндпоинт. На бесплатном плане enterno.io доступно до 10 мониторов — этого хватит на 2–3 сайта.
Начать мониторинг — бесплатно →
Смотрите также: полный гайд по мониторингу сайтов, проектирование health-check эндпоинтов и мониторинг SSL-сертификатов.