1. 程式人生 > >syslog介紹-CS架構來采集系統日誌

syslog介紹-CS架構來采集系統日誌

enter lan 程序 -c syslog 讀取 linux中 /dev/ 消息發送

syslog架構

Unix/Linux系統中的大部分日誌都是通過一種叫做syslog的機制產生和維護的。syslog是一種標準的協議,分為客戶端和服務器端,客戶端是產生日誌消息的一方,而服務器端負責接收客戶端發送來的日誌消息,並做出保存到特定的日誌文件中或者其他方式的處理。 在Linux中,常見的syslog服務器端程序是syslogd守護程序。這個程序可以從三個地方接收日誌消息:(1)Unix域套接字 /dev/log;(2)UDP端口514;(3)特殊的設備/dev/klog(讀取內核發出的消息)。相應地,產生日誌消息的程序就需要通過上述三種方式寫入消息,對於大多數程序而言就是向/dev/log這個套接字發送日誌消息。 技術分享

關於syslog的協議

介紹

在Unix類操作系統上,syslog廣泛應用於系統日誌。syslog日誌消息既可以記錄在本地文件中,也可以通過網絡發送到接收syslog的服務器。接收syslog的服務器可以對多個設備的syslog消息進行統一的存儲,或者解析其中的內容做相應的處理。常見的應用場景是網絡管理工具、安全管理系統、日誌審計系統。
完整的syslog日誌中包含產生日誌的程序模塊(Facility)、嚴重性(Severity或 Level)、時間、主機名或IP、進程名、進程ID和正文。在Unix類操作系統上,能夠按Facility和Severity的組合來決定什麽樣的日誌消息是否需要記錄,記錄到什麽地方,是否需要發送到一個接收syslog的服務器等。由於syslog簡單而靈活的特性,syslog不再僅限於 Unix類主機的日誌記錄,任何需要記錄和發送日誌的場景,都可能會使用syslog。
長期以來,沒有一個標準來規範syslog的格式,導致syslog的格式是非常隨意的。最壞的情況下,根本就沒有任何格式,導致程序不能對syslog 消息進行解析,只能將它看作是一個字符串。
在2001年定義的RFC3164中,描述了BSD syslog協議: http://www.ietf.org/rfc/rfc3164.txt 不過這個規範的很多內容都不是強制性的,常常是“建議”或者“約定”,也由於這個規範出的比較晚,很多設備並不遵守或不完全遵守這個規範。接下來就介紹一 下這個規範。
約定發送syslog的設備為Device,轉發syslog的設備為Relay,接收syslog的設備為Collector。Relay本身也可以發送自身的syslog給Collector,這個時候它表現為一個Device。Relay也可以只轉發部分接收到的syslog消息,這個時候它同時表現為Relay和Collector。
syslog消息發送到Collector的UDP 514端口,不需要接收方應答,RFC3164建議 Device 也使用514作為源端口。規定syslog消息的UDP報文不能超過1024字節,並且全部由可打印的字符組成。完整的syslog消息由3部分組成,分別是PRI、HEADER和MSG。大部分syslog都包含PRI和MSG部分,而HEADER可能沒有。

syslog的格式

下面是一個syslog消息: <30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting. 其中“<30>”是PRI部分,“Oct 9 22:33:20 hlfedora”是HEADER部分,“auditd[1787]: The audit daemon is exiting.”是MSG部分。

摘自:http://blog.csdn.net/smstong/article/details/8919803

syslog介紹-CS架構來采集系統日誌