4. 日志级别与过滤机制

在网络设备上,日志是排障与审计的第一手证据。但一台运行 Comware 的设备每秒可能产生数十条日志,如果全部无差别输出,既会淹没关键信息,也会消耗 CPU、内存和日志服务器带宽。因此,Comware 用一套“级别 + 过滤 + 抑制”的组合机制,把海量原始日志收敛成可读、可控、可追溯的信息流。理解这套机制,是搭建可观测性平台的基础。

一、0-7 级日志的定义与语义

Comware 将日志按严重程度从高到低划分为 8 个级别,数值越小越严重。级别不是“重要性排序”,而是“紧急程度排序”:0 级意味着设备已经无法正常工作,7 级只是调试细节。

级别名称典型含义典型场景
0Emergency系统不可用主控板异常、系统崩溃
1Alert需要立即处理内存耗尽、关键进程反复重启
2Critical严重故障接口板失效、风扇/电源异常
3Error错误事件链路 down、协议邻居中断
4Warning警告,可能影响业务CPU 持续偏高、光功率越界
5Notification正常但重要的事件接口 up、用户登录、配置变更
6Informational一般提示信息常规状态变化、统计信息
7Debugging调试信息协议报文收发、内部流程跟踪

关键规则是“阈值包含关系”:当某输出通道设置为级别 N 时,0 到 N 级全部输出,N 以上的级别被丢弃。例如把控制台设为 5,则 0~5 级都会打印,6、7 级不打印。因此“设置级别”本质是设置一个上限阈值,而不是只放行某一个级别。

排障时常见的误区是把级别设成 7 却忘了恢复。Debugging 级别日志量极大,长时间开启会显著增加 CPU 占用,甚至影响转发性能。建议只在必要时临时开启,并配合模块过滤缩小范围。

二、模块化日志过滤:按来源收敛

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 次”汇总,既保留事件发生与恢复的边界,又压缩中间冗余。

抑制策略的取舍在于“可观测性”与“资源开销”的平衡。抑制过强可能丢失震荡次数等关键信息,抑制过弱则失去意义。实践中建议对已知会高频产生的模块单独设置抑制,而对故障定位关键的模块保持较宽松的输出。

Comware 日志过滤与抑制链路 原始日志源 IFNET ARP OSPF BGP SHELL DEV IP … 0~7 级 全量产生 ① 模块过滤 info-center source 按模块设阈值 IFNET → 6 ARP → 4 SHELL → 5 不同模块 不同粒度 ② 级别过滤 阈值 N 表示 0~N 级放行 0 Emergency 3 Error 5 Notification 7 Debugging 数值越小越严重 ③ 关键字过滤 正则匹配 include / exclude GE1/0/1 OSPF邻居 password 按内容命中 精确收敛 ④ 抑制与去重:频率抑制(限速)+ 重复去重(首尾保留,中间汇总) 抑制过强 → 丢失震荡次数;抑制过弱 → 刷屏与资源浪费 日志 服务 器

五、组合使用与效果验证

把四层机制串起来,一条日志从产生到落地日志服务器,要依次经过模块阈值、级别阈值、关键字规则和抑制策略。实际配置时建议按“先粗后细”的顺序:先确定哪些模块需要保留,再为每个模块设定级别,最后用关键字和抑制做精修。

验证是否达到预期,可以观察三个指标:单位时间日志条数是否下降、关键事件是否仍然可见、日志服务器接收速率是否平稳。例如在接口震荡场景中,若抑制后仍能看到首次 down、末次 up 以及“重复 N 次”的汇总,说明去重策略生效且未丢失边界信息;若完全看不到任何记录,则说明抑制过强或级别阈值过低,需要回调。

修改日志级别或过滤规则后,务必用 display info-center 和 display logbuffer 确认当前生效状态。部分规则在设备重启后不会自动保留,需要写入配置文件或通过 save 持久化。