

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

# Amazon EKS でのログ記録
<a name="logging"></a>

ログ記録は、Amazon EKS で実行されるアプリケーションを管理および維持する上で重要な側面です。Amazon EKS 環境での効果的なログ記録プラクティスは、開発者、運用チーム、システム管理者が、コンテナ化されたアプリケーションとその基盤となるインフラストラクチャの動作、パフォーマンス、状態に関する貴重なインサイトを得るのに役立ちます。

Amazon EKS に堅牢なログ記録戦略を実装することは、いくつかの理由で不可欠です。
+ **トラブルシューティング**: ログは問題をすばやく特定して診断するのに役立ちます。これにより、ダウンタイムが短縮され、システム全体の信頼性が向上します。
+ **コンプライアンス**: 多くの業界では、監査と規制の目的で包括的なログ記録が必要です。
+ **セキュリティ**: ログ分析は、潜在的なセキュリティの脅威や違反を検出して調査するのに役立ちます。
+ **パフォーマンスの最適化**: ログはアプリケーションとシステムのパフォーマンスに関するインサイトを提供するため、ボトルネックを特定し、リソース使用率を最適化できます。
+ **モニタリングとアラート**: ログデータを使用して、モニタリングシステムを設定し、特定のイベントまたは条件のアラートをトリガーできます。

**Topics**
+ [ログ記録のタイプ](log-types.md)
+ [ベストプラクティス](logging-best-practices.md)
+ [重要な考慮事項](logging-considerations.md)

# Amazon EKS でのログ記録のタイプ
<a name="log-types"></a>

Amazon EKS では、ログ記録には、[Kubernetes](https://kubernetes.io/) クラスターのさまざまなコンポーネントによって生成されるさまざまなタイプのログデータのキャプチャ、保存、分析が含まれます。
+ **システムログ**: 基盤となる [Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/pm/ec2/) インスタンスまたは[AWS Fargate](https://aws.amazon.com/fargate/)ノードに関する情報
+ **Kubernetes コンポーネントログ**: [API サーバー](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/)、ス[ケジューラ](https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/)、[コントローラーマネージャー](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/)などのコア Kubernetes コンポーネントからのデータ
+ **コンテナランタイムログ**: [Docker](https://www.docker.com/blog/containerd-vs-docker/) や [containerd](https://containerd.io/) などのコンテナランタイムからの情報
+ **アプリケーションログ**: コンテナ化されたアプリケーションからの出力

Amazon EKS 環境のログを効果的に管理するには、通常 AWS のサービス、サードパーティーのツールとベストプラクティスを組み合わせて使用します。これには、[Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)、[Fluent Bit](https://fluentbit.io/)、[Elasticsearch](https://www.elastic.co/elasticsearch)、[Kibana](https://www.elastic.co/kibana)、その他のログ記録および分析ツールを使用してログデータを収集、保存、視覚化することが含まれます。

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

## システムログ
<a name="system-logs"></a>

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

Amazon EKS で EC2 インスタンスのログ記録を実装するには、次のツールを使用できます。
+ [CloudWatch エージェント](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance.html): EC2 インスタンスに CloudWatch エージェントをインストールして設定します。`/var/log/messages` や などのシステムログを収集するように設定します`/var/log/secure`。ユーザーデータスクリプトまたは設定管理ツールを使用して、このプロセスを自動化できます。
+ [Fluent Bit](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-logs-FluentBit.html): Fluent Bit を DaemonSet としてデプロイして、すべてのノードからログを収集します。ログを [CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) またはその他の集中ロギングシステムに転送するように設定します。
+ [Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html): EKS クラスターの Container Insights を有効にして、EC2 インスタンスからメトリクスとログを自動的に収集します。
+ カスタムスクリプト: カスタムスクリプトを開発して特定のログを収集し、任意のログ記録先に送信します。
+ [SSM エージェント](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html): AWS Systems Manager エージェント (SSM エージェント) を使用してログを収集し、CloudWatch Logs に転送します。

Amazon EKS で Fargate ノードのログ記録を実装するには、次のツールを使用します。
+ [Fargate ログ](https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html)記録: Fargate はコンテナから `stdout`と `stderr` ログを自動的に収集します。これらのログを CloudWatch Logs に送信するように Fargate プロファイルを設定します。
+ [Fargate の Fluent Bit](https://github.com/aws/aws-for-fluent-bit): Fargate ログ記録専用の Fluent Bit イメージ AWS を提供します。Fargate ポッドにサイドカーコンテナとしてデプロイして、ログを収集して転送します。
+ [Container Insights for Fargate](https://aws-otel.github.io/docs/getting-started/container-insights/eks-fargate): Container Insights が Fargate ノードからメトリクスとログを収集できるようにします。

## Kubernetes コンポーネントログ
<a name="kubernetes-logs"></a>

Amazon EKS で API サーバー、スケジューラ、コントローラーマネージャーなどの Kubernetes コンポーネントからログを収集するには、アプリケーションのログ記録とは少し異なるアプローチが必要です。これらのコンポーネントは、 によって管理される Amazon EKS コントロールプレーンの一部として実行されます AWS。これらのログを収集してアクセスする方法は次のとおりです。
+ **コントロールプレーンのログ記録を有効にする:** EKS クラスターのコントロールプレーンのログ記録は AWS マネジメントコンソール、、 [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)、または [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)や Terraform などのInfrastructure as Code (IaC) ツールを使用して有効にできます。コントロールプレーンのログ記録を有効にすると、ログは Amazon CloudWatch Logs に送信されます。ログ`/aws/eks/<cluster-name>/cluster`グループの CloudWatch コンソールで表示できます。このロググループ内で、各コントロールプレーンコンポーネントには、次のように独自のログストリームがあります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/amazon-eks-observability-best-practices/log-types.html)

  特定のコンポーネントのログを表示するには、クラスターロググループに移動し、ターゲットログストリーム名でフィルタリングします。
+ **CloudWatch Logs Insights** を使用する: [CloudWatch Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) を使用して、ログに対して複雑なクエリを実行できます。
+ **ログを Amazon S3 にエクスポート**する: 長期ストレージまたはさらなる分析のために、ログを Amazon Simple Storage Service[ (](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)Amazon S3) にエクスポートできます。[https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)
+ **サードパーティーのツール**を使用: Fluent Bit などのツールを使用してこれらのログを収集し、Elasticsearch や Splunk などの他のログシステムに転送できます。
+ **使用 AWS CloudTrail**: [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)サービスは、EKS クラスターに対して行われた API コールに関する追加のインサイトを提供できます。

## コンテナランタイムログ
<a name="runtime-logs"></a>

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 アラーム](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)を設定するか、Prometheus などのツールを使用して、コンテナランタイムログの特定のパターンや問題をモニタリングします。Datadog、Splunk、Elastic Stack (ELK スタック) など、Kubernetes や Amazon EKS と適切に統合されるサードパーティーのログ記録ソリューションの使用を検討してください。ログ集約ツールを使用して複数のソースからログを収集し、一元化されたログ記録システムに転送します。

## アプリケーションログ
<a name="app-logs"></a>

Amazon EKS のアプリケーションログは、アプリケーションのメンテナンスとトラブルシューティングに不可欠です。Amazon EKS でアプリケーションログ記録を実装するには、以下のオプションから選択できます。
+ ログを `stdout`/ に書き込む`stderr`: アプリケーションログを処理する最もシンプルで Kubernetes ネイティブな方法は、 `stdout`と に書き込むことです`stderr`。Kubernetes はこれらのストリームを自動的にキャプチャします。
+ ログ集約の実装: Fluent Bit などのログアグリゲータを使用して、すべてのポッドからログを収集します。
+ ログルーティングを設定する: ログを目的の宛先 (CloudWatch Logs や Elasticsearch など) にルーティングするようにログアグリゲータを設定します。
+ CloudWatch Container Insights を使用する: Container Insights を有効にして、包括的なログ記録とモニタリングを行います。

# Amazon EKS でのログ記録のベストプラクティス
<a name="logging-best-practices"></a>

以下のベストプラクティスは、Amazon EKS 環境用の堅牢でスケーラブル、効率的なログ記録システムを作成し、Kubernetes クラスターのトラブルシューティング、モニタリング、全体的な管理を向上させるのに役立ちます。
+ **ログ収集の一元化**: CloudWatch Logs、Elasticsearch、サードパーティーサービスなどの一元化されたログ記録ソリューションを使用して、すべてのコンポーネントのログを集約します。これにより、ログ分析のための単一のアクセスポイントが提供され、管理が簡素化されます。
+ **構造化ログの実装**: JSON などの構造化ログ形式を使用して、ログをより簡単に解析および検索できるようにします。タイムスタンプ、ログレベル、ソース識別子などの関連するメタデータを含めます。
+ **ログレベルを適切に使用する**: アプリケーションに適切なログレベル (`DEBUG`、`WARN`、、 `INFO`など`ERROR`) を実装します。過剰なログ記録を避けるため、適切なレベルでログを記録するように本番環境を設定します。
+ **コンテナログ記録を有効にする**: `stdout`および にログ記録するようにコンテナを設定します`stderr`。これにより、Kubernetes はこれらのログをキャプチャし、選択したログ記録ソリューションに転送できます。
+ **アプリケーションのログ記録を有効にする**: ログファイルに書き込む`stderr`代わりに、 `stdout`および にログを書き込むようにアプリケーションを設定します。これは [12 要素のアプリ方法](https://12factor.net/logs)論に従い、クラウドネイティブのベストプラクティスと一致しています。
+ **ログ収集に Kubernetes DaemonSets **を使用する: ログ収集エージェント (Fluent Bit など) を DaemonSets としてデプロイして、クラスター内のすべてのノードで実行されるようにします。
+ **保持ポリシーの実装**: 規制に準拠し、ストレージコストを管理するために、ログ保持ポリシーを定義して適用します。
+ **安全なログデータ**: 転送中および保管中のログを暗号化します。アクセスコントロールを実装して、ログを表示および管理できるユーザーを制限します。
+ **ログ取り込みのモニタリング**: ログ取り込みの失敗または遅延のアラートを設定して、継続的なログ記録を確保します。
+ **Kubernetes 注釈とラベル**を使用する: Kubernetes 注釈とラベルを使用してログにメタデータを追加し、検索可能性とフィルタリングを向上させます。
+ **分散トレースの実装**: [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)や Jaeger などの分散トレースツールを使用して、マイクロサービス間でログを関連付けます。
+ **ログボリュームの最適化**: 不要なコストやパフォーマンスの問題を回避するために、ログの内容を選択します。大量の低値ログにはサンプリングを使用します。
+ **ログ集約の実装**: Logstash などのツールを使用して、複数のソースからログを集約してから、中央ログシステムに送信します。
+ **可能な AWS のサービス 場合に使用する**: CloudWatch Logs や Container Insights などのサービスは、他の とシームレスに統合できます AWS のサービス。
+ **ログ分析と視覚化を実装**する: CloudWatch Logs Insights、Elasticsearch with Kibana、サードパーティーソリューションなどのツールを使用してログ分析と視覚化を行います。
+ **自動ログ分析を実装**する: 機械学習と AI を活用したツールを使用して、ログの異常とパターンを自動的に検出します。
+ **ログ記録戦略を文書化する**: チームのログ記録アーキテクチャ、プラクティス、ツールを明確に文書化します。

# Amazon EKS でのログ記録に関する重要な考慮事項
<a name="logging-considerations"></a>

このセクションでは、Amazon EKS でログ記録を実装する際に留意すべき重要な考慮事項について説明します。
+ **パフォーマンスへの影響**: 過剰なログ記録はアプリケーションのパフォーマンスに影響を与える可能性があります。生成されるログの量と頻度に注意してください。
+ **コスト管理**: ログのストレージと処理には、特に大規模なコストがかかる可能性があります。ログ保持ポリシーを実装し、コストを削減するためにログ集約の使用を検討してください。
+ **セキュリティとコンプライアンス**: ログにパスワードや個人データなどの機密情報が含まれていないことを確認します。転送中および保管中のログに暗号化を実装します。ログを処理するときは、一般データ保護規則 (GDPR) や医療保険の相互運用性と説明責任に関する法律 (HIPAA) などのコンプライアンス要件を検討してください。
+ **スケーラビリティ**: ログ記録ソリューションがクラスターサイズとログボリュームに合わせてスケールできることを確認します。ログ送信にはバッファリングとバッチ処理の使用を検討してください。
+ **ログ保持**: 適切なログ保持期間を定義して実装します。コンプライアンス要件とストレージコストのバランスを取ります。
+ **アクセスコントロール**: ログアクセス用の適切な AWS Identity and Access Management (IAM) ロールとポリシーを実装します。ログ管理の[最小特権の原則](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/sec_permissions_least_privileges.html)に従います。
+ **ログの整合性**: さまざまなアプリケーションやサービスで一貫したログ形式を使用します。構造化ログ記録を使用すると、解析と分析が容易になります。
+ **時刻同期**: すべてのノードで時刻を同期して、ログに一貫したタイムスタンプを取得します。
+ **リソース割り当て**: エージェントをログ記録するための適切なリソース (CPU やメモリなど) を割り当てます。ログ記録コンポーネントのリソース使用状況をモニタリングします。
+ **Fargate に関する考慮事項**: Fargate には、EC2-basedノードとは異なる特定のログ記録メカニズムがあります。[Fargate ログ記録](https://docs.aws.amazon.com/eks/latest/userguide/fargate-logging.html)の制限と機能について説明します。
+ **マルチテナントクラスター**: マルチテナント環境では、テナント間でログが適切に分離されていることを確認します。
+ **ログ解析と分析**: 効果的なログ分析に必要なツールとスキルを検討します。構造化データ抽出用のログ解析を実装します。
+ **ログ記録システムのモニタリング**: ログ記録インフラストラクチャ自体のモニタリングを設定します。システム障害またはバックログのログ記録に関するアラートを生成します。
+ **ネットワークへの影響**: ログ送信で使用されるネットワーク帯域幅に注意してください。ログデータに圧縮を使用することを検討してください。
+ **Kubernetes イベント**: Kubernetes イベントを重要な情報のソースとして見落としないでください。
+ **コントロールプレーンのログ記録**: コントロールプレーンのログ記録を有効にする場合の影響とコストを理解します。
+ **デバッグ機能**: ロギングソリューションでデバッグとトラブルシューティングを簡単に行えることを確認してください。
+ **既存のツールとの統合**: Amazon EKS ログ記録ソリューションが既存のモニタリングおよびアラートツールとどのように統合されるかを検討してください。
+ **テスト**: 特にクラスターのアップグレード後に、ログ記録の設定を定期的にテストします。
+ **ドキュメント**: ログ記録のアーキテクチャとプラクティスを明確に文書化します。
+ **ログ集約レイテンシ**ー: ログ集約のレイテンシーと、それがリアルタイムモニタリングにどのように影響するかに注意してください。