通知
通知插件为 OpenSearch 插件中的所有通知提供了一个中心位置。使用该插件,您可以配置要使用的通信服务,并查看相关的统计数据和故障排除信息。目前,告警和 ISM 插件已与通知插件集成。
您可以使用 OpenSearch Dashboards 或 REST API 配置通知。Dashboards 提供了一种更组织化的方式来选择通道类型和要使用的 OpenSearch 插件源,而 REST API 允许您以编程方式定义通知通道,以便更好地进行版本控制和后续重用。
-
首先使用 Dashboards UI 创建一个接收来自其他插件通知的通道。支持的通信通道包括 Amazon Chime、Amazon Simple Notification Service (Amazon SNS)、Amazon Simple Email Service (Amazon SES)、通过 SMTP 发送电子邮件、Slack、Microsoft Teams 和自定义 Webhook。配置好通道和插件源后,即可发送消息并从通知插件的仪表板开始跟踪您的通知。
-
使用通知 REST API 配置所有通道设置。要使用 API,您必须具备通知的名称、描述、通道类型、要用作源的 OpenSearch 插件,以及其他相关的 URL 或组。
创建通道
在 OpenSearch Dashboards 中,选择 Notifications(通知)、Channels(通道),然后选择 Create channel(创建通道)。
- 在名称和描述部分,为您的通道指定名称和可选描述。
- 在配置部分,选择通道类型并为每种类型输入必要的信息。有关配置使用 Amazon SNS 或电子邮件的通道的更多信息,请参阅以下部分。如果您想使用 Amazon Chime 或 Slack,需要指定 Webhook URL。有关使用 Webhook 的更多信息,请参阅 Slack、Microsoft Teams 或 Amazon Chime 的文档。
如果要使用自定义 Webhook,必须指定更多信息:参数和标头。例如,如果您的端点需要基本身份验证,您可能需要添加一个带有授权密钥和值 Basic <Base64-encoded-credential-string>
的标头。您可能还需要将 Content-Type
更改为您的 Webhook 所需的任何值。常见值为 application/json
、application/xml
和 text/plain
。
此信息以纯文本形式存储在 OpenSearch 集群中。我们将在未来改进此设计,但目前,编码凭据(既未加密也未哈希)可能对其他 OpenSearch 用户可见。
- 在可用性部分,选择要与通知通道一起使用的 OpenSearch 插件。
- 选择 Create。
Amazon SNS 作为通道类型
OpenSearch 支持将 Amazon SNS 用于通知。与 Amazon SNS 的集成意味着,除了其他通道类型外,通知插件还可以使用 SNS 主题发送电子邮件、短信,甚至运行 AWS Lambda 函数。有关 Amazon SNS 的更多信息,请参阅 Amazon Simple Notification Service 开发人员指南。
通知插件目前支持两种用户身份验证方式
- 为用户提供对 Amazon SNS 的完全访问权限。
- 允许用户承担具有访问 Amazon SNS 权限的 AWS Identity and Access Management (IAM) 角色。配置通知通道以使用正确的 Amazon SNS 权限后,选择可以触发通知的 OpenSearch 插件。
提供完整的 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"
}
]
}
主机拒绝列表
定义 OpenSearch 节点不应发起请求的 IP 范围或主机名。
电子邮件作为通道类型
要通过电子邮件发送或接收通知,请选择通道类型为电子邮件。接下来,选择至少一个发件人和默认收件人。要一次向多人发送通知,请指定多个电子邮件地址或选择一个收件人组。如果通知插件目前没有必要的发件人或组,您可以首先选择SMTP 发件人,然后选择创建 SMTP 发件人或创建收件人组来添加它们。选择SES 发件人以使用 Amazon Simple Email Service (Amazon SES)。
创建电子邮件发件人
- 指定与发件人关联的唯一名称。
- 输入电子邮件地址,以及适用的主机(例如,smtp.gmail.com)和端口。如果您使用 Amazon SES,请输入要从中发送通知的 AWS 账户的 IAM 角色 Amazon 资源名称 (ARN) 以及 AWS 区域。
- 选择加密方法。大多数电子邮件提供商需要安全套接字层 (SSL) 或传输层安全 (TLS),这需要在 OpenSearch 密钥库中提供用户名和密码。有关更多信息,请参阅验证发件人账户。选择加密方法仅适用于您正在创建 SMTP 发件人的情况。
- 选择创建以保存配置并创建发件人。您可以在将凭据添加到 OpenSearch 密钥库之前创建发件人;但是,在使用发件人进行通道配置之前,您必须验证每个发件人账户。
创建电子邮件收件人组
- 选择创建收件人组后,输入与电子邮件组关联的唯一名称和可选描述。
- 选择或输入您要添加到收件人组的电子邮件地址。
- 选择 Create。
验证发件人账户
如果您的电子邮件提供商需要 SSL 或 TLS,您必须在发送电子邮件之前验证每个发件人账户。使用命令行界面 (CLI) 在 OpenSearch 密钥库中输入发件人账户凭据。运行以下命令(在您的 OpenSearch 目录中)输入您的用户名和密码。
/usr/share/opensearch/bin/opensearch-keystore add opensearch.notifications.core.email.<sender_name>.username
/usr/share/opensearch/bin/opensearch-keystore add opensearch.notifications.core.email.<sender_name>.password
要更改或更新您的凭据(在将它们添加到每个节点的密钥库后),请调用 reload API 自动更新这些凭据,而无需重新启动 OpenSearch。
POST _nodes/reload_secure_settings
{
"secure_settings_password": "1234"
}