博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
syslog协议介绍
阅读量:6218 次
发布时间:2019-06-21

本文共 3021 字,大约阅读时间需要 10 分钟。

syslog是网络上各种设备将日志收集到日志服务器的一种数据协议,它几乎被所有的网络设备支持,并且能够记录多种事件类型的日志消息,支持syslog的设备常见的有路由器、交换机、打印机等等,甚至unix-like的服务器也可以支持产生syslog消息,用以记录用户的登录、防火墙事件、apache或者nginx access日志等。

01c3a3590aea180e0edf863a5fe3f572e72b32f1_jpeg
上图是典型的syslog完整端到端的场景示意图,各种设备通过syslog协议将事件发送到syslog服务器,管理员配置一些监控规则,当有syslog事件触发监控规则时,syslog服务器向管理员发送报警,管理员响应报警。
目前日志服务已经支持接收syslog日志,详细内容请参考。

syslog的RFC标准

目前有两个syslog RFC标准RFC 3164、RFC 5424,两者的主要区别在于数据的格式不同,RFC 3164格式如下:

  1. Syslog包分为3个部分,PRI, HEADER,以及MSG,总长度不能超过1024个字节。其中PRI代表了facility以及severity,即代表消息来源以及消息的严重程度,因该字段只存在于syslog报文包头部分,在log中并不可见,因此我们在此不加以讨论。
  2. HEADER部分包含一个时间戳以及发送方的主机名或者ip地址,并且HEADER部分必须是一些可打印字符。时间戳部分是格式为”Mmm dd hh:mm:ss”的本地时间,其中Mmm是3个字母的英文缩写,如果日期小于10,必须用空格代替缺少的一个数字。主机名部分一般使用主机名,如果没有的话可以使用IPv4或者IPv6的地址。需要注意的是主机名中不能包含任何空格。时间戳和主机名后面都各自跟一个空格。
  3. MSG部分一般包含生成消息的进程信息(TAG field)以及消息正文(CONTENT field)。TAG部分主要是包含生成消息的进程信息,不能超过32个字符。消息体必须是一些可见字符,这部分就是消息的正文。TAG与CONTENT之间的间隔用非字母表字母隔开,一般用”[“,”:”或者空格隔开。

RFC 5424格式如下:

The syslog message has the following ABNF [RFC5234] definition:      SYSLOG-MSG      = HEADER SP STRUCTURED-DATA [SP MSG]      HEADER          = PRI VERSION SP TIMESTAMP SP HOSTNAME                        SP APP-NAME SP PROCID SP MSGID      PRI             = "<" PRIVAL ">"      PRIVAL          = 1*3DIGIT ; range 0 .. 191      VERSION         = NONZERO-DIGIT 0*2DIGIT      HOSTNAME        = NILVALUE / 1*255PRINTUSASCII      APP-NAME        = NILVALUE / 1*48PRINTUSASCII      PROCID          = NILVALUE / 1*128PRINTUSASCII      MSGID           = NILVALUE / 1*32PRINTUSASCII      TIMESTAMP       = NILVALUE / FULL-DATE "T" FULL-TIME      FULL-DATE       = DATE-FULLYEAR "-" DATE-MONTH "-" DATE-MDAY      DATE-FULLYEAR   = 4DIGIT      DATE-MONTH      = 2DIGIT  ; 01-12      DATE-MDAY       = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on                                ; month/year      FULL-TIME       = PARTIAL-TIME TIME-OFFSET      PARTIAL-TIME    = TIME-HOUR ":" TIME-MINUTE ":" TIME-SECOND                        [TIME-SECFRAC]      TIME-HOUR       = 2DIGIT  ; 00-23      TIME-MINUTE     = 2DIGIT  ; 00-59      TIME-SECOND     = 2DIGIT  ; 00-59      TIME-SECFRAC    = "." 1*6DIGIT      TIME-OFFSET     = "Z" / TIME-NUMOFFSET      TIME-NUMOFFSET  = ("+" / "-") TIME-HOUR ":" TIME-MINUTE      STRUCTURED-DATA = NILVALUE / 1*SD-ELEMENT      SD-ELEMENT      = "[" SD-ID *(SP SD-PARAM) "]"      SD-PARAM        = PARAM-NAME "=" %d34 PARAM-VALUE %d34      SD-ID           = SD-NAME      PARAM-NAME      = SD-NAME      PARAM-VALUE     = UTF-8-STRING ; characters '"', '\' and                                     ; ']' MUST be escaped.      SD-NAME         = 1*32PRINTUSASCII                        ; except '=', SP, ']', %d34 (")      MSG             = MSG-ANY / MSG-UTF8      MSG-ANY         = *OCTET ; not starting with BOM      MSG-UTF8        = BOM UTF-8-STRING      BOM             = %xEF.BB.BF

RFC 5424较新,用的比较少,目前主流的是RFC 3164。

主流的syslog工具有四种syslogd[RFC 3164]、sysklogd[RFC 5424]、syslog-ng、rsyslog,前两种的是系统组件,后两种是最近兴起的开源工具,syslog-ng、rsyslog可以兼容syslogd、sysklogd发送过来的数据,支持各种syslog协议数据的格式化、过滤等处理,比如可以定义数据的时间格式、按照syslog数据中任意部分过滤数据以及重定向输出到远端等。

转载地址:http://vdvja.baihongyu.com/

你可能感兴趣的文章
测时延
查看>>
window.location.href和window.location.replace的区别
查看>>
Linux目录结构、bash的基础命令学习
查看>>
8月全球Web服务器:Apache份额首次跌破50%
查看>>
7月全球搜索引擎市场:Google夺冠 份额被蚕食
查看>>
Flex笔记_使用Spark列表控件
查看>>
cronie所依赖的包
查看>>
Ubuntu 安装配置
查看>>
mysql concat 用法
查看>>
红黑树探索
查看>>
H.264介绍
查看>>
Java异常处理最佳实践
查看>>
Drupal安装配置文档(二)
查看>>
mdadm使用详解
查看>>
设计模式(一)——简介
查看>>
好程序员大数据分享MapReduce中job的提交流程
查看>>
FreeBSD 9.0创建单个与批量创建jail虚拟机
查看>>
我的友情链接
查看>>
JavaScript实现的拼图
查看>>
关于python无法显示中文的问题:SyntaxError: Non-ASCII character
查看>>