![有没有更好的方法来处理 ossec-logcollector?](https://linux22.com/image/635891/%E6%9C%89%E6%B2%A1%E6%9C%89%E6%9B%B4%E5%A5%BD%E7%9A%84%E6%96%B9%E6%B3%95%E6%9D%A5%E5%A4%84%E7%90%86%20ossec-logcollector%EF%BC%9F.png)
我一直致力于将应用程序日志与 ossec logcollector 集成。
我已经成功创建、解码命令、规则等,并且一切正常并触发触发器。
但是我们的应用程序会轮换日志,直到触发特定事件时才会创建日志。并且 ossec-logcollector 不会读取新文件。
我可以尝试多种方法,但都不太理想。
- 每天接触文件并重启 ossec-logcollector。
- Cronjob 每 10 分钟重启一次 ossec-logcollector [好的,这将再次是非实时的]。
- 编写脚本检查这些文件何时创建,如果是新文件则重新启动 ossec-logcollector。我还没有弄清楚,但我认为这是可能的。
- 使用 wc -l 使用 ossec 命令检查差异,如果有新文件,则将脚本写入触发规则并重新启动 ossec-logcollector。
但是在 ossec 中有没有更好的方法可以做到这一点?或者有没有办法让 ossec-logcollector 也检查新文件?
答案1
我遇到了同样的问题,我建议使用下面的脚本,或者检查日志保留发生时是否有日志条目,并根据此条目创建解码器/规则/主动响应,从而重新启动日志收集器
# cat /var/ossec/scripts/logcheckerd
#!/bin/bash
# Author:0xFFFFFF www.white-hacker.org
old_data=$(ls /var/log/ossec/|md5sum|cut -d " " -f 1)
while true; do
sleep 1
new_data=$(ls /var/log/ossec/|md5sum|cut -d " " -f 1)
if [ "$new_data" != "$old_data" ]; then
/var/ossec/bin/ossec-control restart
old_data=$(printf $new_data)
fi
done
# setsid /var/ossec/scripts/logcheckerd >/dev/null 2>&1 < /dev/null
0xFFFFFF