Alibaba Cloud Simple Log Service (SLS) は、ログデータのためのワンストップサービスです。開発不要で、データ収集、消費、配信、クエリ、分析を迅速に実行できます。ACK サーバーレスクラスターは、マネージド型の Simple Log Service 機能を提供します。ACK サーバーレスクラスターで SLS 環境変数を使用して、アプリケーションコンテナーからの標準出力とログファイルを収集し、SLS に配信できます。
ログの収集には、Simple Log Service の CustomResourceDefinitions (CRD) を使用することを推奨します。詳細については、「CRD を使用したアプリケーションログの収集」をご参照ください。
SLS の CRD と環境変数を同時に使用しないでください。ログ収集が失敗する可能性があります。
ステップ 1:アプリケーションの作成と Simple Log Service の設定
イメージまたは YAML テンプレートからアプリケーションを作成し、同時にコンテナーログを収集するように Simple Log Service を設定できます。SLS の詳細については、「Simple Log Service とは」をご参照ください。
イメージからの作成
ACK コンソールにログインし、左側のナビゲーションウィンドウで[クラスター] をクリックします。
[ステートレス] ページの上部で、[名前空間] ドロップダウンリストから対象の名前空間を選択し、[イメージから作成] をクリックします。
[アプリケーション基本情報] タブで、[アプリケーション名]、[レプリカ]、および [タイプ] を設定します。次に、[次へ] をクリックします。
[コンテナ設定] タブの [Log Service] セクションで、パラメーターを設定します。
説明このトピックでは、Simple Log Service に関連するパラメーターのみを説明します。他のアプリケーションパラメーターの詳細については、「ステートレスワークロード (Deployment) の作成」をご参照ください。
次の図は設定例です。

設定項目
説明
収集設定
収集設定が変更された場合、重複収集を防ぐために、過去の収集設定を手動で削除する必要があります。
[収集設定] をクリックします。[Logstore] と [コンテナ内のログパス] を設定します。
Logstore:Logstore の名前。名前には小文字、数字、ハイフン (-) のみを含めることができます。
このパラメーターを使用して、収集したログを保存する Logstore を指定します。指定した Logstore が存在しない場合、ACK サーバーレスはクラスターに関連付けられている Simple Log Service プロジェクトに Logstore を自動的に作成します。
コンテナー内のログパス:ログを収集するパス。たとえば、/usr/local/tomcat/logs/catalina.*.log を使用して Tomcat のテキストログを収集します。
説明このパラメーターを stdout に設定すると、標準出力と標準エラーが収集されます。
各収集設定は、対応する Logstore の構成として自動的に作成されます。デフォルトでは、ログはシンプルモード (行単位) で収集されます。より高度な収集メソッドについては、Simple Log Service コンソールにログインし、対応するプロジェクトと Logstore で構成を変更します。プロジェクト名は、デフォルトで `k8s-log` プレフィックスを使用します。
カスタムタグ
[カスタムタグ] をクリックします。[タグ名] と [タグ値] を設定します。
各カスタムタグは、収集されたログデータに追加されるキーと値のペアです。カスタムタグを使用して、バージョン番号などでログデータをマークできます。
構成を完了したら、[次へ] をクリックします。次のステップの詳細については、ステートレスワークロード (Deployment) の作成をご参照ください。
YAML ファイルからの作成
ACK コンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[ステートレス] ページの上部で、[名前空間] ドロップダウンリストからターゲット名前空間を選択し、[YAMLから作成] をクリックします。
[作成] ページで、サンプルテンプレートを選択します。[テンプレート] エディターで、YAML ファイルを設定します。次に、[作成] をクリックします。
テンプレートは Kubernetes の構文を使用します。コンテナーの収集設定を指定するには、
envを使用して収集設定とカスタムタグを追加します。次に、収集設定に基づいて対応するvolumeMountsとvolumesを作成します。次のコードは、Pod の YAML ファイルのサンプルです: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: ######### Configure 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 ######### Configure Volume Mounts ########### volumeMounts: - name: volumn-sls-mydemo mountPath: /var/log volumes: - name: volumn-sls-mydemo emptyDir: {}必要に応じて、次の設定を Pod の YAML ファイルのサンプルに追加します:
説明より高度なログ収集オプションについては、「ステップ 2:環境変数の高度なパラメーターの設定」をご参照ください。
環境変数を使用して収集設定とカスタムタグを作成します。設定に関連するすべての環境変数は、プレフィックスとして
aliyun_logs_を使用する必要があります。収集設定ルールを作成します:
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.logこの例では、
aliyun_logs_{key}形式で 2 つの収集設定を作成します。対応する{key}の値はlog-stdoutとlog-varlogです。aliyun_logs_log-stdout:このenv変数は、log-stdoutという名前の Logstore を作成し、ログ収集パスをstdoutに設定する構成を指定します。対応する Simple Log Service の収集設定もlog-stdoutという名前で、コンテナーからの標準出力を収集し、log-stdoutLogstore に送信します。aliyun_logs_log-varlog:このenvは、log-varlogという名前の Logstore を作成し、/var/log/*.logパスからログを収集する構成を指定します。対応する Simple Log Service の収集設定の名前もlog-varlogです。この構成は、コンテナーの/var/log/*.logパス内のファイルからログを収集し、log-varlogLogstore に保存します。
カスタムタグルールを作成します:
- name: aliyun_logs_mytag1_tags value: tag1=v1タグを設定すると、対応するフィールドがコンテナーから収集されたログに自動的に追加されます。タグ名 (例:
mytag1) には、小文字、数字、ハイフン (-) のみを含めることができます。
収集設定で
stdout以外のパスを指定した場合、対応するvolumeMountsを作成する必要があります。この例では、設定が/var/log/*.logからログを収集するため、/var/log のvolumeMountsが追加されます。
ステップ 2:環境変数の高度なパラメーターの設定
環境変数ベースの LoongCollector 設定は、さまざまなパラメーターをサポートしています。環境変数を使用して高度な設定を行い、ログ収集の要件を満たすことができます。
エッジコンピューティングのシナリオでは、環境変数を使用してログ収集を設定することはできません。
変数 | 説明 | 例 | 使用上の注意 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | オプション。この変数は、ログデータにタグを追加するために使用されます。値は {tag-key}={tag-value} の形式である必要があります。 | | N/A。 |
aliyun_logs_{key}_project | オプション。この変数は Simple Log Service プロジェクトを指定します。デフォルトのプロジェクトは、クラスター作成時に指定したものです。 | | プロジェクトは Logtail と同じリージョンにデプロイする必要があります。 |
aliyun_logs_{key}_logstore | オプション。この変数は Simple Log Service の Logstore を指定します。デフォルト値:{key}。 | | N/A。 |
aliyun_logs_{key}_shard | オプション。この変数は Logstore のシャード数を指定します。有効値:1~10。デフォルト値:2。 説明 指定した Logstore が既に存在する場合、この変数は効果がありません。 | | N/A。 |
aliyun_logs_{key}_ttl | オプション。この変数はログの保持期間を指定します。有効値:1~3650。
説明 指定した Logstore が既に存在する場合、この変数は効果がありません。 | | N/A。 |
aliyun_logs_{key}_machinegroup | オプション。この変数は、アプリケーションがデプロイされているノードグループを指定します。デフォルトのマシングループは、Logtail がデプロイされているグループです。この変数の使用方法の詳細については、「ACK クラスターからのコンテナーログの収集」をご参照ください。 | | N/A。 |
aliyun_logs_{key}_logstoremode | オプション。この変数は Logstore のタイプを指定します。デフォルト値:standard。有効値:standard と query。 説明 指定した Logstore が既に存在する場合、この変数は効果がありません。
|
| この変数を使用するには、logtail-ds イメージのバージョンが 1.3.1 以降であることを確認してください。 |
カスタム要件 1:複数のアプリケーションから同じ Logstore へのデータ収集
このシナリオでは、 aliyun_logs_{key}_logstore パラメーターを設定します。次の例は、2 つのアプリケーションから stdout を stdout-logstore に収集する方法を示しています。
アプリケーション 1 の
{key}はapp1-stdoutに設定され、アプリケーション 2 の{key}はapp2-stdoutに設定されます。アプリケーション 1 に次の環境変数を設定します:
# 環境変数を設定 - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstoreアプリケーション 2 に次の環境変数を設定します:
# 環境変数を設定 - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstoreカスタム要件 2:複数のアプリケーションから異なるプロジェクトへのデータ収集
このシナリオでは、次の手順を実行します:
各プロジェクトにマシングループを作成し、マシングループのカスタム識別子を次の形式で設定します:
k8s-group-{cluster-id}。ここで、{cluster-id}はクラスターの ID です。カスタムのマシングループ名を指定できます。各アプリケーションの環境変数で、プロジェクト、Logstore、およびマシングループを指定します。マシングループの名前は、前のステップで作成したものと同じです。
次の例では、アプリケーション 1 の
{key}はapp1-stdoutに設定され、アプリケーション 2 の{key}はapp2-stdoutに設定されます。2 つのアプリケーションが同じ ACK クラスターにデプロイされている場合、アプリケーションに同じマシングループを使用できます。アプリケーション 1 に次の環境変数を設定します:
# 環境変数を設定 - 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 に次の環境変数を設定します:
# 環境変数を設定 - 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 コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[ログセンター] ページで、[アプリケーションログ] タブをクリックします。目的の Logstore を選択すると、アプリケーションコンテナーからのログを表示できます。