Debian系统中,rsyslog是默认的日志管理工具,用于收集、分类、存储和转发系统及应用程序日志。以下是rsyslog的核心管理操作,涵盖安装、配置、服务管理、日志查看、轮转及安全等方面。
Debian系统通常预装rsyslog,若未安装,可通过以下命令安装:
sudo apt update && sudo apt install rsyslog
使用systemctl
命令查看rsyslog运行状态:
sudo systemctl status rsyslog
正常运行时会显示active (running)
。
sudo systemctl start rsyslog
sudo systemctl stop rsyslog
sudo systemctl restart rsyslog
确保rsyslog随系统启动自动运行:
sudo systemctl enable rsyslog
rsyslog的主配置文件为/etc/rsyslog.conf
,包含全局设置(如日志级别、模块加载)和默认规则。
常用配置项:
$ModLoad imuxsock
:启用本地系统日志(如/var/log/syslog
);$ModLoad imklog
:启用内核日志;$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
:设置默认日志格式。为避免修改主文件,建议在/etc/rsyslog.d/
目录下创建自定义配置文件(如50-custom.conf
)。例如,将apache2
服务的日志单独存储到/var/log/apache2/access.log
:
sudo nano /etc/rsyslog.d/50-custom.conf
添加以下内容:
if $programname == 'apache2' then /var/log/apache2/access.log
& stop # 停止进一步处理,避免重复记录
rsyslog支持基于设施(facility)(如auth
、cron
、kern
)和优先级(priority)(如info
、err
、crit
)的过滤。例如:
info
级别及以上的cron
日志到/var/log/cron.log
:cron.info /var/log/cron.log
& stop
authpriv
(认证相关)日志发送到远程服务器(remote_server_ip
)的514
端口:authpriv.* @remote_server_ip:514 # UDP传输(@);TCP传输用@@
通过template
指令定义日志格式,例如添加时间戳、主机名和程序名:
$template CustomFormat,"%$YEAR%-%$MONTH%-%$DAY% %$HOUR%:%$MINUTE%:%$SECOND% %HOSTNAME% %syslogtag% %msg%\n"
*.* ?CustomFormat # 应用模板到所有日志
journalctl是systemd提供的日志管理工具,可查看rsyslog及其他systemd服务的日志:
sudo journalctl
sudo journalctl -f
apache2
):sudo journalctl -u apache2
sudo journalctl -b -1
rsyslog默认将日志存储在/var/log/
目录下,常用文件:
/var/log/syslog
:系统综合日志(包含内核、认证、cron等);/var/log/auth.log
:认证日志(如登录、sudo使用);/var/log/kern.log
:内核日志;/var/log/dmesg
:启动时的内核消息。tail
命令实时查看:sudo tail -f /var/log/syslog
Debian使用logrotate
工具自动轮转日志,rsyslog的轮转配置位于/etc/logrotate.d/rsyslog
。示例配置:
/var/log/syslog {
daily # 每天轮转
missingok # 日志文件丢失时不报错
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(如syslog.1.gz)
delaycompress # 延迟压缩(不压缩最新的旧日志)
notifempty # 日志为空时不轮转
create 0640 root adm # 创建新日志时设置权限和所有者
sharedscripts # 所有日志轮转完成后执行postrotate
postrotate
/usr/lib/rsyslog/rsyslog-rotate # 通知rsyslog重新打开日志文件
endscript
}
测试配置是否正确:
sudo logrotate -f /etc/logrotate.d/rsyslog
使用TLS/SSL加密rsyslog的远程传输,避免日志被截获。需在/etc/rsyslog.conf
中配置SSL证书路径,并使用@@
(TCP+TLS)替代@
(UDP)。例如:
authpriv.* @@secure_log_server:6514
确保日志文件的权限合理,避免敏感信息泄露。例如,/var/log/syslog
的默认权限为640
(属主root
,属组adm
),仅允许授权用户访问。
systemctl status rsyslog
),确认配置文件语法(rsyslogd -N1
);logrotate
配置是否生效,或手动清理旧日志;通过以上步骤,可实现对Debian系统中rsyslog的有效管理,满足日志收集、存储、分析和安全需求。