# SnmpTrapServer **Repository Path**: NetAxeClub/snmp-trap-server ## Basic Information - **Project Name**: SnmpTrapServer - **Description**: snmp trap server - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 0 - **Created**: 2023-05-08 - **Last Updated**: 2026-09-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SNMPTrapServer #### Description 用于接收 snmp trap 消息,并将消息发送到 prometheus 的 pushgateway 中和 zabbix 中,,然后通过 prometheus 或者 zabbix 报警 #### Software Architecture 主要使用了 github.com/gosnmp/gosnmp 来解析 snmp 报文 #### Installation 1. 下载代码包 2. go get 3. go build -o snmptrap-server main.go #### Instructions 1. 收集到的 snmp 报文主要分三部分: - OID: 发送到 trapserver 的 oid, ‘.1.3.1.’这种格式的数据 - Value: 发送过来的值 - Type: SNMP 数据类型 2. 接受到之后,组装了一个 snmp_trap_pdu{host=“发送过来的主机 IP” OID=“.x.x.x.x." value="xxxx" type="xxxxx" ts=“接收到消息的时间”} 如果 snmp_trap_pdu 接收到的值为 1,表示有消息,值为 0 表示已经恢复 #### 启动项目 开发 go run main.go 手动发送 trap 消息 cd client go run test_client.go #### prometheus 查询语法 machine_snmp_trap_info{job="snmp_trap"} cp config.yml.bak config.yml #### Trap 过滤策略 仓库随附的 `blackmiblist.txt` 只过滤 `syslogMsgNotification`(系统日志通知, OID `1.3.6.1.2.1.192.0.1`)。认证失败、链路变化、邻居变化、配置变更、 时间同步失败以及厂商通知不再由随附黑名单过滤。 每行格式为 `"名称" "数字 OID"`。接收器按 OID 本身或其子节点匹配,报文中 任一变量命中即丢弃整包,因此不要把整个厂商子树或通用变量字段加入系统日志过滤规则。 设备或监控中心另行配置的屏蔽、聚合及抑制策略仍独立生效。 验证随附策略:`go test ./trap -run TestShippedBlacklistOnlyFiltersSyslogNotifications`。 Dockerfile 将黑名单打入镜像;修改本地文件不会更新运行中的容器。 生产发布须更新镜像并通过平台 `deploy/deploy.sh` 的组件发布流程生效, 随后核对容器内规则、接收/丢弃/发送计数及真实非系统日志事件入库情况。