You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过rsyslog.conf将/var/log/yum.log转发至远程日志服务器?

如何通过rsyslog.conf将/var/log/yum.log转发至远程日志服务器?

兄弟,我来帮你捋捋这个问题,你遇到的情况在RHEL7里挺常见的,主要有两种解决思路,咱们一步步来排查和配置:

思路一:让rsyslog直接监控并转发yum.log文件

你之前的配置缺了几个关键参数,导致监控没生效,完整的配置应该这样做:

  1. 创建专属配置文件(推荐,避免污染主配置)
    不要直接改/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
    
  2. 重启rsyslog服务

    systemctl restart rsyslog
    
  3. 测试配置
    安装一个小软件包触发yum日志:

    yum install -y tree
    

    然后去远程日志服务器检查是否收到带yum:标签的日志。

思路二:让yum直接把日志发送到syslog(同时写入本地messages和远程)

如果你希望yum日志同时出现在/var/log/messages里,还能转发到远程,可以修改yum的配置:

  1. 编辑yum主配置文件
    打开/etc/yum.conf,在[main]段落添加以下内容:

    syslog_ident=yum
    syslog_facility=local2
    syslog_level=info
    
  2. 配置rsyslog转发规则
    同样在/etc/rsyslog.d/90-yum-forward.conf里添加转发规则(和思路一的最后一行一样):

    local2.* @your-remote-log-server-ip:514
    
  3. 重启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

火山引擎 最新活动