kahluna-systems/Pulsar
GitHub: kahluna-systems/Pulsar
一个可部署在任意网络位置的分布式网络诊断探针,集成测速、路径分析、带宽测试等工具并提供带认证与客户管理的 Web 界面。
Stars: 0 | Forks: 0
# KahLuna Pulsar
**KahLuna Pulsar** 是一个分布式网络诊断套件——作为一个可部署的测试点,无论您将其部署在何处(云端、数据中心或网络边缘),它都能测量连接性、路径、延迟、丢包率和吞吐量。
它是 **KahLuna Nexus** 套件的一部分:Pulsar 可以作为专用探针**独立**运行,也可以作为内置诊断引擎**嵌入**到 KahLuna WARP Gateway 中。
## 功能
### 仪表板
- **概览仪表板** — 测试计数、成功率、节点正常运行时间、按类型划分的测试细分、近期活动
- 可折叠的侧边导航栏,经过身份验证的单页应用
### 诊断工具
- **HTTP Speed Test** - Ookla 风格的测速工具,带有面向客户的门户
- **Traceroute** - 支持 ICMP/UDP/TCP 选项的路径分析
- **MTR** - 实时流式 traceroute + ping,带有丢包统计信息
- **DNS Lookup** - 查询任何记录类型,检查公共 DNS 间的传播情况
- **TCP Port Check** - 测试端口连接性及连接耗时
- **SSL Certificate Check** - 验证证书,检查过期时间
- **Continuous Ping** - 长时间运行的 ping 监控,带有抖动追踪
- **iPerf3** - 原始带宽测试,支持客户端或服务器模式,并内置**远程客户端指南**:提供针对各操作系统的安装指引、预填节点地址的直接复制命令,以及**一键粘贴的 Windows 设置**,可直接从节点 (`/downloads/iperf3-win64.zip`) 下载版本固定且经过校验和验证的 iperf3 客户端
- **Packet Capture** - 集成 tcpdump 用于流量分析
### 身份验证与管理
- **首次运行设置** — 无默认凭证;首次访问时即创建管理员账户
- 基于 JWT 的登录;角色分为:`viewer`、`engineer`、`admin`
- **管理面板** — 用户管理、密码修改、节点设置(名称、位置、功能开关、限制)均可在 UI 中编辑
### 客户与归属
- **组织注册表**(客户和合作伙伴),包含承载已注册测试端点的 **circuits**
- **"Run tests for:"** 归属功能 — 每个测试都可以标记上组织/circuit;选择 circuit 时会自动预填其端点作为目标
- 测试历史记录可按组织过滤;支持搜索的客户主从视图
### 客户测试
- 生成有时限且可追踪的测试 token(可关联到组织)
- 面向客户的测速门户(无需软件)
- 结果自动与客户/circuit/组织关联
- 记录所有测试以用于历史分析
### 架构
- **Standalone Mode**:使用本地 SQLite 的单节点部署
- **Hub Mode**:带有多个边缘节点的中心 PostgreSQL 数据库(计划中 — 同步字段已就绪)
- Docker 优先部署,采用主机网络以提供真实的网络观测点
## 快速开始
### Docker(推荐)
```
git clone https://github.com/kahluna-systems/Pulsar.git pulsar
cd pulsar
docker compose up -d --build
```
然后打开 `http://:8000` — 首次访问会提示您**创建管理员账户**。
注意事项:
- compose 文件使用 `network_mode: host`,以便诊断工具能从主机的真实网络位置进行测量;应用直接绑定 `0.0.0.0:8000`。
- 数据(SQLite 数据库 + 生成的节点配置,包括 token 签名密钥)会在 `pulsar_node_data` 卷中持久化,跨重建保留。
- 特权工具(ping/traceroute/MTR/tcpdump)通过内置在镜像中的文件权限运行 — 应用以非 root 用户身份运行,无需 sudo。
### Python(开发环境)
```
git clone https://github.com/kahluna-systems/Pulsar.git pulsar
cd pulsar
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
# 运行 node(从 repo 根目录运行,以便 package 导入能够正确解析)
export PYTHONPATH=$(pwd) # Windows PowerShell: $env:PYTHONPATH = $PWD
python -m uvicorn node.main:app --reload --host 0.0.0.0 --port 8000
```
要求 **Python 3.12+**。
## 访问
- **工程师仪表板**:`http://:8000`(启用身份验证后需要登录)
- **客户测速**:`http://:8000/speedtest`(公开)
- **API 文档**:`http://:8000/docs`
## 配置
配置层级,优先级从高到低依次为:**环境变量 → `node_config.json` → 默认值**。首次运行时,节点会生成并持久化其身份标识(`node_id`、`secret_key`)。
常见的环境变量(参见 `docker-compose.yml`):
| 变量 | 用途 |
|----------|---------|
| `NODE_ID` / `NODE_NAME` / `NODE_LOCATION` | UI 中显示的节点标识 |
| `REQUIRE_AUTH` | 启用登录 + 首次运行管理员设置(推荐设为 `true`) |
| `DATABASE_PATH` | SQLite 路径(指向持久化卷) |
| `NODE_CONFIG` | 生成的配置文件存放位置 |
| `HUB_URL` / `HUB_API_KEY` | 为 hub 模式预留 |
每次启动时,通过环境变量设置的字段都会覆盖配置文件;管理面板会将此类字段标记为环境变量固定。功能开关和限制可以在 **Admin** 标签页中编辑。
## 端口
| 端口 | 用途 |
|------|-----|
| 8000/tcp | 仪表板、API、客户测速 |
| 5201/tcp+udp | iPerf3 服务器模式(如果使用,请在您的云端/主机防火墙中开放) |
## 安全说明
- 身份验证在启用时**没有默认凭证** — 第一个访问者会创建管理员账户(在公开部署时请立即执行此操作)
- 客户 token 具有时限和使用次数限制
- `node_config.json` 包含 token 签名密钥 — 它已被 gitignore 忽略,且必须对每次部署保持独立
- 在生产环境中使用 HTTPS(推荐使用反向代理)
## 许可证
KahLuna 生态系统的一部分。保留所有权利。
标签:Awesome, UDP扫描, 分布式测量, 后端开发, 情报分析, 测试用例, 系统管理, 网络诊断, 请求拦截, 运维监控, 逆向工具