RHCE 系列(五):如何在 RHEL 7 中管理系统日志(配置、轮换以及导入到数据库)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

为了确保你的 RHEL 7 系统安全,你需要通过查看日志文件来监控系统中发生的所有活动。这样,你就可以检测到任何不正常或有潜在破坏的活动并进行系统故障排除或者其它恰当的操作。

RHCE 考试 - 第五部分:使用 Rsyslog 和 Logrotate 管理系统日志

RHCE 考试 - 第五部分:使用 Rsyslog 和 Logrotate 管理系统日志

在 RHEL 7 中,rsyslogd 守护进程负责系统日志,它从 /etc/rsyslog.conf(该文件指定所有系统日志的默认路径)和 /etc/rsyslog.d 中的所有文件(如果有的话)读取配置信息。

Rsyslogd 配置

快速浏览一下 rsyslog.conf 会是一个好的开端。该文件分为 3 个主要部分:模块(rsyslong 按照模块化设计),全局指令(用于设置 rsyslogd 守护进程的全局属性),以及规则。正如你可能猜想的,最后一个部分指示记录或显示什么以及在哪里保存(也称为选择子selector),这也是这篇文章关注的重点。

rsyslog.conf 中典型的一行如下所示:

Rsyslogd 配置

Rsyslogd 配置

在上面的图片中,我们可以看到一个选择子包括了一个或多个用分号分隔的“设备:优先级”Facility:Priority对,其中设备描述了消息类型(参考 RFC 3164 4.1.1 章节,查看 rsyslog 可用的完整设备列表),优先级指示它的严重性,这可能是以下几种之一:

  • debug
  • info
  • notice
  • warning
  • err
  • crit
  • alert
  • emerg

尽管 none 并不是一个优先级,不过它意味着指定设备没有任何优先级。

注意:给定一个优先级表示该优先级以及之上的消息都应该记录到日志中。因此,上面例子中的行指示 rsyslogd 守护进程记录所有优先级为 info 以及以上(不管是什么设备)的除了属于 mail、authpriv、以及 cron 服务(不考虑来自这些设备的消息)的消息到 /var/log/messages。

你也可以使用逗号将多个设备分为一组,对同组中的设备使用相同的优先级。例如下面这行:


 
 
  1. *.info;mail.none;authpriv.none;cron.none /var/log/messages

也可以这样写:


 
 
  1. *.info;mail,authpriv,cron.none /var/log/messages

换句话说,mail、authpriv 以及 cron 被分为一组,并使用关键字 none。

创建自定义日志文件

要把所有的守护进程消息记录到 /var/log/tecmint.log,我们需要在 rsyslog.conf 或者 /etc/rsyslog.d 目录中的单独文件(这样易于管理)添加下面一行:


 
 
  1. daemon.* /var/log/tecmint.log

然后重启守护进程(注意服务名称不以 d 结尾):


 
 
  1. # systemctl restart rsyslog

在随便重启两个守护进程之前和之后查看下自定义日志的内容:

创建自定义日志文件

创建自定义日志文件

作为一个自学练习,我建议你重点关注设备和优先级,添加额外的消息到已有的日志文件或者像上面那样创建一个新的日志文件。

使用 Logrotate 轮换日志

为了防止日志文件无限制增长,logrotate 工具用于轮换、压缩、移除或者通过电子邮件发送日志,从而减轻管理会产生大量日志文件系统的困难。(译者注:日志轮换(rotate)是系统管理中归档每天产生的日志文件的自动化过程)

Logrotate 作为一个 cron 任务(/etc/cron.daily/logrotate)每天运行,并从 /etc/logrotate.conf 和 /etc/logrotate.d 中的文件(如果有的话)读取配置信息。

对于 rsyslog,即使你可以在主文件中为指定服务包含设置,为每个服务创建单独的配置文件能帮助你更好地组织设置。

让我们来看一个典型的 logrotate.conf:

Logrotate 配置

Logrotate 配置

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

每月 Logrotate 日志

每月 Logrotate 日志

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

轮换 Apache 日志文件

轮换 Apache 日志文件

你可以在 logrotate 的 man 手册(man logrotate 和 man logrotate.conf)中阅读更多有关它的设置。为了方便你的阅读,本文还提供了两篇文章的 PDF 格式。

作为一个系统工程师,很可能由你决定多久按照什么格式保存一次日志,这取决于你是否有一个单独的分区/逻辑卷给 /var。否则,你真的要考虑删除旧日志以节省存储空间。另一方面,根据你公司和客户内部的政策,为了以后的安全审核,你可能必须要保留多个日志。

保存日志到数据库

当然检查日志可能是一个很繁琐的工作(即使有类似 grep 工具和正则表达式的帮助)。因为这个原因,rsyslog 允许我们把它们导出到数据库(OTB 支持的关系数据库管理系统包括 MySQL、MariaDB、PostgreSQL 和 Oracle 等)。

指南的这部分假设你已经在要管理日志的 RHEL 7 上安装了 MariaDB 服务器和客户端:


 
 
  1. # yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
  2. # systemctl enable mariadb && systemctl start mariadb

然后使用 mysql_secure_installation 工具为 root 用户设置密码以及其它安全考量:

保证 MySQL 数据库安全

保证 MySQL 数据库安全

注意:如果你不想用 MariaDB root 用户插入日志消息到数据库,你也可以配置用另一个用户账户。如何实现的介绍已经超出了本文的范围,但在 MariaDB 知识 中有详细解析。为了简单在这篇指南中我们会使用 root 账户。

下一步,从 GitHub 下载 createDB.sql 脚本并导入到你的数据库服务器:


 
 
  1. # mysql -u root -p < createDB.sql

保存服务器日志到数据库

保存服务器日志到数据库

最后,添加下面的行到 /etc/rsyslog.conf:


 
 
  1. $ModLoad ommysql
  2. $ActionOmmysqlServerPort 3306
  3. *.* :ommysql:localhost,Syslog,root,YourPasswordHere

重启 rsyslog 和数据库服务器:


 
 
  1. # systemctl restart rsyslog
  2. # systemctl restart mariadb

使用 SQL 语法查询日志

现在执行一些会改变日志的操作(例如停止和启动服务),然后登录到你的数据库服务器并使用标准的 SQL 命令显示和查询日志:


 
 
  1. USE Syslog;
  2. SELECT ReceivedAt, Message FROM SystemEvents;

在数据库中查询日志

在数据库中查询日志

总结

在这篇文章中我们介绍了如何设置系统日志,如果轮换日志以及为了简化查询如何重定向消息到数据库。我们希望这些技巧能对你准备 RHCE 考试 和日常工作有所帮助。


本文来自云栖社区合作伙伴“Linux中国”,原文发布日期:2015-11-06

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
342 93
|
1月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
215 0
|
2月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
351 122
基于docker搭建监控系统&日志收集
WGLOG日志管理系统是怎么收集日志的
WGLOG通过部署Agent客户端采集日志,Agent持续收集指定日志文件并上报Server,Server负责展示与分析。Agent与Server需保持相同版本。官网下载地址:www.wgstart.com
|
1月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
180 6
|
2月前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
400 7
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
535 5
|
2月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
284 2
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。

热门文章

最新文章