文档首页> 技术教程> 用 GoAccess 实时分析 Nginx 日志

用 GoAccess 实时分析 Nginx 日志

发布时间:2026-06-29 18:56        更新时间:2026-06-30 15:07
装上 GoAccess(开源的日志分析工具)之后,Nginx 访问日志会从一串文本变成一张不断刷新的报表,不用登录数据库也不用写脚本。它直接读原始日志文件,不往服务里埋点,对现有架构零侵入。 一、安装 Ubuntu 直接 apt install goaccess;CentOS 先装 EPEL 源再 yum install goaccess。发行版自带版本偏旧时,从官网源码编译,依赖 ncurses 和 libmaxminddb 这类库,./configure --enable-utf8 --enable-geoip=mmdb 一条配置基本够用。装完 goaccess --version 确认编译特性里是否带了 geoip,老版本解析新格式容易出错,能升就升。 二、终端模式 goaccess /var/log/nginx/access.log --log-format=COMBINED,回车后进入交互界面,数字键切换面板,q 退出,上手五分钟。COMBINED 对应 Nginx 默认的 combined 日志格式;如果改过 log_format,就得按日志里字段的实际顺序自己拼 --log-format,格式对不上会解析出零记录。面板底部有全局统计,总请求数、失败数、传输量一眼总览。 三、网页模式 goaccess /var/log/nginx/access.log --log-format=COMBINED --real-time-html --output=/usr/share/nginx/html/report.html,浏览器打开该路径即可看到实时页面。注意两点:这个地址务必加访问控制;日志轮转后要重新指向新文件,配合 rotate 脚本一起改。只要定时出静态报告的话,去掉实时参数,用 cron 每小时生成一份即可。内存占用与日志量相关,超大日志建议先压缩归档或抽样再喂入。 四、看哪些指标 状态码分布:大量 4xx 可能正被扫描,5xx 是服务端出错。来源 IP 排名:异常集中要警惕,地理来源分布还能看出异常的扫描源。请求量随时间的曲线:定位流量高峰与异常尖刺。请求耗时靠前的 URL 和可疑的 User-Agent 值也值得扫一眼。异常时段的日志按小时切出来单独分析,能精确到时间段。看报表的顺序建议从状态码开始,再到来源和耗时,最后扫一眼可疑的爬虫记录。把看报表的时间固定下来,比如每天早上扫一次,异常曲线才不容易漏。 报表数据来自日志文件,别把它当成实时数据库,临时分析用终端模式就够,长期观测才需要网页模式。