赫伯罗特如何使用 Amazon Step Functions 自动管理事件

作者: 丹尼尔·摩泽, 迈克尔·格劳曼 |

这篇文章由 Hapag-Lloyd AG 的 Grzegorz Kaczor 和 Daniel Steenbock 以及亚马逊云科技的 Michael Graumann 和 Daniel Moser 共同撰写。

导言

在当今快节奏的数字化环境中,高效的事件管理对于维持高质量的客户体验至关重要。在我们之前的文章中,我们讨论了赫伯罗特的网络和移动部门如何为无服务器多账户工作负载建立可观察性,以提高在快速变化的亚马逊云科技环境中的可见性。我们强调了建立强有力的监测解决方案作为卓越运营基石的重要性。通过降低 MTTR 的自动化事件管理,可以改善访问日志和接收事件警报的能力。虽然我们目前向 Microsoft Teams 发送警报通知以随时向开发人员通报情况,但仍需要通过自动向事件管理团队通报潜在事件、提供相关的背景数据来改善我们与事件管理团队的合作。积极监控每次中断,以逻辑方式处理数据,然后做出明智的决策也很重要。为了实现这一目标,我们利用了 Amazon Step Functions 和 Amazon OpenSearch Service 来自动化和简化事件响应流程,从而显著缩短了平均响应时间 (MTTR)。

赫伯罗特拥有由 292 艘现代集装箱船组成的船队,总运输能力为 230 万标准箱,是世界领先的班轮运输公司之一。TEU,或二十英尺当量单位,是用于确定集装箱船和港口货物容量的计量单位。在班轮运输领域,该公司拥有约 13,700 名员工,在 139 个国家设有 399 多个办事处。赫伯罗特的集装箱容量为 340 万标准箱,其中包括最大和最现代化的冷藏集装箱船队之一。全球共有 113 条班轮服务,确保了各大洲 600 多个港口之间的快速可靠连接。

该公司的网络和移动团队是一个分布式团队,位于汉堡和格但斯克,负责公司客户渠道的网络和移动产品。

这篇博客文章将指导您了解 Web 和移动团队为改善事件管理而构建的解决方案,通过自动检测应用程序中断和创建工单来降低 MTTR。此外,还可以收集提供给相应应用程序和事件管理团队的相关背景信息。

解决方案

当我们自动创建使用相关信息进行更新以触发其他操作的票证时,我们希望以协调的方式做到这一点。这就是 Amazon Step Functions 发挥作用的地方。

Amazon Step Functions 是一项无服务器工作流程服务,可帮助开发人员使用可视化工作流程构建和运行分布式应用程序。它是一款功能强大的工具,可简化涉及多个亚马逊云科技服务或外部应用程序的复杂工作流程的协调。

Step Functions 允许您将工作流设计和运行为一系列步骤,每个步骤代表特定的任务或活动。这些步骤可以是 Amazon Lambda 函数、亚马逊云科技 API 调用,甚至是外部网络服务调用中的任何步骤。该服务提供工作流程的可视化表示,使其更易于理解和管理执行流程。此外,Step Functions 可自动处理重试、错误处理和状态管理,从而降低构建和维护分布式应用程序的复杂性。该服务对于构建无服务器应用程序、协调微服务和自动化复杂业务流程特别有用。通过使用 Step Functions,开发人员可以专注于其核心应用程序逻辑,而亚马逊云科技则负责处理底层基础设施和可扩展性。

我们为整个事件处理流程设置了步进功能工作流程。每次检测到应用程序中断或事件时,都会启动一个工作流程执行。在接下来的部分中,我们将引导您完成工作流程的各个步骤以及负责解决事件响应计划的人员的历程。

处理事件的 Step Functions 工作流程概述

当检测到应用程序中断时,将开始执行工作流程。图 1 说明了工作流程。当检测到应用程序中断时,将开始执行状态机。触发状态机工作流程的警报示例是过去 5 分钟内有 90% 的请求返回 HTTP 500 错误。

用于协调事件响应流程的 Step Functions 工作流程的可视化表示。该工作流程包含 9 个步骤,将在正文的下一节中详细介绍。

图 1:用于协调事件响应工作流程的 Step Functions 工作流程

然后,工作流程循环运行,直到事件得到解决,并在每次迭代中更新相应的票证。流程如下:

  1. 作为第一步,工作流程会验证问题是否持续存在,而不仅仅是误报。这是通过引入 "预热" 阶段来实现的:工作流程的主流程仅在警报处于活动状态的时间最短时才开始。
  2. 我们的 Amazon CloudWatch 警报提供一些基本信息,例如突破的阈值和一些静态细节。为了收集详细的故障数据,该工作流程会向 Amazon OpenSearch Service(我们的集中日志系统)查询相关日志,查明每个受影响终端节点的故障。此日志信息用于丰富通知并提供中断的背景信息(例如在 Jira 票证或 Microsoft Teams 消息中)。
  3. 然后,工作流程会检查是否已经为特定事件创建了 Jira 票证。在任何给定时间,每个应用程序只能有一个活动事件。
  4. 如果尚未为该事件创建 Jira 票证,则会生成新票证。该票证包含有关受影响产品的基本详细信息以及从 OpenSearch Service 收集的有关停机的信息。
  5. 创建 Jira 票证后,将向相关产品团队发送通知(图 2)。目标是保持团队的透明度,确保他们了解事件及其处理情况。
通知产品团队其应用程序出现故障。该通知包括有关应用程序的信息,自其处于警报状态以来,票证ID和用于打开票证的按钮。

图 2:向产品团队发出的应用程序中断的通知。

  1. 如果 Jira 票证已经存在,则表示工作流程处于第二次或后续迭代中。使用评论更新现有票证,其中包括事件的最新状态和来自 OpenSearch Service 的更新信息。
  2. 我们维护一个内部状态页面,用于跟踪应用程序的可用性。如果需要更新受影响应用程序的状态,工作流程将相应地更新状态页面,这使感兴趣的利益相关者可以跟踪事件。
  3. 在每次迭代结束时,工作流程会检查 Jira 票证是否已关闭。如果票证处于打开状态,则工作流程会等待预定义的时间后再重复该过程。这个循环一直持续到问题解决和票证关闭为止。
  4. 如果票证已关闭,工作流程将停止进一步执行。

用户旅程

如上一节所述,当检测到中断时,系统会创建票证并通知负责团队。第一个联系人通常是事件管理团队,他们将通过审查应用程序日志、将事件与(潜在)其他报告关联以及按照申请团队的记录进行调查和解决来评估所报告的事件。如果事件管理团队无法自行解决问题,他们将上报给应用程序团队,提供他们已经收集的所有信息以支持快速解决问题。

图 3 显示了生成的票证,其中包含基本信息以及为便于识别责任人而分配的适当标签。

由于检测到中断而创建的 Jira 票证。该票证显示了重要的元数据,例如负责的产品团队、应用程序、事件来源、影响和紧急程度。

图 3:为停机创建了 Jira 票证

该自动化还利用评论部分来提供有关受影响端点的更多详细信息,以及指向相关日志和仪表板的快速链接(图 4)。

Jira 票证的评论部分提供有关受影响端点的详细信息以及指向日志和仪表板的快速链接。

图 4:评论部分中包含有关受影响端点的详细信息的票证

单个工作流程执行对应于单个应用程序中断,并且在票证关闭之前一直处于活动状态。图 5 显示了工作流程如何使用最新状态更新票证注释,包括两个受影响的新端点,这表明中断现在也影响了应用程序的其他部分。

更新了评论部分,增加了两个受影响的新端点,表明中断现在正在影响应用程序的其他部分

图 5:更新的评论部分

工作流程会定期检查警报状态。当它检测到应用程序再次正常运行时,此信息也会包含在注释中(图 6)。

更新了评论部分,显示中断已解决,应用程序已恢复运行

图 6:成功解决问题后更新了评论部分

请注意,我们在票证中包含访问和应用程序日志的 URL。这使责任方能够无缝地从票证导航到实际日志,从而缩短确定停机原因所需的时间。

收到通知后,我们的事件管理团队随后利用 OpenSearch Service 中的日志和仪表板(图 7)深入研究中断情况,并向应用程序团队提供反馈,以防他们无法使用可用的运行手册自行解决问题。

OpenSearch 服务仪表板显示了应用程序的整体运行状况。仪表板显示故障率、HTTP 响应代码分布和延迟等指标。

图 7:OpenSearch Service 仪表板提供了应用程序运行状况的总体视图。

在事件管理或应用程序团队努力解决问题的同时,通过 Step Functions 实现的自动化可确保工单中始终跟踪最新状态。这提供了一种结构化的方法,还有助于在活动结束后改进运行手册。

结论

在这篇文章中,我们演示了赫伯罗特的网络和移动团队如何使用 Amazon Step Functions 和 Amazon OpenSearch Service 自动执行事件管理流程。我们展示了 Amazon Step Functions 如何帮助协调从票证创建和更新、警报检查到根本原因分析和关闭票证等不同步骤。这种方法不仅缩短了响应时间,而且还为更快地解决问题提供了更丰富的背景信息,最终降低了平均响应时间 (MTTR)。

要了解有关实施类似解决方案的更多信息,请浏览 Amazon Step Functions 和 Amazon OpenSearch Service 文档。考虑如何调整这种方法以适应自己的事件管理工作流程或将其扩展到其他运营流程。

作者简介

Grzegorz Kaczor

Grzegorz Kaczor 是赫伯罗特的云架构师,也是技术爱好者,在科技行业拥有超过 15 年的经验。他专门研究无服务器、安全以及日志记录和监控。他热衷于改善赫伯罗特在亚马逊云科技云中的安全与合规状况。在业余时间,他喜欢和女儿一起读书和玩耍。

丹尼尔·斯汀博克

丹尼尔·斯汀博克是赫伯罗特的高级解决方案架构师,专门从事面向客户的网络和移动应用程序的平台工程。他与开发人员合作,设计和构建增强开发工作流程的服务。当他不工作时,经常可以看到丹尼尔享受美食、探索新音乐、徒步旅行或探索世界的不同地方。

迈克尔·格劳曼

迈克尔·格劳曼是亚马逊云科技的高级解决方案架构师。他与德国企业客户合作,为他们的云之旅提供支持。Michael 喜欢利用亚马逊云科技服务,在遵循云优秀实践的同时,有意满足业务需求。下班后你会发现他坐在架子鼓上或者在森林里散步。

丹尼尔·摩泽

丹尼尔·摩泽是亚马逊云科技的解决方案架构师。他专门研究无服务器技术,与客户合作构建、架构和设计满足其业务需求的解决方案。在业余时间,丹尼尔喜欢烹饪和吃美味的食物,修改技术,以及旅行探索新的城市和地点。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。