4. 日志级别与过滤机制
在网络设备上,日志是排障与审计的第一手证据。但一台运行 Comware 的设备每秒可能产生数十条日志,如果全部无差别输出,既会淹没关键信息,也会消耗 CPU、内存和日志服务器带宽。因此,Comware 用一套“级别 + 过滤 + 抑制”的组合机制,把海量原始日志收敛成可读、可控、可追溯的信息流。理解这套机制,是搭建可观测性平台的基础。
一、0-7 级日志的定义与语义
Comware 将日志按严重程度从高到低划分为 8 个级别,数值越小越严重。级别不是“重要性排序”,而是“紧急程度排序”:0 级意味着设备已经无法正常工作,7 级只是调试细节。
| 级别 | 名称 | 典型含义 | 典型场景 |
|---|---|---|---|
| 0 | Emergency | 系统不可用 | 主控板异常、系统崩溃 |
| 1 | Alert | 需要立即处理 | 内存耗尽、关键进程反复重启 |
| 2 | Critical | 严重故障 | 接口板失效、风扇/电源异常 |
| 3 | Error | 错误事件 | 链路 down、协议邻居中断 |
| 4 | Warning | 警告,可能影响业务 | CPU 持续偏高、光功率越界 |
| 5 | Notification | 正常但重要的事件 | 接口 up、用户登录、配置变更 |
| 6 | Informational | 一般提示信息 | 常规状态变化、统计信息 |
| 7 | Debugging | 调试信息 | 协议报文收发、内部流程跟踪 |
关键规则是“阈值包含关系”:当某输出通道设置为级别 N 时,0 到 N 级全部输出,N 以上的级别被丢弃。例如把控制台设为 5,则 0~5 级都会打印,6、7 级不打印。因此“设置级别”本质是设置一个上限阈值,而不是只放行某一个级别。
二、模块化日志过滤:按来源收敛
Comware 的日志按模块(module)产生,例如 IFNET(接口)、ARP、IP、OSPF、BGP、SHELL、DEV(设备管理)等。模块化过滤的核心思想是:不同模块可以有不同的级别阈值,从而在保留关键模块细节的同时,压制噪声模块。
典型做法是先用 info-center source 指定模块与通道的对应关系,再为每个模块单独设定级别。例如希望接口模块保留到 6 级、ARP 只保留到 4 级、其他模块统一 5 级,可以这样组织:
info-center source default channel loghost log level warning
info-center source ifnet channel loghost log level informational
info-center source arp channel loghost log level warning
info-center source shell channel loghost log level notification
这里 channel loghost 表示输出到日志服务器通道,log level 后面的关键字或数字即该模块的阈值。实际配置时,模块名与通道名必须与设备当前版本支持的取值一致,可通过 display info-center 查看已注册的模块和通道状态。
三、关键字过滤:按内容精确命中
级别和模块解决的是“哪些来源、多严重”,关键字过滤解决的是“内容里有没有我关心的词”。Comware 支持基于正则表达式的关键字过滤,常用于只保留包含某接口、某邻居或某错误码的日志。
例如只关心与 GigabitEthernet1/0/1 相关的日志,可以配置:
info-center filter keyword include GigabitEthernet1/0/1
info-center filter keyword exclude "password|community"
关键字过滤通常与模块、级别叠加生效,形成“模块 → 级别 → 关键字”的三层漏斗。需要注意的是,正则表达式中的特殊字符要转义,且过滤规则对大小写是否敏感取决于具体实现,配置后应通过 display info-center filter 确认规则已生效。
四、日志抑制与去重策略
即使经过级别和关键字过滤,某些日志仍可能高频重复,例如接口反复 up/down、协议邻居震荡。Comware 提供两类抑制手段:
- 频率抑制(log suppression):对同一模块或同一类日志设定单位时间内的最大输出条数,超出部分被丢弃或合并。例如限制某模块每秒最多输出 10 条,避免刷屏。
- 重复去重(duplicate suppression):当相同内容的日志在短时间内重复出现时,只输出第一条和最后一条,中间以“重复 N 次”汇总,既保留事件发生与恢复的边界,又压缩中间冗余。
抑制策略的取舍在于“可观测性”与“资源开销”的平衡。抑制过强可能丢失震荡次数等关键信息,抑制过弱则失去意义。实践中建议对已知会高频产生的模块单独设置抑制,而对故障定位关键的模块保持较宽松的输出。
五、组合使用与效果验证
把四层机制串起来,一条日志从产生到落地日志服务器,要依次经过模块阈值、级别阈值、关键字规则和抑制策略。实际配置时建议按“先粗后细”的顺序:先确定哪些模块需要保留,再为每个模块设定级别,最后用关键字和抑制做精修。
验证是否达到预期,可以观察三个指标:单位时间日志条数是否下降、关键事件是否仍然可见、日志服务器接收速率是否平稳。例如在接口震荡场景中,若抑制后仍能看到首次 down、末次 up 以及“重复 N 次”的汇总,说明去重策略生效且未丢失边界信息;若完全看不到任何记录,则说明抑制过强或级别阈值过低,需要回调。
display info-center 和 display logbuffer 确认当前生效状态。部分规则在设备重启后不会自动保留,需要写入配置文件或通过 save 持久化。