GoAccess构建实时日志分析系统

一、GoAccess基本概述

GoAccess 是一款用于Apache或者Nginx的命令行日志分析器交互式查看器。使用这款工具,你不仅可以浏览到之前提及的相关数据,还可以通过分析网站服务器日志来进一步挖掘数据。这一切都是在一个终端窗口实时输出并且可以输出在web端可视化的显示信息。

二、GoAccess主要功能

  • 统计概况,流量消耗等
  • 访客排名
  • 动态Web请求
  • 静态web请求,如图片、样式表、脚本等。
  • 来路域名
  • 404 错误
  • 操作系统
  • 浏览器和搜索引擎
  • 主机、DNS和ip地址
  • HTTP 响应代码
  • 引荐网站
  • 键盘布局
  • 自定义显示
  • 支持超大日志(分析速度很快)

三、GoAccess用法介绍

GoAccess的基本语法如下

goaccess [ -b ][ -s ][ -e IP_ADDRESS][ - a ] <-f log_file >

参数说明:
    -f – 日志文件名
    -b – 开启流量统计,如果希望加快分析速度不建议使用该参数
    -s – 开启HTTP响应代码统计
    -a – 开启用户代理统计
    -e – 开启指定IP地址统计,默认禁用
    -p -指定goacces用户配置文件路径

安装GoAccess

[root@web01 ~]# wget http://tar.goaccess.io/goaccess-1.2.tar.gz

[root@web01 ~]# tar -xzvf goaccess-1.2.tar.gz

[root@web01 ~]# cd goaccess-1.2/

[root@web01 ~]# ./configure --enable-utf8 --enable-geoip=legacy

configure: error: 
    *** Missing development files for the GeoIP library

[root@web01 ~]# yum install libncursesw5-dev    #缺少的依赖包

[root@web01 ~]# yum install ncurses-devel       #缺少的依赖包

[root@web01 ~]# yum install GeoIP GeoIP-devel GeoIP-data          #缺少的依赖包

[root@web01 ~]# ./configure --enable-utf8 --enable-geoip=legacy

[root@web01 ~]# make & make install

配置

1.对配置文件做一些主要配置:


[root@web01 log]# which goaccess 
/usr/local/bin/goaccess

去掉这些配置项前面的“#”
[root@web01 log]# vim /usr/local/etc/goaccess.conf 
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

其中,log-format 与 access.log 的 log_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 命令参数,如下:

$ 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时使用

控制台模式

1.当前日志分析结果

goaccess -f /usr/local/nginx/logs/access.log  -p /usr/local/etc/goaccess.conf

 

 

控制台下的操作方法:

F1   主帮助页面 

F5   重绘主窗口 

q    退出 

1-15 跳转到对应编号的模块位置  

o    打开当前模块的详细视图

 j    当前模块向下滚动 

k    当前模块向上滚动 

s    对模块排序 

/    在所有模块中搜索匹配 

n    查找下一个出现的位置 

g    移动到第一个模块顶部 

G    移动到最后一个模块底部

使用命令指定配置,将生成的信息保存为html 


#1.测试是否能通过终端直接展示
[root@web01 log]# goaccess -f /usr/local/nginx/logs/access.log  -p /usr/local/etc/goaccess.conf

#2.将分析结果保存为HTML
[root@web01 log]# goaccess /var/log/nginx/access.log -o /usr/local/nginx/html/log/index.html -p /usr/local/etc/goaccess.conf 


#3.将其写入脚本
#由于对日志实时性要求不是非常高,于是写个小脚本,配置crontab,让其每隔一段时间转换一次,也可以实现伪实时性观察log,如下:
[root@web01 log]# vim scripts/goaccess.sh
#!/bin/bash
LANG="zh_CN.UTF-8"           #页面转换为中文
/usr/local/bin/goaccess /var/log/nginx/access.log -o /usr/local/nginx/html/log/index.html -p /usr/local/etc/goaccess.conf 

#4.然后再将脚本加入到crontab即可
[root@web01 ~]# crontab -e
#定时goaccess生成的信息保存为html
5,10,15,20,25,30,35,40,45,50 * * * * /bin/bash /root/scripts/goaccess.sh
[root@web01 ~]# crontab -l   #查看
最后记得一定要重新加载配置文件否则不生效的
命令: service crond reload 重新载入配置

 配置一个nginx虚拟主机

location / {
            alias html/log/;
            index  index.html index.htm;
        }

浏览器输入本机地址回车即可看到:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值