3. Comware信息中心详解

在Comware平台上,日志的产生、加工与投递并不是由某个单一进程完成的,而是由信息中心(Information Center)统一调度。理解信息中心,关键要抓住四个问题:日志从哪里来、经过哪些模块加工、最终送到哪里去、以及一条日志里每个字段分别代表什么。把这四点串起来,才能在实际排障时快速定位“日志为什么没出来”“日志为什么看不懂”。

一、信息中心的组成结构

信息中心可以看作一条“日志流水线”,它由日志源、日志缓冲区、日志过滤与输出控制、以及输出目的地四大部分组成。日志源负责产生原始信息;信息中心对信息进行分级、分类、打时间戳;过滤模块根据模块、级别、通道等条件决定放行或丢弃;最后按目的地类型分别投递到控制台、监视终端、日志缓冲区、日志主机、邮件或日志文件等。

其中有一个容易被忽视但非常重要的概念——输出通道(output channel)。Comware为不同目的地定义了独立的通道,例如控制台通道、监视通道、日志主机通道、日志缓冲区通道等。每个通道有默认的通道名和默认允许输出的信息级别,也可以被单独配置。这意味着“同一条日志,可能出现在控制台,却不出现在日志主机”,原因往往就是通道级别或通道开关不同,而不是日志源没产生。

Comware 信息中心(info-center)日志处理链路 日志源 各协议模块(OSPF/BGP…) 接口 / 链路状态变化 安全 / ACL / 登录事件 系统 / 硬件 / 电源告警 信息中心核心处理 分级(0~7 severity) 分类(模块 / 日志类型) 时间戳格式化 过滤 + 通道分发 输出通道 console 通道 monitor 通道 loghost 通道 logbuffer 通道 目的地 控制台 VTY 终端 日志主机 日志缓冲区 日志文件 / 邮件 时间戳格式(timestamp) boot:相对系统启动时间,如 0 days 0 hours 5 min date:绝对日期时间,如 2024/06/18 10:23:45 iso:ISO 8601,如 2024-06-18T10:23:45 none:不携带时间戳 示例:info-center timestamp loghost date 示例:info-center timestamp logbuffer iso 不同目的地可独立设置时间戳格式 一条日志的字段构成 %Jun 18 10:23:45:123 2024 H3C IFNET/3/PHY_UPDOWN: … ① 时间戳 ② 设备名 ③ 模块名/级别/助记符 ④ 槽位/接口等定位信息 ⑤ 具体描述文本 级别 3 = Error,级别 6 = Informational 模块名 IFNET 表示接口管理模块 助记符 PHY_UPDOWN 表示物理层状态变化 字段顺序固定,便于日志平台解析

二、日志源:谁在产生日志

Comware的日志源非常广泛,常见的有以下几类:

  • 协议模块:OSPF、BGP、IS-IS、VRRP 等在邻居建立、撤销、状态切换时产生日志,模块名通常就是协议名。
  • 接口与链路:接口 up/down、物理层状态变化、光模块告警等,典型模块名为 IFNET、PHY 等。
  • 安全与访问控制:登录成功/失败、ACL 匹配、攻击防范触发等。
  • 系统与硬件:电源、风扇、温度、内存、CPU 阈值告警等。

每个日志源在产生信息时,都会带上自己的模块名和严重级别。级别从 0 到 7 共八级,数字越小越严重:0 表示 Emergency,1 表示 Alert,2 表示 Critical,3 表示 Error,4 表示 Warning,5 表示 Notification,6 表示 Informational,7 表示 Debugging。日常排障最常关注的是 0~4 级,而 6 级信息量最大、也最容易被淹没。

三、输出目的地与通道控制

信息中心支持多种输出目的地,它们各自独立、互不影响:

  • 控制台(console):直接输出到 Console 口,适合现场调试。
  • 监视终端(monitor):输出到当前登录的 VTY 终端,需要先执行 terminal monitor 和 terminal logging 才能看到。
  • 日志主机(loghost):通过 Syslog 协议发送到远端服务器,是集中化日志分析的核心。
  • 日志缓冲区(logbuffer):保存在设备内存中,可用 display logbuffer 查看,重启后丢失。
  • 日志文件(logfile):写入设备存储,重启后仍可保留。

控制日志是否输出的关键命令是 info-center source。它的基本形式是:

info-center source { module-name | default } channel { channel-number | channel-name } [ debug { level | state } ] [ log { level | state } ] [ trap { level | state } ]

例如,只允许 IFNET 模块的 log 信息以 4 级及以上输出到 loghost 通道:

info-center source IFNET channel loghost log level warning

这里 log level warning 表示只放行 0~4 级(warning 及更严重)的日志。如果写成 log level informational,则会放行 0~6 级,信息量明显增大。实际工程中,建议对 loghost 通道保留 0~5 级,对 logbuffer 保留 0~6 级,对 console 只保留 0~4 级,避免终端被刷屏。

四、时间戳格式

时间戳决定了日志在分析平台上的可读性和可排序性。Comware 支持四种时间戳格式:

格式含义典型输出
boot相对系统启动时间0 days 0 hours 5 minutes 12 seconds
date绝对日期时间2024/06/18 10:23:45
isoISO 8601 标准格式2024-06-18T10:23:45
none不携带时间戳—

配置命令按目的地分别设置:

info-center timestamp loghost date
info-center timestamp logbuffer iso
info-center timestamp console boot

需要注意的是,如果设备没有配置 NTP 或时钟不准确,date 和 iso 格式的时间会与真实时间偏差,导致多台设备日志无法对齐。因此,在部署日志主机之前,务必先完成 NTP 同步,再统一时间戳格式。

五、日志字段含义与阅读方法

一条典型的 Comware 日志如下:

%Jun 18 10:23:45:123 2024 H3C IFNET/3/PHY_UPDOWN: GigabitEthernet1/0/1 link status changed to DOWN.

逐字段拆解:

  • %Jun 18 10:23:45:123 2024:时间戳,精确到毫秒。
  • H3C:设备名(sysname),多设备集中收集时用于区分来源。
  • IFNET:产生日志的模块名。
  • 3:严重级别,3 表示 Error。
  • PHY_UPDOWN:助记符,描述具体事件类型。
  • GigabitEthernet1/0/1 link status changed to DOWN:描述文本,给出接口名和状态变化。
阅读日志时,先看级别(0~4 优先),再看模块名定位问题域,最后看助记符和描述文本确认具体事件。助记符是稳定的,适合在日志平台中做告警规则匹配;描述文本可能随版本变化,不建议作为唯一匹配条件。
如果发现日志主机收不到日志,排查顺序建议为:① 日志源是否产生(display logbuffer 是否有记录);② loghost 通道是否开启且级别合适;③ info-center loghost 地址与端口是否正确;④ 设备到日志主机的路由与 UDP 514 是否可达;⑤ 日志主机侧 Syslog 服务是否正常监听。

把信息中心的组成、日志源、通道、时间戳和字段这五块内容连起来看,就能形成一条完整的判断链:日志有没有产生、有没有被过滤、有没有被投递、投递后能不能被正确解析。掌握这条链路,后续无论是做日志采集、告警规则还是故障回溯,都能做到有据可依。