2、日志查看命令:show logging、show log、terminal monitor、logging console 等命令详解

日志这东西,说白了就是交换机的「黑匣子」。设备出了故障,你第一反应应该是去看日志,而不是在那瞎猜。我见过不少新手,设备出问题了先重启,结果重启完日志也丢了,问题原因永远成了谜。嗯,这习惯得改。

2.1 show logging:查看本地日志缓冲区

这是最常用的命令,没有之一。在 Cisco 交换机上,show logging 会显示设备内存中缓存的日志信息。我个人习惯,每次排查问题前,先敲一遍这个命令,看看有没有异常告警。

Switch# show logging
Syslog logging: enabled (0 messages dropped, 0 messages rate-limited, 0 flushes, 0 overruns)
    Console logging: disabled
    Monitor logging: disabled
    Buffer logging: level debugging, 100 messages logged
    Logging to: 192.168.1.100 (udp port 514, audit disabled)

Log Buffer (100 messages):
*Mar  1 00:12:34: %LINK-3-UPDOWN: Interface GigabitEthernet0/1, changed state to up
*Mar  1 00:12:35: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/1, changed state to up
*Mar  1 00:13:01: %SYS-5-CONFIG_I: Configured from console by admin on vty0

输出内容里,你会看到几个关键信息:

  • 日志级别:比如 debugginginformationalerror。级别越高,信息越严重。
  • 时间戳:记录事件发生的具体时间。如果时间不对,记得先检查 NTP 同步。
  • 设备标识:比如 %LINK-3-UPDOWN,前面的 LINK 是功能模块,后面的数字 3 是严重等级。
我的小技巧:如果你发现日志缓冲区只有几十条记录,说明缓冲区太小了。建议调大一些,默认一般是 4096 条,我通常设到 16384 条。命令是 logging buffered 16384

2.2 show log:华为/华三设备的日志查看

如果你用的是华为或华三的交换机,命令会稍有不同。它们用的是 show log 或者 display logbuffer。你想想看,不同厂商的命令风格差异还挺大的,但核心逻辑是一样的。

<Huawei> display logbuffer
Logging buffer configuration and contents:
  Enabled
  Buffer size: 1024 bytes
  Current messages: 45

Jul 10 2024 14:23:45 Huawei %%01IFNET/4/LINK_STATE(l)[0]:Interface GigabitEthernet0/0/1 has turned into UP state.
Jul 10 2024 14:24:01 Huawei %%01SHELL/4/LOGIN(l)[1]:Login successful from 192.168.1.100.

这里要注意,华为的日志格式里,%%01IFNET/4/LINK_STATE 中的 4 就是严重等级。数字越小越严重,4 属于告警级别。我在项目中遇到过,有人看到日志里一堆 4 级别的告警就慌了,其实很多只是正常的接口状态变化,不用太紧张。

2.3 terminal monitor:实时查看日志输出

这个命令太实用了。当你通过 Telnet 或 SSH 登录到交换机时,默认是看不到实时日志的。你敲了 terminal monitor 之后,所有日志就会实时打印到你的终端上。

Switch# terminal monitor
Switch# 
*Mar  1 00:15:22: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/2, changed state to down
*Mar  1 00:15:23: %LINK-3-UPDOWN: Interface GigabitEthernet0/2, changed state to down

为什么需要这个?举个例子。你在排查一个接口频繁 flapping 的问题,如果只看历史日志,可能漏掉中间的一些细节。开启 terminal monitor 后,你拔插网线或者修改配置,日志会实时刷出来,问题一目了然。

注意避坑:我曾经在排一个核心交换机的问题时,开了 terminal monitor 没关,结果日志刷屏刷得我连命令都敲不进去。解决办法是:按 Ctrl+Shift+6 暂停输出,或者直接关掉终端重新登录。记得用完就关,命令是 terminal no monitor

2.4 logging console:控制台日志输出

这个命令控制的是「物理控制台」的日志输出。如果你是通过 Console 线直接连到交换机,默认是能看到日志的。但如果你通过 SSH 登录,logging console 对你就没影响。

Switch(config)# logging console debugging

这条命令的意思是:把调试级别的日志也输出到控制台。说实话,我平时不建议在生产环境开这个。为什么呢?因为调试日志量太大了,一旦有大量日志输出,控制台会卡死,你连配置都改不了。

命令 作用范围 适用场景
show logging 本地缓冲区 查看历史日志,排查已发生的问题
show log (华为) 本地缓冲区 华为设备的历史日志查看
terminal monitor 当前 SSH/Telnet 会话 实时监控日志输出,适合动态排错
logging console 物理控制台 调试阶段使用,生产环境慎用

2.5 日志级别与过滤技巧

日志级别从 0 到 7,数字越小越严重。我整理了一张表,方便你对照:

级别 关键字 含义 举例
0 emergencies 系统不可用 设备重启、电源故障
1 alerts 需要立即处理 温度过高告警
2 critical 严重错误 内存耗尽
3 errors 错误信息 接口 down
4 warnings 警告信息 配置变更
5 notifications 正常但重要 接口 up
6 informational 一般信息 用户登录
7 debugging 调试信息 协议交互细节

你可以在查看日志时加上过滤条件,比如只看错误级别的日志:

Switch# show logging | include %LINK-3

或者用 exclude 排除掉你不关心的信息:

Switch# show logging | exclude UPDOWN

核心要点:日志查看不是光看就完了,你得学会「过滤」和「定位」。我一般先看 0-3 级别的日志,这些是真正需要关注的。4 级以下的,除非你在做深度调试,否则可以先放一放。

2.6 实战排错思路

最后,我分享一个我常用的排错流程:

  1. 先看时间:确认日志时间是否准确。时间不对,日志就是废的。
  2. 定位异常:用 show logging | include %LINEPROTO-5-UPDOWN 这类命令,快速找到接口 flapping 的记录。
  3. 实时监控:开启 terminal monitor,复现问题,观察实时输出。
  4. 对比分析:把日志和配置对比,看看是不是配置变更导致的异常。

我曾经遇到过一个案例,客户说网络每天下午 3 点准时断。我一看日志,发现每天 14:59 都有一次配置变更记录。最后查出来是运维的定时任务脚本写错了,把接口 shutdown 了。你看,日志不会骗人,关键是你得会看。

好了,这一章的内容就到这里。下一章我们会深入聊聊日志的远程发送——syslog 服务器的配置,到时候你会知道怎么把日志集中管理,再也不用一台一台设备去翻了。