View a markdown version of this page

Amazon EKS でのログ記録のタイプ - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon EKS でのログ記録のタイプ

Amazon EKS では、ログ記録には、Kubernetes クラスターのさまざまなコンポーネントによって生成されるさまざまなタイプのログデータのキャプチャ、保存、分析が含まれます。

Amazon EKS 環境のログを効果的に管理するには、通常 AWS のサービス、サードパーティーのツールとベストプラクティスを組み合わせて使用します。これには、Amazon CloudWatchFluent BitElasticsearchKibana、その他のログ記録および分析ツールを使用してログデータを収集、保存、視覚化することが含まれます。

以下のセクションでは、Kubernetes クラスターに包括的なログ記録戦略を実装するためのベストプラクティス、ツール、手法など、Amazon EKS でのログ記録のさまざまな側面について説明します AWS。

システムログ

Amazon EKS の基盤となる EC2 インスタンスまたは Fargate ノードのログ記録には、ノードタイプに応じて異なるアプローチが必要です。

Amazon EKS で EC2 インスタンスのログ記録を実装するには、次のツールを使用できます。

  • CloudWatch エージェント: EC2 インスタンスに CloudWatch エージェントをインストールして設定します。/var/log/messages や などのシステムログを収集するように設定します/var/log/secure。ユーザーデータスクリプトまたは設定管理ツールを使用して、このプロセスを自動化できます。

  • Fluent Bit: Fluent Bit を DaemonSet としてデプロイして、すべてのノードからログを収集します。ログを CloudWatch Logs またはその他の集中ロギングシステムに転送するように設定します。

  • Container Insights: EKS クラスターの Container Insights を有効にして、EC2 インスタンスからメトリクスとログを自動的に収集します。

  • カスタムスクリプト: カスタムスクリプトを開発して特定のログを収集し、任意のログ記録先に送信します。

  • SSM エージェント: AWS Systems Manager エージェント (SSM エージェント) を使用してログを収集し、CloudWatch Logs に転送します。

Amazon EKS で Fargate ノードのログ記録を実装するには、次のツールを使用します。

  • Fargate ログ記録: Fargate はコンテナから stdoutstderr ログを自動的に収集します。これらのログを CloudWatch Logs に送信するように Fargate プロファイルを設定します。

  • Fargate の Fluent Bit: Fargate ログ記録専用の Fluent Bit イメージ AWS を提供します。Fargate ポッドにサイドカーコンテナとしてデプロイして、ログを収集して転送します。

  • Container Insights for Fargate: Container Insights が Fargate ノードからメトリクスとログを収集できるようにします。

Kubernetes コンポーネントログ

Amazon EKS で API サーバー、スケジューラ、コントローラーマネージャーなどの Kubernetes コンポーネントからログを収集するには、アプリケーションのログ記録とは少し異なるアプローチが必要です。これらのコンポーネントは、 によって管理される Amazon EKS コントロールプレーンの一部として実行されます AWS。これらのログを収集してアクセスする方法は次のとおりです。

  • コントロールプレーンのログ記録を有効にする: EKS クラスターのコントロールプレーンのログ記録は AWS マネジメントコンソール、、 AWS Command Line Interface (AWS CLI)、または AWS CloudFormationや Terraform などのInfrastructure as Code (IaC) ツールを使用して有効にできます。コントロールプレーンのログ記録を有効にすると、ログは Amazon CloudWatch Logs に送信されます。ログ/aws/eks/<cluster-name>/clusterグループの CloudWatch コンソールで表示できます。このロググループ内で、各コントロールプレーンコンポーネントには、次のように独自のログストリームがあります。

    ストリーム名 説明
    kube-apiserver Kubernetes API サーバーログ
    kube-scheduler スケジューラ決定ログ
    kube-controller-manager コントローラーマネージャーログ
    認証 IAM 認証ログ
    監査 Kubernetes 監査ログ (明示的に有効にする必要があります)

    特定のコンポーネントのログを表示するには、クラスターロググループに移動し、ターゲットログストリーム名でフィルタリングします。

  • CloudWatch Logs Insights を使用する: CloudWatch Logs Insights を使用して、ログに対して複雑なクエリを実行できます。

  • ログを Amazon S3 にエクスポートする: 長期ストレージまたはさらなる分析のために、ログを Amazon Simple Storage Service (Amazon S3) にエクスポートできます。https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html

  • サードパーティーのツールを使用: Fluent Bit などのツールを使用してこれらのログを収集し、Elasticsearch や Splunk などの他のログシステムに転送できます。

  • 使用 AWS CloudTrail: AWS CloudTrailサービスは、EKS クラスターに対して行われた API コールに関する追加のインサイトを提供できます。

コンテナランタイムログ

Amazon EKS でのコンテナランタイムログのログ記録には、コンテナランタイムからのログのキャプチャと管理が含まれます。通常、これは Amazon EKS containerd用です。Amazon EKS でのコンテナランタイムログのログ記録にアプローチする方法は次のとおりです。

  • Amazon EC2 ノードのログに直接アクセスします。セルフマネージド EC2 ノードの場合、次の場所からホストのコンテナランタイムログに直接アクセスできます。

    • containerd ログ: /var/log/containers/

    • Docker ログ (Docker ランタイムを使用している場合)。 /var/log/docker.log

  • ログ収集には DaemonSet を使用します。

  • ログ収集エージェント (Fluent Bit など) を DaemonSet としてデプロイして、すべてのノードからログを収集します。

  • コンテナランタイムログを収集するように CloudWatch エージェントを設定します。

  • Container Insights を有効にして、コンテナランタイムメトリクスとログを収集します。

  • Fargate を使用します。Fargate ノードの場合、コンテナランタイムログは自動的に収集され、CloudWatch Logs からアクセスできます。

  • Fluent Bit や Logstash などのツールを使用して、カスタムログ記録ソリューションを実装します。CloudWatch アラームを設定するか、Prometheus などのツールを使用して、コンテナランタイムログの特定のパターンや問題をモニタリングします。Datadog、Splunk、Elastic Stack (ELK スタック) など、Kubernetes や Amazon EKS と適切に統合されるサードパーティーのログ記録ソリューションの使用を検討してください。ログ集約ツールを使用して複数のソースからログを収集し、一元化されたログ記録システムに転送します。

アプリケーションログ

Amazon EKS のアプリケーションログは、アプリケーションのメンテナンスとトラブルシューティングに不可欠です。Amazon EKS でアプリケーションログ記録を実装するには、以下のオプションから選択できます。

  • ログを stdout/ に書き込むstderr: アプリケーションログを処理する最もシンプルで Kubernetes ネイティブな方法は、 stdoutと に書き込むことですstderr。Kubernetes はこれらのストリームを自動的にキャプチャします。

  • ログ集約の実装: Fluent Bit などのログアグリゲータを使用して、すべてのポッドからログを収集します。

  • ログルーティングを設定する: ログを目的の宛先 (CloudWatch Logs や Elasticsearch など) にルーティングするようにログアグリゲータを設定します。

  • CloudWatch Container Insights を使用する: Container Insights を有効にして、包括的なログ記録とモニタリングを行います。