1

我正在尝试运行一个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

4 回答 4

3

引用 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 

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

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

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

于 2016-08-02T12:02:48.013 回答
2

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

我正在通过 SSL 运行的网站目录中生成实时报告。不幸的是,Goaccess 实时报告根本无法通过 SSL 工作。

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

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

所以我现在每天使用 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 问题,因为这让我绕了好久。

于 2016-08-11T10:06:15.363 回答
1

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

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

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

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

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

于 2021-01-16T09:46:09.210 回答
0

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

为我工作:)

于 2019-12-07T09:46:53.953 回答