歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

什麼是syslogd

  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 [color=red]syslog[/color] status     或者:   代碼:   ps -auxgrep 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中的一部分:   引用:     # 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: 警告信息;     [color=black]上面三個信息雖然是提醒您注意,但是卻還沒有到錯誤的情況。下面的信息就要注意了。[/color]     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是為系統提供日志服務的。那麼,我們在配置文件中定義的日志信息和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/messagesgrep 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 下面的文檔看看。




Copyright © Linux教程網 All Rights Reserved