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

Container Service for Kubernetes:DaemonSetモードでKubernetesコンテナからテキストログを収集する

最終更新日:Dec 17, 2024

DaemonSetモードのContainer Service for Kubernetes (ACK) クラスターのKubernetesコンテナーからテキストログを収集できます。 DaemonSetモードでは、各ノードはログエージェントを実行してO&M効率を向上させます。 ACKクラスター内の各ノードに、Simple Log ServiceのログエージェントであるLogtailをインストールできます。 これにより、Logtailは各ノードのすべてのコンテナのログを収集できます。 コンテナのステータスを分析し、収集したログに基づいてコンテナを管理できます。

実装

image

DaemonSetモード

  • DaemonSetモードでは、Kubernetesクラスター内のノードで1つのLogtailコンテナのみが実行されます。 Logtailを使用して、ノード上のすべてのコンテナからログを収集できます。

  • ノードがKubernetesクラスターに追加されると、クラスターは新しいノードにLogtailコンテナーを自動的に作成します。 Kubernetesクラスターからノードが削除されると、クラスターはノード上のLogtailコンテナーを自動的に破棄します。 DaemonSetsとカスタム識別子ベースのマシングループにより、Logtailプロセスを手動で管理する必要がなくなります。

コンテナ検出

  • Logtailコンテナが他のコンテナからログを収集する前に、Logtailコンテナは実行中のコンテナを特定して判断する必要があります。 このプロセスはコンテナ検出と呼ばれます。 コンテナー検出フェーズでは、LogtailコンテナーはKubernetesクラスターのkube-apiserverコンポーネントと通信しません。 代わりに、Logtailコンテナは、Logtailコンテナが実行されているノードのコンテナランタイムデーモンと通信して、ノード上のすべてのコンテナに関する情報を取得します。 これにより、コンテナ検出プロセスでkube-apiserverコンポーネントに圧力が発生するのを防ぎます。

  • Logtailを使用してログを収集する場合、名前空間ポッド名ポッドラベルコンテナー環境変数などの条件を指定して、Logtailがログを収集するコンテナーを特定できます。

コンテナーのファイルパスマッピング

Kubernetesクラスター内のポッドは分離されています。 その結果、ポッド内のLogtailコンテナは、別のポッド内のコンテナのファイルに直接アクセスできません。 コンテナのファイルシステムは、コンテナホストのファイルシステムをコンテナにマウントすることによって作成される。 Logtailコンテナは、コンテナホストのルートディレクトリを含むファイルシステムがLogtailコンテナにマウントされた後にのみ、コンテナホスト上の任意のファイルにアクセスできます。 これにより、Logtailコンテナはファイルシステム内のファイルからログを収集できます。 コンテナ内のファイルパスとコンテナホスト上のファイルパスの関係は、ファイルパスマッピングと呼ばれます。

たとえば、コンテナ内のファイルパスは /log/app.logです。 ファイルパスマッピング後、コンテナーホスト上のファイルパスは /var/lib/docker/containers/<container-id>/log/app.logになります。 既定では、コンテナーホストのルートディレクトリを含むファイルシステムは、logtailコンテナーの /Logtail_hostディレクトリにマウントされます。 したがって、Logtailコンテナは /logtail_host/var/lib/docker/containers/<container-id>/log/app.logからログを収集します。

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

Logtailとは何ですか? はSimple Log Serviceのロギングエージェントです。 Logtailは、アプリケーションコードに侵入することなく、ACKクラスター内のコンテナーからログを収集できます。 Logtailを使用してログを収集する場合、アプリケーションコードを変更する必要はありません。 さらに、Logtailはアプリケーションからログを収集するときにアプリケーションに影響を与えません。 ACKクラスターにLogtailをインストールすると、logtail-dsという名前のDaemonSetがクラスターにデプロイされます。

重要
  • コンテナログを収集してSimple Log Serviceに送信するには、1つのロギングツールのみを使用することを推奨します。 2つのロギングツールを使用して同時にログを収集すると、重複したログが収集されることがあります。 これにより、追加料金が発生し、リソースの浪費を引き起こす可能性があります。

  • Logtailのインストール、LogtailのバージョンとIPアドレスの表示、Logtailの操作ログの表示方法の詳細については、「LogtailコンポーネントのACKクラスターへのインストール」をご参照ください。

クラスター作成時のLogtailのインストール

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

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

  3. [クラスター] ページの右上角にある [Kubernetes クラスターの作成] をクリックします。

    この例では、Simple Log Serviceを有効にする手順のみを説明します。 ACKクラスターの作成方法の詳細については、「ACK管理クラスターの作成」をご参照ください。

  4. [コンポーネント設定] ウィザードページで、[Log Serviceの有効化] を選択してLogtailをクラスターにインストールします。

    Log Serviceの有効化を選択すると、コンソールはSimple Log Serviceプロジェクトの作成を求めます。 Simple Log Serviceで管理されるログの構造の詳細については、「プロジェクト」をご参照ください。 次のいずれかの方法を使用して、Simple Log Serviceプロジェクトを作成できます。

    • [プロジェクトの選択] をクリックし、収集したログを管理する既存のプロジェクトを選択します。

      image..png

    • [プロジェクトの作成] をクリックします。 k8s-log-{ClusterID} という名前のプロジェクトが自動的に作成され、収集されたログが管理されます。 ClusterIDは、作成するクラスターの一意のIDを示します。

      image..png

  5. パラメーターを設定したら、右下隅の [クラスターの作成] をクリックします。 表示されたメッセージボックスで [OK] をクリックします。

    Logtailがインストールされた状態でクラスターが作成された後、[クラスター] ページでクラスターを表示できます。

既存のクラスターへのLogtailのインストール

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

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

  3. [クラスター] ページで、管理するクラスターを見つけ、クラスターの名前をクリックするか、[操作] 列の [詳細] をクリックします。 クラスターの詳細ページが表示されます。

  4. クラスターの詳細ページの左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。 [ログとモニタリング] セクションで、logtail-dsを見つけます。

  5. logtail-dsカードの右下隅にある [インストール] をクリックします。 [logtail-dsのインストール] ダイアログボックスで、[OK] をクリックします。

以前のバージョンのlogtail-dsが既にインストールされている場合は、logtail-dsカードの右下隅にある [アップグレード] をクリックしてコンポーネントを更新できます。

重要

logtail-dsを更新すると、logtail-dsのパラメーターがリセットされます。 logtail-dsまたはalibaba-log-controllerの設定および環境変数は上書きされます。 設定と環境変数をカスタマイズした場合は、後で再構成する必要があります。 詳細については、「手動アップグレード」をご参照ください。

手順2: Logtailの設定

  1. 次のいずれかの方法を選択してLogtailを設定します。

    • 方法1: Kubernetes CustomResourceDefinitions (CRD) を使用します。 CRDを使用すると、Logtail設定をバッチ設定し、Logtail設定のバージョン管理を有効にできます。 この方法は、Logtailのさまざまなログ収集設定を設定するのに適しています。 CRDを使用して作成されたLogtail設定は、Simple Log Serviceコンソールと同期されません。 CRDを使用して作成したLogtail設定を変更するには、関連するCRDを変更する必要があります。 Simple Log ServiceコンソールでLogtail設定を変更すると、Logtail設定に一貫性がなくなります。

    • 方法2: Simple Log Serviceコンソールを使用してLogtailを設定します。 この方法は、いくつかのLogtail設定の作成と設定に適しています。 この方法では、クラスターにログインすることなく、いくつかの手順でLogtailを設定できます。 ただし、Logtail設定をバッチ作成することはできません。 方法1は方法2よりも優先される。

    • 方法3: 環境変数を使用してLogtailを設定します。 このメソッドは、単一行のテキストログのみをサポートします。 複数行のテキストログまたは他の形式のログを収集する場合は、方法1または2を使用します。

  2. Logtailを設定するときに、コンテナーフィルターオプションを設定し、ログ収集中に無視されるディレクトリまたはファイル (収集ブラックリスト) を指定し、ファイルを複数回収集できるようにします。

(推奨) CRD - AliyunPipelineConfig

Logtail設定の作成

重要

LogtailコンポーネントV0.5.1以降のみがAliyunPipelineConfigをサポートしています。

Logtail設定を作成するには、AliyunPipelineConfig CRDからCRを作成するだけです。 Logtail設定が作成されると、自動的に適用されます。 CRに基づいて作成されたLogtail設定を変更する場合は、CRを変更する必要があります。

  1. クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続します

  2. 次のコマンドを実行して、YAMLファイルを作成します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    vim cube.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。

    重要
    • configNameパラメーターの値は、Logtailコンポーネントのインストールに使用するSimple Log Serviceプロジェクトで一意である必要があります。

    • Logtail設定ごとにCRを設定する必要があります。 複数のCRが同じLogtail設定に関連付けられている場合、最初のCR以外のCRは有効になりません。

    • AliyunPipelineConfig CRDに関連するパラメーターの詳細については、「 (推奨) AliyunPipelineConfigを使用してLogtail構成を管理する」をご参照ください。 この例では、Logtail設定にテキストログ収集の設定が含まれています。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。

    • config.flushers.Logstoreパラメーターで指定されたLogstoreが存在することを確認します。 spec.logstoreパラメーターを設定して、Logstoreを自動的に作成できます。

    特定のコンテナから単一行のテキストログを収集する

    この例では、example-k8s-fileという名前のLogtail設定が作成され、クラスター内のappを含む名前のコンテナーから1行のテキストログが収集されます。 ファイルはtest.LOGで、パスは /data/logs/app_1です。

    収集されたログは、k8s-log-testという名前のプロジェクトに属するk8s-fileという名前のLogstoreに保存されます。

    apiVersion: telemetry.alibabacloud.com/v1alpha1
    # Create a CR from the ClusterAliyunPipelineConfig CRD.
    kind: ClusterAliyunPipelineConfig
    metadata:
      # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. The name is the same as the name of the Logtail configuration that is created.
      name: example-k8s-file
    spec:
      # Specify the project to which logs are collected.
      project:
        name: k8s-log-test
      # Create a Logstore to store logs.
      logstores:
        - name: k8s-file
      # Configure the parameters for the Logtail configuration.
      config:
        # Configure the Logtail input plug-ins.
        inputs:
          # Use the input_file plug-in to collect text logs from containers.
          - Type: input_file
            # Specify the file path in the containers.
            FilePaths:
              - /data/logs/app_1/**/test.LOG
            # Enable the container discovery feature. 
            EnableContainerDiscovery: true
            # Add conditions to filter containers. Multiple conditions are evaluated by using a logical AND. 
            ContainerFilters:
              # Specify the namespace of the pod to which the required containers belong. Regular expression matching is supported. 
              K8sNamespaceRegex: default
              # Specify the name of the required containers. Regular expression matching is supported. 
              K8sContainerRegex: ^(.*app.*)$
        # Configure the Logtail output plug-ins.
        flushers:
          # Use the flusher_sls plug-in to send logs to a specific Logstore. 
          - Type: flusher_sls
            # Make sure that the Logstore exists.
            Logstore: k8s-file
            # Make sure that the endpoint is valid.
            Endpoint: cn-hangzhou.log.aliyuncs.com
            Region: cn-hangzhou
            TelemetryType: logs

    すべてのコンテナから複数行のテキストログを収集し、正規表現を使用してログを解析する

    この例では、クラスター内のすべてのコンテナーから複数行のテキストログを収集するために、example-k8sファイルという名前のLogtail設定が作成されます。 ファイルはtest.LOGで、パスは /data/logs/app_1です。 収集されたログはJSONモードで解析され、k8s-log-testという名前のプロジェクトに属するk8s-fileという名前のLogstoreに保存されます。

    次の例で提供されるサンプルログは、{"content": "2024-06-19 16:35:00 INFOテストログ \nline-1\nline-2\nend"} の形式でinput_fileプラグインによって読み取られます。 次に、ログは正規表現に基づいて {"time": "2024-06-19 16:35:00" 、"level": "INFO" 、"msg": "test log\nline-1\nline-2\nend"} に解析されます。

    apiVersion: telemetry.alibabacloud.com/v1alpha1
    # Create a CR from the ClusterAliyunPipelineConfig CRD.
    kind: ClusterAliyunPipelineConfig
    metadata:
      # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. The name is the same as the name of the Logtail configuration that is created.
      name: example-k8s-file
    spec:
      # Specify the project to which logs are collected.
      project:
        name: k8s-log-test
      # Create a Logstore to store logs.
      logstores:
        - name: k8s-file
      # Configure the parameters for the Logtail configuration.
      config:
        # Specify the sample log. You can leave this parameter empty.
        sample: |
          2024-06-19 16:35:00 INFO test log
          line-1
          line-2
          end
        # Configure the Logtail input plug-ins.
        inputs:
          # Use the input_file plug-in to collect multi-line text logs from containers.
          - Type: input_file
            # Specify the file path in the containers.
            FilePaths:
              - /data/logs/app_1/**/test.LOG
            # Enable the container discovery feature. 
            EnableContainerDiscovery: true
            # Enable multi-line log collection.
            Multiline:
              # Specify the custom mode to match the beginning of the first line of a log based on a regular expression.
              Mode: custom
              # Specify the regular expression that is used to match the beginning of the first line of a log.
              StartPattern: \d+-\d+-\d+.*
        # Specify the Logtail processing plug-ins.
        processors:
          # Use the processor_parse_regex_native plug-in to parse logs based on the specified regular expression.
          - Type: processor_parse_regex_native
            # Specify the name of the input field.
            SourceKey: content
            # Specify the regular expression that is used for the parsing. Use capturing groups to extract fields.
            Regex: (\d+-\d+-\d+\s*\d+:\d+:\d+)\s*(\S+)\s*(.*)
            # Specify the fields that you want to extract.
            Keys: ["time", "level", "msg"]
        # Configure the Logtail output plug-ins.
        flushers:
          # Use the flusher_sls plug-in to send logs to a specific Logstore. 
          - Type: flusher_sls
            # Make sure that the Logstore exists.
            Logstore: k8s-file
            # Make sure that the endpoint is valid.
            Endpoint: cn-hangzhou.log.aliyuncs.com
            Region: cn-hangzhou
            TelemetryType: logs
  4. 次のコマンドを実行してLogtail設定を適用します。 Logtail設定が適用されると、Logtailは指定されたコンテナからテキストログの収集を開始し、そのログをSimple Log Serviceに送信します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    kubectl apply -f cube.yaml
    重要

    ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

CRD - AliyunLogConfig

Logtail設定を作成するには、AliyunLogConfig CRDからCRを作成するだけです。 Logtail設定が作成されると、自動的に適用されます。 CRに基づいて作成されたLogtail設定を変更する場合は、CRを変更する必要があります。

  1. クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続します

  2. 次のコマンドを実行して、YAMLファイルを作成します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    vim cube.yaml
  3. YAMLファイルに次のスクリプトを入力し、ビジネス要件に基づいてパラメーターを設定します。

    重要
    • configNameパラメーターの値は、Logtailコンポーネントのインストールに使用するSimple Log Serviceプロジェクトで一意である必要があります。

    • 複数のCRが同じLogtail設定に関連付けられている場合、いずれかのCRを削除または変更すると、Logtail設定が影響を受けます。 CRが削除または変更されると、関連する他のCRのステータスがSimple Log ServiceのLogtail設定のステータスと一致しなくなります。

    • CRパラメーターの詳細については、「AliyunLogConfigを使用したLogtail設定の管理」をご参照ください。 この例では、Logtail設定にテキストログ収集の設定が含まれています。 詳細については、「CreateConfig」をご参照ください。

    特定のコンテナから単一行のテキストログを収集する

    この例では、example-k8s-fileという名前のLogtail構成が作成され、クラスター内の名前がappで始まるすべてのポッドのコンテナーから単一行のテキストログが収集されます。 ファイルはtest.LOGで、パスは /data/logs/app_1です。 収集されたログは、k8s-log-testという名前のプロジェクトに属するk8s-fileという名前のLogstoreに保存されます。

    apiVersion: log.alibabacloud.com/v1alpha1
    kind: AliyunLogConfig
    metadata:
      # Specify the name of the resource. The name must be unique in the current Kubernetes cluster. 
      name: example-k8s-file
      namespace: kube-system
    spec:
      # Specify the name of the project. If you leave this parameter empty, the project named k8s-log-<your_cluster_id> is used.
      project: k8s-log-test
      # Specify the name of the Logstore. If the specified Logstore does not exist, Simple Log Service automatically creates a Logstore. 
      logstore: k8s-file
      # Configure the parameters for the Logtail configuration. 
      logtailConfig:
        # Specify the type of the data source. If you want to collect text logs, set the value to file. 
        inputType: file
        # Specify the name of the Logtail configuration. 
        configName: example-k8s-file
        inputDetail:
          # Specify the simple mode to collect text logs. 
          logType: common_reg_log
          # Specify the log file path. 
          logPath: /data/logs/app_1
          # Specify the log file name. You can use wildcard characters (* and ?) when you specify the log file name. Example: log_*.log. 
          filePattern: test.LOG
          # Set the value to true if you want to collect text logs from containers. 
          dockerFile: true
          # Specify conditions to filter containers.
          advanced:
            k8s:
              K8sPodRegex: '^(app.*)$'
  4. 次のコマンドを実行してLogtail設定を適用します。 Logtail設定が適用されると、Logtailは指定されたコンテナからテキストログの収集を開始し、そのログをSimple Log Serviceに送信します。

    次のコマンドで、cube.yamlはサンプルファイル名です。 ビジネス要件に基づいて別のファイル名を指定できます。

    kubectl apply -f cube.yaml
    重要

    ログを収集したら、インデックスを作成する必要があります。 次に、Logstore内のログを照会および分析できます。 詳細については、「インデックスの作成」をご参照ください。

コンソール

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

  2. [クイックデータのインポート] セクションで、[データのインポート] をクリックします。 [データのインポート] ダイアログボックスで、[Kubernetes-ファイル] カードをクリックします。

    image

  3. 必要なプロジェクトとLogstoreを選択します。 [次へ] をクリックします。 この例では、Logtailコンポーネントのインストールに使用するプロジェクトと、作成するLogstoreを選択します。

  4. [マシングループの設定] ステップで、次の操作を実行します。

    1. ビジネス要件に基づいて、次のいずれかの設定を使用します。

      • Kubernetesクラスター > ACK Daemonset

      • Kubernetesクラスター > DaemonSetモードの自己管理クラスター

        重要

        以降の設定は、前述の設定によって異なります。

    2. 必要なマシングループが [応用サーバーグループ] セクションに追加されていることを確認します。 そして、[次へ] をクリックします。 Container Service for Kubernetes (ACK) クラスターにLogtailコンポーネントをインストールすると、Simple Log Servicek8s-group-${your_k8s_cluster_id} という名前のマシングループを自動的に作成します。 このマシングループを直接使用できます。

      重要
  5. Logtail設定を作成し、[次へ] をクリックします。 Simple Log Serviceは、Logtail設定の作成後にログの収集を開始します。

    説明

    Logtail設定を有効にするには、最大3分かかります。

    グローバル設定

    パラメーター

    説明

    設定名

    Logtail設定の名前を入力します。 名前はプロジェクト内で一意である必要があります。 Logtail設定を作成した後、Logtail設定の名前を変更することはできません。

    ログトピックの種類

    ログトピックを生成する方法を選択します。 詳細については、「ログトピック」をご参照ください。

    • マシングループトピック: マシングループのトピックがログトピックとして使用されます。 異なるマシングループのログを区別する場合は、このオプションを選択します。

    • ファイルパスの抽出: カスタム正規表現を指定する必要があります。 正規表現に一致するファイルパスの一部がログトピックとして使用されます。 異なるソースのログを区別する場合は、このオプションを選択します。

    • カスタム: カスタムログトピックを指定する必要があります。

    高度なパラメータ

    必要に応じて、 グローバル設定に関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。

    入力設定

    パラメーター

    説明

    Logtail展開モード

    Logtailのデプロイモードを選択します。 この例では、Daemonsetが選択されています。

    ファイルパスタイプ

    ログの収集に使用するファイルパスの種類を選択します。 有効な値: コンテナー内のパスとホストパス。 hostPathボリュームがコンテナーにマウントされていて、コンテナーホスト上のマッピングされたファイルパスに基づいてファイルからログを収集する場合は、このパラメーターをホストパスに設定します。 他のシナリオでは、このパラメーターを [コンテナーのパス] に設定します。

    ファイルパス

    • 必要なコンテナーがLinuxホストで実行されている場合は、スラッシュ (/) で始まるパスを指定します。 例: /apsara/nuwa/**/app.Log

    • 必要なコンテナーがWindowsホストで実行されている場合は、ドライブ文字で始まるパスを指定します。 例: C:\Program Files\Intel\**\*.Log

    正確なディレクトリと正確な名前を指定できます。 ワイルドカード文字を使用して、ディレクトリと名前を指定することもできます。 詳細については、「ワイルドカードの一致」をご参照ください。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。

    Simple Log Serviceは、指定されたディレクトリのすべてのレベルで、指定された条件に一致するログファイルをスキャンします。 例:

    • /apsara/nuwa/**/*.logを指定した場合、Simple Log Serviceは、名前の接尾辞が /apsara/nuwaディレクトリとディレクトリの再帰サブディレクトリにログインします。

    • を指定した場合/var/logs/app_*/**/*.logSimple Log Serviceは、次の条件を満たすログファイルからログを収集します。. ログ. ファイルは、/var/logsディレクトリ下のサブディレクトリ、またはサブディレクトリの再帰サブディレクトリに格納されます。 サブディレクトリの名前は、app_* パターンと一致します。

    • /var/log/nginx/**/access * を指定した場合、Simple Log Serviceは、名前が /var/log/nginxディレクトリのaccessで始まるログファイルと、ディレクトリの再帰的なサブディレクトリからログを収集します。

    最大ディレクトリ監視深度

    監視するサブディレクトリのレベルの最大数を指定します。 サブディレクトリは、指定したログファイルディレクトリにあります。 このパラメーターは、ファイルパスの値に含まれるワイルドカード文字 **と一致するサブディレクトリのレベルを指定します。 値が0の場合は、指定したログファイルディレクトリのみを監視することを指定します。

    警告

    最小要件に基づいてこのパラメーターを設定することを推奨します。 大きな値を指定すると、Logtailはより多くのモニタリングリソースを消費し、収集待ち時間を引き起こす可能性があります。

    Container Metadataプレビューの有効化

    [Container Metadata Previewの有効化] をオンにすると、Logtail設定の作成後に、一致したコンテナ情報と完全なコンテナ情報を含むコンテナメタデータを表示できます。

    コンテナフィルタリング

    • Logtailのバージョン

      • Logtailのバージョンが1.0.34より前の場合、環境変数コンテナーラベルのみを使用してコンテナーをフィルター処理できます。

      • Logtailのバージョンが1.0.34以降の場合、異なるレベルのKubernetes情報を使用してコンテナをフィルタリングすることを推奨します。 情報には、K8sポッド名正規マッチングK8s名前空間正規マッチングK8sコンテナ名正規マッチングKubernetesポッドラベルホワイトリストが含まれます。

    • フィルター条件

      重要
      • コンテナラベルは、docker inspectコマンドを実行して取得します。 コンテナラベルはKubernetesラベルとは異なります。 詳細については、「ラベルの取得」をご参照ください。

      • 環境変数は、コンテナーを起動するように設定されている環境変数と同じです。 詳細については、「環境変数の取得」をご参照ください。

      1. Kubernetes名前空間とコンテナー名は、コンテナーラベルにマップできます。 名前空間のラベルはio.kubernetes.pod.nameスペースです。 コンテナ名のラベルはio.kubernetes.container.nameです。 2つのラベルを使用してコンテナをフィルタリングすることを推奨します。 たとえば、ポッドの名前空間はbackend-prodで、ポッド内のコンテナーの名前はworker-serverです。 ワーカーサーバーコンテナのログを収集する場合は、コンテナラベルホワイトリストにio.kubernetes.pod.nameスペース: backend-prodまたはio.kubernetes.container.name : worker-serverを指定できます。

      2. 2つのラベルがビジネス要件を満たさない場合は、環境変数ホワイトリストまたは環境変数ブラックリストを使用してコンテナをフィルタリングできます。

    • K8sポッド名レギュラーマッチング

      ポッド名を入力します。 ポッド名は、テキストログの収集元となるコンテナを指定します。 正規表現マッチングがサポートされています。 たとえば、^(nginx-log-demo.*)$ を指定すると、nginx-log-demoで始まる名前のポッド内のすべてのコンテナが一致します。

    • K8s名前空間正規マッチング

      名前空間名を入力します。 名前空間名は、テキストログの収集元となるコンテナを指定します。 正規表現マッチングがサポートされています。 たとえば、^(default | nginx)$ を指定すると、nginx名前空間とdefault名前空間のすべてのコンテナーが一致します。

    • K8sコンテナ名レギュラーマッチング

      コンテナ名を入力します。 コンテナ名は、テキストログの収集元となるコンテナを指定します。 正規表現マッチングがサポートされています。 Kubernetesコンテナ名はspec.containersで定義されています。 たとえば、^(container-test)$ を指定すると、名前がcontainer-testであるすべてのコンテナが一致します。

    • 容器ラベルのホワイトリスト

      コンテナーラベルのホワイトリストを設定します。 ホワイトリストは、テキストログの収集元となるコンテナを指定します。

      Label Nameパラメーターに重複する値を指定しないでください。 重複する値を指定した場合は、1つの値のみが有効になります。

      • [ラベル名] パラメーターに値を指定し、[ラベル値] パラメーターに値を指定しない場合、指定したラベル名がコンテナーラベルに含まれるコンテナーが一致します。

      • [ラベル名] パラメーターと [ラベル値] パラメーターに値を指定した場合、指定された [ラベル名: ラベル値] を含むコンテナラベルを持つコンテナが一致します。

        デフォルトでは、Label Valueパラメーターの値に対して文字列照合が実行されます。 コンテナは、コンテナラベルの値がLabel Valueパラメーターの値と同じである場合にのみ一致します。 ラベル値パラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、Label Nameパラメーターをappに設定し、Label Valueパラメーターを ^(test1 | test2)$ に設定した場合、コンテナラベルにapp:test1またはapp:test2が含まれるコンテナが一致します。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアの1つで構成されるコンテナーラベルがコンテナーにある場合、コンテナーは照合されます。

    • Container Labelブラックリスト

      コンテナーラベルブラックリストを設定します。 ブラックリストは、テキストログが収集されないコンテナを指定します。

      Label Nameパラメーターに重複する値を指定しないでください。 重複する値を指定した場合は、1つの値のみが有効になります。

      • [ラベル名] パラメーターに値を指定し、[ラベル値] パラメーターに値を指定しない場合、指定したラベル名がコンテナーラベルに含まれるコンテナーは除外されます。

      • [ラベル名] パラメーターと [ラベル値] パラメーターに値を指定した場合、指定された [ラベル名: ラベル値] がコンテナーラベルに含まれるコンテナーは除外されます。

        デフォルトでは、Label Valueパラメーターの値に対して文字列照合が実行されます。 コンテナラベルの値がラベル値パラメーターの値と同じである場合にのみ、コンテナが除外されます。 ラベル値パラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、Label Nameパラメーターをappに設定し、Label Valueパラメーターを ^(test1 | test2)$ に設定した場合、コンテナラベルにapp:test1またはapp:test2が含まれるコンテナは除外されます。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアのいずれかで構成されるコンテナーラベルがコンテナーに含まれている場合、コンテナーは除外されます。

    • 環境変数ホワイトリスト

      環境変数ホワイトリストを設定します。 ホワイトリストは、テキストログの収集元となるコンテナを指定します。

      • 環境変数名パラメーターに値を指定し、環境変数値パラメーターに値を指定しない場合、指定された環境変数名が環境変数に含まれるコンテナーが一致します。

      • [環境変数名] パラメーターと [環境変数値] パラメーターの値を指定した場合、環境変数に指定された環境変数名: 環境変数値が含まれるコンテナーが一致します。

        デフォルトでは、環境変数値パラメーターの値に対して文字列照合が実行されます。 コンテナは、環境変数の値が環境変数値パラメーターの値と同じである場合にのみ一致します。 環境変数値パラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、環境変数名パラメーターをNGINX_SERVICE_PORTに設定し、環境変数値パラメーターを ^(80 | 6379)$ に設定した場合、ポート番号が80 6379のコンテナーが一致します。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアの1つで構成される環境変数がコンテナーにある場合、コンテナーは照合されます。

    • 環境変数ブラックリスト

      環境変数ブラックリストを設定します。 ブラックリストは、テキストログが収集されないコンテナを指定します。

      • 環境変数名パラメーターに値を指定し、環境変数値パラメーターに値を指定しない場合、指定された環境変数名が環境変数に含まれるコンテナーは除外されます。

      • 環境変数名および環境変数値パラメーターに値を指定した場合、指定された環境変数名: 環境変数値が環境変数に含まれるコンテナーは除外されます。

        デフォルトでは、環境変数値パラメーターの値に対して文字列照合が実行されます。 コンテナは、環境変数の値が環境変数の値パラメーターの値と同じである場合にのみ除外されます。 環境変数値パラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、環境変数名パラメーターをNGINX_SERVICE_PORTに設定し、環境変数値パラメーターを ^(80 | 6379)$ に設定した場合、ポート番号が80 6379のコンテナーは除外されます。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアの1つで構成される環境変数がコンテナーにある場合、コンテナーは除外されます。

    • Kubernetes Podラベルホワイトリスト

      Kubernetesポッドラベルのホワイトリストを設定します。 ホワイトリストは、テキストログの収集元となるコンテナを指定します。

      • [ラベル名] パラメーターに値を指定し、[ラベル値] パラメーターに値を指定しないと、指定したラベル名がポッドラベルに含まれるコンテナーが一致します。

      • [ラベル名] パラメーターと [ラベル値] パラメーターに値を指定した場合、指定された [ラベル名: ラベル値] を含むポッドラベルを持つコンテナーが一致します。

        デフォルトでは、Label Valueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、ポッドラベルの値がラベル値パラメーターの値と同じである場合にのみ一致します。 キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、Label Nameパラメーターをenvironmentに設定し、Label Valueパラメーターを ^(dev | pre)$ に設定した場合、ポッドラベルにenvironment:devまたはenvironment:preが含まれるコンテナーが一致します。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアのいずれかで構成されるポッドラベルがコンテナーに含まれている場合、コンテナーは照合されます。

    • Kubernetesポッドラベルブラックリスト

      Kubernetesポッドラベルブラックリストを設定します。 ブラックリストは、テキストログが収集されないコンテナを指定します。

      • [ラベル名] パラメーターに値を指定し、[ラベル値] パラメーターに値を指定しない場合、指定されたラベル名がポッドラベルに含まれるコンテナーは除外されます。

      • [ラベル名] パラメーターと [ラベル値] パラメーターに値を指定すると、指定されたラベル名: ラベル値がポッドのラベルに含まれるコンテナーが除外されます。

        デフォルトでは、Label Valueパラメーターの値に対して文字列照合が実行されます。 コンテナーは、ポッドラベルの値がラベル値パラメーターの値と同じである場合にのみ除外されます。 ラベル値パラメーターに、キャレット (^) で始まり、ドル記号 ($) で終わる値を指定した場合、正規表現マッチングが実行されます。 たとえば、Label Nameパラメーターをenvironmentに設定し、Label Valueパラメーターを ^(dev | pre)$ に設定した場合、ポッドラベルにenvironment:devまたはenvironment:preが含まれるコンテナーは除外されます。

      キーと値のペアは、OR演算子を使用して評価されます。 指定されたキーと値のペアのいずれかで構成されるポッドラベルがコンテナーに含まれている場合、コンテナーは除外されます。

    ログタグの強化

    環境変数とポッドラベルを使用してログタグを指定します。

    ファイルのエンコード

    ログファイルのエンコード形式を選択します。

    最初のコレクションサイズ

    Logtailがファイルからログを最初に収集するときに、Logtailがログファイルから収集できるデータのサイズを指定します。 First Collection Sizeのデフォルト値は1024です。 (単位:KB)

    • ファイルサイズが1,024 KB未満の場合、Logtailはファイルの先頭からデータを収集します。

    • ファイルサイズが1,024 KBを超える場合、Logtailはファイル内の最後の1,024 KBのデータを収集します。

    ビジネス要件に基づいて、最初のコレクションサイズを指定できます。 有効な値: 0 ~ 10485760 (単位:KB)

    コレクションブラックリスト

    [コレクションブラックリスト] をオンにする場合、ブラックリストを設定して、Simple Log Serviceがログを収集するときにスキップするディレクトリまたはファイルを指定する必要があります。 正確なディレクトリとファイル名を指定できます。 ワイルドカード文字を使用して、ディレクトリとファイル名を指定することもできます。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。

    重要
    • ワイルドカード文字を使用してファイルパスを設定し、指定したディレクトリ内の一部のディレクトリをスキップする場合は、Collection Blacklistを設定して完全なディレクトリを入力する必要があります。

      たとえば、[ファイルパス]/home/admin/app */log/*.logに設定し、/home/admin/app1 * ディレクトリ内のすべてのサブディレクトリをスキップする場合は、[ディレクトリブラックリスト] を選択し、[ディレクトリ名] フィールドに /home/admin/app1 */** と入力する必要があります。 /home/admin/app1 * と入力した場合、ブラックリストは有効になりません。

    • ブラックリストが使用されているとき、計算オーバーヘッドが生成される。 ブラックリストには最大10エントリを追加することを推奨します。

    • スラッシュ (/) で終わるディレクトリパスは指定できません。 たとえば、パスを /home/admin/dir1/ に設定した場合、ディレクトリのブラックリストは有効になりません。

    次の種類のブラックリストがサポートされています: ファイルパスブラックリスト、ファイルブラックリスト、およびディレクトリブラックリスト。

    ファイルパスブラックリスト

    • [File Path Blacklist] を選択し、[File Path Name] フィールドに /home/admin/private *.logと入力すると、名前の接頭辞がprivate、接尾辞がであるすべてのファイルが表示されます。/home/admin/ ディレクトリへのログインはスキップされます。

    • [File Path Blacklist] を選択し、[File Path Name] フィールドに /home/admin/private */*_inner.logと入力した場合、/home/admin/ ディレクトリのプレフィックスがprivateであるサブディレクトリの_inner.logで名前がサフィックスされているファイルはすべてスキップされます。 たとえば、/home/admin/private/app_inner.logファイルはスキップされますが、/home/admin/private/app.logファイルはスキップされません。

    ファイルブラックリスト

    [File Blacklist] を選択し、[File Name] フィールドにapp_inner.logと入力すると、名前がapp_inner.logであるすべてのファイルがスキップされます。

    ディレクトリブラックリスト

    • [Directory Blacklist] を選択し、[Directory Name] フィールドに /home/admin/dir1と入力すると、/home/admin/dir1ディレクトリ内のすべてのファイルがスキップされます。

    • [Directory Blacklist] を選択し、[Directory Name] フィールドに /home/admin/dir * と入力した場合、/home/admin/ ディレクトリの名前の先頭にdirが付いているすべてのサブディレクトリのファイルはスキップされます。

    • [Directory Blacklist] を選択し、[Directory Name] フィールドに /home/admin/*/dirと入力した場合、/home/admin/ ディレクトリの各第2レベルのサブディレクトリのdirサブディレクトリにあるすべてのファイルがスキップされます。 たとえば、/home/admin/a/dirディレクトリのファイルはスキップされますが、/home/admin/a/b/dirディレクトリのファイルはスキップされません。

    ファイルの複数回の収集を許可

    デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 複数のLogtail設定を使用してログファイルからログを収集するには、[ファイルの複数回の収集を許可] をオンにします。

    高度なパラメータ

    Logtail設定の特定のパラメーターを手動で設定する必要があります。 詳細については、「Logtailパイプライン設定の作成」をご参照ください。

    プロセッサ構成

    パラメーター

    説明

    ログのサンプル

    実際のシナリオから収集されたサンプルログを追加します。 サンプルログを使用して、ログ処理に関連するパラメーターを簡単に設定できます。 複数のサンプルログを追加できます。 ログの長さの合計が1,500文字を超えないようにしてください。

    [2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened
        at TestPrintStackTrace.f(TestPrintStackTrace.java:3)
        at TestPrintStackTrace.g(TestPrintStackTrace.java:7)
        at TestPrintStackTrace.main(TestPrintStackTrace.java:16)

    マルチラインモード

    • 複数行のログの種類を指定します。 複数行のログは、複数の連続した行にまたがっています。 このパラメーターを設定して、ログファイル内の各複数行ログを識別できます。

      • カスタム: 複数行のログは、Regex to Match First lineの値に基づいて識別されます。

      • 複数行のJSON: 各JSONオブジェクトは複数行に展開されます。 例:

        {
          "name": "John Doe",
          "age": 30,
          "address": {
            "city": "New York",
            "country": "USA"
          }
        }
    • 分割が失敗した場合の処理方法を設定します。

      Exception in thread "main" java.lang.NullPointerException
          at com.example.MyClass.methodA(MyClass.java:12)
          at com.example.MyClass.methodB(MyClass.java:34)
          at com.example.MyClass.main(MyClass.java:½0)

      上記のサンプルログの場合、Simple log Serviceはログを破棄するか、ログの分割に失敗した場合に1行ずつログとして保持します。

      • 破棄: ログは破棄されます。

      • 1行の保持: ログテキストの各行はログとして保持されます。 合計4つのログが保持されます。

    処理方法

    [プロセッサ] を選択します。 データ処理用にネイティブプラグイン拡張プラグインを追加できます。 データ処理用のLogtailプラグインの詳細については、「Logtailプラグインの概要」をご参照ください。

    重要

    データ処理のLogtailプラグインの制限があります。 詳細については、Simple Log Serviceコンソールの画面上の手順を参照してください。

    • Logtail V2.0

      • データ処理用のネイティブプラグインを任意に組み合わせることができます。

      • ネイティブプラグインと拡張プラグインを組み合わせることができます。 拡張プラグインがネイティブプラグインの後に追加されていることを確認します。

    • V2.0より前のLogtail

      • ネイティブプラグインと拡張プラグインを同時に追加することはできません。

      • ネイティブプラグインは、テキストログの収集にのみ使用できます。 ネイティブプラグインを追加するときは、次の項目に注意してください。

        • データ処理には、データ解析 (Regexモード) 、データ解析 (デリミターモード) 、データ解析 (JSONモード) 、データ解析 (NGINXモード) 、データ解析 (Apacheモード) 、データ解析 (IISモード) のいずれかを最初のプラグインとして追加する必要があります。

        • 最初のプラグインを追加した後、時間解析プラグイン、データフィルタリングプラグイン、および複数のデータマスキングプラグインを追加できます。

      • [解析が失敗した場合に元のフィールドを保持する] および [解析が成功した場合に元のフィールドを保持する] パラメーターを設定する場合、次のパラメーターの組み合わせのみを使用できます。 他のパラメーターの組み合わせでは、Simple Log Serviceは設定の効果を保証しません。

        • 解析されたログをアップロードします。

          image

        • 解析が成功した場合は解析後に取得したログをアップロードし、解析が失敗した場合は生ログをアップロードします。

          image

        • 解析後に取得したログをアップロードし、解析が成功した場合は生ログフィールドをログに追加し、解析が失敗した場合は生ログをアップロードします。

          たとえば、生ログが "content": "{" request_method ":" GET ", " request_time ":" 200 "}" で、生ログが正常に解析された場合、システムは、解析後に取得されたログに生ログフィールドを追加します。 生のログフィールドは、[元のフィールドの新しい名前] パラメーターで指定します。 パラメーターを設定しない場合は、元のフィールド名が使用されます。 フィールド値は {"request_method":"GET", "request_time":"200"} です。

          image

  6. インデックスの作成プレビュー 次に、[次へ] をクリックします。 デフォルトでは、Simple Log Serviceでフルテキストインデックスが有効になっています。 手動モードまたは自動モードで収集したログに基づいてフィールドインデックスを設定することもできます。 自動モードでフィールドインデックスを設定するには、[自動インデックス生成] をクリックします。 これにより、Simple Log Serviceは自動的にフィールドインデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。

    重要

    ログのすべてのフィールドをクエリする場合は、フルテキストインデックスを使用することを推奨します。 特定のフィールドのみをクエリする場合は、フィールドインデックスを使用することを推奨します。 これは、インデックストラフィックを減らすのに役立ちます。 フィールドを分析する場合は、フィールドインデックスを作成する必要があります。 分析のために、クエリ文にSELECT文を含める必要があります。

  7. [クエリログ] をクリックします。 次に、Logstoreのクエリと分析ページにリダイレクトされます。

    インデックスが有効になるまで約1分待つ必要があります。 次に、収集したログを [生ログ] タブで表示できます。 詳細については、「ログの照会と分析」をご参照ください。

環境変数

1. アプリケーション作成時のSimple Log Serviceの設定

ACKコンソールの使用

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. [デプロイメント] ページで、[名前空間] ドロップダウンリストから名前空間を選択します。 次に、ページの右上隅にある [画像から作成] をクリックします。

  4. [基本情報] ウィザードページで、[名前][レプリカ] 、および [タイプ] を指定します。 次に、[次へ] をクリックして、コンテナーウィザードページに移動します。

    次のセクションでは、Simple Log Serviceに関連するパラメーターのみについて説明します。 その他のアプリケーションパラメーターの詳細については、「デプロイの作成」をご参照ください。

  5. [ログ] セクションで、ログ収集パラメーターを設定します。

    1. [コレクション設定] を設定します。

      プラス記号 ([+]) をクリックして設定エントリを追加します。 各設定エントリは、Logstoreコンテナーのログパス (stdoutに設定可能) パラメーターで構成されます。

      • Logstore: 収集したログデータの保存に使用するLogstoreの名前を指定します。 Logstoreが存在しない場合、ACKはACKクラスターに関連付けられているSimple Log ServiceプロジェクトにLogstoreを自動的に作成します。

        説明

        Logstoreのデフォルトのログ保存期間は90日です。

      • コンテナー内のログパス (stdoutに設定可能): ログデータを収集するパス。 /usr/local/tomcat/logs/catalina.*.logの値は、Tomcatアプリケーションのログファイルが収集されていることを示します。

        説明

        値をstdoutに設定すると、stdoutとstderrが収集されます。

        すべての設定は、対応するLogstoreに設定エントリとして追加されます。 デフォルトでは、ログはシンプルモード (行単位) で収集されます。 他の方法でログデータを収集する場合は、「DaemonSetモードでKubernetesコンテナーからテキストログを収集する」および「DaemonSetモードでKubernetesコンテナーからstdoutとstderrを収集する」をご参照ください。

      采集配置

    2. [カスタムタグ] を設定します。

      プラス記号 ([+]) をクリックしてカスタムタグを追加します。 各タグは、収集されたログデータに追加されるキーと値のペアです。 カスタムタグを使用して、ログデータをマークできます。 たとえば、タグを使用してアプリケーションのバージョンを示すことができます。

      自定义tag

  6. パラメーターを設定したら、[次へ] をクリックして詳細設定を設定します。

    後続の手順の詳細については、「デプロイの作成」をご参照ください。

YAMLテンプレートの使用

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[ワークロード] > [デプロイ] を選択します。

  3. [デプロイメント] ページで、[名前空間] ドロップダウンリストから名前空間を選択します。 次に、ページの右上隅にある [YAMLから作成] をクリックします。

  4. YAMLテンプレートを設定します。

    YAMLテンプレートは、Kubernetes構文に準拠しています。 envを使用して、ログ収集設定カスタムタグを定義できます。 volumeMountsおよびvolumesパラメーターも設定する必要があります。 次のサンプルコードは、ポッド設定の例を示しています。

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-demo
    spec:
      containers:
      - name: my-demo-app
        image: 'registry.cn-hangzhou.aliyuncs.com/log-service/docker-log-test:latest'
        env:
        # Specify environment variables.
        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log
        - name: aliyun_logs_mytag1_tags
          value: tag1=v1
        # Configure volume mounting.
        volumeMounts:
        - name: volumn-sls-mydemo
          mountPath: /var/log
        # If the pod is repetitively restarted, you can add a sleep command to the startup parameters of the pod.
        command: ["sh", "-c"]  # Run commands in the shell.
        args: ["sleep 3600"]   # Make the pod sleep 3,600 seconds (1 hour).
      volumes:
      - name: volumn-sls-mydemo
        emptyDir: {}

    ビジネス要件に基づいて、次の手順を順番に実行します。

    説明

    他のログ収集要件がある場合は、2をご参照ください。 環境変数を使用して詳細設定を構成します。

    1. 環境変数を使用して、ログ収集設定カスタムタグを追加します。 ログ収集に関連するすべての環境変数は、プレフィックスとしてaliyun_logs_ を使用する必要があります。

      • 環境変数を次の形式で追加します。

        - name: aliyun_logs_log-stdout
          value: stdout
        - name: aliyun_logs_log-varlog
          value: /var/log/*.log                        

        上記の例では、次の形式の2つの環境変数がログ収集設定に追加されています。aliyun_logs_{key} 。 環境変数の {keys} は、log-stdoutlog-varlogです。

        • aliyun_logs_log-stdout環境変数は、log-stdoutという名前のLogstoreが作成され、コンテナーから収集されたstdoutを格納することを示します。 収集設定の名前はlog-stdoutです。 これにより、コンテナーのstdoutがlog-stdoutという名前のLogstoreに収集されます。

        • aliyun_logs_log-varlog環境変数は、コンテナーから収集された /var/log/*.logファイルを格納するために、log-varlogという名前のLogstoreが作成されることを示します。 収集設定の名前はlog-varlogです。 これにより、/var/log/*.logファイルは、log-varlogという名前のLogstoreに収集されます。

      • 次の形式でカスタムタグを追加します。

        - name: aliyun_logs_mytag1_tags
          value: tag1=v1                       

        タグが追加されると、タグはコンテナから収集されたログデータに自動的に追加されます。 mytag1は、アンダースコアなしのタグ名 (_) を指定します。

    2. stdout以外のログファイルを収集するログパスを指定する場合は、volumeMountsパラメーターを設定する必要があります。

      上記のYAMLテンプレートでは、volumeMountsのmountPathフィールドは /var/logに設定されています。 これにより、Logtailは /var/log/*.logファイルからログデータを収集できます。

  5. YAMLテンプレートを変更した後、[作成] をクリックして設定を送信します。

2. 環境変数を使用して詳細設定を構成する

コンテナー環境変数を設定して、ログ収集をカスタマイズできます。 環境変数を使用して、ログ収集要件を満たすように詳細設定を構成できます。

重要

エッジコンピューティングシナリオでは、環境変数を使用してログ収集を構成することはできません。

変数

説明

補足

aliyun_logs_{key}

  • この変数は必須です。 {key} には、小文字、数字、ハイフン (-) のみを使用できます。

  • 指定されたaliyun_logs_{key}_logstoreが存在しない場合、{key} という名前のLogstoreが作成されます。

  • コンテナーのstdoutを収集するには、値をstdoutに設定します。 値をコンテナー内のパスに設定して、ログファイルを収集することもできます。

  • - name: aliyun_logs_catalina
    
      value: stdout
  • - name: aliyun_logs_access-log
    
      value: /var/log/nginx/access.log

aliyun_logs_{key}_tags

この変数はオプションです。 この変数は、ログデータにタグを追加するために使用されます。 値は {tag-key }={ tag-value} の形式である必要があります。

- name: aliyun_logs_catalina_tags

  value: app=catalina

非該当

aliyun_logs_{key}_project

この変数はオプションです。 変数は、Simple Log Serviceのプロジェクトを指定します。 デフォルトのプロジェクトは、クラスターの作成時に指定したプロジェクトです。

- name: aliyun_logs_catalina_project

  value: my-k8s-project

プロジェクトはLogtailと同じリージョンにデプロイする必要があります。

aliyun_logs_{key}_logstore

この変数はオプションです。 この変数は、Simple Log ServiceのLogstoreを指定します。 デフォルトでは、Logstoreの名前は {key} です。

- name: aliyun_logs_catalina_logstore

  value: my-logstore

非該当

aliyun_logs_{key}_shard

この変数はオプションです。 この変数は、Logstoreのシャードの数を指定します。 有効な値: 1 ~ 10。 デフォルト値:2

説明

指定したLogstoreが既に存在する場合、この変数は有効になりません。

- name: aliyun_logs_catalina_shard

  value: '4'

非該当

aliyun_logs_{key}_ttl

この変数はオプションです。 変数は、ログの保持期間を指定します。 有効な値: 1 ~ 3650

  • ログデータを永続的に保持するには、値を3650に設定します。

  • デフォルトの保持期間は90日です。

説明

指定したLogstoreが既に存在する場合、この変数は有効になりません。

- name: aliyun_logs_catalina_ttl

  value: '3650'

非該当

aliyun_logs_{key}_machinegroup

この変数はオプションです。 この変数は、アプリケーションがデプロイされるノードグループを指定します。 デフォルトのノードグループは、Logtailがデプロイされているノードグループです。 変数の使用方法の詳細については、「シナリオ2: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにログデータを保存する」をご参照ください。

- name: aliyun_logs_catalina_machinegroup

  value: my-machine-group

非該当

aliyun_logs_{key}_logstoremode

この変数はオプションです。 この変数は、Logstoreのタイプを指定します。 デフォルト値: standard。 有効な値:

説明

指定したLogstoreが既に存在する場合、この変数は有効になりません。

  • standard: 標準Logstore。 このタイプのLogstoreはログ分析機能をサポートしており、リアルタイムモニタリングやインタラクティブ分析などのシナリオに適しています。 このタイプのLogstoreを使用して、包括的な可観測性システムを構築することもできます。

  • query: Logstoreを照会します。 このタイプのLogstoreは、高性能なクエリをサポートします。 クエリLogstoreのインデックストラフィック料金は、標準のLogstoreの約半分です。 クエリLogstoreはSQL分析をサポートしていません。 クエリログストアは、データ量が多い、ログの保持期間が長い、またはログ分析が不要なシナリオに適しています。 ログが数週間または数か月保存される場合、ログの保持期間は長いと見なされます。

  • - name: aliyun_logs_catalina_logstoremode
      value: standard 
  • - name: aliyun_logs_catalina_logstoremode
      value: query 

この変数を使用するには、logtail-dsイメージのバージョンが1.3.1以降であることを確認します。

  • シナリオ1: 複数のアプリケーションからログデータを収集し、同じログストアにデータを保存する

    このシナリオでは、aliyun_logs_{key}_logstore変数を設定します。 次の例は、2つのアプリケーションからstdoutを収集し、出力をstdout-logstoreに格納する方法を示しています。

    アプリケーション1の {key}app1-stdoutに設定されています。 アプリケーション2の {key}app2-stdoutに設定されています。

    アプリケーション1の次の環境変数を設定します。

    # Specify environment variables.
        - name: aliyun_logs_app1-stdout
          value: stdout
        - name: aliyun_logs_app1-stdout_logstore
          value: stdout-logstore

    アプリケーション2の次の環境変数を設定します。

    # Specify environment variables.
        - name: aliyun_logs_app2-stdout
          value: stdout
        - name: aliyun_logs_app2-stdout_logstore
          value: stdout-logstore
  • シナリオ2: 異なるアプリケーションからログデータを収集し、異なるプロジェクトにデータを保存する

    このシナリオでは、次の手順を実行します。

    1. 各プロジェクトにマシングループを作成し、次の形式でマシングループのカスタム識別子を設定します。k8s-group-{cluster-id} ({cluster-id} はクラスターのID) 。 カスタムマシングループ名を指定できます。

    2. 各アプリケーションの環境変数に、プロジェクト、Logstore、およびマシングループを指定します。 マシングループの名前は、前の手順で作成したものと同じです。

      次の例では、アプリケーション1の {key}app1-stdoutに設定されています。 アプリケーション2の {key}app2-stdoutに設定されています。 2つのアプリケーションが同じACKクラスターにデプロイされている場合、アプリケーションに同じマシングループを使用できます。

      アプリケーション1の次の環境変数を設定します。

      # Specify environment variables.
          - name: aliyun_logs_app1-stdout
            value: stdout
          - name: aliyun_logs_app1-stdout_project
            value: app1-project
          - name: aliyun_logs_app1-stdout_logstore
            value: app1-logstore
          - name: aliyun_logs_app1-stdout_machinegroup
            value: app1-machine-group

      アプリケーション2の次の環境変数を設定します。

      # Specify environment variables for Application 2.
          - name: aliyun_logs_app2-stdout
            value: stdout
          - name: aliyun_logs_app2-stdout_project
            value: app2-project
          - name: aliyun_logs_app2-stdout_logstore
            value: app2-logstore
          - name: aliyun_logs_app2-stdout_machinegroup
            value: app1-machine-group

ステップ3: ログの照会と分析

Logtailによって収集されたコンテナログは、Simple Log ServiceのLogstoreに保存されます。 ログは、Simple Log ServiceコンソールまたはACKコンソールで表示できます。 クエリ構文の詳細については、「ログクエリと分析の概要」をご参照ください。

ACKコンソール

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

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[操作] > [ログセンター] を選択します。

  3. [ログセンター] ページで、[アプリケーションログ] タブをクリックし、フィルター条件を指定します。 次に、[Logstoreの選択] をクリックして、コンテナーのログを表示します。

Simple Log Serviceコンソール

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

  2. [プロジェクト] セクションで、Kubernetesクラスターに関連付けられているプロジェクトをクリックし、[ログストア] タブに移動します。 デフォルトでは、プロジェクト名はk8s-log-{KubernetesクラスターID} の形式です。

  3. Logstoreリストで、ログ収集の設定時に指定されたLogstoreを見つけます。 Logstore名の上にポインタを移動し、アイコンをクリックしbuttonます。 次に、[検索と分析] をクリックします。

    この例では、Tomcatアプリケーションのstdoutとコンテナーのテキストログファイルを表示できます。 また、収集したログデータにカスタムタグが追加されていることも確認できます。

コンテナテキストログのデフォルトフィールド

次の表に、各コンテナテキストログにデフォルトで含まれるフィールドを示します。

フィールド名

説明

__タグ __:__ ホスト名__

コンテナーホストの名前。

__tag __:__ path__

コンテナー内のログファイルのパス。

__tag __:_ container_ip_

コンテナーのIPアドレス。

__タグ __:_ image_name_

コンテナーで使用されるイメージの名前。

__tag __:_ pod_name_

ポッドの名前。

__tag __:_ 名前空間_

ポッドが属する名前空間。

__tag __:_ pod_uid_

ポッドの一意識別子 (UID) 。

関連ドキュメント