用GoAccess可视化监控npm日志

什么是 GoAccess?

GoAccess 是一个开源实时 Web 日志分析器和交互式查看器,可在 *nix 系统的终端中或通过浏览器运行。它为需要动态可视化服务器报告的系统管理员提供快速且有价值的 HTTP 统计信息。

什么是 GoAccess for Nginx Proxy Manager Logs?

GoAccess for Nginx Proxy Manager 是专用于 Nginx Nginx Proxy Manager 日志分析的 GoAccess 的 Docker 镜像。

准备

本来老苏是打算用 GoAccess 来分析 npm 的日志,但是没搞定。后来发现了 GoAccess for Nginx Proxy Manager Logs,优点是基本上开箱即用,不用研究参数和命令,缺点就是只能用于 npm,如果你还需要分析其他软件的日志,那就只能去啃 GoAccess 的文档了

关于 npm 的安装,可以参考最近的文章

文章传送门: 用自定义域名访问Tailscale节点

所以 npm 日志的路径是 /volume1/docker/npm/data/logs

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 xavierh ,选择第一个 goaccess-for-nginxproxymanager,版本选择 latest。

本文写作时, latest 版本对应为 v1.1.19;

卷

文件夹 装载路径 说明
docker/npm/data/logs /opt/log 挂载 npm 的日志目录

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
7880 7880

环境

可变 值
PUID 设为 1000
PGID 设为 1000
TZ 时区,设置为 Asia/Shanghai
SKIP_ARCHIVED_LOGS 是否跳过存档日志,设为 False 不跳过
DEBUG 设为 False
EXCLUDE_IPS 排除的 IP 为 127.0.0.1
LOG_TYPE 设置为读取 NPM 日志
LANG 语言本地化,设置为 zh_CN.UTF-8
LANGUAGE 语言本地化,设置为 zh_CN.UTF-8

更多的环境变量可以参考官方的文档:https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager#github-repo

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 运行容器
docker run -d \
--restart unless-stopped \
--name goaccess \
-p 7880:7880 \
-v /volume1/docker/npm/data/logs:/opt/log \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Asia/Shanghai \
-e SKIP_ARCHIVED_LOGS=False \
-e DEBUG=False \
-e EXCLUDE_IPS=127.0.0.1 \
-e LOG_TYPE=NPM \
-e LANG=zh_CN.UTF-8 \
-e LANGUAGE=zh_CN.UTF-8 \
xavierh/goaccess-for-nginxproxymanager:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: '3'

services:
goaccess:
image: xavierh/goaccess-for-nginxproxymanager:latest
container_name: goaccess
restart: always
ports:
- 7880:7880
volumes:
- /volume1/docker/npm/data/logs:/opt/log
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
- SKIP_ARCHIVED_LOGS=False
- DEBUG=False
- EXCLUDE_IPS=127.0.0.1
- LOG_TYPE=NPM
- LANG=zh_CN.UTF-8
- LANGUAGE=zh_CN.UTF-8

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 goaccess 和 子目录
mkdir -p /volume1/docker/goaccess

# 进入 goaccess 目录
cd /volume1/docker/goaccess

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:7880 就能看到主界面

界面很漂亮,虽然很多指标并不清楚能用来干嘛,不过我觉得网管应该是懂的

参考文档

allinurl/goaccess: GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
地址:https://github.com/allinurl/goaccess

GoAccess - Visual Web Log Analyzer
地址:https://goaccess.io/

xavier-hernandez/goaccess-for-nginxproxymanager: GoAccess Docker Image for Nginx Proxy Manager and more…
地址:https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager