GoAccess将WebSocket服务器设置为侦听端口7890和localhost

时间:2016-08-02 01:25:52

标签: nginx goaccess

我正在尝试运行GoAccess示例:

# goaccess -f access.log -o report.html --real-time-html

还有

Parsing... [41] [0/s]

或终端没有输出。我等了很久然后按CTRL + C:

^CSIGINT caught!
Stopping WebSocket server...

也许我错过了一步:

“输出HTML报告并将WebSocket服务器设置为侦听端口7890和localhost。”

my.ip.address.here:7890处的“连接重置”。

我猜测nginx不参与其中,因为它的日志只显示对其他网页的调用。

是否还有其他我可能想要查看的配置或日志?

更新:

更清楚一点,并且已经走到了这一步:

$ sudo goaccess -f /var/log/nginx/access.log.1 -o /usr/share/nginx/www/report.html \\
--real-time-html --ws-url=domain.com
Parsing... [84] [0/s]

我可以:

telnet domain.com 7890
Trying 45.55.xxx.xxx...
Connected to domain.com.
Escape character is '^]'.

在浏览器中:domain.com:7890/report.html返回连接重置。

有人会澄清这条道路应该代表什么:

/usr/share/nginx/www/report.html

report.html是否应该存在并且路径是否需要到服务器系统中的特定位置?

4 个答案:

答案 0 :(得分:2)

从GoAccess网站引用:

  

生成实时HTML报告的过程非常类似于   创建静态报告的过程。

     

只需生成静态报告并将输出html文件放在下面   您的Web服务器www公用文件夹。你需要添加几个   额外的实时标志。需要使用--real-time-html。

# goaccess -f access.log -o /usr/share/nginx/www/rt.goaccess.io/report.html --real-time-html --ws-url=host 
  

在浏览器中打开生成的报告后,报告将尝试与主机建立WebSocket连接   由--ws-url =指定。请注意,主机应指向   运行GoAccess的位置和解析日志。另外,请确保   host是一个有效的主机,不应包含http。

     

如果您不使用--ws-url,它将尝试建立WebSocket   连接到localhost,这意味着GoAccess应该正在运行   在本地计算机上(运行浏览器的同一台计算机)

在手册页中,默认情况下GoAccess似乎在端口7890上运行。如它所述,您可能希望指定--ws-url来指定GoAccess WebSocket服务器的位置,除非您的访问日志位于本地计算机上。

答案 1 :(得分:2)

我在使实时报告工作时遇到了一些问题,并最终发现了为什么他们不为我工作。这可能/可能不适用于您。

我在我的网站目录中生成实时报告,该目录通过SSL运行。不幸的是,Goaccess实时报告根本不适用于SSL。

我解决这个问题的方法是设置一个新域goaccess.mydomain.com并将其设置为在Nginx上的port80上运行。然后用.htpasswd文件保护/ location,然后我将实时报告生成到新网站的文件夹中。

静态报告通过SSL 100%工作,而不是实时。

所以我现在每天使用Cron做的是为我想要监控的网站生成实时报告。

goaccess -f /var/log/nginx/site1-access.log -a -o /var/www/goaccess.mydomain.com/site1.html
goaccess -f /var/log/nginx/site2-access.log -a -o /var/www/goaccess.mydomain.com/site2.html

然后,当我想要某个网站上的实时报告时,我就跑了

goaccess -f /var/log/nginx/site1-access.log -a -o /var/www/goaccess.mydomain.com/site.html.html --real-time-html --ws-url=goaccess.mydomain.com

我已经让他们在他们的文档中记下了https问题,因为这让我在圈子里玩了很长时间。

答案 2 :(得分:1)

对于 ssl,将这些参数添加到命令中:

--ssl-cert=<cert.crt> and --ssl-key=<priv.key>.

如果仍然卡住端口有时需要打开

iptables -A INPUT -i eth0 -p tcp --destination-port 7890 -j ACCEPT

我还注意到,它需要目标输出文件存在于指定的路径中,然后才会写入文件。出于某种原因,它永远不会创建它。

答案 3 :(得分:0)

要通过TLS / SSL连接输出实时数据,您需要使用--ssl-cert=<cert.crt>--ssl-key=<priv.key>

为我工作:)