Amazon CloudWatch
ユーザーガイド

CloudWatch Logs へログを送信する DaemonSet として FluentD をセットアップする

CloudWatch Container Insights is in open preview. The preview is open to all AWS accounts and you do not need to request access. Features may be added or changed before announcing General Availability. Don’t hesitate to contact us with any feedback or let us know if you would like to be informed when updates are made by emailing us at containerinsightsfeedback@amazon.com

以下のステップでは、CloudWatch Logs へログを送信する DaemonSet として FluentD をセットアップします。このステップを完了すると、FluentD は、まだ存在していない場合は次のロググループを作成します。

ロググループ名 ログソース

/aws/containerinsights/Cluster_Name/application

/var/log/containers のすべてのログファイル

/aws/containerinsights/Cluster_Name/host

/var/log/dmesg/var/log/secure、および /var/log/messages からのログ

/aws/containerinsights/Cluster_Name/dataplane

/var/log/journal からのログ

ステップ 1: CloudWatch の名前空間を作成する

CloudWatch に対して amazon-cloudwatch という Kubernetes 名前空間を作成するには、次のステップを使用します。すでにこの名前空間を作成している場合は、以下のステップをスキップできます。

CloudWatch の名前空間を作成するには

  1. 次のコマンドを実行して、YAML 名前空間を kubectl クライアントホストにダウンロードします。

    curl -O https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/kubernetes-monitoring/cloudwatch-namespace.yaml
  2. amazon-cloudwatch 名前空間を作成するには、次のコマンドを実行します。

    kubectl apply -f cloudwatch-namespace.yaml

ステップ 2: FluentD をインストールする

FluentD をダウンロードして、このプロセスを開始します。これらのステップを完了すると、クラスターで次のリソースが作成されます。

  • amazon-cloudwatch 名前空間の fluentd という名前のサービスアカウント。このサービスアカウントは、DaemonSet FluentD を実行するために使用されます。詳細については、Kubernetes Reference のサービスアカウントの管理を参照してください。

  • amazon-cloudwatch 名前空間の fluentd という名前のクラスターロール。このクラスターロールは、ポッドログの getlistwatch の各アクセス許可を fluentd サービスアカウントに付与します。詳細については、Kubernetes Reference の API の概要を参照してください。

  • amazon-cloudwatch 名前空間の fluentd-config という名前の ConfigMap。この ConfigMap には、FluentD によって使用される設定が含まれています。詳細については、Kubernetes Tasks ドキュメントの「Configure a Pod to Use a ConfigMap」を参照してください。

FluentD をインストールするには

  1. 次のコマンドを実行して FluentD デプロイ設定をダウンロードします。

    curl -O https://s3.amazonaws.com/cloudwatch-agent-k8s-yamls/fluentd/fluentd.yml
  2. クラスター名を持つ cluster-info という名前の ConfigMap と、ログの送信先となる AWS リージョンを作成します。次のコマンドを実行し、プレースホルダーをクラスター名とリージョン名で更新します。

    kubectl create configmap cluster-info \ --from-literal=cluster.name=cluster_name \ --from-literal=logs.region=region_name -n amazon-cloudwatch
  3. 次のコマンドを実行して、FluentD DaemonSet をクラスターにデプロイします。

    kubectl apply -f fluentd.yml
  4. 次のコマンドを実行してデプロイを検証します。各ノードには、fluentd-cloudwatch-* という名前の 1 つのノードが必要です。

    kubectl get pods -n amazon-cloudwatch

ステップ 3: FluentD のセットアップを検証する

FluentD のセットアップを検証するには、次のステップを使用します。

Container Insights の FluentD セットアップを検証するには

  1. https://console.aws.amazon.com/cloudwatch/にある CloudWatch コンソールを開きます。

  2. ナビゲーションペインで [ログ] を選択します。FluentD をコンテナにデプロイしたリージョンにいることを確認してください。

    リージョンのロググループのリストは、以下のように表示されます。

    • /aws/containerinsights/Cluster_Name/application

    • /aws/containerinsights/Cluster_Name/host

    • /aws/containerinsights/Cluster_Name/dataplane

    これらのロググループが表示される場合、FluentD のセットアップは検証済みです。

トラブルシューティング

正しいリージョンで確認しているが、これらのロググループが表示されない場合は、FluentD DaemonSet ポッドのログでエラーを確認します。

次のコマンドを実行してステータスが Running であることを確認します。

kubectl get pods -n amazon-cloudwatch

前のコマンドの結果で、ポッドの名前が fluentd-cloudwatch で始まることに注意してください。次のコマンドでこのポッド名を使用します。

kubectl logs pod_name -n amazon-cloudwatch

ログに IAM アクセス権限に関連するエラーがある場合は、クラスターノードにアタッチされた IAM ロールを確認します。Amazon EKS クラスターの実行に必要なアクセス権限の詳細については、Amazon EKS ユーザーガイドの「Amazon EKS IAM ポリシー、ロール、アクセス権限」を参照してください。

ポッドのステータスが CreateContainerConfigError である場合は、次のコマンドを実行して正確なエラーを取得します。

kubectl describe pod pod_name -n amazon-cloudwatch