

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

# 亚马逊 ECS 的指标
<a name="ecs-metrics"></a>

[Amazon ECS 使用 Amazon ECS 容器代理在集群和服务级别为 EC2 和 Fargate 启动类型提供标准 CloudWatch 指标](https://docs.aws.amazon.com//AmazonECS/latest/developerguide/cloudwatch-metrics.html)（例如 CPU 和内存利用率）。您还可以使用 Container Insights 捕获服务、任务和 CloudWatch容器的指标，或者使用嵌入式指标格式捕获自己的自定义容器指标。

Container Insights 是一项 CloudWatch 功能，可提供集群、容器实例、服务和任务级别的 CPU 利用率、内存利用率、网络流量和存储等指标。Container Insights 还会创建自动仪表板，帮助您分析服务和任务，并查看容器级别的平均内存或 CPU 使用率。Container Insights 将`ECS/ContainerInsights`[自定义指标发布到自定义命名空间](https://docs.aws.amazon.com//AmazonECS/latest/developerguide/cloudwatch-metrics.html)，可用于绘制图表、警报和仪表板。

您可以通过为每个 Amazon ECS 集群启用容器洞察来开启容器洞察指标。如果您还想查看容器实例级别的指标，可以将[ CloudWatch 代理作为守护程序容器启动到您的 Amazon ECS 集群上](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/deploy-container-insights-ECS-instancelevel.html)。您可以使用 [cwagent-ecs-instance-metric-cfn.yaml](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/blob/main/examples/ecs/cwagent-ecs-instance-metric-cfn.yaml) CloudFormation 模板将代理部署 CloudWatch 为 Amazon ECS 服务。重要的是，此示例假设您创建了相应的自定义 CloudWatch代理配置，并将其与密钥一起存储在 Parameter Store 中`ecs-cwagent-daemon-service`。

作为 Container Insights 的守护程序 CloudWatch 容器部署的[CloudWatch代理](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html)包括其他磁盘、内存和 CPU 指标，例如`instance_cpu_reserved_capacity`和`instance_memory_reserved_capacity``ClusterName`、`ContainerInstanceId`、`InstanceId`维度。容器实例级别的指标由 Container Insights 使用 CloudWatch 嵌入式指标格式实现。您可以使用本指南[为 CloudWatch 代理部署和配置设置状态管理器和分发服务器](install-cloudwatch-systems-manager.md#set-up-systems-manager-distributor)部分中的方法为 Amazon ECS 容器实例配置其他系统级指标。

## 在 Amazon ECS 中创建自定义应用程序指标
<a name="ecs-metrics-applications"></a>

您可以使用[CloudWatch嵌入式指标格式为应用程序创建自定义指标](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format.html)。`awslogs`日志驱动程序可以解释 CloudWatch 嵌入式指标格式语句。

以下示例中的`CW_CONFIG_CONTENT`环境变量设置为 S `cwagentconfig` ystems Manager 参数存储参数的内容。您可以使用此基本配置运行代理，将其配置为嵌入式指标格式端点。但是，它已不再必要。

```
  {
  "logs": {
    "metrics_collected": {
      "emf": { }
    }
  }
}
```

如果您在多个账户和地区部署了 Amazon ECS，则可以使用 AWS Secrets Manager 密钥来存储您的 CloudWatch 配置，并将密钥策略配置为与您的组织共享。您可以使用任务定义中的 secrets 选项来设置`CW_CONFIG_CONTENT`变量。

您可以在应用程序中使用 AWS 提供的[开源嵌入式指标格式库](https://docs.aws.amazon.com//AmazonCloudWatch/latest/monitoring/CloudWatch_Embedded_Metric_Format_Libraries.html)，并指定`AWS_EMF_AGENT_ENDPOINT`环境变量以连接到充当嵌入式指标格式端点的 CloudWatch 代理 sidecar 容器。例如，您可以使用 [ecs\$1cw\$1emf\$1example 示例](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/tree/main/examples/ecs/ecs_cw_emf_example) Python 应用程序将嵌入式指标格式的指标发送到配置为嵌入式指标格式端点的代理 CloudWatch sidecar 容器。

的 Flu [ent Bit 插件](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit)还 CloudWatch 可用于发送嵌入式公制格式消息。你也可以使用 [ecs\$1firelense\$1emf\$1example 示例 Python 应用程序将嵌入式指标格式的指标发送到 F](https://github.com/aws-samples/logging-monitoring-apg-guide-examples/tree/main/examples/ecs/ecs_firelense_emf_example) irelens for Amazon ECS 边车容器。

如果您不想使用嵌入式指标格式，则可以通过 [AWS API](https://docs.aws.amazon.com//AmazonCloudWatch/latest/APIReference/Welcome.html) 或 [AWS SDK](https://aws.amazon.com/developer/tools/) 创建和更新 CloudWatch 指标。除非您有特定的用例，否则我们不建议使用这种方法，因为它会增加代码的维护和管理开销。