运行网站的挑战之一是了解您的Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您,但要完全了解正在发生的事情,唯一的方法是查看 Web 日志。 阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。这就是 GoAccess 的作用所在。GoAccess 提供日志中正在发生的事情的实时概览,并提供统计数据和可视化效果来帮助传达这些信息。 数据可通过 Web 浏览器和终端获取。
如果您访问GoAccess网站,那里有一个现场演示,您可以在那里体验该程序,并决定您是否认为这是一个有用的工具。如果是,请继续阅读有关如何在服务器上安装它的信息。对于本教程,我们假设您已经安装了 Apache 并在服务器上提供网页。
安装GoAccess
首先,我们需要安装 GoAccess。在 CentOS 和 Red Hat 系统上,你需要先启用 Fedora EPEL 存储库,然后安装非常简单:
sudo yum install goaccess
不幸的是,Debian 或 Ubuntu 系统上的存储库版本相当过时。然而,好消息是 GoAccess 团队维护着他们自己的存储库。以下是使用 GoAccess 存储库安装的方法:
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O -- http://deb.goaccess.io/gnugpg.key | sudo apt-key add --
sudo apt-get update
sudo apt-get install goaccess
日志文件分析
安装 GoAccess 后,您可以开始使用它来分析日志文件。默认行为是 GoAccess 执行分析并在给定文件的命令行中显示结果:
sudo goaccess /var/log/apache2/access.log
在这种情况下,GoAccess 将启动并请求日志文件的文件格式。对于 Apache 访问日志,您可以选择"NCSA 组合日志格式"选项。然后,它将解析文件并显示输出供您阅读。您可以使用箭头键上下滚动查看信息。问号 (?) 打开帮助屏幕,其中包含有关更多控件的信息。按 q 退出程序。
Web 浏览器中的日志输出
如果您想在 Web 浏览器中查看日志输出,我们需要对配置文件进行一些调整。默认情况下,这是 /etc/goaccess.conf 文件。sudo
nano /etc/goaccess.conf
这是一个注释良好的文件,其中包含大量对您正在查看的内容的解释。因此,首先,在"时间格式选项"部分,我们需要取消注释 Apache/NGINX 的时间格式行:
time-format %H:%M:%S
然后在"日期格式选项"部分,您需要取消注释 Apache/NGINX 的日期格式行:
date-format %d/%b/%Y
接下来在"日志格式选项"部分,取消注释 NCSA 组合日志格式的行:
log-format %h %^[%d:%t %^] "%r" %s Sb "%R" "%u"
现在保存并退出文件。请注意,如果您打算查看不同的日志文件,则有很多各种日志文件格式的选项。
生成网页
现在我们可以用以下命令生成日志信息的网页:
sudo goaccess /var/log/apache2/access.log -o /var/www/html/goaccess.html
请注意,您需要将输出文件(用 -o 标志指定)设置为可从 Web 服务器访问的某个位置,以便在浏览器中查看它。 在本例中,我使用了 Apache 默认网站目录的根目录。 现在,我可以在我的网站上打开该文件来访问报告。 例如:http://www.example.com/goaccess.html在本例中,我们创建了一份一次性报告,该报告对当时的日志文件进行快照。 要制作持续更新的报告,您需要在命令中添加"--real-time-html"标志:sudo goaccess /var/log/apache2/access.log -o /var/www/html/goaccess.html --real-time-html您会注意到,这次 GoAccess 应用程序保持运行并打印消息"WebSocket 服务器已准备好接受新的客户端连接"。现在,网页导航与以前大致相同,但随着服务器上出现新连接,网页会保持更新。一个不错的功能是,您不仅限于一次只能分析一个日志文件,因此,如果您在服务器上保留多个同时访问日志,则可以将它们全部列出,然后 GoAccess 可以一起分析它们:sudo goaccess /var/log/apache2/access.log /var/log/apache2/another-access.log /var/log/apache2/yet-another-access.log -o /var/www/html/goaccess.html再次,访问网页将为您提供 GoAccess 对这些日志文件的分析输出。这只是对日志文件和 GoAccess 功能的简单介绍,非常值得查看帮助信息和网站上的详细信息,看看您还可以做什么。