Debian系統中,rsyslog是默認的日志管理工具,用于收集、分類、存儲和轉發系統及應用程序日志。以下是rsyslog的核心管理操作,涵蓋安裝、配置、服務管理、日志查看、輪轉及安全等方面。
Debian系統通常預裝rsyslog,若未安裝,可通過以下命令安裝:
sudo apt update && sudo apt install rsyslog
使用systemctl命令查看rsyslog運行狀態:
sudo systemctl status rsyslog
正常運行時會顯示active (running)。
sudo systemctl start rsyslogsudo systemctl stop rsyslogsudo 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 journalctlsudo journalctl -fapache2):sudo journalctl -u apache2sudo journalctl -b -1rsyslog默認將日志存儲在/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的有效管理,滿足日志收集、存儲、分析和安全需求。