使用 GoAccess 分析 Nginx 日志

7 Comments

最近发现博客加载图片大多时候都是龟速,想过换服务器,换回主机(比如传说中的外贸主机 SiteGround),图片上 CDN……想了一圈,最终什么都没动,一是穷二是懒三是图片多茄大的水文并不多,先这样吧,实在不行再折腾。倒是忍不住折腾了一下 GoAccess 分析 Nginx 日志,分析了一圈,没什么用。

记录一下折腾过程吧。官网:GoAccess · 演示

安装 GoAccess

官方安装说明:Installation,CentOS 7.6 实测可用。

yum -y install libmaxminddb-devel  # --enable-geoip=mmdb 必须安装此依赖
wget https://tar.goaccess.io/goaccess-1.3.tar.gz && tar -xzvf goaccess-1.3.tar.gz && cd goaccess-1.3/
./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
make
make install

不出意外,执行 goaccess -V 可以看到相应版本和配置:

~# goaccess -V
GoAccess - 1.3.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

Build configure arguments:
--enable-utf8
--enable-geoip=mmdb
--with-openssl

运行 GoAccess

终端方式看起来不习惯,我选择直接生成静态 HTML 报告,然后浏览器查看,比如,运行以下命令:(注意替换实际文件路径)

goaccess /xxx/ooo/cyhour.com_nginx.log -a -o /xxx/ooo/ttt.html --log-format=COMBINED

/xxx/ooo/cyhour.com_nginx.log:为日志文件具体路径
/xxx/ooo/ttt.html:HTML 报告文件名以及路径
--log-format=日志文件格式,COMBINED为标准格式(默认支持格式)

自定义 nginx 日志格式

一般默认的就好,自定义出来的数据感觉差别不大(主要是不懂)。

自定义格式一般放在 nginx.conf 文件 http { ... } 里面

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" "$request_length" "$status"  "$bytes_sent" "$http_referer"  "$http_user_agent" "$http_x_forwarded_for"  "$gzip_ratio" $request_time $upstream_response_time';

在主机配置文件中选用自定义日志

access_log /oo/xx/cyhour.com_nginx.log main;

重启 nginx

service nginx restart

修改对应 GoAccess 配置

time-format %H:%M:%S
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" "%^" "%s" "%b" "%R" "%u" "%^" "%^" %T %^

温馨提示:如果不知道如何设置 GoAccess 日志格式,可以直接使用在线转换工具:nginx2goaccess,转换出来再人工处理一下就好了。

下载、指定 IP 库

因为前面安装选了 --enable-geoip=mmdb,还得从 MaxMind 下载 IP 库数据,否则生成的报告 GEO LOCATION 没有数据。如果不需要的话直接忽略。

wget -N https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz && tar -xzvf GeoLite2-City.tar.gz

或者下载到本地,解压出来,将 GeoLite2-City.mmdb 上传到 VPS 目录使用也可以。

GoAccess 生成报告

注意替换实际路径。

goaccess -a --geoip-database=/xx/oo/GeoLite2-City.mmdb -d -f /xx/oo/cyhour.com_nginx.log -p /xx/oo/goaccess.conf -o /xx/oo/ooxx.html 

还可以 crontab 定时生成日志分析文件,暂时没这个需求,就没有继续折腾。

GoAccess 卸载

cd goaccess-1.3
make uninstall

参考资料

挖站否:服务器日志分析利器:ngxtop和GoAccess-实时监控可视化管理快速找出异常来源

marility:Goaccess的简单使用

小z博客:CentOS安装GoAccess快速方便的分析网站日志

天翊:使用GoAccess分析Nginx日志

声明:除非注明,常阳时光文章均为原创
本文地址:https://cyhour.com/1107/
转载时必须以链接形式注明原始出处。
Views: 116 Tags:  ,  , 

Comments:7

  1. 我也分析过

    2019.08.13 15:43 # 回复
    1楼
  2. 浮游

    真勤快,像我就太懒了,现在动态站点都懒得维护,我直接上静态,懒得分析

    2019.08.15 14:55 # 回复
    2楼
    • @浮游 曾经也折腾过静态,还是无爱。

      2019.08.15 15:55 # 回复
      • 浮游

        @老杨 很多人折腾一下就放弃了是因为写文章麻烦、生成文章麻烦、没有评论系统。说起来还是感谢你推荐的瓦工传家宝,真心稳。静态我也没怎么折腾,直接用filebrowser管理或直接写文章,crontab定时生成文章,至于评论就直接用disqus-php-api

        2019.08.15 17:28 # 回复
        • @浮游 对,写文章麻烦,折腾麻烦。传家宝正常使用,目前看还是挺稳的,希望能保持吧。

          2019.08.16 10:27 # 回复

发表留言

炒蛋:Vultr 送$25 | 搬瓦工年付$19补货,优惠码 BWH34QMFYT2R | 推荐VPS信息