U‑Center5.0 Trap 自定义 OID,推送输出带$符号不解析问题
现象:在 Trap 定义的 “详细信息” 模板、告警转发模板里填写变量,实际告警 / 邮件 / 接口推送原样输出$.1.3.6.xxx或${.1.3.6.xxx},美元符号没有被替换成 trap 报文里的实际值。
根因
U‑Center5.0 两套模板语法,不要混用
✅Trap 定义页面【详细信息】(告警库内部解析):用$1 $2 $3这种索引占位符,按 Trap 报文中 Variable‑bind 顺序编号,不是直接写 OID。
✅告警转发规则(邮件 / 短信 / 北向接口)模板:才使用 ${.1.3.6.1.4.1.xxx} 完整数字 OID 格式引用变量。
❌错误:在 Trap 定义 “详细信息” 直接写$.1.3.6.1.4.1.xxx,会原样打印美元符号,不会做变量替换。
虽然你在 Trap 定义里添加了第三方 OID,但没有把该 OID 加入该 Trap 的变量列表(绑定 vb 索引),平台收到 trap 报文不知道第几个位置对应你的 OID,变量为空,模板直接输出原始字符串。
Trap 报文里该 OID 的 varbind 实际没有上送过来;或 MIB 未导入,不影响变量替换,但影响 OID 名称显示。
完整正确配置步骤
步骤 1:Trap 定义中绑定新增 OID(关键)
路径:告警管理 → 告警设置 → Trap定义,编辑你要修改的那条预定义 Trap OID。
在【变量】区域,增加行,填入第三方完整数字 OID(例如.1.3.6.1.4.1.9999.1.1)。
系统会分配一个索引编号,比如$5(看列表顺序,从 1 开始)。
⚠️这里是告诉 UC:收到这个 Trap 时,把报文中这个 OID 的 value 提取出来,分配给$5。
在【详细信息】文本框,使用索引占位符$5,不要写 OID 字符串。
示例:设备发生告警,附加字段:$5。
这里不能写 ${.1.3.6.1.4.1.9999.1.1},写在这里会原样输出 $ 符号。
步骤 2:告警转发模板(邮件 / 北向接口)引用
路径:告警管理 → 告警转发 → 转发规则,编辑转发内容模板。
转发模板才支持 ${完整数字OID} 的语法,示例:
plaintext
告警内容:${alarmContent}
扩展字段:${.1.3.6.1.4.1.9999.1.1}
注意:必须完整带.开头的数字 OID,不能写 MIB 节点名称。
步骤 3:验证 Trap 报文是否携带该 OID
使用 UC 自带诊断工具:系统维护‑诊断工具‑Trap测试,构造测试 trap,带上你的新增 OID 的 varbind,模拟上送,看活动告警、转发输出是否正常解析。
也可以抓包看设备上送的 SNMP Trap 报文,确认 variable‑bind 列表里确实包含你这个 OID。
如果设备不上送该 OID,无论怎么配置,变量为空,转发模板会输出空字符串。
步骤 4(可选)导入 MIB
路径:资源‑MIB管理‑MIB库管理导入厂商 MIB 文件,作用是OID 翻译成可读名称;不导入 MIB 不影响变量值替换,只影响显示名称。
常见踩坑
两套模板语法混淆:
Trap 定义【详细信息】:只能用$1 $2 $3索引;
转发规则模板:用${.完整OID};
搞混就会出现$原样输出。
Trap 定义里只是在描述文本写了 OID,没有在【变量】列表添加这个 OID,系统不会提取该 varbind 的值。
Trap 报文里该 OID 不是必带上送,设备侧 trap 触发时没有携带该 varbind,UC 拿不到值。
修改 Trap 定义后,不需要重启服务,立即生效;测试用 Trap 测试工具,不要拿历史旧告警看效果。
快速排错命令 / 页面
告警 → Trap浏览:查看原始 trap 报文,看 varbind 列表,确认你的 OID 是否真实存在。
使用系统 trap 测试工具构造报文测试,排除设备侧问题。
转发异常看日志:系统‑日志管理‑运行日志列表过滤 alarmforward。
补充说明
U‑Center5.0 不支持直接在原有预定义 trap 的告警升级逻辑里自动识别未配置的 OID;所有需要解析的 varbind,必须手动在 Trap 定义的变量列表显式添加 OID,否则不会提取报文内该 OID 的值。
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论