Переходите з 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 — перейдіть на вищий тариф.