Amazon Elastic Kubernetes Service (Amazon EKS) インスタンスのトラブルシューティングを行っています。そのインスタンスに関連するすべての Amazon EKS ログを収集する必要があります。
簡単な説明
AWSSupport-CollectEKSInstanceLogs ランブックを使用して、Amazon EKS のログを収集します。
**重要:**オートメーションを機能させるには、Amazon EKS インスタンスに AWS Systems Manager Agent (SSM Agent) をインストールして実行する必要があります。
解決策
**注:**以下の解決策は、Amazon EKS for Linux のワーカーノードでのみ有効です。
次の手順を実行し、Amazon EKS インスタンスのログバンドルを生成します。
- AWS Systems Manager コンソールを開きます。
- ナビゲーションペインで [オートメーション] を選択します。
- [オートメーションの実行] を選択します。
- [Amazon が所有] タブで、[オートメーションドキュメント] 検索ボックスに「EKSInstanceLogs」と入力します。次に、[AWSSupport-CollectEKSInstanceLogs] を選択します。
- [次へ] を選択します。
- [オートメーションの入力] ページで、EKSInstanceIdのターゲット Amazon EKS インスタンス ID を入力します。
- LogDestination と AutomationAssumeRole パラメーターを設定します。
注: ログバンドルは、LogDestination フィールドで指定されている Amazon Simple Storage Service (Amazon S3) バケットにアップロードされます。バケットを指定しなかった場合は、インスタンスからログバンドルを取得できます。ログバンドルは、ローカルで /var/log/ パスに保存されます。
- [オートメーションの実行] を選択します。
AWSSupport-CollectEKSInstanceLogs を実行する際は、以下のベストプラクティスと要件に従ってください。
- Amazon が管理する AmazonSSMManagedInstanceCore ポリシーを、関連する AWS Identity and Access Management (IAM) ロールにアタッチすることがベストプラクティスです。この IAM ロールは、オートメーションのターゲットとなる Amazon Elastic Compute Cloud (Amazon EC2) インスタンス用です。
- オートメーションを実行する前に [LogDestination] フィールドに S3 バケット名を指定すると、インスタンスプロファイルでバケットへの書き込みを行えるようになります。
- Automation を実行してコマンドをインスタンスに送信するには、少なくとも ssm:ExecuteAutomation と ssm:SendCommand の権限が必要です。
- オートメーションの出力を読み取るには、ssm:GetAutomationExecution の権限が必要です。
- Amazon Linux 2 では、IMDS エンドポイントはデフォルトで IMDSv2 と IMDSv1 の両方をサポートしています。IMDSv2 を設定した場合、他のバージョンは機能しなくなります。AWSSupport-CollecteKsInstanceLogs は IMDSv1 を使用するため、収集されたログがアップロードされるときに [保留中] のステップが表示されることがあります。
関連情報
Systems Manager に必要なインスタンスのアクセス許可を設定する
GitHub ウェブサイトの「EKS Logs Collector」