GoAccess日志分析

GoAccess监控日志

链接:https://tar.goaccess.io/goaccess-1.5.4.tar.gz

环境:CentOS7.9   2C2G    10.0.0.10

简介:
GoAccess被设计成一个基于终端的快速日志分析器。它的核心思想是实时快速分析和查看Web服务器统计信息,而无需使用您的浏览器
虽然终端输出是默认输出,但是它能够生成完整的,自包含的实时HTML报告,非常适合分析,监控和数据可视化,以及JSON和CSV报告

主要功能:
用C语言编写的,快速,实时,毫秒/秒更新
GoAccess是用C语言编写的。要运行它,你只需要将ncurses作为依赖项
几乎所有的Web日志格式 (Apache,Nginx,Amazon S3,Elastic Load Balancing,CloudFront等)
只需要设置日志格式并根据您的日志运行它
漂亮的终端和自定义仪表盘
GoAccess能够通过磁盘上的B + Tree数据库逐步处理日志
需要最少的配置
配色方案可定制


我们以Nginx为例子来分析Nginx的日志!

安装GoAccess

1:安装依赖:
yum -y install glib2 glib2-devel ncurses ncurses-devel GeoIP GeoIP-devel GeoIP-data

Installed:
  GeoIP-data.noarch 0:1.5.0-14.el7                     GeoIP-devel.x86_64 0:1.5.0-14.el7         glib2-devel.x86_64 0:2.56.1-9.el7_9        
  ncurses-devel.x86_64 0:5.9-14.20130511.el7_4        

Dependency Installed:
  pcre-devel.x86_64 0:8.32-17.el7                                                                                                           

Updated:
  glib2.x86_64 0:2.56.1-9.el7_9                                                                                                             

Complete!
#安装完成

2:下载GoAccess
wget https://tar.goaccess.io/goaccess-1.5.4.tar.gz

3:解压并安装
[root@virtual_host ~]# ls
anaconda-ks.cfg  goaccess-1.5.4.tar.gz
[root@virtual_host ~]# tar xf goaccess-1.5.4.tar.gz 
[root@virtual_host ~]# ls
anaconda-ks.cfg  goaccess-1.5.4  goaccess-1.5.4.tar.gz
[root@virtual_host ~]# cd goaccess-1.5.4/
[root@virtual_host goaccess-1.5.4]# ls
ABOUT-NLS   ChangeLog  config.guess  configure     depcomp     install-sh   Makefile.in  po         src
aclocal.m4  compile    config.rpath  configure.ac  goaccess.1  m4           missing      README     TODO
AUTHORS     config     config.sub    COPYING       INSTALL     Makefile.am  NEWS         resources
[root@virtual_host goaccess-1.5.4]# ./configure --prefix=/usr/local/goaccess --enable-utf8 --enable-geoip=legacy --with-openssl
[root@virtual_host goaccess-1.5.4]# make && make install

# 编译出错时可能是因为openssl-devel并没有安装所导致!完成之后直接make && make install安装即可

链接一下
ln -s /usr/local/goaccess/bin/goaccess /usr/local/bin/

然后我们开始去修改配置文件
[root@virtual_host goaccess]# pwd
/usr/local/goaccess/etc/goaccess
写入这些
time-format %H:%M:%S
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
date-format %d/%b/%Y


#配置文件参数说明
%x 匹配 time-format 和 date-format 变量的日期和时间字段。用于使用时间戳来代替日期和时间两个独立变量的场景。
%t 匹配 time-format 变量的时间字段。
%d 匹配 date-format 变量的日期字段。
%v 根据 canonical 名称设定的服务器名称(服务区或者虚拟主机)。
%e 请求文档时由 HTTP 验证决定的用户 ID。
%h 主机(客户端IP地址,IPv4 或者 IPv6)。
%r 客户端请求的行数。这些请求使用分隔符(单引号,双引号)引用的部分可以被解析。否则,需要使用由特殊格式说明符(例如:%m, %U, %q 和 %H)组合格式去解析独立的字段。
注意: 既可以使用 %r 获取完整的请求,也可以使用 %m, %U, %q and %H 去组合你的请求,但是不能同时使用。
%m 请求的方法。
%U 请求的 URL。
注意: 如果查询字符串在 %U中,则无需使用 %q。但是,如果 URL 路径中没有包含任何查询字符串,则你可以使用 %q 查询字符串将附加在请求后面。
%q 查询字符串。
%H 请求协议。
%s 服务器回传客户端的状态码。
%b 回传客户端的对象的大小。
%R HTTP 请求的 "Referer" 值。
%u HTTP 请求的 "UserAgent" 值。
%D 处理请求的时间消耗,使用微秒计算。
%T 处理请求的时间消耗,使用带秒和毫秒计算。
%L 处理请求的时间消耗,使用十进制数表示的毫秒计算。
%^ 忽略此字段。
%~ 继续解析日志字符串直到找到一个非空字符(!isspace)。
~h 在 X-Forwarded-For (XFF) 字段中的主机(客户端 IP 地址,IPv4 或者 IPv6)。

4:安装Nginx
[root@virtual_host goaccess-1.5.4]# yum install -y nginx
#检查日志是否打开
cat /etc/nginx/nginx.conf
...
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
...

GoAccess 控制台模式
goaccess有控制台模式和html静态页面模式,这里先介绍一下控制台模式
goaccess -a -d -f /var/log/nginx/access.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf
#常用参数
-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时使用

#控制台操作方法
F1 主帮助页面
F5 重绘主窗口
q 退出
1-15 跳转到对应编号的模块位置
o 打开当前模块的详细视图
j 当前模块向下滚动
k 当前模块向上滚动
s 对模块排序
/ 在所有模块中搜索匹配
n 查找下一个出现的位置
g 移动到第一个模块顶部
G 移动到最后一个模块底部



输出给nginx使用nginx访问web页面方式
-o参数是输出html的位置!
goaccess -a -d -f /var/log/nginx/access.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/share/nginx/html/index.html

控制台演示
image

web页面展示
image

#GoAccess Daemonize
GoAccess可以使用daemonize模式运行,并提供创建实时HTML的功能,只需要在启动命令后添加--real-time-html和--daemonize参数即可
它监听了7890的端口(可以修改的)--port 指定端口
网站开启了HTTPS功能,就需要GoAccess启用openssl,在配置文件goaccess.conf中配置ssl-cert和ssl-key来支持openssl,还需要将ws-url指定为域名!

#GoAccess Crontab
在某些常见下,没有这样的实时性要求,可采用crontab机制实现定时更新HTML报表
*/45 * * * * goaccess -a -d -f /usr/local/nginx/access.log -p /usr/local/goaccess/etc/goaccess/goaccess.conf -o /usr/share/nginx/html/index.html
定时任务设置每45分钟刷新一次
当Nginx日志被切割后,可以使用--keep-db-file进行分析新产生的日志

#到此GoAccess分析Nginx日志到此结束!

posted @ 2022-01-13 18:23  Layzer  阅读(108)  评论(0编辑  收藏  举报