`
阅读更多

在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的应用还是很少见的。

分享到:
评论

相关推荐

    SANGFOR_AD_V5.1_第三方Syslog日志服务器测试指导书.pdf

    本文档主要介绍了SANGFOR AD V5.1版本的第三方Syslog日志服务器测试指导书的配置指导文档,旨在帮助网络管理员、现场技术支持与维护人员和网络配置和维护的网络管理员更好地了解和使用SANGFOR AD设备的Syslog日志...

    Linux系统下使用Syslog进行远程登录

    每个Linux都具有Syslog的标准功能,它既能登录本地文件,又能登录远程系统。文中介绍了Linux系统下使用Syslog进行远程登录。

    对linux下syslogd以及syslog.conf文件的解读说明

    1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记程序,随时从系统各处接受log请求,然后根据/...

    Syslog监视Linux登录用户保障系统安全

    管理登录文件是网络管理的重要一部分。每个Linux都具有Syslog的标准功能,它既能登录本地文件,又能登录远程系统。本文介绍了如何安装与醒置Syslog监视Linux登录用户保障系统安全。

    syslog4net:一组log4net扩展,可与Syslog(RFC5424)集成

    介绍 是Microsoft .NET运行时的事实上的日志记录标准。 诸如log4net之类的日志框架使开发人员能够在其应用程序中记录事件,并提供可用于了解系统活动和诊断问题的审核跟踪。 另一方面, 是用于消息记录的标准。 ...

    applog应用监控开发规范1.1.rar

    下文的内容只对应用监控的开发规范进行介绍,并不对应用的内容进行描述,也不涉及工具的使用。 本规范的主要目的是为了在应用开发的过程中,能及早地考虑到运维的需求,为运维提供更加有意义的数据,也为了使不同...

    神码上网行为审计管理系统用户手册(EN).pdf

    3.Syslog 接口支持:系统支持标准Syslog 接口,接收其他数据采集源提供的日志,并对这些日志进行分析、汇总等。 4. 后台模块安装:系统提供了后台模块安装方式,方便用户快速安装和配置系统。 5. 管理客户端安装:...

    Falco技术架构介绍.pptx

    * Notification:Falco提供了多种通知机制,包括文件、标准输出、syslog和程序等。用户可以根据需要选择合适的通知机制。 主要功能 Falco的主要功能包括: * 异常行为检测:Falco可以检测云原生平台中的异常行为...

    数据仓库建设方案.docx

    本文档介绍了数据仓库建设方案的总体架构和设计思想。数据仓库建设目标是设计一个专家系统数据仓库架构,包括数据采集、数据存储、数据分析和数据服务等几个方面的内容。 第1章 数据仓库建设 1.1 数据仓库总体架构...

    电力通信网络数据采集框架的设计与实现.pdf

    详细介绍了网络管理的原理和相关技术,提出了电力通信网网管数据采集框架的设计与实现。   本文针对现有电力通信运维系统,结合数据采集接口技术,探讨分别从设备、网元管理系统、综合管理系统、运维流程...

    华为-3com日志解释器V2.0.rar

    软件介绍: 华为-3com日志解释器根据华为-3com公司 Commware V300R002 和V5版本的 syslog和tap日志规范设计,能够打开交换机收集的日志,用于故障分析等。不需要配置,对运行的Windows操作系统硬件和软件配置...

    UNIX环境高级编程(PDF)

    本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、 进程间通信以及各种I/O。在此基础上,分别...

    UNIX环境高级编程 不扣分哦

    本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按...

    UNIX环境高级编程

    本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按...

    UNIX环境高级编程中文版

    本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按...

    网络安全概念和术语-AxisCommunications.pdf

    根据维基百科的介绍是指计算机安全: 计算机安全, 也称为网络安全或 IT 安全, 是指保护计算机系统的硬件、 软件或其中 的信息免遭盗窃或损坏, 以及保护计算机系统所提供的服务免遭中断或误导。 没有任何单一的...

    redhat linux教材20课程学习文档

    15.4.1 syslog 15.4.2 klogd 15.4.3 logger 15.5 logrotate 15.6 log文件的分析工具 15.6.1 swatch 15.6.2 其他工具 第十六章 打印管理 16.1 Linux打印体系概述 16.1.1 Linux打印原理 16.1.2 新旧打印方式对比 ...

    防火墙相关

    6.2 syslog 98 6.3 监视网络:tcpdump及其支持产品 99 6.3.1 利用tcpdump 99 6.3.2 ping,traceroute和dig 101 6.4 添加日志到标准后台守护程序 101 第7章 陷阱,诱饵和蜜罐 103 7.1 日志记录什么 103 7.1.1 地址空间...

    python模块详解

    1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10. cmath 模块 1.11. operator 模块 1.12. ...

Global site tag (gtag.js) - Google Analytics