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

Simple Log Service:Docker コンテナーログの収集 (標準出力/ファイル)

最終更新日:Mar 01, 2026

コンテナー化された環境では、アプリケーションログが異なる Docker コンテナーの標準出力とログファイルに分散しているため、管理と取得が困難になります。Simple Log Service (SLS) の LoongCollector を使用して、複数のノードからの一元的なログ収集、集中ストレージ、構造化解析、データマスキング、フィルタリング、および効率的なクエリと分析を実現します。

注意事項

  • 権限要件:デプロイに使用する Alibaba Cloud アカウントまたは RAM ユーザーには、AliyunLogFullAccess 権限が必要です。

  • Docker バージョンと LoongCollector の要件:

    • Docker Engine のバージョンが 29.0 以降、またはサポートされる最小 Docker API バージョンが 1.42 以降の場合、LoongCollector 3.2.4 以降を使用する必要があります。そうでない場合、LoongCollector はコンテナーの標準出力やファイルログを収集できません。

    • LoongCollector のバージョン 3.2.4 以降は、Docker API バージョン 1.24 から 1.48 までをサポートします。

    • LoongCollector のバージョン 3.2.3 以前は、Docker API バージョン 1.18 から 1.41 までをサポートします。

  • 標準出力収集の制限:

    • Docker 構成ファイル daemon.json"log-driver": "json-file" を追加する必要があります。

    • CentOS 7.4 以降のバージョン (CentOS 8.0 を除く) では、fs.may_detach_mounts=1 を設定する必要があります。

  • テキストログ収集の制限: overlay および overlay2 ストレージドライバーのみがサポートされています。他のドライバータイプの場合、ログディレクトリを手動でマウントする必要があります。

収集構成の作成プロセス

  1. 事前準備プロジェクトと Logstore を作成します。プロジェクトは異なるアプリケーションのログを分離するためのリソース管理単位であり、Logstore はログを保存するために使用されます。

  2. マシングループの構成 (LoongCollector のインストール)ログを収集したいサーバーに LoongCollector をインストールし、サーバーをマシングループに追加します。マシングループを使用して、収集ノードを一元管理し、構成を配布し、サーバーの状態を管理します。

  3. ログ収集ルールの作成と構成

    1. グローバル構成と入力構成:収集構成の名前、ログ収集のソースと範囲を定義します。

    2. ログの処理と構造化:ログのフォーマットに基づいて処理ルールを構成します。

      • 複数行ログ:Java の例外スタックや Python のトレースバックなど、単一のログが複数行にまたがる場合に適用されます。各ログの開始を識別するために正規表現を使用する必要があります。

      • 構造化解析:正規表現、区切り文字、または NGINX モードのプラグインなどの解析プラグインを構成して、生の文字列を構造化されたキーと値のペアに抽出します。これにより、後続のクエリと分析が容易になります。

    3. ログフィルタリング:収集ブラックリストとコンテンツフィルタリングルールを構成して、有効なログコンテンツを選別します。この方法は、冗長なデータの転送とストレージを削減します。

    4. ログの分類:トピックとログタグを構成して、異なるアプリケーション、コンテナー、またはパスソースからのログを柔軟に区別します。

  4. クエリと分析の構成:システムはデフォルトでフルテキストインデックスを有効にしており、キーワード検索をサポートします。検索効率を向上させるために、構造化フィールドの正確なクエリと分析のためにフィールドインデックスを有効にすることを推奨します。

  5. 検証とトラブルシューティング:構成が完了したら、ログが正常に収集されていることを確認します。データが収集されない、ハートビートの失敗、解析エラーなどの問題が発生した場合は、「よくある質問」セクションをご参照ください。

事前準備

ログを収集する前に、ログを管理および保存するためのプロジェクトと Logstore を計画し、作成する必要があります。必要なリソースがすでにある場合は、このステップをスキップして「ステップ 1:マシングループの構成 (LoongCollector のインストール)」に進んでください。

プロジェクトの作成

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

  2. [プロジェクトの作成] をクリックし、次のパラメーターを構成します:

    • リージョン:ログソースに基づいてリージョンを選択します。このパラメーターはプロジェクト作成後に変更できません。

    • プロジェクト名:プロジェクト名は Alibaba Cloud 内でグローバルに一意である必要があり、プロジェクト作成後に変更できません。

    • 他のパラメーターはデフォルト設定のままにして、[作成] をクリックします。他のパラメーターの詳細については、「プロジェクトの作成」をご参照ください。

Logstore の作成

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

  2. 左側のナビゲーションウィンドウで、image[ログストレージ] を選択し、[+] をクリックします。

  3. [Logstore の作成] ページで、次のコアパラメーターを構成します:

    • Logstore 名:プロジェクト内で一意の名前を入力します。この名前は Logstore 作成後に変更できません。

    • Logstore タイプ:仕様の比較に基づいて、標準ストレージまたはクエリを選択します。

    • 課金モード

      • 機能別の支払い:ストレージ、インデックス、読み取り/書き込み操作などのリソースに対して個別に課金されます。このモードは、小規模なシナリオや機能の使用量が不確定な場合に適しています。

      • 取り込みデータ量別の支払い:書き込まれた生データの量のみに課金されます。このモードでは、30 日間の無料ストレージと、データ変換や配信などの無料機能が提供されます。このモードは、ストレージ期間が 30 日に近いビジネスシナリオや、データ処理パイプラインが複雑な場合に適しています。

    • データ保持期間:ログを保持する日数を指定します。有効値:1〜3650。値 3650 は永続的なストレージを示します。デフォルト値は 30 です。

    • 他のパラメーターはデフォルト設定のままにして、[OK] をクリックします。他のパラメーターの詳細については、「Logstore の管理」をご参照ください。

ステップ 1:マシングループの構成 (LoongCollector のインストール)

Docker ホストに LoongCollector をコンテナーとしてデプロイし、ホストをマシングループに追加します。マシングループを使用して、複数の収集ノードを一元管理し、構成を配布し、状態を監視します。

  1. イメージのプル

    Docker がインストールされているホストで、次のコマンドを実行して LoongCollector イメージをプルします。ダウンロード速度と安定性を向上させるために、${region_id} をホストのリージョン IDまたは近くのリージョン (例:cn-hangzhou) に置き換えます。

    # LoongCollector イメージアドレス
    docker pull aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun
    
    # Logtail イメージアドレス
    docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyun
  2. LoongCollector コンテナーの起動

    次のコマンドを実行してコンテナーを起動します。ディレクトリを正しくマウントし、必要な環境変数を設定してください:

    docker run -d \
        -v /:/logtail_host:ro \
        -v /var/run/docker.sock:/var/run/docker.sock \
        --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${sls_upload_channel}/ilogtail_config.json \
        --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \
        --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \
        aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun

    パラメーターの説明:

    • ${sls_upload_channel}:ログアップロードチャネル。フォーマットはプロジェクトリージョン-ネットワーク転送タイプです。例:

      転送タイプ

      構成値のフォーマット

      シナリオ

      内部ネットワーク転送

      regionId

      cn-hangzhou

      Elastic Compute Service (ECS) インスタンスとプロジェクトが同じリージョンにある。

      インターネット転送

      regionId-internet

      cn-hangzhou-internet

      • ECS インスタンスとプロジェクトが異なるリージョンにある。

      • サーバーが他のクラウドプロバイダーまたは自己構築のデータセンターからのものである。

      転送アクセラレーション

      regionId-acceleration

      cn-hangzhou-acceleration

      中国内外のリージョン間通信。

    • ${aliyun_account_id}:Alibaba Cloud アカウント ID。

    • ${user_defined_id}:マシングループのカスタム ID。この ID はマシングループをバインドするために使用されます。例えば、user-defined-docker-1 を使用します。ID はリージョン内で一意である必要があります。

      重要

      以下の起動条件を満たす必要があります:

      • 3 つの主要な環境変数が正しく構成されていること:

        ALIYUN_LOGTAIL_CONFIGALIYUN_LOGTAIL_USER_ID、および ALIYUN_LOGTAIL_USER_DEFINED_ID

      • /var/run/docker.sock ディレクトリがマウントされていること。このディレクトリはコンテナーのライフサイクルイベントをリッスンするために使用されます。

      • ルートディレクトリ //logtail_host にマウントされていること。これはホストのファイルシステムにアクセスするために使用されます。

  3. コンテナーの実行状態の確認

    docker ps | grep loongcollector

    期待される出力例:

    6ad510001753   aliyun-observability-release-registry.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun   "/usr/local/ilogtail…"   About a minute ago   Up About a minute             recursing_shirley
  4. マシングループの構成

    左側のナビゲーションウィンドウで、image[リソース] > [マシングループ] を選択し、机器组 > [マシングループの作成] をクリックし、次のパラメーターを構成して [OK] をクリックします:

    • 名前:マシングループのカスタム名を入力します。例:docker-host-group

    • マシングループ識別子[カスタム識別子] を選択します。

    • カスタム識別子:コンテナー起動時に設定した ${user_defined_id} を入力します。ID は完全に一致する必要があります。そうでない場合、関連付けは失敗します。

  5. マシングループのハートビート状態の確認

    新しいマシングループの名前をクリックして詳細ページに移動し、[マシングループの状態] を確認します:

ステップ 2:ログ収集ルールの作成と構成

LoongCollector がどのログを収集し、その構造をどのように解析し、コンテンツをどのようにフィルタリングし、構成を登録済みのマシングループにどのようにバインドするかを定義します。

  1. [imageLogstores] ページで、対象の Logstore 名の横にある image アイコンをクリックします。

  2. [データ収集] の横にある image をクリックします。[クイックデータインポート] ダイアログボックスで、ログソースに基づいてテンプレートを選択し、[今すぐ統合] をクリックします。

  3. [マシングループ] を構成し、[次へ] をクリックします。

    • シナリオ[Docker コンテナー] を選択します。

    • ステップ 1 で作成したマシングループを、ソースマシングループリストから適用済みマシングループリストに移動します。

  4. [Logtail 構成] ページで、次のパラメーターを構成し、[次へ] をクリックします。

1. グローバル構成と入力構成

開始する前に、データインポートテンプレートを選択し、マシングループをバインドしたことを確認してください。このステップでは、収集構成の名前、ログソース、および収集範囲を定義します。

Docker 標準出力の収集

グローバル構成

  • 構成名:収集構成のカスタム名を入力します。名前はプロジェクト内で一意である必要があり、構成作成後に変更できません。名前は次の規則に従う必要があります:

    • 小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。

    • 小文字または数字で開始および終了する必要があります。

入力構成

  • [標準出力と標準エラー] または [標準エラー] スイッチをオンにします。両方のスイッチはデフォルトでオンになっています。

    重要

    収集されたログで混乱を招く可能性があるため、標準出力と標準エラーの両方を同時に有効にしないことを推奨します。

Docker コンテナーのテキストログの収集

グローバル構成

  • 構成名:収集構成のカスタム名を入力します。名前はプロジェクト内で一意である必要があり、構成作成後に変更できません。名前は次の規則に従う必要があります:

    • 小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。

    • 小文字または数字で開始および終了する必要があります。

入力構成

  • ファイルパスタイプ

    • コンテナー内のパス:コンテナー内からログファイルを収集します。

    • ホストパス:ホスト上のローカルサービスからログを収集します。

  • ファイルパス:収集するログファイルの絶対パス。

    • Linux:パスはスラッシュ (`/`) で始まる必要があります。例:/data/mylogs/**/*.log は、/data/mylogs ディレクトリ内の .log 拡張子を持つすべてのファイルを示します。

    • Windows:パスはドライブ文字で始まる必要があります。例:C:\Program Files\Intel\**\*.Log

  • 最大ディレクトリ監視深度[ファイルパス] のワイルドカード文字 ** が一致できる最大のディレクトリ深度。デフォルト値は 0 で、現在のディレクトリを示します。値の範囲は 0 から 1000 です。

    このパラメーターを 0 に設定し、ファイルを含むディレクトリへのパスを構成することを推奨します。

2. ログの処理と構造化

生の非構造化ログを構造化データに変換するためのログ処理ルールを構成します。これにより、ログのクエリと分析の効率が向上します。ルールを構成する前にログサンプルを追加することを推奨します:

[Logtail 構成] ページの [プロセッサー構成] セクションで、[ログサンプルの追加] をクリックし、収集するログのコンテンツを入力します。システムはサンプルに基づいてログ形式を識別し、正規表現と解析ルールの生成を支援します。これにより、構成が簡素化されます。

シナリオ 1:複数行ログの処理 (Java スタックログなど)

Java の例外スタックや JSON オブジェクトなどのログは、しばしば複数行にわたります。デフォルトの収集モードでは、これらのログは複数の不完全なレコードに分割され、コンテキストが失われます。この問題に対処するため、複数行収集モードを有効にし、行の開始を示す正規表現を構成して、同じログの連続する行を単一の完全なログエントリにマージします。

効果の例:

未処理の生ログ

デフォルトの収集モードでは、各行が独立したログとして扱われ、スタック情報が分断され、コンテキストが失われる

複数行モードを有効にすると、行の開始を示す正規表現が完全なログを識別し、完全な意味構造を保持する

image

image

image

構成:[Logtail 構成] ページの [プロセッサー構成] セクションで、[複数行モード] をオンにします:

  • タイプ: [カスタム] または [複数行 JSON] を選択します。

    • カスタム:生ログの形式が固定されていません。各ログエントリの開始行を識別するために、[先頭行に一致する正規表現] を構成する必要があります。

      • 先頭行に一致する正規表現:自動生成または手動入力をサポートします。正規表現はデータの完全な行に一致する必要があります。例えば、上記の例の一致する正規表現は \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.* です。

        • 自動生成:[生成] をクリックします。次に、[ログサンプル] テキストボックスで、抽出するログコンテンツを選択し、[自動生成] をクリックします。

        • 手動入力:[正規表現の手動入力] をクリックします。式を入力した後、[検証] をクリックします。

    • 複数行 JSON:生ログがすべて標準 JSON 形式の場合、SLS は単一の JSON ログ内の改行を自動的に処理します。

  • 分割失敗時の処理方法

    • 破棄:テキストが先頭行ルールに一致しない場合、破棄されます。

    • 単一行を保持:一致しないテキストはチャンク化され、元の単一行モードで保持されます。

シナリオ 2:構造化ロギング

NGINX アクセスログやアプリケーション出力ログなど、生のログが非構造化または半構造化テキストである場合、直接のクエリと分析はしばしば非効率です。SLS は、さまざまなデータ解析プラグインを提供し、異なる形式の生ログを自動的に構造化データに変換できます。これにより、後続の分析、監視、およびアラートのための堅固なデータ基盤が提供されます。

効果の例:

生ログ

解析済みログ

192.168.*.* - - [15/Apr/2025:16:40:00 +0800] "GET /nginx-logo.png HTTP/1.1" 0.000 514 200 368 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.*.* Safari/537.36"
body_bytes_sent: 368
http_referer: -
http_user_agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.x.x Safari/537.36
remote_addr:192.168.*.*
remote_user: -
request_length: 514
request_method: GET
request_time: 0.000
request_uri: /nginx-logo.png
status: 200
time_local: 15/Apr/2025:16:40:00

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで:

  1. 解析プラグインの追加:[プロセッサーの追加] をクリックし、ログ形式に一致する正規表現解析、区切り文字解析、または JSON 解析などのプラグインを構成します。例えば、NGINX ログを収集するには、[ネイティブプロセッサー] > [データ解析 (NGINX モード)] を選択します。

  2. NGINX ログ構成:NGINX サーバー構成ファイル (nginx.conf) から完全な log_format 定義をコピーし、このテキストボックスに貼り付けます。

    例:

    log_format main  '$remote_addr - $remote_user [$time_local] "$request" ''$request_time $request_length ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent"';
    重要

    形式定義は、サーバーでログを生成するために使用される形式と完全に同じでなければなりません。そうでない場合、ログ解析は失敗します。

  3. 共通パラメーター:以下のパラメーターは複数のデータ解析プラグインに表示されます。その機能と使用法は一貫しています。

    • 元のフィールド:解析対象のソースフィールドの名前。デフォルト値は content で、収集されたログコンテンツ全体を示します。

    • 解析失敗時に元のフィールドを保持:このスイッチをオンにすることを推奨します。ログが形式の不一致によりプラグインで解析に失敗した場合、このオプションは元のログコンテンツが失われず、指定された生のフィールドに保持されることを保証します。

    • 解析成功時に元のフィールドを保持:このオプションを選択すると、ログが正常に解析された場合でも元のログコンテンツが保持されます。

3. ログフィルタリング

ログ収集中に、DEBUG レベルや INFO レベルのログなど、価値の低いまたは無関係なログを大量に無差別に収集すると、ストレージリソースを浪費し、コストを増加させ、クエリ効率に影響を与え、データ漏洩のリスクをもたらします。これらの問題に対処するため、効率的で安全なログ収集のために、詳細なフィルタリング戦略を実装します。

コンテンツフィルタリングによるコスト削減

フィールドコンテンツに基づいてログをフィルタリングします。例えば、WARNING または ERROR レベルのログのみを収集します。

効果の例:

未処理の生ログ

WARNING または ERROR ログのみを収集

{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}
{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}
{"level":"WARNING","timestamp":"2025-09-23T19:11:40+0800","cluster":"yilu-cluster-0728","message":"Disk space is running low","freeSpace":"15%"}
{"level":"ERROR","timestamp":"2025-09-23T19:11:42+0800","cluster":"yilu-cluster-0728","message":"Failed to connect to database","errorCode":5003}

設定手順:[Logtail 設定] ページの [プロセッサー設定] セクションで:

[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データフィルタリング] を選択します:

  • フィールド名:フィルタリングに使用するログフィールド。

  • フィールド値:フィルタリングに使用する正規表現。フルテキストマッチングのみがサポートされており、部分的なキーワードマッチングはサポートされていません。

ブラックリストによる収集範囲の制御

ブラックリストを使用して、指定されたディレクトリやファイルを除外します。これにより、無関係なログや機密性の高いログがアップロードされるのを防ぎます。

構成手順:[Logtail 構成] ページの [入力構成] セクションで、[収集ブラックリスト] を有効にし、[追加] をクリックします。

ディレクトリとファイル名には、完全一致とワイルドカードマッチングがサポートされています。サポートされているワイルドカード文字はアスタリスク (`*`) と疑問符 (`?`) です。
  • ファイルパスブラックリスト:無視するファイルパス。例:

    • /home/admin/private*.log:収集時に /home/admin/ ディレクトリ内の "private" で始まり ".log" で終わるすべてのファイルを無視します。

    • /home/admin/private*/*_inner.log:収集時に /home/admin/ ディレクトリ下の "private" で始まるディレクトリ内の "_inner.log" で終わるファイルを無視します。

  • ファイルブラックリスト:収集時に無視するファイル名。例:

    • app_inner.log:収集時に app_inner.log という名前のすべてのファイルを無視します。

  • ディレクトリブラックリスト:ディレクトリパスはスラッシュ (`/`) で終わることはできません。例:

    • /home/admin/dir1/:ディレクトリブラックリストは効果がありません。

    • /home/admin/dir*:収集時に /home/admin/ ディレクトリの "dir" で始まるすべてのサブディレクトリ内のファイルを無視します。

    • /home/admin/*/dir:収集時に /home/admin/ ディレクトリの第 2 レベルにある "dir" という名前のサブディレクトリ内のすべてのファイルを無視します。例えば、/home/admin/a/dir ディレクトリ内のファイルは無視されますが、/home/admin/a/b/dir ディレクトリ内のファイルは収集されます。

コンテナーフィルタリング

環境変数、Pod ラベル、名前空間、コンテナー名などのコンテナーメタデータに基づいて収集条件を設定し、どのコンテナーのログを収集するかを正確に制御します。

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[コンテナーフィルタリング] を有効にし、[追加] をクリックします。

複数の条件は AND 論理演算子で結合されます。すべての正規表現マッチングは Go の RE2 正規表現エンジンに基づいており、PCRE などのエンジンと比較していくつかの制限があります。正規表現を記述する際は、「付録:正規表現の制限 (コンテナーフィルタリング)」で説明されている制限に従ってください。
  • 環境変数ブラックリスト/ホワイトリスト:ログを収集したいコンテナーの環境変数条件を指定します。

  • K8s Pod ラベルブラックリスト/ホワイトリスト:収集対象のコンテナーが配置されている Pod のラベル条件を指定します。

  • K8s Pod 名の正規表現マッチング:Pod 名で収集対象のコンテナーを指定します。

  • K8s 名前空間の正規表現マッチング:名前空間名で収集対象のコンテナーを指定します。

  • K8s コンテナー名の正規表現マッチング:コンテナー名で収集対象のコンテナーを指定します。

  • コンテナーラベルブラックリスト/ホワイトリスト:指定された条件を満たすラベルを持つコンテナーからログを収集します。このパラメーターは Docker シナリオで使用され、Kubernetes シナリオでは推奨されません。

4. ログの分類

複数のアプリケーションやインスタンスが同じログ形式を共有するシナリオでは、ログソースを区別することが困難です。これにより、クエリ中にコンテキストが不足し、分析効率が低下します。この問題に対処するため、トピックとログタグを構成して、自動的なコンテキスト関連付けと論理的な分類を実現します。

トピックの構成

複数のアプリケーションやインスタンスが同じログ形式を持ちながら、パスが異なる場合 (例:/apps/app-A/run.log/apps/app-B/run.log)、収集されたログのソースを区別するのは困難です。マシングループ、カスタム名、またはファイルパス抽出に基づいてトピックを生成し、異なるアプリケーションやパスソースからのログを柔軟に区別できます。

構成手順:[グローバル構成] > [その他のグローバル構成] > [ログトピックタイプ]:トピック生成方法を選択します。以下の 3 種類がサポートされています:

  • マシングループトピック:収集構成が複数のマシングループに適用される場合、LoongCollector はサーバーが属するマシングループの名前を __topic__ フィールドの値として自動的に使用してアップロードします。これは、ホストクラスターごとにログを分割するシナリオに適しています。

  • カスタム:形式は customized://<custom_topic_name> です。例:customized://app-login。これは、固定のビジネス識別子を持つ静的なトピックシナリオに適しています。

  • ファイルパス抽出:ログファイルの完全なパスからキー情報を抽出し、ログソースを動的にマークします。これは、複数のユーザーやアプリケーションが同じログファイル名を共有しているが、パスが異なる場合に適しています。

    複数のユーザーやサービスが異なるトップレベルディレクトリにログを書き込むが、サブパスとファイル名が同じ場合、ファイル名だけではソースを区別できません。例:

    /data/logs
    ├── userA
    │   └── serviceA
    │       └── service.log
    ├── userB
    │   └── serviceA
    │       └── service.log
    └── userC
        └── serviceA
            └── service.log

    ファイルパス抽出を構成し、正規表現を使用して完全なパスからキー情報を抽出します。一致した結果はトピックとして Logstore にアップロードされます。

    抽出ルール:正規表現のキャプチャグループに基づく

    正規表現を構成すると、システムはキャプチャグループの数と命名に基づいて出力フィールド形式を自動的に決定します。ルールは以下の通りです:

    ファイルパスの正規表現では、スラッシュ (/) をエスケープする必要があります。

    キャプチャグループのタイプ

    シナリオ

    生成されるフィールド

    正規表現の例

    一致するパスの例

    生成されるフィールド

    単一キャプチャグループ (1 つの (.*?) のみ)

    ソースを区別するために 1 つのディメンションのみが必要 (ユーザー名、環境など)

    __topic__ フィールドを生成

    \/logs\/(.*?)\/app\.log

    /logs/userA/app.log

    __topic__:userA

    複数キャプチャグループ - 名前なし (複数の (.*?))

    複数のディメンションが必要だが、意味的なラベルはない

    タグフィールド __tag__:__topic_{i}__ を生成。ここで {i} はキャプチャグループの序数

    \/logs\/(.*?)\/(.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:__topic_1__userA;

    __tag__:__topic_2__svcA

    複数キャプチャグループ - 名前付き ((?P<name>.*?) を使用)

    複数のディメンションが必要で、クエリと分析を容易にするためにフィールドの意味を明確にしたい

    タグフィールド __tag__:{name} を生成

    \/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log

    /logs/userA/svcA/app.log

    __tag__:user:userA;

    __tag__:service:svcA

ログタギング

ログタグエンリッチメント機能を有効にして、コンテナーの環境変数や Kubernetes の Pod ラベルからキー情報を抽出し、その情報をタグとしてアタッチします。これにより、ログの詳細なグループ化が実現します。

構成手順:[Logtail 構成] ページの [入力構成] セクションで、[ログタグエンリッチメント] を有効にし、[追加] をクリックします。

  • 環境変数:環境変数名とタグ名を設定します。環境変数の値はタグ名に保存されます。

    • 環境変数名:抽出する環境変数の名前を指定します。

    • タグ名:環境変数タグの名前。

  • Pod ラベル:Pod ラベル名とタグ名を設定します。Pod ラベルの値はタグ名に保存されます。

    • Pod ラベル名:抽出する Kubernetes Pod ラベルの名前。

    • タグ名:タグの名前。

5. 出力構成

デフォルトでは、すべてのログは lz4 圧縮で現在の Logstore に送信されます。同じソースからのログを異なる Logstore に送信するには、以下の手順に従います:

複数のターゲットへの動的配信

重要
  • 複数のターゲットへのログ送信は、LoongCollector 3.0.0 以降でのみ利用可能です。この機能は Logtail ではサポートされていません。

  • 最大 5 つの出力ターゲットを構成できます。

  • 複数の出力ターゲットを構成した後、収集構成は現在の Logstore の収集構成リストに表示されなくなります。複数ターゲット配信構成を表示、変更、または削除するには、「複数ターゲット配信構成を管理するにはどうすればよいですか?」をご参照ください。

手順[Logtail 構成] ページの [出力構成] セクションで

  1. image をクリックして出力構成を展開します。

  2. 出力先の追加 をクリックし、以下の設定を構成します:

    • Logstore:ターゲットの Logstore を選択します。

    • 圧縮方法[lz4] または [zstd] を選択します。

    • ルート設定:タグフィールドに基づいてログをルーティングします。ルーティングルールに一致するログはターゲットの Logstore に送信されます。この構成が空の場合、収集されたすべてのログがターゲットの Logstore に送信されます。

      • タグ名:ルーティングに使用されるタグフィールドの名前。フィールド名を直接入力します。例:__path____tag__: プレフィックスは不要です。タグフィールドは 2 つのカテゴリに分類されます:

        タグの詳細については、「LoongCollector 収集タグの管理」をご参照ください。
        • エージェント関連:これらのタグは収集エージェントに関連し、どのプラグインにも依存しません。例:__hostname__ および __user_defined_id__

        • 入力プラグイン関連:これらのタグは入力プラグインに依存し、プラグインが関連情報をログに追加およびエンリッチします。例:ファイル収集のための __path__、Kubernetes 収集のための _pod_name_ および _container_name_

      • タグ値:ログのタグ値がこの値に一致する場合、ログはこのターゲット Logstore に送信されます。

      • このタグフィールドを破棄するかどうか:このオプションを有効にすると、このタグフィールドはアップロードされたログから削除されます。

ステップ 3:クエリと分析の構成

ログ処理とプラグイン構成が完了したら、[次へ] をクリックして [クエリと分析の構成] ページに移動します:

  • システムはデフォルトでフルテキストインデックスを有効にし、元のログコンテンツに対するキーワード検索をサポートします。

  • フィールドによる正確なクエリを実行するには、ページのプレビューデータが読み込まれた後、[インデックスの自動生成] をクリックします。SLS は、プレビューデータの最初のエントリに基づいてフィールドインデックスを生成します。

構成が完了したら、[次へ] をクリックして、収集プロセス全体の設定を完了します。

ステップ 4:検証とトラブルシューティング

収集構成が完了し、マシングループに適用されると、システムは自動的に構成を配布し、増分ログの収集を開始します。

アップロードされたログの表示

  1. ログファイルに新しいコンテンツがあることを確認する:LoongCollector は増分ログのみを収集します。tail -f /path/to/your/log/file を実行し、ビジネス操作をトリガーして、新しいログが書き込まれていることを確認します。

  2. ログのクエリ:ターゲット Logstore のクエリと分析ページに移動し、[検索と分析] をクリックし (デフォルトの時間範囲は過去 15 分)、新しいログが流入しているかどうかを確認します。収集された各 Docker コンテナーのテキストログには、デフォルトで以下のフィールドが含まれています:

    フィールド名

    説明

    __source__

    LoongCollector (Logtail) コンテナーの IP アドレス。

    _container_ip_

    アプリケーションコンテナーの IP アドレス。

    __tag__:__hostname__

    LoongCollector (Logtail) が配置されている Docker ホストの名前。

    __tag__:__path__

    ログ収集パス。

    __tag__:__receive_time__

    ログがサーバーに到着した時刻。

    __tag__:__user_defined_id__

    マシングループのカスタム ID。

よくある質問

マシングループのハートビート接続が失敗

  1. ユーザー ID の確認:サーバータイプが ECS でない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合は、以下の表に基づいて指定されたディレクトリに正しいユーザー ID が存在するかどうかを確認します。

    • Linux:cd /etc/ilogtail/users/ && touch <uid> コマンドを実行してユーザー ID ファイルを作成します。

    • Windows:C:\LogtailData\users\ ディレクトリに移動し、<uid> という名前の空のファイルを作成します。

    指定されたパスに現在のプロジェクトの Alibaba Cloud アカウント ID で名前が付けられたファイルが存在する場合、ユーザー ID は正しく構成されています。

  2. マシングループ ID の確認:マシングループにカスタム ID を使用している場合は、指定されたディレクトリに user_defined_id ファイルが存在するかどうかを確認します。存在する場合は、ファイルの内容がマシングループに構成されたカスタム ID と一致しているかどうかを確認します。

    システム

    指定ディレクトリ

    ソリューション

    Linux

    /etc/ilogtail/user_defined_id

    # カスタム ID を構成します。ディレクトリが存在しない場合は、手動で作成します。
    echo "user-defined-1" > /etc/ilogtail/user_defined_id

    Windows

    C:\LogtailData\user_defined_id

    C:\LogtailData ディレクトリに新しい user_defined_id ファイルを作成し、カスタム ID を書き込みます。(ディレクトリが存在しない場合は、手動で作成します。)

  3. ユーザー ID とマシングループ ID の両方が正しく構成されている場合は、「LoongCollector (Logtail) マシングループの問題のトラブルシューティング」でさらなるトラブルシューティングをご参照ください。


ログのデータが収集されない

  1. 増分ログの確認:LoongCollector (Logtail) を収集用に構成した後、収集対象のログファイルに新しいログがない場合、LoongCollector (Logtail) はそのファイルからログを収集しません。

  2. マシングループのハートビート状態の確認image[リソース] > [マシングループ] ページに移動し、対象のマシングループの名前をクリックし、[マシングループ構成] > [マシングループの状態] セクションで、[ハートビート] の状態を確認します。

    • ハートビートが正常な場合、マシングループは SLS プロジェクトに接続されています。

    • ハートビートが失敗した場合:問題のトラブルシューティング方法については、「マシングループのハートビート接続が失敗」をご参照ください。

  3. LoongCollector (Logtail) 収集構成がマシングループに適用されているか確認する:LoongCollector (Logtail) 収集構成が作成されていても、構成がマシングループに適用されていない場合、ログは収集されません。

    1. image[リソース] > [マシングループ] ページで、目的のマシングループの名前をクリックすると、[マシングループ設定] ページに移動します。

    2. ページで、[構成の管理] を表示します。左側には [すべての Logtail 構成] が表示され、右側には [適用済みの Logtail 構成] が表示されます。対象の LoongCollector (Logtail) 収集構成が右側の適用済みエリアに移動されている場合、構成は対象のマシングループに正常に適用されています。

    3. 対象の LoongCollector (Logtail) 収集構成が右側の適用済みエリアに移動されていない場合は、[変更] をクリックします。左側の [すべての Logtail 構成] リストで、対象の LoongCollector (Logtail) 構成の名前を選択し、image をクリックして右側の適用済みエリアに移動し、[保存] をクリックします。


ログ収集エラーまたは不正なフォーマット

トラブルシューティングのアプローチ:この状況は、ネットワーク接続と基本構成が正常であることを示します。問題は主にログコンテンツ解析ルールの不一致です。問題の特定には、具体的なエラーメッセージを確認する必要があります:

  1. [Logtail 構成] ページで、収集エラーのある LoongCollector (Logtail) 構成の名前をクリックします。[ログ収集エラー] タブで、[時間範囲の選択] をクリックしてクエリ時間を設定します。

  2. [収集例外監視] > [完全なエラー情報] セクションで、エラーログのアラームメトリックを表示し、「データ収集における一般的なエラータイプ」で対応するソリューションを見つけます。

次のステップ

  1. ログのクエリと分析

  2. データ可視化:可視化ダッシュボードを使用して、主要なメトリックのトレンドを監視します。

  3. データ異常の自動アラート:アラートポリシーを設定して、システムの異常をリアルタイムで把握します。

一般的なコマンド

LoongCollector (Logtail) の実行状態の表示

docker exec ${logtail_container_id} /etc/init.d/ilogtaild status

LoongCollector (Logtail) のバージョン番号、IP アドレス、起動時間などの情報の表示

docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.json

LoongCollector (Logtail) の実行ログの表示

LoongCollector (Logtail) の実行ログは、コンテナー内の /usr/local/ilogtail/ ディレクトリに保存されます。ファイル名は ilogtail.LOG で、ローテーションされたファイルは圧縮されて ilogtail.LOG.x.gz として保存されます。例:

# LoongCollector の実行ログを表示
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/loongcollector.LOG

# Logtail の実行ログを表示
docker exec a287de895e40 tail -n 5 /usr/local/ilogtail/ilogtail.LOG

出力例:

[2025-08-25 09:17:44.610496]    [info]  [22]    /build/loongcollector/file_server/polling/PollingModify.cpp:75          polling modify resume:succeeded
[2025-08-25 09:17:44.610497]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:100                polling discovery resume:starts
[2025-08-25 09:17:44.610498]    [info]  [22]    /build/loongcollector/file_server/polling/PollingDirFile.cpp:103                polling discovery resume:succeeded
[2025-08-25 09:17:44.610499]    [info]  [22]    /build/loongcollector/file_server/FileServer.cpp:117            file server resume:succeeded
[2025-08-25 09:17:44.610500]    [info]  [22]    /build/loongcollector/file_server/EventDispatcher.cpp:1019              checkpoint dump:succeeded

LoongCollector (Logtail) の再起動

# loongcollector の停止
docker exec a287de895e40 /etc/init.d/ilogtaild stop

# loongcollector の起動
docker exec a287de895e40 /etc/init.d/ilogtaild start

よくある質問

一般的なエラーメッセージ

エラー現象

原因

ソリューション

Failed to connect to Logtail

プロジェクトのリージョンが LoongCollector (Logtail) コンテナーと一致していません。

ALIYUN_LOGTAIL_CONFIG のリージョン構成を確認してください。

No logs in LogStore

ファイルパスの構成が正しくありません。

アプリケーションコンテナー内のログパスが収集構成と一致していることを確認してください。


エラーログ:The parameter is invalid : uuid=none

問題の説明:LoongCollector (Logtail) のログ (/usr/local/ilogtail/ilogtail.LOG) にエラーログ The parameter is invalid : uuid=none が含まれています。

ソリューション:ホストに product_uuid ファイルを作成し、有効な UUID (例:169E98C9-ABC0-4A92-B1D2-AA6239C0D261) を入力し、このファイルを LoongCollector (Logtail) コンテナーの /sys/class/dmi/id/product_uuid ディレクトリにマウントします。


同じログファイルまたはコンテナーの標準出力を、複数の収集構成で同時に収集するにはどうすればよいですか

デフォルトでは、データの重複を防ぐため、SLS は各ログソースが 1 つの収集構成によってのみ収集されるように制限しています:

  • テキストログファイルは 1 つの Logtail 構成にのみ一致できます。

  • コンテナー標準出力 (stdout):

    • 標準出力テンプレートの新バージョンを使用している場合、デフォルトでは 1 つの標準出力収集構成によってのみ収集できます。

    • 標準出力テンプレートの旧バージョンを使用している場合、追加の構成は不要で、デフォルトで複数のコピーの収集をサポートします。

  1. Simple Log Service コンソールにログインし、対象のプロジェクトに移動します。

  2. 左側のナビゲーションウィンドウで、image[Logstores] を選択し、対象の Logstore を見つけます。

  3. その名前の横にある image アイコンをクリックして Logstore を展開します。

  4. [Logtail 構成] をクリックします。構成リストで、対象の Logtail 構成を見つけ、[操作] 列の [Logtail 構成の管理] をクリックします。

  5. Logtail 構成ページで、[編集] をクリックし、[入力構成] セクションまでスクロールします:

    • テキストファイルログを収集する場合:[ファイルの複数回収集を許可] を有効にします。

    • コンテナー標準出力を収集する場合:[異なる Logtail 構成による収集を許可] をオンにします。

複数ターゲット配信構成を管理するにはどうすればよいですか?

複数ターゲット配信構成は、複数の Logstore に関連付けられています。これらの構成は、プロジェクトレベルの管理ページから管理します:

  1. Simple Log Service コンソールにログインし、対象のプロジェクト名をクリックします。

  2. プロジェクトページで、左側のナビゲーションウィンドウから image [リソース] > [構成] を選択します。

    説明

    このページでは、プロジェクト内のすべての収集構成を一元管理できます。これには、関連する Logstore が誤って削除された後に残った構成も含まれます。

付録:ネイティブ解析プラグインの詳細説明

[Logtail 構成] ページの [処理構成] セクションで、処理プラグインを追加して、生ログの構造化処理を構成します。既存の収集構成に処理プラグインを追加するには、以下の手順に従います:

  1. 左側のナビゲーションウィンドウで、image[Logstores] を選択し、対象の Logstore を見つけます。

  2. その名前の横にある image アイコンをクリックして Logstore を展開します。

  3. [Logtail 構成] をクリックします。構成リストで、対象の Logtail 構成を見つけ、[操作] 列の [Logtail 構成の管理] をクリックします。

  4. Logtail 構成ページで、[編集] をクリックします。

このセクションでは、一般的なログ処理シナリオをカバーする、よく使用される処理プラグインのみを紹介します。他の機能の詳細については、「拡張処理プラグイン」をご参照ください。
重要

プラグインの組み合わせルール (LoongCollector / Logtail 2.0 以降のバージョンに適用):

  • ネイティブ処理プラグインと拡張処理プラグインは、独立して使用することも、必要に応じて組み合わせることもできます。

  • パフォーマンスと安定性が高いため、ネイティブ処理プラグインを優先的に使用することを推奨します。

  • ネイティブ機能がビジネスニーズを満たせない場合は、構成済みのネイティブ処理プラグインの後に拡張処理プラグインを追加して、補足的な処理を実行します。

順序の制約:

すべてのプラグインは構成された順序で順次実行され、処理チェーンを形成します。注意:すべてのネイティブ処理プラグインは、どの拡張処理プラグインよりも前に配置する必要があります。拡張処理プラグインを追加した後は、ネイティブ処理プラグインをさらに追加することはできません。

正規表現解析

正規表現を使用してログフィールドを抽出し、ログをキーと値のペアに解析します。各フィールドは独立してクエリおよび分析できます。

効果の例:

未処理の生ログ

正規表現解析プラグインの使用

127.0.0.1 - - [16/Aug/2024:14:37:52 +0800] "GET /wp-admin/admin-ajax.php?action=rest-nonce HTTP/1.1" 200 41 "http://www.example.com/wp-admin/post-new.php?post_type=page" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
body_bytes_sent: 41
http_referer: http://www.example.com/wp-admin/post-new.php?post_type=page
http_user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; ×64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
remote_addr: 127.0.0.1
remote_user: -
request_method: GET
request_protocol: HTTP/1.1
request_uri: /wp-admin/admin-ajax.php?action=rest-nonce
status: 200
time_local: 16/Aug/2024:14:37:52 +0800

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データ解析 (正規表現モード)] を選択します:

  • 正規表現:ログに一致させるために使用します。自動生成または手動入力をサポートします:

    • 自動生成:

      • [生成] をクリックします。

      • [ログサンプル] で、抽出するログコンテンツをハイライトします。

      • [正規表現の生成] をクリックします。

        image

    • 手動入力:ログ形式に基づいて [正規表現の手動入力] をクリックします。

    構成が完了したら、[検証] をクリックして、正規表現がログコンテンツを正しく解析できるかテストします。

  • 抽出されたフィールド:抽出されたログコンテンツ (値) に対応するフィールド名 (キー) を設定します。

  • その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。


区切り文字解析

区切り文字を使用してログコンテンツを構造化し、複数のキーと値のペアに解析します。単一文字および複数文字の区切り文字がサポートされています。

効果の例:

未処理の生ログ

指定された文字 , でフィールドを分割

05/May/2025:13:30:28,10.10.*.*,"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1",200,18204,aliyun-sdk-java
ip:10.10.*.*
request:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1
size:18204
status:200
time:05/May/2025:13:30:28
user_agent:aliyun-sdk-java

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データ解析 (区切り文字モード)] を選択します。

  • 区切り文字:ログコンテンツを分割するために使用する文字を指定します。

    例:CSV 形式のファイルの場合、[カスタム] を選択し、カンマ (,) を入力します。

  • 引用符:フィールド値に区切り文字が含まれている場合、誤った分割を防ぐためにフィールドを囲む引用符を指定する必要があります。

  • 抽出されたフィールド:分離の順序で各列に対応するフィールド名 (キー) を設定します。ルールは以下の通りです:

    • フィールド名は文字、数字、アンダースコア (_) のみを含むことができます。

    • 文字またはアンダースコア (_) で始まる必要があります。

    • 最大長は 128 バイトです。

  • その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。


標準 JSON 解析

オブジェクトタイプの JSON ログをキーと値のペアに解析して構造化します。

効果の例:

未処理の生ログ

標準 JSON キー値の自動抽出

{"url": "POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek********&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1", "ip": "10.200.98.220", "user-agent": "aliyun-sdk-java", "request": {"status": "200", "latency": "18204"}, "time": "05/Jan/2025:13:30:28"}
ip: 10.200.98.220
request: {"status": "200", "latency" : "18204" }
time: 05/Jan/2025:13:30:28
url: POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=U0Ujpek******&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=pD12XYLmGxKQ%2Bmkd6x7hAgQ7b1c%3D HTTP/1.1
user-agent:aliyun-sdk-java

設定手順: [Logtail 設定] ページの [プロセッサー設定] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データ解析 (区切り文字モード)] を選択します。

  • 元のフィールド:デフォルト値は content です。このフィールドは、解析対象の生ログコンテンツを保存するために使用されます。

  • その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。


ネストされた JSON 解析

展開深度を指定して、ネストされた JSON ログをキーと値のペアに解析します。

効果の例:

未処理の生ログ

展開深度:0、展開深度をプレフィックスとして使用

展開深度:1、展開深度をプレフィックスとして使用

{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}
0_s_key_k1_k2_k3_k41:41
0_s_key_k1_k2_k3_k4_k51:51
0_s_key_k1_k2_k3_k4_k52:52
1_s_key:{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[拡張プロセッサー] > [JSON フィールドの展開] を選択します:

  • 元のフィールド:展開する生のフィールドの名前。例:content

  • JSON 展開深度:JSON オブジェクトの展開レベル。値 0 は完全な展開を示し、デフォルト値です。値 1 は現在のレベルを示します。

  • 展開されたキーを連結する文字:JSON 展開中のフィールド名のコネクタ。デフォルトのコネクタはアンダースコア (_) です。

  • 展開されたキーの名前プレフィックス:JSON 展開後のフィールド名のプレフィックスを指定します。

  • 配列の展開:このスイッチをオンにすると、配列がインデックス付きのキーと値のペアに展開されます。

    例:{"k":["a","b"]}{"k[0]":"a","k[1]":"b"} に展開されます。

    展開されたフィールドの名前を変更する場合、例えば prefix_s_key_k1 を new_field_name に変更するには、[フィールド名の変更] プラグインを追加してマッピングを完了します。
  • その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。


JSON 配列解析

json_extract 関数を使用して、JSON 配列から JSON オブジェクトを抽出します。

効果の例:

未処理の生ログ

JSON 配列構造の抽出

[{"key1":"value1"},{"key2":"value2"}]
json1:{"key1":"value1"}
json2:{"key2":"value2"}

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[処理方法][SPL] に切り替え、SPL 文を構成し、json_extract 関数を使用して JSON 配列から JSON オブジェクトを抽出します。

例:ログフィールド content の JSON 配列から要素を抽出し、結果を新しいフィールド json1json2 に保存します。

* | extend json1 = json_extract(content, '$[0]'), json2 = json_extract(content, '$[1]')

Apache ログ解析

Apache ログ構成ファイルの定義に基づいてログコンテンツを構造化し、複数のキーと値のペアに解析します。

効果の例:

未処理の生ログ

Apache Common Log Format combined 解析

1 192.168.1.10 - - [08/May/2024:15:30:28 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://www.example.com/referrer" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36"
http_referer:https://www.example.com/referrer
http_user_agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.X.X Safari/537.36
remote_addr:192.168.1.10
remote_ident:-
remote_user:-
request_method:GET
request_protocol:HTTP/1.1
request_uri:/index.html
response_size_bytes:1234
status:200
time_local:[08/May/2024:15:30:28 +0800]

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データ解析 (Apache モード)] を選択します:

  • ログフォーマットcombined

  • APACHE LogFormat 構成: システムは、[ログ形式] に基づいて構成を自動的に入力します。

    重要

    自動入力されたコンテンツを検証し、サーバーの Apache 構成ファイルで定義されている LogFormat と完全に同じであることを確認してください。ファイルは通常 /etc/apache2/apache2.conf にあります。

  • その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。


データマスキング

ログ内の機密データをマスキングします。

効果の例:

未処理の生ログ

マスキング結果

[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}]
[{'account':'1812213231432969','password':'********'}, {'account':'1812213685634','password':'********'}]

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データマスキング] を選択します。

  • 元のフィールド:解析前のログコンテンツを含む生のフィールド。

  • データマスキング方法

    • const:機密コンテンツを変更後の文字列に置き換えます。

    • md5:機密コンテンツを対応する MD5 ハッシュに置き換えます。

  • 置換文字列[マスキング方法]const に設定した場合、機密コンテンツを置き換える文字列を入力する必要があります。

  • 置換されるコンテンツの前のコンテンツ式:機密コンテンツを見つけるために使用します。このパラメーターは RE2 構文を使用して構成します。

  • 置換されるコンテンツに一致するコンテンツ式:機密コンテンツの式。このパラメーターは RE2 構文を使用して構成します。


時刻解析

ログ内の時刻フィールドを解析し、解析結果をログの __time__ フィールドの値として設定します。

効果の例:

未処理の生ログ

時刻解析

{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"}

image

構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [時刻解析] を選択します:

  • 元のフィールド:解析前のログコンテンツを含む生のフィールド。

  • 時刻フォーマット:ログ内の時刻コンテンツに基づいて、対応する時刻フォーマットを設定します。

  • タイムゾーン:ログの時刻フィールドのタイムゾーンを選択します。デフォルトでは、マシンのタイムゾーンが使用されます。これは、LoongCollector (Logtail) プロセスが実行されている環境のタイムゾーンです。

付録:正規表現の制限 (コンテナーフィルタリング)

コンテナーフィルタリングに使用される正規表現は、Go の RE2 エンジンに基づいており、PCRE などの他のエンジンと比較していくつかの構文上の制限があります。正規表現を記述する際には、以下に注意してください:

1. 名前付きグループ構文の違い

Go は (?P<name>...) 構文を使用して名前付きグループを定義し、PCRE の (?<name>...) 構文はサポートしていません。

  • 正しい例:(?P<year>\d{4})

  • 不正な構文:(?<year>\d{4})

2. サポートされていない正規表現機能

以下の一般的だが複雑な正規表現機能は RE2 では利用できません。これらは使用しないでください:

  • アサーション (lookahead/lookbehind): (?=...)(?!...)(?<=...)(?<!...)

  • 条件式: (?(condition)true|false)

  • 再帰マッチング: (?R)(?0)

  • サブルーチン参照: (?&name)(?P>name)

  • アトミックグループ: (?>...)

3. 使用上の推奨事項

Regex101 などのツールを使用して正規表現をデバッグすることを推奨します。互換性を確保するために、Golang (RE2) モードを選択して検証してください。上記で述べたサポートされていない構文を使用すると、プラグインは正しく解析またはマッチングしません。

付録:コンテナー標準出力の新旧バージョンの比較

ログストレージの効率と収集の一貫性を向上させるため、コンテナー標準出力のログメタデータ形式がアップグレードされました。新しい形式では、メタデータが __tag__ フィールドに統合され、ストレージの最適化と形式の標準化が実現されています。

  1. 新しい標準出力バージョンの主な利点

    • 大幅なパフォーマンス向上

      • C++ でリファクタリングされ、古い Go 実装と比較してパフォーマンスが 180% から 300% 向上しました。

      • データ処理のためのネイティブプラグインとマルチスレッド並列処理をサポートし、システムリソースを最大限に活用します。

      • ネイティブプラグインと Go プラグインを柔軟に組み合わせて、複雑なシナリオ要件に対応します。

    • 信頼性の向上

      • 標準出力ログローテーションキューをサポートします。ログ収集メカニズムはファイル収集メカニズムと統一されており、標準出力ログが急速にローテーションするシナリオで高い信頼性を提供します。

    • リソース消費の削減

      • CPU 使用率が 20% から 25% 削減されます。

      • メモリ使用量が 20% から 25% 削減されます。

    • O&M の一貫性の強化

      • 統一されたパラメーター構成:新しい標準出力収集プラグインの構成パラメーターは、ファイル収集プラグインと一貫しています。

      • 統一されたメタデータ管理:コンテナーメタデータフィールドの命名とタグログの保存場所は、ファイル収集シナリオと統一されています。コンシューマー側は 1 つの処理ロジックを維持するだけで済みます。

  2. 新旧バージョンの機能比較

    特徴ディメンション

    旧バージョンの機能

    新バージョンの機能

    ストレージ方法

    メタデータはログコンテンツに通常のフィールドとして直接埋め込まれます。

    メタデータは __tag__ タグに集中して保存されます。

    ストレージ効率

    各ログが完全なメタデータを繰り返し保持するため、より多くのストレージスペースを消費します。

    同じコンテキストの複数のログがメタデータを再利用できるため、ストレージコストを節約できます。

    形式の一貫性

    コンテナーファイル収集形式と一致しません。

    フィールドの命名とストレージ構造は、コンテナーファイル収集と完全に整合しており、統一されたエクスペリエンスを提供します。

    クエリアクセス方法

    フィールド名で直接クエリできます。例:_container_name_

    __tag__ を通じて対応するキー値にアクセスする必要があります。例:__tag__: _container_name_

  3. コンテナーメタデータフィールドマッピングテーブル

    旧バージョンのフィールド名

    新バージョンのフィールド名

    _container_ip_

    __tag__:_container_ip_

    _container_name_

    __tag__:_container_name_

    _image_name_

    __tag__:_image_name_

    _namespace_

    __tag__:_namespace_

    _pod_name_

    __tag__:_pod_name_

    _pod_uid_

    __tag__:_pod_uid_

    新バージョンでは、すべてのメタデータフィールドはログのタグ領域に __tag__:<key> の形式で保存され、ログコンテンツに埋め込まれることはありません。

  4. 新バージョンの変更がユーザーに与える影響

    • コンシューマー側の適応:保存場所が「コンテンツ」から「タグ」に変更されたため、ユーザーのログ消費ロジックを適宜調整する必要があります。例えば、クエリ中に __tag__ を通じてフィールドにアクセスする必要があります。

    • SQL 互換性:クエリ SQL は互換性のために自動的に適応されているため、ユーザーは新旧両バージョンのログを同時に処理するためにクエリ文を変更する必要はありません。

詳細情報

グローバル構成パラメーター

構成パラメーター

説明

構成名

Logtail 構成の名前。プロジェクト内で一意である必要があります。Logtail 構成が作成された後、名前は変更できません。

ログトピックタイプ

ログトピックの生成方法を選択します。オプションには、マシングループトピック、ファイルパス抽出、カスタムが含まれます。

高度なパラメーター

グローバル構成に関連するその他のオプションの高度な機能パラメーターについては、「CreateLogtailPipelineConfig」をご参照ください。

入力構成パラメーター

構成項目

説明

Logtail デプロイメントモード

DaemonSet:クラスターの各ノードに 1 つの LoongCollector をデプロイし、そのノード上のすべてのコンテナーからログを収集します。

Sidecar:各 Pod が 1 つの LoongCollector コンテナーを実行し、その Pod 内のすべてのコンテナーからログを収集します。異なる Pod のログ収集は分離されます。

ファイルパスタイプ

[コンテナパス] または [ホストパス] を設定できます。

  • コンテナー内のパス:コンテナー内からテキストログファイルを収集する場合にこのオプションを選択します。

  • ホストパス:クラスターノードからサービスログを収集する場合にこれを選択します。

ファイルパス

ホスト (ECS インスタンスなど) 上のログの場所に基づいて、ログディレクトリとファイル名を設定します。

  • 対象ホストが Linux システムの場合、ログパスはスラッシュ (/) で始まる必要があります。例:/apsara/nuwa/**/app.Log

  • 対象ホストが Windows システムの場合、ログパスはドライブ文字で始まる必要があります。例:C:\Program Files\Intel\**\*.Log

ディレクトリ名とファイル名の両方で、完全一致モードとワイルドカードモードがサポートされています。ファイル名のルールについては、「ワイルドカードマッチング」をご参照ください。ログパスのワイルドカード文字は、アスタリスク (*) と疑問符 (?) のみをサポートします。

ログパスは複数レベルのディレクトリマッチングをサポートします。これは、指定されたディレクトリとそのサブディレクトリ内の基準を満たすすべてのファイルが収集されることを意味します。例:

  • /apsara/nuwa/**/*.log は、/apsara/nuwa ディレクトリとその再帰的なサブディレクトリ内の .log 拡張子を持つファイルを示します。

  • /var/logs/app_*/**/*.log は、/var/logs ディレクトリとその再帰的なサブディレクトリの下にある app_* 形式に一致するすべてのディレクトリ内の .log 拡張子を持つファイルを示します。

  • /var/log/nginx/**/access* は、/var/log/nginx ディレクトリとその再帰的なサブディレクトリ内の access で始まるファイルを示します。

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

ログディレクトリを監視する最大深度。これは、[ファイルパス] のワイルドカード文字 ** に一致する最大ディレクトリ深度です。値 0 は、指定したログファイルディレクトリのみを監視することを指定します。

標準出力

[標準出力] を有効にすると、Logtail はコンテナーの標準出力を収集します。

標準エラー

[標準エラー] を有効にすると、Logtail はコンテナーの標準エラーを収集します。

標準出力の複数回収集を許可

デフォルトでは、コンテナーの標準出力ログは 1 つの新バージョン Logtail 標準出力収集構成にのみ一致できます。標準出力を複数の新バージョン標準出力収集構成で収集する必要がある場合は、[標準出力の複数回収集を許可] を有効にする必要があります。

コンテナーメタデータプレビューを有効にする

[コンテナーメタデータプレビューを有効にする] を有効にすると、Logtail 構成を作成した後にコンテナーメタデータを表示できます。このメタデータには、一致したコンテナー情報と完全なコンテナー情報が含まれます。

コンテナーフィルタリング

  • フィルター条件の説明

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

  • 環境変数は、コンテナー起動時に構成される変数です。環境変数の取得方法については、「コンテナー環境変数の取得」をご参照ください。

  • Kubernetes シナリオでは、コンテナーフィルタリングに [K8s Pod 名の正規表現マッチング][K8s 名前空間の正規表現マッチング][K8s コンテナー名の正規表現マッチング][K8s Pod ラベルホワイトリスト] などの Kubernetes レベルの情報を使用することを推奨します。

  1. Kubernetes の名前空間とコンテナー名は、コンテナーラベル、具体的には io.kubernetes.pod.namespaceio.kubernetes.container.name にマッピングされます。コンテナーフィルタリングには、これらの 2 つのコンテナーラベルを使用することを推奨します。例えば、Pod が backend-prod 名前空間に属し、コンテナー名が worker-server の場合、コンテナーラベルホワイトリストを io.kubernetes.pod.namespace : backend-prod または io.kubernetes.container.name : worker-server に設定して、そのコンテナーからログを収集します。

  2. これらの 2 つのコンテナーラベルがフィルタリングのニーズを満たさない場合は、コンテナーフィルタリングに環境変数のブラックリストとホワイトリストを使用します。

K8s Pod 名の正規表現マッチング

Pod 名で収集対象のコンテナーを指定します。正規表現マッチングがサポートされています。例えば、このパラメーターを ^(nginx-log-demo.*)$ に設定すると、名前が nginx-log-demo で始まる Pod 内のすべてのコンテナーが一致します。

K8s 名前空間の正規表現マッチング

名前空間名で収集対象のコンテナーを指定します。正規表現マッチングがサポートされています。例えば、このパラメーターを ^(default|nginx)$ に設定すると、nginx と default の名前空間内のすべてのコンテナーが一致します。

K8s コンテナー名の正規表現マッチング

コンテナー名で収集対象のコンテナーを指定します。Kubernetes コンテナー名は spec.containers で定義されます。正規表現マッチングがサポートされています。例えば、このパラメーターを ^(container-test)$ に設定すると、container-test という名前のすべてのコンテナーが一致します。

コンテナーラベルホワイトリスト

コンテナーラベルホワイトリストは、収集対象のコンテナーを指定します。デフォルトでは空で、すべてのコンテナーの標準出力が収集されることを意味します。コンテナーラベルホワイトリストを設定するには、LabelKey が必須で、LabelValue はオプションです。

  • LabelValue が空の場合、LabelKey を含むラベルを持つすべてのコンテナーが一致します。

  • LabelValue が空でない場合、LabelKey=LabelValue に一致するラベルを持つコンテナーのみが一致します。

    デフォルトでは、LabelValue は文字列マッチングを実行します。つまり、LabelValue の値がコンテナーのラベル値と完全に同一である場合にのみ一致が発生します。値が ^ で始まり $ で終わる場合、正規表現マッチングです。例えば、LabelKeyio.kubernetes.container.name に、LabelValue^(nginx|cube)$ に設定すると、nginx または cube という名前のコンテナーが一致します。

複数のホワイトリストエントリは OR 関係にあります。つまり、コンテナーのラベルがホワイトリストエントリのいずれかを満たせば、そのコンテナーは一致します。

コンテナーラベルブラックリスト

コンテナーラベルブラックリストは、収集からコンテナーを除外します。デフォルトでは空で、どのコンテナーも除外されないことを意味します。コンテナーラベルブラックリストを設定するには、LabelKey が必須で、LabelValue はオプションです。

  • LabelValue が空の場合、LabelKey を含むラベルを持つすべてのコンテナーが除外されます。

  • LabelValue が空でない場合、LabelKey=LabelValue に一致するラベルを持つコンテナーのみが除外されます。

    デフォルトでは、LabelValue は文字列マッチングに使用され、コンテナーのラベル値と完全に一致する必要があります。値が ^ で始まり $ で終わる場合、正規表現マッチングが実行されます。例えば、LabelKeyio.kubernetes.container.name に、LabelValue^(nginx|cube)$ に設定すると、nginx または cube という名前のコンテナーが一致します。

複数のブラックリストエントリは OR 関係にあります。つまり、コンテナーのラベルがブラックリストエントリのいずれかを満たせば、そのコンテナーは除外されます。

環境変数ホワイトリスト

環境変数ホワイトリストは、収集対象のコンテナーを指定します。デフォルトでは空で、すべてのコンテナーの標準出力が収集されることを意味します。環境変数ホワイトリストを設定するには、EnvKey が必須で、EnvValue はオプションです。

  • EnvValue が空の場合、EnvKey を含む環境変数を持つすべてのコンテナーが一致します。

  • EnvValue が空でない場合、EnvKey=EnvValue に一致する環境変数を持つコンテナーのみが一致します。

    デフォルトでは、EnvValue は文字列マッチングです。つまり、その値が環境変数の値と完全に同じである場合にのみ一致が発生します。値が ^ で始まり $ で終わる場合、正規表現マッチングです。例えば、EnvKeyNGINX_SERVICE_PORT に、EnvValue^(80|6379)$ に設定すると、サービスポートが 80 または 6379 のコンテナーが一致します。

複数のホワイトリストエントリは OR 関係にあります。つまり、コンテナーの環境変数がキーと値のペアのいずれかを満たせば、そのコンテナーは一致します。

環境変数ブラックリスト

環境変数ブラックリストは、収集からコンテナーを除外します。デフォルトでは空で、どのコンテナーも除外されないことを意味します。環境変数ブラックリストを設定するには、EnvKey が必須で、EnvValue はオプションです。

  • EnvValue が空の場合、EnvKey を含む環境変数を持つすべてのコンテナーからのログが除外されます。

  • EnvValue が空でない場合、EnvKey=EnvValue に一致する環境変数を持つコンテナーのみが除外されます。

    デフォルトでは、EnvValue は文字列マッチングです。つまり、EnvValue が環境変数の値と完全に同じである場合にのみ一致します。値が ^ で始まり $ で終わる場合、正規表現マッチングです。例えば、EnvKeyNGINX_SERVICE_PORT に、EnvValue^(80|6379)$ に設定すると、サービスポートが 80 または 6379 のコンテナーが一致します。

複数のブラックリストエントリは OR 関係にあります。つまり、コンテナーの環境変数がキーと値のペアのいずれかを満たせば、そのコンテナーは除外されます。

K8s Pod ラベルホワイトリスト

Kubernetes ラベルホワイトリストを使用して、収集対象のコンテナーを指定します。Kubernetes ラベルホワイトリストを設定するには、LabelKey が必須で、LabelValue はオプションです。

  • LabelValue が空の場合、LabelKey を含む Kubernetes ラベルを持つすべてのコンテナーが一致します。

  • LabelValue が空でない場合、LabelKey=LabelValue に一致する Kubernetes ラベルを持つコンテナーのみが一致します。

    デフォルトでは、`LabelValue` は文字列マッチングに使用されます。`LabelValue` の値が Kubernetes ラベルの値と完全に同一である場合にのみ一致が発生します。値が ^ で始まり $ で終わる場合、正規表現マッチングです。例えば、LabelKeyapp に、LabelValue^(test1|test2)$ に設定すると、Kubernetes ラベルが app:test1 または app:test2 のコンテナーが一致します。

複数のホワイトリストエントリは OR 関係にあります。つまり、コンテナーの Kubernetes ラベルがホワイトリストエントリのいずれかを満たせば、そのコンテナーは一致します。

説明
  • Deployment などの Kubernetes コントロールリソースが実行中に Kubernetes ラベルを変更した場合、運用中の Pod は再起動されないため、Pod は変更を検出できません。これにより、マッチング ルールが無効になる可能性があります。Kubernetes ラベルのブラックリストとホワイトリストを構成する際は、Pod の Kubernetes ラベルを使用することを推奨します。Kubernetes ラベルの詳細については、「ラベルとセレクター」をご参照ください。

K8s Pod ラベルブラックリスト

Kubernetes ラベルブラックリストを使用して、収集からコンテナーを除外します。Kubernetes ラベルブラックリストを設定するには、LabelKey が必須で、LabelValue はオプションです。

  • LabelValue が空の場合、LabelKey を含む Kubernetes ラベルを持つすべてのコンテナーが除外されます。

  • LabelValue が空でない場合、LabelKey=LabelValue に一致する Kubernetes ラベルを持つコンテナーのみが除外されます。

    デフォルトでは、LabelValue には文字列マッチングが実行されます。LabelValue の値が Kubernetes ラベルの値と完全に同じである場合にのみ一致が発生します。値が ^ で始まり $ で終わる場合、正規表現マッチングが実行されます。例えば、LabelKeyapp に、LabelValue^(test1|test2)$ に設定すると、Kubernetes ラベルが app:test1 または app:test2 のコンテナーが一致します。

複数のブラックリストエントリは OR 関係にあります。つまり、コンテナーの Kubernetes ラベルがブラックリストエントリのいずれかを満たせば、そのコンテナーは除外されます。

説明
  • Deployment などの Kubernetes コントロールリソースが実行中に Kubernetes ラベルを変更した場合、運用中の Pod は再起動されないため、Pod は変更を検出できません。これにより、マッチング ルールが無効になる可能性があります。Kubernetes ラベルのホワイトリストとブラックリストを構成する際は、Pod の Kubernetes ラベルを使用することを推奨します。Kubernetes ラベルの詳細については、「ラベルとセレクター」をご参照ください。

ログタグエンリッチメント

環境変数と Kubernetes ラベルをログタグとしてログに追加します。

環境変数

このパラメーターを構成すると、Simple Log Service は環境変数関連のフィールドをログに追加します。例えば、[環境変数名]VERSION に、[タグ名]env_version に設定し、コンテナーに環境変数 VERSION=v1.0.0 が含まれている場合、この情報はログにフィールド __tag__:__env_version__: v1.0.0 として追加されます。

Pod ラベル

このパラメーターを構成すると、Simple Log Service は Kubernetes Pod ラベル関連のフィールドをログに追加します。例えば、[Pod ラベル名]app に、[タグ名]k8s_pod_app に設定し、Kubernetes Pod にラベル app=serviceA が含まれている場合、この情報はログにフィールド __tag__:__k8s_pod_app__: serviceA として追加されます。

ファイルエンコーディング

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

初回収集サイズ

構成が初めて有効になったとき、これはファイルの末尾から収集が開始されるサイズです。デフォルトの初回収集サイズは 1,024 KB です。

  • 初回収集で、ファイルが 1,024 KB より小さい場合、収集はファイルの先頭から開始されます。

  • 初回収集で、ファイルが 1,024 KB より大きい場合、収集はファイルの末尾から 1,024 KB の位置から開始されます。

ここで [初回収集サイズ] を変更できます。値の範囲は 0 から 10,485,760 KB です。

収集ブラックリスト

[収集ブラックリスト] スイッチをオンにすると、収集時に指定されたディレクトリやファイルを無視するためのブラックリストを構成できます。ディレクトリやファイル名は、完全一致またはワイルドカード文字を使用して指定できます。サポートされているワイルドカード文字は、アスタリスク (*) と疑問符 (?) のみです。

重要
  • [ファイルパス] を構成する際にワイルドカード文字を使用し、それらのパスの一部をフィルタリングする必要がある場合は、ブラックリスト構成が有効になるように、[収集ブラックリスト] に対応する完全なパスを入力する必要があります。

    例えば、[ファイルパス]/home/admin/app*/log/*.log に設定し、/home/admin/app1* の下のすべてのサブディレクトリをフィルタリングしたい場合は、[ディレクトリブラックリスト] を選択し、ディレクトリを /home/admin/app1*/** として構成する必要があります。/home/admin/app1* として構成すると、ブラックリストは有効になりません。

  • ブラックリストに対するマッチングには計算オーバーヘッドがかかります。ブラックリストのエントリ数は 10 以内にしてください。

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

ファイルパスブラックリスト、ファイルブラックリスト、ディレクトリブラックリストによる設定をサポートしています。詳細は以下の通りです:

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

  • [ファイルパスブラックリスト] を選択し、パスを /home/admin/private*.log として構成します。これにより、収集時に /home/admin/ ディレクトリ内の "private" で始まり ".log" で終わるすべてのファイルが無視されます。

  • [ファイルパスブラックリスト] を選択し、パスを /home/admin/private*/*_inner.log として構成します。これにより、収集時に /home/admin/ ディレクトリ下の private で始まるディレクトリ内の _inner.log で終わるファイルが無視されます。例えば、ファイル /home/admin/private/app_inner.log は無視されますが、ファイル /home/admin/private/app.log は収集されます。

ファイルブラックリスト

[ファイルブラックリスト] を選択し、ファイル名を app_inner.log として構成します。これにより、収集時に app_inner.log という名前のすべてのファイルが無視されます。

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

  • [ディレクトリブラックリスト] を選択し、ディレクトリを /home/admin/dir1 として構成します。これにより、収集時に /home/admin/dir1 ディレクトリ内のすべてのファイルが無視されます。

  • [ディレクトリブラックリスト] を選択し、ディレクトリを /home/admin/dir* として構成します。これにより、収集時に /home/admin/ ディレクトリ下の "dir" で始まるサブディレクトリ内のすべてのファイルが無視されます。

  • [ディレクトリブラックリスト] を選択し、ディレクトリを /home/admin/*/dir として構成します。これにより、収集時に /home/admin/ ディレクトリ下の第 2 レベルにある "dir" という名前のサブディレクトリ内のすべてのファイルが無視されます。例えば、/home/admin/a/dir ディレクトリ内のファイルは無視されますが、/home/admin/a/b/dir ディレクトリ内のファイルは収集されます。

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

デフォルトでは、1 つのログファイルからログを収集するために 1 つの Logtail 構成しか使用できません。ファイル内のログを複数回収集する必要がある場合は、[ファイルの複数回収集を許可] を有効にします。

高度なパラメーター

ファイル入力プラグインに関連するその他のオプションの高度な機能パラメーターについては、「CreateLogtailPipelineConfig」をご参照ください。

処理構成パラメーター

構成項目

説明

ログサンプル

収集するログのサンプル。実際のシナリオからのログを使用してください。ログサンプルは、ログ処理パラメーターの構成を支援し、構成の難易度を下げます。複数のサンプルを追加でき、合計長は 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)

複数行モード

  • タイプ:複数行ログとは、各ログエントリが複数の連続した行に分散しているものです。ログコンテンツから各ログエントリを区別する必要があります。

    • カスタム[先頭行に一致する正規表現] を使用して各ログエントリを区別します。

    • 複数行 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 が分割に失敗した場合:

    • 破棄:このログセグメントを直接破棄します。

    • 単一行を保持:ログテキストの各行を個別のログエントリとして保持し、合計 4 つのログエントリになります。

処理方法

[処理プラグイングループ] には [ネイティブプラグイン][拡張プラグイン] が含まれます。詳細については、「ネイティブおよび拡張処理プラグインの使用」をご参照ください。

重要

処理プラグインの使用に関する制限については、コンソールページのプロンプトをご参照ください。

  • Logtail 2.0:

    • ネイティブプラグインは任意の方法で組み合わせることができます。

    • ネイティブプラグインと拡張プラグインは同時に使用できますが、拡張プラグインはすべてのネイティブプラグインの後にのみ表示できます。

  • Logtail 2.0 より前のバージョン:

    • ネイティブプラグインと拡張プラグインを同時に追加することはサポートされていません。

    • ネイティブプラグインはテキストログの収集にのみ使用できます。ネイティブプラグインを使用する場合、以下の要件を満たす必要があります:

      • 最初のプラグインは、正規表現解析、区切り文字ベースの解析、JSON 解析、NGINX パターン解析、Apache パターン解析、または IIS パターン解析でなければなりません。

      • 2 番目から最後のプラグインまで、最大で 1 つの時刻解析プラグイン、1 つのフィルタリングプラグイン、および複数のデータマスキングプラグインを含めることができます。

    • [解析失敗時に元のフィールドを保持] および [解析成功時に元のフィールドを保持] パラメーターについては、以下の組み合わせのみが有効です。他の組み合わせは無効です。

      • 正常に解析されたログのみをアップロード:

        image

      • 成功時に解析済みログをアップロードし、失敗時に生ログをアップロード:

        image

      • 成功時に、解析済みログをアップロードし、生ログフィールドを追加します。失敗時には、生ログをアップロードします。

        例えば、生ログ "content": "{"request_method":"GET", "request_time":"200"}" が正常に解析された場合、生フィールドを追加すると、解析済みログにもう 1 つのフィールドが追加されます。フィールド名は [元のフィールドの新しい名前] (空白の場合は元のフィールド名がデフォルト) で、フィールド値は生ログ {"request_method":"GET", "request_time":"200"} です。

        image

リージョン

  1. Simple Log Service コンソールにログインします。[プロジェクト] リストで、目的のプロジェクトをクリックします。

  2. プロジェクト名の右側にある image アイコンをクリックして、プロジェクトの概要ページを開きます。

  3. [基本情報] セクションで、現在のプロジェクトのリージョン名を表示します。リージョン名とリージョン ID のマッピングについては、以下の表をご参照ください。

    リージョンは、Alibaba Cloud サービスの物理データセンターの地理的な場所です。リージョン ID は、Alibaba Cloud サービスリージョンの一意の識別子です。

    リージョン名

    リージョン ID

    中国 (青島)

    cn-qingdao

    中国 (北京)

    cn-beijing

    中国 (張家口)

    cn-zhangjiakou

    中国 (フフホト)

    cn-huhehaote

    中国 (ウランチャブ)

    cn-wulanchabu

    中国 (杭州)

    cn-hangzhou

    中国 (上海)

    cn-shanghai

    中国 (南京 - ローカルリージョン - 提供終了)

    cn-nanjing

    中国 (福州 - ローカルリージョン - 提供終了)

    cn-fuzhou

    中国 (深セン)

    cn-shenzhen

    中国 (河源)

    cn-heyuan

    中国 (広州)

    cn-guangzhou

    フィリピン (マニラ)

    ap-southeast-6

    韓国 (ソウル)

    ap-northeast-2

    マレーシア (クアラルンプール)

    ap-southeast-3

    日本 (東京)

    ap-northeast-1

    タイ (バンコク)

    ap-southeast-7

    中国 (成都)

    cn-chengdu

    シンガポール

    ap-southeast-1

    インドネシア (ジャカルタ)

    ap-southeast-5

    中国 (香港)

    cn-hongkong

    ドイツ (フランクフルト)

    eu-central-1

    米国 (バージニア)

    us-east-1

    米国 (シリコンバレー)

    us-west-1

    イギリス (ロンドン)

    eu-west-1

    UAE (ドバイ)

    me-east-1

    SAU (リヤド - パートナーリージョン)

    me-central-1

ネットワーク転送タイプ

ネットワークタイプ

対応するドメイン名タイプ

説明

シナリオ

Alibaba Cloud 内部ネットワーク

プライベートドメイン名

Alibaba Cloud 内部ネットワークは、ギガビット共有ネットワークです。このネットワークを介してログデータを転送すると、インターネット経由よりも高速で安定しています。内部ネットワークには、VPC とクラシックネットワークが含まれます。

ECS インスタンスと SLS プロジェクトが同じリージョンにある場合、またはサーバーが Express Connect を介して VPC に接続されている場合。

説明

ECS インスタンスと同じリージョンに SLS プロジェクトを作成して、Alibaba Cloud 内部ネットワーク経由でログを収集します。この方法では、パブリック帯域幅は消費されません。

インターネット

パブリックドメイン名

インターネット経由でのログデータ転送は、ネットワーク帯域幅によって制限されます。データ収集の速度と安定性は、ネットワークジッター、遅延、パケット損失によっても影響を受ける可能性があります。

以下の 2 つのシナリオでインターネット経由でデータを転送します。

  • ECS インスタンスと SLS プロジェクトが異なるリージョンにある。

  • サーバーが他のクラウドプロバイダーまたは自己管理のデータセンターでホストされている。

転送アクセラレーション

アクセラレーションエンドポイント

この方法は、Alibaba Cloud Content Delivery Network (CDN) エッジノードを使用してログ収集を高速化します。インターネット経由でのデータ収集と比較して、ネットワーク遅延と安定性において大きな利点があります。ただし、トラフィックには追加料金がかかります。

アプリケーションサーバーと SLS プロジェクトが異なる国にある場合、インターネット経由でのデータ転送は高い遅延と不安定性を引き起こす可能性があります。これらの問題を解決するために、転送アクセラレーションを使用します。詳細については、「転送アクセラレーション」をご参照ください。