RHCE 系列(五):如何在 RHEL 7 中管理系统日志((2)

在上面的例子中,logrotate 会为 /var/log/wtmp 进行以下操作:尝试每个月轮换一次,但至少文件要大于 1MB,然后用 0664 权限、用户 root、组 utmp 创建一个新的日志文件。下一步只保存一个归档日志,正如轮换指令指定的:

每月 Logrotate 日志

每月 Logrotate 日志

让我们再来看看 /etc/logrotate.d/httpd 中的另一个例子:

轮换 Apache 日志文件

轮换 Apache 日志文件

你可以在 logrotate 的 man 手册(man logrotateman 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 数据库安全

保证 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 考试 和日常工作有所帮助。

正如往常,非常欢迎你的反馈。用下面的表单和我们联系吧。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/15803.html