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

Simple Log Service:ホストのテキストログの一括収集

最終更新日:Jan 20, 2026

履歴分析、データ移行、バッチ処理などのタスクでは、従来の増分ログ収集方法は既存の静的ファイルの収集には適していません。一括ログ収集機能は、この制限に対処します。コンソールまたは API を使用して、収集設定をマシングループに一括で送信し、指定された静的ファイルの内容を一度の操作で収集できます。収集が完了すると、タスクは自動的に停止します。

適用範囲

  • LoongCollector 3.3 以降。

  • この機能は、Linux および Windows プラットフォーム上のホストからのログ収集をサポートします。コンテナーシナリオはサポートしていません。

収集設定のワークフロー

  1. 事前準備Project と Logstore を作成します。Project は、異なるサービスのログを分離するためのリソース管理ユニットであり、Logstore はログを保存するためのユニットです。

  2. マシングループの設定 (LoongCollector のインストール)ご利用のサーバーに LoongCollector をインストールし、サーバーをマシングループに追加します。マシングループを使用して、収集ノードを一元管理し、設定を配信し、サーバーの状態を監視できます。

  3. 一括ファイル収集ルールの作成と設定

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

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

      • 複数行ログ:Java の例外スタックや Python のトレースバックなど、複数行にまたがるログに対応します。行頭の正規表現を使用して各ログを識別し、同じログの連続する行を単一の完全なログエントリにマージできます。

      • 構造化解析:正規表現、デリミタ、NGINX モードなどの解析プラグインを使用して、生の文字列を構造化されたキーと値のペアに解析します。各フィールドは、独立してクエリおよび分析できます。

    3. ログのフィルタリング収集ブラックリストとコンテンツフィルタリングルールを設定して、有効なログコンテンツのみを保持し、冗長なデータの転送とストレージを削減します。

    4. ログの分類Topic を使用して、異なるサービス、サーバー、またはソースパスからのログを柔軟に区別します。

  4. クエリと分析の設定システムはデフォルトでフルテキストインデックスを有効にし、キーワード検索をサポートします。フィールドインデックスを有効にすると、構造化フィールドの term クエリと分析が可能になり、検索効率が向上します。

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

事前準備

ログを収集する前に、ログを管理および保存するための Project と Logstore を計画し、作成する必要があります。利用可能なリソースが既にある場合は、このステップをスキップして、「マシングループの設定 (LoongCollector のインストール)」に進むことができます。

Project の作成

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

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

    • リージョン:ログソースに基づいてリージョンを選択します。これは作成後に変更できません。

    • Project 名:Alibaba Cloud 内でグローバルに一意である必要があります。これは作成後に変更できません。

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

Logstore の作成

  1. Project 名をクリックして、対象の Project を開きます。

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

  3. [Logstore の作成] ページで、次のコア設定を完了します。

    • Logstore 名:Project 内で一意の名前を設定します。この名前は作成後に変更できません。

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

    • 課金モード

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

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

    • データ保持期間:ログを保持する日数 (1〜3,650 日、3,650 は永久保持を意味します) を設定します。デフォルトは 30 日です。

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

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

事前準備が完了したら、ご利用のサーバーに LoongCollector をインストールし、マシングループに追加します。

説明

以下のインストール手順は、ログソースが Alibaba Cloud ECS インスタンスであり、そのインスタンスと Simple Log Service Project が同じ Alibaba Cloud アカウントおよびリージョンにある場合にのみ適用されます。

ご利用の ECS インスタンスと Project が異なるアカウントまたはリージョンにある場合、またはログソースが自己管理サーバーである場合は、「LoongCollector のインストールと設定」をご参照ください。

手順:

  1. [imageLogstores] ページで、対象の Logstore 名の前にある image をクリックして展開します。

  2. [データ取り込み] > [Logtail 設定] をクリックします。[ワンタイム Logtail 設定] タブで、[Logtail 設定の追加] をクリックします。

  3. [クイックデータインポート] ダイアログボックスで、[ワンタイムファイル収集 - ホスト] カードの [データインポート] をクリックします。

  4. [マシン グループ設定] ページで、以下のパラメーターを設定します。

    • シナリオ: ホスト

    • インストール環境: ECS

    • マシングループの設定:対象サーバーの LoongCollector のインストール状況とマシングループの設定に基づき、次のいずれかの操作を実行します。

      • LoongCollector がインストールされ、マシングループに追加されている場合は、[ソースマシングループ] リストから選択し、[適用済みマシングループ] リストに追加します。再度作成する必要はありません。

      • LoongCollector がインストールされていない場合は、[マシングループの作成] をクリックします:

        以下の手順では、LoongCollector を自動的にインストールし、マシングループを作成する方法を説明します。
        1. システムは、Project と同じリージョンにある ECS インスタンスを自動的にリストアップします。ログを収集したいインスタンスを 1 つ以上選択します。

        2. [インストールしてマシン グループとして作成] をクリックします。選択した ECS インスタンスに LoongCollector が自動的にインストールされます。

        3. マシングループに[名前]を設定し、[OK] をクリックします。

        説明

        インストールが失敗するか、待機状態のままの場合は、ECS のリージョンが Project のリージョンと同じであることを確認してください。

      • LoongCollector が既にインストールされているサーバーを既存のマシングループに追加するには、「既存のマシングループにサーバーを追加する方法」をご参照ください。

  5. ハートビートステータスの確認: [次へ] をクリックします。 [マシングループのハートビートステータス] セクションが表示されます。 [ハートビート] ステータスを確認します。 ステータスが OK の場合、マシングループ接続は正常です。 [次へ] をクリックして Logtail 構成ページに移動します。

    ステータスが [FAIL] の場合、最初のハートビートが確立されるまでに時間がかかることがあります。約 2 分待ってからハートビートステータスを更新してください。ページを更新してもステータスが [FAIL] のままである場合は、「マシングループのハートビートが FAIL になる」でトラブルシューティング情報をご参照ください。

ステップ 2:一括ファイル収集ルールの作成と設定

LoongCollector をインストールしてマシングループを設定した後、[Logtail 設定] ページに移動して、ログ収集ルールと処理ルールを定義します。

1. グローバル設定と入力設定

収集設定の名前、ログ収集のソースと範囲を定義します。

グローバル設定

  • 構成名:収集設定のカスタム名。Project 内で一意である必要があります。作成後に変更することはできません。命名規則:

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

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

  • 実行タイムアウト:デフォルトは 600 秒 (10 分) です。範囲は 600〜604,800 秒 (10 分〜7 日) です。この時間内に収集が完了しない場合、タスクは自動的に停止し、残りの部分は収集されません。

    重要

    構成の配信に関する注意: 構成を更新すると、構成の有効期間はリセットされます。重複配信や予期しないデータレポートを避けるため、マシングループの範囲が正確であること、および最終タスク実行時間が [実行タイムアウト] を超えていないことを確認してください。

  • 更新時に強制再実行:デフォルトでは無効です。

    • シャットダウン:

      • [実行タイムアウト] または [入力構成] 以外のコレクション構成パラメーターを更新すると、システムは現在のコレクションの進行を継続します。コレクションタスクは再起動されず、コレクションの継続性が維持されます。

      • [実行タイムアウト] または [入力設定] を変更した場合、システムはコレクションタスクを再起動します。

    • 有効:収集設定を更新すると、収集タスクが強制的に再起動されます。これにより、すべてのデータ処理とレポートが最新の変更と一致することが保証されます。注意:更新前に収集されたデータは削除されません。それをクリアするには、「Simple Log Service の論理削除」をご参照ください。

入力設定

  • タイプ: 1 回限りのファイル収集 (LoongCollector 3.3 以降で利用可能)

  • ファイルパス:ログ収集のパス。

    説明

    一括収集の対象となるファイルのリストと各ファイルのサイズは、LoongCollector が設定をプルした時点で決定されます。新しく作成されたファイルや既存のファイルに追加された内容は収集されません。

    • Linux:/data/mylogs/**/*.log のように "/" で始まります。これは、/data/mylogs ディレクトリとそのサブディレクトリにある .log 拡張子を持つすべてのファイルを示します。

    • Windows:C:\Program Files\Intel\**\*.Log のようにドライブ文字で始まります。

  • 最大ディレクトリ監視深度: [ファイルパス] のワイルドカード ** が一致する最大のディレクトリ深度です。デフォルトは 0 で、現在のディレクトリのみが監視されることを意味します。


2. ログの処理と構造化

ログ処理ルールを設定することで、生の非構造化ログを構造化された検索可能なデータに変換し、ログのクエリと分析の効率を向上させることができます。ルールを設定する前に、ログサンプルを追加します。

[Logtail 構成] ページの [処理設定] エリアで、[ログサンプルの追加] をクリックし、収集するログの内容を入力します。システムはサンプルに基づいてログのフォーマットを識別し、正規表現と解析ルールの生成を支援します。これにより、構成が簡素化されます。

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

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

例:

未処理の生ログ

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

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

image

image

image

手順: [Logtail 設定] ページの [処理設定] エリアで、[複数行モード] を有効にします:

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

    • カスタム: RAW ログのフォーマットが固定されていない場合は、[行頭正規表現] を設定して各ログの開始行を識別する必要があります。

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

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

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

    • 複数行 JSON:すべての生ログが標準の JSON フォーマットである場合、Simple Log Service は単一の JSON ログ内の改行を自動的に処理します。

  • チャンク化失敗時の処理

    • 破棄:テキストセグメントが行頭ルールに一致しない場合、それは破棄されます。

    • 単一行として保持:一致しないテキストは分割され、元の単一行モードで保持されます。

シナリオ 2:構造化ログ

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

例:

生ログ

解析済みログ

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 : Mozi11a/5.0 (Nindows NT 10.0; Win64; x64) AppleMebKit/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 ディレクトリ内のファイルは収集されます。

4. ログの分類

複数のアプリケーションやインスタンスからのログが同じフォーマットで、パスが異なる場合 (例:/apps/app-A/run.log/apps/app-B/run.log)、収集時にそれらのソースを区別するのは困難です。Topic を設定することで、異なるアプリケーション、サービス、またはパスからのログを論理的に区別し、統一されたストレージ下で効率的な分類と正確なクエリを可能にします。

手順: グローバル設定 > その他のグローバル設定 > Topic 生成モード で、Topic の生成方法を選択します。以下の 3 種類がサポートされています。

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

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

  • ファイルパスから抽出:ログファイルの完全なパスからキー情報を抽出し、ログソースを動的にマークします。これは、複数のユーザーやアプリケーションが同じログファイル名を共有しているが、パスが異なる場合に適しています。複数のユーザーやサービスが異なるトップレベルディレクトリにログを書き込むが、サブパスとファイル名が同じ場合、ファイル名だけではソースを区別できません。例:

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

    この場合、ファイルパスから抽出を設定し、正規表現を使用して完全なパスからキー情報を抽出できます。一致した結果は Topic として使用され、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

ステップ 3:クエリと分析の設定

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

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

  • フィールドによる term クエリを実行するには、ページに[プレビューデータ]がロードされるのを待ち、[インデックスの自動生成]をクリックします。 Simple Log Service は、プレビューデータの最初のログに基づいてフィールドインデックスを生成します。

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

ステップ 4:収集結果の検証

構成が有効になったら、ターゲット Logstore のクエリと分析ページに移動し、[検索 & 分析] をクリックして収集されたログデータを表示します。

よくある質問

一括収集設定のライフサイクル

一括収集設定が作成されると、以下のライフサイクル特性を持ちます。

image
  • 構成配信の有効期間:構成が作成されてから 5 分以内に、LoongCollector は構成をプルできます。5 分後、新しい LoongCollector インスタンスはこの構成を取得できません。

  • 構成の自動削除:構成は作成後 7 日で自動的に削除されます。

  • タスク実行:収集は実行タイムアウト期間内に完了します。タイムアウト後、タスクは自動的に停止します。

一括ファイル収集と従来の既存ファイル収集方法の違い

従来の既存ファイル収集方法はもはや推奨されません。既存データのインポートには新しい機能を使用してください。手動で構成ファイルを作成する従来の方法と比較して、新しい一括ファイル収集機能は、構成の効率、信頼性、可観測性において大幅な改善を提供します。具体的な比較は次のとおりです。

比較項目

履歴ファイルの旧コレクションメソッド

新規 1回限りのファイルコレクション

設定方法

各ホストに local_event.json ファイルを作成する必要があります。これには、各マシンで 1 つずつ操作を実行する必要があります。

コンソールまたは API を使用して構成を作成し、マシングループレベルで一括配信できます。

ファイル一致

ファイルパスとファイル名を手動で入力する必要があります。

input_file に似たクイック構成で、ブラックリストフィルタリングをサポートします。

進捗監視

ローカルログなしのステートレスレポート

各ファイルの現在の収集オフセットまで詳細に追跡できるチェックポイントを提供します。

信頼性

低い。リソース制御やチェックポイントのない別のプロセスです。

高い。標準のパイプラインレベルのリソース管理を提供し、速度制限をサポートし、他の収集に影響を与えず、再開可能な転送をサポートします。

柔軟性

低い。既存の収集設定を使用する必要があります。

高い。収集設定を編成し、プロセス中に変更できます。

マシングループのハートビートが FAIL になる

  1. ユーザー ID の確認:ご利用のサーバーが ECS インスタンスでない場合、または ECS インスタンスと Project が異なる Alibaba Cloud アカウントに属している場合は、指定されたディレクトリに正しいユーザー ID が存在するかどうかを確認します。存在しない場合は、次のコマンドを実行して手動で作成します。

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

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

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

    • Linux:

      # カスタム ID を設定します。ディレクトリが存在しない場合は、手動で作成します。
      echo "user-defined-1" > /etc/ilogtail/user_defined_id
    • Windows:C:\LogtailData ディレクトリに、user_defined_id という名前の新しいファイルを作成し、カスタム ID を書き込みます。(ディレクトリが存在しない場合は、手動で作成します。)

  3. ユーザー ID とマシングループ ID の両方が正しく設定されている場合は、「LoongCollector (Logtail) のマシングループの問題のトラブルシューティング」でさらに調査してください。

既存のマシングループにサーバーを追加する方法

既存のマシングループがあり、新しくデプロイされた ECS インスタンスや自己管理サーバーなどの新しいサーバーを追加して、その収集設定を継承したい場合は、次の手順に従います。

重要

構成が作成されてから 5 分後、マシングループに新しく追加されたマシンは収集設定を受信しません。具体的な時間については、収集設定ページの上部にあるカウントダウンタイマーをご参照ください。

前提条件:

  • 設定済みのマシングループが既に存在する。

  • 新しいサーバーに LoongCollector がインストールされている。

手順:

  1. 対象のマシングループ ID を表示します。

    1. 対象の Project ページで、左側のナビゲーションウィンドウの imageリソース > マシングループ をクリックします。

    2. [マシングループ] ページで、対象のマシングループの名前をクリックします。

    3. マシングループ設定ページで、マシングループ ID を表示します。

  2. ID の種類に基づいて対応する操作を実行します。

    説明

    1 つのマシングループに Linux サーバーと Windows サーバーの両方を含めることはできません。Linux サーバーと Windows サーバーの両方で同じカスタム ID を設定しないでください。1 つのサーバーに複数のカスタム ID を設定でき、改行で区切ります。

    • タイプ 1:マシングループ ID が IP アドレスの場合

      1. サーバーで、次のコマンドを実行して app_info.json ファイルを開き、ip の値を確認します。

        cat /usr/local/ilogtail/app_info.json
      2. 対象マシングループの構成ページで、[変更] をクリックし、サーバーの IP アドレスを入力します。複数の IP アドレスは改行で区切ります。

      3. 構成が完了したら、[保存] をクリックし、ハートビートのステータスを確認します。ハートビートのステータスが OK になると、サーバーはマシングループのコレクション構成を自動的に適用します。

        ハートビートステータスが [FAIL] の場合は、「マシングループのハートビートが FAIL になる」でさらにトラブルシューティングを行ってください。
    • タイプ 2:マシングループ ID がカスタム ID の場合

      オペレーティングシステムに応じて、対象のマシングループと一致するカスタム ID 文字列を指定されたファイルに書き込みます。

      ディレクトリが存在しない場合は、手動で作成してください。ファイルパスと名前は Simple Log Service によって固定されており、カスタマイズできません。
      • Linux:カスタム文字列を /etc/ilogtail/user_defined_id ファイルに書き込みます。

      • Windows:カスタム文字列を C:\LogtailData\user_defined_id に書き込みます。

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

正規表現解析

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

例:

未処理の生ログ

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

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:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 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:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 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 設定] ページの [プロセッサー設定] セクションで、[プロセッサーの追加] をクリックし、[ネイティブプロセッサー] > [データ解析 (JSON モード)] を選択します:

  • 元のフィールド:解析する生ログを含むフィールド。デフォルト値は content です。

  • その他のパラメーターについては、「ユースケース 2:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 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:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 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 設定ファイル (通常は /etc/apache2/apache2.conf にあります) で定義されている LogFormat と完全に同じであることを確認してください。

  • その他のパラメーターについては、「ユースケース 2:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 2:構造化ログ」の一般的な設定パラメーターの説明をご参照ください。

IIS ログ解析

IIS ログフォーマットの定義に基づいて、ログコンテンツを複数のキーと値のペアに構造化します。

比較例:

生ログ

Microsoft IIS サーバー固有のフォーマットへの適応

#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
c-ip: cs-username
cs-bytes: sc-substatus
cs-method: cs-method
cs-uri-query: cs-uri-query
cs-uri-stem: cs-uri-stem
cs-username: s-port
date: #Fields:
s-computername: s-sitename
s-ip: s-ip
s-sitename: time
sc-bytes: sc-status
sc-status: c-ip
sc-win32-status: cs (User-Agent)
time: date
time-taken: sc-win32-status

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

  • ログフォーマット:IIS サーバーのログフォーマットを選択します。

    • IIS:Microsoft インターネットインフォメーションサービスのログファイルフォーマット。

    • NCSA:Common Log Format。

    • W3C は W3C 拡張ログファイルフォーマットを指します。

  • IIS 構成フィールド:IIS または NCSA を選択すると、SLS はデフォルトの IIS 構成フィールドを使用します。W3C を選択した場合は、フィールドを IIS 構成ファイルの logExtFileFlags パラメーターの値に設定する必要があります。例:

    logExtFileFlags="Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent, BytesRecv, TimeTaken, ServerPort, UserAgent, Cookie, Referer, ProtocolVersion, Host, HttpSubStatus"
  • その他のパラメーターについては、「ユースケース 2:構造化ログ」の共通設定パラメーターの説明をご参照ください。

  • その他のパラメーターについては、「シナリオ 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) プロセスが実行されている環境のタイムゾーンです。