增强型运行状况报告和监控 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

增强型运行状况报告和监控

增强型运行状况报告是一种功能,您可以在您的环境中启用该功能以允许 Amazon Elastic Beanstalk 收集有关环境中的资源的其他信息。Elastic Beanstalk 分析收集的信息,以更好地了解总体环境运行状况并帮助识别可能导致您的应用程序变得不可用的问题。

除运行状况颜色工作方式方面的更改之外,增强型运行状况还添加了状态 描述符,当环境为黄色或红色时,状态描述符提供观察到的问题的严重性指标。如果系统提供了有关当前状态的更多信息,您可以选择原因按钮,在运行状况页面上查看详细的运行状况信息。


      Elastic Beanstalk 控制台的 Elastic Beanstalk 环境概述页面,此页面显示了增强型运行状况

为提供有关在您的环境中运行的 Amazon EC2 实例的运行状况详细信息,Elastic Beanstalk 将在 Amazon 系统映像 (AMI) 中为支持增强型运行状况的每个平台版本包括一个运行状况代理。运行状况代理监控 Web 服务器日志和系统指标并将它们中继到 Elastic Beanstalk 服务。Elastic Beanstalk 会分析来自 Elastic Load Balancing 和 Amazon EC2 Auto Scaling 的这些指标和数据,以提供环境运行状况的总体情况。

除收集和展示有关环境资源的信息之外,Elastic Beanstalk 还监控环境中的资源是否存在一些错误条件并向您发送通知以帮助避免失败和解决配置问题。影响环境运行状况的因素包括应用程序处理的每个请求的结果、实例操作系统的指标和最新部署的状态。

您可以使用 Elastic Beanstalk 控制台的环境概述页面或 Elastic Beanstalk 命令行界面 (EB CLI) 中的 eb health 命令实时查看运行状况。要随着时间的推移记录和跟踪环境和实例运行状况,您可以将环境配置为将 Elastic Beanstalk 收集的有关增强型运行状况报告的信息作为自定义指标发布到 Amazon CloudWatch。针对自定义指标的 CloudWatch 费用适用于除 EnvironmentHealth(免费)之外的所有指标。

增强型运行状况报告需要版本 2 或更高的平台版本。为了监控资源和发布指标,您的环境必须同时具有实例配置文件和服务角色。如果您将 Web 服务器配置为以恰当格式提供日志,默认情况下多容器 Docker 平台将不包括 Web 服务器,但可与增强型运行状况报告结合使用。

Windows 平台备注
  • 在早于版本 2 (v2) 的 Windows Server 平台版本上,此功能不可用。

  • 当您在 Windows Server 环境中启用增强型运行状况报告时,请勿更改 IIS 日志记录配置。要使增强型运行状况监控正常工作,必须使用 W3C 格式和 ETW event only (仅限 ETW 事件)Both log file and ETW event (日志文件和 ETW 事件两者) 日志事件目标配置 IIS 日志记录。

    此外,不要在您环境的任何实例上禁用或停止Elastic Beanstalk 运行状况代理 Windows 服务。要收集和报告实例上的增强型运行状况信息,应启用并运行该服务。

增强型运行状况要求环境具有实例配置文件。实例配置文件应包含一些角色,这些角色为您的环境实例提供收集和报告增强型运行状况信息的权限。首次在 Elastic Beanstalk 控制台中使用 v2 平台版本创建环境时,Elastic Beanstalk 提示您创建所需的角色,并默认启用增强型运行状况报告。继续阅读有关增强型运行状况报告的工作方式的详细信息,或参阅启用 Elastic Beanstalk 增强型运行状况报告立即开始使用增强型运行状况报告。

Amazon Linux 2 平台需要实例配置文件,以便无条件支持增强型运行状况。当您使用 Amazon Linux 2 平台创建环境时,Elastic Beanstalk 始终启用增强型运行状况。无论您如何创建环境(使用 Elastic Beanstalk 控制台、EB CLI、Amazon CLI 或 API),都会发生这种情况。

Elastic Beanstalk 运行状况代理

Elastic Beanstalk 运行状况代理是在您的环境中的每个 Amazon EC2 实例上运行的守护程序进程(或 Windows 环境上的一项服务),它可监控操作系统和应用程序级别的运行状况指标并将问题报告给 Elastic Beanstalk。从每个平台的 2.0 版本开始,所有平台版本中都包含运行状况代理。

运行状况代理将报告与由 Amazon EC2 Auto Scaling 和 Elastic Load Balancing 作为基本运行状况报告的一部分发布到 CloudWatch 的那些指标相似的指标,包括 CPU 负载、HTTP 代码和延迟。不过,运行状况代理会以与基本运行状况报告相比更小的粒度和更高的频率直接向 Elastic Beanstalk 报告。

对于基本运行状况,这些指标每五分钟发布一次,并且可通过环境管理控制台中的图表监控。对于增强型运行状况,Elastic Beanstalk 运行状况代理每 10 秒向 Elastic Beanstalk 报告指标一次。Elastic Beanstalk 使用运行状况代理提供的指标来确定环境中每个实例的运行状况状态,并将这些指标与其他因素结合使用来确定环境的总体运行状况。

环境的总体运行状况可在 Elastic Beanstalk 控制台的环境概述页面上实时查看,并由 Elastic Beanstalk 每 60 秒向 CloudWatch 发布一次。您可以使用 EB CLI 中的 eb health 命令实时查看运行状况代理报告的详细指标。

通过支付额外费用,您可以选择每 60 秒将单个实例和环境级别的指标发布到 CloudWatch 一次。然后,可使用已发布到 CloudWatch 的指标在环境管理控制台中创建监控图表

增强型运行状况报告仅在您选择将增强型运行状况指标发布到 CloudWatch 时产生费用。在使用增强型运行状况时,您仍可免费发布基本运行状况指标,即使您不选择发布增强型运行状况指标。

请参阅实例指标以了解有关运行状况代理报告的指标的详细信息。有关将增强型运行状况指标发布到 CloudWatch 的详细信息,请参阅发布环境的 Amazon CloudWatch 自定义指标

实例和环境运行状况的确定因素

除基本运行状况报告系统检查(包括Elastic Load Balancing 运行状况检查资源监控)之外,Elastic Beanstalk 增强型运行状况报告还收集有关您的环境中的实例状态的其他数据。这包括操作系统指标、服务器日志以及正在进行的环境操作(如部署和更新)的状态。Elastic Beanstalk 运行状况报告服务将来自所有可用源的信息合并在一起,并分析这些信息以确定环境的总体运行状况。

操作和命令

当您对环境执行某项操作(如部署新版本的应用程序)时,Elastic Beanstalk 将进行多项影响环境的运行状况状态的更改。

例如,如果您将某个应用程序的新版本部署到正在运行多个实例的环境中,您可能会在使用 EB CLI 监控环境的运行状况时看到如下类似的消息。

id status cause Overall Info Command is executing on 3 out of 5 instances i-bb65c145 Pending 91 % of CPU is in use. 24 % in I/O wait Performing application deployment (running for 31 seconds) i-ba65c144 Pending Performing initialization (running for 12 seconds) i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds i-e8a2d53b Pending 94 % of CPU is in use. 52 % in I/O wait Performing application deployment (running for 33 seconds) i-e81cca40 Ok

在此示例中,环境的总体状态为 Ok,此状态的原因是 Command is executing on 3 out of 5 instances。环境中的三个实例的状态为等待,表示一项操作正在进行。

当一项操作完成时,Elastic Beanstalk 将报告有关该操作的额外信息。对于本示例,Elastic Beanstalk 显示了有关一个已使用应用程序的新版本进行更新的实例的以下信息:

i-f6a2d525 Ok Application deployment completed 23 seconds ago and took 26 seconds

实例运行状况信息还包括有关环境中每个实例的最新部署的详细信息。每个实例都会报告一个部署 ID 和状态。部署 ID 是一个整数,每次在您部署新版本的应用程序或针对环境变量等有关实例的配置选项更改设置时,其数量就会增加一个。滚动部署失败后,您可以使用部署信息来识别那些运行错误应用程序版本的实例。

在原因列中,Elastic Beanstalk 包括有关成功的操作以及在多个运行状况检查中的其他运行状况状态的信息性消息,但它们不会无限期保持。运行状况不佳的环境状态的原因将持续,直到环境恢复运行状况良好状态。

命令超时

Elastic Beanstalk 从操作开始的时间起应用一个命令超时,以允许实例转换为运行状况良好状态。此命令超时在您的环境的更新和部署配置中设置(在 aws:elasticbeanstalk:command 命名空间中),默认为 10 分钟。

在滚动更新期间,Elastic Beanstalk 将为操作中每个批次应用不同的超时。此超时将作为环境的滚动更新配置的一部分设置(在 aws:autoscaling:updatepolicy:rollingupdate 命名空间中)。如果在滚动更新超时期间,该批次中所有实例都运行状况良好,则操作将继续到下一个批次。否则,操作将失败。

注意

如果应用程序未通过运行状况检查(即未处于 OK (正常) 状态),但在另一级别很稳定,您可以在 HealthCheckSuccessThreshold中设置 aws:elasticbeanstalk:command namespace 选项,从而更改 Elastic Beanstalk 将实例视为运行状况良好的级别。

一个 Web 服务器环境若要被视为运行状况良好,该环境或批次中每个实例必须在两分钟内连续通过 12 次运行状况检查。对于工作线程层环境,每个实例必须通过 18 次运行状况检查。在命令超时之前,Elastic Beanstalk 不会在运行状况检查失败时降低环境的运行状况状态。如果环境中的实例在命令超时范围内转变为运行状况良好,则操作成功。

HTTP 请求

当没有对环境正在进行的操作时,有关实例和环境运行状况的主要信息源为每个实例的 Web 服务器日志。为了确定实例的运行状况和环境的总体运行状况,Elastic Beanstalk 将考虑请求的数量、每个请求的结果以及解决每个请求的速度。

在基于 Linux 的平台上,Elastic Beanstalk 将读取并解析 Web 服务器日志以获取有关 HTTP 请求的信息。在 Windows Server 平台上,Elastic Beanstalk 将直接从 IIS Web 服务器接收此信息。

您的环境可能不具有有效的 Web 服务器。例如,多容器 Docker 平台不包含 Web 服务器。其他平台包括一个 Web 服务器,并且您的应用程序可能会将其禁用。在这些情况下,您的环境需要额外的配置,以向 Elastic Beanstalk 运行状况代理提供日志,日志格式为将运行状况信息中继到 Elastic Beanstalk 服务所需的格式。有关更多信息,请参阅 增强型运行状况日志格式

操作系统指标

Elastic Beanstalk 监控运行状况代理报告的操作系统指标以识别系统资源始终较少的实例。

请参阅实例指标以了解有关运行状况代理报告的指标的详细信息。

运行状况检查规则自定义

Elastic Beanstalk 增强型运行状况报告依靠一组规则来确定环境的运行状况。其中一些规则可能不适合您的特定应用程序。一种常见情况是应用程序设计为频繁返回 HTTP 4xx 错误。Elastic Beanstalk 使用其默认规则之一判断出现问题,并根据错误比率将您环境的运行状况从“正常”更改为“警告”、“已降级”或“严重”。为正确处理这种情况,Elastic Beanstalk 允许您配置此规则并忽略应用程序 HTTP 4xx 错误。有关详细信息,请参阅为环境配置增强型运行状况规则

增强型运行状况角色

增强型运行状况报告需要两个角色:一个适用于 Elastic Beanstalk 的服务角色和一个适用于环境的实例配置文件。服务角色允许 Elastic Beanstalk 代表您与其他 Amazon 服务进行交互,以收集有关环境中的资源的信息。实例配置文件允许环境中的实例向 Amazon S3 写入日志并向 Elastic Beanstalk 服务传递增强型运行状况信息。

使用 Elastic Beanstalk 控制台或 EB CLI 创建 Elastic Beanstalk 环境时,Elastic Beanstalk 会创建默认服务角色并将所需的托管策略附加到您环境的默认实例配置文件。

如果您使用 API、开发工具包或 Amazon CLI 创建环境,则必须提前创建这些角色,并在创建环境时指定它们,然后才能使用增强型运行状况。有关为您的环境创建适当角色的说明,请参阅服务角色、实例配置文件和用户策略

我们建议您对实例配置文件和服务角色使用托管策略。托管策略是 Elastic Beanstalk 维护的 Amazon Identity and Access Management (IAM) 策略。使用托管策略可确保您的环境具有其正常运行所需的所有权限。

对于实例配置文件,您可以分别对 Web 服务器层工作线程层环境使用 AWSElasticBeanstalkWebTierAWSElasticBeanstalkWorkerTier 托管策略。有关这两个托管实例配置文件策略的详细信息,请参阅 管理 Elastic Beanstalk 实例配置文件

增强型运行状况授权

Elastic Beanstalk 实例配置文件托管策略包含 elasticbeanstalk:PutInstanceStatistics 操作的权限。此操作不是 Elastic Beanstalk API 的一部分。这是不同的 API 的一部分,环境实例在内部使用它向 Elastic Beanstalk 服务传递增强型运行状况信息。您不直接调用此 API。

创建新环境时,默认状态下已启用 elasticbeanstalk:PutInstanceStatistics 操作的授权。为了提高环境的安全性并帮助防止以您的名义骗取运行状况数据,我们建议您启用该操作的授权。如果您对实例配置文件使用托管策略,则此功能将可在您的新环境中使用,而无需进行进一步配置。如果您使用自定义实例配置文件而不是托管策略,则您的环境可能会显示 No Data(无数据)运行状况状态。发生这种情况的原因是,实例未获授权执行将增强型运行状况数据传送到服务的操作。

要授权执行此操作,请在您的实例配置文件中包含以下语句。

{ "Sid": "ElasticBeanstalkHealthAccess", "Action": [ "elasticbeanstalk:PutInstanceStatistics" ], "Effect": "Allow", "Resource": [ "arn:aws:elasticbeanstalk:*:*:application/*", "arn:aws:elasticbeanstalk:*:*:environment/*" ] }

如果您目前不想使用增强型运行状况授权,则可以将 aws:elasticbeanstalk:healthreporting:system 命名空间中的 EnhancedHealthAuthEnabled 选项设为 false。如果此选项处于禁用状态,则不需要前面所述的权限。您可以从实例配置文件中删除它们,以获得对应用程序和环境的最小权限访问

注意

以前 EnhancedHealthAuthEnabled 默认设置为 false,这会导致默认情况下,elasticbeanstalk:PutInstanceStatistics 操作的授权也会遭禁用。要为现有环境启用此操作,请将 aws:elasticbeanstalk:healthreporting:system 命名空间中的 EnhancedHealthAuthEnabled 选项设为 true。您可以通过在配置文件中使用选项设置来配置此选项。

增强型运行状况事件

当环境在不同状态间转换时,增强型运行状况系统将生成事件。以下示例显示了环境在信息正常严重状态间转换时输出的事件。


        Elastic Beanstalk 控制台的 Elastic Beanstalk 环境概述页面,此页面显示了增强型运行状况最新事件

转换到较差的状态时,增强型运行状况事件将包括一条消息,指示转换原因。

并非所有实例级别的状态更改都会导致 Elastic Beanstalk 发送事件。为了防止错误警报,仅当一个问题在多次检查中连续出现时,Elastic Beanstalk 才生成与运行状况相关的事件。

实时的环境级别运行状况信息(包括状态、颜色和原因)可在 Elastic Beanstalk 控制台和 EB CLI环境概述页面中找到。通过将 EB CLI 连接到您的环境并运行 eb health 命令,您还可以查看来自环境中每个实例的实时状态。

更新、部署和扩展期间的增强型运行状况报告行为

启用增强型运行状况报告可影响您的环境在配置更新和部署期间的行为。在所有实例一致通过运行状况检查之前,Elastic Beanstalk 不会完成批量更新。此外,由于增强型运行状况报告将对运行状况应用更高标准并监控更多因素,因此通过了基本运行状况报告的 ELB 运行状况检查的实例不一定通过增强型运行状况报告的检查。请参阅有关滚动配置更新滚动部署的主题,以了解有关运行状况检查如何影响更新过程的详细信息。

增强型运行状况报告还可以凸显为 Elastic Load Balancing 设置恰当的运行状况检查 URL 的必要性。当您的环境纵向扩展以满足需求时,新的实例在通过足够的 ELB 运行状况检查之后便会立即开始接收请求。如果没有配置运行状况检查 URL,则这可能是在新实例能够接受 TCP 连接之后的短短 20 秒。

如果您的应用程序在负载均衡器声明其运行状况足够良好并可以接受流量之前还没有完成启动,您将会看到一大批失败的请求,而且您的环境将开始让运行状况检查失败。命中您的应用程序所服务的路径的运行状况检查 URL 可防止此问题。在对运行状况检查 URL 的 GET 请求返回 200 状态代码之前,ELB 运行状况检查不会通过。