rsyslog 没有 Config.Enabled 指令,其模块启用依赖 $ModLoad 或 module(load="...") 显式声明;配置分段通过 $IncludeConfig、ruleset 隔离及 /etc/rsyslog.d/ 下职责分明的文件实现。

rsyslog 并没有 Config.Enabled 这个指令。它不是 rsyslog 的合法配置语法,也不出现在任何官方文档、模块说明或配置示例中。
为什么找不到 Config.Enabled?
rsyslog 的模块启用机制是基于 加载指令($ModLoad 或 module(load=...)),而非布尔型开关如 Config.Enabled。它的配置逻辑是“显式声明即启用”,不存在统一的启用/禁用开关指令。
常见混淆来源可能是:
- 将 systemd 的
systemctl enable rsyslog误认为 rsyslog 配置项; - 把某些第三方管理工具(如 Ansible role 或 Web 控制台)自定义的变量名当成了 rsyslog 原生命令;
- 与 logrotate、firewalld 等其他服务中类似命名的配置项混淆。
rsyslog 真正的模块化分段配置方法
rsyslog 原生支持模块化、分段式配置,靠的是三类标准机制:
-
模块加载控制:用
$ModLoad imtcp或module(load="imtcp")显式启用输入模块;注释掉即禁用。 -
配置文件拆分:主配置
/etc/rsyslog.conf中包含$IncludeConfig /etc/rsyslog.d/*.conf,所有.conf文件按字典序加载,便于按功能(如 network.conf、audit.conf、custom-app.conf)分段管理。 -
规则集隔离:用
ruleset(name="remote") { ... }定义独立规则集,再通过input(type="imtcp" ruleset="remote")绑定模块与规则,实现逻辑解耦。
推荐的分段实践结构
在 /etc/rsyslog.d/ 下建立清晰分工的配置文件:
-
01-global.conf:全局参数($WorkDirectory、$MaxMessageSize); -
10-inputs.conf:启用并配置 imudp/imtcp/imjournal 等输入模块; -
20-templates.conf:定义日志路径模板(如远程主机目录、按日期归档); -
30-rules.conf:核心 selector+action 规则,可引用前述模板; -
99-local-app.conf(可选):为特定应用(如 nginx、java)添加 local7.* 等自定义设备规则。
每个文件职责单一,修改后只需 systemctl restart rsyslog,无需全局重写。
验证配置是否生效
避免凭空猜测模块状态:
- 查看已加载模块:
rsyslogd -v | grep "loaded module"; - 检查语法错误:
rsyslogd -N1(返回 0 表示无误); - 确认监听端口:
ss -tuln | grep ':514'; - 观察日志输出:
tail -f /var/log/messages | grep rsyslog。


















