摘要

  • 这篇文章解释为什么在 NetBox 里接入 NAPALM,不是为了做监控,而是为了补齐“现状数据”的取数能力。
  • 重点内容包括插件安装、依赖关系、华为 VRP 驱动适配,以及 Source of Truth 与实时取数之间的职责边界。
  • 它对应系列里的“能力扩展”阶段,适合在接口与拓扑打通后继续阅读。

一、背景:从“真相源”到“研判能力扩展”

在统一运维平台设计中:

NetBox = 唯一真相源(Source of Truth)

用于承载:

  • 网络资产
  • 拓扑关系
  • 接口信息
  • 配置基线

1.1 引入 NAPALM 的目的

NAPALM 并不是监控工具,而是:

自动化研判阶段的“按需取数能力”


1.2 解决的三类问题

① 环境类研判

  • CPU / 内存 / 温度 / 电源
  • 用于快速确认设备健康状态

② 配置类研判

  • 获取运行配置
  • 与 NetBox 历史配置做差异分析

③ 状态数据补充

  • Netmiko → 持续采集
  • NAPALM → 实时查询

1.3 职责划分

text
NetBox:应该是什么
NAPALM:现在是什么
自动化引擎:是否有问题

二、整体架构

适配链路

2.1 架构分层

① 控制层

  • NetBox Web UI
  • Plugin 页面

② 自动化抽象层

  • NetBox NAPALM 插件
  • napalm-huawei-vrp 驱动

③ 设备层

  • 华为交换机(S5735 / S6730 / S7706)
  • 无线控制器(AC)

2.2 调用链路

text
NetBox UI
   ↓
NAPALM Plugin
   ↓
napalm-huawei-vrp
   ↓
SSH
   ↓
设备
   ↓
数据解析
   ↓
UI展示

三、环境准备

3.1 网络要求

  • NetBox 可访问设备 TCP 22
  • 无跳板或已配置

3.2 建议配置

bash
language-mode english

避免解析失败


3.3 软件版本

  • NetBox:4.4.7
  • Python:NetBox venv
  • 系统:Linux

四、NAPALM 插件规范化安装

重点:避免插件覆盖问题


4.1 进入虚拟环境

bash
source /opt/netbox/venv/bin/activate
pip list

4.2 维护 local_requirements.txt(关键)

bash
sudo nano /opt/netbox/local_requirements.txt

示例:

text
netbox-napalm-plugin
napalm-huawei-vrp
netbox-topology-views
netboxlabs-diode-netbox-plugin

4.3 安装插件

bash
pip install -r /opt/netbox/local_requirements.txt

4.4 配置 NetBox

python
PLUGINS = [
    "netbox_topology_views",
    "netbox_diode_plugin",
    "netbox_napalm_plugin",
]

PLUGINS_CONFIG = {
    'netbox_napalm_plugin': {
        'NAPALM_USERNAME': 'admin',
        'NAPALM_PASSWORD': 'your_password',
        'NAPALM_TIMEOUT': 30,
        'NAPALM_ARGS': {}
    }
}

4.5 初始化

bash
python3 manage.py migrate
python3 manage.py collectstatic --no-input

sudo systemctl restart netbox netbox-rq

五、华为驱动深度适配

官方驱动无法完全适配华为多型号设备,需要修改源码


5.1 驱动路径

bash
cd /opt/netbox/venv/lib/python3.10/site-packages/napalm_huawei_vrp/
cp huawei_vrp.py huawei_vrp.py.bak

5.2 内存利用率修正

python
utilization = round((used_kb / total_kb) * 100, 1)

environment['memory'] = {
    "available_ram": 100,
    "used_ram": utilization
}

5.3 无线 AC 兼容

python
try:
    output = self._send_command('display environment')
    if "Error" in output:
        output = self._send_command('display health')
except:
    output = ""

5.4 LLDP 邻居名称完整显示

python
command = 'display lldp neighbor'

5.5 重启服务

bash
sudo systemctl restart netbox

六、功能验证

6.1 平台绑定

路径:

text
Plugins → Napalm → Platform Config

设置:

text
Huawei VRP → huawei_vrp

6.2 AC 参数优化

json
{"global_delay_factor": 2}

6.3 验证项

  • CPU / 内存 / 温度
  • Running Config
  • LLDP 邻居

七、运维与升级建议

7.1 驱动管理

  • 升级会覆盖修改
  • 建议使用:
text
patch / Git 分支管理

7.2 日志排查

bash
sudo journalctl -u netbox -f

八、总结:能力边界明确

8.1 角色定位

text
NetBox:真相源
NAPALM:实时数据补充
Netmiko / SNMP:持续采集

8.2 核心价值

  • 提升研判准确性
  • 提供执行前校验
  • 增强自动化安全

8.3 典型应用场景

  • 日志驱动自动化研判
  • 配置差异检测
  • 自动化执行前验证

九、结论

NAPALM 不是中心能力,而是围绕 NetBox 的“受控扩展能力”。

只有在:

text
NetBox 数据可信

的前提下:

text
自动化研判与执行才具备安全性