rsyslog基于udp发送接收日志

rsyslog 配置远程日志发送和接收(基于 UDP)


一、架构思路

[Client 节点 rsyslog] --UDP/514--> [Log Server rsyslog] --> [日志存储文件 或 后端系统]

二、日志接收端(Log Server)配置

  1. 编辑 /etc/rsyslog.conf/etc/rsyslog.d/remote.conf
    添加 UDP 接收模块和监听端口:

    1
    2
    3
    4
    # 加载 UDP 模块
    module(load="imudp")
    # 监听 514 端口
    input(type="imudp" port="514")
  2. 配置存储规则(例如按来源主机写日志):

    1
    2
    # 按主机名存放日志
    *.* /var/log/remote/%HOSTNAME%/messages.log

    👉 %HOSTNAME% 会自动替换成客户端主机名。

  3. 重启服务:

    1
    2
    systemctl restart rsyslog
    systemctl enable rsyslog
  4. 防火墙放行:

    1
    2
    firewall-cmd --add-port=514/udp --permanent
    firewall-cmd --reload

三、日志发送端(Client)配置

  1. 编辑 /etc/rsyslog.conf/etc/rsyslog.d/remote.conf
    添加远程日志目标:

    1
    2
    # 发送所有日志到远程 UDP 514 端口
    *.* @192.168.1.100:514
    • 单个 @ 表示 UDP
    • @@ 表示 TCP

    如果你只想转发特定 facility,比如只转发 auth:

    1
    authpriv.*  @192.168.1.100:514
  2. 重启服务:

    1
    systemctl restart rsyslog

四、验证

  1. 在客户端生成日志:

    1
    logger -p local0.info "This is a test log from client"
  2. 在服务端查看:

    1
    tail -f /var/log/remote/<client-host>/messages.log

五、流程图

2eb9e9d7565ee54ecf1f1a67ae2b05ae.png


⚠️ 注意事项:

  • UDP 无连接,日志可能丢失;生产推荐用 TCPRELP
  • 如果集中日志量大,UDP 可能导致 包丢失、日志缺失
  • 对安全要求高的场景,考虑 **加密传输 (TLS)**。