在 Linux 系统中迁移 syslog(系统日志) 通常指把日志记录从本地迁移到远程日志服务器、或把日志目录整体迁移、或把原来 rsyslog 换成别的日志系统(如 systemd-journald、syslog-ng)。下面按常见场景给你一套实用方案。
适用于:
ps -ef | grep syslog
# 或
systemctl status rsyslog
常见:
rsyslog(主流)syslog-ngsystemd-journald以下以 rsyslog 为例。
编辑配置文件:
vim /etc/rsyslog.conf
# 或
vim /etc/rsyslog.d/remote.conf
UDP 方式(快,但不可靠)
*.* @192.168.1.100:514
TCP 方式(推荐)
*.* @@192.168.1.100:514
@= UDP
@@= TCP
重启服务:
systemctl restart rsyslog
编辑:
vim /etc/rsyslog.conf
启用 TCP/UDP:
module(load="imtcp")
input(type="imtcp" port="514")
分区存储(可选):
$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
重启:
systemctl restart rsyslog
确保防火墙放行:
firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --reload
systemctl stop rsyslog
mv /var/log /data/log
ln -s /data/log /var/log
或者(推荐)修改 rsyslog 配置:
编辑:
vim /etc/rsyslog.conf
修改日志路径:
*.info;mail.none;authpriv.none;cron.none /data/log/messages
重启:
systemctl restart rsyslog
yum install syslog-ng
systemctl disable rsyslog
systemctl enable syslog-ng
systemctl stop rsyslog
systemctl start syslog-ng
systemctl stop rsyslog
systemctl disable rsyslog
查看日志:
journalctl -f
cp -a /var/log/* /data/log/
如果启用 SELinux:
setenforce 0 # 临时关闭(测试)
或:
semanage fcontext -a -e /var/log /data/log
restorecon -Rv /data/log
日志迁移后必须保证时间一致:
timedatectl
# 或
chronyc sources
修改:
vim /etc/logrotate.d/syslog
确保路径正确。
# 客户端
logger "syslog migration test"
# 服务端
tail -f /var/log/remote/*
| 需求 | 推荐方案 |
|---|---|
| 集中日志 | rsyslog 远程 |
| 高性能 | syslog-ng |
| 系统日志统一 | journald |
| 安全审计 | 远程 + 审计日志 |
告诉我你的 Linux 发行版 + 使用场景 即可。