Ubuntu 24.04中rsyslog配置RainerScript无法向控制台广播紧急日志的问题求助
Ubuntu 24.04中rsyslog配置RainerScript无法向控制台广播紧急日志的问题求助
看起来你已经把规则触发的逻辑搞对了(确认了r_error规则集被调用),问题应该出在omusrmsg模块的配置或者权限上,咱们一步步排查:
1. 纠正omusrmsg的广播配置写法
你当前用的users="*"其实并不是omusrmsg实现全局广播的正确方式,这个模块专门提供了wall参数来模拟wall命令的广播功能。把你的规则集改成这样试试:
ruleset(name="r_error"){ action(type="omusrmsg" wall="on" ) }
wall="on"会直接向所有当前登录的用户发送广播消息,这比users="*"更可靠,因为后者可能会因为用户解析逻辑的问题失效。
2. 检查syslog用户的终端权限
Ubuntu里rsyslog默认以syslog用户运行,而终端设备(比如/dev/pts/0、/dev/tty1)的权限通常只允许所属用户和tty组写入。你需要把syslog用户加入tty组来获得写入权限:
sudo usermod -aG tty syslog
执行完后一定要重启rsyslog服务让权限生效:
sudo systemctl restart rsyslog
3. 确认测试场景的终端接收权限
- 如果你是通过SSH远程登录测试,要确保你的SSH会话没有禁用广播消息(有些终端工具或者SSH配置会屏蔽
wall类消息,建议先在本地物理终端测试看看)。 - 测试时要确保你处于登录状态的用户会话中,比如打开一个终端窗口保持登录,再运行测试命令。
4. 验证规则触发的细节(可选)
你可以在规则集里加一个文件输出动作,进一步确认消息确实到达了规则集:
ruleset(name="r_error"){ action(type="omfile" file="/var/log/test_error.log") action(type="omusrmsg" wall="on" ) }
测试后查看/var/log/test_error.log,如果日志成功写入,说明规则逻辑没问题,问题还是在omusrmsg的执行环节。
按照上面的步骤调整后,再用你的测试命令试试:
logger -p local0.err -t test_message "This is a test syslog message" -n 127.0.0.1
应该就能收到广播消息了。
备注:内容来源于stack exchange,提问作者ProTofik
相关产品推荐
相关产品推荐

