使用GoAccess构建简单实时日志分析系统

  • 2019-09-02
  • 0
  • 0

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

安装成功.png

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

编译成功.png

报错解决办法:

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

指定日志弹出界面.png
回车即可看到当前日志分析结果
goaccess界面.png

控制台下的操作方法:
控制台下的操作方法:
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界面
虚拟主机配置.png
输入域名查看页面
html页面.png

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

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨