3. 设备纳管与EOS集成
CloudVision(CV)对Arista EOS设备的价值,建立在“设备被正确纳管、状态被持续同步”这一前提之上。纳管不是把设备IP填进CV就结束,而是要让CV同时掌握三类信息:设备的身份与配置(由eAPI/配置会话提供)、设备的实时运行状态(由TerminAttr推送的流式Telemetry提供)、以及设备的基础可用性与告警(由SNMP补充采集)。本节围绕这三条通道,说明如何把一台EOS交换机从出厂状态接入CV,并验证状态同步是否真正完成。
一、纳管的三条数据通道与各自职责
理解纳管,先要分清三条通道的分工,避免把“能ping通”误认为“已纳管”。
- ZTP(Zero Touch Provisioning):解决设备首次上电时的“引导”问题。设备通过DHCP获取管理地址与引导脚本位置,自动下载并执行启动脚本,完成主机名、管理口、CV目标地址、TerminAttr安装等初始配置。
- eAPI:CV与EOS之间的配置与命令通道。CV通过HTTPS调用eAPI,读取running-config、下发配置、执行show命令。它决定了CV能否“改设备”和“读配置”。
- TerminAttr:运行在EOS上的代理进程,负责把设备状态以流式Telemetry方式主动推送给CV。它决定了CV能否“实时看到设备状态”,是流式Telemetry的核心。
- SNMP:补充采集通道。用于采集TerminAttr未覆盖的MIB对象、接口计数器、以及部分第三方监控系统对接场景。
三条通道中,eAPI偏“拉”、TerminAttr偏“推”、SNMP偏“补充”。只有三者都正常,CV上的设备才会呈现为绿色“Active”状态,且各项指标持续刷新。
二、ZTP:让设备第一次上电就“认识”CV
ZTP的前提是DHCP服务器已配置好Option 66/67或Option 67指向引导脚本。设备上电后,管理口发起DHCP请求,获得管理IP、网关、TFTP/HTTP服务器地址。随后设备下载启动脚本并执行。一个典型的ZTP脚本(示例)如下:
! ztp-boot.cfg 示例
hostname leaf-01
interface Management1
ip address 10.10.10.21/24
no shutdown
ip route 0.0.0.0/0 10.10.10.1
!
username cvp privilege 15 secret 0 Cvp@2024
!
management api http-commands
protocol https
no shutdown
!
daemon TerminAttr
exec /usr/bin/TerminAttr -cvaddr=10.10.10.100:9910 \
-cvauth=token,/tmp/token -cvvrf=Management1 \
-smashexcludes=ale,flexCounter,hardware,kni,pulse,strata \
-ingestexclude=/Sysdb/SyslogConfig \
-taillogs
no shutdown
!
snmp-server community cvpublic ro
snmp-server host 10.10.10.100 version 2c cvpublic
!
copy running-config startup-config
脚本执行完成后,设备已具备管理地址、eAPI、TerminAttr和SNMP四项基础能力。此时CV的ZTP服务会收到设备注册请求,设备进入“Provisioned”状态,等待CV下发正式配置。
三、eAPI:配置与命令通道的验证
eAPI是CV读写设备配置的通道。验证eAPI是否可用,最直接的方式是在CV服务器或管理终端上执行一次HTTPS调用:
curl -k https://10.10.10.21/command-api \
-u cvp:Cvp@2024 \
-d '{"jsonrpc":"2.0","method":"runCmds","params":{"version":1,"cmds":["show version"],"format":"json"},"id":1}'
若返回JSON中包含modelName、version、serialNumber等字段,说明eAPI通道正常。CV在纳管设备时会用类似调用读取running-config,并与CV上的配置基线做比对。若eAPI不可达,CV会显示设备“Inactive”,且无法下发Configlet。
四、TerminAttr与流式Telemetry
TerminAttr是流式Telemetry的核心。它通过gRPC与CV的Telemetry服务建立长连接,按订阅路径持续推送状态。默认情况下,TerminAttr会推送接口计数器、CPU/内存、BGP邻居、LLDP邻居、硬件传感器等。若需要更细粒度,可在CV上配置自定义订阅路径,例如:
! 在CV Telemetry订阅中增加
/Sysdb/interface/Counters/InOctets
/Sysdb/interface/Counters/OutOctets
/Sysdb/Bgp/NeighborStatus
验证TerminAttr是否正常,可在设备上执行:
show daemon TerminAttr
show terminattr status
输出中应看到“Connected to 10.10.10.100:9910”以及已订阅的路径列表。若显示“Disconnected”,需检查管理VRF路由、CV地址端口9910是否可达、token是否有效。
五、SNMP补充采集
SNMP用于采集TerminAttr未覆盖的MIB对象,例如部分接口错误计数、电源风扇状态、以及第三方监控系统对接。配置SNMP后,可在CV上添加SNMP采集任务,指定OID列表和轮询周期(示例:60秒)。验证方式:
show snmp
show snmp host
snmpwalk -v2c -c cvpublic 10.10.10.21 1.3.6.1.2.1.1.3
若snmpwalk能返回sysUpTime,说明SNMP通道正常。SNMP采集的数据会与Telemetry数据在CV上做关联展示,但需注意两者时间戳可能不同步,排查时以Telemetry为主、SNMP为辅。
六、状态同步验证与常见异常判断
纳管完成后,应在CV上逐项验证。以下是一份可直接使用的验证清单(示例):
| 检查项 | 验证方法 | 正常表现 | 异常处理 |
|---|---|---|---|
| 设备状态 | CV Inventory 查看 | Active(绿色) | Inactive 查eAPI;Provisioned 查ZTP |
| eAPI | curl 调用 show version | 返回JSON | 检查 management api http-commands 是否 no shutdown |
| TerminAttr | show daemon TerminAttr | Connected | 检查9910端口、token、管理VRF路由 |
| Telemetry数据 | CV Telemetry 查看接口计数器 | 数值持续刷新 | 检查订阅路径、smashexcludes |
| SNMP | snmpwalk sysUpTime | 返回数值 | 检查community、ACL、host配置 |
| 配置同步 | CV Config 比对 running-config | 无差异或仅预期差异 | 检查Configlet、Change Control |