在 Linux 中,syslog 转发通常指把本机日志发送到远程日志服务器(或集中式日志系统,如 ELK、Graylog、Splunk 等)。常见实现方式有 rsyslog 和 syslog-ng,下面以最主流的 rsyslog 为例说明。
# CentOS / RHEL
yum install rsyslog
# Ubuntu / Debian
apt install rsyslog
启动服务:
systemctl enable --now rsyslog
编辑配置文件(推荐新建文件):
vim /etc/rsyslog.d/remote.conf
*.* @192.168.1.100:514
*.* @@192.168.1.100:514
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
在日志服务器上:
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
destination d_remote {
tcp("192.168.1.100" port(514));
};
log {
source(s_src);
destination(d_remote);
};
*.* @@logstash.example.com:5000
firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --reload
logger "test message"
tail -f /var/log/messages
tcpdump -i eth0 port 514
如果你能告诉我:
我可以给你一份精确配置。