介绍
GoAccess 允许您实时监控 Web 服务器日志,使用简单的命令行仪表板,以便快速查看和分析流量指标。它完全在一个终端中运行,统计数据在一个可滚动仪表板上组织成单独的面板。
本教程展示了如何从源头安装软件,然后展示了如何在命令行上使用、查看和导航程序。
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仪表板。
以下是如何与仪表板互动:
- 按
F1
或h
将带来一个小帮助窗口,列出在本节中发现的密钥及其功能,并提供一些其他有用的信息。 0-9’或
SHIFT + 0-9`将选择相应的编号模块,并将其激活。对应的数字可在每个部分的仪表板上看到。o
或ENTER
用于扩展当前选择的模块在仪表板上。模块在下一节中被解释。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
,gif
和png
,与每个事件提供的最后一个模块相同的指标。
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 报告
您可以通过将-o
和json
参数添加到命令中创建 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 网页服务器日志