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

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

最終更新日:Jun 22, 2026

ECI では、環境変数を使ってカスタムログ設定をコンテナに渡すことができます。このトピックでは、環境変数を使用してログ収集を設定し、コンテナログを Simple Log Service (SLS) に自動的に送信する方法について説明します。

重要
  • ACK Serverless クラスターの場合は、SLS CRD を使用してログを収集します。詳細については、「SLS CRD を使用したログ収集」をご参照ください。

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

背景情報

SLS は、ログデータを一元管理するサービスです。コードを記述することなく、ログデータの収集、消費、転送、クエリ、分析を迅速に行うことができます。詳細については、「Simple Log Service とは」をご参照ください。

前提条件

SLS が有効になっていることを確認してください。サービスが有効になっていない場合、SLS コンソールにログインすると、サービスの有効化を促されます。画面の指示に従って有効化してください。

注意事項

  • ログ関連の環境変数は、インスタンス作成時にのみ有効です。インスタンス更新時に設定された変数は無視されます。

  • 使用していないカスタムプロジェクトと Logtail 設定を削除して、課金を回避してください。

  • 環境変数の名前を変更しても、元の設定は削除されません。課金を回避するために、手動で削除してください。

設定

ログ関連の環境変数には、aliyun_logs_{key} というプレフィックスを付ける必要があります。次の表に、使用可能な環境変数を示します。

重要

{key} は Logtail 設定の名前を指定します。小文字、数字、ハイフン (-) のみを含めることができます。{key} はカスタマイズできますが、Kubernetes クラスター内で一意である必要があります。

設定対象

必須

環境変数

説明

Logtail 設定

はい

aliyun_logs_{key}

Logtail 設定を作成します。値はログソースを指定します。

  • stdout を収集する場合は、値を次のいずれかに設定します。

    • stdout:通常の出力とエラーメッセージの両方を収集します。

    • stderr-only:エラーメッセージのみを収集します。

    • stdout-only:通常の出力のみを収集します。

  • テキストファイルからログを収集する場合は、値をコンテナ内のファイルパスに設定します。

プロジェクト

いいえ

aliyun_logs_{key}_project

Log Service プロジェクトを指定します。

この変数が設定されていない場合、ログはデフォルトのプロジェクトに送信されます。デフォルトのプロジェクト名は k8s-log-<cluster-id> の形式です。

Logstore

いいえ

aliyun_logs_{key}_logstore

Logstore を指定します。

この変数が設定されていない場合、{key} と同じ名前の Logstore が使用されます。

マシン グループ

いいえ

aliyun_logs_{key}_machinegroup

マシン グループを指定します。

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

シャード

いいえ

aliyun_logs_{key}_shard

Logstore のシャード数を指定します。

  • 有効な値:1~10。

  • この変数が設定されていない場合、デフォルト値は 2 です。

ログ保持期間

いいえ

aliyun_logs_{key}_ttl

ログ保持期間を日数で指定します。

  • 有効な値:1~3650。値 3650 は永久ストレージを示します。

  • この変数が設定されていない場合、デフォルト値は 90 です。

タグ

いいえ

aliyun_logs_{key}_tags

tag-key=tag-value 形式でログにタグを追加します。

設定例

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

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

    コンテナの環境変数としてログ設定を指定します。次の YAML ファイルは、Deployment の例を示しています。

    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 という名前の Logstore に収集します。
            - name: aliyun_logs_test-stdout
              value: stdout
            # /log/*.log ファイルからログを test-file という名前の Logstore に収集します。
            - name: aliyun_logs_test-file
              value: /log/*.log
            # ログ保持期間を設定します。この設定は test-stdout Logstore にのみ適用されます。
            - name: aliyun_logs_test-stdout_ttl
              value: "7"
            # シャード数を設定します。この設定は test-stdout Logstore にのみ適用されます。
            - name: aliyun_logs_test-stdout_shard
              value: "2"
            # emptyDir ボリュームをマウントします。カスタムファイルパスからログを収集するために必要です。
            volumeMounts:
            - name: volume-sls
              mountPath: /log
          volumes:
          - name: volume-sls
            emptyDir: {}

    上記の YAML コンテンツを test-sls-env.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. Log Service コンソールにログインします。

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

    3. 対象の Logstore を見つけて、その名前をクリックしてログを表示します。

      • stdout ログ

        [test-stdout] Logstore では、収集された stdout ログを表示できます。ログフィールドには、_container_name_: alpine_image_name_: registry-vpc.cn-beijing.aliyuncs.com/eci_open/alpine:3.5_namespace_: default_source_: stdout が含まれます。ログコンテンツの例は hello world です。

      • ファイル ログ

        Log Service コンソールで、左側のメニューから [test-file] Logstore を選択します。次に、[test-file] タブをクリックし、ツールバーの [生ログ] をクリックして生ログを表示します。クエリ結果には、収集されたコンテナログが表示されます。各ログエントリには、__tag__:__container_name__:alpine__tag__:__namespace__:default__tag__:__container_ip____tag__:__pod_name____tag__:__pod_uid____tag__:__eci_id__ などのメタデータタグフィールドと、ログコンテンツ content:hello sls が含まれます。