动态删除重复的日志消息
Dynamically remove duplicate log messages
最近我们有一条消息在几分钟内填满了 /var/log/libvirt/qemu/.log,其中重复一行导致我们的系统因根分区被填满而崩溃(几分钟内超过 20 Gig)。
"block I/O error in device 'drive-virtio-disk0': Operation not permitted (1)"
有没有办法确保不将重复的行推送到日志中,或者有办法限制该目录被填满? Logstash maxsize 对我们不起作用,因为我们 运行 它在每日 cronjob 上。
这取决于您使用的日志实用程序(rsyslog 或 syslog-ng)
Rsyslog 可以通过添加以下行来删除重复的消息:
"last message repeated 3044 times"。
要启用此选项,您应该添加:
$RepeatedMsgReduction on
到/etc/rsyslog.conf
我不知道 syslog-ng 是否可以减少这种减少。
syslog-ng 和 rsyslog 都可以完全删除匹配某些模式的行:
rsyslog - 查看本手册:http://www.rsyslog.com/discarding-unwanted-messages/
syslog-ng - 查看过滤器。有一些例子如何做到这一点:https://serverfault.com/questions/540038/excluding-some-messages-from-syslog-ng
最近我们有一条消息在几分钟内填满了 /var/log/libvirt/qemu/.log,其中重复一行导致我们的系统因根分区被填满而崩溃(几分钟内超过 20 Gig)。
"block I/O error in device 'drive-virtio-disk0': Operation not permitted (1)"
有没有办法确保不将重复的行推送到日志中,或者有办法限制该目录被填满? Logstash maxsize 对我们不起作用,因为我们 运行 它在每日 cronjob 上。
这取决于您使用的日志实用程序(rsyslog 或 syslog-ng)
Rsyslog 可以通过添加以下行来删除重复的消息: "last message repeated 3044 times"。 要启用此选项,您应该添加:
$RepeatedMsgReduction on
到/etc/rsyslog.conf
我不知道 syslog-ng 是否可以减少这种减少。
syslog-ng 和 rsyslog 都可以完全删除匹配某些模式的行:
rsyslog - 查看本手册:http://www.rsyslog.com/discarding-unwanted-messages/
syslog-ng - 查看过滤器。有一些例子如何做到这一点:https://serverfault.com/questions/540038/excluding-some-messages-from-syslog-ng