このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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.aws、rds.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 配信ソースとして設定できるため、受信するログを選択できます。
コンソール
-
https://console.aws.amazon.com/eks/home#/clusters で Amazon EKS コンソールを開きます。
-
クラスター名を選択します。
-
[機能] タブを選択し、機能を選択します。
-
[ログ配信] セクションで、[追加] を選択します。
-
機能のログタイプを選択し、送信先を選択します。
-
[追加] を選択して配信を作成します。
Amazon CloudWatch API の使用
ログ記録の設定には次の 3 つのステップが必要です。
-
CloudWatch
PutDeliverySourceAPI を使用して機能の配信ソースを作成する 機能 ARN をresourceArnとして使用し、目的のログタイプを指定します。 -
PutDeliveryDestinationを使用して配信先を作成します。CloudWatch ロググループ、S3 バケット、または Amazon Data Firehose 配信ストリームの ARN を指定します。 -
CreateDeliveryを使用して送信元と送信先を接続する配信を作成する
機能 ARN は describe-capability コマンドを使用して取得できます。
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-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 セクション