GoAccess -日志分析简明介绍

注: 本文来自https://www.fandenggui.com/post/goaccess-log-analyzer.html

什么是 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 GeoIP-devel -y
yum install glib2 glib2-devel GeoIP-devel  ncurses-devel zlib zlib-devel -y
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三处字段就可以使用了。

%t  匹配time-format格式的时间字段
%d  匹配date-format格式的日期字段
%h  host(客户端ip地址,包括ipv4和ipv6)
%r  来自客户端的请求行
%m  请求的方法
%U  URL路径
%H  请求协议
%s  服务器响应的状态码
%b  服务器返回的内容大小
%R  HTTP请求头的referer字段
%u  用户代理的HTTP请求报头
%D  请求所花费的时间,单位微秒
%T  请求所花费的时间,单位秒
%^  忽略这一字段

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

goaccess -f fandenggui.com.log -a -o result.html
$ goaccess -h
# 常用参数
-a --agent-list 启用由主机用户代理的列表。为了更快的解析,不启用该项
-d --with-output-resolver 在HTML/JSON输出中开启IP解析,会使用GeoIP来进行IP解析
-f --log-file 需要分析的日志文件路径
-p --config-file 配置文件路径
-o --output 输出格式,支持html、json、csv
-m --with-mouse 控制面板支持鼠标点击
-q --no-query-string 忽略请求的参数部分
--real-time-html 实时生成HTML报告
--daemonize 守护进程模式,--real-time-html时使用

更多细节见:Man Page

本文来自网络,不代表往事如风立场,转载请注明出处:https://www.pastlikewind.com/2019/08/22/589/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

1条评论

返回顶部