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

Container Service for Kubernetes:SLS CRD を使用した ECI Pod ログの収集

最終更新日:Jun 19, 2026

alibaba-log-controller をデプロイし、AliyunLogConfig CRD を定義して、ECI Pod からテキストログと stdout ログを収集します。

前提条件

以下を確認してください。

ログ収集の設定

alibaba-log-controller のデプロイ

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

  2. 左上の隅で、リージョンを選択します。

  3. [クラスター] ページで、クラスター名をクリックします。

  4. 左側のナビゲーションペインで、[運用 > アドオン] を選択します。

  5. [ログとモニタリング] タブをクリックし、[Alibaba-log-controller] カードを見つけ、[インストール]をクリックします。

  6. 確認ダイアログで、[OK] をクリックします。

インストール後、[Alibaba-log-controller] カードに [インストール済み] が表示されます。

AliyunLogConfig CRD の作成

ACK Serverless クラスターに接続し、ログ収集 CRD の YAML 設定ファイルを作成します。

CRD を作成する前に、以下の制約に注意してください。

  • configNamemetadata.name と完全に一致させる必要があります。

  • CRD ベースのログ収集は、CRD の作成後に作成された ECI Pod にのみ適用されます。既存の Pod からログを収集するには、ローリングアップデートで再作成してください。

  • CRD を介して Logtail 設定を作成した後は、CRD を介してのみ管理してください。SLS コンソールでの変更は同期されません。更新するには、AliyunLogConfig CRD を直接変更します。

CRD テンプレート

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: simple-stdout-example
spec:
  project: k8s-my-project
  logstore: k8s-stdout
  logstoreMode: standard
  shardCount: 2
  lifeCycle: 90
  logtailConfig:
    inputType: plugin
    configName: simple-stdout-example
    inputDetail:
      ...

基本パラメーター

パラメーター タイプ 必須 説明
project string いいえ Simple Log Service (SLS) プロジェクト名。デフォルトでは、Logtail のインストールプロジェクトが使用されます。存在しない場合は自動的に作成されます。
logstore string はい Logstore 名。存在しない場合は自動的に作成されます。
logstoreMode string いいえ Logstore のタイプ。有効な値:querystandard。作成時にのみ有効です。詳細については、「Logstore の管理」をご参照ください。
shardCount int いいえ シャード数。有効な値:1~10。デフォルト:2。
lifeCycle int いいえ ログ保持期間 (日数)。有効な値:1~3650。デフォルト:90。3650 は無期限を意味します。作成時にのみ有効です。
machineGroups array いいえ マシングループ。SLS は Logtail のインストール時に k8s-group-${your_k8s_cluster_id} を自動的に作成します。
logtailConfig object はい Logtail 設定。以下のサブパラメーターをご参照ください。

logtailConfig のサブパラメーター:

サブパラメーター 説明
configName Logtail 設定名。metadata.name と一致させる必要があります。
inputType ログソースタイプ。plugin:stdout およびプラグインベースのソース (MySQL バイナリログなど)。file:正規表現や区切り文字などの固定モードのテキストログ。
inputDetail 詳細な入力設定。
outputType 出力タイプ。LogService に設定します。ログは SLS にのみ送信されます。
outputDetail 詳細な出力設定。
logSample サンプルログエントリ。

詳細については、「Logtail の設定」をご参照ください。

コンテナフィルタリング

フィルタリングオプションは Logtail のバージョンによって異なります。

v1.0.34 より前の Logtail では、環境変数とコンテナラベルでのみフィルタリングします。

Kubernetes の名前空間とコンテナ名は、以下のラベルにマッピングされます。

  • 名前空間: io.kubernetes.pod.namespace

  • コンテナ名: io.kubernetes.container.name

これらのラベルを使用してコンテナをフィルタリングします。不十分な場合は、環境変数のホワイトリストまたはブラックリストを使用します。

Logtail v1.0.34 以降では、Pod 名、名前空間、コンテナ名、ラベルなどの Kubernetes レベルのメタデータでフィルタリングします。

logtailConfig.inputDetail.advanced.k8s でフィルタリングパラメーターを設定します。

パラメーター 説明
IncludeK8sLabel Kubernetes ラベルのホワイトリスト — 含めるコンテナ
ExcludeK8sLabel Kubernetes ラベルのブラックリスト — 除外するコンテナ
K8sNamespaceRegex 名前空間でフィルタリング (正規表現)
K8sPodRegex Pod 名でフィルタリング (正規表現)
K8sContainerRegex コンテナ名でフィルタリング (正規表現)

詳細については、「DaemonSet モードで Kubernetes コンテナからテキストログを収集する」および「DaemonSet モードで Kubernetes コンテナから stdout および stderr を収集する (旧バージョン)」をご参照ください。

例:テキストログの収集

次の内容で log-file.yaml を作成します。

apiVersion: log.alibabacloud.com/v1alpha1  # デフォルト値を使用します。変更しないでください。
kind: AliyunLogConfig                      # デフォルト値を使用します。変更しないでください。
metadata:
  name: test-file                  # Kubernetes クラスター内の一意のリソース名。
spec:
  project: k8s-log-c326bc86****    # オプション。プロジェクトが存在しない場合は自動的に作成されます。
  logstore: test-file              # 必須。Logstore が存在しない場合は自動的に作成されます。
  logtailConfig:
    inputType: file                # file = テキストログ、plugin = stdout ログ。
    configName: test-file          # metadata.name と一致させる必要があります。
    inputDetail:
      logType: common_reg_log      # シンプルモード。
      logPath: /log/               # ログファイルディレクトリ。
      filePattern: "*.log"         # ログファイル名のパターン。* と ? をサポートします。
      dockerFile: true             # コンテナから収集するには true に設定します。
      advanced:
        k8s:
          K8sNamespaceRegex: ^(default)$
          K8sPodRegex: '^(eci-sls-demo.*)$'

例:stdout ログの収集

次の内容で log-stdout.yaml を作成します。

apiVersion: log.alibabacloud.com/v1alpha1   # デフォルト値を使用します。変更しないでください。
kind: AliyunLogConfig                       # デフォルト値を使用します。変更しないでください。
metadata:
  name: test-stdout               # Kubernetes クラスター内の一意のリソース名。
spec:
  project: k8s-log-c326bc86****   # オプション。プロジェクトが存在しない場合は自動的に作成されます。
  logstore: test-stdout           # 必須。Logstore が存在しない場合は自動的に作成されます。
  shardCount: 2                   # オプション。デフォルト:2。有効な値:1~10。
  lifeCycle: 90                   # オプション。デフォルト:90 日。有効な値:1~3650。3650 は無期限を意味します。
  logtailConfig:
    inputType: plugin             # plugin = stdout ログ、file = テキストログ。
    configName: test-stdout       # metadata.name と一致させる必要があります。
    inputDetail:
      plugin:
        inputs:
          - type: service_docker_stdout
            detail:
              Stdout: true
              Stderr: true
#              IncludeEnv:
#                aliyun_logs_test-stdout: "stdout"

CRD 設定の適用

kubectl apply -f log-file.yaml
kubectl apply -f log-stdout.yaml

設定を適用すると、Logtail は各コンテナから stdout またはテキストログを収集し、SLS に送信します。

重要

クエリと分析を有効にするには、Logstore にインデックスを作成してください。詳細については、「インデックスの作成」をご参照ください。

ログ収集のテスト

CRD の作成後、新しく作成された Pod からのログが自動的に収集されます。以下の手順で設定を確認してください。

テストアプリケーションの作成

次の Deployment を含む test-sls-crd.yaml を作成してください。コンテナは stdout とログファイルの両方に書き込みます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
        command:
        - /bin/sh
        image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox
kubectl create -f test-sls-crd.yaml

Pod ステータスの確認

kubectl get pod

期待される出力:

NAME                            READY   STATUS    RESTARTS   AGE
eci-sls-demo-7bf8849b9f-cgpbn   1/1     Running   0          2m14s

収集されたログの表示

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

  2. プロジェクト名をクリックします。

  3. コンテナの Logstore をクリックしてログを表示します。

テキストログ収集:

Text log collection

stdout ログ収集:

Stdout log collection

特定の Pod のログ収集の無効化

デフォルトでは、CRD は一致するすべての Pod からログを収集します。特定の Pod を除外するには、Pod のメタデータに k8s.aliyun.com/eci-sls-enable: "false" アノテーションを追加してください。

重要
  • アノテーションは、トップレベルのメタデータではなく、spec.template.metadata に追加してください。

  • アノテーションは Pod の作成時にのみ有効になります。Pod の更新中の変更は無効です。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo2
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-sls-enable: "false"    # ログ収集を無効にします。
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
          done
        command:
        - /bin/sh
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox