下面的文章是瞭解系統日誌是看到別人寫的,現在貼出來為了使自己記住沒有掌握的Linux功能。
-------------
文檔目錄
-------------
1 什麼是syslogd
2 配置syslogd的說明
3 syslogd和系統中服務配置中日誌的關係
4 什麼是logrotate
5 配置logrotate的說明
-------------
文檔本文
-------------
1 什麼是syslogd
syslogd可以簡單地被稱為記錄系統活動的一個daemons。比如可以記錄誰,在什麼時間,在哪裡,做了什麼事情(像是在寫記敘文啊);也可以記錄您的系統曾經發生過什麼事情,比如什麼時候重新引導過、軟硬體的錯誤資訊等;當然也記錄著您系統上運行著的服務的資訊。
很多時候,有朋友上來就問,“我的X不能啟動了是怎麼回事啊?!”問號和歎號這樣使用在語文規範上是不允許的,但是我們可以獲知,他的心情是急迫的。可是為什麼您不先考慮一下您做了什麼更改,為什麼不先看看是否有錯誤輸出,為什麼不看看記錄檔?起碼,日誌為解決問題提供了很好的參考啊。很多人講自己的某個裝置不工作,dmesg的資訊您是否認真參考了?
syslogd做的是瑣碎的工作,但卻是相當重要的工作。很多朋友為了提高系統的效能,節省那一點點資源就決定把這個daemons停掉。我認為,這是不可取的。
syslogd記錄的日誌一般在/var/log/下,當然也有儲存在另外的伺服器上的。因為syslogd記錄的資訊實在是太重要了,所以還要涉及日誌安全的問題。
一般系統中日誌資訊:
/var/log/secure: 記錄系統的安全資訊,比如ssh、ftp、pop3等;
/var/log/wtmp: 記錄誰曾經登陸過系統,由於本日誌被編碼過,所以只能用last命令查看;
/var/log/boot.log: 顧名思義,記錄開啟或者關閉系統及武夫的資訊;
/var/log/message:系統發生的錯誤資訊都會記錄在這個日誌中,比如iptables中您使用log功能的日誌;
/var/log/mail:
/var/log/httpd/
/var/log/mysqld.d 等,記錄的就是這些服務的日誌。
2 配置syslogd的說明
2.1 啟動syslogd服務
首先,您要確定您的系統是否運行著這個服務。
service syslog status
或者:
ps -aux|grep syslog
如果您的系統中並沒有運行這個服務,您可以開啟它。方法很多啦。
service syslog start
如果您希望系統在下次啟動的時候就運行syslogd,您可以在setup中的服務中添加。如果確定您的預設引導層級,比如3,那麼您也可以在/etc/rc.d/rc3.d/下添加以 S 開頭的軟串連。或者,您使用chkconfig 2345 syslog on來添加。
2.2 syslogd服務的設定檔
syslogd的設定檔一般在/etc/syslog.conf中。這個檔案依然遵循你所見過的其它設定檔的規則,比如 # 是注釋。您可以看看您的syslogd都在協助您記錄著什麼。這是我的syslog.conf中的一部分:
QUOTE:
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* /var/log/maillog
# Log cron stuff
cron.* /var/log/cron
2.3 syslog.conf的配置規則
服務名稱.資訊等級 存放或者顯示地點
這個文法很簡單呢。
服務名稱
mail http at cron kern 等等。
資訊等級
info: 一些提示資訊資料;
notice: 需要您注意的資訊;
warn或者waring: 警告資訊;
上面三個資訊雖然是提醒您注意,但是卻還沒有到錯誤的情況。下面的資訊就要注意了。
error或者err: 錯誤資訊。您需要仔細檢查發生錯誤的原因了;
crit: 很嚴重的錯誤,到達臨界點了;
alert: 警告! 是否想起了“Red Alert”?不過,在這裡這可是相當嚴重的錯誤啊;
emerg或者panic:系統混亂,重做吧;
特別的:
debug: 將顯示很多資訊;
none: 顧名思義,什麼資訊也不記錄。
存放或者顯示地點
日誌的絕對路徑: 比如/var/log;
您的一個使用者 ;
網路上的主機: @log.company.com
印表機: /dev/lp0
2.4 應用舉例
mail.info /var/log/maillog
大於等於info的資訊都會寫到/var/log/maillog中。
mail.*;cron.* /var/log/mailcron mail.=warn;cron.=warn /var/log/mailcronwarn
等級為warn的資訊,寫進/var/log/mailcronwarn,其它的資訊寫進/var/log/mailcron。
*.*;mail,cron.none /var/log/message
*.*;mail.none;cron.none /var/log/message
記錄除去mail和cron之外的所有服務的所有資訊。
3 syslogd和系統中服務配置中日誌的關係
上面已經說了,syslogd是為系統提供Log Service的。那麼,我們在設定檔中定義的日誌資訊和syslog.conf有什麼關係呢?
或者您也注意到了這段:
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
這段話是什麼意思呢?我認為是在/var/log/messages中記錄除去mail、authpriv和cron之外的所有系統資訊。也就是說它會記錄您自己的http資訊。是否這樣呢?我自己安裝了一個httpd,並且指定日誌到另外一個檔案,比如/usr/website/log/httplog。我雖然可以在/usr/website/log/httpdlog中看到我的httpd的日誌資訊,但是我執行
# cat /var/log/messages|grep HTTP
卻得到空。
另外,就這個問題我曾經請教一個朋友。他說syslogd不會記錄你沒有要求它記錄的資訊,雖然有上面的*.info但是這個*是不包括你自己的服務的。我問,那麼iptables也沒有在我的syslog.conf中要求,那為什麼它會記錄到/var/log/messages呢?或者是iptables自己定義了吧。
所以,關於這段的理解我只有這樣的認識。如果有錯誤,請您指出。
4 什麼是logrotate
logrotate是對記錄檔做輪換。就是把現在的log命名為log.1,然後繼續寫log。如果存在log.1就命名log.1為log.2然後命名log為log.1,依此類推,但並非沒有盡頭。這個盡頭就是您在logrotate的設定檔中的定義,我的系統預設的是到4。那麼對log.4做什麼操作呢?刪除。
syslogd是daemons方式啟動並執行;
logrotate是按計劃啟動並執行。
5 配置logrotate的說明
5.1 設定檔的位置
/etc/logrotate.conf
/etc/logrotate.d
其中,/etc/logrotate.conf是主要設定檔,/etc/logrotate.d中的檔案會被/etc/logrotate.conf讀取。如果您在/etc/logrotate.d中的設定檔沒有規定具體的參數,則這些參數由/etc/logrotate來決定。
5.2 logrotate的配置規則
正如在上面5.1中所說的,logrotate的主要配置在/etc/logrotate.conf中設定,而/etc/logrotate.d中的檔案是對/etc/logrotate.conf的補充。或者可以看作為了不使/etc/logrotate.conf過大而設定。logrotate的寫法:
把logfile(s)寫在前面,包含檔案的絕對路徑,可以使用空白字元分隔多個log,也可以使用統配符置換;
用 { } 包含所有設定;
一般包括:
prerotate 在啟動 logrotate 之前執行的命令,比如 /usr/bin/charrt -a /var/log/logfile;
postrotate 在執行了 logrotate 之後執行的命令,比如 /usr/bin/charrt +a /var/log/logfile;
您可以設定執行如上兩個動作,也可以不設定,這依賴於您的需要。
在prerotate與postrotate之間的動作有:
weeky #每個星期執行一次
rotate 4 #保留四個日誌
create #logratoe之後再建立日誌
compress #rotate之後的日誌是否壓縮
include /etc/logrotate.d #包含/etc/logrotate.d目錄下面的輪換設定
如果您自己在/etc/logrotate.d下寫了自己的輪換設定可以使用
logrotate -f yourfile
來測試。
5.3 應用舉例
鑒於這個文檔的設定比較明了所以不在此舉例。您可以參考您的 /etc/logrotate.conf 和 /etc/logrotate.d 下面的文檔看看。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/cneaglelee/archive/2009/06/27/4301513.aspx