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

CSDN 2024-08-06 10:33:01 阅读 57

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

一、GoAccess介绍1.1 GoAccess简介1.2 GoAccess功能1.3 Web日志格式

二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍

三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统镜像源3.4 更新软件列表3.5 查询软件

四、安装GoAccess4.1 编译安装4.2 从发行版本安装4.3 查看安装版本

五、监控日志信息5.1 检查本地web服务器5.2 监视Apache日志5.3 测试访问web服务

六、通过web仪表板查看日志6.1 本机操作6.2 浏览器打开日志文件6.3 配置虚拟主机访问

七、设置中文7.1 系统安装中文包7.2 设置简体中文7.3 测试访问

八、总结

一、GoAccess介绍

1.1 GoAccess简介

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

1.2 GoAccess功能

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

<code>完全实时:所有面板和指标都定时在终端输出上每 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"code>

NAME="Ubuntu"code>

VERSION_ID="22.04"code>

VERSION="22.04.1 LTS (Jammy Jellyfish)"code>

VERSION_CODENAME=jammy

ID=ubuntu

ID_LIKE=debian

HOME_URL="https://www.ubuntu.com/"code>

SUPPORT_URL="https://help.ubuntu.com/"code>

BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"code>

PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"code>

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上安装

<code>sudo yum install -y goaccess

在Fedora上安装

sudo dnf install goaccess -y

在Arch Linux上安装

sudo pacman -S goaccess

4.3 查看安装版本

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

goaccess --help

在这里插入图片描述

检查安装goaccess版本,当前安装版本为<code>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服务

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

在这里插入图片描述

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

在这里插入图片描述

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

6.1 本机操作

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

<code>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端口

<code>vim /etc/apache2/ports.conf

Listen 90

在这里插入图片描述

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

<code>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 系统安装中文包

系统安装中文包

<code>apt install language-pack-zh-hans -y

在这里插入图片描述

7.2 设置简体中文

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

<code>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.htmlcode>

systemctl restart apache2

终端命令行显示

LANG="zh_CN.UTF-8" goaccess -f /var/log/apache2/access.log --log-format=COMBINEDcode>

在这里插入图片描述

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

在这里插入图片描述

八、总结

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。