使用 PagerDuty 在亚马逊 OpenSearch 服务中实现提醒

在当今快节奏的数字世界中,企业严重依赖其数据来做出明智的决策。这些数据通常使用各种工具进行存储和分析,例如 Amazon OpenSear ch S ervice,这是一项由 亚马逊云科技 提供的强大搜索和分析服务。OpenSearch Service 提供对数据的实时洞察,以支持交互式日志分析、实时应用程序监控、网站搜索等用例。分析日志可以帮助企业快速识别和解决问题。

但是,随着数据量的增加,手动监控所有内容可能具有挑战性。手动监控会消耗大量资源,并且随着应用程序环境的变化而难以维护。我们需要一种可持续的自动化方法来监控关键应用程序和基础设施。

通过使用诸如事件管理平台 PagerDut y之类的第三方服务进行自动警报 ,再加上OpenSearch Service提供的强大而强大的警报插件,企业可以主动管理和响应关键事件。您可以使用此主动警报来监控现有数据的数据模式、监控集群、检测模式等。

OpenSearch 控制面板提供了一个 警报插件 ,可用于设置各种类型的监视器和警报。您可以使用该插件来设置不同的监控器,包括集群运行状况、单个文档、自定义查询或聚合数据。这些监视器可用于向用户发送警报。

在这篇文章中,我们演示了如何实现 PagerDuty 作为通知机制,以根据集群健康状态获得通知。这些通知可以通过各种渠道发送,包括电子邮件、短信或自定义 webhook(如 PagerDuty)。OpenSearch 服务警报插件支持复杂的警报规则,并提供管理这些规则的用户界面。

解决方案概述

PagerDuty 是一个基于云的事件管理平台,可帮助企业实时处理警报和事件。PagerDuty 的工作原理是整合来自各种监控工具的警报并将其路由给正确的团队成员,从而确保问题得到及时解决。许多企业正在使用PagerDuty通过多种渠道发送实时事件通知,从而确保快速向正确的团队成员发出警报。

在这篇文章中,我们描述了如何设置 PagerDuty 并将其与 OpenSearch 服务自定义 web 挂钩集成,以便在达到阈值时发出警报通知。

下图说明了在亚马逊 VPC 中运行的 OpenSearch 服务,使用监控器和触发器使用事件 API 自定义 web 挂钩向 PagerDuty 服务发送通知

我们需要在 PagerDuty 上设置服务和集成,才能开始接收来自 OpenSearch 服务的事件通知。PagerDuty 中的服务代表可以触发通知的应用程序、组件或团队。

先决条件

在开始之前,请创建以下资源(如果尚不可用):

  • 一个 亚马逊云科技 账户 ,您可以在 其中创建具有控制面板访问权限的 OpenSearch 服务域,以创建监控和通知渠道。有关说明,请参阅 创建和管理亚马逊 OpenSearch Servic e 域名。
  • 一个有权创建服务和集成的PagerDuty账户。

在 PagerDuty 上创建服务

要在 PagerDuty 上创建服务,请完成以下步骤:

  1. 使用您的个人或企业帐户登录 PagerDuty,该帐户用于启用与 OpenSearch 服务的集成。
  2. 在 “ 服务” 选项卡上,选择 “ 新建服务” 。
  3. 输入名称和可选描述,然后选择 下一步

在下一步中,我们将为该服务创建或分配升级策略。升级策略代表对服务上检测到的问题做出反应的责任顺序。

  1. 如果您已经在组织或团队中定义了升级策略,请选择 选择现有的升级策略 并指定您的策略。否则,请选择 “ 生成新的升级策略” ,然后选择 “ 下一步” 。

在下一步中,我们可以根据时间或内容对警报进行分组:

    • 要根据警报内容将警报分组在一起,请选择 基于内容的分组。
    • 要根据特定的时长对它们进行分组,请选择 基于时间的分组
    • 选择 智能分组 选项将根据内容或时间对警报进行智能分组。
  1. 保留默认值,然后选择 “ 下一步” 。
  2. 集成 页面上,选择事件 API V2 集成(这将用于与 OpenSearch 服务集成),然后选择 创建服务。

如果您在此步骤中未选择集成,则可以稍后添加。

  1. 记下 “集成 ” 选项卡上的 集成密钥。

使用自定义 webhook 在 OpenSearch 服务上创建通知频道

自定义 web 挂钩允许使用 REST API 将这些通知发送到 PagerDuty 等第三方服务。配置通知渠道后,我们可以将其用于此用例以外的其他监视器,并检测集群中存储的数据模式。

完成以下步骤来配置通知渠道:

  1. 在 OpenSearch 控制面板页面上, 在导航窗格的 亚马逊 OpenSearch 插件 下选择 通知
  2. 在 “ 频道” 选项卡上,选择 “ 创建频道” 。
  3. 输入频道的名称和可选描述。
  4. 对于 频道类型 ,选择 自定义 webhook
  5. 对于 “ 方法” ,选择 POST
  6. 对于 “ 定义端点依 据”,选择 自定义属性 URL
  1. 对于 主持人 ,请输入 e vents .pagerDuty.com。
  2. 对于 路径 ,输入 v2/ enqueue。
  3. Webhook 标题下 ,选择 添加标题
  4. 输入 X-Routing-K ey 作为密钥,输入之前获得的集成密钥作为值。
  5. 选择 创建 并确保频道已成功创建。

配置 OpenSearch 服务警报以向 PagerDuty 发送通知

我们可以通过两种不同的方式监控 OpenSearch 集群的运行状况:

  • 通过设置每个集群的指标监控器来使用 OpenSearch 仪表板警报插件。这提供了一个查询来检索与集群运行状况相关的指标。
  • Amazon CloudWatch 集成 ,后者是一项监控和可观察性服务。

在这个用例中,我们使用警报插件。完成以下步骤:

  1. 在 OpenSearch 控制面板页面上, 在导航窗格的 亚马逊 OpenSearch 插件 下选择 警报
  2. 在 “ 监视器” 选项卡上,选择 “ 创建监视器” 。
  3. 监控器名称中 ,输入名称(例如,监控集群运行状况)。
  4. 对于 监控类型 ,选择 每集群指标监控器
  5. 在 “ 时间表” 下 ,将监视器配置为每分钟运行一次。
  6. 查询 部分的 请求类型中 ,选择 集群运行状况
  7. 选择 “ 预览查询”
  8. 通过选择 添加触发器来创建触发器
  9. 触发器名称中 ,输入一个名称(例如,集群运行状况为红色)。
  10. 严重性 级别设置为 1(最高)
  11. 在 “ 触发条件” 下 ,删除默认代码并输入以下内容:
ctx.results[0].status == "red"
  1. 选择 预览条件响应 以确认 触发条件响应 显示为 false,表示集群运行正常。
  2. 在 “ 操作” 下 ,选择 “ 添加操作”
  3. 操作名称中 ,输入一个名称(例如,发送 PagerDuty 通知)。
  4. 对于 频道 ,选择您之前创建的频道。
  5. 在 “ 消息” 中 ,输入以下代码:
{ "event_action": "trigger",
"payload" :
	{	"summary": "{{ctx.trigger.name}}",
		"source": " {{ctx.monitor.name}}",
		"severity": "critical",
		"custom_details":
			{ 
				"-Severity" : "{{ctx.trigger.severity}}",
				"-Period start" : "{{ctx.periodStart}}",
				"-Period end": "{{ctx.periodEnd}}"
			}
	}
}

请注意,除了代码中的 custom_det a ils 部分外,其余字段是 PagerDuty 的必填字段。

  1. 选择 “ 发送测试消息 并进行测试”,以确保您在 PagerDuty 服务上收到警报。
  2. 选择 “ 创建” 并确保已成功创建监控器。

作为测试的一部分,将向PagerDuty服务发送通知,根据先前定义的上报政策,该服务将通过电话或短信向在场人员触发通知。PagerDuty 可以安全地确认和解析此通知,因为这是一次测试。

清理

要清理基础架构并避免额外收费,请完成以下步骤:

  1. 删除 PagerDuty 服务。
  2. 删除作为先决条件的一部分创建的 OpenSearch 服务域。

结论

OpenSearch 服务警报与 PagerDuty 的集成为实时管理和响应关键事件提供了强大而有效的解决方案。通过这种集成,您可以轻松设置警报和通知,随时了解 OpenSearch Service 集群中的潜在问题或与集群中存储的数据和文档相关的问题,并主动采取措施解决出现的任何问题。此外,集成允许团队之间进行无缝协作,使他们能够共同努力,在出现问题时发现问题并进行故障排除。

有关 OpenSearch 服务中的异常检测和警报的更多信息,请参阅亚马逊 OpenSearch 中的 异常检测 和在 Amazon OpenSearch 配置警报


作者简介

Manikanta Gona 是 亚马逊云科技 专业服务的数据和机器学习工程师。他于 2021 年加入 亚马逊云科技,拥有 6 年以上的 IT 经验。在 亚马逊云科技,他专注于数据湖的实施以及使用亚马逊 OpenSearch Service 的搜索、分析工作负载。在业余时间,他喜欢园艺,喜欢和丈夫一起去远足和骑自行车。

Vivek Shrivastava 是 A WS 专业服务数据湖的首席数据架构师。他是大数据爱好者,拥有 14 个 亚马逊云科技 认证。他热衷于帮助客户在云端构建可扩展的高性能数据分析解决方案。在业余时间,他喜欢阅读并寻找家庭自动化的领域

Ravikiran Rao 是 亚马逊云科技 的数据架构师,热衷于为各种客户解决复杂的数据挑战。工作之余,他是一名戏剧爱好者和业余网球运动员。

Hari Krishna KC 是 亚马逊云科技 专业服务团队的数据架构师。他专门研究 亚马逊云科技 数据湖和 亚马逊云科技 OpenSearch 服务,曾帮助许多客户将其工作负载迁移到数据湖和搜索数据存储