4. 简单触发条件:基于单一字段值的条件

简单触发条件是 CollectionEvent 最基础的判定逻辑。它仅依赖事件载荷(Payload)中一个字段的值与预设阈值或枚举值进行比较,当比较结果为真时触发事件。这类条件配置直观、计算开销低,适用于监控单一指标是否越界或状态是否变更的场景。

4.1 条件运算符与语义

单一字段值支持六种比较运算符,覆盖等值判断与范围判断。下表列出各运算符的语义与典型数据类型:

运算符 语义 适用数据类型 示例表达式
equals 等于 字符串、数值、布尔 status == "ERROR"
not_equals 不等于 字符串、数值、布尔 level != 0
greater_than 大于 数值、时间戳 cpu > 90
less_than 小于 数值、时间戳 memory < 256
in_range 在闭区间内 数值 temperature in [20, 30]
not_in_range 在闭区间外 数值 error_rate not in [0, 0.01]
设计建议:对于布尔字段(如 is_active),优先使用 equals 或 not_equals,避免使用大于/小于运算符,以保持语义清晰。

4.2 配置示例:JSON 结构

以下是一个基于单一字段 cpu_usage 的简单触发条件配置。当 CPU 使用率超过 90% 时触发事件:

{
  "eventName": "HighCpuAlert",
  "trigger": {
    "type": "simple",
    "field": "cpu_usage",
    "operator": "greater_than",
    "value": 90
  },
  "source": "server-metrics"
}

另一个示例:监控订单状态字段 order_status 是否等于 "CANCELLED":

{
  "eventName": "OrderCancelled",
  "trigger": {
    "type": "simple",
    "field": "order_status",
    "operator": "equals",
    "value": "CANCELLED"
  },
  "source": "order-service"
}

4.3 适用场景

简单触发条件在以下三类场景中最为高效:

  • 阈值告警:监控基础设施指标(CPU、内存、磁盘、延迟),当单一指标超过安全阈值时立即触发告警事件。
  • 状态变更通知:跟踪业务实体(订单、工单、任务)的状态字段,当状态变为特定值(如“失败”、“取消”)时触发下游通知或补偿流程。
  • 数据质量检查:对流入的数据字段做基本校验,例如 age 字段不在合理范围 [0, 150] 内时触发清洗事件。

4.4 条件判定流程

下图展示了简单触发条件在事件处理管道中的判定路径:

简单触发条件判定流程 事件到达 提取字段值 比较运算 条件为真 触发 CollectionEvent 条件为假 忽略事件 说明 比较运算使用预配置的 运算符与阈值,仅支持 单一字段,无组合逻辑。 时间复杂度 O(1)。

4.5 配置注意事项

常见陷阱:
  • 数据类型不匹配:字段实际类型与配置类型不一致(如字符串 "90" 与数值 90 比较),会导致比较结果始终为假。建议在事件源端做类型强制转换。
  • 空值处理:当字段值为 null 或缺失时,简单条件默认判定为假,不会触发事件。如需对空值做特殊处理,应使用后续章节的复合条件或自定义脚本。
  • 范围边界:in_range 和 not_in_range 使用闭区间,即边界值包含在内。例如 in_range [0, 100] 包含 0 和 100。

4.6 与报告订阅的关联

简单触发条件通常与即时报告订阅模式配合使用。当条件满足时,事件立即被推送到订阅端,无需等待固定时间窗口。配置示例:

{
  "subscriptionId": "sub-cpu-alert",
  "eventName": "HighCpuAlert",
  "deliveryMode": "instant",
  "endpoint": "https://alerting.company.com/webhook/cpu"
}

这种组合适用于需要秒级响应的场景,如生产环境故障自愈、交易异常拦截等。

4.7 小结