数据库结构¶
所有 NetOps 数据存储在 DuckDB 的 netops schema 中。安装 olav-netops 后自动创建表。
功能声明
| ID | 声明 | 状态 |
|---|---|---|
| C-NE-08 | netops.devices 包含 hostname、ip_address、platform 列 |
⬜ 待验证 |
| C-NE-09 | v_bgp_neighbors_auto 视图从 parsed_outputs 自动生成 |
⬜ 待验证 |
| C-NE-10 | netops.topology_links 含 discovery_protocol 区分 L2/L3 |
⬜ 待验证 |
| C-NE-11 | netops.raw_output_store 保存每设备最新原始 CLI 输出 |
⬜ 待验证 |
表¶
netops.devices¶
网络设备清单,在 /netops_init 阶段 1 填充。
| 列 | 类型 | 说明 |
|---|---|---|
hostname |
VARCHAR | 设备主机名(主键) |
ip_address |
VARCHAR | 管理 IP 地址 |
platform |
VARCHAR | NTC 平台标识(如 cisco_ios、arista_eos) |
vendor |
VARCHAR | 设备厂商 |
model |
VARCHAR | 硬件型号 |
os_version |
VARCHAR | 操作系统版本 |
site |
VARCHAR | 站点/位置标签 |
role |
VARCHAR | 设备角色(core、edge、access) |
netops.parsed_outputs¶
TextFSM 解析后的结构化 CLI 输出。每条记录对应一个设备-命令-快照组合。
| 列 | 类型 | 说明 |
|---|---|---|
device_name |
VARCHAR | 源设备主机名 |
command |
VARCHAR | 执行的 CLI 命令 |
parsed_data |
JSON | TextFSM 解析结果数组 |
template_name |
VARCHAR | 使用的 TextFSM 模板 |
snapshot_id |
VARCHAR | 关联到采集批次的快照标识 |
netops.raw_output_store¶
每设备-命令对的最新原始 CLI 输出。用于配置提取和调试解析失败。
| 列 | 类型 | 说明 |
|---|---|---|
device_name |
VARCHAR | 源设备主机名 |
command |
VARCHAR | CLI 命令 |
raw_output |
VARCHAR | 完整未处理 CLI 输出文本 |
snapshot_id |
VARCHAR | 快照标识 |
netops.topology_links¶
从 LLDP、CDP 和 OSPF 邻居数据派生的网络链接。
| 列 | 类型 | 说明 |
|---|---|---|
link_id |
VARCHAR | 唯一链接标识 |
source_device |
VARCHAR | 源设备主机名 |
source_interface |
VARCHAR | 源接口名 |
destination_device |
VARCHAR | 目的设备主机名 |
destination_interface |
VARCHAR | 目的接口名 |
discovery_protocol |
VARCHAR | 发现方式:LLDP、CDP、OSPF |
link_status |
VARCHAR | 链路状态:up、down |
snapshot_id |
VARCHAR | 快照标识 |
netops.oc_outputs¶
每设备的 OpenConfig JSON 数据(稀疏填充)。
| 列 | 类型 | 说明 |
|---|---|---|
device_name |
VARCHAR | 源设备主机名 |
oc_module |
VARCHAR | OpenConfig YANG 模块名 |
oc_data |
JSON | 结构化 OpenConfig 数据 |
snapshot_id |
VARCHAR | 快照标识 |
自动生成视图¶
这些视图从 netops.parsed_outputs 自动创建。查询时不需要 netops. 前缀。
| 视图 | 关键列 | 源命令 |
|---|---|---|
v_bgp_neighbors_auto |
device_name, neighbor_ip, neighbor_as, state | show ip bgp summary |
v_ospf_neighbors_auto |
device_name, neighbor_id, neighbor_ip, interface, state | show ip ospf neighbor |
v_interfaces_auto |
device_name, interface, ip_address, prefix_length, status | show ip interface brief |
v_topology_l2_auto |
device_name, local_interface, destination_device, protocol | show cdp/lldp neighbors |
v_arp_auto |
device_name, ip_address, mac_address, interface | show arp |
v_topo_links_clean |
src, dst, source_interface, destination_interface | 派生自 topology_links |
v_device_neighbors_summary |
device_name, connected_device, protocol, status | 聚合邻居视图 |
v_bgp_neighbors_enriched |
+ 解析后的对端设备名 | BGP + devices 连接 |
v_routes_enriched |
+ 解析后的下一跳设备名 | Routes + devices 连接 |
查询示例¶
-- netops schema 的表必须加前缀
SELECT * FROM netops.devices WHERE platform = 'cisco_ios';
-- 视图不需要 schema 前缀
SELECT * FROM v_bgp_neighbors_auto WHERE state != 'Established';
-- 跨快照比较
SELECT * FROM netops.parsed_outputs
WHERE snapshot_id IN ('snap-001', 'snap-002')
AND command = 'show ip bgp summary';
必须加 schema 前缀
始终使用 netops.devices、netops.topology_links、netops.parsed_outputs — 不要省略 netops. 前缀。视图(v_*_auto)不需要前缀。