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

作者:WenM

更新于:2025年10月20日 17:49

宝塔面板使用 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 界面中:

  • 使用空格键勾选 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 分析数据的更多参数请查阅:帮助文档

© 版权声明

本文由站长帮(zhanzhangb.cn)发布,保留所有权利。

未经明确书面许可,不得转载、摘编本站内容。对于侵权行为,我们将保留追究法律责任的权利。