4. Nexus日志格式解析

在 Nexus 平台上,日志并不是“一段随便看看的文字”,而是由固定字段拼装出来的结构化记录。只有先理解字段含义,才能把日志接入可观测性平台后做过滤、聚合、告警和关联分析。Nexus 的日志大体可分为五类:系统日志、接口日志、协议日志、硬件日志和审计日志。它们共享一套基础字段,又各自携带不同的专业信息。

一、Nexus 日志的通用字段骨架

无论哪一类日志,Nexus 输出的 syslog 行通常遵循如下结构(以 NX-OS 常见格式为例):

<PRI>SEQNUM: TIMESTAMP: %FACILITY-SEVERITY-MNEMONIC: Message text

逐字段拆解:

  • PRI(优先级值):由 Facility 与 Severity 计算得出,PRI = Facility × 8 + Severity,取值范围 0~191。它决定了日志在 syslog 服务器上的归类。
  • SEQNUM:序列号,用于判断日志是否丢失或乱序。
  • TIMESTAMP:时间戳,建议全网统一使用 UTC 或同一时区,否则跨设备关联会错位。
  • FACILITY:产生日志的模块,如 LINK、ETH_PORT_CHANNEL、OSPF、PLATFORM、VSHD 等。
  • SEVERITY:严重级别,0~7,数字越小越严重。
  • MNEMONIC:助记符,是该类事件的唯一标识,例如 LINK_UPDOWN、OSPF_ADJCHG。
  • Message text:可读描述,通常包含接口名、邻居地址、状态变化等关键参数。

严重级别是日志分析的第一道筛子。Nexus 沿用 syslog 的 0~7 级定义:0 Emergency、1 Alert、2 Critical、3 Error、4 Warning、5 Notification、6 Informational、7 Debugging。生产环境通常把 console 设为 2、monitor 设为 5、日志服务器设为 6,Debug 级别只在排障时临时开启,避免刷屏和 CPU 抖动。

二、五类日志的字段差异与关注点

系统日志主要来自 PLATFORM、VSHD、SYSMGR 等模块,记录启动、配置变更、进程重启、内存告警等。典型行如 %PLATFORM-2-PFM_SYSTEM_RESET,其中 Severity=2 表示 Critical,说明系统发生了复位类事件,需要立即关注。

接口日志由 LINK、ETH_PORT_CHANNEL 等模块产生,核心字段是接口名与状态迁移。例如 %LINK-3-UPDOWN: Interface Ethernet1/1, changed state to down,Severity=3(Error),Message 中携带接口名和 up/down 状态。分析时要结合接口描述、对端设备和光模块信息,判断是物理断链还是协议震荡。

协议日志来自 OSPF、BGP、HSRP、STP 等协议模块,字段中常带邻居地址、进程号、状态机变化。例如 %OSPF-5-ADJCHG: Process 1, Nbr 10.0.0.2 on Ethernet1/1 from FULL to DOWN,Severity=5(Notification),说明邻居关系从 FULL 掉到 DOWN,是链路或配置问题的强信号。

硬件日志由 PLATFORM、ENVMON、FWMOD 等模块输出,涉及电源、风扇、温度、光模块、ASIC 等。例如 %ENVMON-2-FAN_FAILED,Severity=2,属于必须立即处理的硬件故障。硬件日志往往伴随 SNMP trap,建议与监控系统联动。

审计日志由 VSHD、SECURITY 等模块产生,记录用户登录、命令执行、权限变更。例如 %VSHD-5-VSHD_SYSLOG_CONFIG_I: Configured from console by admin on vty0,Severity=5,字段中包含用户、来源终端和操作类型。审计日志是合规与溯源的关键,不能随意关闭。

Nexus 日志通用字段骨架与五类日志映射 通用字段骨架 PRI SEQNUM TIMESTAMP FACILITY SEVERITY MNEMONIC Message text(接口/邻居/状态) 严重级别 0–7(数字越小越严重) 0 Emergency 1 Alert 2 Critical 3 Error 4 Warning 5 Notification 6 Informational 7 Debugging 系统日志 Facility:PLATFORM     VSHD/SYSMGR 典型级别:2–5 关键字段: 进程名、复位原因 示例: %PLATFORM-2- PFM_SYSTEM_RESET 关注:进程重启、 内存/CPU 告警 接口日志 Facility:LINK     ETH_PORT_CHANNEL 典型级别:3–5 关键字段: 接口名、up/down 示例: %LINK-3-UPDOWN: Eth1/1 to down 关注:物理断链、 端口震荡 协议日志 Facility:OSPF/BGP     HSRP/STP 典型级别:4–5 关键字段: 进程号、邻居地址 示例: %OSPF-5-ADJCHG: FULL to DOWN 关注:邻居震荡、 路由收敛 硬件日志 Facility:PLATFORM     ENVMON/FWMOD 典型级别:0–3 关键字段: 电源/风扇/温度 示例: %ENVMON-2- FAN_FAILED 关注:立即处理, 联动 SNMP Trap 审计日志 Facility:VSHD     SECURITY 典型级别:5–6 关键字段: 用户、来源终端 示例: %VSHD-5- VSHD_SYSLOG_CONFIG_I 关注:合规溯源, 不可随意关闭

三、从字段到分析:一条日志的完整判读

假设收到这样一行日志:

<189>42: 2024-06-12T03:21:07.512+08:00: %LINK-3-UPDOWN: Interface Ethernet1/1, changed state to down

判读过程如下:PRI=189,反推 Facility=189÷8=23(local7),Severity=189−23×8=5,即 Notification;SEQNUM=42;时间戳为北京时间;Facility=LINK;Severity=3(Error);MNEMONIC=UPDOWN;Message 指出 Ethernet1/1 变为 down。由此可判断这是一次接口物理状态变化,应立刻检查该接口的光模块收发光功率、对端设备端口状态以及线缆连接。

在 Nexus 上可用 show logging logfile | include LINK-3-UPDOWN 快速过滤接口事件;用 show logging server 确认远程 syslog 服务器配置是否生效。

四、日志级别配置建议

不同用途的日志输出目标应设置不同级别。以下为常见生产建议(示例值,需按实际环境调整):

输出目标建议级别说明
Console2(Critical)只显示最严重事件,避免刷屏
Monitor/Terminal5(Notification)排障时观察协议与接口变化
Logfile(本地)6(Informational)保留完整记录供回溯
Syslog Server6(Informational)集中采集,供平台分析
Debug7(Debugging)仅临时开启,用完立即关闭
Debug 级别日志量极大,长时间开启可能导致 CPU 升高、日志文件快速写满,甚至影响控制平面稳定性。排障结束后务必用 no logging level ... 恢复原级别。

五、字段解析的实践要点

把日志接入可观测性平台时,建议按以下顺序处理:第一,统一时间戳格式,所有设备配置 NTP,确保时间偏差在毫秒级;第二,用正则提取 FACILITY、SEVERITY、MNEMONIC 三个关键字段,作为索引和告警维度;第三,对 Message 中的接口名、邻居地址做二次解析,便于与拓扑数据关联;第四,为 Severity 0~3 设置高优先级告警,4~5 做趋势统计,6~7 仅存档。

例如,用正则 %(\w+)-(\d)-(\w+): 即可从日志行中提取 Facility、Severity 和 MNEMONIC。对 %OSPF-5-ADJCHG 这类日志,再配合 Nbr (\S+) on (\S+) 提取邻居与接口,就能在平台上画出“某接口邻居震荡次数”的时序曲线,从而把零散日志变成可观测指标。

理解字段结构与严重级别,是 Nexus 日志分析从“看文字”走向“做数据”的第一步。只有字段拆得准、级别分得清,后续的过滤、聚合、告警和根因定位才有可靠基础。