You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含“test”的$msg过滤规则未生效,事件仍被写入磁盘求助

解决rsyslog丢弃特定文本事件无效的问题

排查配置问题

1. 避免默认规则干扰

rsyslog默认配置(如/etc/rsyslog.conf或/etc/rsyslog.d/下的其他文件)可能自带输出动作,若你的丢弃规则晚于这些默认动作执行,事件会先被写入磁盘再触发丢弃逻辑。需确保自定义丢弃规则优先于所有输出动作加载。

2. 修正Ruleset配置

你的第一个ruleset配置存在变量使用错误与逻辑冗余,调整后如下:

ruleset(name="test_sort") {
    if ($msg contains "test") then {
        stop  # 直接丢弃包含test的事件
    }
    # 仅处理不包含test的事件
    set $!host = $myhostname;
    action(type="omfile" dynafile="format")
}

input(type="impudp" port="5000" ruleset="test_sort")

注意:$$myhostname需改为$myhostname,双重$是错误的变量引用方式。

3. 传统Filter规则的正确写法

第二个规则:msg, contains, "test" stop必须放在所有输出规则之前,示例:

# 先执行丢弃逻辑
:msg, contains, "test" stop
# 再定义正常输出规则
*.* /var/log/syslog

验证配置

  • 重启rsyslog服务:systemctl restart rsyslog
  • 发送测试事件:logger -n 127.0.0.1 -P 5000 "this is a test message"
  • 检查目标日志文件,确认包含"test"的事件未被写入

内容的提问来源于stack exchange,提问作者MrMr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:50:43