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

Elastic Container Instance:環境変数を使用したログの収集

最終更新日:Dec 28, 2024

Elastic Container Instance では、コンテナ環境変数を使用してカスタムログ設定を指定できます。このトピックでは、環境変数を使用してログ収集を設定し、コンテナログをログサービスに自動的に収集する方法について説明します。

重要
  • Container Service for Kubernetes (ACK) Serverless クラスタの場合、ログサービスカスタムリソース定義 (CRD) を使用してログを収集することをお勧めします。詳細については、ログサービス CRD を使用したログの収集を参照してください。

  • ログサービス CRD と環境変数を同時に使用しないでください。ログ収集に失敗する可能性があります。

背景情報

ログサービスは、エンドツーエンドのデータロギングサービスです。ログサービスを使用すると、さらなる開発を行うことなく、ログデータの収集、消費、配信、クエリ、分析を行うことができます。詳細については、ログサービスとはを参照してください。

前提条件

ACK Serverless クラスタでログサービスが有効になっています。ログサービスコンソールにログオンします。クラスタでログサービスが有効になっていない場合は、画面の指示に従ってサービスを有効にするように求められます。

注記

  • 環境変数を使用してログ収集を設定できるのは、エラスティックコンテナインスタンスを作成するときだけです。エラスティックコンテナインスタンスを更新するときに渡すログ関連の環境変数は有効になりません。

  • カスタムプロジェクトまたはLogtail設定を使用しなくなった場合は、不要なコストを避けるために、プロジェクトまたはLogtail設定をタイムリーに削除してください。

設定の説明

ログ環境変数の名前のプレフィックスは、aliyun_logs_{key} 形式です。次の表に、設定可能な環境変数を示します。

重要

{key} は、ログサービスの Logtail 設定の名前を指定します。{key} の値には、小文字、数字、ハイフン (-) のみを含めることができます。{key} にカスタム値を指定できます。値が Kubernetes クラスタ内で一意であることを確認してください。

設定対象

必須

環境変数の名前

説明

Logtail 設定

はい

aliyun_logs_{key}

この変数は Logtail 設定を作成します。有効な値:

  • Logtail が stdout ログを収集する場合、有効な値は次のとおりです。

    • stdout:stdout ログと標準エラー (stderr) ログを収集します。

    • stderr-only:stderr ログを収集しますが、stdout ログは収集しません。

    • stdout-only:stdout ログを収集しますが、stderr ログは収集しません。

  • Logtail がテキストログを収集する場合、有効な値はコンテナ内のファイルディレクトリです。

プロジェクト

いいえ

aliyun_logs_{key}_project

この変数は、ログサービスのプロジェクトを指定します。

この変数を指定しない場合、k8s-log-<cluster-id> 形式の名前のデフォルトプロジェクトが使用されます。

ログストア

いいえ

aliyun_logs_{key}_logstore

この変数はログストアを指定します。

この変数を指定しない場合、{key} という名前のログストアが使用されます。

マシン グループ

いいえ

aliyun_logs_{key}_machinegroup

この変数はマシン グループを指定します。

この変数を指定しない場合、デフォルトのマシン グループが使用されます。

シャード

いいえ

aliyun_logs_{key}_shard

この変数は、ログストアのシャード数を指定します。

  • 有効な値:1~10。

  • この変数を指定しない場合、デフォルトの数値である 2 が使用されます。

ログの保持期間

いいえ

aliyun_logs_{key}_ttl

この変数はログの保持期間を指定します。単位:日。

  • 有効な値:1~3650。値 3650 は、ログデータがログストアに永続的に保存されることを指定します。

  • この変数を指定しない場合、ログは 90 日間保持されます。

タグ

いいえ

aliyun_logs_{key}_tags

この変数は、ログにバインドされるタグを指定します。変数の値は、tag-key=tag-value 形式である必要があります。タグはログを識別するために使用されます。

設定例

  1. Kubernetes クラスタに接続します。

  2. アプリケーションを作成します。

    コンテナの環境変数にログ関連の設定を指定できます。次の YAML ファイルの例は、Deployment を作成する方法を示しています。この例では、コンテナの起動後に stdout とログファイルが継続的に表示されるように、関連するコマンドが実行されます。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: sls
      name: eci-sls-demo
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sls
      template:
        metadata:
          labels:
            app: sls
            alibabacloud.com/eci: "true" 
        spec:
          containers:
          - image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/alpine:3.5
            imagePullPolicy: Always
            args:
            - -c
            - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/alpine.log; sleep 1;done
            command:
            - /bin/sh
            name: alpine
            env:
            # プロジェクトを設定するか、デフォルトプロジェクトを使用します。
            - name: aliyun_logs_test-stdout_project
              value: k8s-log-c21492
            - name: aliyun_logs_test-file_project
              value: k8s-log-c21492
            # マシン グループを設定するか、デフォルトのマシン グループを使用します。
            - name: aliyun_logs_test-stdout_machinegroup
              value: k8s-group-app-alpine
            - name: aliyun_logs_test-file_machinegroup
              value: k8s-group-app-alpine
            # stdout ログを test-stdout という名前のログストアに収集します。収集パスは stdout です。
            - name: aliyun_logs_test-stdout
              value: stdout
            # /log/*.log ディレクトリのログを test-file という名前のログストアに収集します。収集対象は、/log ディレクトリ内のすべての .log ファイルです。
            - name: aliyun_logs_test-file
              value: /log/*.log
            # ログの保持期間を指定します。この設定は、test-stdout という名前のログストアに対してのみ有効です。
            - name: aliyun_logs_test-stdout_ttl
              value: "7"
            # ログシャードの数を指定します。この設定は、test-stdout という名前のログストアに対してのみ有効です。
            - name: aliyun_logs_test-stdout_shard
              value: "2"
            # emptyDir ボリュームをマウントします。環境変数 aliyun_logs_{key} の値がコンテナ内のディレクトリである場合は、emptyDir ボリュームをそのディレクトリにマウントします。
            volumeMounts:
            - name: volume-sls
              mountPath: /log
          volumes:
          - name: volume-sls
            emptyDir: {}

    test-sls-env.yaml という名前の YAML ファイルを作成し、上記のテンプレートを YAML ファイルにコピーしてから、次のコマンドを実行してアプリケーションを作成します。

    kubectl create -f test-sls-env.yaml
  3. アプリケーションの状態を確認します。

    kubectl get pod

    予期される出力:

    NAME                             READY   STATUS    RESTARTS   AGE
    eci-sls-demo-b97bbd7d6-z9twz     1/1     Running   0          2m45s
  4. ログを表示します。

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

    2. プロジェクトの名前をクリックします。

    3. コンテナのログが格納されているログストアを見つけます。ログストアの名前をクリックしてログを表示します。

      • stdout ログの収集

        日志env0

      • テキストログの収集

        日志env1