3. 离线告警系统需求分析

需求分析是离线告警系统从“想法”走向“可交付”的第一道关口。农业物联网场景与通用IT监控有显著差异:设备部署在田间地头,供电靠太阳能或电池,通信走LoRa、NB-IoT或4G,网络本身就不稳定;一个基地可能有几十到上千个节点,而值守人员往往只有一两个人。因此,需求分析不能照搬机房监控的模板,必须围绕“哪些设备、多久没上报算离线、告警发给谁、误报能不能承受”这几个真实问题展开。

本节把需求拆成三块:功能需求回答系统“必须做什么”,非功能需求回答“做到什么程度才算合格”,用户角色与告警分级回答“告警给谁、按什么优先级处理”。三者共同构成后续架构设计与代码实现的验收基线。

一、功能需求:监测、触发、推送三条主线

功能需求可以归纳为三条主线,它们之间存在明确的先后依赖关系:实时监测产生设备状态数据,告警触发基于状态数据做判定,通知推送把判定结果送达责任人。缺少任何一环,系统都不成立。

实时监测的核心不是“收到数据”,而是“知道每台设备最后一次上报是什么时候”。工程上通常为每台设备维护一个“最后上报时间戳”和“当前状态”字段。设备每次上报数据(无论是传感器读数还是心跳帧),都刷新该时间戳。监测模块还需要处理设备首次接入、设备更换、设备停用等生命周期事件,否则新设备会被误判为从未上线,停用设备会持续产生告警。

告警触发的本质是一个超时判定:当前时间减去最后上报时间戳,若超过设定的离线阈值,则判定为离线。这里有两个容易踩坑的细节。其一,阈值不能一刀切。土壤墒情节点可能每30分钟上报一次,阈值设为90分钟较合理;而大棚控制器可能每5分钟心跳一次,阈值设为20分钟更合适。其二,判定需要“去抖”,即连续多个检测周期都满足超时条件才触发,避免因单次网络抖动造成瞬时误判。

通知推送要解决“送得到、看得懂、可追溯”三个问题。送得到,意味着要支持短信、电话、微信/钉钉机器人、平台站内消息等多种通道,并能在主通道失败时降级到备用通道;看得懂,意味着通知内容要包含设备编号、所属基地/大棚、离线开始时间、影响业务(如“3号大棚灌溉阀无法远程控制”);可追溯,意味着每次推送都要落库,记录发送时间、通道、接收人和送达结果。

离线告警功能主线:监测 → 判定 → 推送 实时监测 设备上报 → 刷新时间戳 维护状态:在线/离线/停用 处理首次接入与设备更换 告警触发 超时判定:now − 最后上报 按设备类型设差异化阈值 连续N周期去抖,防瞬时误判 通知推送 短信/电话/机器人/站内信 主通道失败降级备用通道 推送记录落库,可追溯 判定示例(假设参数): 墒情节点上报周期30min,阈值90min,连续2个检测周期超时触发;控制器心跳5min,阈值20min,连续3周期超时触发。 非功能约束 可靠性:漏报率低、推送不丢;时延:分钟级;误报率可控 角色与分级 P1关键设备→电话+短信;P2一般设备→短信;P3辅助→站内信

二、非功能需求:可靠性、时延、误报率

非功能需求决定了系统“好不好用”,在农业场景中往往比功能本身更关键。

可靠性包含两层含义。第一层是“不漏报”:设备真的离线了,系统必须发现。这要求监测任务本身具备容错能力,例如检测服务采用多实例部署或定时任务加锁,避免单点故障导致整段时间无人判定。第二层是“不丢推送”:告警产生后,即使短信网关短暂不可用,也要能重试并最终送达。工程上常用“告警事件表 + 推送状态机”实现,推送失败进入重试队列,超过重试次数则升级为电话通知。

时延需要区分“检测时延”和“通知时延”。检测时延取决于检测周期,若每分钟扫描一次,最坏情况下设备离线后约一个阈值加一个周期才被发现。通知时延取决于通道,短信通常数秒到数十秒,电话呼叫建立约十秒级。对于灌溉阀、卷帘机这类关键设备,检测周期应缩短到1分钟以内;对于只做数据采集的墒情节点,5分钟周期即可。需求文档中应明确写出“关键设备离线后X分钟内发出通知”这样的可验收指标,而不是笼统写“实时”。

误报率是农业场景中最敏感的非功能指标。误报主要来源有三类:网络抖动导致的短暂断连、设备低电量时的间歇休眠、以及阈值设置过紧。控制手段包括:设置合理的去抖次数、对已知的弱信号区域单独放宽阈值、在设备上报中区分“心跳”和“数据”两类帧并分别计时。实践中可以把误报率目标定为“每台设备每月不超过2次”,并通过告警确认记录持续统计实际值。

需求评审时建议把“误报率”和“漏报率”同时写进验收条款。只追求低误报会倾向于放宽阈值,反而增加漏报风险,两者需要与业务方共同确认平衡点。

三、用户角色与告警分级

告警发给谁,取决于角色分工。典型的农业物联网运维场景包含四类角色:基地管理员负责现场处置,是大多数告警的第一响应人;片区运维人员负责跨基地的设备维修与更换;平台管理员负责阈值配置、设备台账和通道管理;业务负责人关注影响生产的重大事件,通常只接收高等级告警的汇总。

告警分级应依据“设备离线对生产的影响程度”而非设备价格。可以划分为三级:P1为关键设备离线,直接影响生产控制或安全,如灌溉阀控制器、温室卷帘机、鱼塘增氧机控制器,要求电话加短信双通道、5分钟内触达、未确认则15分钟后升级;P2为重要采集设备离线,影响决策数据完整性,如土壤墒情、气象站,走短信或机器人通知,30分钟内触达;P3为辅助设备离线,如备用节点、展示屏,走站内消息,按日汇总即可。

级别典型设备通知通道响应要求升级策略
P1灌溉阀控制器、卷帘机、增氧机电话 + 短信5分钟内触达15分钟未确认升级至业务负责人
P2墒情节点、气象站短信 / 机器人30分钟内触达2小时未确认转片区运维
P3备用节点、展示屏站内消息按日汇总不升级

分级还需要与“告警确认”机制配合。接收人点击确认后,系统记录确认人和时间,停止升级;若超时未确认,则按升级策略通知上一级。这样既避免了“所有告警都发给所有人”的噪声,也保证了关键告警不会因为某个人没看手机而石沉大海。

把上述内容落到一份可执行的需求清单上,至少应包含:设备类型与上报周期清单、每类设备的离线阈值与去抖次数、检测周期、通知通道与降级顺序、角色与接收人映射、分级规则与升级时限、误报率与漏报率的验收口径。这份清单既是开发依据,也是上线后复盘告警质量时的对照基准。