更多請關注 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