在上面的例子中,logrotate 会为 /var/log/wtmp 进行以下操作:尝试每个月轮换一次,但至少文件要大于 1MB,然后用 0664 权限、用户 root、组 utmp 创建一个新的日志文件。下一步只保存一个归档日志,正如轮换指令指定的:
每月 Logrotate 日志
让我们再来看看 /etc/logrotate.d/httpd 中的另一个例子:
轮换 Apache 日志文件
你可以在 logrotate 的 man 手册(man logrotate 和 man logrotate.conf)中阅读更多有关它的设置。为了方便你的阅读,本文还提供了两篇文章的 PDF 格式。
作为一个系统工程师,很可能由你决定多久按照什么格式保存一次日志,这取决于你是否有一个单独的分区/逻辑卷给 /var。否则,你真的要考虑删除旧日志以节省存储空间。另一方面,根据你公司和客户内部的政策,为了以后的安全审核,你可能必须要保留多个日志。
保存日志到数据库当然检查日志可能是一个很繁琐的工作(即使有类似 grep 工具和正则表达式的帮助)。因为这个原因,rsyslog 允许我们把它们导出到数据库(OTB 支持的关系数据库管理系统包括 MySQL、MariaDB、PostgreSQL 和 Oracle 等)。
指南的这部分假设你已经在要管理日志的 RHEL 7 上安装了 MariaDB 服务器和客户端:
#yum update &&yum install mariadb mariadb-server mariadb-client rsyslog-mysql
#systemctl enable mariadb &&systemctl start mariadb
然后使用 mysql_secure_installation 工具为 root 用户设置密码以及其它安全考量:
保证 MySQL 数据库安全
注意:如果你不想用 MariaDB root 用户插入日志消息到数据库,你也可以配置用另一个用户账户。如何实现的介绍已经超出了本文的范围,但在 MariaDB 知识 中有详细解析。为了简单在这篇指南中我们会使用 root 账户。
下一步,从 GitHub 下载 createDB.sql 脚本并导入到你的数据库服务器:
# mysql -u root -p < createDB.sql
保存服务器日志到数据库
最后,添加下面的行到 /etc/rsyslog.conf:
$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.*:ommysql:localhost,Syslog,root,YourPasswordHere
重启 rsyslog 和数据库服务器:
#systemctl restart rsyslog
#systemctl restart mariadb
使用 SQL 语法查询日志现在执行一些会改变日志的操作(例如停止和启动服务),然后登录到你的数据库服务器并使用标准的 SQL 命令显示和查询日志:
USE Syslog;
SELECT ReceivedAt,Message FROM SystemEvents;
在数据库中查询日志
总结在这篇文章中我们介绍了如何设置系统日志,如果轮换日志以及为了简化查询如何重定向消息到数据库。我们希望这些技巧能对你准备 RHCE 考试 和日常工作有所帮助。
正如往常,非常欢迎你的反馈。用下面的表单和我们联系吧。