介绍
应用程序创建所谓的“日志文件”来跟踪任何给定时间发生的活动。 这些文件远非简单的文本输出,可能非常复杂,尤其是在被管理的服务器很忙的情况下。
当需要参考日志文件时(例如 如果发生故障、数据丢失等),利用所有可用的帮助变得至关重要。 能够快速理解(解析)他们可以讲述的关于过去事件的内容并 分析 到底发生了什么对于提出解决方案变得异常重要。
跟随我们之前关于 Linux 系统加固、安全监控和电子邮件警报的文章的脚步,在这篇 DigitalOcean 文章中,我们将讨论 Logwatch:一个非常强大的日志解析器和分析器,可以让任何专业的系统管理员生活在处理与应用程序相关的任务和问题时更容易一些。
日志文件
很像 Starrek 中的星际飞船黑匣子,以保持系统(即 服务器)运行,即使在今天,管理员也依赖日志。 撇开玩笑不谈,这些应用程序生成的文件在追溯和了解过去 [在给定时间] 发生的事情方面发挥着决定性作用,以实现全部/部分数据恢复(即 来自 交易日志 )、性能或策略相关分析(例如 来自服务器日志)或未来的修正(例如 从访问日志)。
简而言之,日志文件将包含在给定时间范围内发生的操作和事件。
一个好的日志文件应该尽可能详细,以帮助负责维护系统的管理员找到特定目的所需的确切信息。 由于这个原因,日志文件通常不简洁,它们包含大量重复和(大部分)冗余条目,需要彻底分析和过滤才能对人类有意义。
这就是为这项工作设计的计算机应用程序 Logwatch 发挥作用的地方。
进入日志观察
日志管理是一个主要由搜索、日志轮换/保留和报告组成的领域。 Logwatch 是一个应用程序,它通过每天分析和报告您机器上发生的活动的简短摘要来帮助进行简单的日志管理。
Logwatch 创建的报告按 services 分类(即 应用程序)在您的系统上运行,可以通过修改其相对简单的配置文件将其配置为由您喜欢的应用程序或所有应用程序组成。 此外,Logwatch 允许为特定需求创建自定义分析脚本。
安装日志观察
请注意: Logwatch 是一个无害的应用程序,不应干扰您当前的服务或工作量。 但是,与往常一样,建议您首先在新系统上尝试并确保进行备份。
在 CentOS / RHEL 上
在基于 RHEL 的系统上安装 Logwatch 非常简单(例如 中央操作系统)。 由于它是一个由各种 Perl 脚本组成的应用程序,因此需要某些相关的依赖项。 由于我们将使用 yum 包管理器,这将被自动处理。 除非您已经安装了 mailx,否则 Logwatch 也会在此过程中为您下载它。
要在 CentOS / RHEL 上安装 Logwatch,请运行以下命令:
$ yum install -y logwatch
在 Ubuntu / Debian 上
为基于 Debian 的系统获取 Logwatch(例如 Ubuntu)与上面解释的过程非常相似,除了包管理器(aptitude v. 百胜)。
要在 Ubuntu / Debian 上安装 Logwatch,请运行以下命令:
$ aptitude install -y logwatch
配置日志观察
尽管可以在每次运行期间手动覆盖其设置,但通常,您希望使用通用配置每天运行 Logwatch。
设置 Logwatch 的常用配置
Logwatch 的默认配置文件位于:
/usr/share/logwatch/default.conf/logwatch.conf
让我们使用 nano 文本编辑器打开这个文件来修改它的内容:
$ nano /usr/share/logwatch/default.conf/logwatch.conf
运行上述命令后,您将看到应用程序每次运行时使用的一长串变量,无论是自动还是手动。
为了开始使用它,我们需要对这些默认值进行一些更改。
请记住,将来您可能想回来修改此处定义的某些设置。 由 Logwatch 分析的所有 服务 (应用程序)都列在此文件中,如上文所述(配置 #5)。 当您从您的虚拟服务器安装或删除应用程序时,您可以通过更改此处的设置(见下文*)继续接收关于其中 all 或 some 的报告。
我们需要设置的重要选项:
请注意: 当您对文档进行以下更改时,您需要使用箭头键上下行。 完成更改(第 1 - 6 项)后,您需要按 CTRL+X,然后按 Y 确认保存并关闭。 下次运行 logwatch
时,更改将自动生效。
1. 每日摘要(报告)发送到的电子邮件地址:
MailTo = root
将 root
替换为您的电子邮件地址。
例子: MailTo = sysadmin@mydomain.com
2. 这些报告源自 的电子邮件地址 :
MailFrom = Logwatch
您可能希望再次将 Logwatch
替换为您自己的。
例子: MailFrom = sysadmin@mydomain.com
3. 设置报告的 range:
Range = yesterday
您可以选择接收 All(从一开始就全部可用)、Today(就在今天)或 Yesterday(就在昨天)的报告。
例子: Range = Today
4. 设置报告的详细信息:
Detail = Low
您可以在此处修改报告的详细信息。 选项有:Low、Medium 和 High。
例子: Detail = Medium
5. 设置要分析的服务(应用程序):
默认情况下,Logwatch 涵盖了非常广泛的服务。 如果您想查看完整列表,可以查询位于
/usr/share/logwatch/
的文件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
instead of # 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) #################### Processing Initiated: Wed Nov 15 15:07:00 2013 Date Range Processed: today ( 2013-Nov-15 ) Period is day. Detail Level of Output: 0 Type of Output: unformatted Logfiles for Host: host_name ################################################################## --------------------- Postfix Begin ------------------------ 3.453K Bytes accepted 3,536 3.453K Bytes delivered 3,536 ======== ================================================ 3 Accepted 100.00% -------- ------------------------------------------------ 3 Total 100.00% ======== ================================================ 3 Removed from queue 2 Delivered 1 Sent via SMTP 1 Connection failure (outbound) 1 Postfix start ---------------------- Postfix End ------------------------- --------------------- Connections (secure-log) Begin ------------------------ New Users: apache (48) New Groups: apache (48) **Unmatched Entries** groupadd: group added to /etc/group: name=apache, GID=48: 1 Time(s) groupadd: group added to /etc/gshadow: name=apache: 1 Time(s) ---------------------- Connections (secure-log) End ------------------------- --------------------- SSHD Begin ------------------------ SSHD Started: 2 Time(s) Users logging in through sshd: root: ip_addr (ip_addr): 1 time ---------------------- SSHD End ------------------------- --------------------- yum Begin ------------------------ Packages Installed: 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 End -------------------------