Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

クラスターの AWS Fargate ログ記録を開始する

フォーカスモード
クラスターの AWS Fargate ログ記録を開始する - アマゾン EKS

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

本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

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

本ユーザーガイドの改善にご協力いただけませんか? すべてのページの右側のペインにある GitHub リンクで、このページの編集を選択してください。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。

Fargate の Amazon EKS では、Fluent Bit をベースにした組み込みのログルーターが利用できます。Fluent Bit コンテナをサイドカーとして明示的に実行する必要はなく、この実行は Amazon によって行われます。必要となるのは、ログルーターの設定だけです。設定は専用の ConfigMap を介して行い、その際は以下の基準を満たす必要があります。

  • 名前のついた aws-logging

  • aws-observability と呼ばれる専用の名前空間での作成

  • 5,300 文字以内にしてください。

ConfigMap を作成すると、Fargate の Amazon EKS は自動的にそれを検出しログルーターの設定を行います。Fargate は、Fluent Bit の AWS のバージョンを使用しています。これは、AWS によって管理される Fluent Bit の上流対応のディストリビューションです。詳細については、GitHub の「AWS for Fluent Bit」を参照してください。

ログルーターを使用すると、AWS のさまざまなサービスをログの分析と保管に使用できます。Fargate からは、Amazon CloudWatch、Amazon OpenSearch Service に対し直接ログをストリーミングできます。また、Amazon Data Firehose 経由で Amazon S3Amazon Kinesis Data Streams、およびパートナーツールなどの送信先にログをストリーミングすることも可能です。

ログルーターの設定

以下のステップでは、すべてのサンプル値を独自の値に置き換えます。

  1. aws-observability という名前の専用の Kubernetes 名前空間を作成します。

    1. 次の内容をコンピュータ上の aws-observability-namespace.yaml という名前のファイルに保存します。name の値は aws-observability である必要があり、aws-observability: enabled ラベルが必須です。

      kind: Namespace apiVersion: v1 metadata: name: aws-observability labels: aws-observability: enabled
    2. 名前空間を作成します。

      kubectl apply -f aws-observability-namespace.yaml
  2. データ値 Fluent Conf を使用して ConfigMap を作成し、コンテナログを送信先に送ります。Fluent Conf とは Fluent Bit であり、コンテナログを任意のログ送信先にルーティングするために使用される、高速で軽量なログプロセッサ設定言語です。詳細については、Fluent Bit ドキュメントの「Configuration File」(設定ファイル) を参照してください。

    重要

    典型的な Fluent Conf に含まれている主なセクションは、ServiceInputFilter および Output です。ただし、Fargate のログルータでは、以下だけを受け入れます。

    • Filter および Output セクション。

    • Parser セクション。

    他のセクションを提供した場合、拒否されます。

    Fargate ログルーターは Service および Input セクションを管理します。次の Input セクションがありますが、これらは変更できず、ConfigMap には必要ありません。ただし、メモリバッファー制限やログに適用されるタグなどの洞察は得られます。

    [INPUT] Name tail Buffer_Max_Size 66KB DB /var/log/flb_kube.db Mem_Buf_Limit 45MB Path /var/log/containers/*.log Read_From_Head On Refresh_Interval 10 Rotate_Wait 30 Skip_Long_Lines On Tag kube.*

    ConfigMap の作成時は、以下の (Fargate がフィールドの検証に使用する) ルールを考慮に入れます。

    • [FILTER][OUTPUT]および [PARSER] は、それぞれが対応するキーにより指定する必要があります。例: [FILTER]filters.conf の下にある必要があります。filters.conf には、複数の [FILTER] を含められます。また、[OUTPUT] および [PARSER] セクションは、それぞれと対応するキーの下に置く必要があります。複数の [OUTPUT] セクションを指定することで、ログを異なる送信先に同時にルーティングできます。

    • Fargate は各セクションに必要なキーを検証します。Name および match がそれぞれの [FILTER] および [OUTPUT] に必要です。Name および format がそれぞれの [PARSER] に必要です。キーの大文字と小文字は区別されません。

    • ${ENV_VAR} などの環境変数は ConfigMap では許可されていません。

    • インデントは、それぞれの filters.confoutput.conf、および parsers.conf の中で、ディレクティブまたはキーと値のペアで同じである必要があります。キーと値のペアは、ディレクティブよりも深いインデントにする必要があります。

    • Fargate は、サポートされている次のフィルターに対して検証します。grepparserrecord_modifierrewrite_tagthrottlenestmodify、および kubernetes

    • Fargate は、サポートされている次の出力に対して検証します。esfirehosekinesis_firehosecloudwatchcloudwatch_logs、および kinesis

    • ログ記録を有効にするには、サポートされている Output プラグインが少なくとも 1 つ ConfigMap にあることが必要です。Filter および Parser は、ログ記録を有効にするために必要ありません。

      また、希望の設定を使用して Amazon EC2 で Fluent Bit を実行し、検証によって発生する問題をトラブルシューティングすることもできます。以下のいずれかの例に従って、ConfigMap を作成します。

      重要

      Amazon EKS Fargate のログ記録では、ConfigMap での動的設定をサポートしていません。ConfigMap に対する変更はすべて、新しい Pods に対してのみ適用されます。既存の Pods に変更は適用されません。

      例を使用して、必要なログ送信先用に ConfigMap を作成します。

      注記

      また、Amazon Kinesis Data Streams をログの宛先として使用できます。Kinesis Data Streams を使用する場合は、ポッド実行ロールに kinesis:PutRecords 権限が付与されていることを確認してください。詳細については、「Fluent Bit: 公式マニュアル」の Amazon Kinesis Data Streams の「許可」を参照してください。

    CloudWatch

    CloudWatch の ConfigMap を作成するには

    CloudWatch を使用する場合、次の 2 つの出力オプションがあります。

    次の例は、cloudwatch_logs プラグインを使用して CloudWatch にログを送信する方法を示しています。

    1. 次の内容を aws-logging-cloudwatch-configmap.yaml という名前のファイルに保存します。region-code を、クラスターのある AWS リージョンに置き換えます。[OUTPUT] のパラメータは必須です。

      kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: flb_log_cw: "false" # Set to true to ship Fluent Bit process logs to CloudWatch. filters.conf: | [FILTER] Name parser Match * Key_name log Parser crio [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off Buffer_Size 0 Kube_Meta_Cache_TTL 300s output.conf: | [OUTPUT] Name cloudwatch_logs Match kube.* region region-code log_group_name my-logs log_stream_prefix from-fluent-bit- log_retention_days 60 auto_create_group true parsers.conf: | [PARSER] Name crio Format Regex Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L%z
    2. マニフェストをクラスターに適用します。

      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
    3. CloudWatch IAM ポリシーをコンピュータにダウンロードします。GitHub でポリシーの表示をすることもできます。

      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
    Amazon OpenSearch Service

    Amazon OpenSearch Service の ConfigMap を作成するには

    Amazon OpenSearch Service にログを送信するには、es 出力を使用します。これは C で書かれたプラグインです。次の例は、プラグインを使用して OpenSearch にログを送信する方法を示しています。

    1. 次の内容を aws-logging-opensearch-configmap.yaml という名前のファイルに保存します。各サンプル値は独自の値に置き換えます。

      kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: output.conf: | [OUTPUT] Name es Match * Host search-example-gjxdcilagiprbglqn42jsty66y.region-code.es.amazonaws.com Port 443 Index example Type example_type AWS_Auth On AWS_Region region-code tls On
    2. マニフェストをクラスターに適用します。

      kubectl apply -f aws-logging-opensearch-configmap.yaml
    3. OpenSearch IAM ポリシーをコンピュータにダウンロードします。GitHub でポリシーの表示をすることもできます。

      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/amazon-elasticsearch/permissions.json

      OpenSearch Dashboards のアクセスコントロールが適切に設定されていることを確認します。OpenSearch Dashboards の all_access role には、Fargate Pod の実行ロールと IAM ロールがマッピングされている必要があります。同様のマッピングが、security_manager ロールに対しても必要です。以前のマッピングを追加するには、MenuSecurityRoles の順にクリックした後、それぞれに対応するロールを選択します。詳細については、「CloudWatch Logs が Amazon ES ドメインにストリーミングされるようにトラブルシューティングする方法を教えてください。」を参照してください。

    Firehose

    Firehose 用の ConfigMap を作成するには

    Firehose にログを送信する場合、次の二つの出力オプションがあります。

    • kinesis_firehose – C 言語で記述された出力プラグイン。

    • firehose — Go 言語で記述された出力プラグイン。

      次の例は、Firehose にログを送信するために kinesis_firehose プラグインを使用する方法を示しています。

      1. 次の内容を aws-logging-firehose-configmap.yaml という名前のファイルに保存します。region-code を、クラスターのある AWS リージョンに置き換えます。

        kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: output.conf: | [OUTPUT] Name kinesis_firehose Match * region region-code delivery_stream my-stream-firehose
      2. マニフェストをクラスターに適用します。

        kubectl apply -f aws-logging-firehose-configmap.yaml
      3. Firehose IAM ポリシーをコンピュータにダウンロードします。GitHub でポリシーの表示をすることもできます。

        curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/kinesis-firehose/permissions.json

    CloudWatch の ConfigMap を作成するには

    CloudWatch を使用する場合、次の 2 つの出力オプションがあります。

    次の例は、cloudwatch_logs プラグインを使用して CloudWatch にログを送信する方法を示しています。

    1. 次の内容を aws-logging-cloudwatch-configmap.yaml という名前のファイルに保存します。region-code を、クラスターのある AWS リージョンに置き換えます。[OUTPUT] のパラメータは必須です。

      kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability data: flb_log_cw: "false" # Set to true to ship Fluent Bit process logs to CloudWatch. filters.conf: | [FILTER] Name parser Match * Key_name log Parser crio [FILTER] Name kubernetes Match kube.* Merge_Log On Keep_Log Off Buffer_Size 0 Kube_Meta_Cache_TTL 300s output.conf: | [OUTPUT] Name cloudwatch_logs Match kube.* region region-code log_group_name my-logs log_stream_prefix from-fluent-bit- log_retention_days 60 auto_create_group true parsers.conf: | [PARSER] Name crio Format Regex Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>P|F) (?<log>.*)$ Time_Key time Time_Format %Y-%m-%dT%H:%M:%S.%L%z
    2. マニフェストをクラスターに適用します。

      kubectl apply -f aws-logging-cloudwatch-configmap.yaml
    3. CloudWatch IAM ポリシーをコンピュータにダウンロードします。GitHub でポリシーの表示をすることもできます。

      curl -O https://raw.githubusercontent.com/aws-samples/amazon-eks-fluent-logging-examples/mainline/examples/fargate/cloudwatchlogs/permissions.json
  3. 前のステップでダウンロードしたポリシー ファイルを使用して、IAM ポリシーを作成します。

    aws iam create-policy --policy-name eks-fargate-logging-policy --policy-document file://permissions.json
  4. 次のコマンドを使用して、Fargate プロファイルに指定されたポッド実行ロールに IAM ポリシーを添付します。111122223333 は、ご自分のアカウント ID に置き換えます。AmazonEKSFargatePodExecutionRole を Pod の実行ロールに置き換えます (詳細については、「ステップ 2: Fargate Pod 実行ロールを作成する」を参照してください)。

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/eks-fargate-logging-policy \ --role-name AmazonEKSFargatePodExecutionRole

Kubernetes フィルターのサポート

この機能には、最低限、次の Kubernetes バージョンとプラットフォームレベル以上が必要です。

Kubernetes バージョン プラットフォームレベル

1.23 以降

eks.1

Fluent Bit Kubernetes フィルターを使用すると、ログファイルに Kubernetes メタデータを追加できます。フィルターの詳細については、Fluent Bit ドキュメントの「Kubernetes」を参照してください。API サーバーエンドポイントを使用して、フィルターを適用できます。

filters.conf: | [FILTER] Name kubernetes Match kube.* Merge_Log On Buffer_Size 0 Kube_Meta_Cache_TTL 300s
重要
  • Kube_URLKube_CA_FileKube_Token_Command、および Kube_Token_File はサービス所有の設定パラメータであるため、指定しないでください。Amazon EKS Fargate がこれらの値を設定します。

  • Kube_Meta_Cache_TTL は、Fluent Bit が最新のメタデータを取得するために API サーバーと通信するまで待機する時間です。Kube_Meta_Cache_TTL が指定されていない場合、Amazon EKS Fargate は API サーバーの負荷を軽減するためにデフォルト値である 30 分を追加します。

Fluent Bit プロセスログをアカウントに送付するには

オプションで、Fluent Bit プロセスログを、次の ConfigMap を使用して Amazon CloudWatch に送付できます。Fluent Bit プロセスログを CloudWatch に送信するには、追加のログの取り込みおよびストレージのコストがかかります。region-code を、クラスターのある AWS リージョンに置き換えます。

kind: ConfigMap apiVersion: v1 metadata: name: aws-logging namespace: aws-observability labels: data: # Configuration files: server, input, filters and output # ====================================================== flb_log_cw: "true" # Ships Fluent Bit process logs to CloudWatch. output.conf: | [OUTPUT] Name cloudwatch Match kube.* region region-code log_group_name fluent-bit-cloudwatch log_stream_prefix from-fluent-bit- auto_create_group true

ログは CloudWatch でクラスターが存在する AWS リージョンにあります。ロググループ名は my-cluster-fluent-bit-logs で、Fluent Bit のログストリーム名は fluent-bit-podname-pod-namespace です。

注記
  • プロセスログは、Fluent Bit プロセスが正常に開始された場合にのみ送付されます。Fluent Bit の起動中に障害が発生すると、プロセスログを取得できません。プロセスログは CloudWatch にのみ送付できます。

  • プロセスログのアカウントへの送付をデバッグするには、前に使用した ConfigMap を適用して、プロセスログを取得します。Fluent Bit が起動に失敗するのは通常、開始時に Fluent Bit が ConfigMap を解析しないか、受け付けないためです。

Fluent Bit プロセスログの送信を停止するには

Fluent Bit プロセスログを CloudWatch に送信するには、追加のログの取り込みおよびストレージのコストがかかります。既存の ConfigMap 設定でプロセスログを除外するには、次のステップを実行します。

  1. Fargate ログ記録を有効にした後、Amazon EKS クラスターの Fluent Bit プロセスログ用に自動的に作成された CloudWatch ロググループを見つけます。これはフォーマット {cluster_name}-fluent-bit-logs に従います。

  2. CloudWatch ロググループ内の各 Pod’s のプロセスログ用に作成された既存の CloudWatch ログストリームを削除します。

  3. ConfigMap を編集して flb_log_cw: "false" を設定します。

  4. クラスター内の既存の Pods を再起動します。

アプリケーションをテストする

  1. サンプル Pod をデプロイします。

    1. 次の内容をコンピュータ上の sample-app.yaml という名前のファイルに保存します。

      apiVersion: apps/v1 kind: Deployment metadata: name: sample-app namespace: same-namespace-as-your-fargate-profile spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - name: http containerPort: 80
    2. マニフェストをクラスターに適用します。

      kubectl apply -f sample-app.yaml
  2. ConfigMap で設定した送信先を使用して、NGINX ログを表示します。

サイズに関する考慮事項

ログルーター用のメモリは、最大 50 MBに収まるようにすることをお勧めします。アプリケーションで非常に高いスループットでログが生成されることが予想される場合は、最大 100 MB を想定して計画する必要があります。

トラブルシューティング

ログ記録の機能が有効か無効かを確認するには、Pod イベントを kubectl describe pod pod-name でチェックしてください。ConfigMap が無効になっているなど何らかの理由で無効の場合は、その理由を確認できます。出力には、次の出力例のように、ログ記録が有効かどうかを明確にする Pod イベントが含まれる場合があります。

[...] Annotations: CapacityProvisioned: 0.25vCPU 0.5GB Logging: LoggingDisabled: LOGGING_CONFIGMAP_NOT_FOUND kubernetes.io/psp: eks.privileged [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning LoggingDisabled <unknown> fargate-scheduler Disabled logging because aws-logging configmap was not found. configmap "aws-logging" not found

Pod イベントは一時的なもので、その期間は設定によります。kubectl describe pod pod-name を使用して、Pod’s アノテーションを表示することもできます。Pod アノテーションには、ログ記録機能が有効か無効か、またその理由に関する情報があります。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.