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


    使用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.安装完成后,默认将配置文件goaccess.conf放置于/usr/local/etc路径,为了统一管理,使用mv /usr/local/etc/goaccess.conf /etc/命令将其移动到/etc目录下。

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

    [root@web01 log]# cd /var/log
    
    [root@web01 log]# goacess -f /var/log/nginx/access.log
    
    [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.当前日志分析结果

    [root@web01 log]# goaccess -f /var/log/nginx/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  /var/log/nginx/access.log -p /usr/local/etc/goaccess.conf
    
    #2.将分析结果保存为HTML
    [root@web01 log]# goaccess /var/log/nginx/access.log -o /code/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 /code/log/index.html -p /usr/local/etc/goaccess.conf 
    
    #4.然后再将脚本加入到crontab即可
    [root@web01 ~]# crontab -l
    #定时goaccess生成的信息保存为html
    30 * * * * /bin/bash /root/scripts/goaccess.sh
    

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

    [root@web01 conf.d]# vim fx.conf
    
    server {
            listen 80;
            server_name longjiping.com;
            charset utf-8,gbk;
    
        location / {
                root /code/log;
                index index.html;
        }
    
    
    }
    

  • 相关阅读:
    Postman测试写法的问题
    Spring Cloud
    Swagger2构造RESTful API开发Java Web
    web前端三大框架(主流Vue.js)
    zookeeper
    分布式服务介绍
    2019年java技术大盘点
    refusing to merge unrelated histories
    PPT制作不加班的十个小窍门
    如何快速完成一份学术型PPT
  • 原文地址:https://www.cnblogs.com/longren/p/10945623.html
Copyright © 2020-2023  润新知