suricata利用logrotate切日志
2020-08-18 本文已影响0人
明翼
suricata的默认日志,比如eve.json等日志是没有按照时间切割的,也没有按照大小切割,就一个文件,需要对这些日志文件进行处理和删除的时候非常不方便,如果不想通过改源码的方式去切割日志的话,可以采用logrotate进行日志的切分.
一 logrotate
logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
1.1 安装
我们所用系统是centos,默认已经安装,如果没有安装,可以通过命令
yum install -y logrotate
配置文件:
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate 转储次数,超过将会删除最老的那一个
missingok 忽略错误,如“日志文件无法找到”的错误提示
dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期
compress 通过gzip 压缩转储旧的日志
delaycompress 当前转储的日志文件到下一次转储时才压缩
notifempty 如果日志文件为空,不执行切割
sharedscripts 只为整个日志组运行一次的脚本
prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
size size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
二 suricata 配置如下
./log/suricata/*.log ./log/suricata/*.json {
daily
missingok
rotate 5
compress
delaycompress
minsize 500k
sharedscripts
postrotate
/bin/kill -HUP `cat ./run/suricata.pid 2> /dev/null` 2> /dev/null || true
endscript
}
说明:
daily :按照天转存
missingok: 忽略错误
rotate 5: 最多保存5个
compress:对旧日志进行压缩
minsize : 最小500k
最后是通过/bin/kill -HUP `cat ./run/suricata.pid 2> /dev/null` 2> /dev/null || true
给suricata发信号,suricata后续会生成新的文件。
运行下如下命令,就会按照要求切分:
logrotate -f suricata.logrotate
这种长期运行的话放进crontab里面即可。