- syslog.conf
- /etc/syslog.conf 是 syslogd 這個常駐程式的主要設定檔,它可以記錄linux的系統資訊,並且分類紀錄到各個檔案之中。
- 每一個規則包含2個欄位,第1個欄位是訊息的種類,第2個欄位是動作,也就是記錄的方式。2個欄位中間可用空白或是<tab>鍵分隔。以#開頭的一行會被忽略。訊息的種類當中,包含了2個資訊,1是訊息的種類,另1個是嚴重性,當者以 . 分隔;如下所示
- mail.none
- 訊息的種類包含了下列的關鍵字。auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,security(the same as auth),syslog,user,uucp,local0~local7
- authpriv:登入系統的訊息,包含管理者首一般使用者的帳號;將消息記錄到只有相關用戶能讀取的文件內
- cron:計時器的訊息
- daemon:各種常駐服務程式
- kern:系統核心
- local7:開機系統啟動的訊息
- lpr:列印指令的訊息
- mail:電子郵件的訊息
- news:新聞伺服器的訊息
- user:使用者相關訊息
- uucp:UNIX-toUNIX Copy Protocol之訊息
- auth:與用戶登錄,驗証密碼有關的訊息
- mark:定時發陝消息的時標程式
- ftp:與ftp守護進程有關的消息
- ntp:與網絡時間協議相關的消息
- 嚴重性則包含:debug->info->notice->warning->warn->err->error->crit->alert->emerg->panic ;
- 在設置級別的時侯通常不要使用err以下的級別,否則可能大量的消息很快就充滿整個disk,並且還會引起系統性能下降。
- 還有一個none的級別表程式中未給出選擇的偽級別
- 如果使用*,則表示所有的種類,或是所有的嚴重性。如mail.*,*.err,*.*
- 如果有多個重類期嚴重性相同,且使用相同的動作,可用逗號隔開。如
- uucp,news.crit
- 若多個種類其嚴重性不全相同,且使用相同的動作,可用分號隔開。如:
- *.info;mail.none;authpriv.none;cron.none /var/log/messages
- news.=err /var/log/news.err
- 把關於新聞伺服器的訊息,只要優先權等於會誤的訊息記錄到/var/log/news.err中
- cron.* /var/log/cron
- 所有來於cron的程序消息放入/var/log/cron的檔案中
- *.info;mail.none;authprive.none;cron.none /var/log/message
- *.info表示所有的大於info的消息會記錄到/var/log/message中,其他的mail如上項目雷同。
- mail.* @192.168.1.10
- 將消息發送到192.168.1.10的伺服器上
- mail.* @ServerName
- authprive.*;authprive.!=info /var/log/authprive.log
- 將登入系統的所有訊息,統統記錄在此檔案,但是對包含優先權為info的。
- 日誌消息的格式
- time hostname process version:informat
- time:產生的時間
- hostname:產生日誌的主機
- process:產生日誌的應用程序
- version:產生此日誌的應用程序或系統服務版本號
- infomation:內容
- 發出消息/記錄/日誌 logger 指令
- 命令格式
- logger [option] message
- 常用選項
- i:使用logger的pid作為消息的pid
- p:使用指定選擇域
- t:使用指定進程的名稱
- sample
- logger -i -p local7.err test.sh "Canred Test"
- 在以上的動作是寫到記錄檔,但這個紀錄檔並不一定是真實的檔案,有可能是終端機,可能是別台主機etc。
- 本機的檔案
- /var/log/maillog
- 終端機或是主機前的console
- /dev/console , /dev/pts/0
- 遠端的主機
- 以@開頭
- @canredHome
日誌輪循logrotate,隨著時間越來越長syslogd將新篩選的日誌消息不斷地寫入指定的文件未尾。日誌文件會變得越來越長,占用的disk空間也越來越多。另一方面,如果系統管理員要查看娛一時刻的日誌消息,太大也不便查看,這時就要有一個日誌輪循的功能啦…
- logrotate是一個循環、壓縮、以及郵寄系統記錄檔的系統程式。
- 語法如下:logrotate [-dv] [-f] [-s] config_file +
- 例如執行default的/etc/logrotate.conf,可以執行下行指令
- logrotate /etc/logrotate.conf
- logrotate是設計來簡化系統產生的龐大紀錄檔案,它允許自動的循環使用、壓縮、移動以及郵寄記錄檔,當紀錄檔太大時,可以每天、每週、每月的管理
- 一般面言,logrotate可視為每天執行的例行性工作,其功能如下:
- -d:開啟除錯模式。在除錯模式之下,紀錄檔將不會有任何的改變
- -f:強制模制。告訴logrotate強迫循環,即使logrotate本身認為並不需要
- -m:寄信。告訴logrotate用什麼指令去寄出紀錄檔
- -s:告訴logrotate使用一個交換狀態的紀錄檔。當我們使用不同的帳號來設定多樣的紀錄檔,這是有用的。預設的狀態紀錄在/var/lib/logrotate/status。
- --usage:使用量,列出使用者的狀態。
- 範例1(以下是程式碼哦)
#紀綠檔在循環過後將被壓縮。
compress
#要撐握 /var/log/message 的記錄檔,紀錄再經過5週的循環後將被移除,也
#就是說備存5週,並且在循環後,系統會透過/sbin/killall -HUP syslogd的指令
#來重新啟動syslogd服務
/var/log/message {
rotate 5
weekly
postrotate
/sbin/killall -HUP syslogd
endscript
}
#設定2個紀錄檔案的規則;這2個檔案將進行循環當內容達到100k的時侯,並且
#在遍環5次時,會將檔案寄給管理者,並移除檔案
"/var/log/httpd/access.log" /var/log/httpd/error.log {
rotate 5
mail canred.chen@gmail.com
size=100k
sharedscripts
postrotate
/sbin/killall -HUP httpd
endscript
}
#當中每個檔案都是以一個月為基底來做遍環。這被考慮成一個單獨的循環目錄,
#且若是錯誤發生超過1個檔案,亡錄檔將不會被壓縮
#在使用*字元時要特別小心,因為是循環所有檔案
/var/log/news/* {
monthly
rotate 2
olddir /var/log/news/old
missingok
postrotate
kill -HUP `cat /var/run/inn.pid`
endscript
nocompress
}
- 範例2(底下將列出並說明RedHat9中的/etc/logrotate.conf),以下內容是一體看的哦
- weekly
- 每週循環一次日誌檔的相關紀紀錄
- rotate 4
- 最多保留4週
- create
- 清除舊的日誌檔時,會自動產生新的日誌檔
- compress
- 將紀錄檔壓縮
- include /etc/logrotate.d
- RPM的套件會將相關設定檔置於/etc/logrotate.d/之下
- /var/log/wtmp{
- monthly
- carete 0644 root utmp
- rotate 1
- }
- 2013/4/24:
- 新增:
- syslog.conf 訊息種類的設定方式還可以加上"=","!"的用法
沒有留言:
張貼留言