本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为环境发布 Amazon CloudWatch 自定义指标
您可以将通过 Amazon Elastic Beanstalk 增强型运行状况报告收集的数据 CloudWatch 作为自定义指标发布到 Amazon。发布指标 CloudWatch 可让您监控应用程序性能随时间推移而发生的变化,并通过跟踪资源使用情况和请求延迟随负载的变化情况来识别潜在问题。
通过将指标发布到 CloudWatch,您还可以将其与监控图表和警报一起使用。当您使用增强型运行状况报告时 EnvironmentHealth,会自动启用一个免费指标。除标准CloudWatch 费用以外的自定义指标EnvironmentHealth均会产生费用
要发布环境的 CloudWatch 自定义指标,必须先启用该环境的增强型运行状况报告。有关说明,请参阅启用 Elastic Beanstalk 增强型运行状况报告:
增强型运行状况报告指标
当您在环境中启用增强型运行状况报告时,增强型运行状况报告系统会自动发布一个CloudWatch 自定义指标EnvironmentHealth。要向发布其他指标 CloudWatch,请使用 Elastic Bean stalk 控制台、EB CLI 或.ebexten sions 使用这些指标配置您的环境。
您可以将以下增强型运行状况指标从您的环境发布到 CloudWatch。
可用指标 – 所有平台
EnvironmentHealth- 
          
仅环境。除非您配置其他 CloudWatch 指标,否则这是增强型运行状况报告系统发布的唯一指标。环境运行状况由七种状态之一表示。在 CloudWatch 控制台中,这些状态映射到以下值:
- 
              
0 - 正常
 - 
              
1 - 信息
 - 
              
5 - 未知
 - 
              
10 - 无数据
 - 
              
15 - 警告
 - 
              
20 - 已降级
 - 
              
25 - 严重
 
 - 
              
 InstancesSevereInstancesDegradedInstancesWarningInstancesInfoInstancesOkInstancesPendingInstancesUnknownInstancesNoData- 
          
仅环境。些指标表示环境中处于每种运行状况的实例的数量。
InstancesNoData表示未在为其接收数据的实例的数量。 ApplicationRequestsTotalApplicationRequests5xxApplicationRequests4xxApplicationRequests3xxApplicationRequests2xx- 
          
实例和环境。表示实例或环境完成的请求的总数量以及每种状态代码类别的请求的数量。
 ApplicationLatencyP10ApplicationLatencyP50ApplicationLatencyP75ApplicationLatencyP85ApplicationLatencyP90ApplicationLatencyP95ApplicationLatencyP99ApplicationLatencyP99.9- 
          
实例和环境。表示完成最快的 x% 的请求所耗费的平均时间量(以秒为单位)。
 InstanceHealth- 
          
仅实例。表示实例的当前运行状况状态。实例运行状况由七种状态之一表示。在 CloudWatch 控制台中,这些状态映射到以下值:
- 
              
0 - 正常
 - 
              
1 - 信息
 - 
              
5 - 未知
 - 
              
10 - 无数据
 - 
              
15 - 警告
 - 
              
20 - 已降级
 - 
              
25 - 严重
 
 - 
              
 
可用指标 - Linux
CPUIrqCPUIdleCPUUserCPUSystemCPUSoftirqCPUIowaitCPUNice- 
          
仅实例。表示前一分钟 CPU 在每种状态下耗费时间的百分比。
 LoadAverage1min- 
          
仅实例。前一分钟实例的平均 CPU 负载。
 RootFilesystemUtil- 
          
仅实例。表示正在使用的磁盘空间的百分比。
 
可用指标 - Windows
CPUIdleCPUUserCPUPrivileged- 
          
仅实例。表示前一分钟 CPU 在每种状态下耗费时间的百分比。
 
使用 Elastic Beanstalk 控制台配置 CloudWatch 指标
您可以使用 Elastic Beanstalk 控制台配置您的环境,以便向其发布增强型运行状况报告 CloudWatch 指标,并使其可用于监控图表和警报。
在 Elastic Beanstalk 控制台中配置 CloudWatch 自定义指标
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 Amazon Web Services 区域 - 
  
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
 在导航窗格中,选择 Configuration(配置)。
- 
        
在 Monitoring (监控) 配置类别中,选择 Edit (编辑)。
 - 
        
在运行状况报告下,选择要发布到 CloudWatch 的实例和环境指标。要选择多个指标,请在选择时按住 Ctrl 键。
 - 
要保存更改,请选择页面底部的 Apply(应用)。
 
启用 CloudWatch 自定义指标会将其添加到 “监控” 页面上的可用指标列表中。
使用 EB CLI 配置 CloudWatch 自定义指标
您可以通过以下方法使用 EB CLI 配置自定义指标:在本地保存您的环境的配置,添加用于定义要发布的指标的条目,然后将该配置上传到 Elastic Beanstalk。您可以在环境创建期间或创建后将保存的配置应用于环境。
使用 EB CLI 和保存的配置配置 CloudWatch 自定义指标
- 
        
使用 eb init 初始化您的项目文件夹。
 - 
        
通过运行 eb create 命令创建环境。
 - 
        
通过运行 eb config save 命令在本地保存配置模板。以下示例使用
--cfg选项指定配置的名称。$eb config save --cfgConfiguration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml01-base-state - 
        
在文本编辑器中打开保存的配置文件。
 - 
        
在
OptionSettings> 下aws:elasticbeanstalk:healthreporting:system:,添加一个ConfigDocument密钥以启用您想要的每个 CloudWatch 指标。例如,以下ConfigDocument将在环境级别发布ApplicationRequests5xx和ApplicationRequests4xx指标,并在实例级别发布ApplicationRequestsTotal指标。OptionSettings: ... aws:elasticbeanstalk:healthreporting:system:ConfigDocument: CloudWatchMetrics: Environment: ApplicationRequests5xx: 60 ApplicationRequests4xx: 60 Instance: ApplicationRequestsTotal: 60 Version: 1SystemType: enhanced ...在示例中,60 表示指标度量之间的秒数。目前,这是唯一支持的值。
注意
您可在同一个
ConfigDocument选项设置中结合CloudWatchMetrics和Rules。为环境配置增强型运行状况规则中介绍了Rules。如果您以前使用
Rules配置增强型运行状况规则,则您使用 eb config save 命令检索的配置文件在ConfigDocument部分中已经具有Rules键。请勿删除它 - 将CloudWatchMetrics部分添加到相同的ConfigDocument选项值中。 - 
        
保存配置文件,关闭文本编辑器。在此示例中,更新的配置文件使用与下载的配置文件不同的名称 (
02-cloudwatch-enabled.cfg.yml) 保存。这将在上传文件时创建一个单独保存的配置。您可以使用与下载的文件相同的名称覆盖现有配置而无需创建新名称。 - 
        
使用 eb config put 命令将更新的配置文件上传到 Elastic Beanstalk。
$eb config put02-cloudwatch-enabled当将 eb config
get和put命令用于保存的配置时,请勿包含文件扩展名。 - 
        
将保存的配置应用于正在运行的环境。
$eb config --cfg02-cloudwatch-enabled--cfg选项指定一个应用于环境的命名配置文件。可以在本地或在 Elastic Beanstalk 中保存配置文件。如果两个位置中都存在带有指定名称的配置文件,则 EB CLI 将使用本地文件。 
提供自定义指标配置文件
Amazon CloudWatch 自定义指标的配置(配置)文档是一个 JSON 文档,其中列出了要在环境和实例级别发布的指标。以下示例显示了一个在 Linux 上启用所有可用自定义指标的配置文件。
{
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}
    对于 Amazon CLI,您可以将文档作为选项设置参数中的Value键值传递,该参数本身就是一个 JSON 对象。在这种情况下,您必须对所嵌入文档中的引号进行转义。
$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[
    {
        "Namespace": "aws:elasticbeanstalk:healthreporting:system",
        "OptionName": "ConfigDocument",
        "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}"
    }
]'
    对于采用 YAML 的 .ebextensions 配置文件,您可以按原样提供 JSON 文档。
  option_settings:
    - namespace: aws:elasticbeanstalk:healthreporting:system
      option_name: ConfigDocument
      value: {
  "CloudWatchMetrics": {
    "Environment": {
      "ApplicationLatencyP99.9": 60,
      "InstancesSevere": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "InstancesUnknown": 60,
      "ApplicationLatencyP85": 60,
      "InstancesInfo": 60,
      "ApplicationRequests2xx": 60,
      "InstancesDegraded": 60,
      "InstancesWarning": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "InstancesNoData": 60,
      "InstancesPending": 60,
      "ApplicationLatencyP10": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "InstancesOk": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60
    },
    "Instance": {
      "ApplicationLatencyP99.9": 60,
      "ApplicationLatencyP90": 60,
      "ApplicationLatencyP99": 60,
      "ApplicationLatencyP95": 60,
      "ApplicationLatencyP85": 60,
      "CPUUser": 60,
      "ApplicationRequests2xx": 60,
      "CPUIdle": 60,
      "ApplicationLatencyP50": 60,
      "ApplicationRequestsTotal": 60,
      "RootFilesystemUtil": 60,
      "LoadAverage1min": 60,
      "CPUIrq": 60,
      "CPUNice": 60,
      "CPUIowait": 60,
      "ApplicationLatencyP10": 60,
      "LoadAverage5min": 60,
      "ApplicationRequests5xx": 60,
      "ApplicationLatencyP75": 60,
      "CPUSystem": 60,
      "ApplicationRequests3xx": 60,
      "ApplicationRequests4xx": 60,
      "InstanceHealth": 60,
      "CPUSoftirq": 60
    }
  },
  "Version": 1
}