天天看點

syslog協定介紹

syslog是網絡上各種裝置将日志收集到日志伺服器的一種資料協定,它幾乎被所有的網絡裝置支援,并且能夠記錄多種事件類型的日志消息,支援syslog的裝置常見的有路由器、交換機、列印機等等,甚至unix-like的伺服器也可以支援産生syslog消息,用以記錄使用者的登入、防火牆事件、apache或者nginx access日志等。

syslog協定介紹

上圖是典型的syslog完整端到端的場景示意圖,各種裝置通過syslog協定将事件發送到syslog伺服器,管理者配置一些監控規則,當有syslog事件觸發監控規則時,syslog伺服器向管理者發送報警,管理者響應報警。

目前日志服務已經支援接收syslog日志,詳細内容請參考《日志服務(原sls)新功能釋出(6)--使用logtail接入syslog資料》。

目前有兩個syslog rfc标準rfc 3164、rfc 5424,兩者的主要差別在于資料的格式不同,rfc 3164格式如下:

syslog包分為3個部分,pri, header,以及msg,總長度不能超過1024個位元組。其中pri代表了facility以及severity,即代表消息來源以及消息的嚴重程度,因該字段隻存在于syslog封包標頭部分,在log中并不可見,是以我們在此不加以讨論。

header部分包含一個時間戳以及發送方的主機名或者ip位址,并且header部分必須是一些可列印字元。時間戳部分是格式為”mmm dd hh:mm:ss”的本地時間,其中mmm是3個字母的英文縮寫,如果日期小于10,必須用空格代替缺少的一個數字。主機名部分一般使用主機名,如果沒有的話可以使用ipv4或者ipv6的位址。需要注意的是主機名中不能包含任何空格。時間戳和主機名後面都各自跟一個空格。

msg部分一般包含生成消息的程序資訊(tag field)以及消息正文(content field)。tag部分主要是包含生成消息的程序資訊,不能超過32個字元。消息體必須是一些可見字元,這部分就是消息的正文。tag與content之間的間隔用非字母表字母隔開,一般用”[“,”:”或者空格隔開。

rfc 5424格式如下:

rfc 5424較新,用的比較少,目前主流的是rfc 3164。

主流的syslog工具有四種syslogd[rfc 3164]、sysklogd[rfc 5424]、syslog-ng、rsyslog,前兩種的是系統元件,後兩種是最近興起的開源工具,syslog-ng、rsyslog可以相容syslogd、sysklogd發送過來的資料,支援各種syslog協定資料的格式化、過濾等處理,比如可以定義資料的時間格式、按照syslog資料中任意部分過濾資料以及重定向輸出到遠端等。

繼續閱讀