使用 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 中的本机插件)并且运行良好。感谢您的支持。
对于我的家庭作业项目,我需要使用 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 中的本机插件)并且运行良好。感谢您的支持。