前言
本方案旨在实现对H3C交换机用户操作行为的监控。其核心机制是:交换机利用SNMP Trap协议,将用户操作指令作为Trap消息主动推送给Zabbix监控服务器。Zabbix服务器在接收后,通过配置正则表达式对日志数据进行解析和提取,从而实现对操作指令的实时采集与处理。
第一步 创建/修改主机配置
配置IP地址为交换机管理地址 端口为162端口

bash
# 交换机侧配置
snmp-agent
snmp-agent community read public
snmp-agent sys-info version all
snmp-agent target-host trap address udp-domain 172.16.40.155 params securityname public v2c
snmp-agent trap enable arp
snmp-agent trap enable radius
snmp-agent trap enable stp
snmp-agent trap enable syslog
# 如果存在多个地址需配置一下命令
snmp-agent trap source Vlan-interface 1000
第二步 获取测试日志
snmptrap.fallback: 捕获所有未被其他监控项匹配到的 Trap。

然后查看历史记录复制即可,例如:
ini
# S5560S交换机
2026-02-27T14:05:43+0800 PDU INFO:
messageid 0
transactionid 326
community public
errorindex 0
version 1
errorstatus 0
requestid 1814096371
notificationtype TRAP
receivedfrom UDP: [172.16.100.21]:42882->[172.16.40.155]:162
VARBINDS:
iso.3.6.1.2.1.1.3.0 type=67 value=Timeticks: (1200431372) 138 days, 22:31:53.72
iso.3.6.1.6.3.1.1.4.1.0 type=6 value=OID: iso.3.6.1.2.1.192.0.1
iso.3.6.1.2.1.192.1.2.1.2.27 type=2 value=INTEGER: 23
iso.3.6.1.2.1.192.1.2.1.3.27 type=2 value=INTEGER: 6
iso.3.6.1.2.1.192.1.2.1.4.27 type=66 value=Gauge32: 1
iso.3.6.1.2.1.192.1.2.1.5.27 type=4 value=Hex-STRING: 07 DD 05 13 16 1F 38 00 00 00 2D 00 00
iso.3.6.1.2.1.192.1.2.1.6.27 type=4 value=STRING: "sever"
iso.3.6.1.2.1.192.1.2.1.7.27 type=4 value=STRING: "SHELL"
iso.3.6.1.2.1.192.1.2.1.8.27 type=4 value=STRING: "-"
iso.3.6.1.2.1.192.1.2.1.9.27 type=4 value=STRING: "SHELL_CMD"
iso.3.6.1.2.1.192.1.2.1.10.27 type=66 value=Gauge32: 4
iso.3.6.1.2.1.192.1.2.1.11.27 type=4 value=STRING: " Command is dis cu"
iso.3.6.1.2.1.192.1.3.1.4.27.1.12.83.121.115.76.111.99.64.50.53.53.48.54.4.83.108.111.116 type=4 value=STRING: "1"
iso.3.6.1.2.1.192.1.3.1.4.27.2.12.65.112.112.76.111.99.64.50.53.53.48.54.4.76.105.110.101 type=4 value=STRING: "vty0"
iso.3.6.1.2.1.192.1.3.1.4.27.3.12.65.112.112.76.111.99.64.50.53.53.48.54.6.73.80.65.100.100.114 type=4 value=STRING: "172.16.30.158"
iso.3.6.1.2.1.192.1.3.1.4.27.4.12.65.112.112.76.111.99.64.50.53.53.48.54.4.85.115.101.114 type=4 value=STRING: "**"
ini
# S7000E交换机
2026-02-27T15:02:51+0800 PDU INFO:
notificationtype TRAP
receivedfrom UDP: [172.16.100.254]:21060->[172.16.40.155]:162
requestid 523977771
errorstatus 0
version 1
errorindex 0
community public
transactionid 429
messageid 0
VARBINDS:
iso.3.6.1.2.1.1.3.0 type=67 value=Timeticks: (1200773644) 138 days, 23:28:56.44
iso.3.6.1.6.3.1.1.4.1.0 type=6 value=OID: iso.3.6.1.2.1.192.0.1
iso.3.6.1.2.1.192.1.2.1.2.1630 type=2 value=INTEGER: 23
iso.3.6.1.2.1.192.1.2.1.3.1630 type=2 value=INTEGER: 6
iso.3.6.1.2.1.192.1.2.1.4.1630 type=66 value=Gauge32: 1
iso.3.6.1.2.1.192.1.2.1.5.1630 type=4 value=Hex-STRING: 07 EA 02 1B 0F 30 0C 00 00 00 2D 00 00
iso.3.6.1.2.1.192.1.2.1.6.1630 type=4 value=STRING: "H3C-S7000E-Core"
iso.3.6.1.2.1.192.1.2.1.7.1630 type=4 value=STRING: "SHELL"
iso.3.6.1.2.1.192.1.2.1.8.1630 type=4 value=STRING: "-"
iso.3.6.1.2.1.192.1.2.1.9.1630 type=4 value=STRING: "SHELL_CMD"
iso.3.6.1.2.1.192.1.2.1.10.1630 type=66 value=Gauge32: 4
iso.3.6.1.2.1.192.1.2.1.11.1630 type=4 value=STRING: " Command is snmp-agent trap source Vlan-interface 1000"
iso.3.6.1.2.1.192.1.3.1.4.1630.1.12.83.121.115.76.111.99.64.50.53.53.48.54.4.83.108.111.116 type=4 value=STRING: "1"
iso.3.6.1.2.1.192.1.3.1.4.1630.2.12.65.112.112.76.111.99.64.50.53.53.48.54.4.76.105.110.101 type=4 value=STRING: "vty5"
iso.3.6.1.2.1.192.1.3.1.4.1630.3.12.65.112.112.76.111.99.64.50.53.53.48.54.6.73.80.65.100.100.114 type=4 value=STRING: "172.16.30.158"
iso.3.6.1.2.1.192.1.3.1.4.1630.4.12.65.112.112.76.111.99.64.50.53.53.48.54.4.85.115.101.114 type=4 value=STRING: "admin"
第三步 抓取特定的日志
snmptrap[regexp]: 只捕获匹配特定正则表达式的 Trap。使用snmptrap["SHELL_CMD"]匹配特定的日志文件 为什么这样做? 因为单台设备存在系统日志、操作日志... 本次我们呈现操作日志。

第四步 对日志进行预处理

- 名称:
正则表达式 - 参数:
(?s)1\.11\.\d+.*?value=STRING: " Command is (.*?)".*?1\.3\.1\.4\.\d+\.3\..*?value=STRING: "(.*?)" - 输出:
执行IP: \2 | 操作命令: \1
第五步 测试匹配情况

符合预期效果

第六步 最终效果

目前已测试S7000E以及S5560S交换机 数据呈现正常