GoAccess请求监控

简介

GoAccess是一款开源的实时web日志分析器和交互式查看器,用于可视化查看HTTP统计信息,可以系统的终端上运行,也可以通过浏览器运行;

本文通过使用GoAccess分析Nginx的日志文件,从而统计HTTP的请求情况;

准备

当前服务器:Ubuntu 22.04.1 LTS

本文是基于Docker容器,所以先在Docker安装Nginx(Nginx安装

思路

首先Nginx会产生日志文件,GoAccess就是利用这个日志文件的信息来分析、统计HTTP信息,然后会生成一个可视化报表,我们会将这个报表替换掉Nginx的index.html欢迎页面,从而直接展示可视化报表,所以这里的Nginx要映射html文件到宿主机,同时Goaccess的输出报表的文件也映射到此目录下,且名称为index.html;

启动Nginx

docker run -d --name nginx -p 8801:80 -v /opt/nginx/html:/usr/share/nginx/html -v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/logs:/var/log/nginx -v /opt/nginx/conf/conf.d:/etc/nginx/conf.d nginx

首先我们会启动Nginx,同时做好卷映射,Nginx相关文件都放在/opt/nginx/目录下;

/opt/nginx/html 对应容器中路径 /usr/share/nginx/html,目前是Nginx欢迎页,后面会用来存放日志分析后的可视化报表页面

/opt/nginx/conf/nginx.conf对应容器中路径 /etc/nginx/nginx.conf,是Nginx的配置文件

/opt/nginx/logs对应容器中路径/var/log/nginx,Nginx的日志文件,后面要传递给GoAccess做为分析日志源

image-20230223155614607

image-20230223155626903

image-20230223160044864

到这Nginx就启动起来了,记住这个index.html页面与access.log文件,后面会将index.html替换,而access.log会被用来做分析,下面安装配置GoAccess。

启动GoAccess

搜索

docker search GoAccess

image-20230223160443545

拉取

docker pull allinurl/goaccess

image-20230223160638422

配置

之前说过要映射配置文件,所以我们配置下GoAccess的日志格式,这个很重要,必须对应Nginx的日志的格式来匹配,可以看看官方文档。默认的Nginx日志格式如下:

image-20230223161539447

知道了Nginx的日志格式,那么我们需要将GoAccess的匹配参数与之对应,参考

  • %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 请求所花费的时间,单位秒
  • %^ 忽略这一字段

所以得出的配置文件为:

log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
date-format %d/%b/%Y
time-format %H:%M:%S

启动

docker run --restart=always -d -p 7890:7890 -v /opt/goaccess/data:/srv/data -v /opt/nginx/html:/srv/report -v /opt/nginx/logs:/srv/logs --name goaccess allinurl/goaccess --no-global-config --config-file=/srv/data/goaccess.conf --output=/srv/report/index.html --log-file=/srv/logs/access.log --real-time-html

然后启动GoAccess,也做好卷映射,相关文件在/opt/goaccess/下,

/opt/goaccess/data对应容器中路径/srv/data,是GoAccess的配置路径

/opt/nginx/html对应容器中路径/srv/report,用来存放可视化报表,由--output参数决定

/opt/nginx/logs对应容器中路径/srv/logs,这里是将Nginx的产生的日志文件路径映射到goaccess容器,对日志做分析

GoAccess参数--config-file设置为/srv/data/goaccess.conf,这里的/srv/data映射了宿主机/opt/goaccess/data;参数--output设置为/srv/report/index.html,这里的/opt/nginx/html又映射到nginx容易,所以nginx可以直接访问这个html页;

注意配置文件一定不能弄错,不然就会是这样,一直重启,这是因为还没有将配置文件设置好,配置文件我们映射了opt/goaccess/data,只需要在此目录下创建好goaccess.conf并配置格式即可;

image-20230223162601264

由于这里已经启动了,目录已经自动创建好了,没启动前还是乖乖创建目录、创建文件;这里只需要创建文件了;

image-20230223164531333

打开映射的ip地址查看是否配置成功,如果没启动的话大概率是配置文件弄错了,多试着改几次配置文件即可;

posted @ 2023-02-23 17:11  贰拾~  阅读(266)  评论(0编辑  收藏  举报