fail2ban 非标准日志文件轮换

fail2ban 非标准日志文件轮换

我正在运行一个应用程序来管理服务器上的 Apache 访问日志。该应用程序根据大小设置轮换日志,并通过附加日期来命名日志。

example: access_log.2020-01-10-11_06_38 access_log.2020-01-10-11_44_41 access_log.2020-01-10-12_45_37

我相信应用程序在达到指定文件大小时会关闭该文件,然后打开一个新文件。

在我的 fail2ban 配置中,我的路径设置如下:

logpath = logs/apache/access_log.????-??-??-??_??_??

当我启动/重新启动 fail2ban 时,一切都运行良好,并读取数据,直到创建新文件并将日志移动到新创建的文件。看来 fail2ban 看不到该文件,在重新启动/重新加载之前没有任何内容可读取。

我知道 fail2ban 使用“后端”设置来监控文件,有没有办法设置它以便它监控目录中的新文件或我可以结合使用 fail2ban 来适应我的情况的其他技术?

谢谢!

答案1

供参考,

我通过创建一个 bash 脚本解决了这个问题,该脚本使用“inotifywait”来监视日志目录中的更改,然后将符号链接更新为最新文件。fail2ban 中的日志路径指向符号链接。

例如:fail2ban 日志路径:/var/logs/apache/fail2banwatch

#!/bin/sh
MONITORDIR="/var/logs/apache/"
inotifywait -m -r -e create --format '%w%f' "${MONITORDIR}" | while read NEWFILE


do
if [[ ${NEWFILE} =~ \/var\/logs\/apache\/access_log\.????\-??\-??\-??_??_?? ]]
then

    ln -sfn ${NEWFILE} /var/logs/apache/fail2banwatch
        #echo ${NEWFILE}
fi
done

相关内容