使用 SQL 查询和 Nagios 检查 Wordpress 上的评论

Check comments on Wordpress with SQL query and Nagios

对于我的家庭作业项目,我需要使用 Nagios 服务器监督 Web 服务器和上面的 wordpress 网站。两者都是 LAMP Debian 9 服务器,所有设置和工作。

我正在使用 Nagios XI 和 MariaDB 以及默认的 wordpress 数据库解释 here

对于最后一部分,我需要检查过去 4 小时内发布的所有评论,以避免垃圾邮件活动。我需要在过去 4 小时内对 4 条评论设置警告阈值,并在过去 4 小时内对 10 条评论设置临界阈值。

我找到了 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

这就是我所在的位置,但该方法是免费的,所以如果您知道此命令的完整程度(请提供一些基本解释),那就太好了。但是,如果您知道其他方法,我也很乐意看到它们。谢谢。

我没有时间检查所有 Wordpress 数据库架构。但是根据您的 SQL 查询,我认为您需要关注

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

更新

必须补充说我不知道​​ MySQL 语法。正确的应该是

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

这将计算过去 4 小时内评论归因于用户 123 的情况:

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

(警告:在没有看到 SHOW CREATE TABLE 的情况下,我无法确定存在哪些列。如果您真的在 table 和列名中使用破折号 (-),请务必在这样的名字周围加上反义词。)

0h400 不为 MySQL 所知。

MySQL有NOW(),这可能就是你所说的$current_time

日期时间算法最好按照我在上面显示的模式来完成SQL。

好的,在 Ярослав Машко 的帮助下,我找到了完美的命令。 awnsered 给出了过去 4 小时内发布的评论列表。这并不是完全需要的,因为 Nagios 插件无法使用它来设置阈值警报。因此,为了获得过去四个小时内的评论数量,我在 SQL 请求中添加了一个 count() 。这对我来说是个好方法:

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

我已将其放入 check_mysql_query 插件(Nagios XI 中的本机插件)并且运行良好。感谢您的支持。