在日志文件中存储有一个IP列表(其数量每隔几分钟更改一次)。日志文件仅包含唯一IP(排序-u):
IP-Pool.log [Example]:
192.168.1.1
192.168.1.2
10.1.1.0
.
.
我想用rsyslog过滤发生的连接事件并按以下顺序对它们进行排序:
因此,我必须将IP放入一个数组中,以便可以对它们进行比较,但是我还没有找到一种方法。
if $msg contains 'connection-event-id' then {
if $msg contains 'Array[IP-Pool-List] then {
-/var/log/event_contains_ip.log
STOP
}
else{
-/var/log/event_doesnt_contain_ip.log
STOP
}
}
由于文件每隔几分钟更改一次,我还必须重新启动rsyslogd服务以刷新阵列[IP-Pool-List]吗?
是否可以使用rsyslog解决此问题,或者有更简单/更好的方法来做到这一点?
编辑
我使用crontab和inotifywait来使IP-Pool-File保持最新。
@reboot inotifywait -q -m -e modify /var/log/client-ips.log |
while read -r filename events; do sort -u /var/log/client-ips.log
-o /var/log/ips-unique.log ;done
我还通过邮件发送到“ rsyslog-community”询问了此问题,其联系邮件列在rsyslog文档(https://lists.adiscon.net/mailman/listinfo/rsyslog)的底部 他们给我建议使用“查找表”来解决此问题。当前正在阅读如何正确使用它们。由于我学习速度较慢,因此需要一段时间。
编辑2
一个新的计划开始形成:
希望它会以这种方式工作。
新年快乐 和平使者