摘要
- RFC 1224 用
maxAlertsPerTime、windowTime和alertsEnabled限制单个代理产生的全部告警。 - 触线后,代理发送一次
alertsDisabled并停止异步上报,但这最后一条通知本身也可能丢失。 - 独立的轮询日志用编号保存告警副本;读出或删除一行,仍不能证明有人处置了故障。
1991 年的难题不是“有没有告警”
RFC 1224 发布于 1991 年 5 月。RFC Editor 条目将其列为实验性文档,IETF Datatracker保留了 Alert-Man 工作组的文档身份。它没有规定什么条件应该触发告警,也没有规定告警内容;它研究的是告警生成之后,信息如何不压垮管理端、又不因传输失败而消失。
异步通知会向两个方向失真。机器或网络已经损坏时,不能指望它可靠报告自身故障;链路反复上下波动时,又可能把大量通知灌进已经吃紧的管理路径。前者让“没有消息”不可信,后者让“消息很多”反而损害管理能力。
当时的协议环境强化了这个矛盾。RFC 1157让 SNMP 建立在不可靠数据报服务上,Trap-PDU 的目的地址由实现决定。RFC 1215虽给出了 TRAP-TYPE 的定义惯例,却强烈反对不断增加新 trap。定义一种消息,不等于获得它送达的证据。
“销钉”把沉默变成一个状态
RFC 1224 的第一套办法叫滑动窗口“销钉”。maxAlertsPerTime 规定最大数量,windowTime 规定观察区间,而且计数覆盖代理产生的所有告警类型,而不是每类各有额度。
代理启动时,alertsEnabled 为真。每次本地生成告警,先检查这个开关;为假则不发送,为真才发送并记录时间。当固定数量的告警挤进窗口,代理发出一次 alertsDisabled,随后把开关置为假。
这一步保护 CPU、带宽和管理端容量,却创造了新的证据缺口:宣布“以后不再发”的最后一条通知也可能丢失。因此文档要求管理端在常规轮询中检查 alertsEnabled。如果发现它为假,管理端可以重新开启,同时必须承认静默期间可能已有 trap 丢失。
所以,安静不是健康的反证。它可能是限流算法正在工作。
日志保存的是保管链,不是处置结论
第二套办法是“轮询式已记录告警”。每个本地生成的告警都形成一行:递增的 alertId 与封装在 OPAQUE 中的 alertData。管理端可以查询下一条或指定编号,取得完整副本,并可选择通过 SNMP SET 或 CMOT 的相应操作删除。RFC 1189提供了文中 CMOT/CMIP 操作示例的时代背景。
这条保管路径独立于异步送达。网络隔离结束后,管理端仍可能回收隔离期间的历史。但表不是永久档案:容量满时,最老的一行会被新记录覆盖。优先返回最老记录只能降低风险,不能保证每件事都等到采集。
编号的证明力也有限。它说明代理按该机制生成并暂存过一条记录,却不能证明异步副本离开主机、网络送达、管理端在覆盖前读到、内容准确,或有人采取行动。
删除更不是“已解决”的同义词。删除只能证明某个管理视图发生了状态变化。在多管理端环境里,不同 community 可以拥有不同阈值、开关和日志视图;一个管理端重新开启或删除,不必改变另一个管理端所见。
一条告警其实是一串事件
可靠记录至少要分开保存:故障条件、告警规则、记录生成、开关读取、窗口判断、发送尝试、网络送达、管理端接收、日志入表、轮询返回、删除、人员研判、修复动作与服务结果。产品界面可以把它们压成一个图标,事实不会因此合并。
RFC 1224 还明确说没有讨论安全问题。因此 GET、SET、DELETE 的发生,不能反推出操作者身份或授权合法性。
来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限战略圈层会员
战略圈层
所有读者均可浏览。加入并登录后可解锁档案简报。
加入战略圈层仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance





