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

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

最終更新日:Aug 28, 2026

LoongCollector は、Docker コンテナの標準出力 (stdout と stderr) およびテキストログファイルを収集し、複数のノードから Simple Log Service の単一の Logstore に集約します。一元的な収集により、個々のコンテナのログをノードごとに検索する必要がなくなり、構造化解析、データマスキング、フィルタリング、効率的なクエリと分析が可能になります。

要件

LoongCollector をデプロイする前に、次の要件と制限事項を確認してください。

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

  • Docker と LoongCollector の要件

    • Docker Engine のバージョンが v29.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 ストレージドライバーのみがサポートされています。他のストレージドライバーについては、ログディレクトリを手動でマウントする必要があります。

    各決定は docker pull および docker run コマンドにエンコードされるため、ステップ 1 のデプロイコマンドを実行する前に、次の項目を決定してください。

  • イメージとリージョン — プルするイメージと、それをプルするリージョン ID。

  • ログアップロードチャネル${sls_upload_channel} 変数がエンコードするネットワーク転送タイプ。内部ネットワーク、インターネット、転送アクセラレーションのオプションの比較については、本トピックの「付録:ネットワーク転送タイプ」セクションをご参照ください。

  • マシングループ識別子${user_defined_id} 変数で渡すカスタム識別子。この識別子はリージョン内で一意である必要があり、マシングループは同じ値を使用する必要があります。

収集設定のワークフロー

以下は、収集ワークフローと本トピックの各セクションの対応関係です。

  • 準備:プロジェクトと LogStore を作成します。プロジェクトは、さまざまなアプリケーションからのログを分離するリソース管理ユニットで、LogStore はログを保存します。

  • 手順 1: マシングループの構成 (LoongCollector のインストール): ログを収集するサーバーに LoongCollector をインストールし、そのサーバーをマシングループに追加します。 マシングループを使用して、コレクションノードを一元管理し、サーバーに構成を配布して、そのステータスをモニターします。

  • ステップ 2: ログ収集ルールを作成および設定する

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

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

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

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

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

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

    5. 出力設定:収集したログを現在の Logstore に保持するか、複数の Logstore に配信します。

  • ステップ 3: クエリと分析の設定 (クエリと分析の設定) では、デフォルトでフルテキストインデックスが有効になっており、キーワード検索をサポートしています。構造化されたフィールドに対して正確なクエリと分析を実行し、検索効率を向上させるために、フィールドインデックスも有効にすることをお勧めします。

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

事前準備

ログを収集する前に、ログを管理および保存するプロジェクトと LogStore を計画し、作成してください。これらのリソースが既にある場合は、このセクションをスキップし、ステップ 1: マシングループの設定 (LoongCollector のインストール) に進んでください。

プロジェクトの作成

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

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

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

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

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

Logstore の作成

  1. プロジェクト名をクリックして、対象のプロジェクトに移動します。

  2. 左側のナビゲーションウィンドウで、imageLogstoresを選択し、[+]をクリックします。

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

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

    • Logstore タイプ: 仕様を比較して、標準またはクエリを選択します。

    • 課金モード

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

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

    • データ保持時間: ログを保持する日数を指定します。有効値: 1 ~ 3,650。値 3,650 は永久保持を示します。デフォルト値: 30。

  4. その他の設定はデフォルト値のままにして、OK をクリックします。その他の設定の詳細については、「LogStore の管理」をご参照ください。

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

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

1. イメージのプル

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

# 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
説明

コンテナの再起動ポリシー:LoongCollector コンテナを起動する際、--restart=unless-stopped または --restart=always を指定することを推奨します。これにより、予期せぬ終了や Docker デーモンの再起動後に Docker がコンテナを自動的に再起動します。そうしない場合、コンテナが外部操作によって強制的に強制終了されたり、異常終了したりすると、自動的に回復されません。コンテナは自己修復能力を失い、ログ収集は静かに停止します。

パラメーター:

  • ${aliyun_account_id}:ご利用の Alibaba Cloud アカウントの ID。

  • ${user_defined_id}:コンテナをマシングループにバインドするマシングループのカスタム識別子 (例:user-defined-docker-1)。識別子はリージョン内で一意である必要があります。

  • ${sls_upload_channel}: ログアップロードチャンネル。値は、次の表で説明するように、プロジェクトをホストする リージョンネットワーク伝送タイプ で構成されます。

伝送タイプ

値のフォーマット

使用シナリオ

内部ネットワーク

regionId

cn-hangzhou

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

インターネット

regionId-internet

cn-hangzhou-internet

ECS インスタンスとプロジェクトが異なるリージョンにあるか、サーバーが別のクラウドプロバイダーまたは自己管理のデータセンターに属している。

転送アクセラレーション

regionId-acceleration

cn-hangzhou-acceleration

中国本土と他の国または地域間のクロスリージョン通信。

各転送タイプの背後にあるネットワーク特性については、本トピックの「付録:ネットワーク転送タイプ」セクションをご参照ください。

必須の起動条件:

  • 3 つの主要な環境変数 (ALIYUN_LOGTAIL_CONFIGALIYUN_LOGTAIL_USER_IDALIYUN_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. マシングループの設定

左側のナビゲーションウィンドウで、リソースグループ > マシングループ を選択します。Machine group > サーバグループの作成 をクリックし、次のパラメーターを設定して、OK をクリックします:

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

  • 識別子: ユーザー定義 ID を選択します。

  • ユーザー定義 ID: コンテナの起動時に設定した ${user_defined_id} を入力します。値は同一にする必要があります。一致しない場合、関連付けに失敗します。

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

新しいマシングループの名前をクリックし、詳細ページでサーバグループのステータスを確認します:

  • OK:LoongCollector は Simple Log Service に接続されています。

  • FAIL:「ハートビート問題の概要」を参照して問題をトラブルシューティングしてください。

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

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

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

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

    • Docker 標準出力:[Docker Stdout and Stderr - 新バージョン] を選択します。

      コンテナの標準出力の収集では、新しいテンプレートと古いテンプレートがサポートされています。新しいテンプレートの使用を推奨します。 2 つのバージョンの違いについては、「付録: 新旧のコンテナ標準出力バージョンの比較」をご参照ください。 古いテンプレートを使用するには、「Docker コンテナから標準出力を収集する (旧バージョン)」をご参照ください。

      2 つのテンプレートは、デフォルトの収集動作も異なります。新しいテンプレートでは、コンテナの標準出力はデフォルトで 1 つの収集設定によってのみ収集できますが、古いテンプレートは複数の設定による収集をサポートし、追加の設定は不要です。この制限を解除する方法については、本トピックの「よくある質問」セクションをご参照ください。

    • Docker ファイルログ: Docker ファイル - コンテナ を選択します。 3. サーバグループ設定 を設定し、次へ をクリックします:

    • 使用シナリオ: Docker シナリオ を選択します。

    • ステップ 1 で作成したマシングループを、ソースサーバーグループ リストから右側の 適用されたサーバーグループ リストに移動します。 4. Logtail構成 ページで、以降のセクションで説明されている設定を完了し、次へ をクリックします。

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

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

Docker 標準出力の収集

グローバル設定

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

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

    • 名前は小文字または数字で始まり、終わる必要があります。

入力設定

  • 標準出力 スイッチまたは 標準エラー スイッチをオンにします。両方ともデフォルトでオンになっています。収集したログの順序を保つために、標準出力と標準エラーを同時に収集しないでください。

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

グローバル設定

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

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

    • 名前は小文字または数字で始まり、終わる必要があります。

    入力設定

  • ファイルパスのタイプ

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

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

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

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

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

  • ディレクトリ監視の最大深度: ファイルパス** ワイルドカードで一致する最大のディレクトリの深さです。デフォルト値: 0 (現在のディレクトリのみ)。有効な値: 0 ~ 1000。このパラメーターを 0 に設定し、ファイルを含むディレクトリまでのパスを設定することをお勧めします。

2. ログの処理と構造化

ログ処理ルールを設定して、生の非構造化ログを構造化データに変換し、ログのクエリと分析の効率を向上させます。まずログサンプルを追加することを推奨します。

Logtail構成 ページの 設定の処理 セクションで、ログサンプルの追加 をクリックして、収集したいログコンテンツを入力します。Simple Log Service はサンプルからログフォーマットを識別し、正規表現と解析ルールの生成を支援することで、構成を簡素化します。

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

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

例:

生ログ

デフォルトの収集モード:各行が個別のログとなり、スタックが分割され、コンテキストが失われる

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

```log

[2025-11-13T10:52:20,557] [ERROR] java.sql.SQLException: No suitable driver found for jdbc:mysql://db.host:3306/prod_db

at com.datastore.util.DataProcessor.save(DataProcessor.java:434)

at io.awesomeapp.util.PaymentGateway.fetchData(PaymentGateway.java:463)

at org.awesomeapp.util.UserService.processRequest(UserService.java:252)

at io.datastore.service.DatabaseConnector.fetchData(DatabaseConnector.java:172)

at org.datastore.service.UserService.fetchData(UserService.java:517)

```

image

image

手順: Logtail構成 ページで、設定の処理 セクションで、マルチラインモード をオンにします:

  • タイプ: カスタム または マルチライン JSON を選択します。

    • カスタム:生ログのフォーマットは固定されていません。行先頭の正規表現 を設定して、各ログの開始行を識別します。

      • 行先頭の正規表現: 式を自動的に生成するか、手動で入力できます。正規表現は、完全な行に一致する必要があります。上記の例では、式は \[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.* です。

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

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

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

  • 分割失敗の処理方法

    • Discard: 先頭行ルールに一致しないセグメントは破棄されます。

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

シナリオ 2:ログの構造化

NGINX のアクセスログやアプリケーションの出力ログなど、生ログが非構造化または半構造化テキストである場合、直接クエリや分析を行うのは非効率です。Simple Log Service は、さまざまなフォーマットの生ログを自動的に構造化データに変換する複数のデータ解析プラグインを提供し、その後の分析、モニタリング、アラート機能のための強固なデータ基盤を提供します。

例:

生ログ

構造化解析後のログ

```plaintext

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"

|plaintext

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構成 ページの 設定の処理 セクションで:

  • 解析プラグインの追加: 処理プラグインの追加 をクリックし、実際のフォーマットに基づいて 正規表現解析、デリミタ解析、JSON 解析などのプラグイン を設定します。各プラグインのパラメーターについては、このトピックの「付録: ネイティブ解析プラグイン」セクションをご参照ください。次の例では NGINX ログを収集するため、ネイティブ処理プラグイン > NGINX モード解析 を選択します。

    • 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"';

      サーバー上でログを生成するフォーマットと完全に同じである必要があります。そうでない場合、ログ解析は失敗します。

  • 一般的な設定パラメーター:以下のパラメーターは複数のデータ解析プラグインに表示され、同じ機能と使用法を持ちます。

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

    • 解析失敗時にソースフィールドを保持:このオプションをオンにすることを推奨します。プラグインがログを解析できない場合 (例:フォーマットの不一致)、このオプションは完全な生ログコンテンツを指定されたソースフィールドに保持し、破棄しません。

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

3. ログフィルタリング

DEBUG や INFO ログなど、価値の低いまたは無関係なログを大量に収集すると、ストレージリソースを浪費し、コストを増加させ、クエリ効率を低下させ、データ漏えいのリスクを生み出します。効率的で安全なログ収集のために、詳細なフィルタリングポリシーを使用してください。

フィルタリングはコンソールの 2 か所で設定されます。コンテンツフィルタリングは [プロセッサ設定] セクションの処理プラグインであり、収集ブラックリストとコンテナフィルタリングは [入力設定] セクションのスイッチです。

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

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

例:

生ログ

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

```shell

{"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"}

|shell

{"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構成 ページで、設定の処理 セクションで、処理プラグインの追加 をクリックし、ネイティブ処理プラグイン > フィルタリング処理 を選択します:

  • Field Name:フィルター対象のログフィールド。

  • フィールド値:フィルタリングに使用する正規表現。完全一致のみサポートされます。部分キーワード一致はサポートされません。

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

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

手順: 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/ ディレクトリ下の dir という名前のすべての第 2 レベルのサブディレクトリ内のファイルを無視します。例えば、/home/admin/a/dir ディレクトリ内のファイルは無視され、/home/admin/a/b/dir ディレクトリ内のファイルは収集されます。

コンテナフィルタリング

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

手順:Logtail構成 ページの 入力設定 セクションで、コンテナフィルター をオンにし、追加 をクリックします。

複数の条件は論理 AND で結合されます。すべての正規表現マッチングは、PCRE (Perl 互換正規表現) などのエンジンよりも制限されている Go RE2 エンジンに基づいています。正規表現は、付録: 正規表現の制限 (コンテナフィルタリング) に従って記述してください。

以下の条件は Docker コンテナに適用されます。

  • 環境変数ブラックリスト/ホワイトリスト:ログを収集するコンテナの環境変数条件を指定します。

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

    以下の条件は Kubernetes によって管理されるコンテナに適用されます。

  • Kubernetes Pod ラベルブラックリスト/ホワイトリスト:ログを収集するコンテナをホストする Pod のラベル条件を指定します。

  • Kubernetes Pod 名の正規表現マッチング:Pod 名によってログを収集するコンテナを指定します。

  • Kubernetes 名前空間の正規表現マッチング:名前空間名によってログを収集するコンテナを指定します。

  • 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 にアップロードされます。

抽出ルール:正規表現のキャプチャグループ

正規表現を設定する際、Simple Log Service はキャプチャグループの数と命名から出力フィールドのフォーマットを決定します。以下の表で説明します。ファイルパスの正規表現では、スラッシュ (/) をエスケープする必要があります。

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

使用シナリオ

生成されるフィールド

正規表現の例

一致するパスの例

生成されるフィールドの例

単一のキャプチャグループ ((.*?) が 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 Label 関連:Pod ラベル名とタグ名を設定します。Pod ラベルの値は、設定したタグ名に格納されます。

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

    • タグ名:タグの名前。

5. 出力設定

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

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

  • 複数のターゲットへの送信には LoongCollector 3.0.0 以降が必要です。Logtail はこの機能をサポートしていません。

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

  • 複数の出力先を設定すると、現在の LogStore の収集設定リストに収集設定が表示されなくなります。 複数ターゲットのディストリビューション設定を表示、変更、または削除するには、複数ターゲットのディストリビューション設定を管理する方法をご参照ください。

    手順: Logtail構成 ページで、出力設定 セクションで:

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

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

    • Logstores: 送信先 Logstore を選択します。

    • 圧縮方法lz4zstd がサポートされています。

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

      • タグ名: ルーティングに使用するタグフィールドの名前です。 __tag__: プレフィックスを付けずに、 __path__ などのフィールド名を直接入力します。タグフィールドは、次の 2 つのカテゴリに分類されます:

        • エージェント関連:収集エージェント自体に関連し、プラグインとは独立しています (例:__hostname____user_defined_id__)。

        • 入力プラグイン関連:入力プラグインによって提供され、関連情報でログをエンリッチします (例:ファイル収集用の __path__、Kubernetes 収集用の _pod_name_ および _container_name_)。

          タグの詳細については、「収集タグの管理」をご参照ください。

      • タグ値: タグフィールドの値がこの値に一致するログが、送信先の LogStore に送信されます。

      • このタグフィールドを破棄するかどうか: このスイッチをオンにすると、アップロードされたログにこのタグフィールドは含まれなくなります。

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

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

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

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

    構成を完了したら、次へ をクリックして、コレクション設定全体を完了します。

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

収集設定を完了し、マシングループに適用すると、Simple Log Service は自動的に設定を配布し、増分ログの収集を開始します。

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

  • ログファイルに新しいコンテンツがあることを確認する:LoongCollector は増分ログのみを収集します。tail -f /path/to/your/log/file を実行し、アプリケーション操作をトリガーして、新しいログが書き込まれていることを確認してください。

  • ログのクエリ: 送信先 LogStore のクエリと分析ページに移動し、検索と分析 をクリックします。デフォルトの時間範囲は直近 15 分です。新しいログが届いているかどうかを確認します。デフォルトでは、収集された各 Docker コンテナのテキストログには、次のフィールドが含まれています。

フィールド

説明

__source__

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

_container_ip_

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

__tag__:__hostname__

LoongCollector (Logtail) を実行している Docker ホストマシンの名前。

__tag__:__path__

ログ収集パス。

__tag__:__receive_time__

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

__tag__:__user_defined_id__

マシングループのカスタム識別子。

コンテナ標準出力が使用するメタデータフィールド名については、本トピックの「付録:新旧コンテナ標準出力バージョンの比較」セクションをご参照ください。

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

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

ユーザー識別子の確認

ご利用のサーバーが ECS インスタンスでない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合は、以下の方法で指定されたディレクトリに正しいユーザー識別子が存在するかどうかを確認してください。

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

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

    現在のプロジェクトを所有する Alibaba Cloud アカウント ID の名前のファイルが指定されたパスに存在する場合、ユーザー識別子は正しく設定されています。

マシングループ識別子の確認

カスタム識別子ベースのマシングループを使用している場合、user_defined_id ファイルが指定されたディレクトリに存在するかどうかを確認します。存在する場合、その内容がマシングループに設定されたカスタム識別子と同じであるかどうかを確認します。

システム

指定ディレクトリ

ソリューション

Linux

/etc/ilogtail/user_defined_id

```shell

カスタム識別子を設定します。ディレクトリが存在しない場合は、手動で作成してください。

echo "user-defined-1" > /etc/ilogtail/user_defined_id `` | | Windows |C:\LogtailData\user_defined_id| C:\LogtailDataディレクトリにuser_defined_id` ファイルを作成し、カスタム識別子を書き込みます。ディレクトリが存在しない場合は、手動で作成してください。 |

ユーザー識別子とマシングループ識別子の両方が正しく設定されている場合は、「LoongCollector (Logtail) マシングループの問題のトラブルシューティング」を参照して、さらなるトラブルシューティングを行ってください。

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

  • 増分ログの確認:LoongCollector (Logtail) 収集を設定した後、新しいログが書き込まれない場合、LoongCollector (Logtail) はログファイルを収集しません。

  • マシングループのハートビートステータスの確認: リソースグループ > マシングループ ページに移動し、送信先マシングループの名前をクリックし、サーバグループ設定 > サーバグループのステータス セクションで ハートビート のステータスを確認します。

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

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

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

  • リソースグループ > マシングループ ページに移動し、送信先マシングループの名前をクリックして サーバグループ設定 ページに移動します。

  • ページで、設定 を確認します。左側には すべてのLogtail構成 リストが、右側には LogTail構成を適用 リストが表示されます。送信先の LoongCollector (Logtail) 収集設定が右側の適用済みエリアに移動されている場合、その構成は送信先のマシングループに適用されます。

  • 送信先の LoongCollector (Logtail) 収集設定が右側の適用エリアに移動されていない場合は、変更 をクリックし、左側の すべてのLogtail構成 リストで送信先の LoongCollector (Logtail) 収集設定の名前を選択し、image をクリックして右側の適用エリアに移動し、その後、OK をクリックします。

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

トラブルシューティングのアプローチ:この状況は、ネットワーク接続と基本設定が機能していることを示しており、問題はログコンテンツ解析ルールの不一致にあります。特定のエラーメッセージを確認して問題を特定します。

  • Logtail構成 ページで、収集エラーを報告している LoongCollector (Logtail) 構成の名前をクリックします。(ログ収集エラー) タブで コスト上の理由 をクリックして、クエリ時間を設定します。

  • [収集例外モニタリング] > [完全なエラー情報] セクションで、エラーログのアラートタイプを確認し、「データ収集における一般的なエラータイプ」で対応する解決策を見つけます。

一般的なコマンド

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 ディレクトリにマウントします。

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

デフォルトでは、データの重複を防ぐため、Simple Log Service は各ログソースが 1 つの収集設定によってのみ収集されることを許可します。

  • テキストログファイルは、1 つの Logtail 収集設定によってのみ照合できます。

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

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

  • 古い標準出力テンプレートを使用する場合、複数の設定による収集がデフォルトでサポートされており、追加の設定は不要です。

    同じログソースを複数の収集設定で収集できるようにするには、以下の手順を実行します。

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

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

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

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

  5. Logtail 構成ページで、編集 をクリックし、入力設定 セクションまで下にスクロールします: - テキストファイルログを収集するには: ファイルを複数回収集できるようにする をオンにします。 - コンテナの標準出力を収集するには: 標準出力の複数回の収集を許可する をオンにします。

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

複数ターゲット配信設定は複数の Logstore に関連付けられているため、このタイプの設定はプロジェクトレベルの管理ページで維持する必要があります。

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

  2. 送信先プロジェクトページで、左側のナビゲーションウィンドウで、imageリソースグループ > 設定の管理 をクリックします。

    このページでは、誤って Logstore が削除された後に残された設定を含む、プロジェクト内のすべての収集設定を一元管理します。

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

Logtail構成 ページの 設定の処理 セクションで、処理プラグインを追加して生ログを構造化できます。既存の収集設定に処理プラグインを追加するには、次の手順を実行します。

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

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

  3. Logtail構成 をクリックし、構成リストで送信先の Logtail 構成を見つけ、「操作」列の Logtail 設定の管理 をクリックします。

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

    このセクションでは、一般的なログ処理シナリオをカバーする、一般的な処理プラグインのみを説明します。その他の機能については、「拡張処理プラグイン」をご参照ください。

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

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

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

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

順序の制約:

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

正規表現解析

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

例:

生ログ

正規表現解析プラグインの結果

```plaintext

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"

|plaintext

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; x64) 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構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックして ネイティブ処理プラグイン > 正規表現解析 を選択します:

  • 正規表現:ログのマッチングに使用する式です。自動で生成するか、手動で入力できます:

  • 自動生成:

    1. [正規表現を自動生成] をクリックします。

    2. ログサンプル セクションで、抽出したいログの内容をハイライトします。

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

      [ログサンプル] セクションに正しいフォーマットのログコンテンツ (Apache Combined アクセスログなど) が貼り付けられていることを確認し、そのセクションの [正規表現を生成] をクリックして解析式を自動生成します。 - 手動入力:ログフォーマットに基づいて正規表現を手動で入力します。

    構成が完了したら、[検証] をクリックして、正規表現がログコンテンツを正しく解析できるかどうかをテストします。 - ログ抽出フィールド: 抽出された各ログコンテンツ (値) に対して、フィールド名 (キー) を設定します。 - その他のパラメーターについては、シナリオ 2: ログの構造化に記載の一般的な構成パラメーターをご参照ください。

区切り文字解析

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

例:

生ログ

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

```plaintext

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

|plaintext

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 キーと値のペアの自動抽出

```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"}

|plaintext

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、展開深度をプレフィックスとして使用

```json

{"s_key":{"k1":{"k2":{"k3":{"k4":{"k51":"51","k52":"52"},"k41":"41"}}}}}

|plaintext

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

|plaintext

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 配列構造

```json

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

|plaintext

json1:{"key1":"value1"}

json2:{"key2":"value2"}

```

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

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

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

Apache ログ解析

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

例:

生ログ

Apache 共通ログ形式 combined による解析

```plaintext

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"

|plaintext

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 設定フィールド: Simple Log Service は、ログ形式 に基づいてこの設定を自動的に入力します。自動入力された内容が、サーバー上の Apache 設定ファイル (通常は /etc/apache2/apache2.conf) で定義されている LogFormat と同一であることを確認してください。

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

データマスキング

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

例:

生ログ

マスキング結果

```plaintext

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

|plaintext

[{'account':'1812213231432969','password':'*'}, {'account':'1812213685634','password':'*'}]

```

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

  • 元のフィールド:解析前のログの内容を格納するフィールドです。

  • マスキング方法

    • const:機密コンテンツを指定された文字列に置き換えます。

    • md5:機密コンテンツをその MD5 値に置き換えます。

  • 文字列の置き換えマスキング方法const を設定した場合、機密コンテンツを置き換える文字列を入力します。

  • 置き換えられたコンテンツより前のコンテンツの式: 機密性の高いコンテンツを特定します。RE2 構文で設定します。

  • 置き換えられたコンテンツの式: 機密コンテンツの式です。RE2 構文で設定します。

時間解析

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

例:

生ログ

時間解析

```shell

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

```

timestamp フィールドの時間値を解析し、ログの __time__ フィールドを対応する UNIX タイムスタンプ 1758625907 に設定します。これは 2025-09-23T19:11:47+0800 に対応します。

手順: 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__ フィールドに統合し、ストレージを最適化し、フォーマットを標準化します。

新しい標準出力の主な利点

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

  • C++ でリファクタリングされた新バージョンは、以前の Go 実装に比べて 180% から 300% のパフォーマンス向上を実現します。

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

  • ネイティブプラグインと Go プラグインの柔軟な組み合わせをサポートし、複雑なシナリオのニーズに対応します。

  • より高い信頼性

  • 標準出力ログのローテーションキューをサポートし、ログ収集メカニズムをファイル収集メカニズムと統一することで、標準出力ログが急速にローテーションする場合でも高い信頼性を提供します。

  • リソース消費の削減

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

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

  • O&M の一貫性の向上

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

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

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

特徴

旧バージョン

新バージョン

保存方法

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

メタデータは __tag__ タグの下に統合されます。

ストレージ効率

各ログエントリはメタデータの完全なコピーを保持するため、より多くのストレージスペースを消費します。

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

フォーマットの一貫性

フォーマットはコンテナファイル収集フォーマットと一貫性がありません。

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

クエリアクセス方法

フィールド名で直接メタデータをクエリできます (例:_container_name_)。

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

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

旧フィールド名

新フィールド名

_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> の形式でログのタグセクションに保存されます。

新バージョンがユーザーに与える影響

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

  • SQL 互換性:クエリ SQL は既に両方のバージョンと自動的に互換性があるため、どちらのバージョンのログを処理する場合でもクエリ文を変更する必要はありません。

付録:ネットワーク転送タイプ

グローバルパラメーター

パラメーター

説明

設定名

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

ログトピックタイプ

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

高度なパラメーター

グローバル設定のオプションの高度なパラメーター。Logtail パイプライン構成の作成

グローバルパラメーター

パラメーター

説明

設定名

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

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

ログ収集は多階層のディレクトリマッチングを使用します。これは、Logtail が指定されたディレクトリとそのすべてのサブディレクトリ内で基準に一致するすべてのファイルを見つけることを意味します。例:

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

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

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

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

監視するディレクトリの最大深度を指定します。これは、ファイルパス** ワイルドカードに一致する最大ディレクトリ深度です。値 0 は、現在のディレクトリのみが監視されることを示します。

標準出力

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

標準エラー

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

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

デフォルトでは、コンテナの標準出力は 1 つの Logtail 構成でのみ収集できます。複数の構成で標準出力を収集するには、ファイルを複数回収集できるようにする スイッチをオンにします。

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

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

コンテナフィルタリング

  • フィルター条件

重要
  • コンテナラベルは docker inspect コマンドの出力にあるラベルであり、Kubernetes ラベルとは異なります。コンテナラベルの取得

  • 環境変数はコンテナの起動時に設定されます。コンテナ環境変数の取得

  • Kubernetes シナリオでは、コンテナのフィルタリングには、K8s ポッド名の正規表現一致K8s 名前空間の正規表現一致K8s コンテナ名の正規表現一致K8s Pod Label のホワイトリスト などの Kubernetes レベルの情報を使用します。

  1. Kubernetes では、名前空間とコンテナ名はそれぞれ io.kubernetes.pod.namespaceio.kubernetes.container.name のコンテナラベルにマッピングされます。コンテナフィルタリングにはこれらのラベルを使用することを推奨します。例えば、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 という名前のすべてのコンテナが一致します。

コンテナラベルホワイトリスト (Docker 向け、Kubernetes での使用は非推奨)

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

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

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

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

複数のホワイトリストエントリは論理 OR 関係を持ちます。コンテナのラベルがホワイトリストエントリのいずれかに一致する場合、コンテナは一致します。

コンテナラベルブラックリスト (Docker 向け、Kubernetes での使用は非推奨)

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

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

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

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

複数のブラックリストエントリは論理 OR 関係を持ちます。コンテナのラベルがブラックリストエントリのいずれかに一致する場合、コンテナは除外されます。

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

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

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

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

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

複数のホワイトリストエントリは論理 OR 関係を持ちます。コンテナの環境変数が指定されたキーと値のペアのいずれかに一致する場合、コンテナは一致します。

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

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

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

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

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

複数のブラックリストエントリは論理 OR 関係を持ちます。コンテナの環境変数が指定されたキーと値のペアのいずれかに一致する場合、コンテナは除外されます。

K8s Pod Label のホワイトリスト

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

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

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

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

複数のホワイトリストエントリは論理 OR 関係を持ちます。コンテナの Kubernetes ラベルがホワイトリストエントリのいずれかに一致する場合、コンテナは一致します。

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

K8s Pod タグのブラックリスト

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

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

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

    デフォルトでは、LabelValue は完全な文字列マッチを実行します。LabelValue が Kubernetes ラベルの値と完全に一致する場合にのみマッチが見つかります。値が ^ で始まり $ で終わる場合、それは正規表現として扱われます。例えば、LabelKeyapp に、LabelValue^(test1|test2)$ に設定すると、Kubernetes ラベル app:test1 または app:test2 を持つコンテナが一致します。

複数のブラックリストエントリは論理 OR 関係を持ちます。コンテナの Kubernetes ラベルがブラックリストエントリのいずれかに一致する場合、コンテナは除外されます。

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

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

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

環境変数関連

環境変数拡張フィールドを設定すると、Log Service は環境変数に関連するフィールドをログに追加します。 たとえば、環境変数名VERSIONtag 名env_version を設定し、コンテナに環境変数 VERSION=v1.0.0 がある場合、ログにフィールド __tag__:__env_version__: v1.0.0 が追加されます。

Pod Label 関連

Kubernetes Pod 拡張フィールドを設定すると、Log Service は Kubernetes Pod 関連のフィールドをログに追加します。 たとえば、Pod タグ名app に、tag 名k8s_pod_app に設定した場合、ラベル app=serviceA を持つ Pod のログにフィールド __tag__:__k8s_pod_app__: serviceA が追加されます。

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

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

初回収集サイズ

設定が最初に有効になるとき、このパラメーターはファイルの末尾から測定した収集開始位置を指定します。デフォルト値は 1024 KB です。

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

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

最初のコレクションのサイズ を変更できます。値は KB 単位で、有効範囲は 0~10,485,760 です。

収集ブラックリスト

ブラックリストの収集 スイッチを有効にすると、収集中に指定したディレクトリまたはファイルを無視するようにブラックリストを設定できます。完全に一致またはワイルドカードを使用して、ディレクトリ名とファイル名を指定できます。サポートされているワイルドカードは、アスタリスク (*) と疑問符 (?) のみです。

重要
  • ファイルパス でワイルドカードを使用し、その結果得られるパスの一部を除外したい場合は、ブラックリストの構成を有効にするため、ブラックリストの収集 に対応する完全なパスを入力する必要があります。

    例えば、ファイルパス/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/ ディレクトリ配下にある dir という名前の第 2 レベルのサブディレクトリ内のすべてのファイルが無視されます。 たとえば、/home/admin/a/dir ディレクトリ内のファイルは無視されますが、/home/admin/a/b/dir ディレクトリ内のファイルは収集されます。

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

デフォルトでは、1 つのログファイルは 1 つの Logtail 構成にのみ一致します。ファイル内のログを複数回収集する必要がある場合は、ファイルを複数回収集できるようにする スイッチをオンにします。

高度なパラメーター

ファイル入力プラグインのオプションの高度なパラメーター。Logtail パイプライン構成の作成

プロセッサパラメーター

パラメーター

説明

ログサンプル

収集したいログのサンプルです。実際のユースケースのログサンプルを使用してください。サンプルを使用すると、処理パラメーターをより簡単に設定できます。複数のサンプルを追加できます。合計の長さは 1,500 文字を超えることはできません。

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

複数行モード

  • 複数行ログタイプ:複数行ログは、複数行にまたがるエントリです。各ログエントリの開始を識別するためのルールを定義する必要があります。

    • カスタム: 行先頭の正規表現 を使用して各ログエントリを識別します。

    • マルチライン 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)

    Log Service が上記のログ内容の分割に失敗した場合:

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

    • 単一行を保持:テキストの各行を個別のログエントリとして保持し、合計で 4 つのログエントリが生成されます。

処理モード

処理プラグインの組み合わせ。これには、ネイティブ処理プラグイン拡張処理プラグイン が含まれます。プロセッサの詳細については、「ネイティブプロセッサと拡張プロセッサの使用」をご参照ください。

重要

プロセッサの使用制限については、コンソールのプロンプトをご参照ください。

  • Logtail 2.0 以降:

    • ネイティブプロセッサは任意の方法で組み合わせることができます。

    • ネイティブプロセッサと拡張プロセッサを組み合わせることができますが、すべての拡張プロセッサは、すべてのネイティブプロセッサの後に配置する必要があります。

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

    • ネイティブプロセッサと拡張プロセッサを一緒に使用することはできません。

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

      • 最初のプロセッサは、正規表現解析、デリミタベースの解析、JSON 解析、Nginx パターン解析、Apache パターン解析、または IIS パターン解析のいずれかのプロセッサである必要があります。

      • 最初の解析プロセッサの後に、最大で 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 を示しています。

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

    リージョン名

    リージョン 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 内部ネットワークは、ギガビット共有ネットワークです。Alibaba Cloud 内部ネットワーク経由でログデータを転送する方が、インターネット経由で転送するよりも高速で安定しています。内部ネットワークには、VPC とクラシックネットワークが含まれます。

ECS インスタンスと Simple Log Service プロジェクトが同じリージョンにあるか、サーバーが Express Connect を介して VPC に接続されている場合。Simple Log Service プロジェクトを ECS インスタンスがホストされているリージョンに作成し、Alibaba Cloud 内部ネットワーク経由で ECS インスタンスからログを収集することを推奨します。これにより、インターネット帯域幅は消費されません。

インターネット

パブリックドメイン名

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

以下の 2 つの場合にインターネット経由でデータを転送できます。ECS インスタンスと Simple Log Service プロジェクトが異なるリージョンにある場合、またはサーバーが別のクラウドプロバイダーまたは自己管理のデータセンターに属している場合。

転送アクセラレーション

転送アクセラレーションドメイン名

この方法は、Alibaba Cloud CDN エッジノードでログ収集を高速化します。ネットワーク遅延と安定性において、インターネットベースの収集よりも大きな利点がありますが、トラフィックは別途課金されます。

アプリケーションサーバーと Simple Log Service プロジェクトがそれぞれ中国本土のリージョンと中国本土以外のリージョンにある場合、インターネット経由でのデータ転送は高いネットワーク遅延と不安定な転送を引き起こす可能性があります。この場合、転送アクセラレーションを使用できます。詳細については、「転送アクセラレーション」をご参照ください。

次のステップ