Linux 日志管理
- 日志檔案是重要的系統資訊檔案,其中記錄了許多重要的系統事件,包括用戶的登錄資訊、系統的啟動資訊、系統的安全資訊、郵件相關資訊、各種服務相關資訊等,
- 日志對于安全來說也很重要,它記錄了系統每天發生的各種事情,通過日志來檢查錯誤發生的原因,或者受到攻擊時攻擊者留下的痕跡,
- 可以這樣理解日志是用來記錄重大事件的工具
/var/log/目錄就是系統日志檔案的保存位置,看張圖- 系統常用的日志

日志管理服務 rsyslogd
CentOS7.x 日志服務是 rsyslogd , CentOS6.x 日志服務是 syslogd ,rsyslogd 功能更強大,rsyslogd 的使用、日志檔案的格式,和 syslogd 服務兼容的,
查詢 Linux 中的 rsyslogd 服務是否啟動
ps aux | grep "rsyslog" | grep -v "grep"
查詢 rsyslogd 服務的自啟動狀態
systemctl list-unit-files | grep rsyslog
日志型別
| 型別 | 說明 |
|---|---|
| auth | pam 產生的日志 |
| authpriv | ssh、ftp 等登錄資訊的驗證資訊 |
| corn | 時間任務相關 |
| kern | 內核 |
| lpr | 列印 |
| 郵件 | |
| mark(syslog)-rsyslog | 服務內部的資訊,時間標識 |
| news | 新聞組 |
| user | 用戶程式產生的相關資訊 |
| uucp | unix to nuix copy 主機之間相關的通信 |
| local | 自定義的日志設備 |
日志級別
| 級別 | 說明 |
|---|---|
| debug | 有除錯資訊的,日志通信最多 |
| info | 一般資訊日志,最常用 |
| notice | 最具有重要性的普通條件的資訊 |
| warning | 警告級別 |
| err | 錯誤級別,阻止某個功能或者模塊不能正常作業的資訊 |
| crit | 嚴重級別,阻止整個系統或者整個軟體不能正常作業的資訊 |
| alert | 需要立刻修改的資訊 |
| emerg | 內核崩潰等重要資訊 |
| none | 什么都不記錄 |
注意:從上到下,級別從低到高,記錄資訊越來越少
由日志服務 rsyslogd 記錄的日志檔案,日志檔案的格式包含以下 4 列:
- 事件產生的時間
- 產生事件的服務器的主機名
- 產生事件的服務名或程式名
- 事件的具體資訊
日志輪替
日志輪替就是把舊的日志檔案移動并改名,同時建立新的空日志檔案,當舊日志檔案超出保存的范圍之后,就會進行洗掉
日志輪替檔案命名
- centos7 使用 logrotate 進行日志輪替管理,要想改變日志輪替檔案名字,通過 /etc/logrotate.conf 組態檔中“dateext”引數
- 如果組態檔中有“dateext”引數,那么日志會用日期來作為日志檔案的后綴,例如 “secure-20201010”,這樣日志檔案名不會重疊,也就不需要日志檔案的改名, 只需要指定保存日志個數,洗掉多余的日志檔案即可,
- 如果組態檔中沒有“dateext”引數,日志檔案就需要進行改名了,當第一次進行日志輪替時,當前的“secure”日志會自動改名為“secure.1”,然后新建“secure”日志, 用來保存新的日志,當第二次進行日志輪替時,“secure.1”會自動改名為“secure.2”, 當前的“secure”日志會自動改名為“secure.1”,然后也會新建“secure”日志,用來保存新的日志,以此類推,
logrotate 組態檔
/etc/logrotate.conf 為 logrotate 的全域組態檔
# rotate log files weekly, 每周對日志檔案進行一次輪替
weekly
# keep 4 weeks worth of backlogs, 共保存 4 份日志檔案,當建立新的日志檔案時,舊的將會被洗掉
rotate 4
# create new (empty) log files after rotating old ones, 創建新的空的日志檔案,在日志輪替后
create
# use date as a suffix of the rotated file, 使用日期作為日志輪替檔案的后綴
dateext
# uncomment this if you want your log files compressed, 日志檔案是否壓縮,如果取消注釋,則日志會在轉儲的同時進行壓縮
#compress
#RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# 包含 /etc/logrotate.d/ 目錄中所有的子組態檔,也就 是說會把這個目錄中所有子組態檔讀取進來,
#下面是單獨設定,優先級更高,
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly # 每月對日志檔案進行一次輪替
create 0664 root utmp # 建立的新日志檔案,權限是 0664 ,所有者是 root ,所屬組是 utmp 組
minsize 1M # 日志檔案最小輪替大小是 1MB ,也就是日志一定要超過 1MB 才會輪替,否則就算時間達到一個月,也不進行日志轉儲
rotate 1 # 僅保留一個日志備份,也就是只有 wtmp 和 wtmp.1 日志保留而已
}
/var/log/btmp {
missingok # 如果日志不存在,則忽略該日志的警告資訊
monthly
create 0600 root utmp
rotate 1
}
引數說明
| 引數 | 引數說明 |
|---|---|
| daily | 日志的輪替周期是每天 |
| weekly | 日志的輪替周期是每周 |
| monthly | 日志的輪替周期是每月 |
| rotate 數字 | 保留的日志檔案的個數,0 指沒有備份 |
| compress | 日志輪替時,舊的日志進行壓縮 |
| create mode owner group | 建立新日志,同時指定新日志的權限與所有者和所屬組 |
| mail address | 當日志輪替時,輸出內容通過郵件發送到指定的郵件地址 |
| missingok | 如果日志不存在,則忽略該日志的警告資訊 |
| notifempty | 如果日志為空檔案,則不進行日志輪替 |
| minsize 大小 | 日志輪替的最小值,也就是日志一定要達到這個最小值才會輪替,否則就算時間達到也不輪替 |
| size 大小 | 日志只有大于指定大小才進行日志輪替,而不是按照時間輪替 |
| dateext | 使用日期作為日志輪替檔案的后綴 |
| sharedscripts | 在此關鍵字之后的腳本只執行一次 |
| prerotate/endscript | 在日志輪替之前執行腳本命令 |
| postrotate/endscript | 在日志輪替之后執行腳本命令 |
把自己的日志加入日志輪替
- 第一種方法是直接在/etc/logrotate.conf 組態檔中寫入該日志的輪替策略
- 第二種方法是在/etc/logrotate.d/目錄中新建立該日志的輪替檔案,在該輪替檔案中寫入正確的輪替策略,因為該目錄中的檔案都會被“include”到主組態檔中,所以也可以把日志加入輪替,
- 推薦使用第二種方法,因為系統中需要輪替的日志非常多,如果全都直接寫 入/etc/logrotate.conf 組態檔,那么這個檔案的可管理性就會非常差,不利于此檔案的維護,
查看記憶體日志
journalctl 可以查看記憶體日志, 這里我們看看常用的指令
journalctl ##查看全部
journalctl -n 3 ##查看最新 3 條
journalctl --since 19:00 --until 19:10:10 #查看起始時間到結束時間的日志可加日期
journalctl -p err ##報錯日志
journalctl -o verbose ##日志詳細內容
journalctl _PID=1245 _COMM=sshd ##查看包含這些引數的日志(在詳細日志查看)
或者 journalctl | grep sshd
注意: journalctl 查看的是記憶體日志, 重啟清空
我是阿廷,一個相信努力可以改變人生的人,我相信一切的上進行為都是值得的,至少可以讓我看見更大的世界,
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/295843.html
標籤:Linux
