Для владельцев сайтов на WordPress важно не только создавать качественный контент и поддерживать дизайн, но и постоянно следить за состоянием сайта: его доступностью, скоростью загрузки и наличием ошибок. В этой статье мы подробно разберём, как настроить автоматический мониторинг сайта на WordPress с помощью плагинов и собственного кода, чтобы своевременно получать уведомления о сбоях и проблемах.
Почему важен мониторинг сайта на WordPress
Автоматический мониторинг помогает быстро выявлять такие проблемы, как:
- недоступность сайта (падение сервера, ошибки хостинга);
- ошибки PHP и базы данных;
- проблемы с производительностью;
- появление битых ссылок;
- проблемы с SSL-сертификатом и др.
Ручная проверка занимает много времени и неэффективна. Автоматизация мониторинга с помощью плагинов и скриптов позволяет сразу получать уведомления по Email или мессенджерам и быстро реагировать.
Выбор плагина для мониторинга WordPress
Существует несколько плагинов, которые помогут реализовать мониторинг без сложной настройки:
- WP Umbrella — специализированный сервис с плагином для мониторинга ошибок, обновлений и доступности. Позволяет получать детальные отчёты и уведомления.
- Jetpack — модуль "Site Stats" и "Downtime Monitoring" информируют о статусе сайта и ошибках.
- ManageWP Worker — инструмент для централизованного управления и мониторинга нескольких сайтов с отчётами о доступности и безопасности.
- WP Health — лёгкий плагин для проверки состояния сайта, включая нагрузку на сервер, ошибки и обновления.
Например, для подключения WP Umbrella достаточно установить плагин с официального сайта WPSHOP, зарегистрироваться и связать сайт с сервисом.
Настройка простого мониторинга доступности с помощью кода
Если вы предпочитаете самостоятельное решение без сторонних сервисов, можно написать простой скрипт, который будет периодически проверять сайт и отправлять уведомления. Рассмотрим пример функции wpmonitor_check_site_status(), которую можно добавить в файл functions.php вашей темы или создать отдельный плагин.
function wpmonitor_check_site_status() {
$response = wp_remote_get(home_url(), array('timeout' => 10));
if (is_wp_error($response)) {
wpmonitor_send_alert('Сайт недоступен: ' . $response->get_error_message());
return;
}
$status_code = wp_remote_retrieve_response_code($response);
if ($status_code !== 200) {
wpmonitor_send_alert('Некорректный HTTP статус: ' . $status_code);
}
}
function wpmonitor_send_alert($message) {
$admin_email = get_option('admin_email');
wp_mail($admin_email, 'Мониторинг сайта: проблема обнаружена', $message);
}
Далее необходимо создать крон-задачу, которая будет запускать wpmonitor_check_site_status с нужной периодичностью, например, раз в 10 минут. Для этого используйте WP-Cron:
add_action('wpmonitor_cron_check', 'wpmonitor_check_site_status');
if (!wp_next_scheduled('wpmonitor_cron_check')) {
wp_schedule_event(time(), 'ten_minutes', 'wpmonitor_cron_check');
}
add_filter('cron_schedules', function($schedules) {
$schedules['ten_minutes'] = array(
'interval' => 600,
'display' => 'Каждые 10 минут'
);
return $schedules;
});
Мониторинг ошибок PHP и логирование
Кроме проверки доступности, важно отслеживать PHP-ошибки, которые могут нарушить работу сайта. WordPress по умолчанию не выводит ошибки на экран, но можно настроить их логирование:
- В файле
wp-config.phpвключите режим отладки и логирования:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Ошибки будут записываться в файл wp-content/debug.log. Для автоматического мониторинга можно написать плагин, который будет сканировать этот файл и при обнаружении новых ошибок отправлять уведомления. Вот пример функции, которая проверяет файл и отправляет письмо:
function wpmonitor_check_php_errors() {
$log_file = WP_CONTENT_DIR . '/debug.log';
if (!file_exists($log_file)) {
return;
}
$last_size = get_option('wpmonitor_log_size', 0);
clearstatcache(true, $log_file);
$current_size = filesize($log_file);
if ($current_size > $last_size) {
$fp = fopen($log_file, 'r');
fseek($fp, $last_size);
$new_errors = fread($fp, $current_size - $last_size);
fclose($fp);
if (!empty(trim($new_errors))) {
wpmonitor_send_alert("Новые PHP ошибки:\n" . $new_errors);
}
update_option('wpmonitor_log_size', $current_size);
}
}
Добавьте эту проверку в крон вместе с мониторингом доступности, чтобы иметь полный контроль над состоянием сайта.
Дополнительные советы по мониторингу и оптимизации
Мониторинг SSL-сертификата
Срок действия SSL может истечь, и посетители увидят предупреждения безопасности. Для контроля используйте плагин SSL Zen или пишите простой запрос на проверку даты окончания сертификата через PHP:
function wpmonitor_check_ssl_expiry() {
$stream = stream_context_create(array("ssl" => array("capture_peer_cert" => true)));
$read = @stream_socket_client('ssl://' . parse_url(home_url(), PHP_URL_HOST) . ':443', $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $stream);
if (!$read) {
wpmonitor_send_alert('Не удалось проверить SSL сертификат: ' . $errstr);
return;
}
$cert = stream_context_get_params($read)['options']['ssl']['peer_certificate'];
$cert_info = openssl_x509_parse($cert);
$expiry_timestamp = $cert_info['validTo_time_t'];
$days_left = ($expiry_timestamp - time()) / 86400;
if ($days_left < 30) {
wpmonitor_send_alert('SSL сертификат истекает через ' . floor($days_left) . ' дней');
}
}
Мониторинг битых ссылок
Ошибки 404 снижают SEO и ухудшают пользовательский опыт. Для регулярной проверки битых ссылок можно использовать плагин Broken Link Checker. Он автоматически сканирует сайт и уведомляет об ошибках в админке и по почте.
Использование WPSHOP для расширенного мониторинга
Если хотите более продвинутые инструменты, обратите внимание на Clearfy Pro для оптимизации и очистки сайта, а также на WP Umbrella для комплексного мониторинга с удобной панелью и отчётами.
Выводы и рекомендации
Автоматический мониторинг сайта на WordPress — это неотъемлемая часть поддержки стабильной работы и безопасности. В статье мы рассмотрели несколько вариантов — от простых плагинов до собственных скриптов с использованием WP-Cron и стандартных средств языка PHP. Выбирайте подходящий подход в зависимости от ваших навыков и требований.
Настройте регулярные проверки доступности, ошибок PHP, SSL-сертификата и битых ссылок, чтобы предупреждать проблемы до того, как они затронут посетителей и поисковые системы.