为什么需要配置日志服务器?
在配置之前,先理解其好处:

- 集中管理:所有网络设备的日志都发送到一个中心服务器,无需登录到每台设备上查看日志。
- 故障排查:当网络出现问题时(如端口频繁 Up/Down、MAC 地址抖动、STP 拓扑变化),可以快速在日志服务器上定位问题设备和时间点。
- 安全审计:记录所有登录尝试(成功/失败)、配置变更等安全相关事件,满足合规性要求。
- 性能监控:通过分析系统日志,可以监控设备资源使用情况(如 CPU、内存)。
- 长期存储:交换机自身的日志缓冲区是有限的,日志服务器可以提供无限的存储空间。
- 告警通知:可以将日志服务器与监控系统(如 Zabbix, Prometheus, ELK Stack)集成,实现当特定日志事件发生时自动发送告警邮件或短信。
配置前的准备工作
在开始配置交换机之前,你需要确保以下几点:
-
一台日志服务器:
- 可以是 Linux 服务器(推荐使用
rsyslog或syslog-ng服务)。 - 也可以是 Windows 服务器(使用 Kiwi Syslog Server, PRTG Network Monitor 等软件)。
- 服务器必须有一个静态的 IP 地址,并且能被交换机访问。
- 可以是 Linux 服务器(推荐使用
-
网络连通性:
- 交换机必须能够通过 IP 网络到达日志服务器。
- 确保网络中没有防火墙阻止 UDP 端口 514(Syslog 的标准端口)。
-
访问权限:
(图片来源网络,侵删)- 你需要拥有交换机的 特权 EXEC 模式(或
enable模式)的访问权限。
- 你需要拥有交换机的 特权 EXEC 模式(或
配置步骤详解
我们将分步进行配置,从基础到高级。
步骤 1:进入全局配置模式
通过 Telnet、SSH 或 Console 登录到交换机,并进入全局配置模式。
Switch> enable Switch# configure terminal Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#
步骤 2:定义日志服务器的 IP 地址
这是最核心的一步,告诉交换机把日志发送到哪里。
# 格式:logging host <日志服务器IP地址> Switch(config)# logging host 192.168.1.100
你可以配置多个日志服务器来实现冗余:

Switch(config)# logging host 192.168.1.101
步骤 3:(可选但推荐)设置日志服务器的 UDP 端口
默认端口是 514,如果你的日志服务器使用了非标准端口,或者为了安全起见使用了其他端口,需要在这里指定。
# 格式:logging trap <severity_level> # 或者针对特定主机设置端口 # logging host <IP> transport udp port <端口号> Switch(config)# logging host 192.168.1.100 transport udp port 5140
步骤 4:设置日志的严重性级别
这是非常重要的一步,交换机只会发送等于或高于你设置级别的日志,级别从低到高依次为:
| 级别编号 | 关键字 | 描述 |
|---|---|---|
| 0 | emergencies | 系统不可用 |
| 1 | alerts | 必须立即采取行动 |
| 2 | critical | 关键条件 |
| 3 | errors | 错误条件 |
| 4 | warnings | 警告条件 |
| 5 | notifications | 正常但重要的状况 |
| 6 | informational | 信息性消息 |
| 7 | debugging | 调试消息 |
推荐配置:
对于生产环境,通常设置为 notifications (5) 或 informational (6),这样可以捕获大部分有用的信息(如端口状态变化、用户登录等),同时避免被调试信息 (debugging) 淹没。
# 设置级别为 notifications (5) Switch(config)# logging trap notifications
注意:
logging trap命令控制的是发送到 所有 日志服务器的日志级别,如果你想对不同服务器设置不同级别,可以使用更高级的logging facility和logging origin-id等命令配合服务器端进行过滤。
步骤 5:(可选)设置日志源地址
当交换机有多个 VLAN 接口或 SVI 时,它可能会选择一个出站接口的 IP 地址作为源 IP,这可能导致日志服务器无法正确识别日志来源,你可以强制指定一个固定的源 IP 地址。
# 格式:logging source-interface <接口名称> Switch(config)# logging source-interface Vlan1
这里 Vlan1 是管理 VLAN 的接口,通常配置了交换机的管理 IP。
步骤 6:(可选)启用时间戳
为了让日志服务器上的日志条目有序且易于分析,强烈建议启用时间戳,并指定时区。
# 启用时间戳 Switch(config)# service timestamps log datetime msec # 设置时区(中国是 GMT+8) # 格式:clock timezone <时区名称> <偏移量> Switch(config)# clock timezone CST 8
步骤 7:保存配置
完成所有配置后,务必保存配置,否则重启后配置会丢失。
Switch(config)# end Switch# write memory Building configuration... [OK]
验证配置
配置完成后,你可以通过以下命令来验证和监控日志发送状态。
-
查看日志服务器列表
Switch# show logging hosts Syslog logging: enabled Facility: local7 Logging to host 192.168.1.100, 1 out of 255 logging buffers, octets pending: 0 Logging to host 192.168.1.101, 1 out of 255 logging buffers, octets pending: 0
这个命令会显示所有配置的日志服务器及其连接状态。
-
查看日志缓冲区 交换机自身有一个小的日志缓冲区,你可以查看它来确认日志是否在本地生成。
Switch# show log *Mar 1 00:01:02: %SYS-5-CONFIG_I: Configured from console by admin on vty0 *Mar 1 00:02:03: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up ...
-
查看日志统计信息
Switch# show logging statistics ... (省略部分输出) ... 30 message buffer size, 0 messages dropped Logging to 192.168.1.100 (0 dropped, 0 flushes, 0 overruns) Logging to 192.168.1.101 (0 dropped, 0 flushes, 0 overruns) ...注意看
dropped(丢弃) 计数器,如果这个数字一直在增加,说明交换机生成日志的速度超过了网络发送的速度,或者日志服务器处理不过来,你可能需要考虑:- 升级日志服务器硬件。
- 调整日志级别,减少不必要的日志。
- 增加日志缓冲区大小 (
logging buffered <size>)。
日志服务器端配置(Linux 示例)
以一台运行 Ubuntu/Debian 的 Linux 服务器为例,配置 rsyslog 来接收来自 Cisco 交换机的日志。
-
安装 rsyslog
sudo apt-get update sudo apt-get install rsyslog -y
-
配置 rsyslog 编辑主配置文件
/etc/rsyslog.conf,取消注释或添加以下行,以启用 UDP 接收并处理来自 Cisco 设备的日志。sudo nano /etc/rsyslog.conf
在文件中找到以下部分并确保它们是激活的(没有 开头):
# Provides UDP syslog reception module(load="imudp") input(type="imudp" port="514") # Provides TCP syslog reception # module(load="imtcp") # input(type="imtcp" port="514")
在文件的
#### RULES ####部分,添加一条规则来专门处理来自你的交换机(IP 为 192.168.1.10)的日志,并将它们保存到/var/log/switches.log文件中。# Rule for Cisco Switch 192.168.1.10 if $fromhost-ip == '192.168.1.10' then { action(type="omfile" file="/var/log/switches.log") stop } -
重启 rsyslog 服务
sudo systemctl restart rsyslog sudo systemctl enable rsyslog
-
测试 你在交换机上执行一些操作(
interface vlan 10 shutdown然后再no shutdown),然后在日志服务器上检查/var/log/switches.log文件,你应该能看到相应的日志条目。
常见问题与排错
-
问题:日志服务器上没有收到任何日志。
- 排查:
- 检查交换机和日志服务器之间的网络连通性 (
ping)。 - 检查防火墙(服务器端和交换机端)是否允许 UDP 514 端口。
- 在交换机上使用
show logging hosts确认服务器地址正确。 - 在交换机上使用
show logging statistics查看dropped计数器是否增加。 - 在服务器上检查
rsyslog服务是否正在运行 (systemctl status rsyslog)。
- 检查交换机和日志服务器之间的网络连通性 (
- 排查:
-
问题:日志时间戳不正确或乱码。
- 排查:
- 确保在交换机上配置了
service timestamps log datetime和正确的时区 (clock timezone)。 - 检查日志服务器的时间是否准确(使用
ntpdate或chrony同步时间)。
- 确保在交换机上配置了
- 排查:
-
问题:日志量太大,服务器压力大。
- 排查:
- 在交换机上提高
logging trap的级别,例如从debugging(7) 提高到notifications(5)。 - 在服务器端配置更精细的过滤规则,只记录关键事件。
- 在交换机上提高
- 排查:
通过以上步骤,你就可以成功地在 Cisco 交换机上配置日志服务器,并开始享受集中化日志管理带来的便利了。
