插件窝 干货文章 linux中怎么配置syslog实现日志转发

linux中怎么配置syslog实现日志转发

配置 syslog rsyslog server 402    来源:    2025-04-22

Linux 中配置 syslog 实现日志转发

Syslog 是 Linux 系统中标准的日志记录机制,可以通过配置实现日志的远程转发。以下是几种常见的 syslog 转发配置方法:

1. 使用 rsyslog (现代 Linux 发行版默认)

配置客户端(发送日志)

  1. 编辑 /etc/rsyslog.conf 文件:

    sudo vim /etc/rsyslog.conf
    
  2. 添加以下内容到文件末尾(将 your.log.server 替换为日志服务器IP或域名):

    *.* @your.log.server:514
    

    或使用TCP协议(更可靠但性能略低):

    *.* @@your.log.server:514
    
  3. 重启 rsyslog 服务:

    sudo systemctl restart rsyslog
    

配置服务器(接收日志)

  1. 编辑 /etc/rsyslog.conf

    sudo vim /etc/rsyslog.conf
    
  2. 取消注释以下行以启用UDP/TCP接收:

    # 启用UDP接收
    module(load="imudp")
    input(type="imudp" port="514")
    
    # 启用TCP接收
    module(load="imtcp")
    input(type="imtcp" port="514")
    
  3. 配置日志存储路径(可选):

    $template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
    *.* ?RemoteLogs
    
  4. 重启 rsyslog 服务:

    sudo systemctl restart rsyslog
    

2. 使用 syslog-ng (替代方案)

配置客户端

  1. 编辑 /etc/syslog-ng/syslog-ng.conf

    sudo vim /etc/syslog-ng/syslog-ng.conf
    
  2. 添加以下内容:

    destination remote_server { 
     syslog("your.log.server" transport("udp") port(514)); 
    };
    log { 
     source(src); 
     destination(remote_server); 
    };
    
  3. 重启 syslog-ng:

    sudo systemctl restart syslog-ng
    

3. 防火墙配置

确保服务器防火墙允许514端口(UDP/TCP):

# 对于firewalld
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload

# 对于iptables
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT

4. 高级配置选项

选择性转发

只转发特定级别的日志(如error及以上):

*.err @your.log.server:514

使用TLS加密(rsyslog)

# 在客户端配置
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /path/to/ca.pem
$ActionSendStreamDriverMode 1
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer your.log.server
*.* @@your.log.server:6514

验证配置

  1. 在客户端生成测试日志:

    logger "This is a test log message"
    
  2. 在服务器检查是否收到:

    tail -f /var/log/remote/client-hostname/syslog.log
    

通过以上配置,您可以在Linux系统中实现syslog日志的转发功能。