我有一个 syslog-ng,它接收了太多日志,我正在尝试使用某种过滤器对它们进行“采样”。我假设使用类似 log { source(s_udp514); filter(every XXmin); destination(d_udp514); }; 的内容编辑 /etc/syslog-ng/syslog-ng.conf
过滤器(每 15 分钟)将仅在 XX 分钟内写入目的地。你知道我该如何实现吗?
答案1
过滤modulate()
器允许您指定时间间隔,并且只允许消息以特定的间隔通过。
例子:
source s_udp514 {
# Your source configuration here
};
filter f_modulate {
modulate(interval 15m);
};
destination d_udp514 {
# Your destination configuration here
};
log {
source(s_udp514);
filter(f_modulate);
destination(d_udp514);
};
在此示例中,modulate()
过滤器配置了 15 分钟间隔。日志语句使用s_udp514 source
,应用f_modulate
过滤器,并将过滤后的消息发送到d_udp514
目标。
答案2
可以通过根据时间宏的值(例如${R_MIN}
、${R_HOUR}
或 )进行过滤来实现类似的目的${R_UNIXTIME}
。