lnav - 从Linux终端观察和分析Apache日志

lnav是一个高级日志文件查看器,用于同时观看几种类型的日志,使用热键浏览文件,并生成汇总的直方图

不到两周前,Wannacry ransomware攻击破坏了数以千计的计算机,给大公司和个人造成了相当大的损失。 这一点,以及近年来发现的其他广泛的漏洞(如“Shell”),强调了保持在关键任务系统之上的重要性。

虽然漏洞通常针对一个特定的操作系统或软件组件,但检查进出网络的流量可能是保护您负责的资产的重要帮助。

建议阅读: 4好的Linux开源日志监控和管理工具

我确定你已经知道,系统日志是我们首先要查找这些信息的地方。 为了使此任务变得更简单,在本文中,我们将介绍如何安装和使用高级日志文件查看器lnav 使用lnav,您将能够同时观看几种类型的日志,使用热键浏览文件,并生成汇总的访问和错误直方图。 所以继续阅读!

在Linux中安装和启动lnav

要安装lnav ,请使用您的发行版的包管理系统。

# aptitude install lnav          [Debian and derivatives]
# yum install epel-release lnav  [CentOS 7 and similar]

安装完成后,启动lnav,后跟要检查日志所在目录的绝对路径。 因为这通常是/var/log ,我们来做:

# lnav /var/log/httpd

CentOS 7中检查Apache Web服务器的日志:

监控CentOS 7中的Apache日志

监控CentOS 7中的Apache日志

我们来简单地检查一下上图中显示的输出:

  • 右上角显示当前正在检查的文件( access_log-20170519access_log )。 当您向下滚动或向上滚动时,您会注意到文件名可能会随着您的不同而改变。
  • 40x HTTP响应(例如, 未找到禁止 )以粗体显示,而20x响应以常规文本显示。
  • IP地址以粗体显示。

那肯定看起来不错,不是吗? 但是,现在我们再深入一下,我们将会看到,lnav提供的不仅仅是一个漂亮的输出。

如果您好奇为什么错误日志未显示,您将在本文后面找到答案。 所以继续阅读!

使用选项和热键修改输出

在我们继续进行之前,让我们列出一些热键,这些热键可以让我们更轻松地浏览lnav的输出和可用的视图:

  • eE跳转到下一个/上一个错误消息。
  • wW跳转到下一个/上一个警告消息。
  • bBackspace移动到上一页。
  • 空格移动到下一页。
  • gG移动到当前视图的顶部/底部。

当日志被旋转时,根据logrotate配置文件中指定的设置,旧文件可能会被压缩(或不被压缩)。 要在输出中包含压缩文件,请按如下所示启动lnav:

# lnav -r /var/log/httpd

如果您想要仔细观察lnav操作的方式,可以使用-d选项启动程序,后跟一个文件名,其中调试信息将被写入,如下所示:

# lnav /var/log/httpd -d lnav.txt

在此示例中,lnav启动时生成的调试信息将写入当前工作目录中名为lnav.txt的文件。

该文件的前几行显示在以下图像中:

Apache调试信息

Apache调试信息

突出显示的文本表示lnav加载了默认格式文件,更具体地说,加载了access_log格式来解析Apache访问日志。 此外,lnav允许解析每个输出行,以便输出变得更容易可视化和理解。

建议阅读: GoAccess(实时Apache和Nginx)Web服务器日志分析器

要使用此功能,请启动程序并选择要解析的行。 所选行始终是窗口顶部的一行。 然后按p ,您应该看到以下结果:

Apache请求状态信息

Apache请求状态信息

要恢复正常模式,请再次按p键。

现在,如果要按日期和时间查看日志的摘要,请按i 例如,突出显示的文字表示,4月10日星期一下午10点到11点,共有37个HTTP请求,14个导致错误。

Apache日志按日期和时间

Apache日志日期和时间

一旦您根据上述的直方图确定了潜在的问题,您可以按i退出视图,使用解析器更详细地检查它,如前所述。 或者您还可以通过键入分号和编写标准查询来使用内置的SQL功能。 例如,做:

;.schema

以查看数据库模式中的可用表。 在确定了正确的表(在我们的例子中为access_log )之后,我们按q ,然后使用以下查询返回有关195.154.230.31的请求的所有可用信息:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'
Apache日志信息以表格格式显示

Apache日志信息以表格格式显示

请注意,我们还可以通过log_time过滤结果。 关键是,扔一点SQL,天空的限制,你可以做什么与lnav。

Apache默认日志格式

默认情况下, lnav加载了许多日志格式,因此在不进行干预的情况下进行了解析。 您可以在官方文档中的日志格式部分中查看列表。

默认格式在〜/ .lnav / formats / default / default-formats.json.sample中指定 ,其他格式可以使用.json扩展名添加〜/ .lnav /格式

但是,编辑这些文件需要一定程度的熟悉JSON(JavaScript对象符号)和PCRE(Perl兼容的正则表达式)库。

那么为什么lnav不显示Apache错误日志文件? 原因是这些日志与现有格式文件中的任何正则表达式不匹配,因此被视为常规文本文件(意味着没有给定日志格式的文件)。

建议阅读: 如何监控Apache Web Server加载和页面统计信息

如前所述,一旦您至少对JSON和PCRE很熟悉,您可以创建自己的格式。 这可以派上用场,例如,如果您定义了自定义的Apache日志。

概要

虽然我们使用Apache访问日志来演示如何使用lnav,但请记住,有几种其他类型的日志可以使用此工具查看和解析。 如果该工具无法识别特定日志,则可以创建其他格式并按照此处提供的指示进行安装。

您对本文有任何问题或意见? 和往常一样,随时让我们知道使用下面的表格。 我们期待您的回音!