墨鱼探针为主从模式,主为墨鱼manager
,从为墨鱼page
。墨鱼manager
可获取展示多个墨鱼page的简要状态信息,登录后可点击title进入墨鱼page页面。墨鱼page
独立部署,可独立使用。
技术栈:go(fiber) + vue2 + element-ui + nes.css。
最终将前端和后端全部编译到单个二进制程序中,分为moyu-manager
和moyu-page
2个二进制程序。
项目地址:https://github.com/liuquanhao/moyu
墨鱼探针v2.0展示
墨鱼page
墨鱼manager
未登录主页:
已登录主页:
登录页:
添加墨鱼page页面:
直接使用release文件
moyu-page
- 直接运行
PORT=8081 ./moyu-page
moyu-manager
-
初始化数据库(第一次运行)
cat init.sql | sqlite3 db/moyu_manager.db
-
目录结构
├── bin │ └── moyu-manager └── db └── moyu_manager.db
-
运行
PORT=8080 ./bin/moyu-manager
-
添加墨鱼page。如本项目在线demo:
https://moyu-manager.linux.plus/
,直接复制墨鱼page主页https://moyu-page.linux.plus/
到添加墨鱼page页面
即可。在墨鱼manager中,如果已登录,可以点击title访问墨鱼page。
编译使用
依赖:
make: ^4.0
nodejs: ^18.0
go: ^1.19.0
sqlite: ^3.0
一键编译
- 进入项目目录。
cd moyu
- 一键编译。
make
- 运行墨鱼manager和墨鱼page。
PORT=8081 target/bin/moyu-page PORT=8080 target/bin/moyu-manager
- (可选)清理项目,删除编译的墨鱼探针二进制等文件。
make clean
手动编译
编译墨鱼page
- 进入项目目录。
cd moyu/page
- 编译前端资源。
cd frontend npm run build
- 编译后端项目。
cd ../backend go build -o moyu-page --ldflags="-w -s" .
编译墨鱼manager
- 进入项目目录。
cd moyu/manager
- 编译前端资源。
cd frontend npm run build
- 编译后端项目。
cd ../backend go build -o moyu-manager --ldflags="-w -s" .
Docker运行
前提说明
墨鱼page
墨鱼page直接运行docker无法获取宿主机信息,需要添加一些运行参数:
- 由于需要获取宿主机网络接口流量,所以需要以host方式运行docker。
- 获取磁盘分区信息需要
/proc/N/mountinfo
,所以需要将宿主机的某个进程的文件挂载到docker中,然后设置HOST_PROC_MOUNTINFO
并运行项目。 - 项目
PORT
变量默认8081
,可自行指定其他端口。
墨鱼manager
- 墨鱼manager依赖
sqlite3
,需要使用moyu/manager/backend/database/init.sql
创建和初始化用户表数据。 - 请使用一下目录格式存放
moyu-manager
程序和数据库。root@liuxu:/tmp/moyu/manager# tree . ├── bin │ └── moyu-manager └── db └── moyu_manager.db
容器运行
墨鱼page
- 编译page镜像。
docker build -t moyu-page -f PageDockerfile .
- 单磁盘挂载情况下运行,其中
--network=host
指定使用宿主机网络,--mount
挂载dockerd
的进程mountinfo
文件到docker中,并设置HOST_PROC_MOUNTINFO
为挂载的文件路径。docker run --network=host -e PORT=8081 --mount type=bind,source="/proc/$(pidof dockerd)/mountinfo",target=/root/mountinfo -e HOST_PROC_MOUNTINFO=/root/mountinfo moyu-page
- (可选)如果还有其他分区,如我的
/boot/efi
挂载到了独立分区,想获取到这个分区信息,需要把这个目录挂载到docker中。docker run --network=host -e PORT=8081 -v /boot/efi:/boot/efi:ro --mount type=bind,source="/proc/$(pidof dockerd)/mountinfo",target=/root/mountinfo -e HOST_PROC_MOUNTINFO=/root/mountinfo moyu-page
墨鱼manager
- 编译manager镜像。
docker build -t moyu-manager -f ManagerDockerfile .
- 挂载数据库运行。
docker run -e PORT=8080 -v ./db:/moyu-manager/db moyu-manager
FAQ
-
我使用nginx做反代,设置了
location /moyu{}
该怎么办答:运行墨鱼page或墨鱼manager时,添加
BASEURL=/moyu
环境变量运行。 -
运行墨鱼manager,程序报找不到
moyu_manager.db
怎么办答:确认自己的目录结构是不是如下:
├── bin │ └── moyu-manager └── db └── moyu_manager.db
然后进入
bin/
目录下运行moyu-manager
-
我想修改账号或者token
答:运行sqlite3,通过sql修改。
sqlite3 moyu_manager.db sqlite> UPDATE users SET token='token123' WHERE user='user'
-
我想创建新的账户和token 答:运行sqlite3,通过sql添加。
sqlite3 moyu_manager.db sqlite> INSERT INTO users(user, token) VALUES('user1', 'token1');