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

Simple Log Service:ホストからテキストログを収集する

最終更新日:Nov 15, 2025

異なるサーバーに分散しているビジネスログやシステムログは、一元的に検索、監視、分析することが困難です。Logtail コレクターを使用して、ECS インスタンス、自己管理 IDC、または他のクラウドプロバイダーのホストからテキストログをリアルタイムで収集し、Simple Log Service に送信して一元管理および分析できます。完全なログを収集するには、過去のログファイルをインポートできます。

範囲

  • サポートされているオペレーティングシステムとアーキテクチャ:

    LoongCollector は Linux システムのみをサポートします。Windows ホストの場合は、Logtail を使用してください。新しい収集シナリオには LoongCollector を使用することをお勧めします。

    LoongCollector は、Alibaba Cloud Simple Log Service の次世代ログ収集エージェントです。これは Logtail のアップグレード版です。LoongCollector または Logtail のいずれか一方のみをインストールする必要があり、両方をインストールする必要はありません。
  • 計算リソース要件:

    • CPU: 最小 0.4 コア。

    • メモリ: 最小 300 MB。

    • 推奨使用量: 安定した動作を確保するため、LoongCollector (Logtail) の実際のリソース使用量を制限の 80% 未満に保ってください。実際の使用量は、収集速度、監視対象のディレクトリとファイルの数、送信ブロックの程度などの要因によって異なります。

  • 権限要件:

    Resource Access Management (RAM) ユーザーを使用する場合は、AliyunLogFullAccess および AliyunECSFullAccess 権限を付与する必要があります。詳細な権限付与については、「付録: カスタム権限ポリシー」をご参照ください。

収集構成ワークフロー

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

  2. マシングループの構成 (LoongCollector のインストール): サーバーの種類に基づいて LoongCollector をインストールし、サーバーをマシングループに追加します。マシングループは、収集ノードの管理、構成の配布、およびサーバーの状態管理に使用されます。

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

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

    2. ログの処理と構造化: ログ形式に基づいて処理ルールを構成します。

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

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

    3. ログフィルタリング: 収集ブラックリストとコンテンツフィルタリングルールを構成して、有効なログコンテンツをスクリーニングします。これにより、冗長なデータの転送とストレージが削減されます。

    4. ログの分類: Topic を使用して、さまざまなアプリケーション、サーバー、またはパスソースからのログを区別します。

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

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

準備

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

プロジェクトの作成

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

  2. [Create Project] をクリックし、次のパラメーターを構成します:

    • リージョン: ログソースが配置されているリージョン。この設定は作成後に変更できません。

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

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

Logstore の作成

  1. プロジェクト名をクリックして、ターゲットプロジェクトに移動します。

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

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

    • Logstore 名: プロジェクト内で Logstore に付ける一意の名前。この名前は作成後に変更できません。

    • Logstore タイプ: 要件に応じて [標準] または [クエリ] を選択します。

    • 課金モード:

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

      • 取り込みデータ量課金: 課金は書き込まれた生データの量にのみ基づきます。この課金方法には、30 日間の無料ストレージと、データ変換や配信などの無料機能が含まれます。ストレージ期間が約 30 日のビジネスシナリオや、複雑なデータ処理パイプラインに最適です。

    • データ保持期間: ログを保持する日数 (1 から 3,650)。値 3,650 は永続的なストレージを示します。デフォルトは 30 日です。

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

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

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

説明

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

ECS インスタンスとプロジェクトが異なるアカウントまたはリージョンにある場合、またはログソースがオンプレミスサーバーである場合は、「LoongCollector のインストールと構成」をご参照ください。

手順:

  1. image[Logstores] ページで、ターゲット Logstore 名の前にある image アイコンをクリックして展開します。

  2. [データ取り込み] の横にある image アイコンをクリックし、[クイックデータ取り込み] ダイアログボックスで、テキストログ取り込みテンプレート (Single-line Text Log など) を選択して [今すぐ取り込み] をクリックします。

    すべてのテキストログテンプレートは、解析プラグインのみが異なります。残りの構成プロセスは同じで、後で変更できます。
  3. [マシングループ設定] ページで、次のパラメーターを構成します:

    • シナリオ: ホスト

    • インストール環境: ECS

    • マシングループの構成: ターゲットサーバーの LoongCollector のインストール状況とマシングループの構成に基づいて、対応する操作を選択します:

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

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

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

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

        3. マシングループの [名前] を構成し、[OK] をクリックします。

        説明

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

      • LoongCollector が既にインストールされているサーバーを既存のマシングループに追加するには、よくある質問の「既存のマシングループにサーバーを追加するにはどうすればよいですか?」をご参照ください。

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

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

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

LoongCollector のインストールとマシングループの構成が完了したら、[Logtail 構成] ページに移動し、ログの収集と処理のルールを定義します。

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

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

グローバル構成:

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

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

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

入力構成:

  • タイプ: テキストログ収集

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

    • 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] を選択します。

    • カスタム: 可変形式の生ログの場合、[行頭正規表現] を構成して、各ログの開始行を識別できます。

      • 行頭正規表現: データ全体の行に一致する正規表現を自動生成または手動で入力できます。たとえば、上記の例の正規表現は \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.* です。

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

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

    • 複数行 JSON: ログが標準の JSON 形式である場合、Simple Log Service は単一の生ログ内の改行を自動的に処理します。

  • 分割失敗時のアクション:

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

    • 単一行として保持: 一致しないテキストを別々の行に保持します。

シナリオ 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: 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 ディレクトリ内のファイルは収集されます。

4. ログの分類

複数のアプリケーションやインスタンスからのログが同じ形式でパスが異なる場合 (例: /apps/app-A/run.log/apps/app-B/run.log)、収集時にそれらのソースを区別することは困難です。Topic を構成することで、異なるアプリケーション、サービス、またはパスからのログを論理的に区別できます。これにより、単一の Logstore 内で効率的な分類と正確なクエリが可能になります。

手順: [グローバル構成] > [その他のグローバル構成] > [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: クエリと分析の構成

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

  • 全文インデックスはデフォルトで有効になっており、生のログコンテンツに対するキーワード検索をサポートします。

  • フィールドによる正確なクエリを行うには、プレビューデータが読み込まれるのを待ってから、[インデックスの自動生成] をクリックします。Simple Log Service は、プレビューデータの最初のエントリに基づいて フィールドインデックスを生成します。

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

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

構成が完了したら、マシングループに適用して保存します。しばらく待ってから、次のチェックリストを使用して確認します。

検証チェックリスト

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

  2. LoongCollector のステータスを確認する: sudo /etc/init.d/loongcollectord status

  3. マシングループのハートビートを確認する: image[リソース] > [マシングループ] ページに移動します。ターゲットマシングループ名をクリックします。[マシングループ設定] > [マシングループステータス] セクションで、[ハートビート] ステータスを確認します。

  4. ログのクエリ: ターゲット Logstore のクエリおよび分析ページに移動します。[検索と分析] (デフォルトの時間範囲は過去 15 分) をクリックし、新しいログが流入しているかどうかを確認します。

一般的な問題のトラブルシューティング

マシングループのハートビートが FAIL です

  1. ユーザー ID の確認: サーバーが ECS インスタンスでない場合、または ECS インスタンスとプロジェクトが異なる 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) マシングループの問題のトラブルシューティング」をご参照ください。


データが収集されない

  1. 増分ログの確認: 収集のために LoongCollector (Logtail) を構成した後、ターゲットログファイルに新しいログが追加されない場合、LoongCollector (Logtail) はそのファイルからデータを収集しません。

  2. マシングループのハートビートステータスの確認: image[リソース] > [マシングループ] ページに移動します。ターゲットマシングループ名をクリックします。[マシングループ設定] > [マシングループステータス] セクションで、[ハートビート] ステータスを確認します。

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

    1. image[リソース] > [マシングループ] ページに移動し、ターゲットマシングループ名をクリックして、[マシングループ設定] ページに移動します。

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

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


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

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

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

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

制限

制限

制限事項

単一ログの長さ

デフォルトの制限は 512 KB です。max_read_buffer_size 起動パラメーターを使用して、最大 8 MB まで調整できます。詳細については、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。

複数行ログが行頭正規表現によって分割された後、各ログのサイズ制限は依然として 512 KB です。ログが 512 KB を超える場合、収集のために複数のエントリに強制的に分割されます。たとえば、単一のログが 1,025 KB の場合、最初の 512 KB が処理され、次に次の 512 KB、最後に残りの 1 KB が処理されます。最終的な結果は、複数の不完全なログエントリになります。

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

UTF-8 または GBK エンコーディングのログファイルをサポートします。処理性能を向上させるために、UTF-8 を使用することをお勧めします。

警告

ログファイルが別のエンコード形式を使用している場合、文字化けやデータ損失などの問題が発生する可能性があります。

ログファイルのローテーション

ログローテーションキューのデフォルトサイズは 20 です。logreader_max_rotate_queue_size 起動パラメーターを使用して調整できます。詳細については、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。

収集パスを xxx.log または xxx.log* 形式に設定できます。

重要

同じ Logtail インスタンスでこれら 2 つの形式を混在させないでください。そうしないと、同じファイルが複数の Logtail 収集構成に一致し、重複収集が発生する可能性があります。

20 を超えるファイルがまだ処理されていない場合、新しく生成されたログは失われます。このような場合は、まず Logstore シャードの書き込みクォータを超えていないか確認し、Logtail の同時実行レベルを調整してください。詳細については、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。

ログ解析がブロックされたときの収集動作

ログ解析がブロックされると、Logtail はそのログファイルのファイル記述子を開いたままにします。これにより、ブロック中にファイルが削除されてデータが失われるのを防ぎます。

解析がブロックされている間に複数のログファイルローテーションが発生した場合、Logtail はファイルをローテーションキューに配置します。

正規表現

Perl 互換正規表現 (PCRE) をサポートします。

JSON

標準 JSON (RFC7159ECMA-404) を完全にサポートします。{"name": "\xE5\xAD\xA6"} などの非標準 JSON はサポートされていません。

ファイルを開く動作

Logtail は、データ整合性を確保するために、収集されたファイルとローテーションキュー内のファイルを開いたままにします。ファイルは次の状況で閉じられます:

  • ファイルが 5 分以上変更されていない。

  • ローテーションが発生し、収集が完了した。

  • Logtail 収集構成が変更された。

ファイルが完全に収集されたか、まだ書き込み中であるかに関係なく、ファイルが削除された後、制御可能な時間内にファイルハンドルを解放したい場合は、force_release_deleted_file_fd_timeout 起動パラメーターを使用してタイムアウトを設定できます。詳細については、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。

初期ログ収集動作

Logtail は増分ログファイルのみを収集します。ファイルが最初に変更されたことが検出されたとき、そのサイズが 1 MB (コンテナー標準出力の場合は 512 KB) を超える場合、収集は最後の 1 MB から開始されます。それ以外の場合は、ファイルの先頭から開始されます。

Logtail 収集構成の tail_size_kb パラメーターを使用して、新しいファイルの初期収集サイズを調整できます。詳細については、「Logtail 構成 (レガシー)」をご参照ください。

Logtail 収集構成が適用された後、ログファイルが変更されない場合、Logtail はそのファイルを収集しません。過去のファイルを収集するには、「過去のログファイルのインポート」をご参照ください。

ファイルが上書きされたときの動作

Logtail は、inode とファイルの最初の 1,024 バイトのハッシュを使用してファイルを識別します。ファイルが上書きされ、inode または最初の 1,024 バイトのハッシュのいずれかが変更された場合、ファイルは新しいファイルとして扱われ、収集は最初から開始されます。それ以外の場合、収集されません。

ファイルが移動されたときの動作

ファイルが移動された後、このファイルに一度も一致したことのない Logtail 収集構成に一致する場合、移動されたドキュメントは新しいファイルとして扱われ、収集は最初から開始されます。それ以外の場合、収集されません。

ファイル収集履歴

Logtail は、ファイルが変更された後に増分部分のみが収集されるように、ファイル収集履歴をメモリに保持します。保持範囲外のログに書き込みが発生した場合、重複収集が発生します。

  • デフォルトでは、過去 1 か月間の履歴ファイルが保持されます。

  • 同じディレクトリに 5,000 を超える履歴ファイルがある場合、過去 1 週間のレコードのみが保持されます。

  • 同じディレクトリに 10,000 を超える履歴ファイルがある場合、過去 1 日のレコードのみが保持されます。

非標準テキストログ

ログの行に \0 が含まれている場合、2.1.10 および 3.0.12 より後のバージョンでは、ログの中央にある \0 のみが保持されます。プレフィックスとサフィックスの \0 部分は破棄されます。他のバージョンでは、最初の \0 で切り捨てられるか、完全に保持される場合があります。アップグレードすることをお勧めします。他のエスケープ文字 (ASCII カラーなど) や非表示文字については、Logtail はそのまま報告します。

課金

  • LoongCollector または Logtail のインストールは無料です。

  • ログの取り込み、ストレージ、インデックス、クエリ、変換、および転送には、Logstore の課金モードに基づいて料金が発生します。

  • インストールまたは構成中に Global Accelerator 機能を使用する場合、アクセラレーションネットワークを介して送信されるデータに対して追加のトラフィック料金が発生します。

よくある質問

ECS サーバーから別の Alibaba Cloud アカウントのプロジェクトにログを送信するにはどうすればよいですか?

LoongCollector をインストールしていない場合は、「インストールと構成」をご参照ください。インストールには適切なクロスアカウントシナリオを選択してください。

LoongCollector を既にインストールしている場合は、次の手順に従ってユーザー ID を構成します。この ID は、サーバーが Simple Log Service プロジェクトを所有するアカウントによってアクセスされ、そのログが収集される権限を持っていることを示します。

ユーザー ID を構成する必要があるのは、アカウント外の ECS インスタンス、オンプレミスサーバー、または他のクラウドプロバイダーのサーバーからログを収集する場合のみです。
  1. Simple Log Service を所有する Alibaba Cloud アカウントの ID をコピーします: 右上隅のプロファイル画像にマウスを合わせます。表示されるタブからアカウント ID を表示してコピーします。

  2. ログを収集するサーバーにログインし、Alibaba Cloud アカウント ID ファイルを作成してユーザー ID を構成します:

    touch /etc/ilogtail/users/{Alibaba_Cloud_account_ID} # /etc/ilogtail/users ディレクトリが存在しない場合は、手動で作成します。ユーザー ID 構成ファイルにはファイル名のみが必要で、ファイル拡張子は必要ありません。

ECS サーバーから同じアカウントの別のリージョンにあるプロジェクトにログを送信するにはどうすればよいですか?

LoongCollector をインストールしていない場合は、「インストールと構成」をご参照ください。インストールには適切なクロスリージョンシナリオを選択してください。

LoongCollector を既にインストールしている場合は、LoongCollector 構成を変更する必要があります。

  1. sudo /etc/init.d/ilogtaild stop コマンドを実行して LoongCollector を停止します。

  2. LoongCollector 起動構成ファイル ilogtail_config.json を変更します。ネットワーク要件に基づいて、次の 2 つの方法のいずれかを選択します:

    構成ファイルパス: /usr/local/ilogtail/ilogtail_config.json

    • 方法 1: インターネットを使用して転送する

      RegionID」をご参照ください。構成ファイル内のリージョンを Simple Log Service が配置されているリージョンに置き換えます。変更するフィールドは次のとおりです:

      • primary_region

      • config_servers のリージョン部分

      • data_serversregionendpoint_list のリージョン部分

    • 方法 2: 転送アクセラレーションを使用する

      data_server_list パラメーターのエンドポイント行を log-global.aliyuncs.com に置き換えます。ファイルパスについては、「Logtail のネットワークタイプ、起動パラメーター、および構成ファイル」をご参照ください。

    構成ファイルの例

    $cat 
    {
        "primary_region" : "cn-shanghai",
        "config_servers" :
        [
            "http://logtail.cn-shanghai.log.aliyuncs.com"
        ],
        "data_servers" :
        [
            {
                "region" : "cn-shanghai",
                "endpoint_list": [
                    "cn-shanghai.log.aliyuncs.com"
                ]
            }
        ],
        "cpu_usage_limit" : 0.4,
        "mem_usage_limit" : 384,
        "max_bytes_per_sec" : 20971520,
        "bytes_per_sec" : 1048576,
        "buffer_file_num" : 25,
        "buffer_file_size" : 20971520,
        "buffer_map_num" : 5
    }
  1. sudo /etc/init.d/ilogtaild start コマンドを実行して LoongCollector を起動します。

既存のマシングループにサーバーを追加するにはどうすればよいですか?

構成済みのマシングループがあり、新しくデプロイされた ECS インスタンスやオンプレミスサーバーなどの新しいサーバーを追加して、その収集構成を継承したい場合は、次の手順でバインドできます。

前提条件:

手順:

  1. ターゲットマシングループ ID を表示します:

    1. ターゲットプロジェクトページで、左側のナビゲーションウィンドウの image[リソース] > [マシングループ] をクリックします。

    2. [マシングループ] ページで、ターゲットマシングループ名をクリックします。

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

  2. ID タイプに基づいて、対応する操作を実行します:

    説明

    単一のマシングループに Linux サーバーと Windows サーバーの両方を含めることはできません。Linux サーバーと Windows サーバーの両方に同じカスタム ID を構成しないでください。サーバーには、改行で区切られた複数のカスタム 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 に書き込みます。

別のプロジェクトから収集構成をインポートするにはどうすればよいですか?

準備マシングループ構成が完了したら、既存のプロジェクトから現在の Logstore に収集構成をすばやくインポートできます。これにより、繰り返しの構成を回避し、効率を向上させることができます。

手順:

  1. マシングループ構成が完了したら、[次へ] をクリックして [Logtail 構成] ページに移動します。

  2. ページの右上隅にある [他の構成をインポート] をクリックします。

  3. インポート元のプロジェクトと、そのプロジェクト下の収集構成を選択します。

  4. [OK] をクリックします。システムは選択した構成を自動的に読み込みます。

  5. インポートされた構成情報が正しいことを確認した後、[次へ] をクリックして [クエリと分析の構成] ページに移動し、後続の構成を完了します。

マシングループ ID として使用するサーバーの IP アドレスを取得するにはどうすればよいですか?

LoongCollector (Logtail) がインストールされているサーバーで、/usr/local/ilogtail/app_info.json ファイルを開き、ip の値を確認します。

Logtail によって自動的に取得されたサーバー IP アドレスは、以下に示すように、app_info.json ファイルの ip フィールドに記録されます。IP地址

重要
  • 複数のサーバーがある場合は、対応する IP アドレスを手動で入力します。IP アドレスは改行で区切る必要があります。

  • 単一のマシングループに Linux サーバーと Windows サーバーの両方を含めることはできません。Windows サーバーと Linux サーバーの両方の IP アドレスを同じ [マシングループ] に追加しないでください。

同じログファイルを複数の収集構成で同時に収集するにはどうすればよいですか?

デフォルトでは、データの重複を避けるため、Simple Log Service はテキストログファイルが複数の Logtail 構成によって収集されることを制限しています。同じログファイルを複数の収集構成で同時に収集できるようにするには、ファイルが複数回収集されることを許可する機能をを手動で有効にする必要があります。

手順:

重要

複数のコピーを収集すると、ファイル読み取り IO、計算リソース、およびネットワーク IO が線形に増加します。

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

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

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

  4. [Logtail 構成] をクリックします。構成リストで、ターゲットの Logtail 構成を見つけ、[アクション] 列の [Logtail 構成の管理] をクリックします。

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

    • [入力構成] > [その他の入力構成] で、[単一ファイルの複数収集を許可] を有効にします。

  6. 構成が完了したら、[保存] をクリックします。

最後のログエントリが長い遅延の後に報告されるのはなぜですか? なぜ時々切り捨てられるのですか?

原因: ログの切り捨ては通常、ログファイルの末尾に改行がない場合、または例外スタックなどの複数行ログが完全に書き込まれていない場合に発生します。エージェントはログが終了したかどうかを判断できないため、コンテンツの最後の部分が時期尚早に分割されたり、遅れて報告されたりする可能性があります。LoongCollector (Logtail) のバージョンによって、処理メカニズムが異なります:

  • 1.8 より前のバージョン:
    ログの最後の行に改行 (キャリッジリターン) がない場合、または複数行のログ段落が終了していない場合、エージェントは次の書き込みを待って出力をトリガーします。これにより、最後のログエントリが新しいログが書き込まれるまで長時間送信されずに保持される可能性があります。

  • バージョン 1.8 以降:
    ログがスタックするのを防ぐために、タイムアウトリフレッシュメカニズムが導入されました。不完全なログ行が検出されると、システムはタイマーを開始します。タイムアウト後、現在のコンテンツを自動的に送信し、ログが最終的に収集されることを保証します。

    • デフォルトのタイムアウト: 60 秒 (ほとんどのシナリオで完全性を確保するため)

    • この値は必要に応じて調整できますが、0 に設定することはお勧めしません。ログの切り捨てや部分的なコンテンツの損失を引き起こす可能性があるためです。

解決策:

待機時間を延長して、収集される前に完全なログが書き込まれるようにすることができます:

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

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

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

  4. [Logtail 構成] をクリックします。構成リストで、ターゲットの Logtail 構成を見つけ、[アクション] 列の [Logtail 構成の管理] をクリックします。

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

    • [入力構成] > [その他の入力構成] > [高度なパラメーター] で、次の JSON 構成を追加してタイムアウトをカスタマイズします:

      {
        "FlushTimeoutSecs": 1
      }
      • デフォルト値: 起動パラメーター default_reader_flush_timeout によって決定されます (通常は数秒)。

      • 単位: 秒。

      • 推奨値: ≥1 秒。ログの切り捨てや部分的なコンテンツの損失を引き起こす可能性があるため、0 に設定することはお勧めしません。

  6. 構成が完了したら、[保存] をクリックします。

LoongCollector (Logtail) が動作中に内部エンドポイントからインターネットに切り替わるのはなぜですか? 自動的に元に戻すことはできますか?

動作中、LoongCollector (Logtail) が内部の同一リージョンエンドポイントとの通信異常 (ネットワーク障害や接続タイムアウトなど) を検出した場合、システムは自動的にパブリックドメイン名に切り替えてデータを送信します。これにより、ログ収集の継続性と信頼性が確保され、ログのバックログや損失が防止されます。

  • LoongCollector: 回復後、自動的に内部ネットワークに切り替わります。

  • 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 構成] ページの [処理構成] セクションで、[処理プラグインの追加] をクリックし、[ネイティブ処理プラグイン] > [JSON 解析] を選択します:

  • ソースフィールド: 解析対象の生ログを含むフィールド。デフォルト値は 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 オブジェクトが展開されたときのフィールド名の区切り文字。デフォルト値はアンダースコア (_) です。

  • 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 構成フィールド] は、[ログ形式] に基づいて自動的に入力されます。

    重要

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

  • その他のパラメーターについては、「シナリオ 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 を選択すると、Simple Log Service はデフォルトの 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: 構造化ログ」の共通構成パラメーターの説明をご参照ください。


データマスキング

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

例:

処理なしの生ログ

マスキング結果

[{'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) プロセスが実行されている環境のタイムゾーンです。

付録: 権限ポリシーリファレンス

Alibaba Cloud アカウントログイン: デフォルトでは、Alibaba Cloud アカウントは完全な権限を持ち、すべての操作を実行できます。

RAM ユーザーログイン: Alibaba Cloud アカウントは、RAM ユーザーに必要なアクセスポリシーを付与する必要があります。

カスタム権限ポリシー (詳細な制御)

システムポリシーが最小権限の原則を満たさない場合は、詳細な権限付与のためにカスタムポリシーを作成できます。以下は、これらの権限を含む権限ポリシーの例です:

  • プロジェクトの表示: プロジェクトリストと指定されたプロジェクトの詳細を表示します。

  • Logstore の管理: プロジェクト下の Logstore を作成、変更、または削除します。

  • 収集構成の管理: 収集構成を作成、削除、および変更します。

  • ログの表示: 指定されたプロジェクト下の指定された Logstore 内のデータをクエリおよび分析します。

${regionName}${uid}${projectName}、および ${logstoreName} を、実際のリージョン名、Alibaba Cloud アカウント ID、ターゲットプロジェクト、および Logstore に置き換えます。

ポリシーの例

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "log:ListProject",
        "log:GetAcceleration",
        "log:ListDomains",
        "log:GetLogging",
        "log:ListTagResources"
      ],
      "Resource": "acs:log:${regionName}:${uid}:project/*"
    },
    {
      "Effect": "Allow",
      "Action": "log:GetProject",
      "Resource": "acs:log:${regionName}:${uid}:project/${projectName}"
    },
    {
      "Effect": "Allow",
      "Action": [
        "log:ListLogStores",
        "log:*LogStore",
        "log:*Index",
        "log:ListShards",
        "log:GetCursorOrData",
        "log:GetLogStoreHistogram",
        "log:GetLogStoreContextLogs",
        "log:PostLogStoreLogs"
      ],
      "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/*"
    },
    {
      "Effect": "Allow",
      "Action": "log:*",
      "Resource": [
        "acs:log:${regionName}:${uid}:project/${projectName}/logtailconfig/*",
        "acs:log:${regionName}:${uid}:project/${projectName}/machinegroup/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "log:ListSavedSearch",
      "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/savedsearch/*"
    },
    {
      "Effect": "Allow",
      "Action": "log:ListDashboard",
      "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/dashboard/*"
    },
    {
      "Effect": "Allow",
      "Action": "log:GetLogStoreLogs",
      "Resource": "acs:log:${regionName}:${uid}:project/${projectName}/logstore/${logstoreName}"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeTagKeys",
        "ecs:DescribeTags",
        "ecs:DescribeInstances",
        "ecs:DescribeInvocationResults",
        "ecs:RunCommand",
        "ecs:DescribeInvocations",
        "ecs:InvokeCommand"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "oos:ListTemplates",
        "oos:StartExecution",
        "oos:ListExecutions",
        "oos:GetExecutionTemplate",
        "oos:ListExecutionLogs",
        "oos:ListTaskExecutions"
      ],
      "Resource": "*"
    }
  ]
}

権限

対応する操作

リソース

読み取り専用プロジェクト

  • GetAcceleration

  • GetLogging

  • ListProject

  • ListDomains

  • ListTagResources

acs:log:${regionName}:${uid}:project/*

指定されたプロジェクトの取得

GetProject

acs:log:${regionName}:${uid}:project/${projectName}

Logstore の管理

  • ListLogStores

  • *LogStore

  • *Index

  • ListShards

  • GetCursorOrData

  • GetLogStoreHistogram

  • GetLogStoreContextLogs

  • PostLogStoreLogs

acs:log:${regionName}:${uid}:project/${projectName}/*

LoongCollector (Logtail) データインポートの管理

*

  • acs:log:${regionName}:${uid}:project/${projectName}/logtailconfig/*

  • acs:log:${regionName}:${uid}:project/${projectName}/machinegroup/*

保存された検索のクエリ

ListSavedSearch

acs:log:${regionName}:${uid}:project/${projectName}/savedsearch/*

ダッシュボードのクエリ

ListDashboard

acs:log:${regionName}:${uid}:project/${projectName}/dashboard/*

指定された Logstore 内のログのクエリ

GetLogStoreLogs

acs:log:${regionName}:${uid}:project/${projectName}/logstore/${logstoreName}

ECS を操作する権限

  • DescribeTagKeys

  • DescribeTags

  • DescribeInstances

  • DescribeInvocationResults

  • RunCommand

  • DescribeInvocations

  • InvokeCommand

*

OOS を操作する権限 (オプション)

LoongCollector (Logtail) が Simple Log Service および ECS インスタンスと同じアカウントおよびリージョンで OOS を介して自動的にインストールされる場合にのみ必要です。

  • ListTemplates

  • StartExecution

  • ListExecutions

  • GetExecutionTemplate

  • ListExecutionLogs

  • ListTaskExecutions

*

システム権限ポリシー

システム定義のポリシーを使用する場合は、次の権限を追加することをお勧めします:

  • AliyunLogFullAccess: Simple Log Service を管理する権限。

  • AliyunECSFullAccess: ECS を管理する権限。

  • (オプション) AliyunOOSFullAccess: LoongCollector (Logtail) が OOS を使用してワンクリックでインストールされる場合に必要です。

詳細情報

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

構成項目

説明

構成名

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

Topic タイプ

Topic を生成する方法を選択します。オプションは、マシングループ Topic、ファイルパス抽出、およびカスタムです。

高度なパラメーター

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

入力構成パラメーター

構成項目

説明

ファイルパス

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

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

ログファイル検索モードは多層ディレクトリマッチングであり、指定されたディレクトリ (すべてのレベルのサブディレクトリを含む) 内の基準を満たすすべてのファイルが見つかります。例:

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

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

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

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

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

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

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

初期収集サイズ

構成が最初に有効になったとき、これは一致したファイルの末尾に対する開始収集位置を設定します。初期収集サイズは 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 つの LoongCollector (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"}" が正常に解析された場合、生フィールドを追加すると、解析されたログに別のフィールドが追加されます。フィールド名は [名前変更されたソースフィールド] (入力されていない場合は、ソースフィールド名がデフォルトになります) で、フィールド値は生ログ {"request_method":"GET", "request_time":"200"} です。

        image