宝塔面板使用 GoAccess 进行 Web 日志分析教程(中文界面)

宝塔面板是一款广受欢迎的服务器运维面板,以其简单易用著称。然而,其内置的网站统计功能属于付费项目。而 GoAccess 是一款使用 C 语言编写的免费开源 Web 日志分析工具,能够提供包括搜索引擎爬虫、独立访客、访问文件、来源网站、404 错误页面、访客操作系统、浏览器类型等在内的丰富统计信息。本文将介绍如何在宝塔面板中启用 GoAccess 并配置中文 Web 日志分析功能。

配置系统支持中文环境(以 Debian 为例)

首先更新系统并安装 locales 包,用于生成和配置系统区域设置:

apt update
apt install -y locales
locale-gen zh_CN.UTF-8
dpkg-reconfigure locales

在 dpkg-reconfigure locales 界面中:

dpkg-reconfigure locales 界面示例

使用空格键勾选 zh_CN.UTF-8 UTF-8

确认后,将系统默认语言设置为 zh_CN.UTF-8

下载并安装 GoAccess

本文以 Debian 系统安装 GoAccess v1.9.4 为例(请前往官方网站查看最新版本号,如需安装其他版本,只需替换下方命令中的版本号):

apt install build-essential pkg-config libncursesw5-dev libssl-dev gettext libmaxminddb-dev -y
cd /www/server
wget https://tar.goaccess.io/goaccess-1.9.4.tar.gz
tar -xzvf goaccess-1.9.4.tar.gz
cd goaccess-1.9.4
./configure –enable-utf8 –enable-geoip=mmdb –with-openssl –enable-gettext
make
make install

安装完成后,运行 goaccess –version 命令,若显示如下类似信息,则说明安装成功:

GoAccess – 1.9.4.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2024 by Gerardo Orellana

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

下载免费 IP 地理位置数据库:GeoLite2-Country.mmdb

创建存储 GeoIP 数据的目录并下载数据库:

mkdir -p /usr/share/GeoIP/
cd /usr/share/GeoIP/
wget -O GeoLite2-City.mmdb https://git.io/GeoLite2-City.mmdb

若国内主机下载失败,可从此处下载 2025-10-19 版本(提取码:zzb9),然后上传至 /usr/share/GeoIP 目录,使用以下命令解压:

sudo unzip GeoLite2-City.zip -d /usr/share/GeoIP

在宝塔面板中添加日志切割计划任务

宝塔面板中,网站的 Web 日志默认存放在 /www/wwwlogs 目录下,文件名格式为“网站名.log”。为避免单个日志文件过大,建议设置每日自动切割日志:

进入宝塔面板 → 计划任务 → 添加计划任务,设置日志切割任务。

宝塔面板切割日志设置

切割后的日志默认保存在 /www/wwwlogs/history_backups/站点名称 目录中。为避免 GoAccess 分析日志时占用过多系统资源,建议普通站点保留最新的 180 份日志,访问量较大的站点可酌情减少保留数量。

将 Web 日志输出为 HTML 报告

在 /www/wwwroot/ 目录下创建 output-goaccess-report.sh 文件,内容如下:

#!/bin/bash
# 自动生成 GoAccess Nginx 日志分析报告(HTML)
# 作者:站长帮
# 已测试环境:Debian + Nginx

# 设置中文环境
export LANGUAGE=”zh_CN:zh”

# ——————————-
# 配置区
# ——————————-
# 输出的日志分析网页标题
HTML_TITLE=”站点访问日志分析 – zhanzhangb.cn”

# 当前日志路径
CURRENT_LOG=”/www/wwwlogs/zhanzhangb.cn.log”

# 历史日志目录(包含 .gz)
HISTORY_DIR=”/www/wwwlogs/history_backups/zhanzhangb.cn”

# 输出 HTML 报告路径
OUTPUT_HTML=”/www/wwwroot/zhanzhangb.cn/goaccess/index.html”

# 临时合并日志文件
TMP_LOG=”/tmp/goaccess_merged.log”

# GoAccess 日志格式 (常见 Nginx 默认日志格式)
LOG_FORMAT=’%h %^[%d:%t %^] “%r” %s %b “%R” “%u”‘
DATE_FORMAT=’%d/%b/%Y’
TIME_FORMAT=’%T’

# ——————————-
# 执行逻辑
# ——————————-

echo “[$(date ‘+%F %T’)] 开始生成 GoAccess 报告…”

# 清理临时文件
rm -f “$TMP_LOG”

# 创建输出目录(如果不存在)
OUTPUT_DIR=$(dirname “$OUTPUT_HTML”)
if [ ! -d “$OUTPUT_DIR” ]; then
echo “[$(date ‘+%F %T’)] 创建输出目录:$OUTPUT_DIR”
mkdir -p “$OUTPUT_DIR”

# 检查目录是否创建成功
if [ $? -ne 0 ]; then
echo “[$(date ‘+%F %T’)] 错误:无法创建输出目录 $OUTPUT_DIR”
exit 1
fi
fi

# 合并当前日志
if [ -f “$CURRENT_LOG” ]; then
cat “$CURRENT_LOG” >> “$TMP_LOG”
fi

# 解压并合并历史日志(最近几天)
find “$HISTORY_DIR” -type f -name “*.log.gz” -exec zcat {} ; >> “$TMP_LOG”

# 生成 HTML 报告
goaccess “$TMP_LOG”
–log-format=”$LOG_FORMAT”
–date-format=”$DATE_FORMAT”
–time-format=”$TIME_FORMAT”
–geoip-database /usr/share/GeoIP/GeoLite2-City.mmdb
–html-report-title=”$HTML_TITLE”
–agent-list
-o “$OUTPUT_HTML”
–no-progress

# 检查输出文件是否生成成功
if [ -f “$OUTPUT_HTML” ]; then
echo “[$(date ‘+%F %T’)] 报告已生成:$OUTPUT_HTML”
else
echo “[$(date ‘+%F %T’)] 报告生成失败,请检查日志格式或 GoAccess 提示。”
fi

# 清理临时文件
rm -f “$TMP_LOG”

请根据实际情况修改“配置区”中的以下参数:

HTML_TITLE:生成的 HTML 报告标题

CURRENT_LOG:当前日志文件路径,请确认文件是否存在

HISTORY_DIR:历史日志目录,请确认路径是否与宝塔面板中的站点名称对应

OUTPUT_HTML:输出 HTML 报告的完整路径,例如 /www/wwwroot/zhanzhangb.cn/goaccess/index.html,之后可通过绑定域名访问报告,如:zhanzhangb.cn/goaccess/index.html

执行以下命令生成 HTML 报告:

bash /www/wwwroot/output-goaccess-report.sh

可通过宝塔面板的计划任务设定每天自动运行,这样每天都能查看到最新的日志分析报告。

计划任务

查看 GoAccess 日志分析器及安全设置

安全设置

本教程的示例中将 HTML 文件保存在网站的 goaccess 子目录,意味着所有人均可通过网站的域名查看日志分析,所以应该设置访问权限,以免泄露敏感内容。

宝塔面板 > 网站 > 设置 > 访问限制 > 添加加密访问:

添加加密访问

加密访问的路径注意不要输错了,名称、用户名和密码可以自由设置。

查看 HTML 界面的 GoAccess 日志分析器

根据本教程示例生成的日志分析页面 URL :

Web 日志分析报告 URL:https://www.网站域名.cn/goaccess/index-old.html

GoAccess HTML 页面查看示例

GoAccess 分析搜索引擎爬虫(Crawlers)示例

访客地理位置分析示例

GoAccess 输出 HTML 分析数据的更多参数请查阅:帮助文档。

© 版权声明
THE END
喜欢就支持一下点个赞吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容