Centos的rsyslog日志系统(一):syslog介绍

1.syslog简介

在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
在这里插入图片描述

syslog是一种工业标准的协议,可用来记录设备的日志。在UNIX系统,路由器、交换机等网络设备中,系统日志(System Log)记录系统中任何时间发生的大小事件。管理者可以通过查看系统记录,随时掌握系统状况。UNIX的系统日志是通过syslogd这个进程记录系统有关事件记录,也可以记录应用程序运作事件。通过适当的配置,我们还可以实现运行syslog协议的机器间通信,通过分析这些网络行为日志,来以追踪掌握与设备和网络有关的状况。

完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于 Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。

最初,没有一个标准来规范syslog的格式,导致syslog的格式是非常随意的。
在2001年定义的RFC3164中,描述了BSD syslog协议:http://www.ietf.org/rfc/rfc3164.txt

1.1syslog标准基础

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

1.2 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部分

1.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)给其他程序使用:

 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.

常见的设施:

      cron: 进程或应用调度相关的消息
      daemon: 守护进程相关的消息(内部服务器)
      kernel: 内核相关的消息
      mail: 内部邮件服务器相关的消息
      syslog: syslog 守护进程本身相关的消息
      lpr: 打印服务相关的消息
      local0 - local7: 用户自定义的消息 (local7 通常被Cisco 和 Windows 服务器 使用)

严重性(优先)级别有固定的标准缩写和指代的值,其中的数字7具有最高的级别,这些级别包含了:

      alert: Alerts (报警)- 1
      crit: Critical (关键)- 2
      err: Errors (错误)- 3
      warn: Warnings (警告)- 4
      notice: Notification (通知)- 5
      info: Information (消息)- 6
      debug: Debugging (调试)- 7

当通过syslog机制来收集日志时,有3个必须要考虑到的重要事情:

  1. 设施层级: 监听何种类型的进程
  2. 严重性 (优先) 级别: 收集何种级别的日志消息
  3. 目标: 发送或记录日志消息到何处

目标语句会让一个syslog客户端来执行以下三个任务之一:

  1. 保存日志消息到一个本地文件;
  2. 通过TCP/UDP将消息路由到远程的syslog服务器中;
  3. 将其发送到一个标准输出中,例如控制台。

1.2.2 HEADER部分

HEADER部分包括两个字段,时间和主机名(或IP)。
时间紧跟在PRI后面,中间没有空格,格式必须是“Mmm dd hh:mm:ss”,不包括年份。
时间后边跟一个空格,然后是主机名或者IP地址,主机名不得包括域名部分。

HEADER部分后面跟一个空格,然后是MSG部分

1.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部分,这部分的内容是应用程序自定义的。

参考文档:https://blog.csdn.net/zhezhebie/article/details/75222667

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值