运维-nginx日志分析工具

GoAccess 是一款开源的且具有交互视图界面的实时 Web 日志分析工具,通过你的 Web 浏览器或者 Unix 系统下的终端程序(terminal)即可访问。

安装 & 配置

命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
--time-format <timeformat>
指定日志时间格式
--date-format <dateformat>
指定日志日期格式
--log-format <logformat>
指定日志格式

-a --agent-list - 开启 UserAgent 列表。
-o --output=file.html|json|csv - 将给定文件重定向到标准输出,通过后缀名决定输出格式:HTML, JSON 或 CSV。

--keep-db-files - 在磁盘上保存已解析的数据。如果数据库文件存在,则文件将被覆盖。
--load-from-disk - 从磁盘载入之前存储过的数据。如果仅读取已保存的数据,则需要退出数据库文件。
--db-path=<path> - 设置磁盘数据库文件的存储路径。默认值为 /tmp 目录。

处理不断增长中的日志
GoAccess 通过磁盘 B+树 数据库能够处理不断增长的日志。工作原理如下:

首先数据集必须使用 --keep-db-files, 参数保存,然后相同的数据集可以使用参数 --load-from-disk 载入。
收到新的数据(来自管道或者文件)后,将会被附加到原始数据集上。
在任何时候都保存数据, 则必须使用 --keep-db-files 参数。
如果在使用参数 --load-from-disk 时没有同时使用 --keep-db-files 参数,则数据库文件在程序关闭时将会被删除。

安装

1
yum install goaccess

修改 /etc/goaccess.conf 配置文件,默认 nginx main 日志格式

1
2
3
4
5
6
# 指定日志时间格式
time-format %H:%M:%S
# 指定日志日期格式
date-format %d/%b/%Y
# 指定日志格式
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

输出到终端且生成一个可交互的报告

1
goaccess /var/log/nginx/access.log

显示当前存储方法

1
2
[user@server ~]# goaccess -s
Built using Tokyo Cabinet On-Disk B+ Tree.

生成远程服务器日志报告

1
ssh user@server 'zcat /var/log/nginx/access.log-`date +"\%Y\%m\%d"`.gz' | goaccess -o /data/`date +"\%Y\%m\%d"`.html

生成远程服务器日志报告

1
2
ssh user@server 'zcat /var/log/nginx/access.log-$(date +"%Y%m%d").gz' | goaccess --db-path=/data/goaccess/ --keep-db-files  --html-prefs='{"theme":"darkBlue","perPage":20,"layout":"vertical","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}' -o /data/html/$(date +"%Y%m%d").html
ssh user@server 'zcat /var/log/nginx/access.log-$(date +"%Y%m%d").gz' | goaccess --db-path=/data/goaccess/ --load-from-disk --html-prefs='{"theme":"darkBlue","perPage":20,"layout":"vertical","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}' -o /data/html/$(date +"%Y%m%d").html

配置 nginx 访问 /data/html

您的支持将鼓励我继续创作