Linux系统之GoAccess实时Web日志分析工具的基本使用

简介: 【5月更文挑战第22天】Linux系统之GoAccess实时Web日志分析工具的基本使用

一、GoAccess介绍

1.1 GoAccess简介

GoAccess 是一个开源实时 Web 日志分析器和交互式查看器,可在Linux系统上的 终端中或通过浏览器运行。它为需要动态可视化服务器报告的系统管理员提供快速且有价值的 HTTP 统计信息。

1.2 GoAccess功能

GoAccess解析指定的Web日志文件并将数据输出到X终端。特点包括:

  • 完全实时:所有面板和指标都定时在终端输出上每 200 毫秒更新一次,在 HTML 输出上每秒更新一次。

  • 所需的最少配置:您只需针对访问日志文件运行它,选择日志格式,然后让 GoAccess 解析访问日志并向您显示统计信息。

  • 跟踪应用程序响应时间:跟踪处理请求所花费的时间。如果您想跟踪减慢网站速度的页面,则非常有用。

  • 几乎所有 Web 日志格式:GoAccess 允许任何自定义日志格式字符串。预定义选项包括 Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront 等。

  • 增量日志处理:需要数据持久化?GoAccess 能够通过磁盘持久性选项增量处理日志。

  • GoAccess只有一个依赖项:是用 C 编写的。要运行它,您只需要 ncurses 作为依赖项。就是这样。它甚至拥有自己的 Web Socket 服务器 — http://gwsocket.io/。

  • 访问者:按小时或日期确定点击量、访问者、带宽和最慢运行请求的指标。

  • 每个虚拟主机的指标:拥有多个虚拟主机(服务器块)?它有一个面板,显示哪个虚拟主机消耗了大部分 Web 服务器资源。

  • ASN(自治系统编号映射):非常适合检测恶意流量模式并相应地阻止它们。

  • 配色方案可定制:定制 GoAccess 以适合您自己的色彩品味/方案。通过终端,或者简单地在 HTML 输出上应用样式表。

  • 支持大型数据集:GoAccess 凭借其优化的内存哈希表,能够解析大型日志。它具有非常好的内存使用率和相当好的性能。该存储还支持磁盘持久性。

  • Docker 支持:能够从上游构建 GoAccess 的 Docker 映像。您仍然可以通过使用卷映射和编辑来完全配置它goaccess.conf。

1.3 Web日志格式

GoAccess 允许任何自定义日志格式字符串。预定义的选项包括 但 不限于:

  • Amazon CloudFront(下载分配)。
  • Amazon Simple Storage Service (S3)
  • AWS 弹性负载均衡
  • 组合日志格式 (XLF/ELF) Apache |Nginx的
  • 通用日志格式 (CLF) Apache
  • 谷歌云存储。
  • Apache 虚拟主机
  • Squid原生格式。
  • W3C 格式 (IIS)。
  • Caddy 的 JSON 结构化格式。
  • Traefik 的 CLF风格

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname 本地P地址 操作系统版本 内核版本 node版本
ubuntu-001192.168.3.251 Ubuntu 22.04.1 LTS 5.15.0-89-generic v20.10.0 ——

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Ubuntu环境下部署GoAccess工具及其基本使用。

三、检查本地环境

3.1 检查本地操作系统版本

检查本地操作系统版本,当前版本为Ubuntu 22.04.1 LTS。

root@jeven:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

3.2 检查系统内核版本

检查系统内核版本,当前内核版本为5.15.0-89-generic。

root@jeven:~# uname -r
5.15.0-89-generic

3.3 检查系统镜像源

对于Ubuntu 22.04.1 LTS版本,将镜像源配置文件/etc/apt/sources.list修改内容如下。

root@ubuntu-001:~# cat /etc/apt/sources.list
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

3.4 更新软件列表

执行以下命令,更新软件列包表。

root@ubuntu-001:~# apt update
Hit:1 https://mirrors.aliyun.com/ubuntu jammy InRelease
Hit:2 https://mirrors.aliyun.com/ubuntu jammy-security InRelease
Hit:3 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease
Hit:4 https://mirrors.aliyun.com/ubuntu jammy-backports InRelease
Hit:5 https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
116 packages can be upgraded. Run 'apt list --upgradable' to see them.

3.5 查询软件

查询软件源中是否有 goaccess软件包,我们可以已经成功查找到goaccess软件包。

root@ubuntu-001:~# apt search goaccess
Sorting... Done
Full Text Search... Done
goaccess/jammy 1:1.5.5-1 amd64
  log analyzer and interactive viewer for the Apache Webserver

四、安装GoAccess

4.1 编译安装

可以在Linux的个版本上,执行以下编译安装命令。

$ wget https://tar.goaccess.io/goaccess-1.9.2.tar.gz
$ tar -xzvf goaccess-1.9.2.tar.gz
$ cd goaccess-1.9.2/
$ ./configure --enable-utf8 --enable-geoip=mmdb
$ make
# make install

4.2 从发行版本安装

本次是在Ubuntu上实践,我们可以使用以下命令安装。

 sudo apt install -y goaccess

在这里插入图片描述

其他发行版上安装,可以参考以下安装命令。

  • 在 RHEL / CentOS上安装
sudo yum install -y goaccess
  • 在Fedora上安装
 sudo dnf install goaccess -y
  • 在Arch Linux上安装
sudo pacman -S goaccess

4.3 查看安装版本

使用--help,可以查看goaccess详细帮助信息。

goaccess --help

在这里插入图片描述

检查安装goaccess版本,当前安装版本为1.5.5

root@ubuntu-001:~# goaccess --version
GoAccess - 1.5.5.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2022 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=mmdb
  --with-openssl

五、监控日志信息

5.1 检查本地web服务器

本地服务器我们安装Apache,并启动apache2服务。

apt install apache2 -y

启动apache2服务,并设置开机自启。

root@ubuntu-001:~# systemctl enable --now apache2
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2

查看apache2服务状态

root@ubuntu-001:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-04-29 11:42:23 UTC; 1min 53s ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 68532 (apache2)
      Tasks: 55 (limit: 9347)
     Memory: 5.1M
        CPU: 26ms
     CGroup: /system.slice/apache2.service
             ├─68532 /usr/sbin/apache2 -k start
             ├─68533 /usr/sbin/apache2 -k start
             └─68534 /usr/sbin/apache2 -k start

Apr 29 11:42:23 ubuntu-001 systemd[1]: Starting The Apache HTTP Server...
Apr 29 11:42:23 ubuntu-001 apachectl[68531]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, us>
Apr 29 11:42:23 ubuntu-001 systemd[1]: Started The Apache HTTP Server.
lines 1-16/16 (END)

5.2 监视Apache日志

执行以下命令,监控Apache日志,其中-f 选项允许在命令行上实时查看日志,

goaccess -f /var/log/apache2/access.log --log-format=COMBINED

在这里插入图片描述

5.3 测试访问web服务

我们在本地浏览器上访问:http://192.168.3.251/,可以看到成功访问到apache的初始页面。

在这里插入图片描述

我们再次回到本机上,看到终端上已经成功显示日志信息。Web 服务器的日志统计将打印在终端上。

在这里插入图片描述

六、通过web仪表板查看日志

6.1 本机操作

我们还可以通过重定向来将 web 服务器日志以优雅而直观的方式呈现在一个仪表板上。我们可以将输出文件指定为linux_web.html。

goaccess -f /var/log/apache2/access.log --log-format=COMBINED > linux_web.html

在终端查看生成的linux_web.html文件

root@ubuntu-001:~# ls -l linux_web.html
-rw-r--r-- 1 root root 344922 Apr 29 14:07 linux_web.html

6.2 浏览器打开日志文件

将生成的linux_web.html文件导出到本地,使用本地浏览器打开。

在这里插入图片描述

6.3 配置虚拟主机访问

新增监听8050端口

vim /etc/apache2/ports.conf
Listen 90

在这里插入图片描述

编辑Apache2的默认配置文件。运行以下命令打开000-default.conf文件进行编辑。

vim /etc/apache2/sites-available/myweb.conf

在 标签中添加以下代码块来配置端口 8050 和网站目录

Alias / /var/www/html/web/linux_web.html
<VirtualHost *:8050>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/web

    <Directory /var/www/html/web>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

生成日志分析网页文件

 mkdir -p /var/www/html/web
goaccess -f /var/log/apache2/access.log --log-format=COMBINED > /var/www/html/web/linux_web.html

重启apache2服务

a2ensite myweb.conf
systemctl restart apache2

浏览器输入:http://192.168.3.251:8050/,将IP替换为自己服务器IP地址。

在这里插入图片描述

七、设置中文

7.1 系统安装中文包

系统安装中文包

apt install language-pack-zh-hans -y

在这里插入图片描述

7.2 设置简体中文

执行以下命令,设置系统简体中文。

localectl set-locale LANG=zh_CN.utf8

可以看到Ubuntu系统的默认语言和字符集设置为简体中文(zh_CN)

root@ubuntu-001:~# localectl status
   System Locale: LANG=zh_CN.utf8
       VC Keymap: n/a
      X11 Layout: us
       X11 Model: pc105

7.3 测试访问

重新生成日志分析文件

LANG="zh_CN.UTF-8"  goaccess -f /var/log/apache2/access.log --log-format=COMBINED > /var/www/html/web/linux_web.html
systemctl restart apache2
  • 终端命令行显示
LANG="zh_CN.UTF-8" goaccess -f /var/log/apache2/access.log --log-format=COMBINED

在这里插入图片描述

  • 重新浏览器访问,可以看到已经成功切换到中文。

在这里插入图片描述

八、总结

GoAccess 是一款功能强大且易于使用的 Web 日志分析工具。它能够帮助系统管理员快速了解服务器的访问情况,提供有价值的统计信息和报告。无论是在终端中还是通过浏览器运行,GoAccess 都能够带来良好的使用体验,并帮助用户更好地监控和管理 Web 服务器。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
12月前
|
存储 监控 安全
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
742 1
Veeam Backup & Replication 13 之初见 - 基于 Linux 和 Web 控制台
|
9月前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
555 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
12月前
|
XML 安全 前端开发
一行代码搞定禁用 web 开发者工具
在如今的互联网时代,网页源码的保护显得尤为重要,特别是前端代码,几乎就是明文展示,很容易造成源码泄露,黑客和恶意用户往往会利用浏览器的开发者工具来窃取网站的敏感信息。为了有效防止用户打开浏览器的 Web 开发者工具面板,今天推荐一个不错的 npm 库,可以帮助开发者更好地保护自己的网站源码,本文将介绍该库的功能和使用方法。 功能介绍 npm 库名称:disable-devtool,github 路径:/theajack/disable-devtool。从 f12 按钮,右键单击和浏览器菜单都可以禁用 Web 开发工具。 🚀 一行代码搞定禁用 web 开发者工具 该库有以下特性: • 支持可配
1198 22
|
10月前
|
监控 Linux 应用服务中间件
linux查看日志文件tail -f用法
在 Linux 中,查看和监控日志文件是系统管理员和开发者常用的操作之一。tail 命令就是用来查看文件内容的,它默认显示文件的最后部分。tail -f 是 tail 命令的一个非常有用的选项,用于实时查看和跟踪日志文件的更新,尤其是在监控运行中的服务时非常有用。
1177 0
|
10月前
|
JSON JavaScript 前端开发
实现ROS系统的Websocket传输,向Web应用推送sensor_msgs::Image数据
WebSocket协议具有低延迟和高实时性的特性,适用于实时数据推送。但是,它也依赖于网络条件,因此,在通过WebSocket发送数据时,保证网络稳定性也是重要的。以上步骤为建立基本的WebSocket传输提供了框架,并可以根据实际需求进行调整和优化。
648 0
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
1216 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
855 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
存储 运维 监控
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
409 7
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
523 0

热门文章

最新文章