GoAccess Nginx 转发 | 实时查看nginx日志信息

Nginx | 使用日志分析工具GoAccess实时查看Nginx日志信息

引用

https://goaccess.io/
https://github.com/allinurl/goaccess/issues/1328
https://github.com/allinurl/goaccess
https://www.jianshu.com/p/b134995ae16c

说明

在搜索nginx log分析工具时,看到了GoAccess, 开源免费不仅有终端界面,也有Web界面,
本文主要讲解和记录一下,实时Web页面的更新及Nginx配置。

GoAccess 安装

官网已经介绍了几种方式,这里就不再介绍了, 我的ubuntu, 直接apt install goaccess安装完成了,
查看GoAccess 版本

root@ubuntu:~# goaccess --version
GoAccess - 1.3.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

Build configure arguments:
  --enable-geoip=mmdb
  --enable-tcb=btree
root@ubuntu:~# 

GoAccess 实时HTML输出

官网已经提到,

goaccess access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html

但是说明有点不够明确,report.html可以实时更新数据,需要与GoAccess Web Socket Server交互。默认端口:7890
首先假定我们已经有了默认WEB服务,可以正常浏览report.html这个页面,比如https://example.com/report.html
但它并没有实时更新,因为我的服务器防火墙默认并没有开起这个端口,所以它访问不到。

假如不开启7890这个端口,如何才能查看到实时信息呢?是否可以通过Nginx转发?

GoAccess 与 Nginx 配置

  • report.html
    --ws-url=<host> 是指生成的report.html通过指定的和GoAccess交互来实时更新数据。
    report.html搜索"Port"可以看到
var connection = {"url": "example.com","port": 7890}
  • Nginx转发7890端口
location /goaccess {
    proxy_pass http://127.0.0.1:7890;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
  • 手动修改report.thml connection
    将其修改为 url:example.com/goaccess, port:443, 我的nginx使用的433.
var connection = {"url": "example.com/goaccess","port": 443}

重启nginx ,再次刷新report.html页面我们就可以看到数据的更新了,在开发者工具里面也可以看到WS请求

其它

GoAccess conf

# example goaccess conf file for gopanel
# edit site1 values and change title to suit
html-report-title Nginx Access Log Report

# the logs you want to process
log-format COMBINED
log-file /var/log/nginx/access.log

# the location you will host from
output-format /var/www/html/report.html
ws-url wss://example.com/goaccess

geoip-database /xxx/GeoLite2-City.mmdb

# other options as you prefer
#ignore-crawlers true
#ignore-referer example.com

启动命令

/usr/bin/goaccess -a --real-time-html -p my.conf --deamon

需要地理位置功能,可以先去下个geoip数据包,
https://github.com/P3TERX/GeoLite.mmdb

--geoip-database=/xxx/GeoLite2-City.mmdb

评论

还没有人评论,抢个沙发吧...

Viagle Blog

欢迎来到我的个人博客网站