rsyslogd配置文件格式及其内容详解

1年前 (2024-04-27)
rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的。也就是说,日志服务的配置文件中主要定义了服务的名称、日志等级和日志记录位置。

/etc/rsyslog.conf配置文件的格式

该配置文件的基本格式如下所示:

authpriv.* /var/log/secure
#服务名称[连接符号]日志等级 日志记录位置

#认证相关服务.所有日志等级 记录在/var/log/secure日志中

服务名称

我们首先需要确定 rsyslogd 服务可以识别哪些服务的日志,也可以理解为以下这些服务委托 rsyslogd 服务来代为管理日志。这些服务如表 1 所示。

表 1 日志服务名称

服务名称

说 明

auth(LOG AUTH)

安全和认证相关消息 (不使用authpriv替代)

authpriv(LOG_AUTHPRIV)

安全和认证相关消息(私有的)

cron (LOG_CRON)

系统定时任务cront和at产生的日志

daemon (LOG_DAEMON)

与各个守护进程相关的曰志

ftp (LOG_FTP)

ftp守护进程产生的曰志

kern(LOG_KERN)

内核产生的曰志(不是用户进程产生的)

Iocal0-local7 (LOG_LOCAL0-7)

为本地使用预留的服务

lpr (LOG_LPR)

打印产生的日志

mail (LOG_MAIL)

邮件收发信息

news (LOG_NEWS)

与新闻服务器相关的日志

syslog (LOG_SYSLOG)

存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称)

user (LOG_USER)

用户等级类别的日志信息

uucp (LOG_UUCP>

uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中


这些日志服务名称是rsyslogd服务自己定义的,并不是实际的Linux的服务。当有服务需要由rsyslogd服务来帮助管理日志时,只需要调用这些服务名称就可以实现日志的委托管理。

这些日志服务名称大家可以使用令“man 3 syslog”来查看。虽然我们的日志管理服务已经更新到rsyslogd,但是很多配置依然沿用了syslogd服务,在帮助文档中仍然查看syslog服务的帮助信息。

连接符号

日志服务连接日志等级的格式如下:

日志服务[连接符号]日志等级 日志记录位置

在这里,连接符号可以被识别为以下三种。
  1. “.”代表只要比后面的等级高的(包含该等级)日志都记录。比如,“cron.info”代表cron服务产生的日志,只要日志等级大于等于info级别,就记录。

  2. “.=”代表只记录所需等级的日志,其他等级的日志都不记录。比如,“*.=emerg”代表人和日志服务产生的日志,只要等级是emerg等级,就记录。这种用法极少见,了解就好。

  3. “.!”代表不等于,也就是除该等级的日志外,其他等级的日志都记录。

日志等级

每个日志的重要性都是有差别的,比如,有些日志只是系统的一个日常提醒,看不看根本不会对系统的运行产生影响;但是有些日志就是系统和服务的警告甚报错信息,这些日志如果不处理,就会威胁系统的稳定或安全。如果把这些日志全部写入一个文件,那么很有可能因为管理员的大意而忽略重要信息。

比如,我们在工作中需要处理大量的邮件,笔者每天可能会接收到200多封邮件。而这些邮件中的绝大多数是不需要处理的普通信息邮件,甚是垃圾邮件。所以笔者每天都要先把这些大量的非重要邮件删除之后,才能找到真正需要处理的邮件。但是每封邮件的标题都差不多,有时会误删除需要处理的邮件。这时笔者就非常怀念Linux的日志等级,如果邮件也能标识重要等级,就不会误删除或漏处理重要邮件了。

邮件的等级信息也可以使用“man 3 syslog”令来查看。日志等级如表 2 所示,我们按照严重等级从低到高排列。

表 2 日志等级

等级名称

说 明

debug (LOG_DEBUG)

一般的调试信息说明

info (LOG_INFO)

基本的通知信息

nolice (LOG_NOTICE)

普通信息,但是有一定的重要性

warning(LOG_WARNING)

警吿信息,但是还不会影响到服务或系统的运行

err(LOG_ERR)

错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了

crit (LOG_CRIT)

临界状况信思,比err等级还要严®

alert (LOG_ALERT)

状态信息,比crit等级还要严重,必须立即采取行动

emerg (LOG_EMERG)

疼痛等级信息,系统已经无法使用了

*

代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录


日志等级还可以被识别为“none”。如果日志等级是none,就说明忽略这个日志服务,该服务的所有日志都不再记录。

日志记录位置

日志记录位置就是当前日志输出到哪个日志文件中保存,当然也可以把日志输出到打印机打印,或者输出到远程日志服务器上(当然,远程日志服务器要允许接收才行)。日志的记录位置也是固定的:
  • 日志文件的路径。这是最常见的日志保存方法,如“/var/log/secure”就是用来保存系统验证和授权信息日志的。

  • 系统设备文件。如“/dev/lp0”代表台打印机,如果日志保存位置是打印机设备,当有日志时就会在打印机上打印。

  • 转发给远程主机。因为可以选择使用 TCP 和 UDP 协议传输日志信息,所以有两种发送格式:如果使用“@192.168.0.210:514”,就会把日志内容使用 UDP 协议发送到192.168.0.210 的 UDP 514 端口上;如果使用“@@192.168.0.210:514”,就会把日志内容使用 TCP 协议发送到 192.168.0.210 的 TCP 514 端口上,其中 514 是日志服务默认端口。当然,只要 192.168.0.210 同意接收此日志,就可以把日志内容保存在日志服务器上。

  • 用户名。如果是“root”,就会把日志发送给 root 用户,当然 root 要在线,否则就收不到日志信息了。发送日志给用户时,可以使用“*”代表发送给所有在线用户,如“mail.**”就会把 mail 服务产生的所有级别的日志发送给所有在线用户。如果需要把日志发送给多个在线用户,则用户名之间用“,”分隔。

  • 忽略或丢弃日志。如果接收日志的对象是“~”,则代表这个日志不会被记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录。

  • 忽略或丢弃日志。如果接收日志的对象是“~”,则代表这个日志不会被记录,而被直接丢弃。如“local3.* ~”代表忽略 local3 服务类型所有的日志都不记录。

/etc/rsyslog.conf配置文件的内容

我们知道了/etc/rsyslog.conf 配置文件中日志的格式,接下来就看看这个配置文件的具体内容。

[root@localhost ~]# vi /etc/rsyslog.conf
#查看配置文件的内容
#rsyslog v5 configuration file
# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslo网站站点" rel="nofollow" />