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

Container Compute Service:AliyunLogConfig を使用したアプリケーションログの収集

最終更新日:Sep 18, 2026

Container Compute Service (ACS) は Simple Log Service (SLS) と統合されています。クラスターの作成時に SLS を有効にすると、コンテナの stdout やテキストファイルを含む、ACS クラスターからのコンテナログを迅速に収集できます。このトピックでは、AliyunLogConfig カスタムリソースを使用して ACS クラスター内のアプリケーションログを収集する方法について説明します。

ステップ 1:Log Service アドオンの有効化

ACS クラスターの作成時に [Enable Log Service] を選択すると、Log Service アドオンが自動的に有効になります。クラスター作成時にこのオプションを選択しなかった場合は、次の手順に従って既存のクラスターでアドオンを有効にできます。

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

  2. クラスターリスト ページで、対象クラスターの名前をクリックします。左側のナビゲーションペインで、アドオン管理 をクリックします。

  3. [Logs and Monitoring] セクションで [alibaba-log-controller] を見つけます。インストール をクリックします。[Install] ダイアログボックスで OK をクリックします。

重要

alibaba-log-controller の設定や環境変数をカスタマイズしている場合、アップグレードによってこれらのパラメーターが上書きされるため、再設定する必要があります。

ステップ 2:AliyunLogConfig カスタムリソースの作成

AliyunLogConfig カスタムリソースを使用して、特定のアプリケーションの stdout とファイルログを収集できます。カスタムリソースを作成するには、左側のナビゲーションペインで カスタムリソース > CRD > YAML のリソースの作成 の順に選択します。次の表に、AliyunLogConfig カスタムリソースの主要なパラメーターを示します。

パラメーター

説明

.metadata.name

ログ収集設定リソースの名前。この名前は ACS クラスター内で一意である必要があります。

test-stdout

.spec.project

任意。プロジェクトの名前。k8s-log-{ACS_cluster_ID} という形式を推奨します。

k8s-log-c326bc86****

.spec.logstore

必須。Logstore の名前。Logstore が存在しない場合、Simple Log Service が自動的に作成します。

test-stdout

.spec.logtailConfig.inputType

データソースタイプです。file はファイルログを示し、plugin は stdout を示します。

plugin

.spec.logtailConfig.configName

Logtail 設定の名前。これは metadata.name で指定されたリソース名と同じである必要があります。

test-stdout

.spec.logtailConfig.inputDetail

Logtail の詳細設定です。これには、stdout ログとファイルログを収集するための設定が含まれます。

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

これはコンテナの標準出力 (Stdout) と標準エラー (Stderr) を収集します。

.spec.logtailConfig.inputDetail.advanced

Logtail の拡張設定です。k8s 設定には以下が含まれます:

  • K8sNamespaceRegex:名前空間で Pod をフィルタリングします。正規表現がサポートされています。

  • K8sContainerRegex:コンテナ名でコンテナをフィルタリングします。正規表現がサポートされています。

  • K8sPodRegex:Pod 名で Pod をフィルタリングします。正規表現がサポートされています。

  • IncludeK8sLabel:Pod ラベルでマッチングします。

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

Logtail は、次のすべての条件が満たされた場合にのみコンテナログを収集します:

  • 名前空間が default である。

  • Pod 名が backend で始まる。

  • コンテナ名が busybox である。

  • Pod に app: backendapplication: prod のラベルが付いている。

設定パラメーターの詳細については、「Logtail 設定 (レガシー)」をご参照ください。

例 1:特定の stdout ログの収集

stdout ログ (stderr を含む) を収集し、特定の Pod やコンテナでフィルタリングするには、inputDetail 設定内のプラグインの detail セクションにマッチングルールを追加します。次の設定を ACS クラスターに適用します。

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:特定のファイルログの収集

特定の Pod またはコンテナからファイルログを収集するには、inputDetail 設定内の advanced ブロックにマッチングルールを追加します。次の設定を ACS クラスターに適用します。

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
説明

[test-stdout][test-file] の AliyunLogConfig カスタムリソースを作成した後、「ステップ 4:SLS コンソールでのログの表示」の指示に従って、対応する Logstore が作成されているか確認してください。作成されていない場合は、「Logtail 設定 (レガシー)」に基づいて設定を確認し、変更してください。

ステップ 3:サンプルアプリケーションの作成

AliyunLogConfig カスタムリソースを作成すると、Simple Log Service (SLS) は設定に一致する新しい Pod からログを自動的に収集します。次のサンプルアプリケーションを作成して、ログ収集をテストできます。

  1. 次の例は、Deployment としてデプロイされるサンプルアプリケーションを示しています。コンテナが起動すると、コマンドを実行して stdout とログファイルに継続的にログを出力します。

    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 コンソールでのログの表示

設定を適用すると、Simple Log Service (SLS) はサンプルアプリケーションからログを収集して保存します。SLS コンソールでコンテナログを表示できます。

  1. SLS コンソールにログインします。

  2. プロジェクト一覧 セクションで、ACS クラスターのプロジェクト (デフォルト:k8s-log-{ACS_cluster_ID}) をクリックして、Logstores リストを開きます。

  3. リストで、ログ収集設定で指定した Logstore の名前をクリックして、新しいタブでログを表示します。

    この例では、ログクエリページで stdout ログ (test-stdout Logstore 内) とコンテナファイルログ (test-file Logstore 内) を表示できます。

    [test-stdout] Logstore のクエリページでは、SLS が 582 件のログを収集したことがわかります。生ログには、_container_name__image_name__namespace__pod_name__source_ (値は stdout)、content などのフィールドが含まれています。これにより、busybox コンテナからの stdout ログが正常に収集されたことが確認できます。

    test-file Logstore のクエリ結果から、busybox コンテナからのファイルログが正常に収集されたことがわかります。ソースパスは /log/busybox.log で、ログ内容は content: hello sls です。

詳細情報

トラブルシューティングのガイダンスについては、「Logtail ログ収集の失敗に関するトラブルシューティング」をご参照ください。