- syslog協議
syslog也是個cs結構的協議,走UDP方式,與snmp的get、set方式不同,其結構更近似snmp的trap,也就是採用被動接受方式。在被監控上有個產生消息的agent,在監控端有個server進行偵聽。
syslog是個簡單的協議,主要定義了個報文結構(rfc3164)。報文由報頭(PRI part、Header Part)和報體(MSG part)組成。PRI part是用“<”、“>”包起來的ASCII數值,接收程序中處理成整數後,前面5個bit表示來源(Facilities),後3個bit表示嚴重性(Severity)。Header Part主要是時間。MSG part就是內容了。報文是ASCII碼的字符串。
http://www.networkdictionary.cn/Protocol/Syslog-Protocol.php底部可下載rfc3164.pdf
該協議雖簡單,但麻煩就來源於簡單。由於協議中未給出詳細的規定,各家廠商都有自己的Header Part、MSG part結構。這樣解析消息時間、內容都不相同。
例如:華爲交換機的格式爲:
<189>Jun 7 05:22:03 2003 Quidway IFNET/6/UPDOWNine protocol on interface Ethernet0/0/0, changed state to UP
cicso格式爲:
<189>931: *Sep 11 20:07:26: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/2, changed state to down
- 交換機配置
華爲:
>sys
>info-center loghost xxx.xxx.xxx.xxx //監控端IP
>info-center channel 2 //往哪個通道輸出消息。缺省情況下,通道0~9的名稱分別爲console,monitor,loghost,trapbuffer,logbuffer,snmpagent,channel6,channel7,channel8,channel9。
>info-center enable //啓動
>dis info-center //查看配置
cicso:
>config terminal
>logging xxx.xxx.xxx.xxx
>logging facility local7 //將Facilities>local7消息都報告
>logging source-interface xxxx.xxx.xxx.xxx //指定本設備發送消息時用的IP
>logging on //啓動
- 編程
syslog用的是UDP方式,直接用jdk的java.net包下的類就成。