Amazon Elasticsearch Service
开发人员指南 (API 版本 2015-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

管理 Amazon Elasticsearch Service 域

随着 Amazon Elasticsearch Service (Amazon ES) 域中文档大小和数量的增长以及网络流量的增加,您可能需要更新 Elasticsearch 集群的配置。要了解何时重新配置您的域,您需要监控域指标。您可能还需要审核对您的域的数据相关 API 调用或将标签分配给您的域。本部分介绍如何执行与域管理相关的各种任务。

关于配置更改

Amazon ES 在更新域时使用蓝/绿 部署过程。蓝/绿通常是指运行两个生产环境 (一个活动环境和一个空闲环境) 并在您进行软件更改时切换这两个环境的做法。对于 Amazon ES,它是指创建用于域更新的新环境并在这些更新完成后将用户路由至新环境的实践。此实践可在部署到新环境未成功的情况下最大程度地减少停机时间并维护原始环境。

以下操作会引发蓝/绿部署:

  • 更改实例计数或类型

  • 启用或禁用专用主节点

  • 更改专用主节点计数

  • 启用或禁用多 AZ

  • 更改存储类型、卷类型或卷大小

  • 选择不同的 VPC 子网

  • 添加或删除 VPC 安全组

  • 对 Kibana 启用或禁用 Amazon Cognito 身份验证

  • 选择不同的 Amazon Cognito 用户池或身份池

  • 修改高级设置

  • 允许或禁止将错误日志或慢速日志发布到 CloudWatch

  • 升级到新版 Elasticsearch

以下操作会引发蓝/绿部署:

  • 更改访问策略

  • 更改自动快照时间

如果您启动配置更改,则域状态将更改为 Processing。在特定服务软件更新期间,状态将保持为 Active。在这两种情况下,您可以查看集群运行状况和 Amazon CloudWatch 指标,并会在进行域更新时发现集群中的节点数暂时增大(通常会加倍)。在下图中,您可以看到配置更改期间的节点从 11 个翻倍至 22 个,然后在更新完成后返回至 11 个。


                节点数在域配置更改期间从 11 翻倍至 22。

这种临时的增加可能会对集群的专用主节点造成压力,其要管理的节点数突然增加。在专用主节点上保持充足的容量很重要,这有助于处理与这些蓝/绿部署相关的开销。

重要

在配置更改和服务维护期间,您不会 产生任何额外费用。您只需要为您的群集请求的节点数量付费。有关具体信息,请参阅配置更改的费用

为防止专用主节点过载,您可以使用 Amazon CloudWatch 指标监控使用情况。有关推荐的最大值,请参阅建议的 CloudWatch 警报

配置更改的费用

如果您更改了某个域的配置,Amazon ES 将创建一个新集群,如关于配置更改中所述。在从旧群集迁移到新群集时,会产生以下费用:

  • 如果您更改实例类型,第一个小时两个群集都会收费。第一个小时后,您只需为新群集付费。

    示例:您将配置从三个 m3.xlarge 实例更改为四个 m4.large 实例。在第一个小时中,两个群集都需要收费 (3 个 m3.xlarge + 4 个 m4.large)。第一个小时后,您只需为新群集付费 (4 个 m4.large)。

  • 如果您未更改实例类型,第一个小时您只需要为最大的群集付费。第一个小时后,您只需为新群集付费。

    示例: 您将配置从六个 m3.xlarge 实例更改为三个 m3.xlarge 实例。在第一个小时,您只需要为最大的群集付费 (6 个 m3.xlarge)。第一个小时后,您只需为新群集付费 (3 个 m3.xlarge)。

服务软件更新

注意

服务软件更新不同于 Elasticsearch 版本升级。有关升级到更高版本的 Elasticsearch 的信息,请参阅升级 Elasticsearch

Amazon ES 定期发布增加了功能或以其他方式改进您的域的系统软件更新。控制台是查看是否有可用的更新的最简单的方法。有关服务软件更新的历史记录,请参阅发行说明

当新服务软件变得可用时,可以请求更新您的域并立即受益于新功能。您还可能希望在低流量时间启动更新。

有些更新是必需的,而其他更新是可选的。如果您没有对必需更新采取任何操作,我们仍然会在特定时间范围(通常两周)后自动更新服务软件。如果您的域处于下表中所示的任何状态,则可能没有资格进行服务软件更新。

状态 描述
域正在处理中 域正在接受配置更改。在操作完成后检查更新资格。
红色集群状态 集群中的一个或多个索引为红色。有关问题排查步骤,请参阅红色集群状态
高错误率 在尝试处理请求时,Elasticsearch 集群返回大量 5xx 错误。此问题通常是因为同时读取或写入了过多的请求。请考虑减少流向集群的流量或扩展您的域。
裂脑 裂脑 意味着您的 Elasticsearch 集群有多个主节点并且已拆分成两个绝不会自行重新联接的集群。您可以通过使用推荐数量的专用主节点避免裂脑。为了帮助您从裂脑恢复,请联系 AWS Support
Amazon Cognito 集成问题 您的域使用用于 Kibana 的身份验证,Amazon ES 找不到一个或多个 Amazon Cognito 资源。如果缺少 Amazon Cognito 用户池,则通常会出现此问题。要更正此问题,请重新创建缺少的资源并将 Amazon ES 域配置为使用它。
其他 Amazon ES 服务问题 Amazon ES 本身的问题可能会导致您的域显示没有更新资格。如果上述情况都不适用于您的域且该问题持续超过一天,请联系 AWS Support

计划服务软件更新(控制台)

  1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console (登录控制台)

  2. Analytics 下,选择 Elasticsearch Service

  3. 在导航窗格中的 My domains (我的域) 下,选择要更新的域。

  4. 对于 Service software release (服务软件版本),请使用文档链接来比较您的当前版本与最新版本。然后选择 Update (更新)

计划服务软件更新(AWS CLI 和 AWS 开发工具包)

您可以使用以下命令查看是否有可用的更新、检查升级资格并计划更新:

  • describe-elasticsearch-domain (DescribeElasticsearchDomain)

  • start-elasticsearch-service-software-update (StartElasticsearchServiceSoftwareUpdate)

有关更多信息,请参阅 AWS CLI Command ReferenceAmazon Elasticsearch Service 配置 API 参考

提示

在计划更新之后,您可能可以在很小的时间范围内将其取消。使用控制台或 stop-elasticsearch-service-software-update (StopElasticsearchServiceSoftwareUpdate) 命令。

配置多 AZ 域

每个 AWS 区域都是一个独立的地理区域,其中包含多个相互隔离的位置,这些位置称为可用区。为了防止数据丢失并在服务中断时最大限度地减少集群停机时间,您可以在同一个区域中的两个或三个可用区之间分配节点,这种配置称为多 AZ

对于运行生产工作负载的域,我们建议以下配置:

  • 选择通过 Amazon ES 支持三个可用区的区域:

    • 美国东部(弗吉尼亚北部、俄亥俄州)

    • 美国西部(俄勒冈)

    • 欧洲(法兰克福、爱尔兰、伦敦、巴黎)

    • 亚太地区(新加坡、悉尼、东京)

    • 中国 (宁夏)

  • 跨三个区域部署域。

  • 为专用主节点和数据节点选择最新一代实例类型。

  • 使用三个专用主节点和至少三个数据节点。

  • 为集群中的每个索引创建至少一个副本。

本节的其余部分提供了有关这些建议的解释和背景。

分片分配

如果您启用多 AZ,则应该为集群中的每个索引创建至少一个副本。没有副本,Amazon ES 无法将您的数据副本分发到其他可用区,这在很大程度上违背了多 AZ 的目的。幸运的是,所有索引的默认配置均为副本数量等于 1。如下图所示,Amazon ES 分发主分片和副本分片,以使副本分片与其所对应的主分片不在同一区域中。

除了按可用区分配分片外,Amazon ES 还按节点分配分片。但是,某些域配置可能会导致分片计数不平衡。考虑以下域:

  • 5 个数据节点

  • 5 个主分片

  • 2 个副本

  • 3 个可用区

在这种情况下,Amazon ES 必须使一个节点过载,以便跨区域分配主分片和副本分片,如下图所示。

为避免这些可能导致单个节点紧张并损害性能的情况,如果您计划每个索引有两个或更多副本,我们建议您选择一个为三的倍数的实例计数。

专用主节点分配

即使您在配置域时选择了两个可用区,Amazon ES 也会自动在三个可用区中分配专用主节点。此分发有助于在区域遇到服务中断时防止集群停机。如果您使用推荐的三个专用主节点并且一个可用区域关闭,则您的集群仍具有配额数量 (2) 的专用主节点,并且可以选择新的主节点。下图演示了此配置。

这种自动分配有一些值得注意的例外情况:

  • 如果您选择三个可用区中不可用的较旧一代实例类型,则以下方案适用:

    • 如果您为域选择了三个可用区,则 Amazon ES 会引发错误。请选择其他实例类型,然后重试。

    • 如果您为域选择了两个可用区,则 Amazon ES 会在两个区域中分配专用主节点。

  • 并非所有 AWS 区域都有三个可用区。在这些区域中,您只能将域配置为使用两个区域(Amazon ES 只能在两个区域中分配专用主节点)。有关支持三个可用区的区域的列表,请参阅配置多 AZ 域

可用区中断

可用区中断很少见,但仍会出现。下表列出了中断期间的不同多 AZ 配置和行为。

一个区域中的可用区数量 您选择的可用区数量 专用主节点的数量 一个可用区遇到中断时的行为
2 或更多 2 0

停机时间。您的集群丢失了一半的数据节点,并且必须替换剩余可用区中的至少一个,然后才能选择主节点。

2 2 3

50/50 机会的停机时间。Amazon ES 将两个专用主节点分配到一个可用区中,将一个分配到另一个可用区中:

  • 如果具有一个专用主节点的可用区遇到中断,则剩余可用区中的两个专用主节点可以选择主节点。

  • 如果具有两个专用主节点的可用区遇到中断,则在剩余可用区可以添加专用主节点并选择主节点之前,集群不可用。

3 或更多 2 3

无停机时间。Amazon ES 会自动在三个可用区中分配专用主节点,因此剩余的两个专用主节点可以选择主节点。

3 或更多 3 0

无停机时间。大约三分之二的数据节点仍可用于选择主节点。

3 或更多 3 3

无停机时间。其余两个专用主节点可以选择主节点。

所有配置中,无论原因如何,节点故障都可能导致集群的剩余数据节点经历一段时间的负载增加,而 Amazon ES 会自动配置新节点以替换现在缺失的节点。

例如,如果三区域配置中发生可用区中断,则三分之二的数据节点必须处理所有集群请求。当它们处理这些请求时,其余节点也会在新节点上线时将分片复制到新节点上,这可能会进一步影响性能。如果可用性对您的工作负载至关重要,请考虑向集群中添加资源以缓解此问题。

使用 Amazon CloudWatch 监控群集指标和统计数据 (控制台)

Amazon ES 域每分钟向 Amazon CloudWatch 发送一次性能指标。如果您使用通用型 EBS 卷或磁性 EBS 卷,则 EBS 卷指标将仅每五分钟更新一次。要查看这些指标,请使用 Amazon Elasticsearch Service 控制台中的 Cluster health (集群运行状况)Instance health (实例运行状况) 选项卡。这些指标是免费提供的。

如果对您的域进行配置更改,则 Cluster health (集群运行状况)Instance health (实例运行状况) 选项卡中各个实例的列表的大小通常会在短时间内增长一倍,然后再恢复为正确数量。有关此行为的说明,请参阅关于配置更改

Amazon ES 指标分为以下几个类别:

注意

该服务会将指标存档两周,然后再丢弃。

群集指标

AWS/ES 命名空间包括以下集群指标。

指标 描述
ClusterStatus.green

指示将所有索引分片分配给集群中的节点。

相关统计数据:Minimum、Maximum

ClusterStatus.yellow 指示所有索引的主要分片分配给集群中的节点,但是至少有一个索引的分片副本不是如此。单节点集群始终初始化为此集群状态,因为不存在可将副本分配给的另一个节点。您可以增加节点计数来获取绿色集群状态,也可以使用 Elasticsearch API 将索引的 number_of_replicas 设置设为 0。要了解更多信息,请参阅配置 Amazon Elasticsearch Service 域

相关统计数据:Minimum、Maximum

ClusterStatus.red

指示至少一个索引的主分片和副本分片未分配给集群中的节点。要恢复,您必须删除索引或还原快照,然后添加基于 EBS 的存储、使用较大的实例类型或添加实例。有关更多信息,请参阅红色集群状态

相关统计数据:Minimum、Maximum

Nodes

Amazon ES 集群中的节点数,包括专用主节点。

相关统计数据:Minimum、Maximum、Average

SearchableDocuments

集群中所有索引中的可搜索文档的总数。

相关统计数据:Minimum、Maximum、Average

DeletedDocuments

在集群的所有索引中已标记为删除的文档总数。这些文档不会再出现在搜索结果中,但 Elasticsearch 只会在分段合并期间将已删除的文档从磁盘中移除。此指标在提出删除请求后会增加,在分段合并后会减少。

相关统计数据:Minimum、Maximum、Average

CPUUtilization

用于集群中的数据节点的 CPU 资源的最大百分比。

相关统计数据:Maximum、Average

FreeStorageSpace

集群中各节点的可用空间(以 GiB 为单位)。Sum 显示集群的总可用空间,但您必须保留一分钟的时间来获取准确值。MinimumMaximumAverage 显示各个节点的可用空间。当指标达到 0 时,Amazon ES 将引发 ClusterBlockException。要恢复,您必须删除索引,添加更大的实例,或向现有实例添加基于 EBS 的存储。有关更多信息,请参阅从缺少可用存储空间恢复

注意

FreeStorageSpace 将始终小于 Elasticsearch _cluster/stats API 提供的值。Amazon ES 在每个实例上为内部操作预留一个存储空间百分比。

相关统计数据:Minimum、Maximum、Average、Sum

ClusterUsedSpace

集群的已使用空间总量,以 GiB 为单位。您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。您必须保留一分钟的时间来获取准确值。

相关统计数据:Minimum、Maximum

ClusterIndexWritesBlocked

指示您的集群是接受还是阻止传入的写入请求。值为 0 表示集群接受请求。值为 1 表示阻止请求。

许多因素都可能导致集群开始阻止请求。一些常见的因素包括:FreeStorageSpace 过低、JVMMemoryPressure 过高、或 CPUUtilization 过高。为了缓解这一问题,可以考虑增加磁盘空间或扩展集群。

相关统计数据:Maximum

注意

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

JVMMemoryPressure

用于集群中所有数据节点的 Java 堆的最大百分比。

相关统计数据:Maximum

AutomatedSnapshotFailure

集群的失败的自动快照的数量。值 1 指示在过去的 36 个小时内未为域拍摄自动快照。

相关统计数据:Minimum、Maximum

CPUCreditBalance

集群中的数据节点可用的剩余 CPU 积分。一个 CPU 积分提供一个完整 CPU 核心在一分钟内的性能。有关更多信息,请参阅 Amazon EC2 开发人员指南 中的 CPU 积分。此指标仅适用于 t2.micro.elasticsearch、t2.small.elasticsearch 和 t2.medium.elasticsearch 实例类型。

相关统计数据:Minimum

KibanaHealthyNodes

Kibana 运行状况检查。值为 1 表示行为正常。值为 0 表示无法访问 Kibana。在大多数情况下,Kibana 的运行状况反映了集群的运行状况。

相关统计数据:Minimum

注意

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

KMSKeyError

值 1 表示已禁用用于加密静态数据的 KMS 客户主密钥。要将域还原为正常操作,请重新启用该密钥。控制台仅对该加密静态数据的域显示此指标。

相关统计数据:Minimum、Maximum

KMSKeyInaccessible

值 1 表示已删除用于加密静态数据的 KMS 客户主密钥或已撤销其对 Amazon ES 的授权。您无法恢复处于此状态的域。但如果您具有手动快照,则可以使用它将该域的数据迁移到新域。控制台仅对该加密静态数据的域显示此指标。

相关统计数据:Minimum、Maximum

InvalidHostHeaderRequests

针对 Elasticsearch 集群的包含无效(或缺少)主机标头的 HTTP 请求数。有效的请求包含域终端节点作为主机标头值。如果您看到此指标具有较大的值,请检查 Elasticsearch 客户端是否在其请求中包含了正确的主机标头值。否则,Amazon ES 可能会拒绝请求。您也可以更新域的访问策略以要求对请求签名。

相关统计数据:汇总

ElasticsearchRequests

对 Elasticsearch 集群发出的请求数。

相关统计数据:汇总

RequestCount

对域的请求数以及每个请求的 HTTP 响应代码(2xx、3xx、4xx、5xx)。

相关统计数据:汇总

专用主节点指标

AWS/ES 命名空间包括专用主节点的以下指标。

指标 描述
MasterCPUUtilization

专用主节点使用的 CPU 资源的最大百分比。建议在此指标达到 60% 时增加实例类型的大小。

相关统计数据:Average

MasterFreeStorageSpace

此指标不相关,可以被忽略。该服务不使用主节点作为数据节点。

MasterJVMMemoryPressure

用于集群中所有专用主节点的 Java 堆的最大百分比。建议在此指标达到 85% 时迁移到更大的实例类型。

相关统计数据:Maximum

MasterCPUCreditBalance

集群中专用主节点可用的剩余 CPU 积分。一个 CPU 积分提供一个完整 CPU 核心在一分钟内的性能。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 CPU 积分。此指标仅适用于 t2.micro.elasticsearch、t2.small.elasticsearch 和 t2.medium.elasticsearch 实例类型。

相关统计数据:Minimum

MasterReachableFromNode

MasterNotDiscovered 运行状况检查异常。值为 1 表示行为正常。值为 0 表示 /_cluster/health/ 失败。

失败意味着主节点已停止或无法访问。这通常是由网络连接问题或 AWS 依赖问题导致的。

相关统计数据:Minimum

注意

您可以在 Amazon CloudWatch 控制台而不是 Amazon ES 控制台中查看此指标。

EBS 卷指标。

AWS/ES 命名空间包括 EBS 卷的以下指标。

指标 描述
ReadLatency

EBS 卷上读取操作的延迟(以秒为单位)。

相关统计数据:Minimum、Maximum、Average

WriteLatency

EBS 卷上写入操作的延迟(以秒为单位)。

相关统计数据:Minimum、Maximum、Average

ReadThroughput

EBS 卷上读取操作的吞吐量(以字节/秒为单位)。

相关统计数据:Minimum、Maximum、Average

WriteThroughput

EBS 卷上写入操作的吞吐量(以字节/秒为单位)。

相关统计数据:Minimum、Maximum、Average

DiskQueueDepth

针对 EBS 卷的待处理输入和输出 (I/O) 请求的数量。

相关统计数据:Minimum、Maximum、Average

ReadIOPS

针对 EBS 卷上的读取操作的每秒输入和输出 (I/O) 操作数。

相关统计数据:Minimum、Maximum、Average

WriteIOPS

针对 EBS 卷上的写入操作的每秒输入和输出 (I/O) 操作数。

相关统计数据:Minimum、Maximum、Average

实例指标

AWS/ES 命名空间包含域中各个实例的以下指标。

重要

Elasticsearch 的不同版本使用不同的线程池来处理对 _index API 的调用。Elasticsearch 1.5 和 2.3 使用索引线程池。Elasticsearch 5.x、6.0 和 6.2 使用批量线程池。6.3 和更高版本使用写入线程池。目前,Amazon ES 不提供用于批量线程池和写入线程池的指标。

指标 描述
IndexingLatency

分片完成索引操作所需的平均时间,以毫秒为单位。

相关统计数据:Average

IndexingRate

每分钟的索引操作数。对 _bulk API 的单次调用,该 API 添加两个文档并将两个计数更新为四个操作,这可在一个或多个节点中扩散。如果该索引有一个或多个副本,集群中的其他节点也会记录总计四个索引编制操作。文档删除不计入此指标。

相关统计数据:Average

SearchLatency

分片完成搜索操作所需的平均时间,以毫秒为单位。

相关统计数据:Average

SearchRate

节点上所有分片的每分钟搜索请求总数。对 _search API 的单次调用可能会从许多不同的分片返回结果。如果这些分片中有 5 个位于一个节点上,则节点会为此指标报告 5 次,即使客户只发出一次请求也是如此。

相关统计数据:Average

SysMemoryUtilization

使用中的实例内存的百分比。

相关统计数据:Minimum、Maximum、Average

JVMGCYoungCollectionCount

“年轻代”垃圾回收的运行次数。大量不断增长的运行数对于集群操作来说是正常的。

相关统计数据:Maximum

JVMGCYoungCollectionTime

集群执行“年轻代”垃圾回收所花费的时间,以毫秒为单位。

相关统计数据:Maximum

JVMGCOldCollectionCount

“年老代”垃圾回收的运行次数。在具有足够资源的集群中,此数字应保持很小并且不会频繁增长。

相关统计数据:Maximum

JVMGCOldCollectionTime

集群执行“年老代”垃圾回收所花费的时间,以毫秒为单位。

相关统计数据:Maximum

ThreadpoolForce_mergeQueue

强制合并线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolForce_mergeRejected

强制合并线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolForce_mergeThreads

强制合并线程池的大小。

相关统计数据:Maximum

ThreadpoolIndexQueue

索引线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群。索引队列的最大大小为 200。

相关统计数据:Maximum

ThreadpoolIndexRejected

索引线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolIndexThreads

索引线程池的大小。

相关统计数据:Maximum

ThreadpoolSearchQueue

搜索线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群。搜索队列的最大大小为 1000。

相关统计数据:Maximum

ThreadpoolSearchRejected

搜索线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolSearchThreads

搜索线程池的大小。

相关统计数据:Maximum

ThreadpoolBulkQueue

批量线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolBulkRejected

批量线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群。

相关统计数据:Maximum

ThreadpoolBulkThreads

批量线程池的大小。

相关统计数据:Maximum

使用 AWS CloudTrail 记录 Amazon Elasticsearch Service 配置 API 调用

Amazon Elasticsearch Service 与 AWS CloudTrail 集成,后者是一项服务,该服务提供了由用户、角色或 Amazon ES 中的 AWS 服务执行的操作的记录。CloudTrail 将 Amazon ES 的所有配置 API 调用作为事件捕获。

注意

CloudTrail 仅捕获对 配置 API(如 CreateElasticsearchDomainGetUpgradeStatus)的调用,而不捕获对 Elasticsearch API(如 _search_bulk)的调用。

捕获的调用包括来自 Amazon ES 控制台、AWS CLI 或 AWS 开发工具包的调用。如果您创建跟踪,则可以使 CloudTrail 事件持续传送到 Amazon S3 存储桶(包括 Amazon ES 的事件)。如果您不配置跟踪,则仍可在 CloudTrail 控制台的 Event history (事件历史记录) 中查看最新事件。通过使用 CloudTrail 收集的信息,您可以确定向 Amazon ES 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。

要了解有关 CloudTrail 的更多信息,请参阅 AWS CloudTrail User Guide

CloudTrail 中的 Amazon Elasticsearch Service 信息

在您创建 CloudTrail 账户时,即针对该账户启用了 AWS。Amazon ES 中发生活动时,该活动将记录在 CloudTrail 事件中,并与其他 AWS 服务事件一同保存在 Event history (事件历史记录) 中。您可以在 AWS 账户中查看、搜索和下载最新事件。有关更多信息,请参阅使用 CloudTrail 事件历史记录查看事件

要持续记录 AWS 账户中的事件(包括 Amazon ES 的事件),请创建跟踪。通过跟踪,CloudTrail 可将日志文件传送至 Amazon S3 存储桶。默认情况下,在控制台中创建跟踪时,此跟踪应用于所有 AWS 区域。此跟踪在 AWS 分区中记录来自所有区域的事件,并将日志文件传送至您指定的 Amazon S3 存储桶。此外,您可以配置其他 AWS 服务,进一步分析在 CloudTrail 日志中收集的事件数据并采取行动。有关更多信息,请参阅下列内容:

所有 Amazon ES 配置 API 操作都由 CloudTrail 记录,并且在 Amazon Elasticsearch Service 配置 API 参考中正式记载。

每个事件或日志条目都包含有关生成请求的人员的信息。身份信息帮助您确定以下内容:

  • 请求是使用根用户凭证还是 AWS Identity and Access Management (IAM) 用户凭证发出的

  • 请求是使用角色还是联合身份用户的临时安全凭证发出的

  • 请求是否由其他 AWS 服务发出

有关更多信息,请参阅 CloudTrail userIdentity 元素

了解 Amazon Elasticsearch Service 日志文件条目

跟踪是一种配置,可用于将事件作为日志文件传送到您指定的 Amazon S3 存储桶。CloudTrail 日志文件包含一个或多个日志条目。一个事件表示来自任何源的一个请求,包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪,因此它们不会以任何特定顺序显示。

下面的示例显示了一个 CloudTrail 日志条目,该条目说明了 CreateElasticsearchDomain 操作:

{ "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::123456789012:user/test-user", "accountId": "123456789012", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "userName": "test-user", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-21T21:59:11Z" } }, "invokedBy": "signin.amazonaws.com" }, "eventTime": "2018-08-21T22:00:05Z", "eventSource": "es.amazonaws.com", "eventName": "CreateElasticsearchDomain", "awsRegion": "us-west-1", "sourceIPAddress": "123.123.123.123", "userAgent": "signin.amazonaws.com", "requestParameters": { "elasticsearchVersion": "6.3", "elasticsearchClusterConfig": { "instanceType": "m4.large.elasticsearch", "instanceCount": 1 }, "snapshotOptions": { "automatedSnapshotStartHour": 0 }, "domainName": "test-domain", "encryptionAtRestOptions": {}, "eBSOptions": { "eBSEnabled": true, "volumeSize": 10, "volumeType": "gp2" }, "accessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"123456789012\"]},\"Action\":[\"es:*\"],\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/test-domain/*\"}]}", "advancedOptions": { "rest.action.multi.allow_explicit_index": "true" } }, "responseElements": { "domainStatus": { "created": true, "elasticsearchClusterConfig": { "zoneAwarenessEnabled": false, "instanceType": "m4.large.elasticsearch", "dedicatedMasterEnabled": false, "instanceCount": 1 }, "cognitoOptions": { "enabled": false }, "encryptionAtRestOptions": { "enabled": false }, "advancedOptions": { "rest.action.multi.allow_explicit_index": "true" }, "upgradeProcessing": false, "snapshotOptions": { "automatedSnapshotStartHour": 0 }, "eBSOptions": { "eBSEnabled": true, "volumeSize": 10, "volumeType": "gp2" }, "elasticsearchVersion": "6.3", "processing": true, "aRN": "arn:aws:es:us-west-1:123456789012:domain/test-domain", "domainId": "123456789012/test-domain", "deleted": false, "domainName": "test-domain", "accessPolicies": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":\"es:*\",\"Resource\":\"arn:aws:es:us-west-1:123456789012:domain/test-domain/*\"}]}" } }, "requestID": "12345678-1234-1234-1234-987654321098", "eventID": "87654321-4321-4321-4321-987654321098", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

标记 Amazon Elasticsearch Service 域

可以使用 Amazon ES 标签将元数据添加到 Amazon ES 域。AWS 不会对您的标签应用任何语义意义。标签严格按字符串进行解释。所有标签均包含以下元素。

标签元素 描述
标记密钥 标签键是标签的名称,属于必填内容。标签键在其附加的 Amazon ES 域中必须是唯一的。有关对标签键和值的基本限制的列表,请参阅用户定义的标签限制
标记值 标签值则是一个可选的标签字符串值。标签值可为空值,且在标签集中不必具有唯一性。例如,在“项目/Trinity”和“成本 - 中心/Trinity”的一个标签集中,可以存在键值对。有关对标签键和值的基本限制的列表,请参阅用户定义的标签限制

每个 Amazon ES 域都有一组标签,其中包含分配给该 Amazon ES 域的所有标签。AWS 不会自动在任何 Amazon ES 域上设置任何标签。一个标签集可以包含最多 50 个标签,也可以为空。如果向 Amazon ES 域添加一个标签,而该标签的键与资源上某个现有的标签相同,则新值将覆盖旧值。

最后,通过将具有类似标签的资源的支出集中在一起,您可以使用这些标签跟踪成本。Amazon ES 域是由您定义的名称-值对,与某个 Amazon ES 域关联。此名称也叫。可使用标签向 Amazon ES 域分配任意信息。举例来说,标签键可用于定义一个类别,而标签值可以是该类别中的一个项目。例如,可定义“project”标签键和“Salix”标签值,表示向 Salix 项目分配了 Amazon ES 域。您也可以使用标签通过 environment=testenvironment=production 等键指定 Amazon ES 域用于测试或生产。我们建议使用一组具有一致性的标签键,以使跟踪与 Amazon ES 域关联的元数据变得更轻松。

您也可以使用标签来管理 AWS 账单,使其反映您的成本结构。要执行此操作,请注册以获取包含标签键值的 AWS 账户账单。然后,如需查看组合资源的成本,请按有同样标签键值的资源组织您的账单信息。例如,您可以使用键-值对标记多个 Amazon ES 域,然后组织账单信息,以查看在数个服务中的每个域的总成本。有关更多信息,请参阅 AWS 账单和成本管理 文档中的使用成本分配标签

注意

对标签进行缓存以用于授权。因此,可能先用几分钟添加和更新 Amazon ES 域上的标签,然后标签才可用。

使用标签 (控制台)

请使用以下步骤创建资源标签。

创建标签 (控制台)

  1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console (登录控制台)

  2. Analytics (分析) 下,选择 Elasticsearch Service

  3. 在导航窗格中,选择您的 Amazon ES 域。

  4. 在域控制面板上,选择 Manage tags (管理标签)

  5. Key (键) 列中,输入标签键。

  6. (可选)在 Value (值) 列中,输入标签值。

  7. 选择 Submit

删除标签 (控制台)

使用以下过程可删除资源标签。

  1. 转至 https://aws.amazon.com,然后选择 Sign In to the Console (登录控制台)

  2. Analytics (分析) 下,选择 Elasticsearch Service

  3. 在导航窗格中,选择您的 Amazon ES 域。

  4. 在域控制面板上,选择 Manage tags (管理标签)

  5. 在要删除的标签的旁边,选择 Remove (删除)

  6. 选择 Submit

有关使用控制台处理标签的更多信息,请参阅 AWS 管理控制台入门指南 中的使用标签编辑器

使用标签 (AWS CLI)

可以结合使用 AWS CLI 与 --add-tags 命令来创建资源标签。

语法

add-tags --arn=<domain_arn> --tag-list Key=<key>,Value=<value>

参数 描述
--arn 附加标签的 Amazon ES 域的 Amazon 资源名称。
--tag-list 采用以下格式设置空格分隔的键值对:Key=<key>,Value=<value>

示例

以下示例为 logs 域创建两个标签:

aws es add-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-list Key=service,Value=Elasticsearch Key=instances,Value=m3.2xlarge

可以使用 remove-tags 命令从 Amazon ES 域删除标签。

语法

remove-tags --arn=<domain_arn> --tag-keys Key=<key>,Value=<value>

参数 描述
--arn 附加标签的 Amazon ES 域的 Amazon 资源名称 (ARN)。
--tag-keys 设置您要从 Amazon ES 域中移除的空格分隔的键-值对。

示例

以下示例从之前示例中创建的 logs 域中删除两个标签:

aws es remove-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs --tag-keys service instances

您可以通过 list-tags 命令查看一个 Amazon ES 域的现有标签:

语法

list-tags --arn=<domain_arn>

参数 描述
--arn 附加标签的 Amazon ES 域的 Amazon 资源名称 (ARN)。

示例

以下示例列出了 logs 域的所有资源标签:

aws es list-tags --arn arn:aws:es:us-east-1:379931976431:domain/logs

使用标签(AWS 开发工具包)

AWS 开发工具包(除 Android 和 iOS 开发工具包之外)支持 Amazon ES 配置 API 参考中定义的所有操作,包括 AddTagsListTagsRemoveTags 操作。有关安装和使用 AWS 开发工具包的更多信息,请参阅 AWS 软件开发工具包