View a markdown version of this page

セットアップガイド (AWS CLI) - Amazon CloudWatch

セットアップガイド (AWS CLI)

このガイドでは、AWS CLI を使用して、既存の Amazon EKS クラスターに Enhanced Container Insights (Classic) をインストールする方法について説明します。アドオンは、インフラストラクチャメトリクス、コンテナログ、パフォーマンスデータを収集する DaemonSet として CloudWatch エージェントをデプロイします。

メンテナンスモード

Enhanced Container Insights (Classic) はメンテナンスモードになっています。新しいデプロイには OTel Container Insights (推奨) をお勧めします。

前提条件

開始する前に、以下の前提条件を満たしていることを確認します。

  • Kubernetes バージョン 1.25 以降を実行している既存の Amazon EKS クラスター

  • プラットフォームバージョン eks.1 以降

  • AWS CLI バージョン 2.12.0 以降

  • kubectl がターゲットクラスターと通信できるように設定されていること

  • IAM アクセス許可: eks:CreateAddoneks:DescribeAddoniam:CreateServiceLinkedRoleiam:CreateRole、および iam:AttachRolePolicy

  • クラスターにインストールされた EKS Pod Identity Agent アドオン、または設定済みのサービスアカウントの IAM ロール (IRSA)

  • クラスターから CloudWatch エンドポイントへのアウトバウンドインターネットアクセス

ステップ 1: IAM ロールを作成する

CloudWatch エージェントが CloudWatch にデータを送信できるようにする IAM ロールを作成します。

CloudWatch エージェント IAM ロールを作成するには
  1. EKS Pod Identity 用の信頼ポリシーを持つロールを作成するには、次のコマンドを実行します。

    aws iam create-role \ --role-name EKS-CloudWatch-Agent-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] }] }'
  2. CloudWatchAgentServerPolicy 管理ポリシーをロールにアタッチします。

    aws iam attach-role-policy \ --role-name EKS-CloudWatch-Agent-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy

ステップ 2: Pod Identity の関連付けを作成する

IAM ロールをクラスター内の CloudWatch エージェントサービスアカウントに関連付けます。

Pod Identity の関連付けを作成するには
  • 以下のコマンドを実行してください。cluster-name を Amazon EKS クラスターの名前に、account-id を AWS アカウント ID に置き換えます。

    aws eks create-pod-identity-association \ --cluster-name cluster-name \ --namespace amazon-cloudwatch \ --service-account cloudwatch-agent \ --role-arn arn:aws:iam::account-id:role/EKS-CloudWatch-Agent-Role

ステップ 3: Amazon CloudWatch Observability アドオンをインストールする

クラスターに amazon-cloudwatch-observability アドオンをインストールします。

アドオンをインストールするには
  • 以下のコマンドを実行してください。cluster-name は、自分の Amazon EKS クラスターに置き換えます。

    aws eks create-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --addon-version v5.x.x-eksbuild.x

    v5.x.x-eksbuild.x を利用可能な最新の v5.x バージョンに置き換えます。--addon-version なしでインストールすると、最新バージョン (v6.2.0 以降) がインストールされ、Classic ではなく OTel パイプラインがアクティブ化されます。

ステップ 4: アドオンのステータスを確認する

アドオンが正常にインストールされたことを確認します。

アドオンのステータスを確認するには
  • 以下のコマンドを実行してください。cluster-name は、自分の Amazon EKS クラスターに置き換えます。

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.status" \ --output text

    期待される出力は ACTIVE です。

ステップ 5: エージェントポッドが実行されていることを確認する

CloudWatch エージェントポッドが amazon-cloudwatch 名前空間で実行されていることを確認します。

エージェントポッドが実行されていることを確認するには
  • 以下のコマンドを実行してください。

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent

    すべてのエージェントポッドが Running ステータスになっている必要があります。

CloudWatch でデータを確認する

セットアップを完了すると、3~5 分以内に Container Insights データが CloudWatch に表示されます。

Container Insights データを確認するには
  1. CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/ を開いてください。

  2. ナビゲーションペインで、[Container Insights] を選択します。

  3. node_cpu_utilizationpod_memory_utilization など、クラスターのメトリクスが表示されることを確認します。

トラブルシューティング

Amazon EKS に Enhanced Container Insights (Classic) をインストールするときに発生する一般的な問題を解決するには、次のガイダンスを使用します。

アドオンのステータスが CREATE_FAILED または DEGRADED と表示される

症状: aws eks describe-addon を実行すると、ステータスに CREATE_FAILED または DEGRADED が表示されます。

原因: IAM アクセス許可が不十分であるか、Pod Identity の関連付けがないため、アドオンのインストールに失敗したためです。

解決策: この問題を解決するには、次の手順に従います。

  1. 次のコマンドを実行して、詳細なエラー情報を確認します。cluster-name をクラスターの名前に置き換えます。

    aws eks describe-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability \ --query "addon.health"
  2. IAM ロールが存在し、CloudWatchAgentServerPolicy がアタッチされていることを確認します。

  3. Pod Identity の関連付けが正しい名前空間 (amazon-cloudwatch) とサービスアカウント (cloudwatch-agent) を対象としていることを確認します。

  4. 障害が発生したアドオンを削除し、問題を解決した後に再インストールします。

    aws eks delete-addon \ --cluster-name cluster-name \ --addon-name amazon-cloudwatch-observability

5 分経過しても CloudWatch にメトリクスが表示されない

症状: エージェントポッドは Running ステータスを表示しますが、5 分後に CloudWatch にメトリクスが表示されません。

原因: ネットワークの制限または IAM アクセス許可が正しくないため、エージェントが CloudWatch にデータを送信できないためです。

解決策: この問題を解決するには、次の手順に従います。

  1. VPC セキュリティグループとネットワーク ACL が CloudWatch エンドポイントへのアウトバウンド HTTPS トラフィック (ポート 443) を許可していることを確認します。

  2. アクセス許可エラーまたは接続タイムアウトがないか、エージェントログで確認します。

    kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=100 | grep -i "error\|timeout\|denied"
  3. IAM ロールに CloudWatchAgentServerPolicy ポリシーがアタッチされており、信頼ポリシーで pods.eks.amazonaws.com が許可されていることを確認します。

エージェントポッドが保留中または CrashLoopBackOff でスタックする

症状: kubectl get pods -n amazon-cloudwatch を実行すると、1 つまたは複数のポッドに Pending または CrashLoopBackOff ステータスが表示されます。

原因: ノードリソースの不足、イメージプルの失敗、またはアクセス許可がないため、エージェントポッドを起動できないためです。

解決策: この問題を解決するには、次の手順に従います。

  1. ポッドイベントで詳細なエラーメッセージを確認します。

    kubectl describe pod -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent
  2. エージェントポッドで使用できる十分な CPU とメモリがノードにあることを確認します。

  3. EKS Pod Identity Agent アドオンがインストールされ、実行されていることを確認します。

    kubectl get pods -n kube-system -l app.kubernetes.io/name=eks-pod-identity-agent

次のステップ

すぐにアップグレードしますか? Enhanced Container Insights (Classic) から OTel Container Insights に移行するステップバイステップの手順については、「Enhanced Container Insights (Classic) から OTel Container Insights に移行する」を参照してください。