Rsyslog 8.24的RainerScript控制结构失效问题求助
解决rsyslog 8.24分离xCAT日志为空的问题
问题排查与修复步骤:
验证配置语法
先检查rsyslog配置是否存在语法错误,执行:rsyslogd -N1若输出有错误提示,根据提示修正配置。
检查日志目录/文件权限
确保rsyslog进程有读写目标日志目录的权限:# 若目录不存在则创建 mkdir -p /var/log/xcat # 设置正确权限(rsyslog通常以syslog用户运行) chown syslog:adm /var/log/xcat chmod 750 /var/log/xcat如果日志文件已存在,也要确保权限正确:
chown syslog:adm /var/log/xcat/nagios.log /var/log/xcat/cluster.log调整配置文件加载顺序
rsyslog会按字母顺序加载/etc/rsyslog.d/下的配置文件,若你的配置被其他规则抢先处理并终止,会导致日志无法写入目标文件。将配置文件重命名为00-xcat.conf(确保它最先被加载),避免被后续规则拦截。修正条件匹配逻辑
部分场景下$programname的匹配可能不准确(比如xCAT日志的syslogtag带冒号),改用$syslogtag匹配,并调整条件结构:template(name="xCATTraditionalFormat0" type="string" string="%timegenerated% %HOSTNAME% %syslogtag% %syslogseverity-text:::uppercase% %msg:::drop-last-lf%\n") # 分离含"nagios"的xCAT日志 if ($syslogtag startswith "xcat") then { if ($msg contains "nagios") then { action(type="omfile" file="/var/log/xcat/nagios.log" template="xCATTraditionalFormat0") } else { action(type="omfile" file="/var/log/xcat/cluster.log" template="xCATTraditionalFormat0") } stop }启用调试模式排查细节
临时启动rsyslog调试模式,查看日志处理过程:systemctl stop rsyslog rsyslogd -d观察输出中是否有匹配xCAT日志的记录,以及是否存在权限拒绝、条件不匹配等错误信息。
生效配置
修改配置后,重启rsyslog服务:
systemctl restart rsyslog
内容的提问来源于stack exchange,提问作者Marek Štekláč
相关产品推荐
相关产品推荐

