系統自帶的日志管理工具-rsyslogd


              系統自帶的日志管理工具-rsyslogd

                                        作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

 

 

 

一.日志管理簡介
1.什么是日志
  系統日志是記錄系統中硬件、軟件和系統問題的信息,同時還可以監視系統中發生的事件。用戶可以通過它來檢查錯誤發生的原因,或者尋找受到攻擊時攻擊者留下的痕跡。系統日志包括系統日志、應用程序日志和安全日志。
 
2.日志服務
  在CentOS6.x中日志服務已經由rsyslogd取代了原先的syslogd服務。rsyslogd日志服務更加先進,功能更多。但是不論該服務都是用,還是日志文件的格式其實都是和syslogd服務相兼容的,所以學起來基本和syslogd服務一致。
 
3.rsyslogd的新特點
  a>.基於TCP/IP網絡協議傳輸日志信息;
  b>.更安全的網絡傳輸方式;
  c>.有日志消息的及時分析框架;
  d>.后台數據庫;
  e>.配置文件中可以寫簡單的邏輯判斷;
  f>.與syslog配置文件相兼容;
確定rsyslogd服務是否啟動的方法如下:
1 [root@yinzhengjie ~]# ps aux | grep rsyslogd | grep -v grep
2 root 1676 0.0 0.1 251200 1624 ? Sl 05:29 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
3 [root@yinzhengjie ~]# 4 [root@yinzhengjie ~]# chkconfig --list rsyslog 5 rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off 6 [root@yinzhengjie ~]#

 

 
4.常見的日志的作用
日志名稱 日志路徑 日志功能 備注
定時任務日志 /var/log/cron 記錄了系統定時任務相關的日志。  
打印日志 /var/log/cups/ 記錄打印信息的日志  
內核日志 /var/log/dmesg 記錄了系統在開機時內核自建的信息。也就是使用dmesg命令直接查看內核自檢信息。  
登錄失敗日志 /var/log/btmp 記錄錯誤登錄的日志。這個文件是二進制文件,不能直接用vi查看,而是要用lasth命令查看例如:“[root@yinzhengjie ~]# lastb”回車即可。 如果有人攻擊你的電腦就這個文件就會有大量的日志信息。
最后登錄日志 /var/log/lastlog 記錄系統中所有用戶最后一次的登錄時間的日志。這個文件也是二進制文件,不能直接vi,而要用lastlog命令查看,例如:“[root@yinzhengjie ~]# lastlog ”回車即可。  
郵件日志 /var/log/maillog 記錄郵件信息  
系統日志 /var/log/messages 記錄系統重要信息的日志。這個日志文件中會記錄Linux系統的絕大多數重要信息,如果系統出現問題時,首先要檢查的就應該是這個日志文件。 該日志文件默認還會記錄一些服務日志喲。
安全日志 /var/log/secure 記錄驗證和授權方面的信息,只要涉及賬戶和密碼程序的都會記錄。比如說系統的登錄,ss的登錄,su切換用戶,sudo授權,甚至添加用戶和修改用戶密碼都會記錄在這個日志文件中。  
登錄日志 /var/log/wtmp 永久記錄所有用戶的登錄,注銷信息,同時記錄系統的啟動,重啟,關機時間。同樣這也是一個二進制文件,不能直接vi打開,而需要last命令來查看。“[root@yinzhengjie ~]# last”  
當前登錄日志 /var/run/utmp 記錄當前已經登錄的用戶的信息,這個文件會隨着用戶的登錄和注銷而不斷變化,只記錄當前登錄用戶的信息。同樣這個文件也不能直接用vi打開,而是要用,w,who,users等命令來查詢。  
 
5.yum方式安裝的日志
  除了系統默認的日志之外,采用RPM方式(或yYUM方式)安裝的系統服務也會默認把日志記錄在“/var/log”目錄中(源碼包安裝的服務日志是在源碼包指定目錄中)。不過這些日志不是由rsyslogd服務來記錄和管理的,而在各個服務使用自己的日志管理文檔來記錄自身日志。
日志名稱 日志路徑 日志功能
Apache日志 /var/log/httpd/ RPM包安裝的Apache服務端默認日志目錄
郵件日志 /var/log/mail/ RPM包安裝的郵件服務的額外日志目錄
Samba日志 /var/log/samba/ RPM包安裝的Samba服務的日志目錄
安全服務日志 /var/log/sssd/ 守護進程安全服務目錄
 
二.rsyslogd日志服務
1.基本日志格式包含以下四列:
  a>.事件產生的事件;
  b>.發生事件的服務器的主機名;
  c>.產生事件的服務名或程序名;
  d>.事件的具體信息;
2./etc/rsyslog.conf 配置文件
定義格式如下:
  服務名稱[連接符號]日志等級 日志存放位置
b>.服務名稱及其含義說明
服務名稱 說明
auth 安全和認證相關信息( 不推薦使用authpriv替代)
authpriv 安全和認證相關信息(私有的)
cron 系統定時任務cront和at產生的日志
daemon 個各個守護進程相關的日志
ftp ftp守護進程產生的日志
kern 內核產生相關的日志(不是用戶進程產生的)
local0-local7 為本地服務使用預留的服務
lpr 打印產生的日志
mail 郵件收發信息
news 與新聞服務器相關的日志
syslog 有syslog服務產生的日志信息(雖然服務名稱已經改為rsyslogd,但是很多配置都還是沿用了syslogd的,這里名沒有修改服務名)
user 用戶等級類別的日志信息
uucp uucp子系統的日志信息,uucp是早期Linux系統進行數據傳遞的協議,后來也常用在新聞組服務中。
c>.連接符號
連接符號可以識別為:
  “*”代表所有日志等級,比如“authpriv.*”代表authpriv認證信息服務產生的日志,所有的日志等級都記錄。
  “.”代表只要比后面等級高的(包含該等級)日志都記錄下來。比如:“cron.info”代表cron服務產生的日志,只要日志等級大於等於inifo級別,就記錄。
  “.=”代表值記錄所需等級的日志,其他等級的都不記錄。比如:“*.=emerg”代表任何服務日志產生的日志,只要記錄是emerg等級就記錄。這種用法極少,了解就好。
  “.!”代表不等於,也就是除了該等級的日志外,其他等級的日志都記錄。
 
d>.日志等級說明
等級名稱 說明
debug 一般的調試信息說明
info 基本的通知信息
notice 普通信息,但是有一定的重要性
warning 警告信息,但是還不會影響到服務或系統的運行
err 錯誤信息,一般達到err等級的信息以及可以影響到服務或系統的運行了。
crit 臨界狀況信息,比err等級還要重要
alert 警告狀態信息,比crit還要嚴重,必須立即采取行動
emerg 疼痛等級信息,系統以及無法使用了
e>.日志記錄位置
  日志文件絕對路徑,如“/var/log/secure”
  系統設備文件,如“/dev/lp0”
  轉發給遠程主機,如"@192.168.3.210:5200"
  用戶名,如“root”
  忽略或丟棄日志,如“~”
 
三.日志輪替
1.日志切割和日志替換
日志切割:
  就是把舊的日志文件移動並改名,同時建立新的日志文件。那么如何命名呢?主要依靠/etc/logrotate.conf配置文件的” dateext ”(系統默認是有該參數的)。 如果配置文件擁有“dateext”參數,那么日志就會用日期來作為日志文件的后綴,.如果配置文件啊當中沒有“dateext”參數,那么日志文件就需要進行改名。
日志替換:
  當舊的日志超過保存的范圍之后,就會自動刪除時間較早的日志。
 
2.常用的logrotate.conf參數詳解
參數 說明
compress 啟用壓縮,指的是輪替后的舊日志,這里默認用的是gzip壓縮的
compressoptions 以gzip -9的模式壓縮
uncompresscmd 解壓日志,默認是gunzip
daily 每天輪替選項
dateext 輪替的日志文件會附加上一個短橫線和YYYYMMDD格式的時間戳
delaycompress 將以前的日志文件壓縮推遲到下一次輪替
ifempty 即使日志文件是空的也輪替
mail 將輪替后的文件發送到指定E-mail地址
copytruncate 用於還在打開中的日志文件,把當前日志備份並截斷,開始輪替
mailfirst/maillast 向郵件發送輪替文件/輪替后歷史文件(默認)
monthly 一個月輪替一次
nocompress 如果在logrotate.conf中啟用了壓縮,這里是做不用壓縮的參數
nomail 不發送郵件到任何地址
ifempty 如果日志時空的就不輪替
olddir directory 輪替后日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統
postrotate/endscript 在做完輪替后的命令,兩個關鍵字必須單獨成行,使用的操作在2者之間相當於分組“{}”,注意的使用外部指令時要用絕對路徑
prerotate/endscript 在做輪替前的命令,同上
rotate count 輪替最多保留之前的數據幾次,超出的將被刪除或郵件接收,設為0則不保存
size size 當日志增長到指定大小的時候開始輪替,它不會考慮,例如:size 100k
start count 輪替文件名基於這個數字。
例如,指定0時,原日志文件輪替的備份文件以.0為擴展名,如果指定9,就直接從.9開始跳過0-8
然后再繼續向后輪替rotate指定的次數。
weekly 如果當前的星期幾比上次輪替的星期幾少,或者過了一個多星期,就會發生輪替通常是在每周的第一天輪替,如果logrotate不是每天運行的,會在第一次有機會時進行輪替。
yearly 如果當前年份不同於上次輪替的年份,則進行日志輪替
create mode owner group 在輪替動作之后,postrotate腳本執行之前,立即使用剛輪替的日志文件名創建日志文件。
MODE 指定日志文件的權限(0660之類)
OWNER 指定日志文件的屬主
GROUP 指定日志文件的屬組
extension ext 日志文件可在輪替后使用指定的EXT擴展名。如果使用壓縮,通常EXT后還會加上壓縮文件的擴展名,通常是.gz。例如想把mylog.foo輪轉為mylog.1.foo.gz而不是mylog.foo.1.gz
 
3.將Apache日志加入輪替
  其實在一般情況下,只有源碼安裝的軟件包才需要我們手動指定輪替,其他yum安裝的或是rpm方式安裝的全部都是默認的。相信玩Linux的老鳥們早就知道在“[root@yinzhengjie ~]# ls /var/log/”這個目錄下回自動有輪替的文件生成,然而我們並沒有配置,是因為rsyslogd服務是開機自啟的,而且任務的完成依賴於周期性計划任務。
  由於我的Apache是源碼安裝的,因此我需要手動指定輪替,生產環境中源碼安裝Apache之后,一定要做輪替,因為你不做輪替的話所有的日志會默認保存在一個文件中的,尤其是游戲公司的網站,一天的訪問量大的話可能就得用到1G的磁盤大小。如果文件過大是很難進行查看的喲!下面是我配置細節
 1 [root@yinzhengjie ~]# more /etc/logrotate.conf  | grep -v ^#  | grep -v ^$  2 weekly                            ----->定義全局變量,默認是每周生效。  3 rotate 4                            ------>保留四個日志  4 create                            ------->創建新日志  5 dateext                            ------->用日期來作為日志文件的后綴  6 include /etc/logrotate.d                ------->加載配置文件  7 /var/log/wtmp {                        ------->定義對/var/log/wtmp日志的輪替  8     monthly                        ------>按照月進行輪替,並不會被上面定義的weeky影響。  9     create 0664 root utmp 10  minsize 1M 11     rotate 1
12 } 13 /var/log/btmp {                        -------->定義對/var/log/btmp日志的輪替。 14  missingok 15  monthly 16     create 0600 root utmp 17     rotate 1
18 } 19 /yinzhengjie/apache/logs/access_log {    ------->這是我源碼安裝的Apache路徑,我們需要給該文件定義輪替。 20         daily        ----->指定按天輪替 21         create    ------>輪替的時候直接創建新的 22         rotate 30    ------>表示只保留前30天的。 23 
24 } 25 [root@yinzhengjie ~]# 26 [root@yinzhengjie ~]# 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM