概述
Keep 工作流引擎中的触发器定义了工作流何时执行。触发器是工作流的起点,可以配置为响应各种事件、条件或计划。
一个工作流可以有一个或多个触发器,这些触发器决定了启动工作流的具体情况。例如手动调用、基于时间的计划或事件驱动操作(如告警或事件更新)。
触发器在工作流 YAML 文件的 triggers 部分下定义。每个触发器都有一个 type 和可选的附加配置或过滤器。
支持的触发器类型
手动触发器
用于按需执行工作流。
yaml
triggers:
- type: manual间隔触发器
按固定时间间隔运行工作流。
yaml
triggers:
- type: interval
# 每 5 秒运行一次
value: 5告警触发器
当收到告警时执行工作流。
yaml
triggers:
- type: alert::: note 如果未指定过滤器或 CEL 表达式,工作流将对每个进入的告警执行。 :::
过滤告警
在 Keep 中有两种过滤告警的方式:
1. 基于 CEL 的过滤(推荐)
Keep 使用通用表达式语言 (CEL)来过滤告警。CEL 提供了一种强大而灵活的方式,使用简单的表达式语言来表达条件。
yaml
triggers:
- type: alert
cel: source.contains("datadog") && severity == "critical"常用 CEL 模式:
- 字符串匹配:
source.contains("prometheus") - 精确匹配:
severity == "critical" - 多条件:
source.contains("datadog") && severity == "critical" - 模式匹配:
name.contains("error") || name.contains("failure") - 复杂条件:
(source.contains("datadog") && severity == "critical") || (source.contains("newrelic") && severity == "error")
您可以使用 CEL Playground 来测试和实验 CEL 表达式。
2. 旧式过滤(已弃用)
旧的过滤机制已弃用,但仍然支持以保持向后兼容。它使用带有可选正则表达式的键值对列表。
yaml
triggers:
- type: alert
filters:
- key: severity
value: critical
- key: source
value: datadog
- key: service
value: r"(payments|ftp)"事件触发器
当事件被创建、更新或解决时运行工作流。
yaml
triggers:
- type: incident
on:
- create
- update字段变更触发器
当告警中的特定字段(如状态或严重性)发生变化时执行工作流。
yaml
triggers:
- type: alert
only_on_change:
- status总结
触发器是控制工作流执行的一种强大方式,确保它们能够适当地响应手动操作、计划或事件。通过利用 CEL 表达式或过滤器,可以对工作流进行微调,使其仅在特定条件下执行。
有关 CEL表达式的更多信息,请参阅 CEL 语言定义 并在 CEL Playground 中实验表达式。