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

Container Service for Kubernetes:ポッド環境変数を使用したアプリケーションログの収集

最終更新日:Nov 14, 2024

Simple Log Serviceは、Alibaba Cloudのワンストップログサービスです。 コンソールでログデータを直接収集、消費、配信、クエリ、分析できます。 Simple Log ServiceはACKサーバーレスクラスターでホストされます。 このトピックでは、ACKサーバーレスクラスターでSimple Log Service環境変数を設定して、クラスター内のアプリケーションポッドからstdoutファイルとログファイルを収集できるようにする方法について説明します。

重要
  • Simple Log Serviceカスタムリソース定義 (CRD) を優先的に使用してログを収集することを推奨します。 詳細については、「Simple Log Service CRDを使用したアプリケーションログの収集」をご参照ください。

  • Simple Log Service CRDと環境変数を同時に使用しないでください。 これにより、ログ収集が失敗する可能性があります。

ステップ1: アプリケーションを作成し、アプリケーションログを収集するようにSimple Log Serviceを設定する

アプリケーションの作成時にコンテナログを収集するようにSimple Log Serviceを設定できます。 イメージまたはYAMLテンプレートからアプリケーションを作成できます。 Simple Log Serviceの詳細については、Simple Log Serviceとは

イメージからのアプリケーションの作成

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

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

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

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

    2. コンテナウィザードページで、パラメーターを設定します。ログサービスセクションにアクセスします。

      説明

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

      例: 采集配置

      パラメーター

      説明

      コレクションの設定

      [コレクション設定] をクリックします。 Logstoreコンテナーのログパス (stdoutに設定可能) を設定します。

      • Logstore: 使用するLogstoreの名前。 名前には、小文字、数字、ハイフン (-) のみを使用できます。

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

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

        説明

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

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

      カスタムタグ

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

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

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

YAMLテンプレートからのアプリケーションの作成

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

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

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

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

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

    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:
        ######### Specify environment variables ###########
        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log
        - name: aliyun_logs_mytag1_tags
          value: tag1=v1
        ######### Specify volume mounting parameters. ###########
        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

        上記の例では、次の形式の2つの環境変数がログ収集設定に追加されています。aliyun_logs_{key} 。 環境変数の {keys} は、log-stdoutlog-varlogです。

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

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

      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} という名前のLogstoreが作成されます。

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

  • - name: aliyun_logs_catalina
    
       stdout
  • - name: aliyun_logs_access-log
    
       /var/log/nginx/access.log
  • デフォルトでは、Simple Log Serviceコンポーネントはシンプルモードでログファイルを収集します。 この場合、収集されたログデータは解析されません。 ログデータを解析する場合は、Simple log Serviceコンソールで収集モードを変更することを推奨します。

  • {key} の値はクラスター内で一意である必要があります。

aliyun_logs_{key}_tags

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

- name: aliyun_logs_catalina_tags

   app=catalina

-

aliyun_logs_{key}_project

必要に応じて、 変数は、Simple Log Serviceのプロジェクトを指定します。 デフォルトでは、クラスターの作成時に指定したプロジェクトが使用されます。

プロジェクト名はk8s-log-<cluster-id> 形式です。

- name: aliyun_logs_catalina_project

   my-k8s-project

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

aliyun_logs_{key}_logstore

必要に応じて、 この変数は、Simple Log ServiceのLogstoreを指定します。 デフォルトでは、Logstoreの名前は {key} です。

- name: aliyun_logs_catalina_logstore

   my-logstore

-

aliyun_logs_{key}_shard

必要に応じて、 この変数は、Logstoreのシャードの数を指定します。 有効な値: 1 ~ 10。 デフォルト値:2

- name: aliyun_logs_catalina_shard

   '4'

-

aliyun_logs_{key}_ttl

必要に応じて、 変数は、ログの保持期間を指定します。 有効な値: 1 ~ 3650

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

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

- name: aliyun_logs_catalina_ttl

   '3650'

-

aliyun_logs_{key}_machinegroup

必要に応じて、 変数は、アプリケーションがデプロイされるノードグループを指定します。 デフォルトのノードグループは、Logtailがデプロイされているノードグループです。

- name: aliyun_logs_catalina_machinegroup

   my-machine-group

-

  • シナリオ1: 複数のアプリケーションからログデータを収集し、同じログストアにデータを保存する

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

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

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

    # Specify environment variables.
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore

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

    # Specify environment variables.
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
  • シナリオ2: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにデータを保存する

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

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

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

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

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

      # Specify environment variables.
          - 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の次の環境変数を設定します。

      # Specify environment variables for Application 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: ログデータの表示

収集したログデータをACKコンソールで表示するには、次の手順を実行します。

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

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

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