GoAccess是一款开源、实时的Web日志分析工具,专为Nginx、Apache等服务器日志设计,支持生成交互式HTML报告,无需复杂配置,适合快速查看访问趋势与异常。
安装步骤:通过包管理器快速安装(CentOS:yum install goaccess -y;Ubuntu:sudo apt install -y goaccess)。
生成报表命令:针对Nginx的COMBINED日志格式,执行goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED(若日志格式为自定义,需调整--log-format参数,如--log-format='%h [%d:%t %^] "%r" %T %s %b "%R" "%u"',并指定时间格式--date-format='%d/%b/%Y' --time-format='%H:%M:%S')。
功能特点:报表支持实时更新,包含访问量、访客IP排名、请求URL分布、HTTP状态码统计(如404/500错误)、页面加载时间等可视化图表,可直接在浏览器中打开查看,适合快速定位访问异常。
Python结合pandas(数据处理)、matplotlib(可视化)等库,可实现Nginx日志的定制化分析,生成Excel表格与多维度图表(柱状图、饼图、折线图),适合需要详细数据或进一步处理的场景。
实现步骤:
pip3 install pandas matplotlib openpyxl;value_counts()统计Top 10 IP、状态码分布、每小时请求趋势,使用groupby()按时间/URL分组聚合;to_excel()),并通过matplotlib绘制子图(如Top 10 IP柱状图、状态码饼图、每小时请求折线图),保存为PNG图片。pandas分块读取)、邮件通知(smtplib自动发送报表)等功能,满足企业级需求。ELK(Elasticsearch+Logstash+Kibana)是处理大规模Nginx日志的强大组合,支持日志收集、存储、检索与可视化,适合企业级复杂分析场景(如海量日志、多维度关联分析)。
配置流程:
nginx.conf配置文件,使用grok过滤器解析Nginx日志(匹配IP、时间、请求方法、URL、状态码等字段),并将解析后的数据发送至Elasticsearch(索引命名为nginx-access-%{+YYYY.MM.dd},按天分割);ngxtop是一款轻量级命令行工具,实时解析Nginx日志并以终端表格形式展示访问统计信息(如请求量、状态码、IP排名),适合快速查看实时访问情况(无需生成文件)。
安装与使用:通过pip install ngxtop安装,执行ngxtop命令(默认读取access.log),终端将显示实时请求量、Top 10 URL、Top 10 IP等统计信息,支持-c指定配置文件、--filter过滤条件(如--filter 'status == 404'查看404错误)、--status按状态码过滤等功能。
此方案适合监控Nginx性能指标(如请求延迟、错误率、并发连接数),而非单纯日志分析,但可与日志分析结合,实现全面的性能监控可视化。
配置步骤:
/metrics接口,收集Nginx状态信息),需修改Nginx配置启用stub_status模块(location /nginx_status { stub_status; allow 127.0.0.1; deny all; });/metrics接口数据(在prometheus.yml中添加scrape_configs);