Container Compute Service (ACS) は Simple Log Service (SLS) と統合されています。ACS クラスタを作成する際に、SLS を有効にすることができます。SLS は、ACS クラスタ内のコンテナからログデータを収集できます。ログデータには、標準出力とテキストファイルが含まれます。このトピックでは、カスタムリソース定義 (CRD) を使用して定義できる AliyunLogConfig という名前のカスタムリソースを使用して、ACS クラスタからアプリケーションログを収集する方法について説明します。
ステップ 1:alibaba-log-controller コンポーネントをインストールする
ACS クラスタを作成する際に、[log Service を有効にする] を選択して 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:AliyunLogConfig CRD を作成してログ収集を構成する
AliyunLogConfig を使用して、アプリケーションから標準出力ログとテキストログを収集できます。クラスタ詳細ページの左側のナビゲーションウィンドウで、[カスタムリソース] > [CRD] > [YAML から作成] を選択して、AliyunLogConfig を作成します。 AliyunLogConfig のパラメータを構成します。次の表にパラメータを示します。
パラメータ | 説明 | 例 |
| AliyunLogConfig の名前。名前は ACS クラスタ内で一意である必要があります。 | test-stdout |
| 使用する SLS プロジェクトの名前。このパラメータはオプションです。カスタム名を指定できます。 | k8s-log-c326bc86**** |
| 使用する Logstore の名前。このパラメータは必須です。指定した Logstore が存在しない場合、SLS は指定された名前で Logstore を自動的に作成します。 | test-stdout |
| 収集するソースデータのタイプ。 | plugin |
| Logtail 構成の名前。名前は | test-stdout |
| Logtail 構成の詳細。 Logtail 構成は、標準出力ログとテキストログを収集する方法を指定します。 | サンプル設定は、 |
| Logtail の拡張設定。次の
| サンプル設定は、次の条件に一致するコンテナログが収集されることを示しています。
|
Logtail パラメータの詳細については、「Logtail 構成」をご参照ください。
シナリオ 1:特定のアプリケーションから標準出力を収集する
特定のポッドまたはコンテナから標準出力と標準エラー出力を収集するには、AliyunLogConfig 構成の logtailConfig セクションの detail フィールドにフィルタリング条件を追加します。 AliyunLogConfig をクラスタにデプロイした後、フィルタリング条件に一致するポッドまたはコンテナから標準出力と標準エラー出力を収集できます。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-stdout
spec:
project: k8s-log-c326bc86**** # 実際のプロジェクト名に置き換えてください。
logstore: test-stdout
shardCount: 2
lifeCycle: 90
logtailConfig:
inputType: plugin
configName: test-stdout
inputDetail:
plugin:
inputs:
- type: service_docker_stdout
detail:
Stdout: true
Stderr: true
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prodシナリオ 2:特定のアプリケーションからテキストログを収集する
特定のポッドまたはコンテナからテキストログを収集するには、AliyunLogConfig 構成の logtailConfig セクションの advanced フィールドにフィルタリング条件を追加します。 AliyunLogConfig をクラスタにデプロイした後、フィルタリング条件に一致するポッドまたはコンテナからテキストログを収集できます。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file
spec:
project: k8s-log-c326bc86**** # 実際のプロジェクト名に置き換えてください。
logstore: test-file
logtailConfig:
inputType: file
configName: test-file
inputDetail:
logType: common_reg_log
logPath: /log/
filePattern: "*.log"
dockerFile: true
advanced:
k8s:
K8sNamespaceRegex: ^(default)$
K8sContainerRegex: ^(busybox)$
K8sPodRegex: ^backend.+$
IncludeK8sLabel:
app: backend
application: prod上記のシナリオの AliyunLogConfigs のファイル名は、test-stdout と test-file です。ファイルを作成した後、ステップ 4:SLS コンソールでログを表示する を実行して、指定した Logstore が作成されているかどうかを確認できます。指定した Logstore が作成されていない場合は、「Logtail 構成」を確認し、関連パラメータを変更してください。

ステップ 3:アプリケーションを作成する
AliyunLogConfig CRD を作成した後、Simple Log Service は後で作成されたポッドのログを自動的に収集します。ログ収集をテストするために、次のアプリケーションを作成できます。
この例では、Deployment が作成されます。次の YAML ファイルは例を示しています。コンテナの起動後、システムは関連コマンドを実行します。コンテナの標準出力ログとテキストログは継続的に出力されます。
apiVersion: apps/v1 kind: Deployment metadata: name: backend-busybox labels: app: backend application: prod spec: replicas: 1 selector: matchLabels: app: backend application: prod template: metadata: name: backend-busybox labels: app: backend application: prod spec: containers: - args: - -c - mkdir -p /log; while true; do echo hello world; date; echo hello sls >> /log/busybox.log; sleep 1; done command: - /bin/sh image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/busybox:1.28 imagePullPolicy: Always name: busybox
ステップ 4:SLS コンソールを使用してログを表示する
テストアプリケーションのログは SLS に保存されます。 SLS コンソールにログインして、アプリケーションのコンテナから収集されたログを表示できます。
Simple Log Service コンソール にログインします。
[プロジェクト] セクションで、ACS クラスタに対応するプロジェクト(デフォルト:k8s-log-{ACS クラスタ ID})を見つけ、プロジェクト名をクリックして [logstore] タブに移動します。
Logstores リストで、ログ収集構成で指定した Logstore の名前をクリックします。表示されるページで、ログを表示します。
この例では、ログクエリページで、アプリケーションのコンテナ内の標準出力(test-stdout)ログとテキスト(test-file)ログを表示できます。


関連情報
Logtail を使用したログ収集時のエラーのトラブルシューティング方法については、「Logtail を使用してログを収集するときにエラーが発生した場合はどうすればよいですか?」をご参照ください。