如何在 Ubuntu 20.04 上安装和使用 GoAccess Web 日志分析器
作者选择了 Internet Archive 作为 [Write for DOnations] (https://do.co/w4do-cta) 的一部分接受捐赠) 程序。 介绍 GoAccess 是一个实时监控网络服务器日志的工具。它是用 C 语言编写的,并使用流行的 ncurses 库作为其仪表板界面,可以直接从命令行访问。 这很棒,因为您可以通过 SSH 连接到您控制的任何 Web 服务器,
作者选择了 Internet Archive 作为 [Write for DOnations] (https://do.co/w4do-cta) 的一部分接受捐赠) 程序。
介绍
GoAccess 是一个实时监控网络服务器日志的工具。它是用 C 语言编写的,并使用流行的 ncurses 库作为其仪表板界面,可以直接从命令行访问。
这很棒,因为您可以通过 SSH 连接到您控制的任何 Web 服务器,并快速安全地查看或分析相关统计数据。除了命令行仪表板界面,它还能够以 HTML、JSON 和 CSV 等其他格式显示统计信息,您可以在其他上下文中使用或与他人共享。
根据您的需要,GoAccess 也可以成为客户端分析工具的绝佳替代品。它直接分析您的服务器日志,因此您无需加载任何额外的脚本,并且您的数据完全在您的控制之下。
在本教程中,您将在 Ubuntu 20.04 Web 服务器上安装和配置 GoAccess for Apache。在查看可用模块和命令行界面上的导航快捷方式之前,您将使用 GoAccess 访问 Apache 日志文件。
先决条件
对于本教程,您将需要以下内容:
-
一台 Ubuntu 20.04 服务器。您可以按照Ubuntu 20.04 的初始服务器设置教程 进行设置,包括一个非具有 sudo 权限和防火墙的 root 用户。
-
按照如何在 Ubuntu 20.04 上安装 Apache 安装 Apache )。
第 1 步 — 安装 GoAccess
在此步骤中,您将安装 GoAccess 工具及其依赖项。
首先确保包数据库和系统是最新的:
sudo apt 更新
sudo apt 全面升级
现在是安装 GoAccess 的时候了。 Ubuntu 存储库中提供了该工具的一个版本,但这通常不是最新的稳定版本。例如,撰写本文时 GoAccess 的最新版本是 1.4,而 Ubuntu 20.04 存储库中可用的版本是 1.3。
为确保您的服务器上安装了最新稳定版本的 GoAccess,您可以从源代码编译或使用 Ubuntu 上的官方 GoAccess 存储库。
方法一——从源代码编译
首先,安装从源代码编译 GoAccess 所需的依赖项:
sudo apt install libncursesw5-dev libgeoip-dev libtokyocabinet-dev build-essential
您安装以下依赖项:
-
build-essential
:安装许多包,其中包括用于 C、C+ 和其他编程语言的gcc
编译器,以及用于构建 GoAccess makefile 的make
。 -
libncursesw5-dev
:安装 GoAccess 用于其命令行界面的 ncurses 库。 -
libgeoip-dev
:包括 GeoIP 库的必要文件。 -
libtokyocabinet-dev
:提供数据库依赖以获得更高的性能。
接下来,使用以下命令从他们的 官方网站 下载最新版本的 GoAccess:
wget http://tar.goaccess.io/goaccess-1.4.tar.gz
下载完成后,使用以下命令提取存档:
tar -xzvf goaccess-1.4.tar.gz
像这样进入新解压的目录:
cd goaccess-1.4/
运行此目录中的配置脚本:
./configure --enable-utf8 --enable-geoipu003dlegacy
--enable-utf8
标志确保 GoAccess 编译时支持宽字符,而 --enable-geoip
启用原始 GeoIP 数据库的 GeoLocation 支持。您可以将 legacy
替换为 mmdb
以改用增强型 GeoIP2 数据库。您可以在 GoAccess 网站 上找到其他配置选项。
您将收到类似于以下内容的输出:
输出。 . .
您的构建配置:
前缀:/usr/local
包:goaccess
版本:1.4
编译器标志:-pthread
链接器标志:-lnsl -lncursesw -lGeoIP -lpthread
UTF-8 支持:是的
动态缓冲区:否
地理位置:GeoIP Legacy
存储方式 : In-Memory with On-Disk Persistence Storage
TLS/SSL:没有
错误:hello@goaccess.io
运行 make
命令来构建安装 GoAccess 所需的 makefile:
制作
最后,使用之前创建的 makefile 将 GoAccess 安装到系统中:
须藤使安装
运行以下命令确保程序安装成功:
访问--版本
您将收到以下输出:
输出GoAccess - 1.4。
更多详情请访问:http://goaccess.io
版权所有 (C) 2009-2020,Gerardo Orellana
构建配置参数:
--启用-utf8
--enable-geoipu003dlegacy
方法 2 — 使用官方 GoAccess 存储库
安装 GoAccess 的另一种方法是使用该程序的官方 Ubuntu 存储库。如果您希望在系统升级期间自动将其更新到较新的版本,而无需为每个新版本从源代码编译,则此方法更可取。您需要先将存储库添加到您的服务器:
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
首先,您获取发行版的发布名称,然后将其通过管道传递给 tee
,该名称附加到文件 /etc/apt/sources.list.d/goaccess.list
。
使用源列表中的存储库,您现在可以下载 GPG 密钥以验证签名:
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg 添加-
接下来,使用以下命令更新包数据库:
sudo apt 更新
最后,安装 GoAccess:
sudo apt install goaccess
GoAccess 现在已安装在您的 Ubuntu 服务器上。在下一步中,您将访问并编辑其配置文件,以便您可以更改程序的运行方式。
步骤 2 — 编辑 GoAccess 配置
GoAccess 附带一个配置文件,您可以在其中对程序的行为进行永久更改。您将编辑此文件以指定时间、日期和日志格式,以便 GoAccess 知道如何解析服务器日志。
配置文件可能位于 ~/.goaccessrc
或 %sysconfdir%/goaccess.conf
,其中 %sysconfdir%
是 /etc/、
/usr/etc/或
/usr/本地/etc/`.要找出配置文件在服务器上的位置,请运行以下命令:
访问--dcf
示例输出/etc/goaccess/goaccess.conf
使用 nano
编辑此配置文件:
Sudonano / 等 / Goases / Goases。 conf
注意: 如果服务器上不存在此文件,请确保先创建它并使用 GitHub 上的 goaccess.conf
文件的内容填充它goaccess/blob/v1.4/config/goaccess.conf)。
文件中的许多行都被注释掉了。要启用某个选项,请删除它前面的第一个 #
字符。让我们首先为 Apache 启用 time-format
设置。此设置指定“日志格式”时间,并允许 GoAccess 解析任何符合支持的格式标准的纯文本 Apache 日志文件。
/etc/goaccess/goaccess.conf
# 以下时间格式适用于任何
# Apache/NGINX 的日志格式如下。
#
时间格式 %H:%M:%S
接下来,您将取消注释指定 log-format
日期的 Apache date-format
设置:
/etc/goaccess/goaccess.conf
# 以下日期格式适用于任何
# Apache/NGINX 的日志格式如下。
#
日期格式 %d/%b/%Y
最后,取消注释 log-format
设置。几行更改此设置,取消注释的确切行取决于您的 Web 服务器的设置方式。如果您有非虚拟主机设置,请取消注释以下 log-format
行:
/etc/goaccess/goaccess.conf
# NCSA 组合日志格式
日志格式 %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
否则,如果您设置了虚拟主机,请取消注释以下行:
/etc/goaccess/goaccess.conf
# NCSA 结合虚拟主机的日志格式
日志格式 %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
此时,您可以保存文件并退出编辑器。您现在已准备好运行 GoAccess 程序并分析一些 Apache 纯文本日志文件。
第 3 步 — 使用 GoAccess 访问 Apache 的日志文件
Apache 服务器授予对您网站的访问权限,并为所有传入的 HTTP 流量保留访问日志。这些记录或日志文件存储在系统中,可以成为有关您网站使用情况和受众的宝贵信息来源。
在 Ubuntu 上,Apache 日志文件默认存储在 /var/log/apache2
目录中。要检查此目录的内容,请运行以下命令:
须藤 ls /var/log/apache2
示例 outputaccess.log error.log other_vhosts_access.log
如果您的服务器已经运行了很长时间,您可能会在此目录中找到压缩的 .gz
文件,其中包含日志轮换的结果。最新的日志放置在 access.log
文件中。对于具有虚拟主机的 Web 服务器,您可能必须从 /apache2
目录中的子目录中 cd
来定位每个主机的日志文件。
让我们继续针对 Apache 访问日志运行 GoAccess,以深入了解 Web 服务器正在处理哪种类型的流量。运行以下命令以使用 GoAccess 分析您的 access.log
文件:
sudo goaccess /var/log/apache2/access.log
这将启动 GoAccess 命令行仪表板。
注意: 如果您看到的是 Log Format Configuration 提示,则表示您在上一步中对 GoAccess 配置文件所做的更改没有生效。确保您的配置文件位于正确的位置,并且您已取消注释必要的设置。
如前所述,您有时会在长时间运行的 Web 服务器上拥有多个压缩日志文件。要在所有这些文件上运行 GoAccess 而不先提取它们,您可以将 zcat
命令的输出通过管道传输到 goaccess
:
zcat /var/log/apache2/access.log.*.gz | goaccess -a
接下来,您将学习如何使用键盘快捷键快速浏览仪表板界面。
第 4 步 — 浏览终端仪表板
仪表板顶部是几个关键指标的摘要。这包括报告期间的总请求数、唯一访问者、日志大小、404 未找到错误、请求的文件、已解析日志文件的大小、HTTP 引用者、日志源的名称、处理日志文件所用的时间等。
在顶部面板下方,您将找到所有可用模块,这些模块提供了有关 GoAccess 支持的上述指标和其他数据点的更多详细信息。要导航界面,请使用以下键盘快捷键:
-
TAB
在可用模块中向前移动,SHIFT+TAB
向后移动。 -
F5
刷新仪表板。 -
g
移动到仪表板屏幕的顶部,G
移动到仪表板中的最后一项。 -
o
或ENTER
展开选定的模块。 -
j
和k
在活动模块中向下和向上滚动。 -
s
显示活动模块的排序选项。 -
/
搜索所有模块,n
移动到下一个匹配项。 -
0-9
和SHIFT+0
快速激活各自编号的模块。 -
?
查看快速帮助对话框。 -
q
退出程序。
接下来让我们检查仪表板上的每个可用模块。每一个都有一个数字和一个标题,以及存在的总行数的指示。 >
字符表示活动面板,它也反映在仪表板的顶部。
以下是每个面板的简要说明。下面的每个部分对应于程序中的面板编号和标题。
1 - 每天的唯一身份访问者
此面板显示每个报告日期的点击次数、唯一身份访问者和累积带宽。唯一访问者被认为是具有相同 IP 地址、日期和用户代理的访问者。它默认包括网络爬虫和蜘蛛。
2 - 请求的文件(URL)
此面板提供有关 Web 服务器上请求最高的非静态文件的统计信息。它显示请求路径、HTTP 协议和方法、唯一访问者、点击次数和累积带宽。
3 - 静态请求
此面板提供与前一个相同的指标,但适用于静态文件,例如图像、CSS、JavaScript 或其他文件类型。
4 — 未找到 URL (404)
此面板还显示在 2 和 3 中讨论的相同指标,但针对在服务器上未找到的路径 (404s)。
5 - 访客主机名和 IP
此面板提供有关连接到 Web 服务器的主机的详细信息。您可以找到他们的 IP 地址、访问次数和消耗的带宽量。这是识别谁占用了您的所有带宽并在必要时阻止它们的好方法。
如果您通过按 o
展开此面板,您将看到有关每个主机的更多信息,例如其原产国、城市和反向 DNS 查找结果。
6 — 操作系统
此面板报告主机用于连接到您的 Web 服务器的不同操作系统。展开此面板将显示每个操作系统的特定版本。
7 — 浏览器
与上一个面板类似,这会向您的 Web 服务器报告每个唯一访问者使用的浏览器,并在展开后列出每个浏览器的特定版本。
8 - 时间分布
在这里,您会找到点击次数、唯一身份访问者和消耗的带宽的每小时报告。这是在您的服务器上发现高峰流量时段的好方法。
9 — 虚拟主机
此面板显示从日志文件解析的虚拟主机。只有当 %v
包含在日志格式配置中时,它才会激活。
10 - 引荐来源网址
将访问主机引至您的 Web 服务器的 URL 会在此处反映出来。此面板默认禁用,只能通过注释掉 GoAccess 配置文件中突出显示的 REFERRERS
行来启用:
/etc/goaccess/goaccess.conf
#ignore-panel VISIT_TIMES
#ignore-panel VIRTUAL_HOSTS
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
11 — 推荐网站
此面板显示引用主机的 IP 地址,但不显示整个 URL。
12 — 关键词
在这里,报告了在谷歌搜索、谷歌缓存和谷歌翻译中使用的、导致您的网站的关键字。此面板默认情况下也是禁用的,必须在设置中启用:
/etc/goaccess/goaccess.conf
#ignore-panel REFERRERS
#ignore-panel REFERRING_SITES
#ignore-panel 关键词
#ignore-panel STATUS_CODES
13 — HTTP 状态码
此面板反映您的 Web 服务器在响应请求时返回的 HTTP 状态代码的总体统计信息。展开面板将显示每个状态代码的汇总统计信息。
14 — 远程用户(HTTP 身份验证)
此面板显示在您的服务器上请求文档的人的用户 ID,由 HTTP 身份验证确定。对于没有密码保护的文档,这部分将是-
。请注意,仅当 %e
是日志格式配置的一部分时,才会启用此面板。
15 - 缓存状态
此面板允许您确定是否正在缓存请求并从缓存中提供服务。如果 %C
是日志格式变量的一部分,则启用它,状态可以是 MISS
、BYPASS
、EXPIRED
、STALE
、UPDATING
、REVALIDATED
或 HIT
.
16 - 地理位置
此面板提供了源自访问 IP 地址的地理位置的摘要。展开此面板将显示每个原产国的汇总统计信息。
您已经查看了仪表板中可用的面板,现在您将生成不同格式的报告。
步骤 5 — 生成报告
除了在终端中显示数据外,GoAccess 还允许您生成 HTML、JSON 或 CSV 报告。在运行本节中的任何命令之前,请确保您位于主目录中:
光盘~
要将报告输出为静态 HTML,请将 HTML 文件指定为 -o
标志的参数。此标志还接受以 .json
或 .csv
结尾的文件名。
sudo goaccess /var/log/apache2/access.log -o stats.html
stats.html
文件应该出现在您的用户目录中。
ls
输出goaccess-1.4 goaccess-1.4.tar.gz snap stats.html
您可以使用 scp
将此文件复制到本地计算机上的用户目录。从本地计算机而不是远程服务器运行此命令:
scp user@your_server_ip:stats.html ~/stats.html
复制文件后,您可以在浏览器中使用 macOS 上的“打开”命令打开它:
打开 ~/stats.html
或者,如果您在本地计算机上使用 Linux 发行版:
xdg-打开 ~/stats.html
您已生成 HTML 报告并在浏览器中查看。
结论
在本文中,我们介绍了 GoAccess 命令行工具并讨论了如何使用它来分析服务器日志。虽然我们只考虑了 GoAccess 如何与 Apache 日志一起使用,但该工具还支持其他日志格式,例如 Nginx、Amazon S3、Elastic Load Balancing 和 CloudFront。
您可以查看 完整的 GoAccess 文档 或在终端中运行 man goaccess
。
更多推荐
所有评论(0)