简介
应用程序创建所谓的“日志文件”来跟踪任何给定时间发生的活动。这些文件远非简单的文本输出,对于管理的服务器来说,要浏览它们可能会非常复杂,特别是当服务器很忙碌时。
当需要参考日志文件(例如在发生故障、数据丢失等情况下),利用所有可用的帮助变得至关重要。能够快速理解(解析)它们对过去事件的描述,并分析当时发生了什么,对于找到解决方案变得非常重要。
在我们之前关于 Linux 系统加固、安全监控和发送警报的文章之后,本文将介绍 Logwatch:一个非常强大的日志解析器和分析器,可以在处理应用程序相关任务和问题时,让任何专职系统管理员的生活变得更加轻松。
日志文件
就像星际飞船的黑匣子一样,为了保持系统(即服务器)运行,管理员们今天仍然依赖日志。开玩笑的话题放在一边,这些应用程序生成的文件在追溯和理解过去发生的事情方面起着决定性作用,用于完整/部分数据恢复(例如从事务日志中)、性能或策略相关分析(例如从服务器日志中)或未来的修改(例如从访问日志中)。
简而言之,日志文件将包含在给定时间范围内发生的操作和事件。
一个良好的日志文件应尽可能详细,以帮助负责维护系统的管理员找到特定目的所需的确切信息。正因为这个原因,日志文件通常并不简洁,它们包含大量的重复和大量(主要是)冗余条目,需要经过彻底的分析和过滤才能对人类有意义。
这就是 Logwatch,一个专门设计用于这项工作的计算机应用程序。
进入 Logwatch
日志管理主要包括搜索、日志轮换/保留和报告。Logwatch 是一个应用程序,通过每日分析和报告机器上发生的活动的简短摘要,帮助简化日志管理。
Logwatch 生成的报告按照系统上运行的服务(即应用程序)进行分类,可以通过修改其相对简单的配置文件来配置包含您喜欢的服务或所有服务的报告。此外,Logwatch 允许创建用于特定需求的自定义分析脚本。
安装 Logwatch
请注意: Logwatch 是一个无害的应用程序,不应干扰您当前的服务或工作负载。但是,建议您首先在新系统上尝试,并确保进行备份。
在 CentOS / RHEL 上
在基于 RHEL 的系统(例如 CentOS)上安装 Logwatch 非常简单。由于它是由各种 Perl 脚本组成的应用程序,因此需要某些相关的依赖项。由于我们将使用 yum 软件包管理器,这将自动处理。除非您已经安装了 mailx,否则 Logwatch 在安装过程中也会为您下载它。
要在 CentOS / RHEL 上安装 Logwatch,请运行以下命令:
$ yum install -y logwatch
在 Ubuntu / Debian 上
获取 Debian 系统(例如 Ubuntu)上的 Logwatch 与上述过程非常相似,除了软件包管理器(aptitude v. yum)的差异。
要在 Ubuntu / Debian 上安装 Logwatch,请运行以下命令:
$ aptitude install -y logwatch
配置 Logwatch
尽管在每次运行期间可以手动覆盖其设置,但通常情况下,您会希望 Logwatch 每天运行,使用常见配置。
设置 Logwatch 的常见配置
Logwatch 的默认配置文件位于:
/usr/share/logwatch/default.conf/logwatch.conf
让我们使用 nano 文本编辑器打开此文件以修改其内容:
$ nano /usr/share/logwatch/default.conf/logwatch.conf
运行上述命令后,您将看到应用程序每次运行时使用的一长串变量,无论是自动还是手动运行。
为了开始使用它,我们需要对这些默认值进行一些更改。
请记住,将来您可能需要返回来修改此处定义的某些设置。所有由 Logwatch 分析的服务(应用程序)都列在此文件中,如上所述(配置 #5)。当您安装或删除虚拟服务器上的应用程序时,您可以通过在此处更改设置来继续接收**所有或一些*服务的报告(见下文)。
我们需要设置的重要选项:
请注意: 当您进行以下更改时,您需要使用箭头键上下移动行。完成更改(项目 1 - 6)后,您需要按下 CTRL+X,然后确认使用 Y 保存并关闭。更改将在下次运行 logwatch
时自动生效。
1. 每日摘要(报告)发送的电子邮件地址:
MailTo = root
将 root
替换为您的电子邮件地址。
示例: MailTo = sysadmin@mydomain.com
2. 这些报告的发件人电子邮件地址:
MailFrom = Logwatch
您可能希望再次将 Logwatch
替换为您自己的。
示例: MailFrom = sysadmin@mydomain.com
3. 设置报告的范围:
Range = yesterday
您可以选择接收**所有(从一开始可用的所有)、Today(仅今天)或Yesterday**(仅昨天)的报告。
示例: Range = Today
4. 设置报告的详细程度:
Detail = Low
您可以在此处修改报告的详细程度。选项有:Low、Medium 和 High。
示例: Detail = Medium
5. 设置要分析的服务(应用程序):
默认情况下,Logwatch 包含了非常广泛的服务。如果您想查看完整列表,可以查询位于
/usr/share/logwatch/scripts/services
的文件scripts/services
的内容。示例:
ls -l /usr/share/logwatch/scripts/services
Service = All
您可以选择接收所有服务或一些特定服务的报告。
对于所有服务,请保持行为: Service = All
如果您希望接收特定服务的报告,类似于以下示例,将每个服务列在新行上(例如 Service = [name]
)。
示例:
Service = sendmail Service = http Service = identd Service = sshd2 Service = sudo ..
6. 禁用每日报告:
# DailyReport = No
如果您不希望生成每日报告,您应取消注释此行。
示例: DailyReport = No
而不是 # DailyReport = No
就是这样!在进行这些更改后,您将自动收到来自服务器日志文件的每日报告。
要了解更多关于 Logwatch 和创建自定义服务以接收报告的信息,您可以访问其完整文档,点击这里。
手动运行 Logwatch
应该提到,您可以通过命令行在需要时手动运行 Logwatch。
以下是[文档中提供的可用选项]:
logwatch [--detail level ] [--logfile log-file-group ] [--service service-name ] [--print] [--mailto address ] [--archives] [--range range ] [--debug level ] [--save file-name ] [--logdir directory ] [--hostname hostname ] [--splithosts] [--multiemail] [--output output- type ] [--numeric] [--no-oldfiles-log] [--version] [--help|--usage]
除非您指定选项,否则将从配置文件中读取。
示例:
$ logwatch --detail Low --mailto email@address --service http --range today
以下是 Logwatch 报告的样例:
################### Logwatch 7.3.6 (05/19/07) #################### 处理启动时间: Wed Nov 15 15:07:00 2013 处理的日期范围: 今天 ( 2013-Nov-15 ) 周期为一天。 输出的详细级别: 0 输出类型: 未格式化 主机的日志文件: host_name ################################################################## --------------------- Postfix 开始 ------------------------ 3.453K 字节被接受 3,536 3.453K 字节被传送 3,536 ======== ================================================ 3 被接受 100.00% -------- ------------------------------------------------ 3 总计 100.00% ======== ================================================ 3 从队列中移除 2 已传送 1 通过 SMTP 发送 1 连接失败 (出站) 1 Postfix 启动 ---------------------- Postfix 结束 ------------------------- --------------------- 连接 (secure-log) 开始 ------------------------ 新用户: apache (48) 新组: apache (48) **未匹配的条目** groupadd: 添加到 /etc/group 的组: name=apache, GID=48: 1 次 groupadd: 添加到 /etc/gshadow 的组: name=apache: 1 次 ---------------------- 连接 (secure-log) 结束 ------------------------- --------------------- SSHD 开始 ------------------------ SSHD 启动: 2 次 通过 sshd 登录的用户: root: ip_addr (ip_addr): 1 次 ---------------------- SSHD 结束 ------------------------- --------------------- yum 开始 ------------------------ 安装的软件包: apr-1.3.9-5.el6_2.x86_64 apr-util-1.3.9-3.el6_0.1.x86_64 perl-YAML-Syck-1.07-4.el6.x86_64 4:perl-5.10.1-131.el6_4.x86_64 mailx-12.4-6.el6.x86_64 1:perl-Pod-Simple-3.13-131.el6_4.x86_64 1:perl-Pod-Escapes-1.04-131.el6_4.x86_64 3:perl-version-0.77-131.el6_4.x86_64 httpd-2.2.15-29.el6.centos.x86_64 4:perl-libs-5.10.1-131.el6_4.x86_64 mailcap-2.1.31-2.el6.noarch perl-Date-Manip-6.24-1.el6.noarch 1:perl-Module-Pluggable-3.90-131.el6_4.x86_64 httpd-tools-2.2.15-29.el6.centos.x86_64 apr-util-ldap-1.3.9-3.el6_0.1.x86_64 logwatch-7.3.6-49.el6.noarch ---------------------- yum 结束 -------------------------