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

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

最終更新日:Dec 05, 2025

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

注意事項

  • 権限要件:デプロイに使用する 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

      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 標準出力の収集

グローバル設定

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

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

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

入力設定

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

    重要

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

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 ラベルの名前。

    • タグ名:タグの名前。

ステップ 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。

よくある質問

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

  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リソース > マシングループ] ページに移動し、対象のマシングループの名前をクリックし、[マシングループ設定 > マシングループステータス] セクションで、[ハートビート] ステータスを確認します。

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

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

  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 設定による収集を許可] をオンにします。

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

[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 では利用できません。これらは使用しないでください:

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

  • 条件式: (?(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 設定が作成された後、名前は変更できません。

ログトピックタイプ

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

高度なパラメーター

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

入力設定パラメーター

パラメーター

説明

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 は、指定したログファイルディレクトリのみを監視することを指定します。

Stdout および Stderr

[Stdout および Stderr] を有効にすると、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)$ に設定すると、nginxdefault 名前空間内のすべてのコンテナが一致します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

環境変数ホワイトリスト

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

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

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

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

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

環境変数ブラックリスト

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

環境変数

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

Pod ラベル

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

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

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

初回収集サイズ

設定が最初に有効になったとき、これはファイルの末尾から収集が開始されるサイズです。デフォルトの初回収集サイズは 1,024 KB です。値の範囲は 0 から 10,485,760 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 つの Logtail 設定を使用してログファイルからログを収集することしかできません。ファイル内のログを複数回収集する必要がある場合は、[ファイルの複数回収集を許可] を有効にします。

高度なパラメーター

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

プロセッサ設定パラメーター

パラメーター

説明

ログサンプル

収集するログのサンプル。実際のシナリオからのログを使用してください。ログサンプルは、ログ処理パラメーターの設定を支援し、設定の難易度を下げます。複数のサンプルを追加でき、合計長は 1500 文字を超えません。

[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)

    上記のログコンテンツについて、SLS が分割に失敗した場合:

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

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

処理方法

[プロセッサ] には、[ネイティブプロセッサ] と [拡張プロセッサ] が含まれます。詳細については、「データ処理のための Logtail プラグインの概要」をご参照ください。

重要

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

  • Logtail 2.0:

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

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

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

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

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

      • 最初のプラグインは、正規表現解析、区切り文字ベースの解析、JSON 解析、NGINX パターン解析、Apache パターン解析、または IIS パターン解析である必要があります。

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

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

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

        image

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

        image

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

        例えば、生ログ "content": "{"request_method":"GET", "request_time":"200"}" が正常に解析された場合、生フィールドを追加すると、解析済みログに別のフィールドが追加されます。フィールド名は [元のフィールドの新しい名前] (入力されていない場合は、元のフィールド名がデフォルトになります) で、フィールド値は生ログ {"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

    サウジアラビア (リヤド - パートナー運営)

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