在 Ubuntu 上配置 syslog,通常指的是配置 rsyslog(Ubuntu 默认使用的 syslog 服务)。下面从安装、配置文件、常见配置示例、重启服务、验证几个方面说明。
dpkg -l | grep rsyslog
如果没有安装:
sudo apt update
sudo apt install rsyslog
sudo systemctl status rsyslog
如未启动:
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
/etc/rsyslog.conf
/etc/rsyslog.d/
Ubuntu 默认会加载:
$IncludeConfig /etc/rsyslog.d/*.conf
编辑配置文件:
sudo nano /etc/rsyslog.conf
取消注释或添加以下内容:
# 提供 UDP syslog 接收
module(load="imudp")
input(type="imudp" port="514")
# 提供 TCP syslog 接收
module(load="imtcp")
input(type="imtcp" port="514")
生产环境建议使用 TCP,更可靠。
sudo nano /etc/rsyslog.d/auth.conf
内容:
auth.* /var/log/auth.log
*.* /var/log/all.log
⚠️ 不建议长期使用,日志量会非常大。
| 级别 | 含义 |
|---|---|
| emerg | 系统不可用 |
| alert | 必须立即处理 |
| crit | 严重错误 |
| err | 错误 |
| warning | 警告 |
| notice | 普通但重要 |
| info | 信息 |
| debug | 调试 |
示例:只记录 error 及以上
*.err /var/log/error.log
Ubuntu 使用 logrotate 管理日志大小。
cat /etc/logrotate.d/rsyslog
示例:
/var/log/syslog
/var/log/auth.log
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate 2>/dev/null || true
endscript
}
sudo systemctl restart rsyslog
logger "This is a test syslog message"
tail -f /var/log/syslog
或:
journalctl -f
*.* /var/log/remote.log
if $fromhost-ip startswith '192.168.1.' then /var/log/network.log
& stop
sudo chmod 640 /var/log/auth.log
如果你有具体需求(例如:接收防火墙/交换机日志、Docker 日志、集中式日志服务器),可以告诉我,我可以给你一份完整可直接用的配置。