在 Apache 日志中访问特定 URL 时发送电子邮件时发送的电子邮件过多

在 Apache 日志中访问特定 URL 时发送电子邮件时发送的电子邮件过多

在这个问题,找到了一种解决方案,可以在每次访问特定 URL(例如 )时自动发送电子邮件?src=foo,如 Apache 日志中所示:

tail -F -n0 /var/log/apache2/other_vhosts_access.log | grep --line-buffered "?src=foo" | \
        { while IFS= read -r line; do echo "$line" | mail [email protected]; done } &

但问题是,此页面上加载的任何其他资源(图像、图标等)?src=foo推荐人列也:

www.example.fr:80 111.111.111.111 - - [12/Sep/2017:17:30:32 +0200] "GET /images/P26372.jpg 
  HTTP/1.1" 200 86276 "http://example.fr/?src=foo" "Mozilla/5.0"

然后我用这种方法连续收到 15 封电子邮件。

如何限制对此做“消化”?

我考虑过限制对内部模式的搜索"GET ... HTTP",以便排除引用列中的结果,但如何做到这一点?

或者,是否可以每天只发送一封电子邮件两次,其中包含 的所有结果grep? (未发送电子邮件表示未找到任何内容)

答案1

有些日志扫描仪可以对其产生的噪音进行速率限制;我会用sec.pl然后按照以下方式进行配置

type=SingleWithThreshold
ptype=SubStr
pattern=?src=foo
desc=specific-url-thing
action=pipe 'that url thing happened' /usr/bin/mail -s url-thing [email protected]
window=86400
thresh=1

对于监视相关日志的守护进程实例。这应该立即触发,然后关闭一天;还有其他选项可以聚合点击量等,请参阅手册了解详细信息。

相关内容