GoAccess可视化实时监控access.log日志
原理:使用goaccess命令goaccess会读取我们指定要分析的日志文件,生成一个类似报表的HTML文件,我们可以在nginx中给该html文件开一个http服务,这样我们就可以在浏览器访问这个html文件;同时goaccess会开启一个wss服务(该服务默认监听7890端口),当访问html报表时,该html的js代码中的wss客户端会请求goaccess的wss服务,goaccess接到请求后会再次读取日志文件,更新html报表。
通过以上的方式来实时更新监控access.log的情况。
下面是实现过程:
yum -y install goaccess
goaccess /var/log/httpd/access_log -o /var/www/report.html --real-time-html --log-format=COMBINED --daemonize
-o /var/www/report.html # 指定生成报表的位置
--real-time-html # 指定实时更新(只要在浏览器一刷新html报表就会更新)
--daemonize # 后台运行
# 在nginx给报表文件开一个http服务:
server {
listen 8088;
server_name localhost;
access_log logs/access.log main;
location /report.html {
alias /var/www/report.html;
}
}
我遇到的一个问题:
由于我的服务器开启了防火墙,虽然打开了8088的防火墙,但是没有打开7890的防火墙,所以刷新时html发起的wss请求被屏蔽导致刷新后也没有实时更新监控情况。这里发起的wss请求算是外部请求而不是本服务器请求本服务器,所以会被屏蔽。打开7890端口的防火墙即可。
goaccess可以分析Apache和nginx的日志。
但是如果日志格式更改了,就需要在goaccess的配置文件中做出相应格式的更改,改的是--log-format这个参数。具体可以参考网上资料。