在 Debian 系统中迁移 **syslog(系统日志)**通常是指:
/var/log 迁移到其他磁盘/目录下面按常见场景分别说明(Debian 10/11/12 通用)。
Debian 常见日志系统:
| 类型 | 说明 |
|---|---|
| rsyslog | 最常见(默认) |
| syslog-ng | 老系统或部分定制 |
| systemd-journald | 现代 Debian 默认也使用 |
查看当前使用的是哪个:
ps -ef | grep -E 'rsyslog|syslog|journal'
编辑配置文件:
sudo vim /etc/rsyslog.conf
添加远程日志服务器(UDP):
*.* @192.168.1.100:514
如果用 TCP(推荐):
*.* @@192.168.1.100:514
重启 rsyslog:
sudo systemctl restart rsyslog
编辑 /etc/rsyslog.conf:
module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
重启:
sudo systemctl restart rsyslog
日志会进入:
/var/log/syslog
/var/log/messages
/var/log 磁盘满了的情况sudo mkdir -p /data/log
sudo chmod 755 /data/log
编辑:
sudo vim /etc/rsyslog.d/50-default.conf
将原来的:
/var/log/syslog
改为:
/data/log/syslog
保存后重启:
sudo systemctl restart rsyslog
sudo systemctl stop rsyslog
sudo mv /var/log/syslog /data/log/
sudo ln -s /data/log/syslog /var/log/syslog
sudo systemctl start rsyslog
sudo systemctl stop rsyslog
sudo systemctl disable rsyslog
journalctl -xe
持久化 journal 日志:
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
Debian 使用 logrotate,否则日志会撑满磁盘。
检查:
/etc/logrotate.d/rsyslog
示例:
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
}
迁移路径后记得同步修改。
| 问题 | 原因 |
|---|---|
| 日志不生成 | 路径权限不足 |
| 远程收不到 | 防火墙 / UDP 被拦 |
| 磁盘爆满 | logrotate 未生效 |
| systemd 看不到 | 没持久化 journal |
如果你愿意,可以告诉我:
我可以给你一份完全可复制的迁移方案。