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,字段中包含用户、来源终端和操作类型。审计日志是合规与溯源的关键,不能随意关闭。
三、从字段到分析:一条日志的完整判读
假设收到这样一行日志:
<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。由此可判断这是一次接口物理状态变化,应立刻检查该接口的光模块收发光功率、对端设备端口状态以及线缆连接。
show logging logfile | include LINK-3-UPDOWN 快速过滤接口事件;用 show logging server 确认远程 syslog 服务器配置是否生效。四、日志级别配置建议
不同用途的日志输出目标应设置不同级别。以下为常见生产建议(示例值,需按实际环境调整):
| 输出目标 | 建议级别 | 说明 |
|---|---|---|
| Console | 2(Critical) | 只显示最严重事件,避免刷屏 |
| Monitor/Terminal | 5(Notification) | 排障时观察协议与接口变化 |
| Logfile(本地) | 6(Informational) | 保留完整记录供回溯 |
| Syslog Server | 6(Informational) | 集中采集,供平台分析 |
| Debug | 7(Debugging) | 仅临时开启,用完立即关闭 |
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 日志分析从“看文字”走向“做数据”的第一步。只有字段拆得准、级别分得清,后续的过滤、聚合、告警和根因定位才有可靠基础。