すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:アプリケーションログを収集するための AliyunLogConfig の使用方法

最終更新日:Mar 19, 2025

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 コンポーネントをインストールすることもできます。

  1. ACS コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタを見つけ、その ID をクリックします。クラスタ詳細ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. [ログとモニタリング] セクションで [alibaba-log-controller] を見つけます。[インストール] をクリックします。[alibaba-log-controller をインストール] ダイアログボックスで、[OK] をクリックします。

重要

以前のバージョンの alibaba-log-controller コンポーネントがインストールされている場合は、更新できます。 alibaba-log-controller コンポーネントが更新されると、コンポーネントパラメータがリセットされます。 alibaba-log-controller の設定と環境変数は上書きされます。設定と環境変数をカスタマイズした場合は、再構成する必要があります。

ステップ 2:AliyunLogConfig CRD を作成してログ収集を構成する

AliyunLogConfig を使用して、アプリケーションから標準出力ログとテキストログを収集できます。クラスタ詳細ページの左側のナビゲーションウィンドウで、[カスタムリソース] > [CRD] > [YAML から作成] を選択して、AliyunLogConfig を作成します。 AliyunLogConfig のパラメータを構成します。次の表にパラメータを示します。

パラメータ

説明

.metadata.name

AliyunLogConfig の名前。名前は ACS クラスタ内で一意である必要があります。

test-stdout

.spec.project

使用する SLS プロジェクトの名前。このパラメータはオプションです。カスタム名を指定できます。k8s-log-<ACS クラスタ ID> 形式でプロジェクト名を指定することをお勧めします。

k8s-log-c326bc86****

.spec.logstore

使用する Logstore の名前。このパラメータは必須です。指定した Logstore が存在しない場合、SLS は指定された名前で Logstore を自動的に作成します。

test-stdout

.spec.logtailConfig.inputType

収集するソースデータのタイプ。file の値はテキストログを示します。plugin の値は標準出力を示します。

plugin

.spec.logtailConfig.configName

Logtail 構成の名前。名前は metadata.name の値と同じである必要があります。

test-stdout

.spec.logtailConfig.inputDetail

Logtail 構成の詳細。 Logtail 構成は、標準出力ログとテキストログを収集する方法を指定します。

plugin:
  inputs:
    - type: service_docker_stdout
      detail:
        Stdout: true
        Stderr: true

サンプル設定は、stdoutstderr が収集されることを示しています。

.spec.logtailConfig.inputDetail.advanced

Logtail の拡張設定。次の K8s 関連の拡張設定が含まれています。

  • K8sNamespaceRegex:名前空間でポッドをフィルタリングします。正規表現を指定できます。

  • K8sContainerRegex:コンテナ名でコンテナをフィルタリングします。正規表現を指定できます。

  • K8sPodRegex:ポッド名でポッドをフィルタリングします。正規表現を指定できます。

  • IncludeK8sLabel:ラベルでポッドをフィルタリングします。

k8s:
  K8sNamespaceRegex: ^(default)$
  K8sContainerRegex: ^(busybox)$
  K8sPodRegex: ^backend.+$
  IncludeK8sLabel:
    app: backend
    application: prod

サンプル設定は、次の条件に一致するコンテナログが収集されることを示しています。

  • ポッドは default 名前空間に属しています。

  • ポッド名は backend で始まります。

  • コンテナ名は busybox で始まります。

  • ポッドには app: backendapplication: prod ラベルが付いています。

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-stdouttest-file です。ファイルを作成した後、ステップ 4:SLS コンソールでログを表示する を実行して、指定した Logstore が作成されているかどうかを確認できます。指定した Logstore が作成されていない場合は、「Logtail 構成」を確認し、関連パラメータを変更してください。

image

ステップ 3:アプリケーションを作成する

AliyunLogConfig CRD を作成した後、Simple Log Service は後で作成されたポッドのログを自動的に収集します。ログ収集をテストするために、次のアプリケーションを作成できます。

  1. この例では、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 コンソールにログインして、アプリケーションのコンテナから収集されたログを表示できます。

  1. Simple Log Service コンソール にログインします。

  2. [プロジェクト] セクションで、ACS クラスタに対応するプロジェクト(デフォルト:k8s-log-{ACS クラスタ ID})を見つけ、プロジェクト名をクリックして [logstore] タブに移動します。

  3. Logstores リストで、ログ収集構成で指定した Logstore の名前をクリックします。表示されるページで、ログを表示します。

    この例では、ログクエリページで、アプリケーションのコンテナ内の標準出力(test-stdout)ログとテキスト(test-file)ログを表示できます。

    image

    image

関連情報

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