本文详细介绍了如何使用 orb-agent 进行网络扫描,收集 IP 信息,并通过 Diode 将数据自动化导入 NetBox。这两个工具都是 NetBox 官方推出的自动化发现产品,能够帮助运维团队高效管理网络资产。
整体架构
以下是整体架构示意图:
+------------------+
| orb-agent |
|------------------|
| 网络扫描/资产发现 |
+------------------+
|
| grpc 通过NMAP/SNMP等扫描结果(IP、主机、服务)
v
+------------------+
| Diode |
|------------------|
| 数据清洗/转换 |
| 安全传输/推送 |
+------------------+
|
| grpc 通过Diode插件标准化后的资产数据
v
+------------------+
| NetBox |
|------------------|
| IPAM / DCIM 管理 |
| 资产持续更新 |
+------------------+
相关文档
Diode 安装
环境要求
- NetBox 版本 ≥ 4.2.3
- Docker 版本 ≥ 27.0.3
Docker 国内安装
建议安装最新版本,并使用 Docker Compose V2 进行部署。国内用户可参考南京大学镜像站获取安装帮助:
Docker Hub 国内加速配置
执行以下命令配置镜像加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker-0.unsee.tech",
"https://docker-cf.registry.cyou",
"https://docker.1panel.live"
]
}
EOF
systemctl enable docker
systemctl daemon-reload && sudo systemctl restart docker
环境介绍
Docker 安装 Diode Server
步骤 1:创建工作目录并下载安装脚本
mkdir /opt/diode
cd /opt/diode
curl -sSfLo quickstart.sh https://raw.githubusercontent.com/netboxlabs/diode/release/diode-server/docker/scripts/quickstart.sh
chmod +x quickstart.sh
步骤 2:运行脚本并启动服务
./quickstart.sh http://192.168.31.173
docker compose up -d
注意:Diode Server 会占用宿主机的 8080 端口。
获取 netbox-to-diode 用户密钥
执行以下命令获取密钥,用于后续 Diode 插件配置:
echo $(jq -r '.[] | select(.client_id == "netbox-to-diode") | .client_secret' /opt/diode/oauth2/client/client-credentials.json)
NetBox 接入 Diode Server
步骤 1:安装 Diode 插件
进入 NetBox 安装目录并激活 Python 虚拟环境:
cd /opt/netbox
source venv/bin/activate
pip install netboxlabs-diode-netbox-plugin
步骤 2:配置插件
编辑配置文件 configuration/configuration.py,启用插件并配置参数:
PLUGINS = [
"netbox_diode_plugin",
]
PLUGINS_CONFIG = {
"netbox_diode_plugin": {
"diode_target_override": "grpc://<diode-server:port>/diode",
"diode_username": "netbox-to-diode",
"netbox_to_diode_client_secret": "NT3yLOQamJpx545nSacRf4IN8VrJ2zmWHkyrD2SkbAc="
},
}
注意:netbox_to_diode_client_secret 需填写上一步获取的密钥。
步骤 3:执行数据库迁移并重启服务
cd /opt/netbox/netbox
./manage.py migrate netbox_diode_plugin
sudo systemctl restart netbox netbox-rq
orb Agent 部署
步骤 1:创建工作目录
mkdir /opt/orb
cd /opt/orb
步骤 2:创建配置文件
创建配置文件 agent.yaml,定义网络扫描任务:
orb:
config_manager:
active: local
backends:
common:
diode:
target: grpc://192.168.31.173:8080/diode
client_id: ${DIODE_CLIENT_ID}
client_secret: ${DIODE_CLIENT_SECRET}
agent_name: agent01
network_discovery:
policies:
network_discovery:
discovery_1:
config:
schedule: "* * * * *"
timeout: 5
defaults:
description: IP discovered by network discovery
tags: [net-discovery, orb-agent]
scope:
targets:
- 192.168.31.0/24
- google.com
fast_mode: True
max_retries: 0
注意:将 target 中的 IP 地址替换为实际 Diode Server 的 IP。
配置结构解析
- config_manager:配置源为本地文件,便于测试
- backends:定义数据上报后端,通过 gRPC 将扫描结果推送到 Diode
- policies:定义每分钟执行一次的网络发现任务,扫描指定子网和域名,并打上标签
步骤 3:创建 Docker Compose 文件
创建 docker-compose.yml 文件:
services:
orb-agent:
image: netboxlabs/orb-agent:latest
container_name: orb-agent
environment:
DIODE_CLIENT_ID: "diode-ingest"
DIODE_CLIENT_SECRET: "NT3yLOQamJpx545nSacRf4IN8VrJ2zmWHkyrD2SkbAc="
volumes:
- /opt/orb:/opt/orb
command: ["run", "-c", "/opt/orb/agent.yaml"]
restart: unless-stopped
注意:DIODE_CLIENT_SECRET 需通过以下命令获取:
echo $(jq -r '.[] | select(.client_id == "diode-ingest") | .client_secret' /opt/diode/oauth2/client/client-credentials.json)
步骤 4:启动 orb Agent 服务
docker compose up -d
docker compose logs
成果展示
部署完成后,NetBox 中将自动更新扫描到的 IP 地址等资产信息,实现网络资产的持续同步与管理。

总结
通过 orb-agent 和 Diode 的组合使用,可以实现:
- ✅ 自动化网络资产发现
- ✅ 实时数据同步到 NetBox
- ✅ 标准化的资产管理流程
- ✅ 降低人工维护成本