温馨提示×

linux syslog怎么转发

小樊
60
2026-09-01 19:18:39
栏目: 智能运维

在 Linux 中,syslog 转发通常指把本机日志发送到远程日志服务器(如集中式日志系统)。不同发行版用的 syslog 实现不同,常见有:

  • rsyslog(最常用,RHEL/CentOS/Ubuntu 默认)
  • syslog-ng
  • systemd-journald + rsyslog

下面按常见方案说明。


一、使用 rsyslog 转发(推荐)

1️⃣ UDP 转发(简单、不可靠)

编辑配置文件:

/etc/rsyslog.conf
# 或
/etc/rsyslog.d/forward.conf

添加:

*.* @remote-log-server:514

说明:

  • @ = UDP
  • @@ = TCP
  • remote-log-server 可以是 IP 或域名

2️⃣ TCP 转发(可靠)

*.* @@remote-log-server:514

3️⃣ 只转发指定日志

auth.* @@log.example.com:514
*.err @log.example.com:514

4️⃣ 使用 TLS 加密(生产推荐)

module(load="imtcp")
module(load="omrelp")

*.* action(type="omrelp"
           target="log.example.com"
           port="2514"
           tls="on"
           tls.caCert="/etc/rsyslog/ca.pem")

重启服务:

systemctl restart rsyslog

二、syslog-ng 转发

配置文件:

/etc/syslog-ng/syslog-ng.conf

示例(UDP):

destination d_remote {
    udp("192.168.1.100" port(514));
};

log {
    source(s_src);
    destination(d_remote);
};

TCP:

destination d_remote {
    tcp("192.168.1.100" port(514));
};

重启:

systemctl restart syslog-ng

三、systemd journal 转发到 syslog

如果你只用 journalctl,需要 rsyslog 接收:

/etc/rsyslog.conf
module(load="imjournal")

或者把 journal 转发到远程:

journalctl -f | nc log.server 514

(不推荐生产)


四、远程日志服务器接收配置(示例)

rsyslog 服务端

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

保存日志:

*.** /var/log/remote.log

五、常见排错

# 查看服务状态
systemctl status rsyslog

# 测试端口
nc -vz log.server 514

# 防火墙
firewall-cmd --add-port=514/udp --permanent

六、总结

方式 适用场景
UDP 内网、性能优先
TCP 稳定传输
RELP/TLS 生产、安全
syslog-ng 复杂规则

如果你告诉我:

  • 发行版(CentOS / Ubuntu / Alpine)
  • 是否要加密
  • 转发到哪(SIEM / ELK / 自搭)

我可以给你精准配置示例。

0 踩