Проверка количества задач в wp-cron в WordPress с помощью WP-CLI + Monit + Email Alerts

Монит является очень гибким инструментом мониторинга, помогает отслеживать работу Ваших услуг. Он может быть использован для отправки уведомлений, когда процессы аварийно останавливаются, то автоматически перезапускать их. На всех VPS и выделенных серверах мы создали для своих клиентов настройку Monit для упреждающего мониторинга.
Wp-cron может иногда останавливаться и появляются тысячи скрытых cronjobs, которые не работают. Вместо мониторинга вручную, эта статья покажет вам, как использовать Bash и WP-CLI, чтобы подсчитать, сколько cronjobs в очереди wp-cron. Далее мы настроим Monit для использования скрипта Bash и оповещение по электронной почте, если количество cronjobs в очереди превышает определенное число, которое вы укажете. Этот пост основан на том, как контролировать размер папки WordPress с Monit.
Проверка количества задач в wp-cron в WordPress с помощью WP-CLI + Monit + Email Alerts
Эта команда WP-CLI перечислит события в wp-cron
wp cron event list
Для того, чтобы получить счетчик, можно удалить столбец заголовки строки из таблицы sed
а затем сосчитать линии с wc
wp cron event list --allow-root --skip-plugins --skip-themes | sed -n '1!p' | wc -l
Создание сценария
mkdir ~/scripts nano ~/scripts/wpcronchecker.sh
Вставить этот скрипт
#!/bin/bash # Автор from https://andreyex.ru #захват первой переменной WPPATH=$1 #захват второй переменной CRONTHRESHOLD=$2 #взять количество cronjob WPCRONCOUNT=$(wp cron event list --path=$WPPATH --allow-root --skip-plugins --skip-themes | sed -n '1!p' | wc -l) #вывод задачи cron для того чтобы Monit мог захватить его echo "$WP_PATH has $WPCRONCOUNT cronjobs" #предоставить код состояния для оповещения if [[ $WPCRONCOUNT -gt $(( $CRONTHRESHOLD )) ]]; then exit 1 fi
Сделайте скрипт исполняемым
chmod +x wpcronchecker.sh
Тест работает скрипт, передавая свой путь к папке установки WordPress в качестве первого параметра и число cronjobs, при превышении которого должно вызвать тревогу
bash wpcronchecker.sh /var/www/andreyex.ru/ 50
Вы получите этот выход
/var/www/andreyex.ru/ has 12 cronjobs
Теперь мы можем настроить Monit для использования скрипта Bash и отобразит его вывод
Настройка Monit для проверки wp-cron
Если у вас есть модульная система для создания конфигураций MONIT, как указано в руководстве по установке MONIT, создайте новый фрагмент
sudo nano /etc/monit/conf.d/wpcroncheck
Если WordPress установка в /var/www/andreyex.ru
имеет cronjobs в очереди больше, чем 50
, мы получим уведомление по электронной почте.
Тогда каждые 1440 циклов линии означает, что Monit будет проверять каждый раз с интервалом 1440, определенный в /etc/monit/monitrc
check program wp-cron with path "/root/scripts/wpcronchecker.sh /var/www/andreyex.ru/ 50" every 1440 cycles if status != 0 then alert
Ctrl + X, Y и Enter, чтобы сохранить и выйти.
Синтаксис тестирования Monit действует с нашим новым добавлением проверки дискового пространства и оповещения.
sudo monit -t
Обновите Monit если не было никаких ошибок
sudo service monit reload
Проверьте в Monit и вы увидите работу wp-cron 🙂