更多請關註 Linux命令大全 syslog 介紹 syslog是Linux系統預設的日誌守護進程。預設的syslog配置文件是/etc/syslog.conf文件。程式,守護進程和內核提供了訪問系統的日誌信息。因此,任何希望生成日誌信息的程式都可以向 syslog 介面呼叫生成該信息。 幾乎所有的 ...
更多請關註 Linux命令大全
syslog 介紹
syslog是Linux系統預設的日誌守護進程。預設的syslog配置文件是/etc/syslog.conf文件。程式,守護進程和內核提供了訪問系統的日誌信息。因此,任何希望生成日誌信息的程式都可以向 syslog 介面呼叫生成該信息。 幾乎所有的網路設備都可以通過syslog協議,將日誌信息以用戶數據報協議(UDP)方式傳送到遠端伺服器,遠端接收日誌伺服器必須通過syslogd監聽UDP 埠514,並根據 syslog.conf配置文件中的配置處理本機,接收訪問系統的日誌信息,把指定的事件寫入特定文件中,供後臺資料庫管理和響應之用。意味著可以讓任何事件都登錄到一臺或多台伺服器上,以備後臺資料庫用off-line(離線) 方法分析遠端設備的事件。 通常,syslog 接受來自系統的各種功能的信息,每個信息都包括重要級。/etc/syslog.conf 文件通知 syslogd 如何根據設備和信息重要級別來報告信息。
關於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中,不過這個規範的很多內容都不是強制性的,常常是“建議”或者“約定”,也由於這個規範出的比較晚,很多設備並不遵守或不完全遵守這個規範。接下來就介紹一 下這個規範。
約定發送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 使用方法
在/var/log中創建並寫入日誌信息是由syslog協議處理的,是由守護進程sylogd負責執行。每個標準的進程都可以用syslog記錄日誌。可以使用logger命令通過syslogd記錄日誌。 要向syslog文件/var/log/messages中記錄日誌信息:
logger this is a test log line 輸出: tail -n 1 messages Jan 5 10:07:03 localhost root: this is a test log line
如果要記錄特定的標記(tag)可以使用:
logger -t TAG this is a test log line 輸出: tail -n 1 messages Jan 5 10:37:14 localhost TAG: this is a test log line