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

Container Service for Kubernetes:Pod の環境変数を使用してアプリケーションログを収集する

最終更新日:Mar 21, 2025

Simple Log Service は、Alibaba Cloud のワンストップログサービスです。コンソールでログを直接収集、消費、配信、クエリ、および分析できます。Simple Log Service は ACK Serverless クラスター でホストされています。ACK Serverless クラスター で Simple Log Service 環境変数を構成して、Simple Log Service がクラスター内のアプリケーション Pod から stdout およびログファイルを収集できるようにすることができます。

重要

ステップ 1:アプリケーションを作成し、Simple Log Service を構成してアプリケーションログを収集する

Simple Log Service に基づくログ収集構成を含むイメージまたは YAML テンプレートを使用して、アプリケーションを作成できます。Simple Log Service の詳細については、「Simple Log Service とは」をご参照ください。

イメージ

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  3. [デプロイメント] ページの上部にある [名前空間] ドロップダウンリストから、アプリケーションを作成する名前空間を選択します。次に、ページの右上隅にある [イメージから作成] をクリックします。

    1. [基本情報] ステップで、[名前][レプリカ]、および [タイプ] パラメーターを設定します。次に、[次へ] をクリックします。

    2. [コンテナー] ステップで、[log Service] セクションのパラメーターを設定します。

      説明

      次の表では、Simple Log Service に関連するパラメーターのみを説明します。その他のパラメーターの詳細については、「デプロイメントを作成する」をご参照ください。

      次の図は例です。采集配置

      パラメーター

      説明

      収集構成

      [収集構成] をクリックします。[ログストア][コンテナー内のログパス(stdout に設定可能)] を設定します。

      • ログストア:使用するログストアの名前。名前には、小文字、数字、およびハイフン(-)のみを含めることができます。

        このパラメーターを使用して、収集されたログを格納するログストアを指定できます。指定されたログストアが存在しない場合、システムはクラスターに関連付けられている Simple Log Service プロジェクトにログストアを自動的に作成します。

      • コンテナー内のログパス(stdout に設定可能):ログを収集するパス。/usr/local/tomcat/logs/catalina.*.log の値は、Tomcat アプリケーションのログファイルが収集されることを示します。

        説明

        値を stdout に設定すると、stdout と stderr が収集されます。

      すべての設定は、対応するログストアに構成エントリとして追加されます。デフォルトでは、ログはシンプルモード(行ごと)で収集されます。他の方法でログを収集する場合は、Simple Log Service コンソール にログイン、プロジェクトとログストアのログ収集構成を変更します。デフォルトでは、プロジェクトは k8s-log プレフィックスを使用します。

      カスタムタグ

      [カスタムタグ] をクリックします。[タグキー][タグ値] を設定します。

      各タグは、収集されたログデータに追加されるキーと値のペアです。カスタムタグを使用して、ログデータにマークを付けることができます。たとえば、タグを使用してアプリケーションバージョンを示すことができます。

    3. パラメーターを構成した後、[次へ] をクリックして詳細設定を構成します。後続のステップの詳細については、「デプロイメントを作成する」をご参照ください。

YAML テンプレート

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[ワークロード] > [デプロイメント] を選択します。

  3. [デプロイメント] ページの上部にある [名前空間] ドロップダウンリストから、アプリケーションを作成する名前空間を選択します。次に、ページの右上隅にある [YAML から作成] をクリックします。

  4. [作成] ページで、[サンプルテンプレート] ドロップダウンリストからテンプレートを選択し、[テンプレート] コードエディターで要件に基づいてテンプレートの内容を変更します。次に、[作成] をクリックします。

    YAML テンプレートは Kubernetes 構文に準拠しています。env を使用して、ログ収集構成とカスタムタグを定義できます。volumeMounts パラメーターと volumes パラメーターも設定する必要があります。Pod の YAML テンプレートの例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-demo
    spec:
      containers:
      - name: my-demo-app
        image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
        args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /var/log/test.log; sleep 1;done
        command:
        - /bin/sh
        env:
        ######### 環境変数を指定します。###########
        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log
        - name: aliyun_logs_mytag1_tags
          value: tag1=v1
        ######### ボリュームマウントパラメーターを指定します。###########
        volumeMounts:
        - name: volumn-sls-mydemo
          mountPath: /var/log
      volumes:
      - name: volumn-sls-mydemo
        emptyDir: {}

    要件に基づいて次の構成を追加できます。

    説明

    ログ収集に関するその他の要件がある場合は、「ステップ 2:env フィールドの詳細設定を構成する」をご参照ください。

    1. 環境変数を使用して、ログ収集構成とカスタムタグを追加します。ログ収集に関連するすべての環境変数は、プレフィックスとして aliyun_logs_ を使用する必要があります。

      1. 次の形式でログ収集構成を追加します。

        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log

        前の例では、aliyun_logs_{key} という形式の 2 つの環境変数がログ収集構成に追加されています。環境変数の {key} は、log-stdoutlog-varlog です。

        • aliyun_logs_log-stdout 環境変数 は、コンテナーから収集された stdout を格納するために、log-stdout という名前のログストアが作成されることを示します。収集構成の名前は log-stdout です。このようにして、コンテナーの stdout は log-stdout という名前のログストアに収集されます。

        • aliyun_logs_log-varlog 環境変数 は、/var/log/*.log パスから収集されたログファイルを格納するために、log-varlog という名前のログストアが作成されることを示します。収集構成の名前は log-varlog です。このようにして、/var/log/*.log パスのログファイルは log-varlog という名前のログストアに収集されます。

      2. 次の形式でカスタムタグを追加します。

        - name: aliyun_logs_mytag1_tags
          value: tag1=v1

        タグが追加されると、タグはコンテナーから収集されたログデータに自動的に追加されます。mytag1 の値には、小文字、数字、およびハイフン(-)のみを含めることができます。

    2. stdout 以外のログファイルを収集するためにログパスを指定する場合は、volumeMounts パラメーターを設定する必要があります。前の YAML テンプレートでは、volumeMounts の mountPath フィールドは /var/log に設定されています。これにより、Logtail は /var/log/*.log ファイルからログデータを収集できます。

ステップ 2:env フィールドの詳細設定を構成する

コンテナー環境変数では、ログ収集を調整するための幅広い構成パラメーターを使用できます。高度なパラメーターをカスタマイズして、特定のログ収集ニーズに合わせて調整できます。

重要

コンテナー環境変数を介したログ収集の構成は、エッジコンピューティングシナリオには適用されないことに注意してください。

フィールド

説明

注記

aliyun_logs_{key}

  • 必須。{key} には、小文字、数字、およびハイフン(-)のみを含めることができます。

  • aliyun_logs_{key}_logstore 変数が構成されていない場合、収集されたログデータを格納するために {key} という名前のログストアが作成されます。

  • 値が stdout の場合、コンテナーの標準出力が収集されます。その他の値は、コンテナー内のログパスを示します。

  • - name: aliyun_logs_catalina
    
      value: stdout
  • - name: aliyun_logs_access-log
    
      value: /var/log/nginx/access.log
  • デフォルトのログ収集モードはシンプルモードです。ログコンテンツを解析する場合は、Simple Log Service コンソールを使用するか、CRD を介して構成することをお勧めします。

  • {key} は Logtail 構成の名前を指定します。構成名は Kubernetes クラスター内で一意である必要があります。

aliyun_logs_{key}_tags

オプション。値は {tag-key}={tag-value} 形式である必要があり、ログデータにタグを追加するために使用されます。

- name: aliyun_logs_catalina_tags

  value: app=catalina

該当なし。

aliyun_logs_{key}_project

オプション。値は Simple Log Service のプロジェクトを指定します。この環境変数が構成されていない場合は、クラスターの作成時に指定したプロジェクトが使用されます。

- name: aliyun_logs_catalina_project

  value: my-k8s-project

プロジェクトは Logtail と同じリージョンにデプロイする必要があります。

aliyun_logs_{key}_logstore

オプション。値は Simple Log Service のログストアを指定します。この環境変数が構成されていない場合、ログストアの名前は {key} になります。

- name: aliyun_logs_catalina_logstore

  value: my-logstore

該当なし。

aliyun_logs_{key}_shard

オプション。値はログストアのシャード数を指定します。有効値:1 ~ 10。この環境変数が構成されていない場合、デフォルト値は 2 です。

説明

指定したログストアが既に存在する場合、この変数は有効になりません。

- name: aliyun_logs_catalina_shard

  value: '4'

該当なし。

aliyun_logs_{key}_ttl

オプション。値はログの保存期間を指定します。有効値:1 ~ 3650。

  • 値が 3650 の場合、ログデータは永続的に保存されます。

  • この環境変数が構成されていない場合、デフォルトのログ保存期間は 90 日です。

説明

指定したログストアが既に存在する場合、この変数は有効になりません。

- name: aliyun_logs_catalina_ttl

  value: '3650'

該当なし。

aliyun_logs_{key}_machinegroup

オプション。値は、アプリケーションがデプロイされているノードグループを指定します。この環境変数が構成されていない場合、デフォルトのノードグループは Logtail がデプロイされているノードグループになります。このパラメーターの使用方法の詳細については、「Alibaba Cloud ACK クラスターテキストログを収集する(DaemonSet モードで Logtail をデプロイする)」をご参照ください。

- name: aliyun_logs_catalina_machinegroup

  value: my-machine-group

該当なし。

aliyun_logs_{key}_logstoremode

オプション。値は、Simple Log Service のログストアのタイプを指定します。このパラメーターが指定されていない場合、デフォルト値は standard です。有効値:

説明

指定したログストアが既に存在する場合、この変数は有効になりません。

  • standard:Simple Log Service のワンストップデータ分析機能をサポートします。リアルタイムモニタリング、インタラクティブ分析、完全な可観測性システムの構築などのシナリオに適用できます。

  • query:高パフォーマンスクエリをサポートします。インデックストラフィックコストは standard の約半分ですが、SQL 分析はサポートされていません。データ量が大きく、保存期間が長い(週単位または月単位)で、ログ分析がないシナリオに適用できます。

  • - name: aliyun_logs_catalina_logstoremode
      value: standard 
  • - name: aliyun_logs_catalina_logstoremode
      value: query 

このパラメーターでは、logtail-ds イメージバージョンが 1.3.1 以降である必要があります。

  • カスタマイズ要件 1:複数のアプリケーションからのデータを同じログストアに収集する

    複数のアプリケーションからのデータを同じログストアに収集するには、aliyun_logs_{key}_logstore パラメーターを設定します。たとえば、以下の構成では、2 つのアプリケーションの stdout を stdout-logstore に収集します。

    この例では、アプリケーション 1 の {key}app1-stdout で、アプリケーション 2 の {key}app2-stdout です。

    アプリケーション 1 の環境変数は次のように設定されます。

    # 環境変数を構成します。
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore

    アプリケーション 2 の環境変数は次のように設定されます。

    # 環境変数を構成します。
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
  • カスタマイズ要件 2:異なるアプリケーションからのデータを異なるプロジェクトに収集する

    異なるアプリケーションからのデータを複数のプロジェクトに収集するには、次の手順に従います。

    1. カスタム ID を k8s-group-{cluster-id} に設定して、各プロジェクトにマシングループを作成します。ここで、{cluster-id} はクラスター ID です。マシングループ名をカスタマイズすることもできます。

    2. 各アプリケーションの環境変数で、プロジェクト、ログストア、およびマシングループの情報を構成します。前の手順で作成したマシングループ名を使用します。

      以下の例では、アプリケーション 1 の {key}app1-stdout で、アプリケーション 2 の {key}app2-stdout です。両方のアプリケーションが同じ ACK クラスター内にデプロイされている場合は、それらに単一のマシングループを使用できます。

      アプリケーション 1 の環境変数は次のように設定されます。

      # 環境変数を構成します。
          - name: aliyun_logs_app1-stdout
            value: stdout
          - name: aliyun_logs_app1-stdout_project
            value: app1-project
          - name: aliyun_logs_app1-stdout_logstore
            value: app1-logstore
          - name: aliyun_logs_app1-stdout_machinegroup
            value: app1-machine-group

      アプリケーション 2 の環境変数は次のように設定されます。

      # アプリケーション 2 の環境変数を構成します。
          - name: aliyun_logs_app2-stdout
            value: stdout
          - name: aliyun_logs_app2-stdout_project
            value: app2-project
          - name: aliyun_logs_app2-stdout_logstore
            value: app2-logstore
          - name: aliyun_logs_app2-stdout_machinegroup
            value: app1-machine-group

ステップ 3:ログを表示する

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターを見つけ、その名前をクリックします。左側のウィンドウで、[操作] > [ログセンター] を選択します。

  3. [ログセンター] ページで、[アプリケーションログ] タブをクリックし、ログストアを選択してコンテナーのログを表示します。