このトピックでは、カスタムリソース定義 (CRD) を使用してSidecarモードでコンテナテキストログを収集する方法について説明します。 これを行うには、SidecarをインストールしてからLogtail設定を作成する必要があります。

始める前に

  • Logtailコンポーネントがインストールされています。 詳細については、「KubernetesクラスターへのLogtailコンポーネントのインストール」をご参照ください。
  • ログを収集するコンテナーは、継続的にログを生成します。
    重要 Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。

このタスクについて

Sidecarモードでは、Logtailコンテナはアプリケーションコンテナとログディレクトリを共有します。 アプリケーションコンテナは、ログを共有ディレクトリに書き込みます。 Logtailは、共有ディレクトリ内のログファイルへの変更を監視し、ログを収集します。 詳細については、「ロギングエージェントを使用したSidecarコンテナー」および「ポッドによる複数のコンテナーの管理方法」をご参照ください。

ステップ1: Sidecarのインストール

  1. Kubernetesクラスターにログインします。
  2. YAMLファイルを作成します。

    このコマンドでは、ファイル名はsidecar.yamlです。 ファイル名を実際のファイル名に置き換えます。

    vim sidecar.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネスシナリオに基づいてパラメーターを設定します。
    重要 envパラメーターのTZフィールドに指定したタイムゾーンが有効であることを確認します。 Log Serviceプロジェクトの生ログと処理済みログのタイムゾーンに矛盾がある場合、収集されたログに記録される時刻は、過去または未来の時点である可能性があります。 たとえば、Log Serviceプロジェクトが中国にある場合、タイムゾーンをAsia/Shanghaiに設定できます。
    apiVersion: batch/v1
    種類: 仕事
    メタデータ:
      name: nginx-log-sidecar-demo
      namespace: デフォルト
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        仕様:
          restartPolicy: Never
          コンテナ:
          - name: nginx-log-demo
            image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
            command: ["/bin/mock_log"]
            args: ["--log-type=nginx", "--stdout=false", "--stderr=true", "--path=/var/log/nginx/access.log", "--total-count=1000000000", "--logs-per-sec=100"]
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
          ##### logtail sidecar container
          - name: logtail
            # more info: https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/detail
            # this images is released for every region
            image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
            # recevie sigterm、logtailが10秒遅れてから停止する場合
            command:
            - sh
            - -c
            - /usr/local/ilogtail/run_logtail.sh 10
            livenessProbe:
              exec:
                command:
                - /etc/init.d/ilogtaild
                - status
              initialDelaySeconds: 30
              periodSeconds: 30
            resources:
              limits:
                memory: 512Mi
              requests:
                cpu: 10m
                memory: 30Mi
            env:
              ##### base config
              # user id
              value: "${your_aliyun_user_id}"
                value: "${your_aliyun_user_id}"
              # user defined id
              - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                value: "${your_machine_group_user_defined_id}"
              # config file path in logtail's container
              - name: "ALIYUN_LOGTAIL_CONFIG"
                value: "/etc/ilogtail/conf/${your_region_config}/ilogtail_config.json"
              ##### env tags config
              - name: "ALIYUN_LOG_ENV_TAGS"
                value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
              - name: "_pod_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: "_pod_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
              - name: "_namespace_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
              - name: "_node_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: spec.nodeName
              - name: "_node_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.hostIP
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
          ##### share this volume
          volumes:
          - name: nginx-log
            emptyDir: {}
    1. 設定スクリプトで基本変数を設定します。 次の表に変数を示します。
      ##### base config
                # user id
                value: "${your_aliyun_user_id}"
                  値: "${your_aliyun_user_id}"
                # user defined id
                - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                  値: "${your_machine_group_user_defined_id}"
                # config file path in logtail's container
                - name: "ALIYUN_LOGTAIL_CONFIG"
                  値: "/etc/ilogtail/conf/ ${your_region_config} /ilogtail_config.json"
      変数説明
      ${your_aliyun_user_id}Alibaba CloudアカウントのID。 詳細については、「Alibaba Cloud ECS インスタンス以外または他のアカウントの ECS インスタンスからログを収集する」をご参照ください。
      ${your_machine_group_user_defined_id}マシングループのカスタム識別子。 例: nginx-log-sidecar.
      重要 識別子は、プロジェクトが存在するリージョンで一意である必要があります。
      ${your_region_config}プロジェクトが存在するリージョンのIDと、プロジェクトが使用するネットワークのタイプ。 リージョンの詳細については、「Logtailインストールのリージョン名」をご参照ください。
      • インターネット経由でプロジェクトにログを収集する場合は、region-Internet形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合は、cn-Hangzhou-internetを指定します。
      • Alibaba Cloudの内部ネットワークを介してプロジェクトにログを収集する場合は、region形式で値を指定します。 たとえば、プロジェクトが中国 (杭州) リージョンにある場合は、cn-Hangzhouを指定します。
    2. 構成スクリプトでマウントパスを指定します。
      説明 emptyDirタイプのボリュームにコンテナーをマウントすることを推奨します。
      volumeMounts:
      -name: nginx-log
        mountPath: /var/log/nginx
        ##### このボリュームを共有する
      ボリューム:
      -name: nginx-log
        emptyDir: {}
      パラメーター説明
      nameボリュームの名前。 ビジネス要件に基づいて名前を指定できます。
      重要 volumeMountsノードのnameパラメーターの値とvolumesノードのnameパラメーターの値は同じである必要があります。 これにより、Logtailコンテナとアプリケーションコンテナが同じボリュームに確実にマウントされます。
      mountPathマウントパス。 コンテナテキストログが記録されているファイルのパスを入力できます。
    3. 構成スクリプトでLogtailコンテナの待機期間を指定します。
      ほとんどの場合、待機期間は10秒です。 この値は、コンテナーがstopコマンドを受信してから10秒後にLogtailコンテナーが終了することを示します。 この設定は、不完全なデータ収集を防ぐのに役立ちます。
      コマンド:
      -sh
      - -c
      - /usr/local/ilogtail/run_logtail.sh 10
  4. 次のコマンドを実行して、sidecar.yamlファイルの設定を適用します。

    このコマンドでは、ファイル名はsidecar.yamlです。 ファイル名を実際のファイル名に置き換えます。

    kubectl apply -f sidecar.yaml

ステップ2: Logtail設定の作成

Logtail設定を作成するには、AliyunLogConfig CRDを作成するだけです。 Logtail設定が作成されると、システムは自動的にLogtail設定を適用します。 Logtail設定を削除する場合は、CRDを削除するだけです。

  1. Kubernetesクラスターにログインします。
  2. 次のコマンドを実行して、YAMLファイルを作成します。

    このコマンドのファイル名はcube.yamlです。 ファイル名を実際のファイル名に置き換えます。

    vim cube.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネスシナリオに基づいてパラメーターを設定します。
    重要
    • configNameパラメーターの値は、使用するLog Serviceプロジェクトで一意である必要があります。
    • 複数のCRDが同じLogtail設定に関連付けられている場合、いずれかのCRDを削除または変更すると、Logtail設定が影響を受けます。 CRDが削除または変更されると、関連する他のCRDのステータスがLog ServiceのLogtail設定のステータスと一致しなくなります。
    • Sidecarモードでは、テキストログのみ収集できます。 dockerFileパラメーターをfalseに設定する必要があります。
    apiVersion: log.alibabacloud.com/v1alpha1# デフォルト値が使用されます。 このパラメーターを変更する必要はありません。 
    kind: AliyunLogConfig# デフォルト値が使用されます。 このパラメーターを変更する必要はありません。 
    metadata:
      name: simple-stdout-example# リソースの名前。 名前は、現在のKubernetesクラスターで一意である必要があります。 
    仕様:
      プロジェクト: k8s-my-project# オプション。 プロジェクトの名前。 デフォルト値は、Logtailコンポーネントのインストールに使用するプロジェクトの名前です。 
      logstore: k8s-stdout# Logstoreの名前。 指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。 
      logstoreMode: 標準# オプション。 Logstoreのタイプ。 このパラメーターの値は、Logstoreの作成時にパラメーターを設定した場合にのみ有効になります。 
      machineGroups: # マシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 このマシングループは、SidecarをCRDに関連付けるために使用されます。 
      - nginx-log-sidecar
      shardCount: 2# オプション。 シャードの数。 有効な値: 1 ~ 10。 デフォルト値:2 
      lifeCycle: 90# オプション。 Logstoreのデータ保持期間。 有効な値: 1 ~ 3650 デフォルト値: 90。 値3650は、ログデータがLogstoreに永続的に格納されることを指定します。 
      logtailConfig: # Logtailの設定。 
        inputType: file# データソースのタイプ。 Sidecarモードでは、CRDを使用してテキストログのみを収集できます。 したがって、値をfileに設定する必要があります。 
        configName: simple-stdout-example# Logtail設定の名前。 名前は、e metadata.nameフィールドで指定されたリソース名と同じである必要があります。 
        inputDetail: # Logtail設定の詳細設定。 詳細については、次の設定例をご参照ください。 
        ...
    パラメーターデータ型必須/任意説明
    projectStringプロジェクトの名前。 デフォルト値は、Logtailコンポーネントのインストールに使用するプロジェクトの名前です。
    logstoreStringログストアの名前

    指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。

    logstoreModeStringLogstoreのタイプ。 詳細については、「Logstore の作成」をご参照ください。 有効な値:
    • query: Logstoreのクエリ
    • 標準: 標準Logstore
    重要
    • The値このパラメータの場合にのみ有効パラメータ設定を作成するときLogstore。 Logstoreパラメーターで指定されている既存のlogstoreのこのパラメーターの値を変更しても、新しい値は有効になりません。
    • このパラメーターの値は、alibaba-log-controller V0.3.3以降でのみ有効です。
    shardCountintシャードの数。 有効な値: 1 ~ 10。 デフォルト値:2
    lifeCycleintLogstoreのデータ保持期間。 有効な値: 1 ~ 3650 デフォルト値: 90。 値3650は、ログデータがLogstoreに永続的に格納されることを指定します。
    machineGroupsarrayマシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 例: nginx-log-sidecar. 詳細については、「ステップ1: Sidecarのインストール」をご参照ください。
    Log Serviceは、指定した名前に基づいてSidecarをCRDに関連付けるマシングループを作成します。
    重要

    マシングループのカスタム識別子を次の形式で指定する必要があります。

      machineGroups:      
      - nginx-log-sidecar
    logtailConfigobjectLogtail設定の詳細設定。 ほとんどの場合、inputTypeconfigName、およびinputDetailパラメーターのみを設定する必要があります。 パラメーターの詳細は、「Logtail の設定」をご参照ください。

    設定例の詳細については、「設定例単一ディレクトリ」をご参照ください。

  4. 次のコマンドを実行して、Logtail設定を適用します。

    このコマンドのファイル名はcube.yamlです。 ファイル名を実際のファイル名に置き換えます。

    kubectl apply -f cube.yaml
    Logtail設定を作成した後、Log ServiceコンソールまたはCRDを使用してLogtail設定を表示できます。 詳細については、「Logtail設定の表示」をご参照ください。
    重要 ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

設定例

単一ディレクトリ

このセクションでは、CRDを使用してSidecarモードでnginx-log-demoコンテナからテキストログを収集する方法の例を示します。 コンテナーは、データセンター内の自己管理Kubernetesクラスターに属しています。 テキストログには、NGINXアクセスログとNGINXエラーログが含まれ、1つのディレクトリに保存されます。 次のリストは、基本情報を説明しています。
  • ログ収集用のLog Serviceプロジェクトは、中国 (杭州) リージョンにあります。 ログはインターネット経由で収集されます。
  • マウントするボリュームの名前はnginx-logで、ボリュームはemptyDirタイプです。 nginx-logボリュームは、nginx-log-demoおよびLogtailコンテナーの /var/log/nginxディレクトリにマウントされます。
  • NGINXアクセスログのパスは /var/log/nginx/access.logです。 NGINXアクセスログの保存に使用されるLogstoreの名前はnginx-accessです。
  • NGINXエラーログのパスは /var/log/nginx/error.logです。 NGINXエラーログの保存に使用されるLogstoreの名前はnginx-errorです。

例:

  • Sidecarの設定例
    apiVersion: batch/v1
    種類: 仕事
    メタデータ:
      name: nginx-log-sidecar-demo
      namespace: デフォルト
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        仕様:
          restartPolicy: Never
          コンテナ:
          - name: nginx-log-demo
            image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
            command: ["/bin/mock_log"]
            args: ["--log-type=nginx", "--stdout=false", "--stderr=true", "--path=/var/log/nginx/access.log", "--total-count=1000000000", "--logs-per-sec=100"]
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
          ##### logtail sidecar container
          - name: logtail
            # more info: https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/detail
            # this images is released for every region
            image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
            # recevie sigterm、logtailが10秒遅れてから停止する場合
            command:
            - sh
            - -c
            - /usr/local/ilogtail/run_logtail.sh 10
            livenessProbe:
              exec:
                command:
                - /etc/init.d/ilogtaild
                - status
              initialDelaySeconds: 30
              periodSeconds: 30
            env:
              ##### base config
              # user id
              value: "${your_aliyun_user_id}"
                値: "1023 **** 3423"
              # user defined id
              - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                value: "nginx-log-sidecar"
              # config file path in logtail's container
              - name: "ALIYUN_LOGTAIL_CONFIG"
                value: "/etc/ilogtail/conf/cn-hangzhou-internet/ilogtail_config.json"
              ##### env tags config
              - name: "ALIYUN_LOG_ENV_TAGS"
                value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
              - name: "_pod_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: "_pod_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
              - name: "_namespace_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
              - name: "_node_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: spec.nodeName
              - name: "_node_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.hostIP
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
          ##### share this volume
          volumes:
          - name: nginx-log
            emptyDir: {}
  • CRDの設定例

    2つのLogtail設定を作成して、NGINXアクセスログとNGINXエラーログを収集します。

    • NGINXアクセスログの収集
      重要 Sidecarモードでは、dockerFileパラメーターをfalseに設定する必要があります。
      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      メタデータ:
        # リソースの名前。 名前はKubernetesクラスター内で一意である必要があります。 
        名前: nginx-log-access-example
      spec:
        # プロジェクトの名前。 デフォルト値は、Logtailのインストールに使用するプロジェクトの名前です。 
        project: k8s-nginx-sidecar-demo
        # Logstoreの名前。 指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。 
        logstore: nginx-access
        # マシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 
        machineGroups:
        - nginx-log-sidecar
        # Logtail設定を設定します。 
        logtailConfig:
          # データソースのタイプ。 Sidecarモードでは、CRDを使用してテキストログのみを収集できます。 したがって、値をfileに設定する必要があります。 
          inputType:ファイル
          # Logtail設定の名前。 名前は、e metadata.nameフィールドで指定されたリソース名と同じである必要があります。 
          configName: nginx-log-access-example
          inputDetail:
            # Logtailがフル正規表現モードでテキストログを収集できるようにする設定。 
            logType:common_reg_log
            # ログファイルのパス。 
            logPath: /var/log/nginx
            # ログファイルの名前。 ログファイル名を指定するときに、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。 例: log_*.log。 
            filePattern: access.log
            # dockerFileパラメーターをfalseに設定します。 この設定はSidecarモードで必要です。 
            dockerFile: false
            # ログの最初の行の先頭を一致させるために使用される正規表現。 1行のログを収集する場合は、値を '.*' に設定します。 
            logBeginRegex: '.*'
            # ログコンテンツの抽出に使用される正規表現。 ビジネスシナリオに基づいてこのパラメーターを設定します。 
            regex: '(\S +)\s(\S +)\s\S \s + \S "(\s +)\S (\s +)\S +([^"]+)"\s +(\s +)\S (\s +)\S (\d +)\s(\d +) (\S +)\s"([^ "]+)"\s.*'
            # ログから抽出する新しいフィールド。 
            キー: ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent "]
    • NGINXエラーログの収集
      重要 Sidecarモードでは、dockerFileパラメーターをfalseに設定する必要があります。
      # エラーログの設定
      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      メタデータ:
        # リソースの名前。 名前は、現在のKubernetesクラスターで一意である必要があります。 
        名前: nginx-log-error-example
      spec:
        # プロジェクトの名前。 デフォルト値は、Logtailのインストールに使用するプロジェクトの名前です。 
        project: k8s-nginx-sidecar-demo
        # Logstoreの名前。 指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。 
        logstore: nginx-error
        # マシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 
        machineGroups:
        - nginx-log-sidecar
        # Logtail設定を設定します。 
        logtailConfig:
          # データソースのタイプ。 Sidecarモードでは、CRDを使用してテキストログのみを収集できます。 したがって、値をfileに設定する必要があります。 
          inputType:ファイル
          # Logtail設定の名前。 名前は、e metadata.nameフィールドで指定されたリソース名と同じである必要があります。 
          configName: nginx-log-error-example
          inputDetail:
            # Logtailがフル正規表現モードでテキストログを収集できるようにする設定。 
            logType:common_reg_log
            # ログファイルのパス。 
            logPath: /var/log/nginx
            # ログファイル名。 ログファイル名を指定するときに、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。 例: log_*.log。 
            filePattern: error.log
            # dockerFileパラメーターをfalseに設定します。 この設定はSidecarモードで必要です。 
            dockerFile: false

複数のディレクトリ

このセクションでは、CRDを使用してSidecarモードでnginx-log-demoコンテナからテキストログを収集する方法の例を示します。 コンテナーは、データセンター内の自己管理Kubernetesクラスターに属しています。 テキストログにはNGINXアクセスログが含まれ、異なるディレクトリに保存されます。 次のリストは、基本情報を説明しています。
  • ログ収集用のLog Serviceプロジェクトは、中国 (杭州) リージョンにあります。 ログはインターネット経由で収集されます。
  • マウントするボリュームの名前はnginx-lognginx-logsで、ボリュームはemptyDirタイプです。 nginx-logボリュームは、nginx-log-demoおよびLogtailコンテナーの /var/log/nginxディレクトリにマウントされます。 nginx-logsボリュームは、nginx-log-demoおよびLogtailコンテナーの /var/log/nginxsディレクトリにマウントされます。
  • 1つのログファイルパスは /var/log/nginx/access.logで、もう1つのログファイルパスは /var/log/nginxs/access.logです。
  • NGINXアクセスログの保存に使用されるLogstoreの名前はnginx-accessです。

例:

  • Sidecarの設定例
    apiVersion: batch/v1
    種類: 仕事
    メタデータ:
      name: nginx-log-sidecar-demo
      namespace: デフォルト
    spec:
      template:
        metadata:
          name: nginx-log-sidecar-demo
        仕様:
          restartPolicy: Never
          コンテナ:
          - name: nginx-log-demo
            image: registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest
            command: ["/bin/mock_log"]
            args: ["--log-type=nginx", "--stdout=false", "--stderr=true", "--path=/var/log/nginx/access.log", "--total-count=1000000000", "--logs-per-sec=100"]
            ライフサイクル:
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
            -name: nginx-logs
              mountPath: /var/log/nginxs
          ##### logtail sidecar container
          - name: logtail
            # more info: https://cr.console.aliyun.com/repository/cn-hangzhou/log-service/logtail/detail
            # this images is released for every region
            image: registry.cn-hangzhou.aliyuncs.com/log-service/logtail:latest
            # recevie sigterm、logtailが10秒遅れてから停止する場合
            ライフサイクル:
            command:
            - sh
            - -c
            - /usr/local/ilogtail/run_logtail.sh 10
            livenessProbe:
              exec:
                command:
                - /etc/init.d/ilogtaild
                - status
              initialDelaySeconds: 30
              periodSeconds: 30
            resources:
              limits:
                memory: 512Mi
              requests:
                cpu: 10m
                memory: 30Mi
            env:
              ##### base config
              # user id
              value: "${your_aliyun_user_id}"
                値: "1023 **** 3423"
              # user defined id
              - name: "ALIYUN_LOGTAIL_USER_DEFINED_ID"
                value: "nginx-log-sidecar"
              # config file path in logtail's container
              - name: "ALIYUN_LOGTAIL_CONFIG"
                value: "/etc/ilogtail/conf/cn-hangzhou-internet/ilogtail_config.json"
              ##### env tags config
              - name: "ALIYUN_LOG_ENV_TAGS"
                value: "_pod_name_|_pod_ip_|_namespace_|_node_name_|_node_ip_"
              - name: "_pod_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.name
              - name: "_pod_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
              - name: "_namespace_"
                valueFrom:
                  fieldRef:
                    fieldPath: metadata.namespace
              - name: "_node_name_"
                valueFrom:
                  fieldRef:
                    fieldPath: spec.nodeName
              - name: "_node_ip_"
                valueFrom:
                  fieldRef:
                    fieldPath: status.hostIP
            volumeMounts:
            - name: nginx-log
              mountPath: /var/log/nginx
            -name: nginx-logs
              mountPath: /var/log/nginxs
          ##### share this volume
          volumes:
          - name: nginx-log
            emptyDir: {}
          -name: nginx-logs
            emptyDir: {}
  • CRDの設定例

    2つのLogtail設定を作成して、異なるディレクトリからNGINXアクセスログを収集します。

    • /var/log /NGINX /access.logディレクトリからnginxアクセスログを収集します。
      重要 Sidecarモードでは、dockerFileパラメーターをfalseに設定する必要があります。
      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      メタデータ:
        # リソースの名前。 名前は、現在のKubernetesクラスターで一意である必要があります。 
        名前: nginx-log-access-example
      spec:
        # プロジェクトの名前。 デフォルト値は、Logtailのインストールに使用するプロジェクトの名前です。 
        project: k8s-nginx-sidecar-demo
        # Logstoreの名前。 指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。 
        logstore: nginx-access
        # マシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 
        machineGroups:
        - nginx-log-sidecar
        # Logtail設定を設定します。 
        logtailConfig:
          # データソースのタイプ。 Sidecarモードでは、CRDを使用してテキストログのみを収集できます。 したがって、値をfileに設定する必要があります。 
          inputType:ファイル
          # Logtail設定の名前。 名前は、e metadata.nameフィールドで指定されたリソース名と同じである必要があります。 
          configName: nginx-log-access-example
          inputDetail:
            # Logtailがフル正規表現モードでテキストログを収集できるようにする設定。 
            logType:common_reg_log
            # ログファイルのパス。 
            logPath: /var/log/nginx
            # ログファイル名。 ログファイル名を指定するときに、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。 例: log_*.log。 
            filePattern: access.log
            # dockerFileパラメーターをfalseに設定します。 この設定はSidecarモードで必要です。 
            dockerFile: false
            # ログの最初の行の先頭を一致させるために使用される正規表現。 1行のログを収集する場合は、値を '.*' に設定します。 
            logBeginRegex: '.*'
            # ログコンテンツの抽出に使用される正規表現。 
            regex: '(\S +)\s(\S +)\s\S \s + \S "(\s +)\S (\s +)\S +([^"]+)"\s +(\s +)\S (\s +)\S (\d +)\s(\d +) (\S +)\s"([^ "]+)"\s.*'
            # ログから抽出する新しいフィールド。 
            キー: ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent "]
    • /var/log/nginxs/access.logディレクトリからNGINXアクセスログを収集します。
      重要 Sidecarモードでは、dockerFileパラメーターをfalseに設定する必要があります。
      apiVersion: log.alibabacloud.com/v1alpha1
      kind: AliyunLogConfig
      メタデータ:
        # リソースの名前。 名前は、現在のKubernetesクラスターで一意である必要があります。 
        名前: nginxs-log-access-example
      spec:
        # プロジェクトの名前。 デフォルト値は、Logtailのインストールに使用するプロジェクトの名前です。 
        project: k8s-nginx-sidecar-demo
        # Logstoreの名前。 指定されたLogstoreが存在しない場合、Log Serviceは自動的にLogstoreを作成します。 
        logstore: nginxs-access
        # マシングループの名前。 名前は、Sidecarのインストール時に設定した ${your_machine_group_user_defined_id} パラメーターの値と同じである必要があります。 
        machineGroups:
        - nginx-log-sidecar
        # Logtail設定を設定します。 
        logtailConfig:
          # データソースのタイプ。 Sidecarモードでは、CRDを使用してテキストログのみを収集できます。 したがって、値をfileに設定する必要があります。 
          inputType:ファイル
          # Logtail設定の名前。 名前は、e metadata.nameフィールドで指定されたリソース名と同じである必要があります。 
          configName: nginxs-log-access-example
          inputDetail:
            # Logtailがフル正規表現モードでテキストログを収集できるようにする設定。 
            logType:common_reg_log
            # ログファイルのパス。 
            logPath: /var/log/nginxs
            # ログファイル名。 ログファイル名を指定するときに、アスタリスク (*) や疑問符 (?) などのワイルドカード文字を使用できます。 例: log_*.log。 
            filePattern: access.log
            # dockerFileパラメーターをfalseに設定します。 この設定はSidecarモードで必要です。 
            dockerFile: false
            # ログの最初の行の先頭を一致させるために使用される正規表現。 1行のログを収集する場合は、値を '.*' に設定します。 
            logBeginRegex: '.*'
            # ログコンテンツの抽出に使用される正規表現。 
            regex: '(\S +)\s(\S +)\s\S \s + \S "(\s +)\S (\s +)\S +([^"]+)"\s +(\s +)\S (\s +)\S (\d +)\s(\d +) (\S +)\s"([^ "]+)"\s.*'
            # ログから抽出する新しいフィールド。 
            キー: ["time", "ip", "method", "url", "protocol", "latency", "payload", "status", "response-size",user-agent "]

トラブルシューティング

Logtailを使用して標準コンテナやKubernetesコンテナなどのコンテナからログを収集するときに例外が発生した場合、次のトピックに基づいて問題のトラブルシューティングを行うことができます。

Logtailを使用してコンテナからログを収集するときにエラーが発生した場合はどうすればよいですか?