RockyLinux9 By SystemArch_Alex

Rocky Linux 9 基礎教學 (12):日誌管理:Journalctl 與 Logrotate 實戰

掌握系統狀態的雙重利器

在 Rocky Linux 9 中,日誌管理分為兩大體系:由 Systemd 負責的二進制日誌 journald,以及負責傳統文本日誌轉儲的 logrotate。身為資深工程師,必須學會如何從海量數據中精確定位問題。

1. Journalctl:現代化的日誌查詢

journalctl 提供了強大的篩選功能,不再需要使用 grep 在多個檔案間穿梭。

# 查看當前開機後的所有日誌
journalctl -b

# 即時監控特定服務的日誌 (如 sshd)
journalctl -u sshd -f

# 查詢特定時間範圍內的錯誤訊息
journalctl --since "2026-01-01" --until "2026-01-31 12:00:00" -p err

# 查看核心日誌 (等同於 dmesg)
journalctl -k
2. 限制 Journal 日誌大小

二進制日誌若不限制,會佔用大量磁碟空間。編輯 /etc/systemd/journald.conf

[Journal]
SystemMaxUse=500M

設定後執行 sudo systemctl restart systemd-journald 即可生效。

3. Logrotate:文本日誌的自動化管家

對於 /var/log/ 下的傳統日誌,logrotate 負責定期壓縮、刪除與重新命名。其主配置檔位於 /etc/logrotate.conf,而各服務的配置則放在 /etc/logrotate.d/

4. 實戰範例:為自定義應用設定 Logrotate

假設你有一個應用程式日誌位於 /var/log/myapp.log,我們希望每天轉儲一次,保留 7 天,並進行壓縮:

/var/log/myapp.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root root
    postrotate
        /usr/bin/systemctl reload myapp > /dev/null 2>&1
    endscript
}
5. 除錯與手動執行

若想測試 logrotate 配置是否正確,可以使用以下指令強制執行:

sudo logrotate -f /etc/logrotate.d/myapp

透過 journalctl 進行即時除錯,並利用 logrotate 確保磁碟空間不被日誌塞爆,是維護 Rocky Linux 9 穩定性的基本要求。