`
wly719
  • 浏览: 290665 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

syslog格式记录

 
阅读更多
1、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中,描述了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的应用还是很 少见的。

参考文章
http://blog.gdsyzx.edu.cn/wordpress/?p=299
分享到:
评论

相关推荐

    MT_Syslog.exe中文版 MT_Syslog中文版

    MT_Syslog MT_Syslog.exe MT_Syslog中文版 ros日志远程记录 ros日志 网上找了好久也没有找到个中文版的,很是郁闷,最后干脆我自己做个汉化要点分不好意思啊,花了我半天的时间翻译,编译的,一点辛苦,有的地方,不...

    Go-快速的系统日志syslog解析器

    3. 错误处理与容错:解析器应具有良好的错误处理机制,遇到格式错误的日志消息时,不应完全停止,而是记录错误并继续处理其他消息。 六、集成与应用 1. 数据存储:解析后的syslog数据可存储到数据库(如MySQL、...

    Linux的Syslog服务来记录Cisco路由器的日志(基本配置)

    ### Linux的Syslog服务来记录Cisco路由器的日志(基本配置) #### Syslog服务概述 Syslog(系统日志协议)是一种工业标准的轻量级协议,用于在计算机间传输事件日志信息。它广泛应用于网络设备、服务器以及操作系统...

    H3C_syslog配置

    H3C_SYSLOG 是华三系统日志使用讲解,用于记录和管理网络设备日志。 Syslog 是一个 Industry-standard protocol,用于记录网络设备的日志信息。通过 Syslog,可以实时监控网络设备的状态、诊断网络问题,并对网络...

    华为交换机手册配置(包括syslog日志)

    3. 安全审计:syslog可以记录登录失败、权限变更等安全相关事件,对网络安全进行有效监控。 五、华为CloudEngine 12800系列交换机日志参考 CloudEngine 12800&12800E V200R002C50版本的交换机提供了详尽的日志参考...

    Syslog4j首页、文档和下载 - Syslog协议的Java版 - 开源中国社区.pdf

    Syslog4j提供了一个强大的日志记录功能,适用于需要跨平台的日志记录场景。 #### 二、Syslog4j的功能特点 1. **多协议支持**:Syslog4j不仅支持传统的Syslog协议(如UDP/IP和TCP/IP),还支持更安全的协议(如TCP/...

    各设备syslog配置手册

    Syslog 是一种常见的日志记录协议,用于收集和管理网络设备的日志信息。在网络设备中,syslog 配置是非常重要的,因为它可以帮助网络管理员实时监控网络设备的状态,及时发现和解决网络问题。本文将详细介绍 syslog ...

    syslog4j-0.9.46.zip

    4. **自定义格式化**:syslog4j允许用户自定义消息格式,以满足特定的日志记录需求。这包括添加额外的字段,调整优先级级别,或者使用不同的日期和时间格式。 5. **事件处理**:库内包含事件处理器,可以监听和处理...

    syslog标准格式文件RFC5424

    3. **应用程序日志记录**:应用程序可以使用Syslog记录错误信息和调试信息。 4. **安全审计**:通过Syslog收集的安全事件可以帮助进行安全事件分析。 #### 五、实现与部署 在实际部署中,Syslog通常涉及以下组件:...

    redhat syslog 配置 笔记

    Syslog的配置文件`/etc/syslog.conf`允许管理员自定义日志记录的行为,从而更好地监控系统运行状况、排查问题和维护系统安全。 #### 二、Syslog配置文件详解 ##### 1. 基本格式 `syslog.conf`文件的每一行遵循...

    syslog工具

    syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、...

    kiwi syslog server 9.5

    Kiwi Syslog Server安装教程: ...这些产品的安装与配置非常简单,提供功能丰富的解决方案来接收、记录、显示并转发各种网络设备(例如路由器、交换机、Unix 主机以及其它启用 syslog 的设备)的 syslog 消息。

    SYSLOG日志数据采集实现

    SYSLOG作为一种广泛采用的日志记录协议,在网络安全管理中扮演着重要角色。本文将详细介绍SYSLOG日志数据采集的实现过程,包括SYSLOG的基本原理、日志数据采集的重要性、采集技术对比以及SYSLOG的优势等方面。 ####...

    使用syslog收集记录设备运行状态信息收集.pdf

    《使用syslog收集记录设备运行状态信息》 在IT运维管理中,收集设备运行状态信息是确保网络稳定和快速定位故障的关键步骤。syslog是一种广泛使用的日志协议,它允许网络设备如交换机和路由器将运行状态信息发送到...

    syslog日志可视化工具

    Syslog协议是网络设备、操作系统和其他软件用来记录事件和错误信息的标准。这种工具通常具有用户友好的界面,可以方便地实时监控、搜索、过滤和可视化syslog消息,帮助IT管理员更好地理解和诊断系统中的问题。 ...

    syslog syslog4j syslogd linuxsyslog4j

    rsyslog和syslog-ng支持更多的日志格式和协议,使得日志管理更为高效和安全。 syslog4j这个文件名可能指的是一个与syslog4j库相关的文件,可能是该库的源代码、文档、示例代码或者特定版本的JAR文件。在实际应用中...

    java发送syslog日志,支持多目的ip

    通常,Syslog服务器会按照预设的格式和规则展示接收到的信息,便于监控和分析系统状态。 总之,Java发送Syslog日志涉及到网络编程、日志框架和第三方库的使用,以及对Syslog协议的理解。通过这些工具和知识,我们...

    syslog协议发送日志(java)

    syslog协议是网络设备、操作系统和应用程序之间广泛使用的标准日志记录协议,它允许系统将日志消息发送到中央日志服务器,便于管理和分析。在Java环境中实现syslog协议发送日志,我们可以利用相关的库或者自定义编程...

    Syslog配置及使用简介

    syslog 协议的包格式通常包括以下几个部分:PRI(优先级)、HEADER(头部)、MSG(消息体)和OPTIONAL PART(可选部分)。其中,PRI 用于指定日志信息的优先级,HEADER 用于指定日志信息的来源和时间戳,MSG 用于...

    利用Kiwi Syslog收集系统日志.doc

    路由器交换机防火墙等网络设备的系统日志对于排错是非常重要的。虽然这些网络设备本身可以存储日志,但是系统自身存储的日志一般保存时间不超过24小时,并且仅仅以缓存的形式保存在内存里,如果设备关机又重启,之前...

Global site tag (gtag.js) - Google Analytics