系統日志管理
日志文件的分類(日志保存在/var/log下)
內核及系統日志
由系統服務syslog統一進行管理
/var/log/messages 內核及公共消息日志 /var/log/cron 計划任務日志 /var/log/dmesg 系統引導日志 /var/log/maillog 郵件系統日志 /var/log/secure 記錄與訪問限制相關日志
用戶日志
記錄系統用戶登錄及退出系統的相關信息
/var/log/lastlog 最近的用戶登錄事件 /var/log/wtmp 用戶登錄、注銷及系統開關機 /var/log/btmp 失敗的用戶登陸事件 /var/run/utmp 當前登錄的每個用戶詳細信息
程序日志
由各種應用程序獨立管理的日志文件,記錄格式不統一
Web服務的access_log、error_log
Squid代理服務的access.log、cache.log
FTP服務的Xferlog
用戶日志分析
users
who 比w更加簡潔
w 查看當前登陸的用戶
last 最近系統登陸情況
lastb 最近系統登陸失敗的情況
系統及內核日志格式
時間標簽 主機名 子系統名稱 消息
syslogd管理日志:5版本
配置文件:/etc/syslog.conf
格式如下
服務類別.日志級別 日志消息發送位置
配置文件定義格式為:
facility.priority action
facility,可以理解為日志的來源或設備目前常用的facility有以下幾種:
auth # 認證相關的
authpriv # 權限,授權相關的
cron # 任務計划相關的
daemon # 守護進程相關的
kern # 內核相關的
lpr # 打印相關的
mail # 郵件相關的
mark # 標記相關的
news # 新聞相關的
security # 安全相關的,與auth 類似
syslog # syslog自己的
user # 用戶相關的
uucp # unix to unix cp 相關的
local0 到 local7 # 用戶自定義使用
* # *表示所有的facility
priority(log level)日志的級別,一般有以下幾種級別(從低到高)
debug # 程序或系統的調試信息 info # 一般信息 notice # 不影響正常功能,需要注意的消息 warning/warn # 可能影響系統功能,需要提醒用戶的重要事件 err/error # 錯誤信息 crit # 比較嚴重的 alert # 必須馬上處理的 emerg/panic # 會導致系統不可用的 * # 表示所有的日志級別 none # 跟* 相反,表示啥也沒有
日志消息的級別
0 EMERG(緊急) 會導致主機系統不可用的情況 1 ALERT(警告) 必須馬上采取措施解決的問題 2 CRIT(嚴重) 比較嚴重的情況 3 ERR(錯誤) 運行出現錯誤 4 WARNING(提醒) 可能會影響系統功能的事件 5 NOTICE(注意) 不會影響系統但值得注意 6 INFO(信息) 一般信息 7 DEBUG(調試) 程序或系統調試信息等
表示消息類別,例如:
auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user
action(動作)日志記錄的位置
系統上的絕對路徑 # 普通文件 如: /var/log/xxx | # 管道 通過管道送給其他的命令處理 終端 # 終端 如:/dev/console @HOST # 遠程主機 如: @10.0.0.1 用戶 # 系統用戶 如: root * # 登錄到系統上的所有用戶,一般emerg級別的日志是這樣定義的
定義格式例子:
mail.info /var/log/mail.log # 表示將mail相關的,級別為info及 # info以上級別的信息記錄到/var/log/mail.log文件中 auth.=info @10.0.0.1 # 表示將auth相關的,基本為info的信息記錄到10.0.0.1主機上去 # 前提是10.0.0.1要能接收其他主機發來的日志信息 user.!=error # 表示記錄user相關的,不包括error級別的信息 user.!error # 與user.error相反 *.info # 表示記錄所有的日志信息的info級別 mail.* # 表示記錄mail相關的所有級別的信息 *.* # 你懂的. cron.info;mail.info # 多個日志來源可以用";" 隔開 cron,mail.info # 與cron.info;mail.info 是一個意思 mail.*;mail.!=info # 表示記錄mail相關的所有級別的信息,但是不包括info級別的
rsyslog管理日志:6版本
配置文件:/etc/rsyslog.conf
格式如下
服務類別.日志級別 日志消息發送位置
日志消息的級別
0 EMERG(緊急) 會導致主機系統不可用的情況 1 ALERT(警告) 必須馬上采取措施解決的問題 2 CRIT(嚴重) 比較嚴重的情況 3 ERR(錯誤) 運行出現錯誤 4 WARNING(提醒) 可能會影響系統功能的事件 5 NOTICE(注意) 不會影響系統但值得注意 6 INFO(信息) 一般信息 7 DEBUG(調試) 程序或系統調試信息等
連接符號
. 記錄大於等於此等級 .= 只記錄等於此等級的信息 .! 不等於此等級,也就是記錄此等級之外的信息
表示消息類別,例如:
auth、authpriv、cron、daemon、kern、lpr、mail、syslog、user
配置文件定義格式為:
facility.priority action
facility,可以理解為日志的來源或設備目前常用的facility有以下幾種:
auth # 認證相關的
authpriv # 權限,授權相關的
cron # 任務計划相關的
daemon # 守護進程相關的
kern # 內核相關的
lpr # 打印相關的
mail # 郵件相關的
mark # 標記相關的
news # 新聞相關的
security # 安全相關的,與auth 類似
syslog # syslog自己的
user # 用戶相關的
uucp # unix to unix cp 相關的
local0 到 local7 # 用戶自定義使用
* # *表示所有的facility
priority(log level)日志的級別,一般有以下幾種級別(從低到高)
debug # 程序或系統的調試信息 info # 一般信息 notice # 不影響正常功能,需要注意的消息 warning/warn # 可能影響系統功能,需要提醒用戶的重要事件 err/error # 錯誤信息 crit # 比較嚴重的 alert # 必須馬上處理的 emerg/panic # 會導致系統不可用的 * # 表示所有的日志級別 none # 跟* 相反,表示啥也沒有
action(動作)日志記錄的位置
系統上的絕對路徑 # 普通文件 如: /var/log/xxx | # 管道 通過管道送給其他的命令處理 終端 # 終端 如:/dev/console @HOST # 遠程主機 如: @10.0.0.1 用戶 # 系統用戶 如: root * # 登錄到系統上的所有用戶,一般emerg級別的日志是這樣定義的
定義格式例子:
mail.info /var/log/mail.log # 表示將mail相關的,級別為info及 # info以上級別的信息記錄到/var/log/mail.log文件中 auth.=info @10.0.0.1 # 表示將auth相關的,基本為info的信息記錄到10.0.0.1主機上去 # 前提是10.0.0.1要能接收其他主機發來的日志信息 user.!=error # 表示記錄user相關的,不包括error級別的信息 user.!error # 與user.error相反 *.info # 表示記錄所有的日志信息的info級別 mail.* # 表示記錄mail相關的所有級別的信息 *.* # 你懂的. cron.info;mail.info # 多個日志來源可以用";" 隔開 cron,mail.info # 與cron.info;mail.info 是一個意思 mail.*;mail.!=info # 表示記錄mail相關的所有級別的信息,但是不包括info級別的
日志的管理策略
一般化措施
重要日志做好備份/延長保存期限
控制日志的訪問權限
集中管理日志
方便消息的統一收集、整理和分析
避免日志的意外丟失、防惡意篡改記錄
logrotate日志輪轉
logrotate輪轉
減小日志大小,降低分析難度
丟棄過期日志節省空間
結合cron每天執行
軟件包
logrotate
主配置文件/etc/logrotate.conf(daily, weekly, monthly, or yearly)
weekly 輪轉頻率,默認每周 rotate 4 保留4個輪轉備份 create 執行輪轉后創建新文件 #compress 是否壓縮日志 dateext 以年月日時間取代后綴1 2 3 ... include /etc/logrotate.d 包含此目錄下的配置 /var/log/wtmp { 啟用輪轉的日志文件 monthly 每月輪轉一次 missingok 丟失不提示 notifempty 如果為空則不輪轉 minsize 1M 日志達到1MB才開始輪轉 create 0664 root utmp 建新文件並設權限 rotate 1 只保留一個備份 }
輪詢完會生成一個空的message文件
如何輪詢:
1.假如以星期為輪詢周期。如果系統有一個message文件,過了一周后會生成一個空的message文件和message1(原來的message),第二周就會生成message2文件(message1改為message2),依次類推
logrotate 手工執行輪轉
-v 啟動顯示模式
-f 強制rotate
/var/lib/logrotate.status
** size生效的話,會忽略輪轉頻率 ** 輪轉頻率生效的話,會忽略size ** 配置的順序:后生效的會覆蓋之前的語句