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 条件判定流程
下图展示了简单触发条件在事件处理管道中的判定路径:
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"
}
这种组合适用于需要秒级响应的场景,如生产环境故障自愈、交易异常拦截等。