2007年2月25日 星期日

log server與分析syslog

前天回到學校,發現流量紀錄無法顯示,導致不知誰破流量了,聯絡oa後處理掉了,原來是前幾天停電,Server開機後syslog服務沒有啟動,設備的紀錄檔寫不進來...

不知怎樣心血來潮,突然想把流量顯示頁面重寫,於是拿了原本用perl的Source來看了一下,發現只是撈紀錄檔的動作而已,不過沒用過log server於是翻了一下資料把syslog服務設定修改一下就能接收資料了,不過項目我使用的是*.*所以所有的事件都會被紀錄(連本機紀錄也會),於是找了一下資料發現項目是在rfc3164中定義的,不過syslog的識別字並不是這個又找了一篇syslog文件才開始測,最後終於在local6這個項目收到gaidp這個服務紀錄,不過沒有發現iplog這個服務的紀錄,最後找到iplog官方文件,預設項目是daemon,紀錄檔ok了接著是分析程式,我選擇用php寫,因為宿網系統本身就是php寫的,這個php程式是使用命令列模式由crond服務以root身分(否則無法讀取/移動紀錄檔)定時執行,然後產生靜態HTML頁面,如果執行時已經是24時,則把紀錄檔改成日期檔名備分,重新載入syslog服務(不重新載入,無法將紀錄寫入新的紀錄檔,會持續寫入已經改名的檔案中@@?)

參考資料

RFC 3164
http://www.faqs.org/rfcs/rfc3164.html

The UNIX System Log (syslog) Facility
http://www.unix.org.ua/orelly/networking/puis/ch10_05.htm

http://ojnk.sourceforge.net/stuff/iplog.changelog
Use daemon.notice as the default facility and priority. Apparently
daemon.info was being dropped by the default syslog configuration on
FreeBSD (at least).