如何在Debian7上通过Apache安装和使用GoAccessWeb日志分析器

来自菜鸟教程
跳转至:导航、​搜索

介绍

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

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

GoAccess 可以处理来自几乎任何其他 Web 服务器的日志文件。 但是,必须在 GoAccess 中定义日志文件的特定格式才能正常运行。

本指南将重点介绍使用 Apache 作为所选的 Web 服务器,无论是否配置了虚拟主机。

先决条件

请在开始本教程之前完成这些先决条件。

VPS 处理的网络流量越多,GoAccess 必须处理的数据就越多——在这种情况下,越多越好。

第 1 步 — 更新系统包

首先,ssh 以具有 sudo 提升权限的用户身份进入您的服务器。 然后按照以下步骤操作。

ssh sammy@your_server_ip

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

sudo apt-get update

第 2 步 — 升级系统包

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

sudo apt-get upgrade

当提示更新新软件包时,输入 y 进行确认。

第 3 步 — 安装 build-essential 软件包

build essential 软件包提供了几个非常重要的附属软件包,例如 make,它们是在 Debian 和 Linux 中编译软件所需的。 这些是本指南后面的 GoAccess 安装阶段的必需品。

以下是使用 apt-get 安装软件包的方法:

sudo apt-get install build-essential

第 4 步 — 安装 GoAccess 依赖项

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

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

第 5 步 — 设置构建目录

现在我们已经有了必要的系统包,我们可以获取并构建 GoAccess。

/usr/local/src 目录是构建 GoAccess 软件的合适位置。 通过运行以下命令为您的 current Debian 用户帐户授予此目录的所有权:

sudo chown $USER /usr/local/src

然后通过以下命令为同一用户授予目录读取、写入和执行权限:

sudo chmod u+rwx /usr/local/src

使用 cd 命令切换到此目录:

cd /usr/local/src

第 6 步 — 下载并提取 GoAccess 源代码

在撰写本文时,GoAccess 的稳定版本为 0.8.5。 要下载它,请使用下面的 wget 命令。

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

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

tar -zxvf goaccess-0.8.5.tar.gz
    1. Step 7 - 编译和安装源代码

像这样切换到新解压的目录。

cd goaccess-0.8.5/

运行在此目录中找到的 configure 脚本,并使用下一个命令中显示的两个前缀:

./configure —enable-geoip —enable-utf8

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

make

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

sudo make install

第 8 步 — 编辑 GoAccess 配置文件

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

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

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

此配置中的注释由 # 表示,表示服务器将忽略其后同一行的后续信息。 在此文件中,我们需要删除总共两个 # 符号以取消注释两行。

第一个是 date-format 设置,它在这里显示如下。

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

要删除注释符号 (#),请多次按 j 将光标放到我们要编辑的行,即 date-format %d/%b/%Y 行。 一旦它到达该行并选择 #x 将其删除。

如果正确完成,您的修改现在应该如下所示:

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

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

需要取消注释的第二行是 log-format 行之一,确切的行取决于您的 Apache 设置。 如果您只运行一个 Apache 主机,请选择第一个选项,如果您设置了 虚拟主机,请选择第二个选项。 如果您不确定,您可能应该遵循“非虚拟主机设置”部分。

警告: 仅取消注释这些行中的 一个

对于非虚拟主机设置

对于没有虚拟主机的设置,以与以前相同的方式删除以下行的哈希 (#) 符号。

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

对于虚拟主机设置

对于带有虚拟主机的设置,以与以前相同的方式删除以下行的哈希 (#) 符号。

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

取消注释 log-format 行中的 一个 后,按 ESC。 然后键入 :wq 并按 ENTER。 这将写入我们对文件所做的更改并退出 vi 文本编辑器。

我们现在可以在任何符合支持的格式标准的纯文本 Apache 日志文件上运行 GoAccess。

第 9 步 - 将您的用户添加到“adm”组

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

usermod 可以通过包含 -g 参数和我们希望添加到的组名 (adm) 来更改我们用户的属性,然后是相关用户(在这种情况下萨米)。 确保将下一个命令中的 sammy 替换为您自己的 Linux 用户名。

sudo usermod -g adm sammy

运行上述命令后,键入 exit 然后 ENTER 断开与您的 VPS 的连接。 然后使用您的 sudo 用户重新登录到 VPS。 这样我们之前使用 usermod 对用户所做的更改才会生效。

exit
ssh sammy@your_server_ip

你现在应该有正确的权限以这个用户 运行 GoAccess 而不使用 sudo ,并且还可以访问 Apache 日志目录。

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

第 10 步 — 找到日志文件

Web 服务器通常将所有传入和处理的 HTTP 请求记录到日志文件中。

我们需要找到 Apache 存储其日志的位置,以便我们可以使用它们。 默认情况下,在 Debian 系统上,Apache 日志文件存储在:

/var/log/apache2

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

ls /var/log/apache2

在这里你会找到前面描述的日志文件,如果你的服务器已经运行了足够长的时间,其中一些会被压缩成 .gz 文件。 当前正在写入并由 Web 服务器处理的最新文件是未压缩的文件,名为 access.log

对于配置了虚拟主机的设置,您可能必须将 cd 放入 /apache2 内的子目录中,以找到每个单独主机的日志文件。

如果您在此处找到日志文件,则继续下一步(Step 11)。

进一步搜索

如果您在查找日志文件时遇到问题,您只需阅读此详细信息。

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

要查找 CustomLog 指令及其设置,您可以在其中一个 Apache 配置文件中使用 grep,如下一个命令所示。

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

grep CustomLog /etc/apache2/apache2.conf

或者,您可以运行此命令,如果您的服务器上有很多文件,这可能需要一段时间:

sudo find / -name access.log

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

    1. Step 11 - 运行 GoAccess

找到包含 Apache 服务器日志文件的目录后,您可以使用下一个命令在它们上运行 GoAccess。 在此命令中,确保将 /var/log/apache2/access.log 替换为您自己的日志文件目录路径,如果它与标准 Apache 不同。

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

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

-f 参数告诉程序使用提供的目录路径,-a 参数启用每个解析的主机 agent 的所有记录统计信息。

可选:提取归档日志

如果您想在较旧的日志(压缩的 .gz 类型的文件)上运行 GoAccess,则必须将它们解压缩并解压缩。 程序将 not 使用上面显示的命令在这些压缩文件上运行。

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

例如:

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

此处命令末尾的 access.log.10.gz 文件名需要与您要提取的压缩文件名匹配。

第 12 步 — 导航 GoAccess

这是 GoAccess 仪表板。

以下是与仪表板交互的方法:

  • F1h 将打开一个小帮助窗口,列出本节中的按键及其功能,并提供一些其他有用的信息。
  • 0-9SHIFT + 0-9 选择相应编号的模块并将其设置为激活。 可以在每个部分的仪表板上看到相应的数字。
  • oENTER 用于扩展仪表板上当前选择的模块。 模块将在下一节中解释。
  • j 将在扩展的活动模块中向下滚动,k 将在扩展的活动模块中向上滚动。
  • s 显示可用于活动模块的排序选项。
  • 最后,按 q 将退出程序或当前窗口,或折叠活动模块,具体取决于您当前在仪表板中的深度级别。

更多交互可以通过以下按键实现:

  • 按键盘上的 TAB 键将按顺序向前移动模块。
  • 同时按下 SHIFT + TAB 将执行与上一个操作相反的操作,并向后迭代模块。
  • F5可以按刷新和重绘仪表板。
  • c 按下时设置和更改仪表板上当前使用的配色方案。
  • g 将焦点移至第一项并返回仪表板屏幕的顶部。
  • G 滚动到仪表板屏幕的最后一项或底部。

第 13 步 — 了解模块

现在您可以在界面中移动,让我们看一下每个模块实际包含的内容。 此处的部分对应于程序中编号的模块和标题。 显示的所有 “Hit” 值均基于在提供的一个或多个日志文件中分别找到的请求总数(除非另有说明)。

仪表板 - 总体分析的请求

仪表板显示以下数量:有效请求、无效请求、分析所提供数据所花费的时间、服务器的唯一访问者、唯一请求的文件、唯一静态文件(通常是图像文件类型)、唯一 HTTP 引用 (URL)、唯一 404未找到错误、已解析日志文件的大小以及最后消耗的任何带宽。

1 — 独立访客

该模块按天列出,包括日期。 具有相同IP、相同日期、相同agent的HTTP请求被认为是唯一的访问。 这包括网络爬虫/蜘蛛。

2 — 请求的文件

Requested Files 显示您的 Web 服务器上请求最多的文件,并将所述 hits 显示为数字和百分比,以及为主机提供服务的时间(带宽)、使用的协议以及什么使用了请求类型。

3 - 请求的静态文件

仅包括最常请求的静态文件,例如:jpgcssswfjsgif 和 [ X125X] 文件类型,具有与为每次出现提供的最后一个模块相同的度量标准。

4 — HTTP 404 URL

与具有相同统计数据的先前模块一样,该模块列出了经常出现的 HTTP 404:未找到错误请求以及正在请求的 URL。

5 — 主机

Hosts 包含有关连接到您的 Web 服务器的主机本身的更详细信息,例如连接数、它们的 全局 IP 地址以及一些相同的重复指标类型。

如果启用了之前的 -a 参数,此处的扩展模块可以显示更多信息,例如主机的反向 DNS 查找结果和原产国。 通过选择所需的 IP 地址,然后按 ENTER 可以显示用户 agents 的列表。

6 — 操作系统

此处显示了主机的操作系统,并对操作系统的使用情况进行了排名。 与大多数其他模块数据不同,这是基于唯一访问。

7 — 浏览器

浏览器模块遵循与上一个模块相同的概念,除了在这种情况下,用于连接会话的主机浏览器类型被排名。 同样,这是基于唯一身份访问者,而不是总体请求总数。

8 — 引荐来源网址

如果有问题的主机通过其他资源访问该站点,或者从其他主机链接/转移给您,则在此模块中将提供他们被引用的 URL。

9 — 推荐网站

该模块与上一个模块几乎相同(Referrer URLs); 唯一的区别是显示的是一般站点地址,而不是推荐的确切来源。

10 — 关键词

报告在 Google 搜索、Google 缓存和 Google 翻译中使用的导致您的 Web 服务器处理主机的关键字。 目前只支持谷歌,不支持其他搜索引擎。

11 — 地理位置

此模块包含从访问主机 IP 地址确定的地理位置摘要。 如果无法确定,则标记为location unknown

12 — HTTP 状态码

HTTP 状态代码包含有关 HTTP 请求中整体状态代码值的统计信息,以数量和百分比形式给出。

(可选)进一步使用 GoAccess

使用 cd~ 移动到用户的主目录以继续执行这些额外的命令。 辅助 pwd 命令打印您当前的工作目录,因此您可以确认您已正确切换到它。

cd ~
pwd

HTML 报告

可以通过 将 GoAccess 的标准输出重定向 (>) 到您选择的任何名称的 HTML 文件来生成 HTML 报告。

在此示例中,该文件名为 report.html 并包含所选日志文件中可用的所有 (-a) 统计信息。

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

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

JSON 报告

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

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

CSV 报告

要生成 CSV 文件,请按照与之前相同的方法进行操作; 只需将 csv 参数附加到命令,并将文件扩展名更改为 .csv

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

运行压缩文件

要让压缩文件通过 GoAccess 运行,您可以将 zcat 命令的输出通过管道传输到 goaccess 命令。 下一个命令显示 all 压缩的 .gz 文件正在读入,而无需先手动提取它们。

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

按开始日期过滤

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

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

请注意,这仅在您输入的日期实际包含在传递的日志文件中时才有效。

按天过滤

您可以选择特定日期,并过滤以显示当天的流量。 这次我们将使用 grep 来实现。

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

排除主机

使用此命令排除特定 IP 地址,将 111.111.111.111 替换为所需的 IP 地址。

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

远程使用

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

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

结论

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

以下是对所涵盖内容的完整回顾:

  • 获取和更新必要的 Debian 系统软件包。
  • 使用其源代码安装和构建 GoAccess。
  • 使用 Apache Web 服务器日志文件运行 GoAccess。
  • 在命令行上通过 GoAccess 进行交互和导航。
  • 了解 GoAccess 仪表板中的模块。
  • 使用 重定向 从 Apache Web 服务器日志创建不同的报告类型。
  • Piping 其他命令输出到 GoAccess。