通知

通知插件为来自 UDB-SX 插件的所有通知提供了一个集中管理的位置。使用该插件,您可以配置要使用的通信服务,并查看相关的统计信息和故障排除信息。目前,告警和 ISM 插件已与通知插件集成。

您可以使用 UDB-SX Dashboards 或 REST API 来配置通知。Dashboards 提供了一种更有条理的方式来选择通道类型和要使用的 UDB-SX 插件源,而 REST API 则允许您以编程方式定义通知通道,以便更好地进行版本控制和后续复用。

  1. 使用 Dashboards 界面首先创建一个接收来自其他插件通知的通道。支持的通信通道包括 Amazon Chime、Amazon Simple Notification Service (Amazon SNS)、Amazon Simple Email Service (Amazon SES)、通过 SMTP 的电子邮件、Slack、Microsoft Teams 和自定义 Webhook。配置好通道和插件源后,即可发送消息并从通知插件的仪表板开始跟踪通知。

  2. 使用通知 REST API 来配置所有通道设置。使用 API 时,必须提供通知的名称、描述、通道类型、用作源的 UDB-SX 插件,以及其他相关的 URL 或群组。

创建通道

在 UDB-SX Dashboards 中,选择 通知通道,然后选择 创建通道

  1. 名称和描述 部分,为您的通道指定一个名称和可选描述。

  2. 配置 部分,选择通道类型并输入每种类型所需的信息。有关配置使用 Amazon SNS 或电子邮件的通道的更多信息,请参阅以下部分。如果要使用 Amazon Chime 或 Slack,则需要指定 Webhook URL。有关使用 Webhook 的更多信息,请参阅 SlackMicrosoft TeamsAmazon Chime 的文档。

如果要使用自定义 Webhook,则必须指定更多信息:参数和请求头。例如,如果您的端点需要基本身份验证,则可能需要添加一个包含授权密钥且值为 Basic <Base64-encoded-credential-string> 的请求头。您可能还需要将 Content-Type 更改为您的 Webhook 所需的类型。常用的值有 application/jsonapplication/xmltext/plain

这些信息以明文形式存储在 UDB-SX 集群中。我们将在未来改进此设计,但目前,编码后的凭据(既未加密也未哈希)可能对其他 UDB-SX 用户可见。

  1. 可用性 部分,选择要与通知通道一起使用的 UDB-SX 插件。

  2. 选择 创建

Amazon SNS 作为通道类型

UDB-SX 支持使用 Amazon SNS 进行通知。与 Amazon SNS 的集成意味着,除了其他通道类型外,通知插件还可以使用 SNS 主题发送电子邮件、短信,甚至运行 AWS Lambda 函数。有关 Amazon SNS 的更多信息,请参阅 Amazon Simple Notification Service 开发者指南

通知插件目前支持两种身份验证用户的方式:

  1. 为用户提供对 Amazon SNS 的完全访问权限。

  2. 让用户承担一个拥有访问 Amazon SNS 权限的 AWS Identity and Access Management (IAM) 角色。配置好使用正确 Amazon SNS 权限的通知通道后,选择可以触发通知的 UDB-SX 插件。

提供完整的 Amazon SNS 访问权限

如果您想为 IAM 用户提供完整的 Amazon SNS 访问权限,请确保该用户拥有以下权限:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "sns:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

承担具有 Amazon SNS 权限的 IAM 角色

如果您想让用户发送通知,而又不直接拥有对 Amazon SNS 的完全权限,可以让用户承担一个拥有必要权限的角色。

IAM 用户必须拥有以下权限才能承担角色:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "iam:ListRoles",
        "sts:AssumeRole"
      ],
      "Resource": "*"
    }
  ]
}

然后将此策略添加到 IAM 用户的信任关系中,以实际承担该角色:

{
  "Version": "2012-10-17",
  "Statement": [
  {
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::<arn_number>:user/<iam_username>",
    },
    "Action": "sts:AssumeRole"
  }
  ]
}

主机拒绝列表

定义 UDB-SX 节点不应发起请求的 IP 范围或主机名。

电子邮件作为通道类型

要使用电子邮件发送或接收通知,请选择 电子邮件 作为通道类型。接下来,选择至少一个发件人和默认收件人。要一次向多个人发送通知,请指定多个电子邮件地址或选择一个收件人组。如果通知插件当前没有必要的发件人或群组,您可以通过先选择 SMTP 发件人,然后选择 创建 SMTP 发件人创建收件人组 来添加。选择 SES 发件人 以使用 Amazon Simple Email Service (Amazon SES)。

创建电子邮件发件人

  1. 指定一个与发件人关联的唯一名称。

  2. 输入电子邮件地址,如果适用,还需输入其主机(例如 smtp.gmail.com)和端口。如果使用 Amazon SES,请输入要从中发送通知的 AWS 账户的 IAM 角色 Amazon Resource Name (ARN) 以及 AWS 区域。

  3. 选择一种加密方法。大多数电子邮件提供商要求使用安全套接字层 (SSL) 或传输层安全性 (TLS),这需要在 UDB-SX 密钥库中输入用户名和密码。请参阅 验证发件人账户 了解更多信息。选择加密方法仅适用于创建 SMTP 发件人。

  4. 选择 创建 以保存配置并创建发件人。您可以在将凭据添加到 UDB-SX 密钥库之前创建发件人;但是,在通道配置中使用发件人之前,必须 验证每个发件人账户

创建电子邮件收件人组

  1. 选择 创建收件人组 后,输入一个与电子邮件组关联的唯一名称和可选描述。

  2. 选择或输入要添加到收件人组的电子邮件地址。

  3. 选择 创建

验证发件人账户

如果您的电子邮件提供商要求 SSL 或 TLS,则必须在发送电子邮件之前验证每个发件人账户。使用命令行界面 (CLI) 在 UDB-SX 密钥库中输入发件人账户凭据。运行以下命令(在您的 UDB-SX 目录中)以输入您的用户名和密码。<sender_name> 是您之前为 发件人 输入的名称。

/usr/share/opensearch/bin/opensearch-keystore add udbsx.notifications.core.email.<sender_name>.username
/usr/share/opensearch/bin/opensearch-keystore add udbsx.notifications.core.email.<sender_name>.password

要更改或更新您的凭据(在已将凭据添加到每个节点的密钥库后),调用重新加载 API 以自动更新这些凭据,而无需重启 UDB-SX。

POST _nodes/reload_secure_settings
{
  "secure_settings_password": "1234"
}