Syslog 是 Linux 系统中标准的日志记录机制,可以通过配置实现日志的远程转发。以下是几种常见的 syslog 转发配置方法:
编辑 /etc/rsyslog.conf
文件:
sudo vim /etc/rsyslog.conf
添加以下内容到文件末尾(将 your.log.server
替换为日志服务器IP或域名):
*.* @your.log.server:514
或使用TCP协议(更可靠但性能略低):
*.* @@your.log.server:514
重启 rsyslog 服务:
sudo systemctl restart rsyslog
编辑 /etc/rsyslog.conf
:
sudo vim /etc/rsyslog.conf
取消注释以下行以启用UDP/TCP接收:
# 启用UDP接收
module(load="imudp")
input(type="imudp" port="514")
# 启用TCP接收
module(load="imtcp")
input(type="imtcp" port="514")
配置日志存储路径(可选):
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
重启 rsyslog 服务:
sudo systemctl restart rsyslog
编辑 /etc/syslog-ng/syslog-ng.conf
:
sudo vim /etc/syslog-ng/syslog-ng.conf
添加以下内容:
destination remote_server {
syslog("your.log.server" transport("udp") port(514));
};
log {
source(src);
destination(remote_server);
};
重启 syslog-ng:
sudo systemctl restart syslog-ng
确保服务器防火墙允许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
只转发特定级别的日志(如error及以上):
*.err @your.log.server:514
# 在客户端配置
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /path/to/ca.pem
$ActionSendStreamDriverMode 1
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer your.log.server
*.* @@your.log.server:6514
在客户端生成测试日志:
logger "This is a test log message"
在服务器检查是否收到:
tail -f /var/log/remote/client-hostname/syslog.log
通过以上配置,您可以在Linux系统中实现syslog日志的转发功能。