GoAccess 是一个免费的(由MIT许可)且开源的实时 Web 日志分析器和交互式查看器,可在 *nix 系统的终端中或通过浏览器运行。
具体功能可以到 https://goaccess.io 查看。这里就不再赘述。
实战 -- 简单分析 Nginx 日志
先上命令
goaccess /usr/local/nginx/logs/access.log \
--ignore-panel=VISITORS \
--ignore-panel=HOSTS \
--ignore-panel=OS \
--ignore-panel=BROWSERS \
--ignore-panel=VIRTUAL_HOSTS \
--ignore-panel=REFERRERS \
--ignore-panel=REFERRING_SITES \
--ignore-panel=KEYPHRASES \
--ignore-panel=REMOTE_USER \
--ignore-panel=GEO_LOCATION \
--log-format=COMBINED \
-q -a -o /usr/local/nginx/report/index.html \
--real-time-html --daemonize
以守护进程(--daemonize)实时分析(--real-time-html)nginx 日志(--log-format=COMBINED,通用日志格式,Nginx 适用于这种日志格式)的运行,并且忽略(--ignore-panel)一些不关心的模块。
goaccess 创建了一个网页 —— index.html,该文件包含了监控数据,我们可以通过浏览器进行查看。
Nginx 配置查看报表数据
Nginx 配置一个域名解析到相应的目录,这个目录包含了 goaccess 的报表页面(/usr/local/nginx/report/index.html)。
为了数据安全,这里简单的试用了 Nginx 的 ngx_http_auth_basic_module 提供的认证功能,默认情况下,nginx 已经安装了该模块。
首先需要创建一个密码文件(/usr/local/nginx/logs/goaccess_pwd),此文件的书写格式是 用户名:密码
,每行一个账户,密码必须使用函数 crypt() 加密。
# 使用 goaccess 分析 nginx 日志生成的报表 html 页面
# 页面账号 xxx 密码 xxx
server {
listen 80;
server_name domainName;
location / {
auth_basic "goaccess-login!";
auth_basic_user_file /usr/local/nginx/logs/goaccess_pwd;
root /usr/local/nginx/report/;
index index.html;
}
}