第十二讲:用GoAccess实现可视化并实时监控access日志


  access日志记录了Nginx非常重要的信息,我们可以使用Nginx来分析定位问题;也可以用它来分析用户的运行数据;但是如果想要实时分析access.log相对比较困难;有一款工具叫GoAccess,它可以以图像化的方式通过WebSoxket协议实时的把access.log的变迁反应到浏览器中方便我们分析问题;接下来我们来演示如何使用GoAccess工具来分析Nginx的access.log的日志中;

GoAccess的站点:https://goaccess.io

 

 我们可以看到它以一种非常好的图形化的方式显示给我们,现在我们先去看下我们原先的静态资源Web的access.log是一种什么样的格式?

我们没有修改nginx 默认的access.log的格式如下:

 

 GoAccess工具给我们提供了一个非常方便的日志格式用法

打开如下页面:

 

 当我们的access.log没有发生任何配置变化的时候,我们可以使用如下

--log-format=COMBINED

  也就是说nginx的access.log非常的灵活,我们可以自己添加各种不同的各模块的内置变量加入到access.log中;所以当我们修改了access.log的格式的时候,我们需要在--log-format=COMBINED中重新定义我们添加的格式;
在这个例子中,我们没有添加任何的access.log的配置,那么GoAccess是怎么使用的尼?
它实际上会去使用goaccess access.log -o report.html --log-format=COMBINED 中-o这个参数,生成一个新的html文件;把当前我们access.log日志中的内容以html图表的形式展示出来;那么当access.log变迁的时候尼?
GoAccess会新起一个websocket进程通过端口的形式把新的access.log形式推送到我们的客户端;

其中access.log要与自己定义的名字相对应
比如我这里配置文件中定义的为geek.access.log
  接下来我们还要在上游服务器的nginx.conf中添加一个location,每当我们访问/report.html的时候;我们需要用alias把它重定向到代理服务器的report.html中;

 

 

 

反向代理服务器中执行命令:
goaccess access.log -o ../html/report.html --real-time-html --time-format='%H:%M:%S'--date-format='%d/%b/%Y' --log-format=COMBINED

 默认goaccess在开启实时real-time-html后会监听端口7890的websocket,如果服务器不允许请求7890端口,你就看不到那个页面是实时更新的——你会发现访问的页面最后更新时间始终不变。这一点人很多忽略了,很多人以为是哪个生成html静态文件是实时更新的,其实根本不是,那个文件本身一旦生成就不动了,真正更新的实时内容是从websocket过来的

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM