Ubuntu syslog(rsyslog)日志優化指南
日志級別決定了記錄的日志詳細程度,降低級別可顯著減少日志量。rsyslog支持的級別從低到高為:debug(調試)、info(一般信息)、notice(普通重要)、warning(警告)、err(錯誤)、crit(嚴重錯誤)、alert(需立即行動)、emerg(系統不可用)。
修改路徑:編輯/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf文件,找到類似kern.* /dev/console的行,將*(所有級別)替換為目標級別(如kern.warning),僅記錄警告及以上級別的內核日志。修改后保存文件,重啟rsyslog服務使配置生效:sudo systemctl restart rsyslog。
日志輪轉可自動歸檔、壓縮舊日志,避免單個文件過大占用磁盤空間。Ubuntu使用logrotate工具管理rsyslog日志輪轉,配置文件位于/etc/logrotate.d/rsyslog。
關鍵參數設置:
size 100M:當日志文件達到100MB時觸發輪轉(優先于時間觸發);rotate 4:保留最近4個輪轉文件;compress:壓縮舊日志(節省空間);delaycompress:延遲壓縮(保留最近一個未壓縮的輪轉文件,便于查閱);missingok:若日志文件丟失,不報錯繼續處理;notifempty:若日志文件為空,不進行輪轉;create 640 root adm:創建新日志文件時設置權限(640)和所有者(root:adm)。sudo logrotate -d /etc/logrotate.d/rsyslog(模擬運行,不實際執行);確認無誤后手動觸發輪轉:sudo logrotate /etc/logrotate.d/rsyslog。rsyslog的某些模塊(如UDP接收模塊)可能不需要使用,禁用后可降低系統資源消耗。
修改路徑:編輯/etc/rsyslog.conf文件,找到以下行(通常位于文件頂部模塊加載部分):
# ModLoad imudp
# Input imudp port 514
取消行首的#注釋符號即可啟用模塊,保留注釋則禁用模塊。例如,若無需接收UDP協議的遠程日志,可禁用imudp模塊,減少網絡和內存占用。
精簡rsyslog配置文件中的冗余規則,避免不必要的日志記錄。
操作建議:
mail.* /var/log/mail.log,若系統無郵件服務);auth.*規則合并為一條);journalctl是systemd的日志管理工具,可更高效地查詢、過濾和管理日志(包括syslog日志)。
常用命令:
journalctl:查看所有日志;journalctl -b:查看本次啟動后的日志;journalctl -u service_name:查看指定服務(如ssh)的日志;journalctl --vacuum-time=7d:清理7天前的舊日志;journalctl --vacuum-size=500M:限制日志總大小為500MB,超出則清理舊日志。rsyslog支持異步日志記錄,可在不阻塞應用程序的情況下處理日志,提升系統性能。
修改路徑:編輯/etc/rsyslog.conf文件,找到$ModLoad imuxsock行(系統日志輸入模塊),在其下方添加:
$ActionQueueType LinkedList # 使用鏈表隊列
$ActionQueueFileName srvrfwd # 隊列文件名
$ActionResumeRetryCount -1 # 無限重試
$ActionQueueSaveOnShutdown on # 關機時保存隊列
這些配置啟用異步隊列,將日志先寫入內存隊列,再批量寫入磁盤,減少I/O等待時間。修改后保存文件,重啟rsyslog服務。
舊版本的rsyslog可能存在性能bug或功能缺失,升級到最新穩定版可提升日志處理效率和穩定性。
升級步驟:
sudo apt update;sudo apt upgrade rsyslog;sudo apt install wget gnupg lsb-release
wget -qO - https://download.rsyslog.com/rsyslog_gpg.key | sudo apt-key add -
echo "deb https://download.rsyslog.com/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/rsyslog.list
sudo apt update
sudo apt install rsyslog
升級后重啟rsyslog服務。