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 服务器。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
相关文章
|
6月前
|
Ubuntu Linux Anolis
Linux系统禁用swap
本文介绍了在新版本Linux系统(如Ubuntu 20.04+、CentOS Stream、openEuler等)中禁用swap的两种方法。传统通过注释/etc/fstab中swap行的方式已失效,现需使用systemd管理swap.target服务或在/etc/fstab中添加noauto参数实现禁用。方法1通过屏蔽swap.target适用于新版系统,方法2通过修改fstab挂载选项更通用,兼容所有系统。
553 3
Linux系统禁用swap
|
6月前
|
Linux
Linux系统修改网卡名为eth0、eth1
在Linux系统中,可通过修改GRUB配置和创建Udev规则或使用systemd链接文件,将网卡名改为`eth0`、`eth1`等传统命名方式,适用于多种发行版并支持多网卡配置。
1070 3
|
6月前
|
Prometheus 监控 Cloud Native
基于docker搭建监控系统&日志收集
Prometheus 是一款由 SoundCloud 开发的开源监控报警系统及时序数据库(TSDB),支持多维数据模型和灵活查询语言,适用于大规模集群监控。它通过 HTTP 拉取数据,支持服务发现、多种图表展示(如 Grafana),并可结合 Loki 实现日志聚合。本文介绍其架构、部署及与 Docker 集成的监控方案。
594 122
基于docker搭建监控系统&日志收集
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
662 3
Linux系统初始化脚本
|
6月前
|
Ubuntu
在Ubuntu系统上设置syslog日志轮替与大小限制
请注意,在修改任何系统级别配置之前,请务必备份相应得原始档案并理解每项变更可能带来得影响。
759 2
|
6月前
|
安全 Linux Shell
Linux系统提权方式全面总结:从基础到高级攻防技术
本文全面总结Linux系统提权技术,涵盖权限体系、配置错误、漏洞利用、密码攻击等方法,帮助安全研究人员掌握攻防技术,提升系统防护能力。
710 1
|
6月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1209 1
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
483 9
|
10月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1013 54