CentOS Syslog使用技巧匯總
/var/log
目錄下,常見文件包括/var/log/messages
(系統內核與服務消息)、/var/log/secure
(安全認證信息)、/var/log/boot.log
(系統啟動日志)、/var/log/dmesg
(內核啟動消息)。tail -f /var/log/messages
命令可實時查看日志文件的最新內容,便于監控系統實時狀態。grep
命令過濾日志中的關鍵信息,例如grep "error" /var/log/messages
可找出所有包含“error”的日志行;結合journalctl
(適用于CentOS 7及以上版本)使用journalctl | grep 'error'
能搜索systemd管理的所有日志。yum install rsyslog
安裝rsyslog(CentOS默認日志服務),安裝完成后通過systemctl start rsyslog
啟動服務,并用systemctl enable rsyslog
設置開機自啟,確保服務持續運行。/etc/rsyslog.conf
文件,取消以下兩行的注釋(或添加)以啟用UDP/TCP遠程日志接收:module(load="imudp")
input(type="imudp" port="514")
module(load="imtcp")
input(type="imtcp" port="514")
*.* @192.168.1.100:514
,@
表示UDP,@@
表示TCP),重啟rsyslog服務使配置生效。logrotate
工具自動管理日志輪轉,編輯/etc/logrotate.d/rsyslog
文件(或創建自定義配置文件),設置輪轉規則。例如,按天輪轉/var/log/messages
并保留30天:/var/log/messages { daily rotate 30 compress delaycompress missingok notifempty create 640 root adm }
$programname
變量將特定服務的日志寫入單獨文件,例如將Nginx日志寫入/var/log/nginx.log
:if $programname == 'nginx' then /var/log/nginx.log
& stop
可停止后續規則匹配,避免重復記錄。$syslogseverity
變量過濾特定級別的日志,例如僅記錄錯誤及以上級別日志:if $syslogseverity <= 3 then /var/log/error.log
0
=emerg、1
=alert、2
=crit、3
=err,數值越小級別越高)。$template
定義日志輸出格式,例如添加時間戳、主機名、程序名:$template CustomFormat,"%timegenerated% %syslogtag% %msg%\n"
*.* ?CustomFormat
。firewall-cmd --permanent --add-port=514/udp
和firewall-cmd --permanent --add-port=514/tcp
命令,然后firewall-cmd --reload
重新加載配置。/etc/rsyslog.conf
,添加module(load="imudp" ssl.caCert="/path/to/ca.crt" ssl.cert="/path/to/server.crt" ssl.key="/path/to/server.key")
(UDP示例),并配置客戶端使用@@(encrypted)
連接。systemctl status rsyslog
查看rsyslog服務是否運行正常,若有錯誤需根據提示修復。rsyslogd -N1
命令檢查語法是否正確(-N1
表示僅檢查語法,不實際啟動服務)。logger "Test remote log message"
命令發送測試日志,登錄服務器檢查/var/log/
目錄下是否有對應的日志文件(如/var/log/secure
或自定義路徑)。