環境変数を設定して、ECI ログを SLS のカスタムプロジェクト、Logstore、マシン グループに転送します。
背景
Simple Log Service (SLS) は、ログデータ向けのワンストップサービスです。カスタム開発を行うことなく、ログの収集、利用、転送、クエリ、分析が可能です。詳細については、「Simple Log Service の概要」をご参照ください。
SLS は従量課金制です。課金の概要。
Elastic Container Instance (ECI) インスタンス作成時にログ収集を有効にすると、システムはデフォルトのプロジェクトとマシン グループを作成します。
-
プロジェクト名:
eci-log-default-project-{Region}-{AccountID} -
マシン グループ名:
eci-log-default-machine-group-{Region}
カスタムプロジェクト、Logstore、またはマシン グループを使用するには、ログ設定をコンテナ環境変数として設定します。指定されたリソースが SLS に存在しない場合、システムは自動的にリソースを作成します。
注意事項
-
ログ関連の環境変数は、インスタンス作成時にのみ有効です。インスタンス更新時に設定された変数は無視されます。
-
使用していないカスタムプロジェクトと Logtail 設定を削除して、課金を回避してください。
-
環境変数の名前を変更しても、元の設定は削除されません。課金を回避するために、手動で削除してください。
設定
カスタムログ設定 (プロジェクト、Logstore、Logtail 設定、マシン グループ、シャード数、保持期間、タグ) をコンテナ環境変数として設定します。
ログ関連の環境変数名は aliyun_logs_{key} で始まる必要があります。ここで、{key} は Logtail 設定名です。key には小文字、数字、ハイフン (-) のみを使用できます。
|
パラメーター |
環境変数 |
値の説明 |
|
Logtail 設定 |
aliyun_logs_{key} |
Logtail 設定を作成し、ログ収集パスを指定します。
|
|
プロジェクト |
aliyun_logs_{key}_project |
プロジェクトを指定します。名前の要件は次のとおりです:
説明
プロジェクト名はグローバルに一意である必要があり、作成後は変更できません。無効な名前は無視され、デフォルトのプロジェクトが使用されます。 |
|
Logstore |
aliyun_logs_{key}_logstore |
Logstore を指定します。名前の要件は次のとおりです:
説明
無効な名前は無視され、デフォルトの Logstore が使用されます。デフォルトの Logstore 名は、Logtail 設定名 |
|
マシン グループ |
aliyun_logs_{key}_machinegroup |
マシン グループを指定します。名前の要件は次のとおりです:
説明
無効な名前は無視され、デフォルトのマシン グループが使用されます。 |
|
シャード |
aliyun_logs_{key}_shard |
Logstore のシャード数を設定します。値は 1~10 の整数です。 Logstore で読み書きされるログはシャードに保存されます。各 Logstore にはデフォルトで 2 つのシャードがあります。 |
|
ログ保持期間 |
aliyun_logs_{key}_ttl |
ログ保持期間を日数で設定します。値は 1~3,650 の整数です。
|
|
タグ |
aliyun_logs_{key}_tags |
ログにタグを追加します。値は |
例
次の例では、以下のカスタムログ設定を使用します:
-
Logtail 設定と Logstore 名:標準出力ログは
stdout-eciに保存され、テキストファイルログはfile-eciに保存されます。 -
プロジェクト名:
project-eci-test -
マシン グループ名:
mg-eci-test
これらは例の値です。独自の設定を使用し、プロジェクト名がグローバルに一意であることを確認してください。
API
CreateContainerGroup API を呼び出し、Container.N.EnvironmentVar.N.Key および Container.N.EnvironmentVar.N.Value パラメーターで環境変数を設定します。
ContainerGroupName=test-sls
Container.1.Name=busybox
Container.1.Image=registry-vpc.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
Container.1.Command.1=/bin/sh
Container.1.Arg.1=-c
Container.1.Arg.2=mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
# stdout ログを収集します
Container.1.EnvironmentVar.1.Key=aliyun_logs_stdout-eci
Container.1.EnvironmentVar.1.Value=stdout
Container.1.EnvironmentVar.2.Key=aliyun_logs_stdout-eci_project
Container.1.EnvironmentVar.2.Value=project-eci-test
Container.1.EnvironmentVar.3.Key=aliyun_logs_stdout-eci_machinegroup
Container.1.EnvironmentVar.3.Value=mg-eci-test
# テキストファイルを収集します
Container.1.EnvironmentVar.4.Key=aliyun_logs_file-eci
Container.1.EnvironmentVar.4.Value=/log/*.log
Container.1.EnvironmentVar.5.Key=aliyun_logs_file-eci_project
Container.1.EnvironmentVar.5.Value=project-eci-test
Container.1.EnvironmentVar.6.Key=aliyun_logs_file-eci_machinegroup
Container.1.EnvironmentVar.6.Value=mg-eci-test
コンソール
Elastic Container Instance コンソールで ECI インスタンスを作成する際、コンテナー設定 セクションでコンテナを選択し、その詳細設定を展開してから、環境変数 を有効にして変数を追加します。
stdout ログを収集するには、次の環境変数を追加します: aliyun_logs_stdout-eci = stdout、aliyun_logs_stdout-eci_project = project-eci-test、aliyun_logs_stdout-eci_machinegroup = mg-eci-test。テキストファイルログを収集するには、次の環境変数を追加します: aliyun_logs_file-eci = /log/*.log、aliyun_logs_file-eci_project = project-eci-test、aliyun_logs_file-eci_machinegroup = mg-eci-test。
結果の確認
Simple Log Service コンソールで、対象のプロジェクトを開き、Logstore のログを表示します。
標準出力
project-eci-test プロジェクトを開き、[stdout-eci] Logstore を選択します。stdout ログには、_container_name_、_image_name_、_namespace_、_pod_name_、_pod_uid_、_source_、content などのフィールドが含まれます。
テキストファイル
Logstore には、ECI インスタンスから収集されたテキストファイルログが表示され、内容は hello sls です。