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: ログ収集ルールを作成および設定する
グローバルおよび入力構成: 収集設定の名前、およびログ収集のソースと範囲を定義します。
ログ処理と構造化: ログフォーマットに基づいて処理ルールを設定します。
複数行ログ:Java の例外スタックや Python のトレースバックなど、単一のログエントリが複数行にわたる場合に適用されます。各エントリの開始行を識別するために、先頭行の正規表現を使用します。
構造化解析:正規表現、区切り文字、NGINX モードなどの解析プラグインを設定して、生ログの文字列から構造化されたキーと値のペアを抽出し、クエリと分析を容易にします。
ログフィルタリング (フィルタリング処理): 収集ブラックリストとコンテンツフィルタリングルールを設定して、有用なログコンテンツのみを保持し、冗長なデータ転送とストレージを削減できます。
ログの分類: トピックとログのタグ付けを設定して、さまざまなアプリケーション、コンテナ、またはソースパスからのログを柔軟に区別します。
出力設定:収集したログを現在の Logstore に保持するか、複数の Logstore に配信します。
ステップ 3: クエリと分析の設定 (クエリと分析の設定) では、デフォルトでフルテキストインデックスが有効になっており、キーワード検索をサポートしています。構造化されたフィールドに対して正確なクエリと分析を実行し、検索効率を向上させるために、フィールドインデックスも有効にすることをお勧めします。
手順 4: 検証とトラブルシューティング: 構成が完了したら、ログが収集されていることを確認します。収集データがない、ハートビートの失敗、解析エラーなどの問題が発生した場合は、「よくある質問」をご参照ください。
事前準備
ログを収集する前に、ログを管理および保存するプロジェクトと LogStore を計画し、作成してください。これらのリソースが既にある場合は、このセクションをスキップし、ステップ 1: マシングループの設定 (LoongCollector のインストール) に進んでください。
プロジェクトの作成
Simple Log Service コンソールにログインします。
プロジェクトの作成 をクリックし、次のパラメーターを設定します。
リージョン:ログソースの場所に基づいてリージョンを選択します。作成後はこの設定を変更できません。
プロジェクト名: Alibaba Cloud 内でグローバルに一意である必要があります。作成後は変更できません。
その他の設定はデフォルト値のままにし、作成 をクリックします。その他のパラメーターの詳細については、「プロジェクトを作成する」をご参照ください。
Logstore の作成
プロジェクト名をクリックして、対象のプロジェクトに移動します。
左側のナビゲーションウィンドウで、
Logstoresを選択し、[+]をクリックします。[Logstore を作成] ページで、次のコア設定を完了します。
Logstore 名: プロジェクト内で一意になる名前を入力します。作成後は名前を変更できません。
Logstore タイプ: 仕様を比較して、標準またはクエリを選択します。
課金モード:
使用機能課金 (変更できません):ストレージ、インデックス作成、読み取り/書き込み操作などの各リソースに個別に課金されます。このモードは、小規模なシナリオや、機能の使用量がまだ確定していない場合に適しています。
書き込みデータ量課金: 生データ取り込み量に対してのみ課金されるモードです。このモードでは、30 日間の無料ストレージと、データ変換やデータ転送などの無料機能が提供されます。保持期間が 30 日に近い、または複雑なデータ処理パイプラインを持つビジネスシナリオに適しています。
データ保持時間: ログを保持する日数を指定します。有効値: 1 ~ 3,650。値 3,650 は永久保持を示します。デフォルト値: 30。
その他の設定はデフォルト値のままにして、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-aliyun2. 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}: ログアップロードチャンネル。値は、次の表で説明するように、プロジェクトをホストする リージョン と ネットワーク伝送タイプ で構成されます。
伝送タイプ | 値のフォーマット | 例 | 使用シナリオ |
内部ネットワーク |
|
| ECS インスタンスとプロジェクトが同じリージョンにある。 |
インターネット |
|
| ECS インスタンスとプロジェクトが異なるリージョンにあるか、サーバーが別のクラウドプロバイダーまたは自己管理のデータセンターに属している。 |
転送アクセラレーション |
|
| 中国本土と他の国または地域間のクロスリージョン通信。 |
各転送タイプの背後にあるネットワーク特性については、本トピックの「付録:ネットワーク転送タイプ」セクションをご参照ください。
必須の起動条件:
3 つの主要な環境変数 (
ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、ALIYUN_LOGTAIL_USER_DEFINED_ID) を正しく設定する。コンテナのライフサイクルイベントをリッスンするために
/var/run/docker.sockをマウントする。ホストマシンのファイルシステムにアクセスするために
/を/logtail_hostにマウントする。
3. コンテナのステータスの確認
次のコマンドを実行します。
docker ps | grep loongcollector次の出力が返されます。
6ad510001753 aliyun-observability-release-registry.cn-beijing.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun "/usr/local/ilogtail…" About a minute ago Up About a minute recursing_shirley4. マシングループの設定
左側のナビゲーションウィンドウで、 を選択します。
> サーバグループの作成 をクリックし、次のパラメーターを設定して、OK をクリックします:
名前:マシングループにカスタム名を入力します (例:
docker-host-group)。識別子: ユーザー定義 ID を選択します。
ユーザー定義 ID: コンテナの起動時に設定した
${user_defined_id}を入力します。値は同一にする必要があります。一致しない場合、関連付けに失敗します。
5. マシングループのハートビートの確認
新しいマシングループの名前をクリックし、詳細ページでサーバグループのステータスを確認します:
OK:LoongCollector は Simple Log Service に接続されています。
FAIL:「ハートビート問題の概要」を参照して問題をトラブルシューティングしてください。
ステップ 2:ログ収集ルールの作成と設定
LoongCollector がどのログを収集し、ログ構造をどのように解析し、コンテンツをどのようにフィルタリングするかを定義し、その設定を登録済みのマシングループにバインドします。
[Logstores] ページで、対象の Logstore 名の横にある
アイコンをクリックして展開します。データのインポート の横にある
アイコンをクリックします。データのインポート ダイアログボックスで、ログソースに基づいてテンプレートを選択し、今すぐ統合 をクリックします: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) | ||
``` |
|
|
手順: 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" | |
| |
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.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 のログのみを収集します。
例:
生ログ |
|
```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"} | |
| |
{"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 つのディメンションのみが必要。 |
|
|
|
|
複数の名前なしキャプチャグループ ( | 複数のディメンションが必要だが、意味的なラベルは不要。 | タグフィールド |
|
|
|
複数の名前付きキャプチャグループ ( | 複数のディメンションが必要で、クエリと分析を容易にするためにフィールド名が自己説明的である必要がある。 | タグフィールド |
|
|
|
ログタグ付け
ログタグエンリッチメントをオンにして、コンテナの環境変数や Kubernetes Pod ラベルからキー情報を抽出し、詳細なロググルーピングのためにタグとしてアタッチします。
手順:Logtail構成 ページの 入力設定 セクションで、ログタグのエンリッチメント をオンにし、追加 をクリックします。
環境変数関連: 環境変数名とタグ名を設定します。環境変数の値はタグ名に格納されます。
環境変数名:抽出する環境変数の名前。
タグ名:環境変数タグの名前。
Pod Label 関連:Pod ラベル名とタグ名を設定します。Pod ラベルの値は、設定したタグ名に格納されます。
Pod ラベル名:抽出する Kubernetes Pod ラベルの名前。
タグ名:タグの名前。
5. 出力設定
デフォルトでは、すべてのログは lz4 圧縮で現在の Logstore に送信されます。同じソースからのログを異なる Logstore に配信するには、以下の手順を実行します。
複数のターゲットへの動的配信
複数のターゲットへの送信には LoongCollector 3.0.0 以降が必要です。Logtail はこの機能をサポートしていません。
最大 5 つの出力ターゲットを設定できます。
複数の出力先を設定すると、現在の LogStore の収集設定リストに収集設定が表示されなくなります。 複数ターゲットのディストリビューション設定を表示、変更、または削除するには、複数ターゲットのディストリビューション設定を管理する方法をご参照ください。
手順: Logtail構成 ページで、出力設定 セクションで:
をクリックして出力設定を展開します。出力先の追加 をクリックし、以下の設定を行います:
Logstores: 送信先 Logstore を選択します。
圧縮方法:lz4 と zstd がサポートされています。
ルート設定: タグフィールドに基づいてログをルーティングおよび配信します。 ルーティング構成に一致するログは、送信先 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 コンテナのテキストログには、次のフィールドが含まれています。
フィールド | 説明 |
| LoongCollector (Logtail) コンテナの IP アドレス。 |
| アプリケーションコンテナの IP アドレス。 |
| LoongCollector (Logtail) を実行している Docker ホストマシンの名前。 |
| ログ収集パス。 |
| ログがサーバー側に到着した時刻。 |
| マシングループのカスタム識別子。 |
コンテナ標準出力が使用するメタデータフィールド名については、本トピックの「付録:新旧コンテナ標準出力バージョンの比較」セクションをご参照ください。
一般的な問題のトラブルシューティング
マシングループのハートビートが FAIL
ユーザー識別子の確認
ご利用のサーバーが ECS インスタンスでない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合は、以下の方法で指定されたディレクトリに正しいユーザー識別子が存在するかどうかを確認してください。
Linux:
cd /etc/ilogtail/users/ && touch <uid>コマンドを実行してユーザー識別子ファイルを作成します。Windows:
C:\LogtailData\users\ディレクトリに移動し、<uid>という名前の空のファイルを作成します。現在のプロジェクトを所有する Alibaba Cloud アカウント ID の名前のファイルが指定されたパスに存在する場合、ユーザー識別子は正しく設定されています。
マシングループ識別子の確認
カスタム識別子ベースのマシングループを使用している場合、user_defined_id ファイルが指定されたディレクトリに存在するかどうかを確認します。存在する場合、その内容がマシングループに設定されたカスタム識別子と同じであるかどうかを確認します。
システム | 指定ディレクトリ | ソリューション |
Linux |
| ```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) 収集設定の名前を選択し、
をクリックして右側の適用エリアに移動し、その後、OK をクリックします。
ログ収集エラーまたはフォーマットエラー
トラブルシューティングのアプローチ:この状況は、ネットワーク接続と基本設定が機能していることを示しており、問題はログコンテンツと解析ルールの不一致にあります。特定のエラーメッセージを確認して問題を特定します。
Logtail構成 ページで、収集エラーを報告している LoongCollector (Logtail) 構成の名前をクリックします。(ログ収集エラー) タブで コスト上の理由 をクリックして、クエリ時間を設定します。
[収集例外モニタリング] > [完全なエラー情報] セクションで、エラーログのアラートタイプを確認し、「データ収集における一般的なエラータイプ」で対応する解決策を見つけます。
一般的なコマンド
LoongCollector (Logtail) の実行ステータスの表示
次のコマンドを実行します。
docker exec ${logtail_container_id} /etc/init.d/ilogtaild statusLoongCollector (Logtail) のバージョン、IP アドレス、開始時刻、その他の情報の表示
次のコマンドを実行します:
docker exec ${logtail_container_id} cat /usr/local/ilogtail/app_info.jsonLoongCollector (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:succeededLoongCollector (Logtail) の再起動
次のコマンドを実行します。
# LoongCollector を停止
docker exec a287de895e40 /etc/init.d/ilogtaild stop
# LoongCollector を開始
docker exec a287de895e40 /etc/init.d/ilogtaild startよくある質問
一般的なエラーメッセージ
症状 | 原因 | ソリューション |
| プロジェクトのリージョンが LoongCollector (Logtail) コンテナのリージョンと一致しません。 |
|
| ファイルパスが誤って設定されています。 | アプリケーションコンテナ内のログパスが収集設定と一致していることを確認してください。 |
エラーログ: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 つの標準出力収集設定によってのみ収集できます。
古い標準出力テンプレートを使用する場合、複数の設定による収集がデフォルトでサポートされており、追加の設定は不要です。
同じログソースを複数の収集設定で収集できるようにするには、以下の手順を実行します。
Simple Log Service コンソールにログインし、対象のプロジェクトに移動します。
左側のナビゲーションウィンドウで、
[Logstores] を選択し、対象の Logstore を見つけます。その名前の横にある
アイコンをクリックして Logstore を展開します。Logtail構成 をクリックし、構成リストで送信先の Logtail 構成を見つけ、[操作] 列の Logtail 設定の管理 をクリックします。
Logtail 構成ページで、編集 をクリックし、入力設定 セクションまで下にスクロールします: - テキストファイルログを収集するには: ファイルを複数回収集できるようにする をオンにします。 - コンテナの標準出力を収集するには: 標準出力の複数回の収集を許可する をオンにします。
複数ターゲット配信設定を管理するにはどうすればよいですか?
複数ターゲット配信設定は複数の Logstore に関連付けられているため、このタイプの設定はプロジェクトレベルの管理ページで維持する必要があります。
Simple Log Service コンソールにログインし、対象のプロジェクトの名前をクリックします。
送信先プロジェクトページで、左側のナビゲーションウィンドウで、
リソースグループ > 設定の管理 をクリックします。このページでは、誤って Logstore が削除された後に残された設定を含む、プロジェクト内のすべての収集設定を一元管理します。
付録:ネイティブ解析プラグイン
Logtail構成 ページの 設定の処理 セクションで、処理プラグインを追加して生ログを構造化できます。既存の収集設定に処理プラグインを追加するには、次の手順を実行します。
左側のナビゲーションウィンドウで、
[Logstores] を選択し、対象の Logstore を見つけます。その名前の横にある
アイコンをクリックして Logstore を展開します。Logtail構成 をクリックし、構成リストで送信先の Logtail 構成を見つけ、「操作」列の Logtail 設定の管理 をクリックします。
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" | |
| |
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構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックして ネイティブ処理プラグイン > 正規表現解析 を選択します:
正規表現:ログのマッチングに使用する式です。自動で生成するか、手動で入力できます:
自動生成:
[正規表現を自動生成] をクリックします。
ログサンプル セクションで、抽出したいログの内容をハイライトします。
[正規表現を生成] をクリックします。
[ログサンプル] セクションに正しいフォーマットのログコンテンツ (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 | |
| |
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"} | |
| |
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"}}}}} | ||
| ||
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構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックし、 を選択します:
元のフィールド: 展開する元のフィールドの名前です。たとえば、
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"}] | |
| |
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 共通ログ形式 |
```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" | |
| |
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構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックし、 を選択します:
ログ形式: combined
APACHE 設定フィールド: Simple Log Service は、ログ形式 に基づいてこの設定を自動的に入力します。自動入力された内容が、サーバー上の Apache 設定ファイル (通常は /etc/apache2/apache2.conf) で定義されている LogFormat と同一であることを確認してください。
その他のパラメーターについては、シナリオ 2: ログの構造化に記載の一般的な構成パラメーターをご参照ください。
データマスキング
ログ内の機密データをマスキングします。
例:
生ログ | マスキング結果 |
```plaintext | |
[{'account':'1812213231432969','password':'04a23f38'}, {'account':'1812213685634','password':'123a'}] | |
| |
[{'account':'1812213231432969','password':'*'}, {'account':'1812213685634','password':'*'}] | |
``` |
手順:Logtail構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックし、 を選択します:
時間解析
ログ内の時間フィールドを解析し、解析結果をログの __time__ フィールドとして設定します。
例:
生ログ | 時間解析 |
```shell | |
{"level":"INFO","timestamp":"2025-09-23T19:11:47+0800","cluster":"yilu-cluster-0728","message":"User logged in successfully","userId":"user-123"} | |
``` |
|
手順: Logtail構成 ページの 設定の処理 セクションで、処理プラグインの追加 をクリックし、ネイティブ処理プラグイン > 時間解析 を選択します:
元のフィールド: 解析前のログの内容を格納するフィールドです。
時間形式: ログ内の時間の内容に一致する時間フォーマットを設定します。
タイムゾーン: ログの時間フィールドのタイムゾーンを選択します。デフォルトでは、マシンのタイムゾーンが使用されます。これは、LoongCollector (Logtail) プロセスをホストする環境のタイムゾーンです。
付録:正規表現の制限 (コンテナフィルタリング)
コンテナフィルタリングに使用される正規表現は Go RE2 エンジンに基づいており、PCRE などの他のエンジンと比較していくつかの構文上の制限があります。正規表現を記述する際には、以下の項目に注意してください。
名前付きグループ構文の違い
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__:<key> の形式でログのタグセクションに保存されます。
新バージョンがユーザーに与える影響
コンシューマー側の適応:保存場所がコンテンツからタグに変更されるため、ログ消費ロジックをそれに応じて調整する必要があります。例えば、クエリを実行する際に
__tag__を通じてフィールドにアクセスする必要があります。SQL 互換性:クエリ SQL は既に両方のバージョンと自動的に互換性があるため、どちらのバージョンのログを処理する場合でもクエリ文を変更する必要はありません。
付録:ネットワーク転送タイプ
グローバルパラメーター
グローバルパラメーター
パラメーター | 説明 |
設定名 | Logtail 構成の名前。プロジェクト内で一意である必要があります。Logtail 構成の作成後に名前は変更できません。 |
ログトピックタイプ | ログトピックの生成方法を指定します。オプションには、マシングループトピック、ファイルパス抽出、カスタムが含まれます。 |
高度なパラメーター | グローバル設定のオプションの高度なパラメーター。Logtail パイプライン構成の作成。 |
入力パラメーター
プロセッサパラメーター
リージョン
ネットワークタイプ | ドメイン名タイプ | 説明 | 使用シナリオ |
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 プロジェクトがそれぞれ中国本土のリージョンと中国本土以外のリージョンにある場合、インターネット経由でのデータ転送は高いネットワーク遅延と不安定な転送を引き起こす可能性があります。この場合、転送アクセラレーションを使用できます。詳細については、「転送アクセラレーション」をご参照ください。 |
次のステップ
データ可視化:可視化ダッシュボードで主要なメトリックの傾向を監視します。
データ異常の自動アラート:アラートポリシーを設定して、システムの異常をリアルタイムで検出します。




