如何在 Debian 7 上使用 Apache 安装和使用 GoAccess 网络日志分析器

介绍

GoAccess 允许您实时监控 Web 服务器日志,使用简单的命令行仪表板,以便快速查看和分析流量指标。它完全在一个终端中运行,统计数据在一个可滚动仪表板上组织成单独的面板。

本教程展示了如何从源头安装软件,然后展示了如何在命令行上使用、查看和导航程序。

GoAccess Dashboard

GoAccess 将与几乎任何其他 Web 服务器的日志文件一起工作. 但是,日志文件的特定格式化必须在 GoAccess 中定义才能正常工作。

本指南将专注于使用Apache作为所选择的Web服务器,具有或没有配置的虚拟主机。

前提条件

请在开始本教程之前完成这些前提。

  • VPS 使用 Debian 7 作为其操作系统
  • VPS 上的用户帐户具有 sudo elevation 特权。
  • Apache Web 服务器安装与活跃或之前活跃的 HTTP 流量

VPS处理的网页流量越多,GoAccess必须处理的数据越多 - 在这种情况下,更多是更好的。

步骤 1 – 更新系统包

首先,‘ssh’进入您的服务器作为具有‘sudo’升值特权的用户,然后按照下面的步骤进行。

1ssh sammy@your_server_ip

此命令更新了apt-get包管理器的数据库。

1sudo apt-get update

步骤 2 – 升级系统包

安装 Debian 系统包中的任何新更新。

1sudo apt-get upgrade

当被提示更新新包时,请通过输入y来确认。

步骤 3 – 安装 build-essential 包

构建必不可少套件提供了几个非常重要的子公司套件,例如制造,这些套件需要在 Debian 和 Linux 中编译软件。

以下是如何使用apt-get来安装该包:

1sudo apt-get install build-essential

步骤 4 – 安装 GoAccess 依赖

以下是您在 VPS 上安装和使用 GoAccess 所需的依赖性,您可以使用apt-get包管理器获取它们。

1sudo apt-get install libncursesw5-dev libglib2.0-dev libgeoip-dev libtokyocabinet-dev

步骤 5 – 设置构建目录

现在我们有必要的系统包,我们可以获得和构建GoAccess。

/usr/local/src 目录是构建 GoAccess 软件的合适场所. 通过运行此目录,让您的 当前 Debian 用户帐户拥有:

1sudo chown $USER /usr/local/src

然后通过命令为该用户授予目录阅读、写入和执行权限:

1sudo chmod u+rwx /usr/local/src

cd命令更改此目录:

1cd /usr/local/src

步骤 6 – 下载和提取 GoAccess 源代码

GoAccess 正在发布版本 0.8.5 作为其在写作时的稳定构建. 要下载它,请使用下面的 wget 命令。

1wget http://tar.goaccess.io/goaccess-0.8.5.tar.gz

现在可以使用tar命令来提取和解包下载的.tar.gz文件及其内容。

1tar -zxvf goaccess-0.8.5.tar.gz

第7步:编译和安装源代码

换到新不包装的目录像这样。

1cd goaccess-0.8.5/

运行此目录中发现的 configure 脚本,下面的命令中显示的两个前缀:

1./configure —enable-geoip —enable-utf8

使用命令来构建安装 GoAccess 所需的 makefile

1make

以下命令将安装 GoAccess (使用先前创建的 makefile) 到系统目录中,使其通过 Debian 执行。

1sudo make install

步骤 8 — 编辑 GoAccess 配置文件

在 GoAccess 的主要配置文件中有几个行 commented,我们需要 uncomment 以便在教程中稍后使用程序的一些高级功能。

我们将使用vi文本编辑器以以下方式编辑文件:

1sudo vi /usr/local/etc/goaccess.conf

此配置中的评论被标记为# ,这意味着服务器将忽略相同行之后的后续信息. 在此文件中,我们需要删除总共两个# 符号,以免评论两个行。

第一个是日期格式设置,它在这里看起来像这样。

1# Apache log date format. The following date format works with any
2# of the Apache's log formats below.
3#
4#date-format %d/%b/%Y

若要移除评论符号(# ),请多次按j按下方针,将其放到我们要编辑的行,即日期格式 %d/%b/%Y行。

如果做得正确,你的修正案现在应该是这样的:

1# Apache log date format. The following date format works with any
2# of the Apache's log formats below.
3#
4date-format %d/%b/%Y

注意:您可以按ESC并键入q,然后键入ENTER,以退出文件而不保存您的更改,如果您认为您犯了任何错误或意外更改。

需要没有评论的第二行是日志格式的行之一,准确的行取决于您的Apache设置。如果您只运行一个Apache主机,请选择第一个选项,如果您设置了 virtual hosts,则选择第二个选项。

** 警告: ** 只注释 ** 其中一行。

** 用于非虚拟主机设置**

对于没有虚拟主机的设置,请像以前那样删除下一行的哈希符号(# )。

1# NCSA Combined Log Format
2#
3log-format %h %^[%d:%^] "%r" %s %b "%R" "%u"
4#

** 对于虚拟主机设置**

对于使用虚拟主机的设置,请像以前那样删除下一行的哈希符号(# )。

1# NCSA Combined Log Format with Virtual Host
2#
3log-format %^:%^ %h %^[%d:%^] "%r" %s %b "%R" "%u"
4#

日志格式一行中放弃评论后,按ESC。然后键入:wq并按ENTER

现在我们可以在满足支持的格式化标准的任何简单文本的Apache日志文件上运行GoAccess。

步骤 9 — 将用户添加到adm

让我们在 Debian 中将我们当前的用户添加到管理员组(adm ),这样我们就可以运行这些命令,而不需要 root 用户权限的 ** sudo** 前缀。

usermod可以通过包括-g参数和我们想要添加的组名称(adm )来改变我们的用户的属性,然后是用户(在这种情况下 ** sammy** )。

1sudo usermod -g adm sammy

在运行上述命令后,通过键入退出,然后键入输入,然后与您的 sudo 用户重新登录 VPS。

1exit
2ssh sammy@your_server_ip

您现在应该有正确的权限来运行 GoAccess 作为此用户 不使用 sudo ,并可以访问 Apache 日志目录目录。

现在我们将找到日志目录。

步骤 10 - 查找日志文件

Web 服务器通常会记录所有接收和处理的 HTTP 请求到日志文件。

我们需要找到Apache存储其日志的位置,以便我们可以利用它们。

「/var/log/apache2」

要查看此目录的内容,您可以使用列表命令如下:

1ls /var/log/apache2

在这里,你会发现之前描述的日志文件,其中一些被压缩成 .gz 文件,如果您的服务器已经运行了足够长的时间。

对于已配置的虚拟主机的设置,您可能需要从/apache2内部cd到子目录,以查找每个主机的日志文件。

如果您在这里找到日志文件,请转到下一步(步骤 11 )。

  • 继续搜索*

您只需要阅读此进一步的信息,如果您在查找日志文件时遇到问题。

这些访问日志的位置由 Apache 配置中的CustomLog指令控制. 如果您更改了此设置,您可能会在不同的目录中找到您的 Apache 访问日志。

要找到CustomLog指令及其设置,您可以在下一个命令中显示的Apache配置文件中使用grep

这将输出在apache2.conf文件中添加的任何自定义目录。

1grep CustomLog /etc/apache2/apache2.conf

或者,您可以运行此命令,如果您在服务器上有大量文件,则可能需要一段时间:

1sudo find / -name access.log

这将显示系统上的所有名为access.log的文件。

步骤 11 - 运行 GoAccess

一旦您的Apache服务器日志文件的目录被找到,您可以使用下一个命令在其上运行GoAccess. 在此命令中,请确保用自己的日志文件目录路径代替 `/var/log/apache2/access.log,如果它不同于标准的Apache。

1goaccess -f /var/log/apache2/access.log -a

运行此命令后,您将看到 GoAccess 仪表板。

-f 参数告诉程序使用所提供的目录路径,而 -a 参数允许每个主机 agent 分析的所有记录统计数据。

** 可选:提取档案日志**

如果您想在较旧的日志上运行 GoAccess – 压缩的.gz 类型的文件 – 它们必须提取并卸载。

如果您愿意,您可以使用 Debian 中的gunzip程序进行此提取。

例如:

1sudo gunzip /var/log/apache2/access.log.10.gz

在这里的命令末尾的 access.log.10.gz 文件名必须匹配您想要提取的压缩文件名。

步骤 12 – 导航 GoAccess

这是GoAccess仪表板。

GoAccess Dashboard

以下是如何与仪表板互动:

  • F1h将带来一个小帮助窗口,列出在本节中发现的密钥及其功能,并提供一些其他有用的信息。
  • 0-9’或SHIFT + 0-9`将选择相应的编号模块,并将其激活。对应的数字可在每个部分的仪表板上看到。
  • oENTER用于扩展当前选择的模块在仪表板上。模块在下一节中被解释。
  • j将在扩展的活跃模块中滚动下来,而 k将在扩展的活跃模块中滚动回来。 *`s将显示现有活跃模块的分类选项。

** 更多互动可以通过以下键实现:**

  • 按下键盘上的TAB键将按下模块的顺序。
  • 按下SHIFT +TAB一起将执行最后操作的相反,并反复通过模块。 *F5可以按下来刷新和重新绘制仪表板。 *c按下设置并改变仪表板上使用的当前颜色方案。 *g将焦点移动到第一个项目,然后回到仪表板屏幕的顶部。

第13步 - 了解模块

现在你可以绕过界面,让我们看看每个模块实际上包含了什么。 这里的部分与程序中的编号模块和标题相符. 显示的所有 "Hit" 值基于提供的日志文件或文件中发现的请求总量(除非另有说明)。

** 仪表板 — 总体分析请求**

仪表板显示了:有效的请求、无效的请求、分析提供的数据所需的时间、独特的访问者到服务器、独特的请求文件、独特的静态文件(通常是图像文件类型)、独特的HTTP引用(URL),独特的404未找到的错误、分析日志文件的大小,最后消耗的带宽。

1 — 独一无二的访客

HTTP请求具有相同的 IP、相同的日期和相同的 agent 被视为独特的访问。

2 — 请求的文件

请求文件显示在您的 Web 服务器上最受要求的文件,并显示该 hits 作为数字和百分比,以及主机被服务的时间(带宽),使用的协议和使用的请求类型。

3 — 要求的静态文件

仅包含最常请求的静态文件类型,如jpg,css,swf,js,gifpng,与每个事件提供的最后一个模块相同的指标。

4 — HTTP 404 网址

与之前的模块类似,该模块列出了最常见的HTTP 404: Not Found Error请求,以及正在请求的URL。

5 - 主持人

主机对连接到您的 Web 服务器的主机本身有更详细的信息,例如连接次数、其 global IP 地址以及一些相同的重复指标类型。

这里的扩展模块可以显示更多的信息,如主机的反向DNS搜索结果和来源国,如果以前的a参数已启用,可以通过选择所需的IP地址来显示用户 _agents_列表,然后按ENTER

6 — 操作系统

这里显示了主机的操作系统,并排名了操作系统的使用情况,这是基于独特的访问,与大多数其他模块数据不同。

7 - 浏览器

浏览器模块遵循与最后一个模块相同的概念,但在这种情况下,用于连接会话的主机浏览器类型被排序。

8 — 引用 URLs

如果该主机通过其他资源访问了该网站,或从另一个主机链接 / 转移到您,他们被引导的URL将在本模块中提供。

9 — 引用网站

此模块与后一种模块(Referrer URLs )几乎相同;唯一的区别是显示了一般的网站地址,而不是引用的确切来源点。

第10章 关键词

报告在 Google 搜索、Google 缓存和 Google 翻译中使用的关键字,导致您的 Web 服务器处理主机。

11 - 地理位置**

此模块包含从访问主机 IP 地址中确定的地理位置的概述.如果无法确定这一点,它将被标记为位置未知

12 — HTTP状态代码

HTTP 状态代码包含 HTTP 请求中的整体状态代码值的统计数据,以数量和百分比为准。

(可选) 进一步使用 GoAccess

cd~移动到用户的主目录以继续通过这些额外的命令. 次要的pwd命令打印您的当前工作目录,以便您可以确认您已正确地更改。

1cd ~
2pwd

HTML 报告

可以通过 redirecting (>) GoAccess 的标准输出来生成 HTML 报告,以选择任何名称的 HTML 文件。

在此示例中,该文件被命名为 report.html,并包含从所选日志文件中可用的所有统计数据。

1goaccess -f /var/log/apache2/access.log -a > report.html

新生成的html文件是在我们用户的 home 目录中创建的。

JSON 报告

您可以通过将-ojson参数添加到命令中创建 JSON 类型报告,在这里输出文件具有.json扩展。

1goaccess -f /var/log/apache2/access.log -a -o json > report.json

CSV 报告

要生成 CSV 文件,请遵循之前的相同方法;只需将 csv 参数附加到命令中,然后更改文件扩展为 .csv

1goaccess -f /var/log/apache2/access.log -a -o csv > report.csv

运行压缩文件

要让压缩文件通过GoAccess运行,您可以将zcat命令的输出管道到goaccess命令中。

1zcat /var/log/apache2/access.log.*.gz | goaccess -a

过滤按开始日期

要从指定的开始日期进行过滤,可以使用下一个命令的结构,从而确保从 2015 年 1 月 20 日到日志文件内容的结束时对 HTTP 请求进行解析。

1sed '/20\/Jan\/2015/,$ p' /var/log/apache2/access.log | goaccess -a

请注意,如果您输入的日期实际上包含在传输的日志文件中,这只会起作用。

过滤日

您可以单独确定特定日期,并过滤以显示当天的流量,这次我们将使用抓住来做到这一点。

1grep '20/Jan/2015' /var/log/apache2/access.log | goaccess -a

排除客人

使用此命令排除特定的 IP 地址,以所需的 IP 地址代替111.111.111.111

1goaccess exclude-ip=111.111.111.111 -f /var/log/apache2/access.log -a

远程使用

如果 GoAccess 安装在远程计算机上,例如本地工作站,而不是 VPS,则可以 SSH 到 VPS,然后通过 piping 远程阅读 Apache 日志文件。

1ssh sammy@your_server_ip 'cat /var/log/apache2/access.log' | goaccess -a

结论

完成本指南后,您应该知道如何安装 GoAccess,利用其核心功能,并能够使用其他几个功能,使 GoAccess 更灵活地工作。

以下是涵盖了什么的完整回顾:

  • 获取和更新所需的 Debian 系统包。
  • 安装和构建 GoAccess 以其源代码。
  • 运行 GoAccess 以 Apache 网页服务器日志文件。
  • 在命令行上互动并导航 GoAccess。
  • 理解 GoAccess 仪表板中的模块。
  • 使用 redirection.
  • Piping 其他命令输出到 GoAccess. 创建不同类型的 Apache 网页服务器日志
Published At
Categories with 技术
comments powered by Disqus