

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# コントロールプレーンログを CloudWatch Logs に送信する
<a name="control-plane-logs"></a>

Amazon EKS コントロールプレーンのログ記録により、アカウント内で Amazon EKS コントロールプレーンから CloudWatch Logs に対し、監査および診断ログを直接送れるようになります。これらのログを使用すると、クラスターの保護と実行が容易になります。必要なログタイプを正確に選択することで、CloudWatch 内で各 Amazon EKS クラスターのためのグループに対し、ログストリームの形態でログを送信できます。CloudWatch サブスクリプションフィルタを使用して、ログをリアルタイムで分析したり、他のサービスに転送したりできます (ログは Base64 でエンコードされ、gzip 形式で圧縮されます)。詳細については、「[Amazon CloudWatch logging](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)」(Amazon CloudWatch ログ記録) を参照してください。

**注記**  
Amazon EKS コントロールプレーンログは、数分以内に各 CloudWatch Log に配信されます。ただし、ログ配信はベストエフォートです。

Amazon EKS コントロールプレーンのログ記録の使用を開始するには、新規または既存の Amazon EKS クラスターごとに有効にするログタイプを選択します。クラスターごとに各ログタイプを有効または無効にするには、AWS マネジメントコンソール、AWS CLI (バージョン `1.16.139` 以降)、または Amazon EKS API を使用します。有効化したログタイプのログが、Amazon EKS クラスターから同じアカウントの CloudWatch Logs に自動的に送信されるようになります。

Amazon EKS コントロールプレーンのログ記録を使用すると、実行しているクラスターごとに Amazon EKS の標準料金が発生します。クラスターから CloudWatch Logs に送信されるすべてのログに対して、CloudWatch Logs のデータ取り込みおよび保存に関する標準料金が発生します。また、Amazon EC2 インスタンスや Amazon EBS ボリュームなど、クラスターの一部としてプロビジョニングしている AWS リソースに対しても料金が発生します。

以下のクラスターコントロールプレーンのログタイプが使用可能です。各ログタイプは、Kubernetes コントロールプレーンのコンポーネントに対応しています。これらのコンポーネントの詳細については、Kubernetes ドキュメントの [Kubernetes Components (Kubernetes コンポーネント)](https://kubernetes.io/docs/concepts/overview/components/) を参照してください。

 **API サーバー`api` (**)   
クラスターの API サーバーは、Kubernetes API を公開するコントロールプレーンコンポーネントです。クラスターを起動する際、またはその直後に API サーバーのログを有効にすると、ログには、API サーバーの起動に使用された API サーバーフラグが含まれます。詳細については、Kubernetes ドキュメントの「[kube-apiserver](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)」と[監査ポリシー](https://github.com/kubernetes/kubernetes/blob/master/cluster/gce/gci/configure-helper.sh#L1129-L1255)を参照してください。

 **監査`audit` (**)   
Kubernetes 監査ログは、クラスターに影響を与えた個々のユーザー、管理者、またはシステムコンポーネントの記録を提供します。詳細については、Kubernetes ドキュメントの「[監査](https://kubernetes.io/docs/tasks/debug-application-cluster/audit/)」を参照してください。

 **Authenticator`authenticator` (**)   
Authenticator ログは、Amazon EKS に固有です。これらのログは、Amazon EKS が使用するコントロールプレーンコンポーネントに対応します。各コンポーネントは、Amazon EKS が、Kubernetes の (IAM 認証情報を使用する) [ロールベースのアクセスコントロール](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) 認証のために使用しています。詳細については、「[クラスターリソースを整理およびモニタリングする](eks-managing.md)」を参照してください。

 **コントローラーマネージャー`controllerManager` (**)   
コントローラーマネージャーは、Kubernetes に付属するコアコントロールループを管理します。詳細については、Kubernetes ドキュメントの [kube-controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/) を参照してください。

 **スケジューラ`scheduler` (**)   
スケジューラコンポーネントは、クラスター内で Pod を実行するタイミングと場所を管理します。詳細については、Kubernetes ドキュメントの [kube-scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) を参照してください。

## コントロールプレーンログを有効または無効にする
<a name="enabling-control-plane-log-export"></a>

デフォルトでは、クラスターコントロールプレーンのログは CloudWatch Logs に送信されません。クラスターのログを送信するには、各ログタイプを個別に有効にする必要があります。CloudWatch Logs で設定された取り込み、アーカイブストレージ、およびデータスキャンレートが、有効化されたコントロールプレーンログに適用されます。詳細については、「[CloudWatch 料金表](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。

コントロールプレーンのログ記録設定を更新するために、Amazon EKS は各サブネットで最大 5 つの使用可能な IP アドレスを必要とします。ログタイプを有効にすると、ログの詳細レベル `2` でログが送信されます。

[AWS マネジメントコンソール](#control-plane-console) または [AWS CLI](#control-plane-cli) のいずれかを使用して、コントロールプレーンログを有効または無効にできます。

### AWS マネジメントコンソール
<a name="control-plane-console"></a>

1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)を開きます。

1. クラスター名を選択すると、そのクラスターの情報を表示されます。

1. **[オブザーバビリティ]** タブを選択します。

1. **[コントロールプレーンのロギング]** セクションで、**[ロギングの管理]** を選択します。

1. ログタイプごとに、そのログタイプを [有効] にするか [無効] にするかを選択します。デフォルトでは、それぞれのログタイプは無効化されています。

1. [**変更を保存**] を選択して終了します。

### AWS CLI
<a name="control-plane-cli"></a>

1. 以下のコマンドを使用して、AWS CLI のバージョンを確認します。

   ```
   aws --version
   ```

   AWS CLI のバージョンが `1.16.139` より前である場合は、まず最新バージョンに更新する必要があります。AWS CLI をインストールまたはアップグレードするには、*「AWS コマンドラインインターフェイスユーザーガイド*」の「[AWS コマンドラインインターフェイスのインストール](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)」を参照してください。

1. 次の AWS CLI コマンドを使用して、クラスターのコントロールプレーンログのエクスポート設定を更新します。*my-cluster* をクラスター名に置き換え、目的のエンドポイントアクセス値を指定します。
**注記**  
次のコマンドは、使用可能なすべてのログタイプを CloudWatch Logs に送信します。

   ```
   aws eks update-cluster-config \
       --region region-code \
       --name my-cluster \
       --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":true}]}'
   ```

   出力例は次のとおりです。

   ```
   {
       "update": {
           "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9",
           "status": "InProgress",
           "type": "LoggingUpdate",
           "params": [
               {
                   "type": "ClusterLogging",
                   "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}"
               }
           ],
           "createdAt": 1553271814.684,
           "errors": []
       }
   }
   ```

1. 次のコマンドでログ設定更新のステータスをモニタリングします。その際、以前のコマンドで返されたクラスター名と更新 ID を使用します。ステータスが `Successful` と表示されたら、更新は完了です。

   ```
   aws eks describe-update \
       --region region-code\
       --name my-cluster \
       --update-id 883405c8-65c6-4758-8cee-2a7c1340a6d9
   ```

   出力例は次のとおりです。

   ```
   {
       "update": {
           "id": "883405c8-65c6-4758-8cee-2a7c1340a6d9",
           "status": "Successful",
           "type": "LoggingUpdate",
           "params": [
               {
                   "type": "ClusterLogging",
                   "value": "{\"clusterLogging\":[{\"types\":[\"api\",\"audit\",\"authenticator\",\"controllerManager\",\"scheduler\"],\"enabled\":true}]}"
               }
           ],
           "createdAt": 1553271814.684,
           "errors": []
       }
   }
   ```

## クラスターのコントロールプレーンログを表示する
<a name="viewing-control-plane-logs"></a>

Amazon EKS クラスターのいずれかのコントロールプレーンログタイプを有効にすると、それらを CloudWatch コンソールで表示できるようになります。

CloudWatch でログを表示、分析、および管理する方法については、[Amazon CloudWatch Logs ユーザーガイド](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/)を参照してください。

1. [CloudWatch コンソール](https://console.aws.amazon.com/cloudwatch/home#logs:prefix=/aws/eks)を開きます。このリンクでは、現在使用可能なロググループが表示され、プレフィックス `/aws/eks` でフィルタリングされます。

1. ログを表示するクラスターを選択します。ロググループの名前の形式は `/aws/eks/my-cluster/cluster` です。

1. 表示するログストリームを選択します。次のリストで、各ログタイプのログストリーム名の形式について説明します。
**注記**  
ログストリームデータが大きくなるにつれて、ログストリーム名のローテーションが行われます。特定のログタイプのログストリームが複数存在する場合、最新のログストリームを表示するには、**[最終のイベント時刻]** が最新のログストリーム名を見つけ出します。
   +  **Kubernetes API サーバーコンポーネントログ (`api`)** – `kube-apiserver-1234567890abcdef01234567890abcde ` 
   +  **監査 (`audit`)** – `kube-apiserver-audit-1234567890abcdef01234567890abcde ` 
   +  **認証システム (`authenticator`)** – `authenticator-1234567890abcdef01234567890abcde ` 
   +  **コントローラーマネージャー (`controllerManager`)** – `kube-controller-manager-1234567890abcdef01234567890abcde ` 
   +  **スケジューラ (`scheduler`)** – `kube-scheduler-1234567890abcdef01234567890abcde ` 

1. ログストリームのイベントを確認してください。

   たとえば、`kube-apiserver-1234567890abcdef01234567890abcde ` のトップを表示すると、クラスターの初期 API サーバーが表示されます。
**注記**  
ログストリームの先頭に API サーバーログが表示されない場合は、サーバーで API サーバーログ記録を有効にする前に API サーバーのログファイルがローテーションされた可能性があります。API サーバーのログ記録が有効になる前にローテーションされたログファイルは、CloudWatch にエクスポートできません。

ただし、同じ Kubernetes バージョンで新しいクラスターを作成し、クラスターの作成時に API サーバーのログ記録を有効にすることはできます。同じプラットフォームバージョンを持つクラスターでは、同じフラグが有効になるため、フラグは新しいクラスターのフラグと一致する必要があります。CloudWatch で新しいクラスターのフラグを確認し終えたら、新しいクラスターを削除します。