Zabbix收集H3C交换机实时配置命令 「SNMP TRAP」

0 阅读3分钟

前言

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

第一步 创建/修改主机配置

配置IP地址为交换机管理地址 端口为162端口

Pasted image 20260227142602.png

# 交换机侧配置
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。

Pasted image 20260227143512.png

然后查看历史记录复制即可,例如:

# 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: "**"
# 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"] 匹配特定的日志文件 为什么这样做? 因为单台设备存在系统日志、操作日志... 本次我们呈现操作日志。

Pasted image 20260227143001.png

第四步 对日志进行预处理

Pasted image 20260227144131.png

  • 名称: 正则表达式
  • 参数: (?s)1\.11\.\d+.*?value=STRING: " Command is (.*?)".*?1\.3\.1\.4\.\d+\.3\..*?value=STRING: "(.*?)"
  • 输出:执行IP: \2 | 操作命令: \1

第五步 测试匹配情况

Pasted image 20260227144333.png

符合预期效果

Pasted image 20260227144408.png

第六步 最终效果

Pasted image 20260227144507.png

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