Метрики и журналы сети, Nginx, PHP, базы, cron и диска сходятся в последовательную диагностику
WordPress

Как мониторить и диагностировать WordPress по слоям

Проверяем внешний ответ, Nginx, PHP-FPM, MariaDB, cron, диск и изменения компонентов в одном порядке, чтобы быстро находить источник сбоя.

Содержание

Диагностика WordPress становится понятной, если идти по пути запроса: внешний клиент → DNS/TLS → Nginx → PHP-FPM → WordPress → MariaDB. Cron, почта и диск проверяются отдельно. Начинайте с первого нарушенного слоя, а не с переустановки плагинов.

Зафиксируйте симптом и время

Запишите URL, код ответа, время UTC, тип пользователя и последнее изменение. Затем выполните внешний запрос:

curl --fail --show-error --silent --output /dev/null \
  --write-out 'code=%{http_code} start=%{time_starttransfer} total=%{time_total}\n' \
  https://example.com/

Проверьте также некешируемый контрольный URL без персональных данных. Если соединения нет, переходите к DNS, TLS и firewall. Если Nginx отвечает, сеть уже не является первой неизвестной.

Сопоставьте Nginx и PHP-FPM

На VPS проверьте конфигурацию, службы и сообщения за последние десять минут:

sudo nginx -t
systemctl --failed --no-pager
journalctl -u nginx --since '-10 minutes' --no-pager
journalctl -u php8.3-fpm --since '-10 minutes' --no-pager

Версию PHP в имени службы замените установленной. Ответ 502 вместе с отсутствующим сокетом указывает на PHP-FPM; 404 — на root или маршрутизацию; 500 требует журнала приложения. Ищите первую ошибку рядом со временем запроса.

Проверьте базу и ресурсы

Следующие команды показывают активные подключения, память, диск и сообщения OOM без изменения данных:

sudo mariadb -e "SHOW PROCESSLIST;"
free -h
df -hT
journalctl -k -b --no-pager | grep -i -E 'out of memory|killed process'

Заполненный диск способен остановить базу и журналирование. Большое число PHP-процессов при нехватке RAM требует ограничения пула и поиска медленного кода, а не добавления работников.

Проверьте cron и целостность

Главная из page cache может работать при сломанном cron. Просмотрите просроченные события и checksum официальных компонентов:

wp --path=/srv/www/example.com/current cron event list --fields=hook,next_run_relative,recurrence
wp --path=/srv/www/example.com/current core verify-checksums
wp --path=/srv/www/example.com/current plugin verify-checksums --all --strict

Не удаляйте неизвестный hook и не заменяйте файл до выяснения источника. Коммерческий плагин может не иметь эталонных checksum.

Включайте отладку на ограниченное время

Если штатных журналов недостаточно, направьте WordPress debug в файл, но не показывайте посетителям. Защитите журнал от веб-доступа, следите за ростом и не собирайте лишние персональные данные. После воспроизведения ошибки верните обычный уровень.

Превратите проверки в наблюдение

Минимальный мониторинг включает внешний HTTP-код и время, срок TLS, свободное место, OOM, состояние Nginx/PHP/MariaDB, просроченный cron и неуспешные резервные копии. Оповещение должно сообщать симптом и время, а не просто «сайт сломан».

После инцидента запишите первый нарушенный слой, причину, исправление и проверку. Восстановление данных тестируется по отдельной инструкции, а общая карта компонентов находится в начале маршрута.

Источники

Рекламное местоВаша компания здесьРазместить рекламу

Самопроверка

Проверьте, что материал усвоен

Ответьте на все вопросы. Результат сохранится только в этом браузере и будет учтён в статистике прочитанных материалов.

01Что означает 502 от Nginx?
02Почему сначала фиксируют время ошибки?
03Что делать при заполненном диске?

Разбираем коротко

Частые вопросы

Что проверять первым, если WordPress не открывается?

Внешний HTTP-ответ и время, затем Nginx, PHP-FPM, базу и ресурсы. Такой порядок быстро определяет границу, на которой исчезает нормальный ответ.

Можно ли включить WP_DEBUG_DISPLAY на production?

Не следует показывать детали посетителям. Пишите ошибки в защищённый журнал на короткое время, следите за его размером и отключайте подробность после диагностики.

Почему одной проверки главной недостаточно?

Кеш может отдавать главную без PHP и базы. Нужны отдельные URL, административная функция и проверка фоновых заданий.