syslog协议介绍

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

上图是典型的syslog完整端到端的场景示意图,各种设备通过syslog协议将事件发送到syslog服务器,管理员配置一些监控规则,当有syslog事件触发监控规则时,syslog服务器向管理员发送报警,管理员响应报警。
目前日志服务已经支持接收syslog日志,详细内容请参考《日志服务(原SLS)新功能发布(6)--使用logtail接入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数据中任意部分过滤数据以及重定向输出到远端等。

时间: 2024-11-03 22:12:01

syslog协议介绍的相关文章

tcpdump syslog-tcpdump抓取syslog协议包的测试命令

问题描述 tcpdump抓取syslog协议包的测试命令 哪位大神知道tcpdump抓取syslog协议包的测试命令有哪些? 就是tcpdump -w syslog.cap port 514监听,使用哪个命令向其传送数据? 跪求!!!!! 解决方案 http://blog.csdn.net/kofandlizi/article/details/8106841

java开源项目研究 3.许可协议介绍

项目     如果你只是想学习使用一下开源项目,那么你可以跳过本节(了解一下更好^_^),但是如果你想在自己的产品(不管是开源的还是商业的)中集成开源项目,那么你必须了解许可协议.        开源项目的License可以分为三大类:     OSI-Approved Open Source:被开放源码组织(www.opensource.org)所批准的开放源码授权协议.像大家经常看到的Apache,GPL,LGPL,MIT Licence,都属于OSI-Approved的授权协议,OSI 的

在Linux下(VRRP)虚拟路由冗余协议介绍

这篇文章描述的是如何在Linux下实现VRRP (Virtual Router Redundancy Protocol 虚拟路由器冗余协议).是我本人在学习VRRP过程的一个小总结,并结合了一些其他资料,对VRRP的一些基本概念.原理及Linux如何实现VRRP的一个介绍. 1.VRRP介绍 我们在建立一个网络时,为了保证网络稳定不间断的运行,经常采用一些动态的路由协议,如OSPF.RIP等,这些路由协议可以自动的绕开很多的网络故障,如:路由器DOWN机等.但很多时候我们可能无法使用这些高端的路

RTP与RTCP协议介绍

1.流媒体( Streaming Media) 1.1流媒体概念 流媒体技术是网络技术和多媒体技术发展到一定阶段的产物.术语流媒体既可以指在网上传输连续时基媒体的流式技术,也可以指使用流式技术的连续时基媒体本身.在网上传输音频.视频等多媒体信息目前主要有两种方式:下载和流式传输.采用下载方式,用户需要先下载整个媒体文件,然后才能进行播放.由于网络带宽的限制,下载常常要花很长时间,所以这种处理方式延迟很大.而流媒体实现的关键技术是流式传输.传输之前首先对多媒体进行预处理(降低质量和高效压缩) ,然

主流流媒体服务器网络协议介绍

网络协议在电影服务器中占有很重要的地位,可以说如果没有网络协议,电影服务器就根本无法正常发挥作用.下面,小编就给大家简要介绍几种目前主流的网络协议,希望能够对大家了解电影服务器提供一些帮助. 1.断点续传:是指在下载文件的过程中,如果出现中断或终止,会保存下载的部分,当再次下载时,自动从中断的地方继续下载,而不需要重复下载以前的部分. 2.多线程:全称MultiThread,通常情况下使用IE下载文件的时候会将文件作为一个整体下载,而使用多线程技术可以将下载的文件分为几个部分同时下载,下载完毕后

VRRP协议介绍

参考资料: RFC 3768 1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还简化了一些功能. 2. 协议说明 2.1 协议 VRRP协议是为消除在静态缺省路由环境下的缺省路由器单点故障引起的网络失效而设计的主备模式的协议,使得在发生故障而进行设备功能切换时可以不影响内外数据通信,不需要再修改内部网络的网络参数.VRRP协议需要具有IP地址备份,

openssl数字证书常见格式与协议介绍

原文地址: http://blog.csdn.net/anxuegang/article/details/6157927 证书主要的文件类型和协议有: PEM.DER.PFX.JKS.KDB.CER.KEY.CSR.CRT.CRL .OCSP.SCEP等. PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采用的信息存放方式.Openssl 中的 PEM 文件一般包含如下信息: 内容类型:表明本文件存放的是什么信息内

各种开源协议介绍

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有58种(http://www.opensource.org/licenses/alphabetical).我们在常见的开源协议如BSD, GPL, LGPL, MIT等都是OSI批准的协议.如果要开源自己的代码,最好也是选择这些被批准的开源协议. BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码

HTTP协议介绍 记录

WWWC最终发布了一系列的RFC,其中最著名的就是RFC 2616.RFC 2616定义了HTTP协议的我们今天普遍使用的一个版本--HTTP 1.1. 尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层. 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现.HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用. 通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接.