如何通过rsyslog.conf将/var/log/yum.log转发至远程日志服务器?
如何通过rsyslog.conf将/var/log/yum.log转发至远程日志服务器?
兄弟,我来帮你捋捋这个问题,你遇到的情况在RHEL7里挺常见的,主要有两种解决思路,咱们一步步来排查和配置:
思路一:让rsyslog直接监控并转发yum.log文件
你之前的配置缺了几个关键参数,导致监控没生效,完整的配置应该这样做:
创建专属配置文件(推荐,避免污染主配置)
不要直接改/etc/rsyslog.conf,而是在/etc/rsyslog.d/下新建一个90-yum-forward.conf文件(数字前缀确保它晚于其他配置加载):# 定义要监控的yum日志文件 $InputFileName /var/log/yum.log # 给日志打标签,方便识别来源 $InputFileTag yum: # 记录监控的位置,防止重复发送日志 $InputFileStateFile stat-yum # 设置日志级别 $InputFileSeverity info # 设置日志设施 $InputFileFacility local2 # 启动文件监控 $InputRunFileMonitor # 将local2设施的所有日志转发到远程服务器(UDP用@,TCP用@@) local2.* @your-remote-log-server-ip:514重启rsyslog服务
systemctl restart rsyslog测试配置
安装一个小软件包触发yum日志:yum install -y tree然后去远程日志服务器检查是否收到带
yum:标签的日志。
思路二:让yum直接把日志发送到syslog(同时写入本地messages和远程)
如果你希望yum日志同时出现在/var/log/messages里,还能转发到远程,可以修改yum的配置:
编辑yum主配置文件
打开/etc/yum.conf,在[main]段落添加以下内容:syslog_ident=yum syslog_facility=local2 syslog_level=info配置rsyslog转发规则
同样在/etc/rsyslog.d/90-yum-forward.conf里添加转发规则(和思路一的最后一行一样):local2.* @your-remote-log-server-ip:514重启rsyslog
systemctl restart rsyslog之后yum的操作日志会同时写入
/var/log/yum.log和syslog,远程服务器也能收到。
常见问题排查
如果还是不行,检查这几点:
- 远程服务器是否开放端口? 确保远程日志服务器的514端口(UDP/TCP)没被防火墙拦截,且rsyslog配置了接收日志(比如远程服务器的rsyslog.conf里有
$ModLoad imudp和$UDPServerRun 514)。 - SELinux限制? RHEL7的SELinux默认可能阻止rsyslog发送网络日志,临时关闭测试:
setenforce 0,如果能发送了,就永久开启权限:setsebool -P rsyslog_network_connect 1。 - 查看rsyslog自身日志 检查
/var/log/messages或/var/log/rsyslog.log,看有没有报错信息,比如文件权限问题、网络连接失败等。
备注:内容来源于stack exchange,提问作者Umang




