在 Debian 系统中,syslog 通常由 rsyslog(或 systemd-journald)负责。监控 syslog 可以从实时查看、过滤、告警、长期存储几个层面来做。下面按常见场景详细说明。
dpkg -l | grep rsyslog
或
ps aux | grep rsyslog
如果看到 rsyslogd,说明使用的是 rsyslog。
Debian 默认也使用 systemd-journald,日志会同时存在于:
/var/log/syslogjournalctltail -f /var/log/syslog
只看某类日志:
tail -f /var/log/syslog | grep ssh
查看所有日志(实时):
journalctl -f
只看 syslog:
journalctl -t syslog -f
只看某服务:
journalctl -u ssh -f
journalctl --since "2025-01-01 09:00" --until "2025-01-01 10:00"
journalctl -p err
rsyslog 优先级:
tail -f /var/log/syslog | grep --line-buffered "error" | while read line
do
echo "$(date) $line"
# 发送邮件 / 告警
done
安装:
apt install swatch
示例配置:
watchfor /error|fail|critical/
echo
mail addresses=root, subject="Syslog Alert"
运行:
swatch --config-file ~/.swatchrc --tail-file /var/log/syslog
编辑:
/etc/rsyslog.d/10-custom.conf
示例:
:msg, contains, "error" /var/log/error.log
& stop
重启:
systemctl restart rsyslog
*.* @@logserver:514
Debian 默认使用 logrotate:
/etc/logrotate.d/rsyslog
检查:
logrotate -d /etc/logrotate.conf
| 需求 | 命令 |
|---|---|
| 实时查看 | tail -f /var/log/syslog |
| systemd 日志 | journalctl -f |
| 查看某服务 | journalctl -u nginx |
| 查看错误 | journalctl -p err |
| 搜索关键词 | grep error /var/log/syslog |
✅ 个人 / 小服务器
tail -f + journalctl✅ 多服务器 / 生产环境
✅ 安全监控
如果你愿意,我可以:
只要告诉我你的使用场景即可。