跳到主要内容

6.2 子事件

工业现场中的同一类异常往往有不同程度——同样是"电压超限",220 V 是黄牌、240 V 是红牌;同样是"温度异常",缓慢爬升和瞬间飙升所需要的处置完全不同。TDengine IDMP 通过 子事件(Child Events) 支持这种"一次状况、多种程度"的建模:在同一时间窗口里按优先级判定状况的当前等级,并把每一次等级变化都记录成一条独立的事件;当窗口内累计出现两个及以上子事件时,再自动汇总出一个父事件作为整段过程的"骨架"。

备注

当前版本仅支持一级父子事件,即子事件下不能再有子事件。多级父子事件已列入产品规划。

6.2.1 父子事件如何产生

子事件由分析中 事件窗口(Event Window) 触发器上配置的多条触发规则产生:

  • 每条触发规则对应一类子事件——可以按严重程度拆分(如 severe / moderate),也可以按命中条件拆分。
  • 每来一条新数据,流计算按触发器顺序逐条求值:触发器 1 满足 → 产生触发器 1 对应的子事件,后续触发器不再评估;触发器 1 不满足 → 继续看触发器 2;依此类推。
  • 每产生一个子事件,都会立即写入事件列表并按事件模板规则发送一条通知
  • 在同一个事件窗口的生命周期内,只要累计出现两个及以上子事件,IDMP 会自动创建一个父事件作为这段过程的总览。父事件以独立行进入事件列表并与所有子事件关联,但父事件本身不发送通知——告警仅由子事件产生。
  • 如果整段窗口只命中过一条触发规则,就只有一个子事件、不会出现父事件——子事件本身就是这段过程的唯一记录。
  • 如果一个事件窗口只配置了一条触发规则,那它根本不涉及父子事件,行为与普通事件窗口分析完全一致。

子事件仅由事件窗口触发器产生;其他七种触发类型不涉及父子事件。

6.2.2 触发器顺序就是优先级

由于流计算严格按从上到下评估、命中即停,触发器的排列顺序就是业务上的优先级——严重程度高的规则必须放在前面,否则会出现逻辑错误:例如把 moderate 放在 severe 前面,则任何超过 moderate 阈值的数据都会先命中 moderate,从而永远不会落到 severe 上。

为降低出错概率,分析配置界面在用户调整某行的严重程度后会自动重新排序——严重度高的行被置顶。建议保留这一自动行为;如果由于业务原因需要打破"严重度即优先级"的排列,请在事件模板的描述中明确记录意图。

6.2.3 子事件的时间范围

子事件和父事件共享同一个时间轴,时间关系如下:

  • 子事件 #1 的开始时间 = 第一次有触发规则被命中的那一刻;
  • 后续每个子事件的开始时间 = 上一个子事件的结束时间——也就是说窗口内的多个子事件首尾相接、连续拼接,不会重叠也不留空隙;
  • 最后一个子事件的结束时间 = 父事件的结束时间,即整个事件窗口的结束条件被命中的那一刻;
  • 父事件的开始时间 = 子事件 #1 的开始时间;结束时间 = 事件窗口结束条件命中的那一刻。

父事件在第二个子事件产生时被自动创建,但它的开始时间会回填为第一个子事件的开始,整个父事件覆盖窗口内所有子事件。

6.2.4 通知与确认

  • 通知仅由子事件产生——子事件开始时按事件模板规则发送一条开始通知;父事件被自动创建后不会另外发出通知
  • 子事件结束时同样会发送一条结束通知;但如果该子事件的结束与下一个子事件的开始发生在同一时刻(流计算的命中切换),结束通知会被下一个子事件的开始通知覆盖,因此只有窗口内最后一个子事件的结束通知会独立发出。详见 6.2.9 示例
  • 父事件和每个子事件各自走独立的确认(Acknowledgment)流程。当前版本未做"确认父事件即连带确认子事件"的级联,子事件需要逐个确认;该能力已列入规划。
  • 元素的通知规则(重发间隔、升级、最大重发次数)作用在每个子事件上,与普通事件一致。

6.2.5 子事件的命名

事件模板的命名规则统一作用于父事件和子事件——按惯例命名包含元素名 + 分析名称 + 时间戳(具体格式由模板的命名规则决定,见 6.1.2.2 事件命名规则)。子事件在父事件名的基础上再追加触发器名称的后缀:

<父事件名> - <触发器名>

例如父事件名为 EM-11-Voltage Overlimit Monitoring-20260407163240,其下名为 severe 的子触发规则会生成名为 EM-11-Voltage Overlimit Monitoring-20260407163240-severe 的子事件。

触发器名称可以在分析的事件窗口触发器表格里由用户编辑;建议简短且具有可辨识性,方便在事件列表中区分不同程度的子事件。

6.2.6 在事件列表中浏览

在全局事件视图和元素的事件标签页中,含有子事件的父事件行前会出现 > 展开图标。点击展开后图标变为 v 收起图标,子事件以名称右缩进的方式逐行列在父事件下方。

子事件在列表中是独立的行——可单独点击查看详情,也会进入搜索、过滤、导出等结果集。

6.2.7 在详情页中查看

  • 子事件详情页:通用标签页字段区显示 父事件 字段,点击可跳转到父事件;
  • 父事件详情页:底部补充信息区的子事件标签页列出该父事件下的所有子事件,列与浏览事件相同。

详情页其余结构与普通事件一致,详见 6.4 事件详情

6.2.8 配置子事件

子事件不在事件模板中定义,而是在分析的事件窗口触发器中,于启动触发器下方点击 + 增加子表达式 按钮逐条添加触发行来完成配置。完整 UI 操作流程、字段含义、保存校验规则参见 7.3.6 事件窗口

6.2.9 示例:电压超限的两级严重度

某变压器电压元素需要同时监控严重超限轻度超限两种程度,使用同一个时间窗口、同一份能量统计计算。配置方式:

  1. 创建一个事件窗口触发器,结束条件 voltage < 215

  2. 在启动触发器下方点击 + 增加子表达式,按"高优先级在前"添加两条子表达式:

    顺序Trigger 名表达式Severity
    1severevoltage > 240Critical
    2moderatevoltage > 230Major
  3. 在计算段配置统一输出——窗口期间的电压峰值、平均值、累计超限时长。

假设实际运行时电压走势为:T₀ 升至 235 V(落入 moderate)→ T₁ 升至 245 V(落入 severe)→ T₂ 跌回 232 V(重新落入 moderate)→ T₃ 跌至 214 V(窗口结束)。事件列表上会出现:

事件开始结束Severity
…-Voltage Overlimit…T₀T₃
…-Voltage Overlimit…-moderateT₀T₁Major
…-Voltage Overlimit…-severeT₁T₂Critical
…-Voltage Overlimit…-moderateT₂T₃Major

时间线说明:

  • T₀:子事件 …-moderate 产生,发出一条通知。此时窗口里只有 1 个子事件,还没有父事件
  • T₁:子事件 …-severe 产生 + 前一个 moderate 子事件在 T₁ 闭合;同时父事件被自动创建,开始时间回填为 T₀,并与所有子事件关联。通知只有 severe 子事件发出的这一条,父事件不发通知。
  • T₂:又产生一条 moderate 子事件,severe 子事件在 T₂ 闭合,moderate 子事件发出一条通知。
  • T₃:窗口结束条件命中,最后一个 moderate 子事件和父事件同时闭合(结束时间 = T₃);最后一个 moderate 子事件发出一条结束通知——这是整个窗口里唯一一条独立的结束通知(前面 T₁、T₂ 处的子事件结束都与下一条子事件的开始同时发生,被后者的开始通知覆盖)。父事件全程不发通知。

整段过程虽然只产生 3 个子事件(外加 1 个父事件),但对外共发出 4 条通知:T₀、T₁、T₂ 各 1 条子事件开始通知,加上 T₃ 最后一个 moderate 子事件的结束通知。父事件全程静默地在事件列表里承担"总览"角色。