顯示具有 syslog 標籤的文章。 顯示所有文章
顯示具有 syslog 標籤的文章。 顯示所有文章

2010年7月18日 星期日

syslog的愛、勇氣與希望...

話說plqadmin第二版已經邁入說好的rev 60但是有些部分還沒修改完畢,像是php寫的syslog接收器
於是今天去加班了,星期五已經把log的解析完成了,也是用動態建立物件的方式來延伸支援的log格式
主流程在接收UDP 514的訊號,原本想說應該可以很快完成的,沒想到遇到syslog無法轉拋到本機的問題
也許你會問為什麼要拋到本機,因為我想接收log來記錄某些事件作為報表

就目前理解的syslog架構為 App -> /dev/log -> syslog demon -> logfile or remote syslog
log轉拋之前實做的經驗是在/etc/syslog.conf加入下列的設定就能轉拋到遠端

*.* @ip

但是今天發現,這個IP如果是本機,就收不到任何的東西,也沒任何錯誤出現
使用debug模式啟動syslog的時發現下面的訊息

Called fprintlog, logging to FORW(UNKNOWN) 127.0.0.1
Forwarding suspension not over, time left: 180


仔細看了一下訊息又發現
syslog只要有要往外拋的設定,他就會使用UDP 514來發送
沒錯就是用來收log的PORT,推論因此無法同時收與發送

forwarding host: 127.0.0.1
Opened UNIX socket `/dev/log'.
Opened syslog UDP port.


不過如果修改/etc/services 內的syslog服務的port為5140
依然無法拋到本機,出現同樣的訊息,原因不明...|||

最後還有一招將log拋到pipe去,在syslog.conf的說明裡面有寫

*.* |/tmp/my.pipe

可以將log丟到具名的管道中,這不為是個好辦法
but管道的證資料,並不會完整的出現,有一些會留在pipe中直到下一次flush才會出現
我想這就跟沖馬桶一樣,總有些東西會卡在裡面

所以接收程式要能判斷log是不是完整的,至於怎麼判斷....
提示:跟\n有關

2007年3月22日 星期四

gaquota0.3

接續近一個月前的syslog文章,歷經一個月的上線測試,小弟終於完成了gaquota0.3版,這個版本修正許多0.1版的問題,首先0.1版syslog的設定並不會儲存quota資訊,這在當天發文點後不久就發現了,所以整個列表都是空的,而如果把*.*加入syslog的話,紀錄檔會膨脹的很大,於是設計了一個script來過濾ga的紀錄,使用一個tail和gerp來過濾所有的紀錄並導向galog.log,為了讓這個命令一直執行,接著使用nohup命令來代理執行,這樣可以在終端機登出後一直保持執行的狀態,後來參考其他init.d裡的啟動腳本加上start/stop/status等參數。

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).