

# 部署 AWS Distro for OpenTelemetry 以收集 Amazon ECS 集群上的 EC2 实例级指标
<a name="deploy-container-insights-ECS-OTEL"></a>

使用此部分中的步骤使用 AWS Distro for OpenTelemetry 来收集 Amazon ECS 集群上的 EC2 实例级指标。有关 AWS Distro for OpenTelemetry 的更多信息，请参阅 [AWS Distro for OpenTelemetry](https://aws.amazon.com/otel/)。

这些步骤假设您已具有正在运行 Amazon ECS 的集群。此集群必须使用 EC2 启动类型进行部署。有关将 AWS Distro for Open Telemetry 与 Amazon ECS 结合使用以及为此设置 Amazon ECS 集群的更多信息，请参阅[设置 Amazon Elastic Container Service 中的 AWS Distro for OpenTelemetry Collector 以了解 ECS EC2 实例级指标](https://aws-otel.github.io/docs/setup/ecs#3-setup-the-aws-otel-collector-for-ecs-ec2-instance-metrics)。

**Topics**
+ [使用 CloudFormation 进行快速设置](#container-insights-ECS-OTEL-quicksetup)
+ [手动和自定义设置](#container-insights-ECS-OTEL-custom)

## 使用 CloudFormation 进行快速设置
<a name="container-insights-ECS-OTEL-quicksetup"></a>

下载 CloudFormation 模板文件，用于在 EC2 上为 Amazon ECS 安装 AWS Distro for OpenTelemetry 收集器。运行以下 curl 命令。

```
curl -O https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/ecs/aws-otel-ec2-instance-metrics-daemon-deployment-cfn.yaml
```

下载模板文件后，将其打开并将 *PATH\$1TO\$1CloudFormation\$1TEMPLATE* 替换为您保存模板文件的路径。然后导出以下参数并运行 CloudFormation 命令，如以下命令所示。
+ **Cluster\$1Name**– Amazon ECS 集群名称
+ **AWS\$1Region**– 将发送数据的区域
+ **PATH\$1TO\$1CloudFormation\$1TEMPLATE**– 保存 CloudFormation 模板文件的路径。
+ **command**– 要启用 AWS Distro for OpenTelemetry 收集器来收集 Amazon EC2 上 Amazon ECS 的实例级指标，您必须指定 `--config=/etc/ecs/otel-instance-metrics-config.yaml` 作为此参数。

```
ClusterName=Cluster_Name
Region=AWS_Region
command=--config=/etc/ecs/otel-instance-metrics-config.yaml
aws cloudformation create-stack --stack-name AOCECS-${ClusterName}-${Region} \
--template-body file://PATH_TO_CloudFormation_TEMPLATE \
--parameters ParameterKey=ClusterName,ParameterValue=${ClusterName} \
ParameterKey=CreateIAMRoles,ParameterValue=True \
ParameterKey=command,ParameterValue=${command} \
--capabilities CAPABILITY_NAMED_IAM \
--region ${Region}
```

运行此命令后，使用 Amazon ECS 控制台查看任务是否正在运行。

### 对快速设置进行故障排除
<a name="container-insights-ECS-OTEL-quicksetup-troubleshooting"></a>

要查看 CloudFormation 堆栈的状态，请输入以下命令。

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack --stack-name AOCECS-$ClusterName-$Region --region $Region
```

如果 `StackStatus` 的值不是 `CREATE_COMPLETE` 或 `CREATE_IN_PROGRESS`，请查看堆栈事件以查找错误。输入如下命令。

```
ClusterName=cluster-name
Region=cluster-region
aws cloudformation describe-stack-events --stack-name AOCECS-$ClusterName-$Region --region $Region
```

要查看 `AOCECS` 守护进程服务的状态，请输入以下命令。在输出中，您应看到部署部分中的 `desiredCount` 等于 `runningCount`。如果二者不相等，请查看输出中的故障部分。

```
ClusterName=cluster-name
Region=cluster-region
aws ecs describe-services --services AOCECS-daemon-service --cluster $ClusterName --region $Region
```

您还可以使用 CloudWatch Logs 控制台来查看代理日志。查找 **/aws/ecs/containerinsights/\$1ClusterName\$1/performance** 日志组。

## 手动和自定义设置
<a name="container-insights-ECS-OTEL-custom"></a>

执行此部分中的步骤，手动部署 AWS Distro for OpenTelemetry 以从 Amazon EC2 实例上托管的 Amazon ECS 集群收集实例级别指标。

### 步骤 1：必要的角色和策略
<a name="container-insights-ECS-OTEL-custom-iam"></a>

需要两个 IAM 角色。如果这两个角色不存在，则必须创建它们。有关这些角色的更多信息，请参阅[创建 IAM 策略](https://aws-otel.github.io/docs/setup/ecs/create-iam-policy)和[创建 IAM 角色](https://aws-otel.github.io/docs/setup/ecs/create-iam-role)。

### 步骤 2：创建任务定义
<a name="container-insights-ECS-OTEL-custom-task"></a>

创建一个任务定义并使用它将 AWS Distro for OpenTelemetry 作为守护进程服务启动。

要使用任务定义模板创建任务定义，请按照[使用 AWS OTel Collector 为 EC2 实例创建 ECS EC2 任务定义](https://aws-otel.github.io/docs/setup/ecs/task-definition-for-ecs-ec2-instance)中的说明进行操作。

要使用 Amazon ECS 控制台创建任务定义，请按照[通过 AWS 控制台为 Amazon ECS EC2 实例指标创建任务定义来安装 AWS OTel Collector ](https://aws-otel.github.io/docs/setup/ecs/create-task-definition-instance-console) 中的说明进行操作。

### 步骤 3：启动守护进程服务
<a name="container-insights-ECS-OTEL-custom-launch"></a>

要将 AWS Distro for OpenTelemetry 作为守护进程服务启动，请按照[使用守护进程服务在 Amazon Elastic Container Service (Amazon ECS) 上运行您的任务](https://aws-otel.github.io/docs/setup/ecs/run-daemon-service)中的说明进行操作。

### （可选）高级配置
<a name="container-insights-ECS-OTEL-custom-advancdeconfig"></a>

（可选）您可以使用 SSM 来指定 Amazon EC2 实例上托管的 Amazon ECS 集群中 AWS Distro for OpenTelemetry 的其他配置选项。有关创建配置文件的更多信息，请参阅[自定义 OpenTelemetry 配置](https://aws-otel.github.io/docs/setup/ecs#5-custom-opentelemetry-configuration)。有关在配置文件中可使用的选项的详细信息，请参阅 [AWS Container Insights Receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/awscontainerinsightreceiver/README.md)。