GoAccess 监控 Nginx 日志

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;
        }
}

more

  1. 在分析 200M 的 Nginx 日志时系统资源占用几乎可以忽略不计,只占用了 6M 的内存:
[root@xxx~]# ps aux|grep goaccess
root     15339  0.1  0.0 282836  6464 ?        Ssl  13:35   0:01 goaccess /usr/local/nginx/logs/access.log 
  1. -q 参数可以忽略请求的查询字符串。例如,www.google.com/page.htm? query => www.google.com/page.htm
    注意:删除查询字符串可以大大减少内存消耗,尤其是在带有时间戳的请求上。

  2. 使用 --daemonize 使得 GoAccess 成为守护进程的时候所有参数后的值都必须是绝对路径,否则将无法创建守护进程。

posted @ 2021-02-05 13:57  ManaStuDent  阅读(18)  评论(0编辑  收藏  举报