スキップしてコンテンツを表示

Amazon CloudWatch Observability アドオンを使用して Amazon EKS クラスターを監視する方法を教えてください。

所要時間2分
0

Amazon CloudWatch Observability アドオンを使用して Amazon Elastic Kubernetes Service (Amazon EKS) クラスターを監視しようとしています。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

前提条件

  • CloudWatch Container Insights をサポートする AWS リージョンで、ノードがアタッチされた Amazon EKS クラスターが機能している。
  • クラスターに kubectl がインストール済みである。
  • eksctl CLI がマシンにインストール済みである。

アドオンの IAM ロールを作成する

AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダーを作成するには、次のコマンドを実行します。

eksctl utils associate-iam-oidc-provider --cluster my-cluster-name --approve

注: my-cluster-name は、実際のクラスター名に置き換えます。詳細については、「Kubernetes サービスアカウントに IAM ロールを割り当てる」を参照してください。

CloudWatchAgentServerPolicy がアタッチされた IAM ロールを作成するには、次のコマンドを実行します。

eksctl create iamserviceaccount \
  --name cloudwatch-agent \
  --namespace amazon-cloudwatch
  --cluster my-cluster-name \
  --role-name AmazonCloudWatchObservabilityRole \
  --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
  --role-only \
  --approve

注: my-cluster-name は、実際のクラスター名に置き換えます。上記のコマンドでは、エージェントサービスアカウントが OIDC を使用してロールを引き受ける設定も行われます。

アドオンをインストールする

アドオンをインストールするには、Amazon EKS コンソールまたは AWS CLI を使用します。

Amazon EKS コンソール

次の手順を実行します。

  1. Amazon EKS コンソールを開きます。
  2. ナビゲーションペインで [クラスター] を選択します。
  3. 該当するクラスター名を選択し、[アドオン] タブを選択します。
  4. [その他のアドオンを入手] を選択し、[アドオンを選択] を選択します。
  5. [Amazon EKS アドオン] セクションで、[Amazon CloudWatch Observability] を選択し、[次へ] を選択します。
  6. [選択したアドオン設定の構成] ページで、使用するバージョンを選択します。
  7. [IAM ロールの選択]AmazonCloudWatchObservabilityRole を選択し、[次へ] をクリックします。
  8. [確認と追加] ページで [作成] を選択します。

AWS CLI

アドオンをインストールするには、次の create-addon コマンドを実行します。

aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name --service-account-role-arn arn:aws:iam::Account-ID:role/AmazonCloudWatchObservabilityRole

注: 実際のものでそれぞれ、my-cluster-name をクラスター名に、Account-ID を AWS アカウント ID に置き換えます。

インストールが完了すると、Amazon EKS はクラスター内に amazon-cloudwatch という名前空間を作成します。クラスターでは、CloudWatch エージェントと Fluent Bit ポッドも有効化されます。

アクティブなポッドを表示するには、次のコマンドを実行します。

kubectl get pods -n amazon-cloudwatch

出力例

NAME                                                              READY   STATUS    RESTARTS   AGE
amazon-cloudwatch-observability-controller-manager-6c685b4wsdbg   1/1     Running   0          16s
cloudwatch-agent-76bnd                                            1/1     Running   0          16s
cloudwatch-agent-nbdgm                                            1/1     Running   0          16s
fluent-bit-45wl4                                                  1/1     Running   0          16s
fluent-bit-rsfc7                                                  1/1     Running   0          16s

サンプルアプリケーションをデプロイする

メトリクスの収集元となるワークロードがクラスターにない場合は、次のサンプルワークロードをデプロイします。

cat <<EOF >deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: eks-cw-sample-app
  labels:
    app: eks-cw-sample-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: eks-cw-sample-app
  template:
    metadata:
      labels:
        app: eks-cw-sample-app
    spec:
      containers:
      - name: nginx
        image: public.ecr.aws/nginx/nginx:1.27
        ports:
        - name: http
          containerPort: 80
        imagePullPolicy: IfNotPresent
EOF

kubectl apply -f deployment.yaml

上記のワークロードを使用して CloudWatch がメトリクスを正しく収集することを確認します。

CloudWatch コンソールでクラスターを監視する

Container Insights をインストールした後、CloudWatch コンソールでメトリクスを確認します。

クラスターで AWS Fargate のログ記録を使用することもできます。

関連情報

Amazon EKS でのログ記録と監視

AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ