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
输出内容里,你会看到几个关键信息:
- 日志级别:比如
debugging、informational、error。级别越高,信息越严重。 - 时间戳:记录事件发生的具体时间。如果时间不对,记得先检查 NTP 同步。
- 设备标识:比如
%LINK-3-UPDOWN,前面的LINK是功能模块,后面的数字3是严重等级。
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 后,你拔插网线或者修改配置,日志会实时刷出来,问题一目了然。
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 实战排错思路
最后,我分享一个我常用的排错流程:
- 先看时间:确认日志时间是否准确。时间不对,日志就是废的。
- 定位异常:用
show logging | include %LINEPROTO-5-UPDOWN这类命令,快速找到接口 flapping 的记录。 - 实时监控:开启
terminal monitor,复现问题,观察实时输出。 - 对比分析:把日志和配置对比,看看是不是配置变更导致的异常。
我曾经遇到过一个案例,客户说网络每天下午 3 点准时断。我一看日志,发现每天 14:59 都有一次配置变更记录。最后查出来是运维的定时任务脚本写错了,把接口 shutdown 了。你看,日志不会骗人,关键是你得会看。
好了,这一章的内容就到这里。下一章我们会深入聊聊日志的远程发送——syslog 服务器的配置,到时候你会知道怎么把日志集中管理,再也不用一台一台设备去翻了。