Linux 系統日誌管理
在 Red Hat 系列 Linux(包括 RHEL、CentOS 和 Fedora)中,系統日誌對於監控與診斷系統運作狀況至關重要。本篇將介紹 journalctl
、rsyslog
及 logrotate
,並提供實際操作示例。
目錄
系統日誌概述
Red Hat / Fedora 使用 systemd-journald
來管理日誌,而傳統的 rsyslog
仍可用於特定場景。日誌通常記錄在以下目錄:
/var/log/
:儲存系統與應用程式日誌/var/log/messages
:系統關鍵日誌(非journalctl
環境)/var/log/secure
:記錄安全性相關事件(登入、SSH 等)
使用 journalctl
管理日誌
查看所有系統日誌
journalctl
依時間範圍查詢
journalctl --since "1 hour ago"
journalctl --since "2024-01-01" --until "2024-01-02 12:00"
依服務名稱篩選
journalctl -u sshd
journalctl -u httpd --since "1 day ago"
監控即時日誌(類似 tail -f
)
journalctl -f
限制顯示行數
journalctl -n 50
清理日誌(釋放磁碟空間)
sudo journalctl --vacuum-size=500M
sudo journalctl --vacuum-time=7d
持久化 journalctl
日誌
預設 journalctl
可能只保留記憶體內日誌,如需長期存儲,請執行:
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
傳統日誌管理 (rsyslog
)
雖然 systemd-journald
是現代標準,rsyslog
仍可用於集中日誌管理與傳送日誌至遠端伺服器。
安裝 rsyslog
(如未安裝)
sudo dnf install rsyslog -y
sudo systemctl enable --now rsyslog
檢查 rsyslog
狀態
systemctl status rsyslog
rsyslog
配置文件位置
/etc/rsyslog.conf
:主配置文件/etc/rsyslog.d/
:額外的配置檔案存放目錄
記錄 SSH 連線日誌至 /var/log/ssh.log
編輯 /etc/rsyslog.conf
或 /etc/rsyslog.d/custom.conf
,新增:
:programname, isequal, "sshd" /var/log/ssh.log
& stop
重啟 rsyslog
:
sudo systemctl restart rsyslog
設定遠端日誌伺服器
若要將日誌發送至遠端伺服器(192.168.1.100):
*.* @@192.168.1.100:514
重啟 rsyslog
:
sudo systemctl restart rsyslog
日誌輪轉 (logrotate
)
Linux 使用 logrotate
來管理日誌大小,避免硬碟被日誌佔滿。
查看 logrotate
設定
cat /etc/logrotate.conf
ls /etc/logrotate.d/
手動執行日誌輪轉
sudo logrotate -vf /etc/logrotate.conf
自定義日誌輪轉(範例:/var/log/custom.log
)
新增 /etc/logrotate.d/custom
,內容如下:
/var/log/custom.log {
weekly
rotate 4
compress
missingok
notifempty
}
日誌分析與監控
grep
過濾日誌
grep "error" /var/log/messages
grep "Failed password" /var/log/secure
ausearch
(SELinux 日誌分析)
ausearch -m avc -ts recent
fail2ban
監控 SSH 嘗試
sudo dnf install fail2ban -y
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
logwatch
- 產生每日日誌報告
sudo dnf install logwatch -y
sudo logwatch --detail High --mailto admin@fedora.tw --range today
結語
本篇介紹了 Red Hat / Fedora 系統的日誌管理,包括 journalctl
、rsyslog
、logrotate
,以及日誌監控與分析的實際操作。透過這些工具,您可以有效監控與管理系統日誌,確保系統的安全性與穩定性。