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とは
イメージからのアプリケーションの作成
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページの上部で、[名前空間] ドロップダウンリストからアプリケーションを作成する名前空間を選択します。 次に、ページの右上隅にある [画像から作成] をクリックします。
[基本情報] ウィザードページで、[名前] 、[レプリカ] 、および [タイプ] パラメーターを設定します。 次に、[次へ] をクリックします。
コンテナウィザードページで、パラメーターを設定します。ログサービスセクションにアクセスします。
説明次の表に、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プレフィックスを使用します。
カスタムタグ
[カスタムタグ] をクリックします。 タグキーとタグ値を設定します。
各タグは、収集されたログデータに追加されるキーと値のペアです。 カスタムタグを使用して、ログデータをマークできます。 たとえば、タグを使用してアプリケーションのバージョンを示すことができます。
パラメーターを設定したら、[次へ] をクリックして詳細設定を設定します。 後続の手順の詳細については、「デプロイの作成」をご参照ください。
YAMLテンプレートからのアプリケーションの作成
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページの上部で、[名前空間] ドロップダウンリストからアプリケーションを作成する名前空間を選択します。 次に、ページの右上隅にある [YAMLから作成] をクリックします。
[作成] ページで、[サンプルテンプレート] ドロップダウンリストからテンプレートを選択し、要件に基づいて [テンプレート] セクションのテンプレートの内容を変更します。 次に、作成 をクリックします。
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フィールドの詳細設定の構成」をご参照ください。
環境変数を使用して、ログ収集設定とカスタムタグを追加します。 ログ収集に関連するすべての環境変数は、プレフィックスとして
aliyun_logs_
を使用する必要があります。ログ収集設定を次の形式で追加します。
- name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log
上記の例では、次の形式の2つの環境変数がログ収集設定に追加されています。
aliyun_logs_{key}
。 環境変数の{keys}
は、log-stdout
とlog-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に収集されます。
次の形式でカスタムタグを追加します。
- name: aliyun_logs_mytag1_tags value: tag1=v1
タグが追加されると、タグはコンテナから収集されたログデータに自動的に追加されます。
mytag1
の値には、小文字、数字、およびハイフン (-) のみを使用できます。
stdout
以外のログファイルを収集するログパスを指定する場合は、volumeMounts
パラメーターを設定する必要があります。 上記のYAMLテンプレートでは、volumeMountsのmountPathフィールドは/var/log
に設定されています。 これにより、Logtailは/var/log/*.log
ファイルからログデータを収集できます。
ステップ2: envフィールドで詳細設定を構成する
コンテナー環境変数を設定して、ログ収集をカスタマイズできます。 ログ収集要件を満たすように詳細設定を構成できます。
エッジコンピューティングシナリオでは、環境変数を使用してログ収集を構成することはできません。
変数 | 説明 | 例 | 使用上の注意 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | 必要に応じて、 この変数は、ログデータにタグを追加するために使用されます。 値は {tag-key }={ tag-value} の形式である必要があります。 |
| - |
aliyun_logs_{key}_project | 必要に応じて、 変数は、Simple Log Serviceのプロジェクトを指定します。 デフォルトでは、クラスターの作成時に指定したプロジェクトが使用されます。 プロジェクト名は |
| プロジェクトはLogtailと同じリージョンにデプロイする必要があります。 |
aliyun_logs_{key}_logstore | 必要に応じて、 この変数は、Simple Log ServiceのLogstoreを指定します。 デフォルトでは、Logstoreの名前は {key} です。 |
| - |
aliyun_logs_{key}_shard | 必要に応じて、 この変数は、Logstoreのシャードの数を指定します。 有効な値: 1 ~ 10。 デフォルト値:2 |
| - |
aliyun_logs_{key}_ttl | 必要に応じて、 変数は、ログの保持期間を指定します。 有効な値: 1 ~ 3650
|
| - |
aliyun_logs_{key}_machinegroup | 必要に応じて、 変数は、アプリケーションがデプロイされるノードグループを指定します。 デフォルトのノードグループは、Logtailがデプロイされているノードグループです。 |
| - |
シナリオ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: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにデータを保存する
このシナリオでは、次の手順を実行します。
各プロジェクトにマシングループを作成し、次の形式でマシングループのカスタム識別子を設定します。
k8s-group-{cluster-id}
({cluster-id}
はクラスターのID) 。 カスタムマシングループ名を指定できます。各アプリケーションの環境変数に、プロジェクト、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コンソールで表示するには、次の手順を実行します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[Log Center] ページで、[アプリケーションログ] タブをクリックし、Logstoreを選択してコンテナーのログを表示します。