linux rsyslog 服务

环境信息

  • Centos 7

系统默认的日志托管服务,部分系统服务(如 crond, 邮件系统,安全审计等)会将日志发送给 rsyslog 服务来进行日志管理。

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

配置文件说明

默认配置文件(/etc/rsyslog.conf)内容如下

/etc/rsyslog.conf
# 加载指定模块
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal

# 放置 rsyslog 辅助文件的路径
$WorkDirectory /var/lib/rsyslog

# 时间格式
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# 包含其他配置
$IncludeConfig /etc/rsyslog.d/*.conf

$OmitLocalLogging on
$IMJournalStateFile imjournal.state

# 日志记录规则
*.info;mail.none;authpriv.none;cron.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log

其中最为关键的部分是日志记录规则,其配置格式如下

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

以上配置,指定认证相关服务 (authpriv) 的所有等级的日志,记录在 /var/log/secure 日志中

多个服务可以指定同一个日志记录位置,多个 服务名称 连接符号 日志等级 中间使用 ; 分割

/etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

多个服务也可以共用同一个 日志等级,格式如下,多个 服务名称 使用 , 分割

/etc/rsyslog.conf
uucp,news.crit                                          /var/log/spooler

rsyslog 服务可识别的服务如下

服务 说明
auth 安全和认证相关消息 (不推荐使用 authpriv 替代)
authpirv 安全和认证相关信息(私有的)
cron 系统定时任务 crontat 产生的日志
daemon 和各个守护进程相关的日志
ftp ftp守护进程产生的日志
kern 内核产生的日志(不是用户进程产生的)
local0-local7 为本地使用预留的服务
lpr 打印机产生的日志
mail 邮件收发信息
news 与新闻服务器相关的日志
syslog rsyslog 服务产生的日志信息(虽然服务名称已经改为 rsyslog 服务,但是很多配置都还是沿用了 syslogd 的,这里并没有修改服务名)
user 用户等级类别的日志信息
uucp uucp 子系统的日志信息,uucp 是早期 Linux 系统进行数据传递的协议,后来也经常用在新闻组服务中。

rsyslog 服务配置中可使用的连接符号如下

连接符号 说明
. 代表只要比后面的等级高的(包含该等级)日志都记录下来。比如: cron.info 代表 crond 服务产生的日志,只要日志等级大于等于 info 级别,就记录。
.= 代表只记录所需等级的日志,其他等级的都不记录。比如: *.=emerg 代表任何日志服务产生的日志,只要等级是 emerg 等级就记录。
.! 代表不等于,也就是除了该等级的日志外,其他等级的日志都记录。

rsyslog 服务配置中可使用的日志等级如下

日志等级 说明
debug 一般的调试信息说明
info 基本的通知信息
notice 普通信息,但是有一定的重要性
warning 警告信息,但是还不会影响到服务或系统的运行
err 错误信息,一般达到 err 等级的信息以及可以影响到服务或系统的运行了
crit 临界状况信息,比 err 等级还要严重
alert 警告状态信息,比 crit 还要严重。必须立即采取行动
emerg 致命(毁灭)等级信息,系统已经无法使用了
* 代表所有等级的日志
none 忽略这个日志服务,该服务的所有日志都不再记录

可用的 日志记录位置 如下

日志记录位置 说明 示例
/var/log/secure 日志文件的绝对路径 /var/log/secure
/dev/lp0 系统设备文件 /dev/lp0 代表第一台打印机,如果日志保存位置是打印机设备,当有日志时就会在打印机上打印。
远程主机 可以选择使用 TCP (@@192.168.0.210:514) 和 UDP (@192.168.0.210:514) 协议传输日志信息

日志记录位置 之前可以加以下符号:

  • - : 表示延迟写入

参考链接