Container Compute Service (ACS) はログサービスと統合されています。ACS クラスタを作成する際に、ログサービスを有効にすることができます。ログサービスは、ACS クラスタ内のコンテナからログデータを収集できます。ログデータには、標準出力とテキストファイルが含まれます。このトピックでは、ACS クラスタで Pod の環境変数を使用してアプリケーションログを収集する方法について説明します。
手順 1: alibaba-log-controller コンポーネントをインストールする
ACS クラスタを作成する際に、ログサービスを有効にする を選択して alibaba-log-controller コンポーネントをインストールできます。作成時にこのチェックボックスを選択しなかった場合は、クラスタの作成後に以下の手順を実行して alibaba-log-controller コンポーネントをインストールすることもできます。
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、操作 > アドオン を選択します。
ログとモニタリング セクションで alibaba-log-controller を見つけます。インストール をクリックします。Alibaba-log-controller をインストール ダイアログボックスで、OK をクリックします。
以前のバージョンの alibaba-log-controller コンポーネントがインストールされている場合は、更新できます。alibaba-log-controller コンポーネントが更新されると、コンポーネントパラメータがリセットされます。 alibaba-log-controller の設定と環境変数は上書きされます。設定と環境変数をカスタマイズした場合は、再設定する必要があります。
手順 2: アプリケーションの作成時にログサービスを設定する
アプリケーションの作成時に、コンテナからログデータを収集するようにログサービスを設定できます。これを行うには、ACS コンソールを使用するか、YAML ファイルを使用します。
ACS コンソールのウィザードを使用してアプリケーションを作成し、ログサービスを設定する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションペインで、
を選択します。デプロイメント ページで、名前空間 ドロップダウンリストから名前空間を選択します。次に、ページの右上隅にある イメージから作成 をクリックします。
説明この例では、ステートレスアプリケーションを使用しています。設定方法は、他のタイプのワークロードと同じです。
基本情報 ウィザードページで、名前、レプリカ、タイプ を指定します。次に、次へ をクリックして、コンテナ ウィザードページに進みます。
説明次のセクションでは、ログサービスに関連するパラメータのみについて説明します。他のアプリケーションパラメータの詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。
ログ セクションで、ログ収集パラメータを設定します。
収集設定 を設定します。
プラス記号 (+) をクリックして、設定エントリを追加します。各設定エントリは、ログストア と コンテナ内のログパス (stdout に設定可能) で構成されます。
ログストア: 収集されたログデータを格納するために使用するログストアの名前を指定します。ログストアが存在しない場合、ACS は ACS クラスタに関連付けられているログサービスプロジェクトにログストアを自動的に作成します。
説明ログストアのデフォルトのログ保存期間は 180 日です。
コンテナ内のログパス (stdout に設定可能): ログデータを収集するパス。/usr/local/tomcat/logs/catalina.*.log の値は、Tomcat アプリケーションのログファイルが収集されることを示します。
説明値を stdout に設定すると、stdout と stderr が収集されます。
すべての設定は、対応するログストアに設定エントリとして追加されます。デフォルトでは、ログはシンプルモード (行ごと) で収集されます。
カスタムタグ を設定します。
プラス記号 (+) をクリックして、カスタムタグを追加します。各タグは、収集されたログデータに追加されるキーと値のペアです。カスタムタグを使用して、ログデータにマークを付けることができます。たとえば、タグを使用してアプリケーションのバージョンを示すことができます。
他のパラメータを設定した後、次へ をクリックして詳細設定を行います。
後続の手順の詳細については、デプロイメントを使用してステートレスアプリケーションを作成する を参照してください。
YAML テンプレートを使用してアプリケーションを作成する
ACS コンソール にログインします。左側のナビゲーションペインで、クラスタ をクリックします。
クラスタ ページで、管理するクラスタを見つけ、その名前をクリックします。左側のペインで、 を選択します。
デプロイメント ページで、名前空間 ドロップダウンリストから名前空間を選択します。次に、ページの右上隅にある YAML から作成 をクリックします。
説明この例では、ステートレスアプリケーションを使用しています。設定方法は、他のタイプのワークロードと同じです。
YAML テンプレートを設定します。
YAML テンプレートは Kubernetes 構文に準拠しています。
env
を使用して、収集設定 と カスタムタグ パラメータを定義できます。次のコードは例です。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' env: # 環境変数を設定する - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
要件に基づいて、以下の手順を順番に実行します。
説明他のログ収集要件がある場合は、手順 3: ログ収集の詳細パラメータ設定 を参照してください。
環境変数を使用して、ログ収集設定 と カスタムタグ を追加します。ログ収集に関連するすべての環境変数は、プレフィックスとして
aliyun_logs_
を使用する必要があります。次の形式でログ収集設定を追加します。
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' env: - name: aliyun_logs_log-stdout value: stdout - name: aliyun_logs_log-varlog value: /var/log/*.log command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
上記の例では、
aliyun_logs_{key}
という形式の 2 つの環境変数がログ収集設定に追加されています。環境変数の{keys}
は、log-stdout
とlog-varlog
です。環境変数
aliyun_logs_log-stdout
は、コンテナから収集されたstdout
を格納するために、ログストア
という名前のlog-stdout
が作成されることを示します。収集設定の名前はlog-stdout
です。このようにして、コンテナの stdout はログストア
という名前のlog-stdout
に収集されます。aliyun_logs_log-varlog
環境変数は、コンテナから収集された /var/log/*.log ファイルを格納するために、ログストア
という名前のlog-varlog
が作成されることを示します。収集設定の名前はlog-varlog
です。このようにして、/var/log/*.log ファイルはログストア
という名前のlog-varlog
に収集されます。
次の形式で カスタムタグ を追加します。
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' env: - name: aliyun_logs_mytag1_tags value: tag1=v1 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
タグが追加されると、タグはコンテナから収集されたログデータに自動的に追加されます。
mytag1
は、アンダースコア (_) を含まないタグ名
を指定します。
stdout 以外のログファイルを収集するためにログパスを指定する場合は、
volumeMounts
パラメータを設定する必要があります。上記の YAML テンプレートでは、
volumeMounts
の mountPath フィールドは /var/log に設定されています。これにより、Logtail は /var/log/*.log ファイルからログデータを収集できます。
YAML テンプレートを変更した後、作成 をクリックして、設定を ACS クラスタに送信します。
手順 3: ログ収集の詳細パラメータ
コンテナ環境変数を設定して、ログ収集をカスタマイズできます。環境変数を使用して詳細設定を行い、ログ収集要件を満たすことができます。
環境変数名 | 説明 | 例 | 注記 |
aliyun_logs_{key} |
|
|
|
aliyun_logs_{key}_tags | オプション。この変数は、ログデータにタグを追加するために使用されます。値は {tag-key}={tag-value} の形式である必要があります。 |
| N/A |
aliyun_logs_{key}_project | オプション。この変数は、ログサービスのプロジェクトを指定します。デフォルトでは、クラスタの作成時に指定したプロジェクトが使用されます。 |
| プロジェクトは、alibaba-log-controller コンポーネントと同じリージョンにデプロイする必要があります。 |
aliyun_logs_{key}_logstore | オプション。この変数は、ログサービスのログストアを指定します。デフォルトでは、ログストアの名前は {key} です。 |
| N/A |
aliyun_logs_{key}_shard | オプション。この変数は、ログストアのシャード数を指定します。有効な値: 1 ~ 10。デフォルト値: 2。 説明 指定したログストアが既に存在する場合、この変数は有効になりません。 |
| N/A |
aliyun_logs_{key}_ttl | オプション。この変数は、ログ保存期間を指定します。有効な値: 1 ~ 3650。
説明 指定したログストアが既に存在する場合、この変数は有効になりません。 |
| N/A |
aliyun_logs_{key}_machinegroup | オプション。この変数は、アプリケーションがデプロイされているノードグループを指定します。デフォルトのノードグループは、alibaba-log-controller コンポーネントがデプロイされているノードグループです。この変数の使用方法の詳細については、特殊なシナリオ 2: 異なるアプリケーションのデータを異なるプロジェクトに収集する を参照してください。 |
| N/A |
aliyun_logs_{key}_logstoremode | オプション。この変数は、ログストアのタイプを指定します。デフォルト値: standard。有効な値: 説明 指定したログストアが既に存在する場合、この変数は有効になりません。
|
| N/A |
特殊なシナリオ 1: 複数のアプリケーションのデータを同じログストアに収集する
このシナリオでは、aliyun_logs_{key}_logstore 変数を設定します。次の例は、2 つのアプリケーションから stdout を収集し、出力を
stdout-logstore
に格納する方法を示しています。アプリケーション 1 の
{key}
はapp1-stdout
に設定されています。アプリケーション 2 の{key}
はapp2-stdout
に設定されています。アプリケーション 1 に次の環境変数を設定します。
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' env: # 環境変数を設定する - name: aliyun_logs_app1-stdout value: stdout - name: aliyun_logs_app1-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
アプリケーション 2 に次の環境変数を設定します。
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' env: # 環境変数を設定する - name: aliyun_logs_app2-stdout value: stdout - name: aliyun_logs_app2-stdout_logstore value: stdout-logstore command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
特殊なシナリオ 2: 異なるアプリケーションのデータを異なるプロジェクトに収集する
このシナリオでは、以下の手順を実行します。
各プロジェクトにマシン・グループを作成し、マシン・グループのカスタム識別子を
k8s-group-{cluster-id}
の形式で設定します。ここで、{cluster-id}
はクラスタのIDです。カスタム・マシン・グループ名を指定できます。各アプリケーションの環境変数で、プロジェクト、ログストア、およびマシン・グループを指定します。マシン・グループの名前は、前の手順で作成したマシン・グループの名前と同じです。
次の例では、アプリケーション1の
{key}
はapp1-stdout
に設定されています。アプリケーション2の{key}
はapp2-stdout
に設定されています。2つのアプリケーションが同じACSクラスタにデプロイされている場合は、アプリケーションに同じマシン・グループを使用できます。アプリケーション1に次の環境変数を設定します。
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' env: # 環境変数を設定する - 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 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
アプリケーション2に次の環境変数を設定します。
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' env: # アプリケーション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 command: ["sh", "-c"] args: ["echo 'Starting my demo app'; sleep 3600"]
手順 4: ログサービスコンソールを使用してログを表示する
この例では、コンソールで作成されたアプリケーションのログを表示する方法を示します。設定後、アプリケーションログは収集され、ログサービスに保存されます。ログサービスコンソールでコンテナログを表示できます。
ログサービスコンソールにログインします。
プロジェクト セクションで、ACS クラスタに対応するプロジェクト (デフォルト: k8s-log-{ACS クラスタ ID}) を選択し、クリックして ログストア タブに移動します。
ログストア一覧で、ログ収集の設定時に指定したログストアを見つけます。ログストア名にポインターを移動し、 アイコンをクリックします。次に、検索と分析 をクリックします。
この例では、ログクエリページでアプリケーションのコンテナ内の標準出力ログとテキストログを表示でき、ログフィールドに追加されたカスタムタグを見つけることができます。
関連情報
ACSクラスタから収集されたログは、ログサービスコンソールで表示できます。
ログ収集エラーのトラブルシューティング方法の詳細については、Logtail を使用してログを収集するときにエラーが発生した場合はどうすればよいですか?を参照してください。