AWStats 介绍与选型指南

AWStats 是 Perl 编写的老牌日志分析工具,本篇覆盖软件定位、维护现状(8.0 为作者最后一版)、核心架构、功能特性、最小可用流程与适用限制,并给出与 GoAccess、Webalizer、Matomo 的量化选型对比。

AWStatsAWStats日志Perl监控2026/10/30

AWStats 介绍与选型指南

目标:本文是 AWStats 的认知与选型篇,覆盖软件定位、发展历史与维护现状、核心架构、功能特性、最小可用示例、适用场景与限制,并给出与 GoAccess、Webalizer、Matomo 四条日志分析路径的量化对比。本文所有版本号、星数、特性清单均来自官方站点与官方仓库的联网溯源(查询日期 2026-10-30,来源在正文与参考链接中逐项标注),命令与回显的实测验证见本专栏 B1 安装篇。

一、环境信息

本文为认知篇,全部信息来自以下公开来源的联网取证(查询日期均为 2026-10-30):

取证项来源说明
最新稳定版本、发布日期、历史版本序列AWStats 官方站点 awstats.sourceforge.io 首页 Download 表官方唯一权威发布渠道
GitHub 仓库 Release 时间线github.com/eldy/AWStats 的 releases.atom 订阅源官方源码仓库
GitHub 星数、最新 tag、最后提交时间img.shields.io 徽章接口(stars / tag / last-commit 三项)规避 GitHub API 限流的官方徽章数据
发行版打包版本Debian Package Tracker(tracker.debian.org)、Fedora Packages(packages.fedoraproject.org)各发行版仓库的 awstats 包版本
竞品对比素材GoAccess、Matomo 官方文档与官方 FAQ用于第七章选型对比

AWStats 本身没有对外提供网络服务(它只是被调用的分析程序),因此不存在「服务端口/管理面」一类的环境信息;它唯一的环境要求是被分析的 Web/邮件/FTP 服务器能把访问日志写成它可读的文件,且服务器上装有 Perl 解释器。

二、软件概述

2.1 软件定位

AWStats(Advanced Web Statistics)是 Laurent Destailleur 自 2000 年起开发的 Perl 日志分析工具。官方站点对它的定义是(来源:awstats.sourceforge.io 首页,2026-10-30 查询):

Free powerful and featureful tool that generates advanced web, streaming, ftp or mail server statistics, graphically.

翻译成技术语言:它读取服务器已经写好的日志文件(Web 访问日志、流媒体日志、FTP 日志、邮件日志),离线解析出访问统计,再以图形化 HTML 页面呈现。它有两种运行形态——命令行批处理和 CGI(Common Gateway Interface,公共网关接口)脚本,因此可以部署在任何允许 Perl、CGI 与日志读取的宿主机上,不需要数据库、不需要守护进程、不需要任何 uncommon 的 Perl 库(官方 Requirements 原话:No need of rare perl libraries)。

它解决的问题非常具体:服务器管理员想回答「谁在什么时间用什么浏览器访问了我的哪些页面、从哪里来、有没有爬虫和攻击」,而这些信息在访问日志里已经全都有了——AWStats 只是把它们变成可读的报表。

💡 技术拓展:Web 流量统计有两条根本不同的数据获取路径——「日志解析」与「页面埋点」:

路径原理代表工具特点
日志解析(log analyzer)直接解析 Web 服务器已写好的 access logAWStats、GoAccess、Webalizer零侵入、不拖慢页面、可回溯历史日志;但拿不到浏览器端信息(如真实屏幕分辨率)
页面埋点(page tagging)页面嵌入 JS,向统计服务上报Matomo、Google Analytics能采集浏览器端行为(分辨率、点击流);但需改页面、被广告拦截器过滤、历史数据从埋点生效才开始

AWStats 属于纯日志解析路径;Matomo 以埋点为主、通过 import_logs.py 兼容日志导入(来源:matomo.org FAQ「Why is Matomo recommended as an alternative to AWStats」,2026-10-30 查询)。本文主线采用的正是日志解析路径——对已有 Nginx/Apache 访问日志的服务器,这是不改一行业务代码就能出统计的方案。

2.2 发展历史与维护现状(选型前必读)

AWStats 版本时间线(来源:awstats.sourceforge.io 首页 Download 表与 releases.atom,2026-10-30 查询):

版本发布日期备注
1.02000-05-02首个版本
6.92008-12-28起要求 Perl ≥ 5.007003
7.02010-12-01
7.72018-01-07
7.82020-04-02Debian 11/12 仓库仍在分发 7.8 系列
7.92023-01-17
8.02025-08-26当前最新稳定版,作者本人发布的最后一个版本

维护现状是本文最重要的选型警示,三条官方口径(2026-10-30 查询):

  1. 官网下载页作者原话:「VERSION 8 WILL BE THE LAST VERSION RELEASED BY MYSELF! (Next maintenance releases may be provided by the community only)」——8.0 是原作者 Laurent Destailleur 亲自发布的最后一版,后续仅可能有社区维护版本。
  2. 官网「AWStats project status」段落:AWStats is no longer receiving new versions from the original author,官方推荐需要持续维护的分析能力时迁移到 Matomo(官网提供 awstats_matomo.html 迁移专页)。
  3. GitHub 徽章实查(img.shields.io,2026-10-30):仓库 eldy/AWStats 星数 439,最新 tag AWSTATS_8_0,最后一次提交在 2025 年 11 月。

结论:AWStats 处于「功能稳定、维护收尾」状态。这不影响它继续正确地分析日志(日志格式 combined/CLF 数十年未变,解析逻辑没有过时问题),但新出现的浏览器、爬虫与搜索引擎特征(靠 pm 库识别)更新会放缓,新特性不会有。把它当「稳定的老兵」用没问题,把它当「会进化的平台」用则需谨慎。

2.3 许可与发行渠道

  • 许可证:GNU General Public License(GPL),官网明确 free even for web hosting providers。
  • 官方发行渠道:SourceForge 项目页提供 awstats-8.0.tar.gz / awstats-8.0.zip / awstats-8.0-1.noarch.rpm 三种包(来源:官网 Download 表,2026-10-30);源码仓库托管于 github.com/eldy/awstats(官网 Project and Development 段落确认,bug tracker 也在 GitHub Issues)。
  • 发行版打包:Debian/Ubuntu 仓库名 awstats(Debian Package Tracker 显示 Debian 11 为 7.8-2deb11u2 系列);Fedora 44 为 8.0-4.fc44,EPEL 9 为 8.0-1.el9(来源:packages.fedoraproject.org,2026-10-30 查询)。Ubuntu 22.04 仓库中的实际版本在 B1 安装篇用 apt-cache policy 实证。
  • 生态:另有官方 Webmin 模块(2.0,2025-02-15)与大量第三方 contrib 工具,官网 awstats_contrib.html 有索引。

三、核心架构

AWStats 的架构是「一个 Perl 主程序 + 一组数据文件 + 一组可选插件」,没有常驻服务。以下结构来自官方发行包的目录组织与官方文档(docs/awstats_config.html 等,2026-10-30 查询),目录以 Linux 发行版打包为 awstats 包后的真实布局为准:

/usr/lib/cgi-bin/awstats.pl        # 主程序:唯一的可执行入口(CLI 与 CGI 同一文件)
/usr/lib/cgi-bin/lib/              # 主程序依赖的 .pm 模块(搜索特征、浏览器特征等)
/etc/awstats/awstats.<site>.conf   # 每个被分析站点一份配置文件(<site> 为站点标识名)
/usr/share/awstats/                # 静态资源:icon/ 图标库、lang/ 语言包、css 样式
/var/lib/awstats/                  # 分析数据库:awstatsMMYYYY<site>.txt 历史月度数据文件
/usr/share/awstats/tools/          # 配套工具:awstats_buildstaticpages.pl、logresolvemerge.pl、awstats_updateall.pl 等

3.1 数据流:日志文件 → 分析数据库 → HTML 报表

AWStats 的全部工作是一条三段数据流:

  1. 解析段:awstats.pl 按配置中 LogFile 指定的路径读取原始日志,逐行按 LogFormat 拆字段,过滤(SkipHosts/SkipFiles/OnlyFiles 等规则)后累计到统计哈希表;
  2. 存储段:统计结果按月落盘为 /var/lib/awstats/awstatsMMYYYY<site>.txt 文本文件(官方称 history file / 分析数据库),采用「增量更新」模型——每次 -update 只追加自上次运行以来的新日志,官方首页原话:It uses a partial information file to be able to process large log files, often and quickly;
  3. 呈现段:读取月度数据文件,输出动态 CGI 页面或静态 HTML 报表(awstats_buildstaticpages.pl 批量生成整站页面)。

这条流决定了 AWStats 的两个关键行为特征:其一,报表数据的时间粒度以「月」为单位(同一个月的数据文件会被反复合并更新,跨月自动归档);其二,日志重跑要靠 --showdroppedlines/删除数据文件等手段控制,误将同一日志重复导入会重复计数。

3.2 两种运行形态

  • CLI 批处理:perl /usr/lib/cgi-bin/awstats.pl -config=<site> -update 由 cron/systemd timer 周期调用,适合服务器无人值守出报表;
  • CGI 动态:Web 服务器把 /cgi-bin/awstats.pl 请求交给 Perl 解释器执行,浏览器访问即得最新统计页,并支持部分图表的动态过滤;也支持从浏览器点击「Update now」即时更新统计(配置项 AllowToUpdateStatsFromBrowser)。
  • 静态批量:tools/awstats_buildstaticpages.pl 循环调用主程序按报表类型逐页生成静态 HTML,适合把报表发布到无 CGI 权限的目录或做离线快照。

三种形态共用同一份配置与数据文件,可任意组合(典型组合:cron 做 -update + 静态生成,CGI 通道关闭以缩小暴露面)。

3.3 插件体系

功能扩展通过配置文件里的 LoadPlugin 指令挂载 .pm 插件(来源:官网 Features 与 docs/awstats_contrib.html,2026-10-30 查询):geoip/geoip_city(IP 地理定位,依赖 MaxMind GeoIP 数据库)、urlalias、hashfiles、decodeutfkeys(搜索引擎关键词解码)、hostinfo 等。插件是可选项,基础报表不需要任何插件。

3.4 日志预处理链

真实生产环境的日志往往不是单文件:Nginx/Apache 做轮转切割(access.log、access.log.1、.gz 归档)、负载均衡多台机器各有一份日志。AWStats 官方 tools/ 目录为此提供 logresolvemerge.pl(多日志合并 + 可选 DNS 反解,支持自动解 .gz)与 maillogconvert.pl(邮件日志转换)等预处理脚本,与主程序构成完整的命令链——这是《AWStats 常用 CLI 命令详解(awstats.pl 与日志预处理链)》的主体内容。

四、功能特性

4.1 报表能力全景

以下清单来自官网 Features 段落的官方描述(2026-10-30 查询),括号内为官网给出的特征库规模:

  • 访问次数(visits)与独立访客(unique visitors)、访问时长与最近访问;
  • 认证用户统计(HTTP Basic 认证日志中的用户名);
  • 星期分布与高峰时段(每小时/每天 hits、页面数、流量);
  • 访客国家/域名分布(269 个国家/域名识别,可配 GeoIP 插件精确定位);
  • 主机清单、未解析 IP 列表;
  • 最热页面、入口页、出口页;
  • 文件类型分布、Web 压缩统计(mod_deflate/mod_gzip);
  • 操作系统分布(35 种 OS 识别)、浏览器分布(97 种浏览器,配 browsers_phone.pm 库可达 450+);
  • 爬虫/机器人访问(319 种 robots 识别);
  • 蠕虫攻击检测(5 个蠕虫家族特征);
  • 来源搜索引擎与关键词(115 个搜索引擎特征);
  • HTTP 错误(404 列表 + 最近来源页);
  • 基于自定义 URL/参数/referer 的扩展报表、收藏夹(加书签)次数估算;
  • 负载均衡集群报告(cluster report)。

4.2 支持的日志格式与服务器类型

官网 Features 明确支持的日志格式:Apache NCSA combined(XLF/ELF)与 common(CLF)、IIS W3C 扩展格式、WebStar 原生格式,以及其他 web/proxy/wap/流媒体服务器日志;同一程序还支持 FTP 日志与主流邮件服务器(Postfix、Sendmail、qmail、Exim 等)日志的统计。配置项 LogFormat=1(Apache/NCSA combined)到 LogFormat 自定义串覆盖几乎所有文本日志。

4.3 输出与多语言

  • 动态 CGI 报表(部分图表支持动态过滤)与静态 HTML/XHTML 报表(单页或多页框架式)、实验性 PDF 导出;
  • 报表外观可用 CSS 与站点风格统一,页面含帮助与提示(tooltip);
  • 多语言界面(官网 FAQ LANG 段维护完整语言清单,中文在内);
  • 分析数据库可用 XML 格式导出做 XSLT 二次加工。

五、快速开始(最小可用示例)

本节给出官方文档的最小流程骨架,让读者对使用量级有概念;每条命令的完整参数与实测回显见《AWStats 裸机安装指南(apt + Apache CGI 集成实测)》(Ubuntu 环境实测)与《AWStats 常用 CLI 命令详解(awstats.pl 与日志预处理链)》。流程共四步(来源:官方文档 docs/awstats_setup.html 结构,2026-10-30 查询):

# Debian/Ubuntu:一条命令装齐 AWStats + Apache(含 CGI 模块)
sudo apt install awstats apache2

# 为被分析的站点生成一份配置(官方向导或手工拷贝模板)
sudo /usr/lib/cgi-bin/awstats.pl -config=www.example.com -update   # 首跑会提示补配置

# 编辑 /etc/awstats/awstats.www.example.com.conf:LogFile 指向真实访问日志、SiteDomain 填站点域名
# LogFile="/var/log/nginx/access.log"
# SiteDomain="www.example.com"

# 生成统计并查看
sudo /usr/lib/cgi-bin/awstats.pl -config=www.example.com -update          # 增量解析日志
sudo /usr/lib/cgi-bin/awstats.pl -config=www.example.com -output -staticlinks \
     > /var/www/html/awstats.html                                          # 导出静态首页报表

前提只有两条(官网 Requirements 原文):服务器把访问日志写在可读文件里;服务器能跑 Perl 脚本(AWStats 8.x 要求 Perl ≥ 5.00503,官网 Download 表口径)。

六、适用场景与限制

6.1 适用场景

  1. 存量服务器事后统计:Nginx/Apache 已经跑了很久、日志一直在落盘,此时引入 AWStats 可立即把全部历史日志(包括 .gz 归档)解析成报表——埋点方案做不到这一点;
  2. 对性能敏感的低配服务器:Perl 脚本 + 文本数据文件,无数据库、无常驻进程,cron 定时跑一次的代价几乎为零,VPS/裸金属/边缘盒子都跑得动;
  3. 邮件/FTP 服务器统计:需要同时统计 Postfix/Sendmail 邮件流量或 vsftpd 下载量时,AWStats 是少数原生支持的通用工具;
  4. 内网/合规隔离环境:统计全程在本机完成,无任何数据外发,适合不能装第三方统计脚本的环境。

6.2 限制与风险

  1. 维护收尾(最重要的风险):8.0 为作者本人最后一版(官网原话见 2.2 节),浏览器/爬虫特征库更新依赖社区,选型时必须接受「不会新增特性」这一事实;官网官方口径推荐长期项目改用 Matomo 并提供了迁移文档;
  2. 数据以日志为准的天花板:日志解析路径天然拿不到浏览器端数据(真实分辨率、单页应用内的行为),缓存命中与 CDN 边缘节点的请求也未必出现在源站日志里;
  3. 历史数据耦合:报表以 /var/lib/awstats/ 的月度文本文件为唯一事实源,误删/污染数据文件后只能重灌日志重建;同月日志重复导入会重复计数;
  4. CGI 暴露面:CGI 形态把分析脚本挂到 Web 路径上,历史上 AWStats 有过多个 CGI 相关 CVE(如 CVE-2017-1000501,来源:osv.dev 漏洞库),生产部署必须加访问控制或干脆只走静态发布——《AWStats 裸机安装指南(apt + Apache CGI 集成实测)》给出 Apache 认证加固步骤。

七、同类选型对比

7.1 四条日志分析路径对比

表格口径:版本与星数为 2026-10-30 实查(AWStats:官网 + shields.io 徽章;Matomo:shields.io 徽章 22k;GoAccess 版本取自本站 GoAccess 专栏 2026-10-17 实测的 1.9.4,星数徽章当日返回异常故不列具体数;Webalizer 为历史稳定版口径)。定性结论的来源均为各项目官方文档。

维度AWStatsGoAccessWebalizerMatomo(Log Analytics 路径)
实现语言PerlCCPHP + MySQL
数据来源纯日志解析纯日志解析纯日志解析JS 埋点为主 + 日志导入脚本
运行形态CLI 批处理 / CGI / 静态生成终端实时 / 常驻 HTML 服务 / 批处理CLI 批处理常驻 Web 应用
实时性分钟级(cron 周期决定)秒级(流式解析,终端实时刷新)分钟级埋点实时
报表输出多语言图形 HTML,报表维度最多(爬虫/蠕虫/搜索引擎关键词等)终端仪表盘 + 单页 HTML,交互强简单静态 HTML,报表类别少现代多标签 Web 仪表盘,可自定义
最新版本(2026-10-30 口径)8.0(2025-08-26,作者最后一版)1.9.4(本站 GoAccess 专栏实测口径)2.23-08(2013 年后长期无新版本)5.x 系列(以 matomo.org 为准)
维护状态维护收尾,官方推荐迁移活跃维护基本停更活跃维护(22k stars,shields.io 2026-10-30)
依赖仅 Perl仅 libc(可选 GeoIP/NCurses)libc/zlibPHP + MySQL + Web 服务器
日志格式Apache combined/common、IIS W3C、WebStar、FTP、邮件日志Apache/Nginx combined、CloudFront、自定义串Apache common/combined 为主import_logs.py 支持 Apache/Nginx/IIS 常见格式
历史日志回溯强(.gz 归档可合并解析)可(逐文件解析)可可(导入脚本逐文件跑)
典型资源占用低(cron 触发、文本存储)极低(C 程序流式处理)低高(数据库 + 常驻应用)

7.2 选型建议

  • 如果只要把已有的 Nginx/Apache 日志变成可浏览的报表,且服务器配置紧张 → AWStats 或 GoAccess。要「实时盯着流量」选 GoAccess(终端即开即用,见《GoAccess 介绍与选型指南》);要「定时生成可归档的完整报表、还要顺带统计邮件/FTP」选 AWStats;
  • 如果要长期演进的自托管分析平台、能接受埋点+数据库 → Matomo,官方甚至专门提供了 AWStats 迁移路径(import_logs.py 可直接消化 AWStats 曾分析的同一批日志);
  • 如果只是老系统里已有 Webalizer 在跑 → 无需专门迁移,但它与 AWStats 同属「报表更简单/维护停滞」档位,新部署不建议再选;
  • 如果需要集中检索多机日志、做告警与关联分析 → 这已超出「日志分析器」范畴,属于日志平台(ELK/Graylog/ClickHouse 系)的领地,AWStats 等单机工具不是竞品。

八、参考链接

站内相关文章: