动态删除重复的日志消息

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 都可以完全删除匹配某些模式的行: