为了确保你的 RHEL 7 系统安全,你需要通过查看日志文件来监控系统中发生的所有活动。这样,你就可以检测到任何不正常或有潜在破坏的活动并进行系统故障排除或者其它恰当的操作。
RHCE 考试 - 第五部分:使用 Rsyslog 和 Logrotate 管理系统日志
在 RHEL 7 中,rsyslogd 守护进程负责系统日志,它从 /etc/rsyslog.conf(该文件指定所有系统日志的默认路径)和 /etc/rsyslog.d 中的所有文件(如果有的话)读取配置信息。
Rsyslogd 配置快速浏览一下 rsyslog.conf 会是一个好的开端。该文件分为 3 个主要部分:模块(rsyslong 按照模块化设计),全局指令(用于设置 rsyslogd 守护进程的全局属性),以及规则。正如你可能猜想的,最后一个部分指示记录或显示什么以及在哪里保存(也称为选择子(selector)),这也是这篇文章关注的重点。
rsyslog.conf 中典型的一行如下所示:
Rsyslogd 配置
在上面的图片中,我们可以看到一个选择子包括了一个或多个用分号分隔的“设备:优先级”(Facility:Priority)对,其中设备描述了消息类型(参考 ,查看 rsyslog 可用的完整设备列表),优先级指示它的严重性,这可能是以下几种之一:
debug
info
notice
warning
err
crit
alert
emerg
尽管 none 并不是一个优先级,不过它意味着指定设备没有任何优先级。
注意:给定一个优先级表示该优先级以及之上的消息都应该记录到日志中。因此,上面例子中的行指示 rsyslogd 守护进程记录所有优先级为 info 以及以上(不管是什么设备)的除了属于 mail、authpriv、以及 cron 服务(不考虑来自这些设备的消息)的消息到 /var/log/messages。
你也可以使用逗号将多个设备分为一组,对同组中的设备使用相同的优先级。例如下面这行:
*.info;mail.none;authpriv.none;cron.none /var/log/messages
也可以这样写:
*.info;mail,authpriv,cron.none /var/log/messages
换句话说,mail、authpriv 以及 cron 被分为一组,并使用关键字 none。
创建自定义日志文件要把所有的守护进程消息记录到 /var/log/tecmint.log,我们需要在 rsyslog.conf 或者 /etc/rsyslog.d 目录中的单独文件(这样易于管理)添加下面一行:
daemon.*/var/log/tecmint.log
然后重启守护进程(注意服务名称不以 d 结尾):
#systemctl restart rsyslog
在随便重启两个守护进程之前和之后查看下自定义日志的内容:
创建自定义日志文件
作为一个自学练习,我建议你重点关注设备和优先级,添加额外的消息到已有的日志文件或者像上面那样创建一个新的日志文件。
使用 Logrotate 轮换日志为了防止日志文件无限制增长,logrotate 工具用于轮换、压缩、移除或者通过电子邮件发送日志,从而减轻管理会产生大量日志文件系统的困难。(译者注:日志轮换(rotate)是系统管理中归档每天产生的日志文件的自动化过程)
Logrotate 作为一个 cron 任务(/etc/cron.daily/logrotate)每天运行,并从 /etc/logrotate.conf 和 /etc/logrotate.d 中的文件(如果有的话)读取配置信息。
对于 rsyslog,即使你可以在主文件中为指定服务包含设置,为每个服务创建单独的配置文件能帮助你更好地组织设置。
让我们来看一个典型的 logrotate.conf:
Logrotate 配置