すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Logtail サイドカーによる Kubernetes クラスターログの収集

最終更新日:Mar 26, 2026

Simple Log Service は、Kubernetes のログ収集のために、DaemonSet とサイドカーという 2 つの Logtail デプロイモードをサポートしています。サイドカーモードでは、各 Pod が専用の Logtail コンテナを実行し、その Pod 内のコンテナからのみログを収集するため、収集は Pod ごとに分離されます。このトピックでは、サイドカーモードで Logtail をデプロイして、ACK マネージドクラスターからテキストログを収集する方法について説明します。

DaemonSet モードと Sidecar モードの比較については、「Kubernetes クラスターに Logtail をインストールしてログを収集する」をご参照ください。

前提条件

開始する前に、次のものが揃っていることを確認してください:

  • Simple Log Service のプロジェクトLogstore

  • インストール済みの kubectl (自己管理型 Kubernetes クラスターの場合のみ必須)

仕組み

サイドカーベースのログ収集の設定は、4 つのステップで構成されます:

  1. 各アプリケーション Pod への Logtail コンテナのインジェクト。Logtail はアプリケーションコンテナと並行してサイドカーとして実行され、ボリュームを共有してログファイルにアクセスします。収集は Pod ごとに分離されます。

  2. カスタム識別子を持つマシングループの作成。Simple Log Service はマシングループを使用して、ログを収集する Logtail インスタンスを管理します。各 Pod は、YAML で定義したカスタム識別子を使用して自身を登録します。

  3. Logtail 構成の作成。構成が適用されると、Logtail は増分ログデータを収集し、Logstore にアップロードします。

  4. ログのクエリと分析。収集されたログを Simple Log Service コンソールで表示および検索します。

2 つの値がステップ間で共有され、完全に一致する必要があります:
YAML で設定する ALIYUN_LOGTAIL_USER_DEFINED_ID (ステップ 1) は、マシングループ作成時に入力する [カスタム識別子] (ステップ 2) と一致する必要があります。
YAML の ${dir_containing_your_files} マウントパス (ステップ 1) は、Logtail 構成で設定する [ファイルパス] (ステップ 3) と一致する必要があります。

ステップ 1: アプリケーション Pod への Logtail コンテナのインジェクト

ログイン方法は、自己管理型クラスターと ACK クラスターで異なります。それ以外のステップはすべて同じです。
  1. Container Service for Kubernetes (ACK) コンソールにログインします。左側のナビゲーションウィンドウで [クラスター] をクリックし、対象クラスターの [操作] 列にある [その他] をクリックしてから、[ACK クラスターの管理] をクリックします。processed_6

  2. 既存のアプリケーションコンテナの YAML に、以下のスニペットを追加します。この構成により、logtail サイドカーコンテナがインジェクトされ、ログファイル用と、アプリケーションコンテナと Logtail コンテナ間のライフサイクル調整用の 2 つの共有ボリュームが設定されます。

    プレースホルダー説明
    ${timezone}タイムゾーンコンテナの。Region/City 形式で指定します。無効なタイムゾーンを指定すると、生ログのタイムスタンプと処理済みログのタイムスタンプが一致しなくなり、ログが誤った時点でアーカイブされる原因となります。Asia/Shanghai
    ${your_aliyun_user_id}ご利用の Alibaba Cloud アカウント ID。詳細については、「ユーザー識別子の設定」をご参照ください。12************80
    ${your_machine_group_user_defined_id}マシングループのカスタム識別子。ご利用のプロジェクトのリージョン内で一意である必要があります。この値は、ステップ 2 で入力する [カスタム識別子] と一致する必要があります。nginx-log-sidecar
    ${your_region_config}リージョンご利用の Simple Log Service プロジェクトのとネットワークタイプから派生します。内部ネットワークの場合は、リージョン ID を直接使用します (例:ap-southeast-1)。インターネットの場合は、-internet を追加します (例:ap-southeast-1-internet)。ap-southeast-1
    ${logtail_image}Logtail コンテナイメージregistry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
    ${shared_volume_name}ボリューム名。volumeMounts の下の namevolumes の下の name は同一でなければなりません。これにより、アプリケーションコンテナと Logtail コンテナの両方が同じボリュームをマウントします。test-logs
    ${dir_containing_your_files}Logtail コンテナ内のマウントパス。収集したいテキストログが含まれるディレクトリに設定します。この値は、ステップ 3 で設定する [ファイルパス] と一致する必要があります。/root/log
    ...
    #  containers:
      #  YAML の containers タグの下に次の内容を追加して、アプリケーションコンテナのログディレクトリを共有ボリュームにマウントします。このボリュームは Logtail コンテナと共有されます。
          volumeMounts:
            - name: ${shared_volume_name}
              mountPath: ${shared_volume_path} # 共有ボリュームをコンテナのログディレクトリにマウントします。
            - mountPath: /tasksite # Logtail コンテナとの通信用の共有ディレクトリ。
              name: tasksite
        # Logtail サイドカーコンテナを追加します。
        - name: logtail
          image: ${logtail_image}
          command: ["/bin/sh", "-c"]
          args:
            - /etc/init.d/ilogtaild start;
              sleep 10; # Logtail 構成がダウンロードされるまで待機します。
              touch /tasksite/cornerstone;
              until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
              sleep 10; # Logtail がログの送信を完了するまで待機します。
              /etc/init.d/ilogtaild stop;
          livenessProbe:
            exec:
              command:
                - /etc/init.d/ilogtaild
                - status
            initialDelaySeconds: 30
            periodSeconds: 30
          env:
            # Kubernetes クラスターが存在するリージョンに基づいて、Region/City 形式でタイムゾーンを指定します。クラスターが中国本土にある場合は、タイムゾーンを Asia/Shanghai に設定できます。
            # 指定されたタイムゾーンが無効な場合、生ログと処理済みログのタイムラベルが一致しない可能性があります。その結果、ログが誤った時点に基づいてアーカイブされることがあります。
            - name: TZ
              value: "${timezone}"
            - name: ALIYUN_LOGTAIL_USER_ID
              value: "${your_aliyun_user_id}"
            - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
              value: "${your_machine_group_user_defined_id}"
            - name: ALIYUN_LOGTAIL_CONFIG
              value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
            # Pod 環境情報をログラベルとして指定します。
            - name: "ALIYUN_LOG_ENV_TAGS"
              value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
            # Pod とノードの情報を取得します。
            - name: "_pod_name_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: "_pod_ip_"
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: "_namespace_"
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: "_node_name_"
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: "_node_ip_"
              valueFrom:
                fieldRef:
                  fieldPath: status.hostIP
          volumeMounts:
            # Logtail コンテナのログディレクトリを共有ボリュームにマウントします。
            - name: ${shared_volume_name}
              mountPath: ${dir_containing_your_files}
            # アプリケーションコンテナと対話するためのマウントポイントを作成します。
            - mountPath: /tasksite
              name: tasksite
      volumes:
        # ログストレージ用に空の共有ボリュームを定義します。
        - name: ${shared_volume_name}
          emptyDir: {}
        # コンテナが相互に通信するためのボリュームを定義します。
        - name: tasksite
          emptyDir:
            medium: Memory

    次のプレースホルダーを実際の値に置き換えてください:既存のアプリケーションがない場合や、設定をエンドツーエンドでテストしたい場合は、以下の完全な YAML の例を使用してください。ALIYUN_LOGTAIL_USER_ID をご利用の Alibaba Cloud アカウント ID に置き換え、ALIYUN_LOGTAIL_CONFIG${region_id} をご利用の Simple Log Service プロジェクトのリージョンに合わせて更新してください。有効な値については、「サポートされているリージョン」をご参照ください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      annotations:
        deployment.kubernetes.io/revision: '1'
      labels:
        app: deployment-file
        cluster_label: CLUSTER-LABEL-A
      name: deployment-file
      namespace: default
    spec:
      progressDeadlineSeconds: 600
      replicas: 1
      revisionHistoryLimit: 10
      selector:
        matchLabels:
          app: deployment-file
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: deployment-file
            cluster_label: CLUSTER-LABEL-A
        spec:
          containers:
            - name: timestamp-test
              image: 'mirrors-ssl.aliyuncs.com/busybox:latest'
              args:
                - >-
                  while true; mkdir -p /root/log; do date '+%Y-%m-%d %H:%M:%S'
                  >>/root/log/timestamp.log; echo 1 >>/root/log/timestamp.log; echo
                  2 >>/root/log/timestamp.log; echo 3 >>/root/log/timestamp.log;
                  echo 4 >>/root/log/timestamp.log; echo 5
                  >>/root/log/timestamp.log; echo 6 >>/root/log/timestamp.log;
                  echo 7 >>/root/log/timestamp.log; echo 8
                  >>/root/log/timestamp.log; echo 9 >>/root/log/timestamp.log;
                  sleep 10; done
              command:
                - /bin/sh
                - '-c'
                - '--'
              env:
                - name: cluster_id
                  value: CLUSTER-A
              imagePullPolicy: IfNotPresent
              resources: {}
              terminationMessagePath: /dev/termination-log
              terminationMessagePolicy: File
              volumeMounts:
                # アプリケーションコンテナのログディレクトリを共有ボリュームにマウントします。
                - name: test-logs
                  mountPath: /root/log
                # Logtail コンテナと対話するためのマウントポイントを作成します。
                - mountPath: /tasksite
                  name: tasksite
                - name: tz-config
                  mountPath: /etc/localtime
                  readOnly: true
            # Logtail サイドカーコンテナ
            - name: logtail
              image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:v1.8.7.0-aliyun
              command: ["/bin/sh", "-c"]
              args:
                - /etc/init.d/ilogtaild start;
                  sleep 10;
                  touch /tasksite/cornerstone;
                  until [[ -f /tasksite/tombstone ]]; do sleep 1; done;
                  sleep 10;
                  /etc/init.d/ilogtaild stop;
              livenessProbe:
                exec:
                  command:
                    - /etc/init.d/ilogtaild
                    - status
                initialDelaySeconds: 30
                periodSeconds: 30
              resources:
                limits:
                  cpu: 500m
                  memory: 512Mi
                requests:
                  cpu: 10m
                  memory: 30Mi
              env:
                # Kubernetes クラスターが存在するリージョンに基づいて、Region/City 形式でタイムゾーンを指定します。クラスターが中国本土にある場合は、タイムゾーンを Asia/Shanghai に設定できます。
                # 指定されたタイムゾーンが無効な場合、生ログと処理済みログのタイムラベルが一致しない可能性があります。その結果、ログが誤った時点に基づいてアーカイブされることがあります。
                - name: TZ
                  value: "Asia/Shanghai"
                # 環境変数を実際の値に置き換えます。
                - name: ALIYUN_LOGTAIL_USER_ID
                  value: "12************80"
                - name: ALIYUN_LOGTAIL_USER_DEFINED_ID
                  value: "nginx-log-sidecar"
                - name: ALIYUN_LOGTAIL_CONFIG
                  value: "/etc/ilogtail/conf/${region_id}-internet/ilogtail_config.json"
                # Pod 環境情報をログラベルとして指定します。
                - name: "ALIYUN_LOG_ENV_TAGS"
                  value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
                # Pod とノードの情報を取得します。
                - name: "_pod_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.name
                - name: "_pod_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.podIP
                - name: "_namespace_"
                  valueFrom:
                    fieldRef:
                      fieldPath: metadata.namespace
                - name: "_node_name_"
                  valueFrom:
                    fieldRef:
                      fieldPath: spec.nodeName
                - name: "_node_ip_"
                  valueFrom:
                    fieldRef:
                      fieldPath: status.hostIP
              volumeMounts:
                # Logtail コンテナのログディレクトリを共有ボリュームにマウントします。
                - name: test-logs
                  mountPath: /root/log
          volumes:
            # ログストレージ用に空の共有ボリュームを定義します。
            - name: test-logs
              emptyDir: {}
            # コンテナが相互に通信するためのボリュームを定義します。
            - name: tasksite
              emptyDir:
                medium: Memory
            - name: tz-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai  # サーバー上のタイムゾーンファイルを指定します。
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
  3. kubectl apply -f <your-yaml-file> を実行して構成を適用します。

  4. kubectl describe pod <pod-name> を実行して、Logtail コンテナが正常にインジェクトされたことを確認します。出力には、Pod の仕様に logtail コンテナが含まれているはずです。image

ステップ 2: カスタム識別子を持つマシングループの作成

重要

ここで入力するカスタム識別子は、ステップ 1 で設定した ALIYUN_LOGTAIL_USER_DEFINED_ID の値と一致する必要があります。例の YAML では、この値は nginx-log-sidecar です。

  1. Simple Log Service コンソールにログインします。[プロジェクト] セクションで、目的のプロジェクトをクリックします。

  2. 左側のナビゲーションウィンドウで、[リソース] > [マシングループ] を選択します。[マシングループ] リストで、机器组 をクリックし、[マシングループの作成] を選択します。image

  3. [マシングループの作成] パネルで、以下のフィールドを入力し、[OK] をクリックします。

    パラメーター説明
    名前マシングループ名には、小文字、数字、ハイフン (-)、アンダースコア (_) のみを使用できます。先頭と末尾は小文字または数字である必要があり、長さは 2~128 文字です。名前は作成後に変更できません。
    マシングループ識別子[カスタム識別子] を選択します。
    [マシングループ Topic]トピック(オプション) 異なるサーバーからのログを識別するための。
    [カスタム識別子]ステップ 1 の ALIYUN_LOGTAIL_USER_DEFINED_ID と同じ値を入力します。例:nginx-log-sidecar

ステップ 3: Logtail 構成の作成

Logtail 構成の作成には約 3 分かかります。
  1. Simple Log Service コンソールにログインします。

  2. [クイックデータインポート] セクションで、[データのインポート] をクリックします。ダイアログボックスで、[Kubernetes - ファイル] カードをクリックします。

    image

  3. 対象のプロジェクトと Logstore を選択し、[次へ] をクリックします。

  4. [マシングループ構成] ページで、次の操作を行います:

    1. [シナリオ][Kubernetes クラスター] に、[デプロイ方法][サイドカー] に設定します。

    2. ステップ 2 で作成したマシングループが [適用済みサーバーグループ] リストに表示されていることを確認し、[次へ] をクリックします。ハートビートステータスが FAIL と表示される場合、またはマシン情報が表示されない場合は、[自動再試行] をクリックします。それでも失敗する場合は、ご利用の YAML の ALIYUN_LOGTAIL_CONFIG のリージョンが、ご利用の Simple Log Service プロジェクトのリージョンと一致していることを確認してください。さらなるトラブルシューティングについては、「ホスト環境の Logtail マシングループに関連するエラーのトラブルシューティング方法」をご参照ください。

  5. Logtail を設定します。利用可能なすべてのオプションについては、「Logtail 構成」をご参照ください。以下の設定が必要です。

    • [グローバル構成] [構成名]:プロジェクト内で一意である必要があります。名前は作成後に変更できません。image

    • [入力構成]

      • [Logtail デプロイモード][サイドカー] を選択します。

      • [ファイルパス]:ディレクトリとファイル名を、完全なパスまたはワイルドカード (* および ?) を使用して指定します。これは、ステップ 1 の YAML の `${dir_containing_your_files}` と同じパスに設定してください。例えば、/apsara/nuwa/**/*.log/apsara/nuwa およびそのサブディレクトリ配下のすべての .log ファイルに一致します。image

    • [プロセッサー構成]

      • [ログサンプル]:ログサンプルを入力すると、処理パラメーターを正確に構成するのに役立ちます。

      • [複数行モード]:複数行のログに対してこれを有効にします。

        • [タイプ][カスタム] を選択します。

        • [分割失敗時の処理方法][単一行として保持] を選択します。

        • [最初の行に一致する正規表現]:正規表現を入力して [検証] をクリックするか、[生成] > [自動生成] をクリックします。

      • 処理方法[なし]を選択します。その他のオプションについては、「データ処理用 Logtail プラグインの概要」をご参照ください。

  6. インデックスを作成して収集したデータをプレビューし、[次へ] をクリックします。 全文インデックスはデフォルトで有効になっています。 特定のフィールドにインデックスを作成するには、フィールドインデックスを手動で作成するか、[インデックスの自動生成] をクリックします。 詳細については、「インデックスの作成」をご参照ください。 インデックスを作成するときは、Logtail が各ログエントリに自動的にアタッチする K8s メタデータフィールドを考慮してください。 これらのフィールドのフィールドインデックスを作成すると、Pod、名前空間、またはノードでログをフィルターおよび分析できます。 [次へ] をクリックすると、Simple Log Service がログの収集を開始します。

    重要

    フルテキストインデックスを使用して、ログ内のすべてのフィールドをクエリします。フィールドインデックスを使用して、特定のフィールドをクエリし、インデックストラフィックを削減します。フィールドインデックスは、SELECT 文を使用したフィールド分析にも必要です。

    フィールド説明
    __tag__:__hostname__コンテナホストの名前。
    __tag__:__path__コンテナ内のログファイルパス。
    __tag__:_container_ip_コンテナの IP アドレス。
    __tag__:_image_name_コンテナイメージの名前。複数のイメージが同じハッシュを共有しているが、名前やタグが異なる場合、Logtail はハッシュに基づいて 1 つの名前を選択します。これは YAML で定義された名前と一致しない場合があります。
    __tag__:_pod_name_Pod の名前。
    __tag__:_namespace_Pod の名前空間。
    __tag__:_pod_uid_Pod の一意の識別子 (UID)。

ステップ 4: ログのクエリと分析

  1. Simple Log Service コンソールの [プロジェクト] セクションで、対象のプロジェクトをクリックします。

    image

  2. 対象の Logstore にカーソルを合わせ、图标 アイコンをクリックし、[検索と分析] を選択します。

    image

次のステップ

リファレンス