lookingglass

module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2025 License: MIT

README

LookingGlass

Docker Build Go Tests Go Version Docker License

一个基于 Golang + gRPC + Protobuf 实现的分布式网络诊断系统

功能特性 • 快速开始 • 文档 • 架构 • 贡献


✨ 功能特性

  • 🌐 分布式架构 - Master-Agent 模式,支持全球多节点部署
  • ⚡ 实时流式输出 - WebSocket + gRPC 实时传输命令执行结果
  • 🔐 安全认证 - 支持 API Key 和 IP 白名单双重认证
  • 🎯 并发控制 - 全局和单 Agent 两级并发限制
  • 📊 Web 界面 - 现代化单页面应用,无需安装任何工具
  • 🐳 容器化 - 完整的 Docker 支持,一键部署
  • 🔧 灵活任务系统 - 基于配置的任务管理,无需修改代码即可添加新工具
  • 🎨 自定义显示 - 支持自定义任务显示名称,多语言友好
  • 🚀 自动 IP 检测 - Agent 启动时自动检测公网 IP,无需手动配置
  • 🛠️ 智能参数控制 - 根据任务类型自动显示/隐藏参数输入框

🎯 使用场景

  • 多地网络质量监测 - 从全球不同位置测试服务可达性
  • CDN 节点选择 - 测试不同 CDN 节点的延迟和路由
  • 网络故障排查 - 快速定位网络问题和路由异常
  • 服务质量监控 - 监控关键服务的网络连通性

🚀 快速开始

方式一:自动安装脚本(推荐 - 生产环境)

使用自动化脚本部署,无需 Docker,自动生成配置:

# 1. 克隆仓库并构建
git clone https://github.com/lureiny/lookingglass.git
cd lookingglass
make build

# 2. 安装 Master(自动生成 API Key 和配置)
sudo ./scripts/install.sh master

# 3. 安装 Agent(在同一台或其他机器)
sudo ./scripts/install.sh agent

# 4. 查看状态
./scripts/manage.sh status

# 5. 访问 Web 界面
open http://localhost:8080

特点:

  • ✅ 自动生成随机 API Key
  • ✅ 自动检测公网 IP
  • ✅ 使用 Supervisor 管理进程,自动重启
  • ✅ 一键部署,无需手动配置

详见 脚本部署指南。

方式二:Docker 部署(推荐 - 测试环境)
# 1. 克隆仓库
git clone https://github.com/lureiny/lookingglass.git
cd lookingglass

# 2. 准备配置文件
cp master/config.yaml.example master/config.yaml
cp agent/config.yaml.example agent/config.yaml

# 3. 修改配置中的 API Key(重要!)
# 编辑 master/config.yaml 和 agent/config.yaml,修改 api_key

# 4. 启动服务
make docker-build
make docker-up

# 5. 访问 Web 界面
open http://localhost:8080
方式三:手动部署
# 1. 安装依赖
make deps

# 2. 构建
make build

# 3. 配置
cp master/config.yaml.example master/config.yaml
cp agent/config.yaml.example agent/config.yaml
# 编辑配置文件...

# 4. 运行 Master
./bin/master -config master/config.yaml

# 5. 运行 Agent(在另一个终端)
./bin/agent -config agent/config.yaml

完整部署文档请参阅 部署指南。

📚 文档

部署相关
配置和开发
管理和运维

🏗️ 架构

┌─────────────────┐
│   浏览器/前端    │ ← WebSocket (Protobuf 二进制)
└────────┬────────┘
         │
┌────────▼────────┐
│  Master Server  │ ← gRPC 双向流
│                 │
│  - Agent 管理   │
│  - 任务调度     │
│  - 并发控制     │
│  - 认证授权     │
└────────┬────────┘
         │ gRPC Stream
         │
    ┌────┴─────┬───────────┐
    │          │           │
┌───▼───┐  ┌───▼───┐  ┌───▼───┐
│Agent 1│  │Agent 2│  │Agent 3│
│美国西 │  │香港   │  │德国   │
└───────┘  └───────┘  └───────┘
核心特性
  • Stream 架构: Agent 主动连接 Master,通过单一双向 gRPC 流通信
  • NAT 穿透: Agent 无需公网 IP,可部署在任何网络环境
  • 自动重连: Agent 断线自动重连,支持指数退避
  • 零端口: Agent 不监听任何端口,安全性更高
  • 配置驱动: 通过配置文件添加任务,无需修改代码
  • 任务元数据: 支持自定义显示名称和参数控制

🛠️ 技术栈

  • 后端: Go 1.21+, gRPC, Protobuf
  • 前端: 原生 JavaScript, WebSocket, Protobuf.js
  • 容器: Docker, Docker Compose
  • 日志: Zap (结构化日志)
  • 诊断工具: ping, mtr, nexttrace

📦 打包和发布

# 打包 Master
make package-master

# 打包 Agent
make package-agent

# 打包所有
make package-all

生成的压缩包位于 dist/ 目录。

🤖 AI 辅助开发

本项目使用 Claude Code 进行 AI 辅助开发。项目包含:

  • CLAUDE.md - 给 AI 的项目说明文档,包含架构、设计模式、开发规范等
  • 作为 AI + 人工协作的示例项目

🔒 安全建议

  • ✅ 修改默认 API Key: 使用强随机密钥(32+ 字符)
  • ✅ 启用 IP 白名单: 生产环境建议启用
  • ✅ 使用 TLS: 公网部署建议启用 gRPC TLS
  • ✅ 定期更新: 及时更新依赖和镜像
  • ✅ 最小权限: 使用专用用户运行服务

🤝 贡献

欢迎贡献代码、报告问题或提出改进建议!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

详见 贡献指南(如果有)。

📝 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件。

🙏 致谢

📧 联系方式


Made with ❤️ and 🤖 (Claude Code)

Directories

Path Synopsis
cli
cmd
ws
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL