通过自动重试提高 playbook 的弹性

支持的平台:

本文档介绍了 playbook 中的自动化操作有时会因网络中断或 API 速率限制等临时问题而失败。为确保剧本更具弹性,您可以将各个操作配置为在遇到此类故障时自动重试。

操作重试有助于您的 playbook 从临时性故障(例如网络问题、API 速率限制或服务不可用)中恢复。这些重试适用于标准 playbook 操作,例如丰富化、遏制或通知。

重试机制由操作的内部执行状态触发,而不是由标准 HTTP 错误代码触发。对于遇到超时问题的操作或用于控制流程的操作(例如条件或 playbook 块),系统不会尝试重试,因为这些操作并非以相同的方式设计为会失败。

操作重试机制条件

仅当操作在特定条件下失败时(通常表示存在暂时性、基础架构或未处理的故障),才会触发重试机制。不会针对与超时或流量控制操作相关的故障激活。

触发重试的条件

仅当操作在以下情况下失败时,重试机制才会启动:

  • 未处理的脚本错误:在操作的 Python 脚本中发生,但您未在脚本中明确处理的任何错误或异常。
  • 显式失败状态:操作脚本明确向服务器返回执行状态 EXECUTION_STATE_FAILED
  • 基础架构故障:源自底层基础架构的故障,例如导致无法成功完成任务的连接问题(例如,Python 连接错误)。

绕过重试的条件(不尝试重试)

在与超时或流量控制操作相关的失败场景中,系统会绕过重试:

  • playbook 执行超时:操作无法在为特定 playbook 步骤配置的常规超时时限内完成并返回结果。
  • 已处理的超时状态:操作脚本通过返回状态 EXECUTION_STATE_TIMEOUT 明确报告内部操作超时。服务器会将此视为“已处理的超时”,从而允许 playbook 继续执行,而无需重试。

配置操作重试

如需为操作配置重试,请按以下步骤操作:

  1. 在剧本设计器中双击相关操作。
  2. 在边栏中,点击设置标签页,然后点击失败时重试切换开关,将其切换到开启位置。
  3. 指定以下参数:
    • 重试次数:输入操作失败时应尝试重新运行的次数。
    • 重试之间的延迟时间:定义每次重试尝试之间的延迟时间(以秒、分钟或小时为单位)。
  4. 如果步骤失败部分,如果操作在所有重试尝试后最终失败,请选择以下选项之一:
    • 停止 playbook:停止执行 playbook。
    • 跳过步骤:playbook 继续执行下一步。
  5. 点击保存

在 playbook 执行期间,重试如何显示

当具有重试功能的 playbook 步骤运行时,您会看到特定的状态和消息,指示重试尝试的进度:

  • 如果某个操作在配置了重试的情况下失败,那么在下一次尝试之前,Playbook 标签页中该操作的状态会暂时变为正在等待下一次重试
  • 如果操作在一次或多次重试后成功,则其在 Playbook 标签页中的最终状态会显示为成功,并附带重试次数(例如,Completed after two retries)。
  • 如果操作在所有重试尝试后仍失败,其最终状态会指示失败,并显示重试次数(例如,重试 3 次后失败)。
  • 有关重试的相关信息也会显示在案例墙上。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。