一、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的安装(centos)

1/安装依赖包:

[root@ljcccc ~]# yum install ncurses-devel
[root@ljcccc ~]# wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz
[root@ljcccc ~]# tar GeoIP-1.6.11.tar.gz
[root@ljcccc ~]# cd GeoIP-1.6.11
[root@ljcccc ~]# ./configure && make && make install

2/安装GoAccess

[root@ljcccc ~]# wget https://tar.goaccess.io/goaccess-1.3.tar.gz
[root@ljcccc ~]# tar -xzvf goaccess-1.3.tar.gz
[root@ljcccc ~]# cd goaccess-1.3/
[root@ljcccc goaccess-1.3]# ./configure --enable-utf8 --enable-geoip=legacy

ng accesslog日志格式 access日志怎么做_nginx

[root@ljcccc goaccess-1.3]# make && make install

ng accesslog日志格式 access日志怎么做_linxu_02

报错解决办法:

configure: error: *** Missing development files for the GeoIP library
-----安装GeoIP依赖(步骤1)
configure: error: *** Missing development libraries for ncursesw
安装ncursesw:yum install libncursesw5-dev ncurses-libs ncurses-devel

GoAccess的使用

1、修改配置文件

#修改goaccess配置文件
[root@ljcccc ~]# vim /usr/local/etc/goaccess/goaccess.conf 

#修改如下三行(去掉注释信息)
time-format %H:%M:%S
date-format %d/%b/%Y
#NCSA Combined Log Format
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

2、指定分析的日志

[root@ljcccc ~]# goaccess  -f /var/log/nginx/access.log

ng accesslog日志格式 access日志怎么做_nginx_03


回车即可看到当前日志分析结果

ng accesslog日志格式 access日志怎么做_日志分析_04

控制台下的操作方法:
控制台下的操作方法:
F1 	 	 		主帮助页面
F5 	 	 		重绘主窗口
q  	 	 		退出
c  	 	 		设置或改变配色方案
1-9			        跳转到对应的模块编号
SHIFT + 0-9            激活超过10的模块
o 	 	 	 	打开当前模块的详细试图
j 	 	 	 	当前模块向下滚动
k 	 	 	 	当前模块向上滚动
s 	 	 	 	对模块排序
/ 	 	 	 	向前在任意{详细视图}窗口搜索输入模式(pattern)
n 	 	 	 	在任意{详细视图}窗口中找到下一次出现的位置
t 	 	 	 	跳到第一个条目或屏幕顶端
b 	 	 	 	跳到最后一个条目或者屏幕底部

3、在web端中显示
使用命令指定配置,将生成的信息保存为html

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

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

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

#4.然后再将脚本加入到crontab即可
[root@ljcccc ~]# crontab -l
#定时goaccess生成的信息保存为html
30 * * * * /bin/bash /root/scripts/goaccess.sh

在小脚本中定义:LANG=“zh_CN.UTF-8”,可以让web界面显示中文。喜欢看英文的小伙伴也可以不加这。

4.配置一个NGINX虚拟主机,将root指向/usr/share/nginx/log,这样就可以通过域名去访问HTML界面

ng accesslog日志格式 access日志怎么做_goaccess_05


输入域名查看页面

ng accesslog日志格式 access日志怎么做_linxu_06

GoAccess是一个非常有价值的工具,它能给系统管理员实时提供可视的HTTP 统计分析。虽然GoAccess的默认输出是标准输出,但是你也可以将他们保存到JSON,HTML或者CSV文件。这种转换可以让 GoAccess在监控和显示网站服务器的统计数据时更有用。