这是一篇面向开发者社区的宣发文章(可发 V2EX / Linux DO / Reddit r/selfhosted / Hacker News / 掘金 / SegmentFault)。
角度:不讲战略、不谈商业化,只讲"它解决什么问题、和已有工具比差在哪、为什么值得一试"。
Repo: https://github.com/Mi-Bee-Studio/MiBeeSteward · License: AGPL-3.0 · 单二进制,CGO-free,SCP 上去就能跑。
一、先抛痛点:你真的知道自己网络里有什么吗?
如果你是.homelab 玩家、中小企业 IT、或者实验室/机房管理员,大概率被这些问题困扰过:
- “路由器后台只能看到 DHCP 列表,MAC 对不上是哪个设备”
- “新接了台 IP 摄像头,但找不到它的 IP”
- “公司机房一台机器掉线了,但没人记得它的型号、系统、谁负责”
- “想做个资产台账,但 LibreNMS / Zabbix 太重了,Snipe-IT 又得手动录入”
- “nmap 扫一遍倒是能出来结果,但没有 UI、不能持续追踪、更认不出品牌”
这些问题的共性是:你知道网络里有东西,但不知道它是什么、属于谁、什么时候来的、什么时候走的。
MiBee Steward 就是来解决这件事的。一句话定位:
设备/网络层的自动发现 + 身份识别 + 登记(CMDB-lite)。
它扫一遍你的网络,自动告诉你"这台是海康的摄像头、那台是华为的交换机、那台是树莓派"——然后把结果登记成一个持续保鲜的资产账本,带 UI、带 Prometheus 出口、带变化检测。
二、它不是什么(重要,避免错位预期)
为了不浪费你的时间,先把它不是的东西说清楚:
| 它不是 | 你应该用什么 |
|---|---|
| ❌ 监控告警系统 | Prometheus + Alertmanager |
| ❌ Dashboard/可视化平台 | Grafana |
| ❌ 状态页 | Uptime Kuma |
| ❌ 主机深度监控(CPU/内存/磁盘) | Netdata / node_exporter |
| ❌ 服务注册中心(L7 服务发现) | Consul / eureka |
它的活儿是"发现 + 认出 + 登记",这三件事之外的活儿,它主动让位给成熟工具,通过 /metrics 和 /sd 两个出口把数据吐给 Prometheus 生态。
这不是短板,是有意的边界——这样它才能专注把"资产画像"这一件事做好。
三、竞品对比:它站在哪个位置?
现有的工具可以分成四类,每一类都和 MiBee Steward 有重叠,但没有一个占据它的位置:
3.1 资产登记(CMDB)
代表:NetBox、Snipe-IT
- 共同点:都做"资产台账"
- 关键差异:NetBox / Snipe-IT 是手动录入的——你得自己填 IP、MAC、型号、归属。MiBee Steward 反过来:自动扫出来,然后认出品牌型号,登记进去
- NetBox / Snipe-IT 的强项:资产生命周期、采购/保修、IPAM、合规导出——这些 MiBee Steward 不做
3.2 服务发现(L7)
代表:Consul、eureka
- 共同点:都做"发现"
- 关键差异:Consul 发现的是服务实例(redis 在哪、mysql 在哪),应用自己注册上去;MiBee Steward 发现的是设备(这个 IP 是个什么物理/网络实体),被动扫描出来
- 层级不同:Consul 是 L7,MiBee Steward 是 L2-L4
3.3 扫描器
代表:nmap
- 共同点:都能扫
- 关键差异:nmap 给你一个命令行结果,扫完就完了——没 UI、不持续追踪、不认品牌、不登记台账。MiBee Steward 给你一个持续保鲜的资产库,带 Web UI、带历史、带变化检测
- MiBee Steward 没在 rewire nmap:扫描引擎是自研的 Go 实现(
scannerv2,5 层插件架构),CGO-free、可交叉编译
3.4 网络监控
代表:LibreNMS、Zabbix、Checkmk
- 共同点:都带一点自动发现
- 关键差异:这些是监控导向、SNMP-heavy、部署重——LibreNMS 要 MySQL + PHP + Redis,Zabbix 要 Server + Proxy + Agent + DB + Web。它们的目标是"持续监控指标并发告警",身份识别只是副产品。MiBee Steward 反过来:身份识别是主业,监控交给 Prometheus 生态
- 部署门槛:LibreNMS / Zabbix 动辄 500MB+ 镜像、10s+ 启动;MiBee Steward 是 ~20MB 单二进制、<1s 启动、SQLite 嵌入、零外部依赖
3.5 轻量自托管监控
代表:Uptime Kuma、Beszel、Netdata
- 常见误解:有人会把 MiBee Steward 和这些比。这是赛道错位——这些工具监控你已经知道的主机/服务;MiBee Steward 解决的是"你不知道网络里有什么"的问题
- 互补关系:MiBee Steward 发现 → Uptime Kuma / Netdata 监控。两者搭配反而更顺
3.6 定位矩阵一览
轻量 ←────────────────→ 企业级
| |
发现导向 nmap (CLI) LibreNMS / Zabbix
| |
| ★ MiBee Steward ★ |
| |
登记导向 Snipe-IT NetBox
| (手动录入) |
MiBee Steward 占据的格子:自动发现(nmap 级)+ 身份识别(指纹/分类)+ 登记/管理(CMDB-lite)+ 单二进制。这个组合目前没有别的工具占据。
四、它的核心差异化优势
① 自动身份识别(最大差异化)
不是只给你"这台开了 80 端口",而是告诉你**“这台是海康摄像头、那台是华为交换机、那台是 APC UPS”**。
识别引擎的输入包括:
- 协议指纹:SNMP sysObjectID / sysDesc、HTTP Server 头 / HTML body、RTSP Server、ONVIF 设备信息、TLS 证书、Prometheus / node_exporter metric、SSH/Telnet banner
- 数据驱动的规则库:识别规则是 YAML 数据(不是写死的 Go 代码),
configs/fingerprints/*.yaml,社区可贡献。加一个新厂商/型号 = 加一条 YAML,不用改代码
为什么这是护城河:抄一个 ONVIF+RTSP 分类器不难,但覆盖数百厂商 × 数千型号的指纹库是数月/数年的积累。
② 5 层插件化扫描引擎(scannerv2)
probe(探测) → classify(分类) → handler(处理) → store(持久化) → orchestrator(编排)
ICMP/TCP/SNMP/ banner/HTTP/ 心跳生成 + service_evidence/ gather→classify→
HTTP/RTSP/ONVIF/ RTSP/ONVIF/ 级联深采 + host_services/ dispatch+cascade
TLS/ARP/mDNS/ SNMP/camera/ TLS 证书链 host_tls_certs
WS-Discovery/ prometheus/ (https/ldaps/
LLDP/CDP/ rule_classifier smtps/... )
Bridge-MIB
加一个新协议 = 一个 Classifier + 一个 Handler。不需要改 orchestrator 或持久化层。
级联深采 是它的隐藏大招:扫到 HTTP → 探测 /metrics → 如果是 Prometheus → 级联探 node_exporter → 自动把硬件信息回填到这台设备。一次扫描自动滚雪球式地把设备画像越画越细。
③ 单二进制 + 零运行时依赖
scp mibee-steward user@host:/opt/ && ssh user@host '/opt/mibee-steward'
- CGO-free:SQLite 用
modernc.org/sqlite纯 Go 实现,不需要 C 编译器 - 交叉编译干净:
make build-all一条命令出 linux amd64 + arm64 - 前端嵌入:SvelteKit SPA 通过
go:embed all:dist打进二进制,跑起来就是带 UI 的 - 存储嵌入:SQLite WAL 模式,不需要外部数据库
对比一下:
| 工具 | 部署 | 镜像/二进制大小 | 启动时间 | 外部依赖 |
|---|---|---|---|---|
| MiBee Steward | 单二进制 | ~20MB | <1s | 0 |
| Uptime Kuma | Docker / Node | ~300MB+ | ~3s | Node.js |
| LibreNMS | Docker / LAMP | ~500MB+ | ~10s | MySQL + PHP + Redis |
| Zabbix | 多组件 | ~500MB+ | ~30s | MySQL/PG + Server + Agent + Web |
| NetBox | Docker / K8s | ~500MB+ | ~15s | PostgreSQL + Redis |
④ 分布式:多 LAN 跨网段发现
家里一个网、公司一个网、机房一个网?在每个网段丢一个轻量 agent,agent 扫本地 LAN,然后通过 HTTPS(pull 模型,agent 主动发起连接,可在 NAT 后)上报到 center。
- Center 汇聚成全局资产画像
- MAC 为主键:同一台设备在两个网段漫游(比如笔记本在公司和家里),仍是同一个资产,不会重复
- Agent 是独立二进制(
cmd/agent),也是 CGO-free,普通用户权限就能跑,不需要 sudo - 每个 agent 自带 anti-entropy 快路径(
X-Network-State-Hash):网络状态没变时 center 跳过逐设备处理,只刷新租约——稳态网络下几乎零开销
⑤ 变化检测(准实时的灵魂)
每次扫描自动 diff,自动发现:
- device_added:网络里来了新设备
- device_changed:已有设备的属性变了(型号、OS、开放端口)
- device_lost:设备消失了(带 grace period,避免扫描抖动误报)
提供两种消费方式:
GET /api/v1/changes:查询历史GET /changes/watch:SSE 实时流(未来集成 webhook / 第三方告警的接口)
⑥ 网络拓扑发现(L2 邻接)
不只是"列设备清单",还能告诉你**“谁插在哪个交换机的哪个口”**:
- LLDP / CDP:SNMP 读 LLDP-MIB + CDP-MIB(
cdpCacheTable),加 raw-frame LLDPDU 监听 - Bridge-MIB / Q-BRIDGE-MIB:
dot1qTpFdbPort做 VLAN-aware 的 MAC→端口映射 - STP-MIB:
dot1dStp推断根桥/桥角色 - IF-MIB:
ifName把 ifIndex 翻译成人能读的端口名(Gi1/0/24 这种)
合起来就是交换机视角的 L2 邻接图:谁插在哪个口、在哪个 VLAN、STP 角色是什么。
⑦ Prometheus 原生出口
/metrics:资产状态 gauge + 心跳计数器 + 响应时延 histogram/sd:HTTP Service Discovery,Prometheus 直接对接,自动把发现的资产注册进去
和 Alertmanager / Grafana 是共生关系,不是竞争关系。MiBee Steward 负责"持续产出准确的资产数据",告警/可视化由 Prometheus 生态接管。
⑧ TLS 证书盘点
对所有 TLS-wrapped 服务(HTTPS、LDAPS、SMTPS、IMAPS、POP3S、FTPS、IRCS、TelnetS)抓完整证书链(叶证书 + 所有中间 CA),记录 Subject / Issuer / SAN / 有效期 / 签名 / 公钥 / 指纹 + PEM,按设备按端口,带过期状态(valid / expiring / expired)和信任判定。证书快过期了自动能在 UI 上看到。
⑨ 安全开箱即用
JWT(cookie-first + Bearer fallback)+ RBAC(admin / user)+ TOTP 2FA + CSRF + 速率限制 + 完整审计日志。机器到机器场景还有独立的 agent bearer token 鉴权。
⑩ 国际化 + 暗色模式
中英双语(@inlang/paraglide-js),暗色/亮色主题自动跟随系统,响应式 UI 桌面/移动通用。
五、它适合谁?
| 场景 | 适配度 | 说明 |
|---|---|---|
| Homelab 玩家 | ⭐⭐⭐⭐⭐ | 单二进制扔到 NAS / 树莓派上,扫一遍家里所有设备,带 UI |
| 中小企业 IT | ⭐⭐⭐⭐⭐ | 替代手工 Excel 资产台账,自动发现 + 持续保鲜 |
| IoT / 摄像头舰队 | ⭐⭐⭐⭐⭐ | RTSP + ONVIF + Camera 三级分类器,专为 IP 摄像头场景优化 |
| 机房 / 实验室 | ⭐⭐⭐⭐ | 灵活的 per-device 探针配置 + 心跳保鲜 |
| 多分支机构 | ⭐⭐⭐⭐ | 分布式 agent,每个分支一个,center 统一画像 |
| 想替换 LibreNMS / Zabbix | ⭐⭐ | ❌ 赛道不同——你要的是监控告警,这是资产发现 |
| 想替换 NetBox | ⭐⭐ | ❌ 赛道不同——你要的是手动录入的 CMDB + IPAM,这是自动发现 |
| 想替换 Uptime Kuma | ⭐ | ❌ 完全不同——你要的是服务在线监控 + 状态页 |
六、5 分钟上手
单机模式(一台机器搞定)
# 拉代码
git clone https://github.com/Mi-Bee-Studio/MiBeeSteward.git
cd mibee-steward
# 构建前端 + Go 二进制
make build # 产出 bin/mibee-steward,已 CGO_ENABLED=0
# 丢到服务器
scp bin/mibee-steward user@your-server:/opt/mibee-steward/
scp configs/config.example.yaml user@your-server:/opt/mibee-steward/configs/config.yaml
# 起服务
ssh user@your-server
cd /opt/mibee-steward
./mibee-steward -config configs/config.yaml
浏览器打开 http://your-server:8080,登录后到 Scanner 页面扫一个子网,等几分钟就能看到带品牌型号的设备清单。
分布式模式(多网段)
# Center 侧:用 cmd/server 二进制(就是上面那个)
# Agent 侧:单独构建 cmd/agent
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/mibee-agent ./cmd/agent/
详细步骤见仓库 docs/en/distributed-guide.md。
七、和竞品的诚实对比表
只列 MiBee Steward 实际交付的能力,没交付的不吹。
| 能力 | MiBee Steward | nmap | NetBox | LibreNMS | Zabbix | Uptime Kuma | Consul |
|---|---|---|---|---|---|---|---|
| 自动发现(扫描) | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
| 身份识别(品牌/型号) | ✅ 自动 | ❌ | ✅ 手动 | ⚠️ 部分 | ⚠️ 模板 | ❌ | ❌ |
| 持续资产登记 | ✅ | ❌ | ✅ 手动 | ✅ | ✅ | ❌ | ✅(服务) |
| 单二进制零依赖 | ✅ | ✅ | ❌ | ❌ | ❌ | ⚠️ Node | ❌ |
| CGO-free / 交叉编译 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| 分布式(多网段) | ✅ | ❌ | ❌ | ✅ | ✅ Proxy | ❌ | ✅ |
| 变化检测(added/lost) | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ✅ |
| L2 拓扑(LLDP/CDP/Bridge-MIB) | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Prometheus 出口 | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
| 告警 / 状态页 | ❌(边界) | ❌ | ❌ | ✅ | ✅ | ✅ | ⚠️ |
| 主机深度监控 | ❌(边界) | ❌ | ❌ | ✅ | ✅ | ⚠️ | ❌ |
| 部署复杂度 | 极低 | 低 | 高 | 高 | 极高 | 低 | 中 |
一句话总结:
- 想要纯扫描命令行 → nmap
- 想要手动录入 CMDB + IPAM → NetBox
- 想要重监控告警体系 → Zabbix / LibreNMS
- 想要服务在线监控 + 状态页 → Uptime Kuma
- 想要L7 服务注册 → Consul
- 想要自动发现 + 自动认出 + 单二进制 + Prometheus 出口 → MiBee Steward
八、它在哪些方面还比不上竞品(诚实)
为了不让你踩坑,把这些目前不如竞品的地方说清楚:
- 没有告警系统 —— 这是有意的边界(让位给 Alertmanager)。如果你想要一站式"扫 + 告警",MiBee Steward 不是你的菜,你需要的是 LibreNMS / Zabbix
- 没有状态页 —— 同上,让位给 Uptime Kuma
- 没有 Dashboard / 可视化平台 —— 内置 ECharts 只是资产视图辅助,做不了 Grafana 那种自由探索
- 不做主机深度监控 —— CPU / 内存 / 磁盘这些指标它不采,留给 node_exporter / Netdata
- 指纹库还在建设期 —— 摄像头、网络设备覆盖较好,长尾厂商型号还在补。规则库是 YAML 数据,欢迎社区贡献
- 没有 LDAP / SAML SSO —— 目前是 JWT + TOTP 2FA,企业 SSO 在路上
- Center 单点 —— 目前 center 是单实例 + SQLite,主从 HA 在路线图上
如果你不能接受以上任何一点,MiBee Steward 现阶段不适合你。 它适合的是:接受这些边界、想用一套轻量工具链(MiBee Steward + Prometheus + Grafana + Alertmanager)替代单一重监控系统的用户。
九、技术栈速览(给爱看实现的开发者)
| 层 | 选型 |
|---|---|
| 后端语言 | Go 1.26+ |
| Web 框架 | Chi v5 |
| 数据库 | SQLite(modernc.org/sqlite,纯 Go,CGO_ENABLED=0) |
| 查询层 | sqlc 生成类型安全代码(配置 engine: sqlite) |
| 配置 | koanf/v2(YAML + MIBEE_* 环境变量覆盖) |
| 前端 | SvelteKit 5(file-based routing、Tailwind 4、ECharts、paraglide i18n) |
| 前端打包 | 通过 go:embed all:dist 嵌入二进制 |
| 认证 | JWT(cookie-first + Bearer fallback)+ TOTP 2FA + CSRF |
| 构建 | Makefile,默认 CGO_ENABLED=0,可选 WITH_EBPF tag |
| 部署 | systemd / Nginx / Docker 全支持 |
有意思的实现细节:
- 5 层插件化扫描引擎:加协议 = 1 Classifier + 1 Handler,零侵入 orchestrator
- WAL + 独立心跳 DB:主库 CRUD + 心跳库高频写分离,避免
SQLITE_BUSY,~270k 行/天的写吞吐扛得住 - eBPF 可选被动观测:TC ingress 程序嗅探 ONVIF WS-Discovery + TCP magic bytes,作为补充证据源(build-tag 隔离,默认构建不带)
- 级联深采:扫到 HTTP → 探
/metrics→ 是 Prometheus → 级联 node_exporter → 自动回填硬件信息 - 数据驱动指纹库:YAML 规则 + 第三方 DB 导入工具(
cmd/fpimport/,recog / IEEE OUI / IANA PEN,nmap 因协议污染只用做 clean-room 参考)
十、License & 贡献
- 代码:AGPL-3.0(开源,可自由使用 / 修改 / 分发,衍生品需同等开源)
- 指纹语料库:
configs/fingerprints/,CC-BY-SA 4.0(数据可自由使用,衍生需署名 + 同等协议) - 贡献门槛:DCO 签署 + CLA(双重许可的法律前提)。指纹库贡献门槛更低——一条 YAML 一条规则
特别欢迎的贡献:
- 🌟 指纹规则:把你认识的设备型号贡献成 YAML 规则,丰富识别库
- 🌟 协议探针:加一个新协议的 Classifier + Handler
- 🌟 Bug 反馈 / UI 改进:用着不爽的地方开 issue
- 🌟 文档 / 翻译:中英之外的 i18n
十一、结语:为什么你应该试一下
如果你符合下面任意一条:
- 受够了 LibreNMS / Zabbix 的部署复杂度,只想要个"扫一遍认出来"的工具
- 受够了 NetBox / Snipe-IT 的手动录入,想要自动化
- 受够了 nmap 扫完没下文,想要持续追踪 + UI + 变化检测
- 想给 Prometheus / Grafana / Alertmanager 链条补一个"自动发现 + 资产源"
- 有多个网段,想要统一资产画像
- 单纯好奇这个细分赛道有没有人做
那就花 5 分钟试试:
git clone https://github.com/Mi-Bee-Studio/MiBeeSteward.git
cd mibee-steward && make build
./bin/mibee-steward -config configs/config.example.yaml
打开 http://localhost:8080,扫一遍你的 192.168.x.0/24,看它认出几台设备。
如果觉得不错,🌟 Star 一下,这是对开源作者最直接的支持。
如果觉得哪里不爽,开 issue 吐槽——尤其是"这台设备没认出来",这能直接帮指纹库变好。
如果你想长期参与,Watch / Fork,指纹库和协议探针都欢迎 PR。
Repo: https://github.com/Mi-Bee-Studio/MiBeeSteward
License: AGPL-3.0(代码)+ CC-BY-SA 4.0(指纹语料库)
部署:单二进制,CGO-free,SCP 上去就能跑
文档:docs/en/(英文)+docs/zh/(中文)MiBee Steward — Discover what’s on your network, know what it is, track it over time.

110

被折叠的 条评论
为什么被折叠?



