温馨提示×

linux syslog怎样转发

小樊
42
2026-09-23 00:26:05
栏目: 智能运维

在 Linux 中,syslog 转发通常指把本机日志发送到远程日志服务器(或集中式日志系统,如 ELK、Graylog、Splunk 等)。常见实现方式有 rsyslog 和 syslog-ng,下面以最主流的 rsyslog 为例说明。


一、使用 rsyslog 转发日志(最常用)

1️⃣ 安装 rsyslog

# CentOS / RHEL
yum install rsyslog

# Ubuntu / Debian
apt install rsyslog

启动服务:

systemctl enable --now rsyslog

2️⃣ 配置转发(客户端)

编辑配置文件(推荐新建文件):

vim /etc/rsyslog.d/remote.conf

✅ 转发所有日志(UDP)

*.* @192.168.1.100:514

✅ 转发所有日志(TCP,更可靠)

*.* @@192.168.1.100:514

✅ 只转发特定日志(如 auth)

auth.* @@192.168.1.100:514

✅ 使用自定义模板(可选)

template(name="RemoteFormat" type="string"
  string="%TIMESTAMP% %HOSTNAME% %syslogtag% %msg%\n")

*.* @@192.168.1.100:514;RemoteFormat

重启 rsyslog:

systemctl restart rsyslog

3️⃣ 配置日志服务器(接收端)

在日志服务器上:

vim /etc/rsyslog.conf

启用 UDP / TCP 接收:

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

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

按主机分文件保存:

template(name="RemoteHost" type="string"
  string="/var/log/remote/%HOSTNAME%.log")

*.* ?RemoteHost

重启:

systemctl restart rsyslog

二、使用 syslog-ng 转发(备选)

客户端

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

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

三、转发到外部系统(常见场景)

✅ 转发到 Logstash

*.* @@logstash.example.com:5000

✅ 转发到 Splunk / Graylog

  • Splunk:UDP/TCP 514
  • Graylog:GELF TCP/UDP

四、防火墙注意

firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --reload

五、排错命令

logger "test message"
tail -f /var/log/messages
tcpdump -i eth0 port 514

如果你能告诉我:

  • 用的是 哪类 Linux
  • 是 UDP 还是 TCP
  • 转发到 什么系统

我可以给你一份精确配置。

0 踩