Проверьте комментарии на Wordpress с SQL-запросом и Nagios - PullRequest
0 голосов
/ 07 июля 2019

Для моего проекта домашней работы мне нужно контролировать веб-сервер и веб-сайт WordPress на нем с помощью сервера Nagios.Оба сервера LAMP Debian 9, все настроено и работает.

Я использую Nagios XI и MariaDB со стандартной базой данных wordpress объяснение здесь .

Для последнихЧасть 1 Мне нужно проверить все комментарии, опубликованные за последние 4 часа, чтобы избежать спам-кампании.Мне нужно установить порог предупреждения для 4 комментариев за последние 4 часа и критический порог для 10 комментариев за последние 4 часа.

Я обнаружил плагин check_mysql_query.pl для Nagios.Но я немного растерялся, заставляя работать с SQL-запросом.Согласно документу WordPress, я пытаюсь что-то вроде:

SELECT comment-date FROM wp-comments WHERE comment-data > ($current_time - 4h00)

Я хочу извлечь количество новых комментариев, добавленных в базы данных за последние 4 часа.

Я не знаю синтаксис для($current_time - 4h00)

И для моей команды плагина у меня есть что-то вроде:

./check_mysql_query.pl -H 192.168.0.1 -u user -p password -d wordpress -q mysqlquery -w 4 -c 10

Вот где я, но метод бесплатный, так что если вы знаете, как выполнить эту команду (с некоторымиобъяснения основам пожалуйста), это здорово.Но если вы знаете другие способы сделать это, я был бы рад увидеть их тоже.Спасибо.

Ответы [ 3 ]

1 голос
/ 08 июля 2019

Хорошо, с помощью Ярослава Машко я нашел идеального командира. На что это было сделано, выдают список комментариев, опубликованных за последние 4 часа. В этом не было никакой необходимости, потому что плагины Nagios не могли выставлять предупреждение о пороге. Таким образом, чтобы получить количество комментариев за последние четыре часа, я добавил count () в запрос SQL. Это хороший способ для меня:

SELECT COUNT(c.comment_date) FROM wp_comments as c where hour(timediff( localtime(), c.comment_date ) ) < 4;

Я поместил это в плагин check_mysql_query (встроенный в Nagios XI), и он работает нормально. Спасибо за вашу поддержку.

0 голосов
/ 08 июля 2019

Это будет подсчитано, как комментарии приписываются пользователю 123 за последние 4 часа:

SELECT COUNT(*)
    FROM wp_comments
    WHERE comment_date > NOW() - INTERVAL 4 HOUR
      AND user_id = 123;

(Предупреждение: не видя SHOW CREATE TABLE, я не могу быть уверен в том, какие столбцы существуют. Если вы действительно используетеТире (-) в именах таблиц и столбцов, обязательно ставьте обратные символы вокруг такого имени.)

0h400 неизвестно MySQL.

MySQL имеет NOW(), чтовероятно, это то, что вы имели в виду $current_time.

Арифметика с датой и временем лучше всего выполняется по шаблону, который я показываю в приведенном выше SQL.

0 голосов
/ 07 июля 2019

У меня нет времени, чтобы проверить всю схему базы данных Wordpress.Но из вашего SQL-запроса, я думаю, вам нужно выполнить

select comment-date
from wp-comments
where hour( localtime() - comment-date ) < 4
;

update

Должно быть добавлено, что я не знаю синтаксис MySQL.Правильная вещь должна быть

select comment-date
from wp-comments
where hour(timediff( localtime(), comment-date ) ) < 4
;
...