转: http://liu-hliang.iteye.com/blog/827392

在网上搜的文章,写的很全乎。摘抄如下,供大家参考学习

1、介绍

在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中,描述了BSD syslog协议:
http://www.ietf.org/rfc/rfc3164.txt
    不过这个规范的很多内容都不是强制性的,常常是“建议”或者“约定”,也由于这个规范出的比较晚,很多设备并不遵守或不完全遵守这个规范。接下来就介绍一 下这个规范。

约定发送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可能没有。

2、syslog的格式

下面是一个syslog消息:
<30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting.
    其中“<30>”是PRI部分,“Oct 9 22:33:20 hlfedora”是HEADER部分,“auditd[1787]: The audit daemon is exiting.”是MSG部分。

2.1、PRI部分 
    PRI部分由尖括号包含的一个数字构成,这个数字包含了程序模块(Facility)、严重性(Severity),这个数字是由Facility乘以 8,然后加上Severity得来。不知道他们为什么发明了这么一种不直观的表示方式。
也就是说这个数字如果换成2进制的话,低位的3个bit表示Severity,剩下的高位的部分右移3位,就是表示Facility的值。
十进制30 = 二进制0001 1110
0001 1... = Facility: DAEMON - system daemons (3)
.... .110 = Severity: INFO - informational (6)

Facility的定义如下,可以看出来syslog的Facility是早期为Unix操作系统定义的,不过它预留了User(1),Local0~7 (16~23)给其他程序使用:

Numerical             Facility
         Code

0             kernel messages
          1             user-level messages
          2             mail system
          3             system daemons
          4             security/authorization messages (note 1)
          5             messages generated internally by syslogd
          6             line printer subsystem
          7             network news subsystem
          8             UUCP subsystem
          9             clock daemon (note 2)
         10             security/authorization messages (note 1)
         11             FTP daemon
         12             NTP subsystem
         13             log audit (note 1)
         14             log alert (note 1)
         15             clock daemon (note 2)
         16             local use 0  (local0)
         17             local use 1  (local1)
         18             local use 2  (local2)
         19             local use 3  (local3)
         20             local use 4  (local4)
         21             local use 5  (local5)
         22             local use 6  (local6)
         23             local use 7  (local7)

Note 1 - Various operating systems have been found to utilize
          Facilities 4, 10, 13 and 14 for security/authorization,
          audit, and alert messages which seem to be similar.
       Note 2 - Various operating systems have been found to utilize
          both Facilities 9 and 15 for clock (cron/at) messages.

Severity的定义如下:

Numerical         Severity
        Code

0       Emergency: system is unusable
         1       Alert: action must be taken immediately
         2       Critical: critical conditions
         3       Error: error conditions
         4       Warning: warning conditions
         5       Notice: normal but significant condition
         6       Informational: informational messages
         7       Debug: debug-level messages

也就是说,尖括号中有1~3个数字字符,只有当数字是0的时候,数字才以0开头,也就是说00和01这样在前面补0是不允许的。

2.2、HEADER部分 
    HEADER部分包括两个字段,时间和主机名(或IP)。
    时间紧跟在PRI后面,中间没有空格,格式必须是“Mmm dd hh:mm:ss”,不包括年份。“日”的数字如果是1~9,前面会补一个空格(也就是月份后面有两个空格),而“小时”、“分”、“秒”则在前面补“0”。月份取值包括:
Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec

时间后边跟一个空格,然后是主机名或者IP地址,主机名不得包括域名部分。

因为有些系统需要将日志长期归档,而时间字段又不包括年份,所以一些不标准的syslog格式中包含了年份,例如:
<165>Aug 24 05:34:00 CST 1987 mymachine myproc[10]: %% It's
time to make the do-nuts. %% Ingredients: Mix=OK, Jelly=OK #
Devices: Mixer=OK, Jelly_Injector=OK, Frier=OK # Transport:
Conveyer1=OK, Conveyer2=OK # %%
    这样会导致解析程序将“CST”当作主机名,而“1987”开始的部分作为MSG部分。解析程序面对这种问题,可能要做很多容错处理,或者定制能解析多种syslog格式,而不仅仅是只能解析标准格式。

HEADER部分后面跟一个空格,然后是MSG部分。
    有些syslog中没有HEADER部分。这个时候MSG部分紧跟在PRI后面,中间没有空格。

2.3、MSG部分 
    MSG部分又分为两个部分,TAG和Content。其中TAG部分是可选的。
    在前面的例子中(“<30>Oct 9 22:33:20 hlfedora auditd[1787]: The audit daemon is exiting.”),“auditd[1787]”是TAG部分,包含了进程名称和进程PID。PID可以没有,这个时候中括号也是没有的。
    进程PID有时甚至不是一个数字,例如“root-1787”,解析程序要做好容错准备。

TAG后面用一个冒号隔开Content部分,这部分的内容是应用程序自定义的。

3、RFC3195 
    BSD syslog协议使用UDP协议在网络中传递,然而UDP是一个不可靠的协议,并且syslog也没有要求接收方有所反馈。为了解决这个问题,RFC又定义了一个新的规范来可靠的传递syslog消息,它使用TCP协议:
http://www.ietf.org/rfc/rfc3195.txt
    不过大多数情况下,使用UDP发送不需要确认的syslog消息,已经能够满足要求了,并且这样做非常简单。因此到目前为止,RFC3195的应用还是很少见的。 
   本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xcj0535/archive/2009/05/07/4158624.aspx

转载于:https://www.cnblogs.com/jhj117/p/5454816.html

转: Syslog协议介绍相关推荐

  1. Syslog协议介绍

    Syslog协议用于多种设备间的信息传递和日志审计,各个厂家的设备间都遵守此协议可以快速实现对接. 1.介绍 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本 ...

  2. RFC3164 – BSD Syslog协议

    文档状态 本文档提供了互联网委员会的信息.它不指定任何一种网络规范.对本文档的发布是不受限制的. 摘要 本文描述了syslog协议的实测行为.本协议在互联网上已经使用了很多年,是用来传送事件通知信息的 ...

  3. 【系统审计】syslog协议及其实现日志转发到syslog服务器

    一.syslog协议       linux系统中大部分日志是通过一种syslog机制产生和维护的.syslog是一种协议,分为客户端和服务器端.客户端产生日志,服务器端接收日志.并对接收的日志做出保 ...

  4. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  5. syslog服务器默认使用协议,什么是syslog协议?

    在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器.接收syslog的服务器可以对多个设备的syslog消 ...

  6. open source license主流的开源软件协议介绍

    open source license主流的开源软件协议介绍(20190222) 文章目录: 一.开源软件的直观介绍 二.常用开源协议介绍 三.常用开源协议之间的对比 当Adobe.Microsoft ...

  7. SNMP协议介绍和操作截图

    第一章 SNMP协议介绍 SNMP协议 基于TCP/IP的网络管理包含3个组成部分: 1) 一个管理信息库MIB(Management Information Base).管理信息库包含所有代理进程的 ...

  8. VRRP协议介绍--转

    http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...

  9. Python教程之udp和tcp协议介绍

    UDP介绍 UDP - 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地.由于UDP在传输数据 ...

  10. (4)ZYNQ AXI4总线协议介绍

    1.1 ZYNQ AXI4总线协议介绍 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)ZYNQ AXI4总线协议介绍: 5)结束语. 1.1.2 本节引言 " ...

最新文章

  1. 7 Papers Radios | 6年前的ResNet重回巅峰;AI辩手登上Nature封面
  2. java xsl生成word文件_导出生成xsl文件
  3. OpenCV-信用卡数字识别-03
  4. JavaScript产生一个n到m之间的随机数
  5. 基于live555实现的RTSPServer对底层进行性能优化的方法
  6. 带grub的软盘镜像制作
  7. plsqldev12 工具栏图标设置
  8. 华为推出首款折叠屏5G手机;微信“上车”时间已定;社区团购暗潮涌动
  9. 使用matlab设计电机控制器,基于Matlab的PMSM电机控制系统虚拟开发平台设计
  10. 第九讲 数据采集:用八爪鱼采集微博评论
  11. Solr之Facet与FacetPivot的使用和区别
  12. 电信业Hadoop应用分析
  13. 【操作系统】Linux内核和Windows系统的内核有什么区别?
  14. 含文档+PPT+源码等]精品基于Uniapp实现的Android的餐饮管理系统实现的App[包运行成功]计算机毕业设计安卓项目源码
  15. centos7 安装Apache、PHP、MariaDB并修改相关默认端口
  16. 四大天王 -- ContentProvider
  17. aws docker_深入介绍AWS上的Docker
  18. 解决Vagrant启动虚拟机内存爆满
  19. nginx环境配置Windows本地测试,测试打包后的代码
  20. Unity3d切水果,坦克,投篮游戏视频

热门文章

  1. android 8.1没声音,RingtonePreference无法在Android 8.1上添加新的铃声
  2. windows server 2012 usb redirection with remoteFX
  3. 自动化测试基础篇--Selenium发送测试报告邮件
  4. win10 当前操作环境不支持支付宝控件 完美解决办法
  5. 对话苹果公司的一号员工Bill Fernandez
  6. 升级php5.5.10扩展不兼容
  7. HOOK使用:全局键盘钩子
  8. 变量的数据类型和类型转换(二)
  9. javascript基础知识(6) 对象
  10. configure: error: Cannot find OpenSSL's libraries