Goaccess分析生成展示日志页面
1. 说明
GoAccess是一款实时的开源 Web 日志分析工具,用于分析和可视化 Web 服务器的日志数据。它主要支持 Apache、Nginx、以及其他常见 Web 服务器的日志格式,可以帮助用户快速生成 Web 服务器的访问统计报告;有如下特点:实时数据分析、 支持多种日志格式 、命令行界面 (CLI) 和 Web 界面、 实时图形和统计、配置简单、性能优秀、支持导出报告和生成html格式、支持实时分析与历史数据分析;
2、常见应用场景
Web 流量分析:查看网站的访问情况,包括页面访问量、流量来源、用户行为等。
性能监控:分析 Web 服务器的性能指标,检查不同时间段内的访问量变化。
故障排查:通过分析日志中的状态码、错误信息来定位问题。
安全审计:检测异常流量、攻击行为等,例如 SQL 注入、DDoS 攻击等。
3. goaccess安装使用
本次实践基于alamlinux8 LNMP架构,给一个真实的小企业网站收集nginx日志并进行分析!
安装:
yum install goaccess -y
日志格式如下:
nginx的日志格式:
'$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time'
实际输出的日志类似如下:
204.188.228.159 - - [09/Jan/2025:10:34:20 +0800] "GET /.env HTTP/1.1" 404 146 "-" "Mozilla/5.0 Keydrop"
52.160.33.173 - - [09/Jan/2025:10:38:58 +0800] "GET /owa/auth/logon.aspx HTTP/1.1" 404 146 "-" "Mozilla/5.0 zgrab/0.x"
5、配置Geolite2
GeoLite2 是由 MaxMind 提供的一组免费和开源的数据库,用于根据 IP 地址进行地理位置定位(GeoIP)。它允许你将用户的 IP 地址映射到地理信息,比如国家、地区、城市、ISP、组织、经纬度等。GeoLite2 是 GeoIP 系列的一个简化版本,相比于 GeoIP2,它提供的功能较少,但仍然能满足大多数基本的地理位置定位需求。
官方下载,但需要注册登录后才能下载
这里直接到github中下载做演示
下载下来后放到一个位置 ,如:/etc/goaccess/GeoLite2-City.mmdb 下
5. 配置使用
默认安装好后,可以直接通过goaccess命令和相关选项参数直接对日志进行分析输出;也可以通过配置/etc/goaccess/goaccess.conf将常用选项打开;这里演示直接命令加选项参数放入脚本中定时输出report.html,脚本如下:
cat report.sh
#!/bin/bash
export LC_ALL=zh_CN.UTF-8 # 输出中文页面
File="/root/ShuangSeQiu/templates/report.html" # 输出html
geoip="/etc/goaccess/GeoLite2-City.mmdb" # GeoLite2库文件
log="/www/wwwlogs/www.xxxxxx.com.log" # 网站日志
goaccess ${log} --geoip-database=${geoip} --log-format='%h %^[%d:%t %^] "%r" %s %b "%R" "%u"' --date-format='%d/%b/%Y' --time-format='%T' -o ${File}
将以上脚本放入crontab中 定时输出report.html
6、访问报告页
通过nginx配置访问:
server段添加如下:
server {
……
location /goaccess {
alias /root/ShuangSeQiu/templates/;
index report.html;
# autoindex on; # 可选,允许浏览目录内容
}
……
}
重载reload配置即可访问 http://www.xxxxxx.com/goaccess即可访问;
默认界面 如下:
分析统计项:
地址位置:
文档信息
- 本文作者:sysnat
- 本文链接:https://sysant.github.io/2025/01/09/goaccess/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)