Amazon ECS クラスター上で EC2 インスタンスレベルのメトリクスを収集するための AWS Distro for OpenTelemetry のデプロイ - Amazon CloudWatch

Amazon ECS クラスター上で EC2 インスタンスレベルのメトリクスを収集するための AWS Distro for OpenTelemetry のデプロイ

このセクションの手順を使用して、AWS Distro for OpenTelemetry を使用して Amazon ECS クラスターで EC2 インスタンスレベルのメトリクスを収集します。AWS Distro for OpenTelemetry の詳細については、AWS Distro for OpenTelemetry を参照してください。

以下の手順では、クラスターが Amazon ECS を実行するように既に設定されていることを前提としています。このクラスターは、EC2 起動タイプを使用してデプロイする必要があります。Amazon ECS で AWS Distro for Open Telemetry を使用し、この目的のために Amazon ECS クラスターを設定する方法の詳細については、「Amazon Elastic Container Service で ECS EC2 インスタンスレベルのメトリクスのための AWS Distro for OpenTelemetry Collector を設定する」を参照してください。

AWS CloudFormation を使用した高速セットアップ

Amazon ECS 向けの AWS Distro for OpenTelemetry コレクターを EC2 にインストールするための AWS CloudFormation テンプレートファイルをダウンロードします。次の 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_TO_CloudFormation_TEMPLATE をテンプレートファイルを保存したパスに置き換えます。そして、次のコマンドのように、以下のパラメータをエクスポートして、AWS CloudFormation コマンドを実行します。

  • Cluster_Name — Amazon ECS のクラスター名

  • AWS_REGION — データが送信されるリージョン

  • PATH_TO_CloudFormation_TEMPLATE — AWS CloudFormation テンプレートファイルを保存したパス

  • command — AWS Distro for Open Telemetry コレクターが 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 コンソールを使用して、タスクが実行されているかどうかを確認します。

高速セットアップのトラブルシューティング

AWS CloudFormation スタックのステータスを確認するには、次のコマンドを入力します。

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

StackStatusCREATE_COMPLETE または CREATE_IN_PROGRESS 以外の場合、スタックイベントをチェックしてエラーを検出します。次のコマンドを入力します。

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

AOCECS デーモンサービスの状態を確認するには、次のコマンドを入力します。出力では、デプロイセクションの runningCountdesiredCount と等しいことがわかります。等しくない場合は、出力の「エラー」セクションを確認してください。

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

CloudWatch Logs コンソールを使用してエージェントログを確認することもできます。/aws/ecs/containerinsights/{ClusterName}/performance のロググループを探します。

手動およびカスタムセットアップ

このセクションの手順に従って、Amazon EC2 インスタンスでホストされている Amazon ECS クラスターからインスタンスレベルのメトリクスを収集するための AWS Distro for OpenTelemetry を手動でデプロイします。

ステップ 1: 必要なロールとポリシー

2 つの IAM ロールが必要です。まだ存在しない場合は、作成する必要があります。これらのロールの詳細については、「IAM ポリシーの作成」および「IAM ロールの作成」を参照してください。

ステップ 2: タスク定義を作成する

タスク定義を作成し、それを使用して AWS Distro for OpenTelemetry をデーモンサービスとして起動します。

タスク定義テンプレートを使用してタスク定義を作成するには、「AWS OTel Collector を使用して EC2 インスタンスの ECS EC2 タスク定義を作成する」の手順に従います。

Amazon ECS コンソールを使用してタスク定義を作成するには、「Amazon ECS の EC2 インスタンスメトリクス用に、AWS コンソールでタスク定義を作成して AWS OTel Collector をインストールする」の手順に従います。

ステップ 3: デーモンサービスを起動する

AWS Distro for OpenTelemetry をデーモンサービスとして起動するには、「デーモンサービスを使用して Amazon Elastic Container Service (Amazon ECS) でタスクを実行する」の手順に従います。

(オプション) 詳細設定

オプションで、SSM を使用して、Amazon EC2 インスタンスでホストされている Amazon ECS クラスター内の AWS Distro for OpenTelemetry の他の設定オプションを指定できます。設定ファイルの作成についての詳細は、「OpenTelemetry のカスタム設定」を参照してください。設定ファイルで使用できるオプションの詳細については、「AWS Container Insights Receiver」を参照してください。