Rsyslog配置失效排查求助:无法捕获系统日志
Rsyslog无日志采集问题排查与修复
一、配置文件中的明显错误
先修正配置里的语法和逻辑问题:
- 第一个IP条件缺少闭合单引号:原代码
if ($fromhost-ip == 'x.x.x.x) then ...需改为if ($fromhost-ip == 'x.x.x.x') then ... - PureStorage日志路径错误:
/X.X.X.X/syslog/admin/nas/purestorage.log用了IP作为路径前缀,若为本地目录需改为/test/syslog/admin/nas/purestorage.log(和前两个日志路径保持一致) - 规则逻辑冗余:最后一个
if判断可简化为默认动作,避免条件覆盖不全
修正后的核心规则集配置:
ruleset(name="nas") { if ($fromhost-ip == 'x.x.x.x') then /test/syslog/admin/nas/nasperge.log & stop; if ($fromhost-ip == 'x.x.x.x') then /test/syslog/admin/nas/nastronote.log & stop; # 所有未匹配的日志默认写入purestorage.log action(type="omfile" file="/test/syslog/admin/nas/purestorage.log") & stop; }
二、基础排查步骤
- 检查服务状态:执行
systemctl status rsyslog,确认服务是否正常运行,排查启动失败报错 - 验证端口监听:执行
ss -ulnp | grep 514,确认UDP 514端口被rsyslog进程占用 - 检查目录权限:确认
/test/syslog/admin/nas/存在,且rsyslog运行用户(通常为syslog)有读写权限,权限不足时执行chown -R syslog:syslog /test/syslog/admin/nas/ - 发送测试日志:在目标主机执行
logger -n <你的Rsyslog服务器IP> -P 514 "测试日志采集",检查对应日志文件是否生成内容 - 查看Rsyslog自身日志:执行
journalctl -u rsyslog或查看/var/log/messages,查找配置加载失败、权限不足等关键报错
三、进阶排查方法
- 开启调试模式:修改Rsyslog启动参数,添加
-d选项(例如在/etc/systemd/system/rsyslog.service的ExecStart中修改),重启服务后查看调试输出,跟踪日志接收与处理流程 - 确认模块加载:在配置开头添加
module(load="imudp"),确保UDP输入模块已启用 - 测试规则触发:在规则集中临时添加
action(type="omfile" file="/test/syslog/test.log"),验证规则集是否被正确调用
内容的提问来源于stack exchange,提问作者Khalis
相关产品推荐
相关产品推荐

