在最后一次调用check_logwarn命令后添加以下日志行 -
[Tue Nov 22 11:04:03 2016] [hphp] [10755:7f41af3ff700:6272:000001] [] SlowTimer [2086ms] at runtime/ext_m
ysql: slow query: SELECT b.bannerid, b.campaignid FROM ox_banners b, ox_campaigns c WHERE b.campaignid =
c.campaignid AND (b.status = 0 OR b.`updated` >= now() - INTERVAL 7 DAY) AND (c.status = 0 OR c.`updated`
>= now() - INTERVAL 7 DAY) AND b.updated >= '2016-11-22 11:03:01';
以下logwarn命令查找SlowTimer
,找到匹配的日志,正如我所料(输出是在上次调用命令后添加的整个日志行) -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_hiphop_error /mnt/log/hiphop/error_`(date +'%Y%m%d')`.log ".*SlowTimer.*"
但是,以下查找SlowTimers
的命令也会找到匹配的日志,这是我不期望的 -
/usr/local/nagios/libexec/check_logwarn -d /tmp/logwarn_hiphop_error /mnt/log/hiphop/error_`(date +'%Y%m%d')`.log ".*SlowTimers.*"
我在https://regex101.com/上测试了正则表达式,/.*SlowTimer.*/g
匹配,而/.*SlowTimers.*/g
与任何内容都不匹配。我认为这是非常简单的正则表达式,并且在各种风格中的作用相似。
当命令找不到任何匹配时(例如,在上次调用后没有新的日志行时),这是我得到的输出 -
OK: No log errors found
当我寻找.*SlowTimers.*
时,我期待上面的输出。
请查看logwarn Manual以供参考。
答案 0 :(得分:0)
认为您可能需要使用-p
标志:
-p Change default match behavior to non-matching. By default, if a log message doesn't match any of the positive or negative patterns, it is considered a match. This flag reverses this behavior so that these messages are considered non-matches.
我也错了,但认为正则表达式可以简化为SlowTimers
而不是.*SlowTimers.*
。它未指定开始(^
)和结束($
),因此可能出现在文本的任何位置。