View a markdown version of this page

EKS 機能コントローラーログにアクセスする - Amazon EKS

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

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

EKS 機能コントローラーログにアクセスする

ACK、kro、Argo CD 用の EKS 機能コントローラーは、クラスター外の AWS マネージドインフラストラクチャで実行されます。Amazon CloudWatch Vended Logs を使用してこれらのコントローラーのログ配信を設定し、モニタリングとトラブルシューティングのためにコントローラーの動作を可視化することができます。

ログは構造化された JSON 形式で配信され、ログレベル、メッセージ、コントローラー名、調整識別子などの運用フィールドが含まれます。内部 AWS メタデータは配信前にフィルタリングされるため、機能コントローラーに関連する運用ログコンテンツのみを受け取れます。

サポートされているログのタイプ

各機能には、CloudWatch Vended Logs 配信ソースとして個別に設定できる 1 つ以上のログタイプがあります。

ACK

  • EKS_CAPABILITY_ACK_LOGS

kro

  • EKS_CAPABILITY_KRO_LOGS

Argo CD

  • EKS_CAPABILITY_ARGOCD_APPLICATION_LOGS

  • EKS_CAPABILITY_ARGOCD_APPLICATIONSET_LOGS

  • EKS_CAPABILITY_ARGOCD_COMMITSERVER_LOGS

  • EKS_CAPABILITY_ARGOCD_REPOSERVER_LOGS

  • EKS_CAPABILITY_ARGOCD_SERVER_LOGS

ACK は、すべての ACK サービスコントローラーをカバーする単一のログタイプを使用します。ログレコードには、ログを生成した ACK サービスコントローラーを識別する controllerGroup フィールド (s3.services.k8s.awsrds.services.k8s.aws など) が含まれます。このフィールドを使用して、CloudWatch Logs Insights または他のクエリツールで特定のサービスコントローラーのログをフィルタリングできます。

Argo CD には、コントローラーコンポーネントごとに 1 つずつの、5 つの異なるログタイプがあります。これにより、必要なコントローラーのみのログ記録を有効にし、異なる送信先にルーティングできます。

ログ配信の設定

機能コントローラーのログ配信を設定するには、AWS マネジメントコンソール または Amazon CloudWatch Logs API を使用します。詳細な設定手順については、「Amazon CloudWatch Logs ユーザーガイド」の「Enabling logging from AWS services」を参照してください。各機能コントローラーは個別の CloudWatch Vended Logs 配信ソースとして設定できるため、受信するログを選択できます。

コンソール

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

  2. クラスター名を選択します。

  3. [機能] タブを選択し、機能を選択します。

  4. [ログ配信] セクションで、[追加] を選択します。

  5. 機能のログタイプを選択し、送信先を選択します。

  6. [追加] を選択して配信を作成します。

Amazon CloudWatch API の使用

ログ記録の設定には次の 3 つのステップが必要です。

  1. CloudWatch PutDeliverySource API を使用して機能の配信ソースを作成する 機能 ARN を resourceArn として使用し、目的のログタイプを指定します。

  2. PutDeliveryDestination を使用して配信先を作成します。CloudWatch ロググループ、S3 バケット、または Amazon Data Firehose 配信ストリームの ARN を指定します。

  3. CreateDelivery を使用して送信元と送信先を接続する配信を作成する

機能 ARN は describe-capability コマンドを使用して取得できます。

aws eks describe-capability \ --region region-code \ --cluster-name my-cluster \ --capability-name my-capability \ --query 'capability.capabilityArn' --output text

複数の配信を作成することで、1 つの機能 (配信ソース) から複数の送信先にログを送信するよう設定できます。複数の機能から同じ送信先にログを送信することもできます。

IAM アクセス許可

選択した送信先によっては、ログ配信が成功するように CloudWatch ロググループ、S3 バケット、または Data Firehose 配信ストリームの IAM ポリシーまたはロールを設定する必要がある場合があります。AWS アカウント間でログを送信する場合は、PutDeliveryDestinationPolicy API を使用して、送信先への配信を許可する IAM ポリシーを設定します。詳細については、「CloudWatch Vended Logs permissions」のドキュメントを参照してください。

例: CloudWatch ログインサイトでのログのクエリ

すべてのコントローラーのエラーログを表示するには、次のようにします。

fields @timestamp, controller, message, error | filter level = "error" | sort @timestamp desc | limit 50

サービスコントローラーによるフィルタリング、調整サイクルの追跡、Argo CD アプリケーションのフィルタリングなどの、その他のクエリの例については「トラブルシューティングにコントローラーログを使用する」を参照してください。

ログの表示

ログ配信を設定すると、ログは指定された送信先に配信されます。ログにアクセスする方法は、選択した送信先タイプによって異なります。

  • CloudWatch Logs – CloudWatch Logs コンソールでログを表示する、AWS CLI コマンドを使用する、または CloudWatch Logs Insights でクエリを実行する。

  • Amazon S3 – S3 コンソール、AWS CLI、または Amazon Athena などの分析ツールを使用して、S3 バケット内のオブジェクトとしてログにアクセスする。

  • Amazon Data Firehose – ログは、設定された Firehose ターゲット (S3、OpenSearch Service、Redshift など) にストリーミングされます。

料金

CloudWatch Vended Logs の料金は、選択した送信先に基づいてログの配信とストレージに適用されます。CloudWatch Vended Logs は、標準の CloudWatch Logs と比較して、組み込みの AWS 認証と認可により、信頼性が高く安全なログ配信を低価格で実現します。詳細については、「CloudWatch 料金ページのVended Logs セクション」を参照してください。