0

我需要使用 --real-time-html 选项运行多个 goaccess 进程来分析多个日志。我的命令是:

/usr/bin/goaccess --real-time-html -o /data/html/log1/index.html -f log/log1.log --port=7890
/usr/bin/goaccess --real-time-html -o /data/html/log2/index.html -f log/log2.log --port=7891
...

当只有 1 个进程在运行时,一切正常,并且我可以在 Chrome 上看到 websocket 的数据帧,每个数据帧通常长度相同;

但是当 2 个或更多进程正在运行时,发生了 2 件事:

  1. 在 goaccess 进程正在运行的终端上,“SIGPIPE 已捕获!” 连续出来;
  2. 在网页上,仪表板不连续地显示错误数据,我注意到浏览器接收到的 websocket 数据帧的长度有很大不同(这意味着网页正在从其他 goaccess 进程接收不同的 websocket 数据帧),当数据帧长度与仅运行1个goaccess进程时的数据长度相似,网页显示的数据是正确的,当数据帧长度不同时,数据是错误的。

似乎即使我使用“--port”选项运行 goaccess 进程来为每个 WebSocket 进程指定不同的端口,多个 websocket 服务仍然混在一起。

4

1 回答 1

0

要运行多个实例,您需要确保以下内容:

  1. 在不同的端口上运行每个实例--port
  2. 不同的管道(FIFO)--fifo-in=/path/in.1 --fifo-out=/path/out.1
  3. (可选)如果您使用的是磁盘存储,那么您将需要不同的 DB 文件存储路径--db-path=/path/instance1/

例子

goaccess -f /prod/access.log -o /var/www/html/prod.html --real-time-html --ws-url=192.168.1.2 --port=7890 --fifo-in=/tmp/prod.in --fifo-out=/tmp/prod.out

goaccess -f /dev/access.log -o /var/www/html/dev.html --real-time-html --ws-url=192.168.1.2 --port=7891 --fifo-in=/tmp/dev.in --fifo-out=/tmp/dev.out

资源

于 2019-05-15T18:28:10.050 回答