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

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

最終更新日:Dec 27, 2024

Container Compute Service (ACS) はログサービスと統合されています。ACS クラスタを作成する際に、ログサービスを有効にすることができます。ログサービスは、ACS クラスタ内のコンテナからログデータを収集できます。ログデータには、標準出力とテキストファイルが含まれます。このトピックでは、ACS クラスタで Pod の環境変数を使用してアプリケーションログを収集する方法について説明します。

手順 1: alibaba-log-controller コンポーネントをインストールする

ACS クラスタを作成する際に、ログサービスを有効にする を選択して alibaba-log-controller コンポーネントをインストールできます。作成時にこのチェックボックスを選択しなかった場合は、クラスタの作成後に以下の手順を実行して alibaba-log-controller コンポーネントをインストールすることもできます。

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

  2. クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、操作 > アドオン を選択します。

  3. ログとモニタリング セクションで alibaba-log-controller を見つけます。インストール をクリックします。Alibaba-log-controller をインストール ダイアログボックスで、OK をクリックします。

重要

以前のバージョンの alibaba-log-controller コンポーネントがインストールされている場合は、更新できます。alibaba-log-controller コンポーネントが更新されると、コンポーネントパラメータがリセットされます。 alibaba-log-controller の設定と環境変数は上書きされます。設定と環境変数をカスタマイズした場合は、再設定する必要があります。

手順 2: アプリケーションの作成時にログサービスを設定する

アプリケーションの作成時に、コンテナからログデータを収集するようにログサービスを設定できます。これを行うには、ACS コンソールを使用するか、YAML ファイルを使用します。

ACS コンソールのウィザードを使用してアプリケーションを作成し、ログサービスを設定する

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

  2. クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、ワークロード > デプロイメント を選択します。

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

    説明

    この例では、ステートレスアプリケーションを使用しています。設定方法は、他のタイプのワークロードと同じです。

  4. 基本情報 ウィザードページで、名前レプリカタイプ を指定します。次に、次へ をクリックして、コンテナ ウィザードページに進みます。

    説明

    次のセクションでは、ログサービスに関連するパラメータのみについて説明します。他のアプリケーションパラメータの詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。

  5. ログ セクションで、ログ収集パラメータを設定します。

    1. 収集設定 を設定します。

      プラス記号 (+) をクリックして、設定エントリを追加します。各設定エントリは、ログストアコンテナ内のログパス (stdout に設定可能) で構成されます。

      • ログストア: 収集されたログデータを格納するために使用するログストアの名前を指定します。ログストアが存在しない場合、ACS は ACS クラスタに関連付けられているログサービスプロジェクトにログストアを自動的に作成します。

        説明

        ログストアのデフォルトのログ保存期間は 180 日です。

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

        説明

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

        すべての設定は、対応するログストアに設定エントリとして追加されます。デフォルトでは、ログはシンプルモード (行ごと) で収集されます。

        采集配置

    2. カスタムタグ を設定します。

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

      自定义tag

  6. 他のパラメータを設定した後、次へ をクリックして詳細設定を行います。

    後続の手順の詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。

YAML テンプレートを使用してアプリケーションを作成する

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

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

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

    説明

    この例では、ステートレスアプリケーションを使用しています。設定方法は、他のタイプのワークロードと同じです。

  4. YAML テンプレートを設定します。

    YAML テンプレートは Kubernetes 構文に準拠しています。env を使用して、収集設定カスタムタグ パラメータを定義できます。次のコードは例です。

    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'
        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
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]

    要件に基づいて、以下の手順を順番に実行します。

    説明

    他のログ収集要件がある場合は、手順 3: ログ収集の詳細パラメータ設定 を参照してください。

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

      • 次の形式でログ収集設定を追加します。

        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'
            env:
            - name: aliyun_logs_log-stdout
              value: stdout
            - name: aliyun_logs_log-varlog
              value: /var/log/*.log    
            command: ["sh", "-c"]
            args: ["echo 'Starting my demo app'; sleep 3600"]                    

        上記の例では、aliyun_logs_{key} という形式の 2 つの環境変数がログ収集設定に追加されています。環境変数の {keys} は、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 に収集されます。

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

        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'
            env:
            - name: aliyun_logs_mytag1_tags
              value: tag1=v1           
            command: ["sh", "-c"]
            args: ["echo 'Starting my demo app'; sleep 3600"]            

        タグが追加されると、タグはコンテナから収集されたログデータに自動的に追加されます。mytag1 は、アンダースコア (_) を含まないタグ名 を指定します。

    2. stdout 以外のログファイルを収集するためにログパスを指定する場合は、volumeMounts パラメータを設定する必要があります。

      上記の YAML テンプレートでは、volumeMounts の mountPath フィールドは /var/log に設定されています。これにより、Logtail は /var/log/*.log ファイルからログデータを収集できます。

  5. YAML テンプレートを変更した後、作成 をクリックして、設定を ACS クラスタに送信します。

手順 3: ログ収集の詳細パラメータ

コンテナ環境変数を設定して、ログ収集をカスタマイズできます。環境変数を使用して詳細設定を行い、ログ収集要件を満たすことができます。

環境変数名

説明

注記

aliyun_logs_{key}

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

  • 指定された aliyun_logs_{key}_logstore が存在しない場合、{key} という名前のログストアが作成されます。

  • コンテナの stdout を収集するには、値を stdout に設定します。コンテナ内のパスに値を設定して、ログファイルを収集することもできます。

  • - name: aliyun_logs_catalina
    
      value: stdout
  • - name: aliyun_logs_access-log
    
      value: /var/log/nginx/access.log
  • デフォルトのログ収集モードはシンプルモードです。ログデータを解析する場合は、ログサービスコンソールを使用することをお勧めします。

  • {key} はログ収集設定の名前を指定します。設定名は、ACS クラスタ内で一意である必要があります。

aliyun_logs_{key}_tags

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

- name: aliyun_logs_catalina_tags

  value: app=catalina

N/A

aliyun_logs_{key}_project

オプション。この変数は、ログサービスのプロジェクトを指定します。デフォルトでは、クラスタの作成時に指定したプロジェクトが使用されます。

- name: aliyun_logs_catalina_project

  value: my-k8s-project

プロジェクトは、alibaba-log-controller コンポーネントと同じリージョンにデプロイする必要があります。

aliyun_logs_{key}_logstore

オプション。この変数は、ログサービスのログストアを指定します。デフォルトでは、ログストアの名前は {key} です。

- name: aliyun_logs_catalina_logstore

  value: my-logstore

N/A

aliyun_logs_{key}_shard

オプション。この変数は、ログストアのシャード数を指定します。有効な値: 1 ~ 10。デフォルト値: 2。

説明

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

- name: aliyun_logs_catalina_shard

  value: 4

N/A

aliyun_logs_{key}_ttl

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

  • ログデータを永続的に保存するには、値を 3650 に設定します。

  • デフォルトの保存期間は 90 日です。

説明

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

- name: aliyun_logs_catalina_ttl

  value: 3650

N/A

aliyun_logs_{key}_machinegroup

オプション。この変数は、アプリケーションがデプロイされているノードグループを指定します。デフォルトのノードグループは、alibaba-log-controller コンポーネントがデプロイされているノードグループです。この変数の使用方法の詳細については、特殊なシナリオ 2: 異なるアプリケーションのデータを異なるプロジェクトに収集する を参照してください。

- name: aliyun_logs_catalina_machinegroup

  value: my-machine-group

N/A

aliyun_logs_{key}_logstoremode

オプション。この変数は、ログストアのタイプを指定します。デフォルト値: standard。有効な値:

説明

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

  • standard: 標準ログストア。このタイプのログストアはログ分析機能をサポートしており、リアルタイムモニタリングやインタラクティブ分析などのシナリオに適しています。このタイプのログストアを使用して、包括的な可観測性システムを構築することもできます。

  • query: クエリログストア。このタイプのログストアは高パフォーマクエリをサポートしています。クエリログストアのインデックストラフィック料金は、standard ログストアの約半分です。クエリログストアは SQL 分析をサポートしていません。クエリログストアは、データ量が大きく、ログ保存期間が長く、ログ分析が不要なシナリオに適しています。ログが数週間または数か月間保存される場合、ログ保存期間は長いと見なされます。

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

N/A

  • 特殊なシナリオ 1: 複数のアプリケーションのデータを同じログストアに収集する

    このシナリオでは、aliyun_logs_{key}_logstore 変数を設定します。次の例は、2 つのアプリケーションから stdout を収集し、出力を stdout-logstore に格納する方法を示しています。

    アプリケーション 1 の {key}app1-stdout に設定されています。アプリケーション 2 の {key}app2-stdout に設定されています。

    アプリケーション 1 に次の環境変数を設定します。

    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'
        env:    # 環境変数を設定する
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]

    アプリケーション 2 に次の環境変数を設定します。

    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'
        env: # 環境変数を設定する
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
        command: ["sh", "-c"]
        args: ["echo 'Starting my demo app'; sleep 3600"]
  • 特殊なシナリオ 2: 異なるアプリケーションのデータを異なるプロジェクトに収集する

    このシナリオでは、以下の手順を実行します。

    1. 各プロジェクトにマシン・グループを作成し、マシン・グループのカスタム識別子をk8s-group-{cluster-id}の形式で設定します。ここで、{cluster-id}はクラスタのIDです。カスタム・マシン・グループ名を指定できます。

    2. 各アプリケーションの環境変数で、プロジェクト、ログストア、およびマシン・グループを指定します。マシン・グループの名前は、前の手順で作成したマシン・グループの名前と同じです。

      次の例では、アプリケーション1の{key}app1-stdoutに設定されています。アプリケーション2の{key}app2-stdoutに設定されています。2つのアプリケーションが同じACSクラスタにデプロイされている場合は、アプリケーションに同じマシン・グループを使用できます。

      アプリケーション1に次の環境変数を設定します。

      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'
          env: # 環境変数を設定する
          - 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
          command: ["sh", "-c"]
          args: ["echo 'Starting my demo app'; sleep 3600"]

      アプリケーション2に次の環境変数を設定します。

      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'
          env: # アプリケーション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
          command: ["sh", "-c"]
          args: ["echo 'Starting my demo app'; sleep 3600"]

手順 4: ログサービスコンソールを使用してログを表示する

この例では、コンソールで作成されたアプリケーションのログを表示する方法を示します。設定後、アプリケーションログは収集され、ログサービスに保存されます。ログサービスコンソールでコンテナログを表示できます。

  1. ログサービスコンソールにログインします。

  2. プロジェクト セクションで、ACS クラスタに対応するプロジェクト (デフォルト: k8s-log-{ACS クラスタ ID}) を選択し、クリックして ログストア タブに移動します。

  3. ログストア一覧で、ログ収集の設定時に指定したログストアを見つけます。ログストア名にポインターを移動し、button アイコンをクリックします。次に、検索と分析 をクリックします。

    この例では、ログクエリページでアプリケーションのコンテナ内の標準出力ログとテキストログを表示でき、ログフィールドに追加されたカスタムタグを見つけることができます。

関連情報