不到两周前,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日志
我们来简单地检查一下上图中显示的输出:
- 右上角显示当前正在检查的文件( access_log-20170519和access_log )。 当您向下滚动或向上滚动时,您会注意到文件名可能会随着您的不同而改变。
- 40x HTTP响应(例如, 未找到或禁止 )以粗体显示,而20x响应以常规文本显示。
- IP地址以粗体显示。
那肯定看起来不错,不是吗? 但是,现在我们再深入一下,我们将会看到,lnav提供的不仅仅是一个漂亮的输出。
如果您好奇为什么错误日志未显示,您将在本文后面找到答案。 所以继续阅读!
使用选项和热键修改输出
在我们继续进行之前,让我们列出一些热键,这些热键可以让我们更轻松地浏览lnav的输出和可用的视图:
-
e
或E
跳转到下一个/上一个错误消息。 -
w
或W
跳转到下一个/上一个警告消息。 -
b
或Backspace
移动到上一页。 - 空格移动到下一页。
-
g
或G
移动到当前视图的顶部/底部。
当日志被旋转时,根据logrotate配置文件中指定的设置,旧文件可能会被压缩(或不被压缩)。 要在输出中包含压缩文件,请按如下所示启动lnav:
# lnav -r /var/log/httpd
如果您想要仔细观察lnav操作的方式,可以使用-d
选项启动程序,后跟一个文件名,其中调试信息将被写入,如下所示:
# lnav /var/log/httpd -d lnav.txt
在此示例中,lnav启动时生成的调试信息将写入当前工作目录中名为lnav.txt的文件。
该文件的前几行显示在以下图像中:
Apache调试信息
突出显示的文本表示lnav加载了默认格式文件,更具体地说,加载了access_log格式来解析Apache访问日志。 此外,lnav允许解析每个输出行,以便输出变得更容易可视化和理解。
建议阅读: GoAccess(实时Apache和Nginx)Web服务器日志分析器
要使用此功能,请启动程序并选择要解析的行。 所选行始终是窗口顶部的一行。 然后按p
,您应该看到以下结果:
Apache请求状态信息
要恢复正常模式,请再次按p
键。
现在,如果要按日期和时间查看日志的摘要,请按i
。 例如,突出显示的文字表示,4月10日星期一下午10点到11点,共有37个HTTP请求,14个导致错误。
Apache日志日期和时间
一旦您根据上述的直方图确定了潜在的问题,您可以按i
退出视图,使用解析器更详细地检查它,如前所述。 或者您还可以通过键入分号和编写标准查询来使用内置的SQL功能。 例如,做:
;.schema
以查看数据库模式中的可用表。 在确定了正确的表(在我们的例子中为access_log )之后,我们按q
,然后使用以下查询返回有关195.154.230.31的请求的所有可用信息:
;SELECT * FROM access_log WHERE c_ip='195.154.230.31'
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,但请记住,有几种其他类型的日志可以使用此工具查看和解析。 如果该工具无法识别特定日志,则可以创建其他格式并按照此处提供的指示进行安装。
您对本文有任何问题或意见? 和往常一样,随时让我们知道使用下面的表格。 我们期待您的回音!