04月18, 2018

GoAccess -日志分析简明介绍

什么是 GoAccess

GoAccess是一个开源的实时网络日志分析器和交互式查看器,可在*nix系统的终端或浏览器中运行。

为什么选择 GoAccess

GoAccess 被设计成一个快速的基于终端的日志分析器。它的核心思想是快速分析和查看web服务器统计数据,而无需使用浏览器。虽然终端输出是默认输出,但它有能力生成完整的实时HTML报告(用于分析、监视和数据可视化),以及JSON和CSV报告。

关键特性

  • 快速,实时,毫秒/秒级更新,C语言编写
  • 只有一个依赖ncurses
  • 几乎所有的WEB日志格式 (比如:Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, etc)
  • 简单地设置日志格式并在日志中运行它
  • 漂亮的终端和引导指示板

完整的特性见:Features

安装

RHEL/CENTOS 直接yum安装

yum install goaccess -y

或者编译安装

wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

更多细节见:官网

使用说明

这里我以分析自定义过的nginx日志为例,分析某一天的日志访问信息。

语法

goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]

选项

可以通过命令行指定,也可以配置到文件中,这里我建议配置在文件中,默认的配置文件是/etc/goaccess.conf

LOG/DATE/TIME 格式化

下面是根据自定义nginx日志格式后的对比说明,不过scheme请求协议用%H解析时有点问题,这里用%^忽略了。

time-format %H:%M:%S
date-format %d/%b/%Y

# NGINX LOG FORMART
#   log_format  main  '$http_host $remote_addr - $remote_user [$time_local] '
#                       %^          %h        %^    %^          [%d/%b/%Y:%H:%M:%S +0800]
#                      '$scheme "$request" $status $bytes_sent "$http_referer" '
#                       %H      "%r"        %s      %b          "%R"
#                      '"$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio" $request_time '
#                       "%u"                %^                      %^              %T
#                      '$upstream_addr $upstream_status $upstream_response_time';
#                       %^              %^              %^
log-format %^ %h %^ %^ [%d:%t %^] %^ "%r" %s %b "%R" "%u" %^ %^ %T %^ %^ %^

默认配置中修改LOG/DATE/TIME FORMAT三处字段就可以使用了。

执行下面的命令生成日志的分析报告

goaccess -f fandenggui.com.log -a -o result.html

更多细节见:Man Page

本文链接:https://fandenggui.com/post/goaccess-log-analyzer.html

-- EOF --

Comments