コンテナー化された環境では、アプリケーションログが異なる Docker コンテナーの標準出力とログファイルに分散しているため、管理と取得が困難になります。Simple Log Service (SLS) の LoongCollector を使用して、複数のノードからの一元的なログ収集、集中ストレージ、構造化解析、データマスキング、フィルタリング、および効率的なクエリと分析を実現します。
注意事項
権限要件:デプロイに使用する Alibaba Cloud アカウントまたは RAM ユーザーには、
AliyunLogFullAccess権限が必要です。Docker バージョンと LoongCollector の要件:
Docker Engine のバージョンが 29.0 以降、またはサポートされる最小 Docker API バージョンが 1.42 以降の場合、LoongCollector 3.2.4 以降を使用する必要があります。そうでない場合、LoongCollector はコンテナーの標準出力やファイルログを収集できません。
LoongCollector のバージョン 3.2.4 以降は、Docker API バージョン 1.24 から 1.48 までをサポートします。
LoongCollector のバージョン 3.2.3 以前は、Docker API バージョン 1.18 から 1.41 までをサポートします。
標準出力収集の制限:
Docker 構成ファイル daemon.json に
"log-driver": "json-file"を追加する必要があります。CentOS 7.4 以降のバージョン (CentOS 8.0 を除く) では、
fs.may_detach_mounts=1を設定する必要があります。
テキストログ収集の制限: overlay および overlay2 ストレージドライバーのみがサポートされています。他のドライバータイプの場合、ログディレクトリを手動でマウントする必要があります。
収集構成の作成プロセス
事前準備:プロジェクトと Logstore を作成します。プロジェクトは異なるアプリケーションのログを分離するためのリソース管理単位であり、Logstore はログを保存するために使用されます。
マシングループの構成 (LoongCollector のインストール):ログを収集したいサーバーに LoongCollector をインストールし、サーバーをマシングループに追加します。マシングループを使用して、収集ノードを一元管理し、構成を配布し、サーバーの状態を管理します。
グローバル構成と入力構成:収集構成の名前、ログ収集のソースと範囲を定義します。
ログの処理と構造化:ログのフォーマットに基づいて処理ルールを構成します。
複数行ログ:Java の例外スタックや Python のトレースバックなど、単一のログが複数行にまたがる場合に適用されます。各ログの開始を識別するために正規表現を使用する必要があります。
構造化解析:正規表現、区切り文字、または NGINX モードのプラグインなどの解析プラグインを構成して、生の文字列を構造化されたキーと値のペアに抽出します。これにより、後続のクエリと分析が容易になります。
ログフィルタリング:収集ブラックリストとコンテンツフィルタリングルールを構成して、有効なログコンテンツを選別します。この方法は、冗長なデータの転送とストレージを削減します。
ログの分類:トピックとログタグを構成して、異なるアプリケーション、コンテナー、またはパスソースからのログを柔軟に区別します。
クエリと分析の構成:システムはデフォルトでフルテキストインデックスを有効にしており、キーワード検索をサポートします。検索効率を向上させるために、構造化フィールドの正確なクエリと分析のためにフィールドインデックスを有効にすることを推奨します。
検証とトラブルシューティング:構成が完了したら、ログが正常に収集されていることを確認します。データが収集されない、ハートビートの失敗、解析エラーなどの問題が発生した場合は、「よくある質問」セクションをご参照ください。
事前準備
ログを収集する前に、ログを管理および保存するためのプロジェクトと Logstore を計画し、作成する必要があります。必要なリソースがすでにある場合は、このステップをスキップして「ステップ 1:マシングループの構成 (LoongCollector のインストール)」に進んでください。
プロジェクトの作成
Logstore の作成
ステップ 1:マシングループの構成 (LoongCollector のインストール)
Docker ホストに LoongCollector をコンテナーとしてデプロイし、ホストをマシングループに追加します。マシングループを使用して、複数の収集ノードを一元管理し、構成を配布し、状態を監視します。
イメージのプル
Docker がインストールされているホストで、次のコマンドを実行して LoongCollector イメージをプルします。ダウンロード速度と安定性を向上させるために、
${region_id}をホストのリージョン IDまたは近くのリージョン (例:cn-hangzhou) に置き換えます。# LoongCollector イメージアドレス docker pull aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyun # Logtail イメージアドレス docker pull registry.${region_id}.aliyuncs.com/log-service/logtail:v2.1.11.0-aliyunLoongCollector コンテナーの起動
次のコマンドを実行してコンテナーを起動します。ディレクトリを正しくマウントし、必要な環境変数を設定してください:
docker run -d \ -v /:/logtail_host:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/${sls_upload_channel}/ilogtail_config.json \ --env ALIYUN_LOGTAIL_USER_ID=${aliyun_account_id} \ --env ALIYUN_LOGTAIL_USER_DEFINED_ID=${user_defined_id} \ aliyun-observability-release-registry.${region_id}.cr.aliyuncs.com/loongcollector/loongcollector:v3.0.12.0-25723a1-aliyunパラメーターの説明:
${sls_upload_channel}:ログアップロードチャネル。フォーマットはプロジェクトリージョン-ネットワーク転送タイプです。例:転送タイプ
構成値のフォーマット
例
シナリオ
内部ネットワーク転送
regionIdcn-hangzhouElastic Compute Service (ECS) インスタンスとプロジェクトが同じリージョンにある。
インターネット転送
regionId-internetcn-hangzhou-internetECS インスタンスとプロジェクトが異なるリージョンにある。
サーバーが他のクラウドプロバイダーまたは自己構築のデータセンターからのものである。
転送アクセラレーション
regionId-accelerationcn-hangzhou-acceleration中国内外のリージョン間通信。
${aliyun_account_id}:Alibaba Cloud アカウント ID。${user_defined_id}:マシングループのカスタム ID。この ID はマシングループをバインドするために使用されます。例えば、user-defined-docker-1を使用します。ID はリージョン内で一意である必要があります。重要以下の起動条件を満たす必要があります:
3 つの主要な環境変数が正しく構成されていること:
ALIYUN_LOGTAIL_CONFIG、ALIYUN_LOGTAIL_USER_ID、およびALIYUN_LOGTAIL_USER_DEFINED_ID。/var/run/docker.sockディレクトリがマウントされていること。このディレクトリはコンテナーのライフサイクルイベントをリッスンするために使用されます。ルートディレクトリ
/が/logtail_hostにマウントされていること。これはホストのファイルシステムにアクセスするために使用されます。
コンテナーの実行状態の確認
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マシングループの構成
左側のナビゲーションウィンドウで、 を選択し、 をクリックし、次のパラメーターを構成して [OK] をクリックします:
名前:マシングループのカスタム名を入力します。例:
docker-host-group。マシングループ識別子:[カスタム識別子] を選択します。
カスタム識別子:コンテナー起動時に設定した
${user_defined_id}を入力します。ID は完全に一致する必要があります。そうでない場合、関連付けは失敗します。
マシングループのハートビート状態の確認
新しいマシングループの名前をクリックして詳細ページに移動し、 を確認します:
OK: LoongCollector が SLS に接続されていることを示します。
失敗: 問題のトラブルシューティング方法については、「ハートビートエラーのトラブルシューティング」をご参照ください。
ステップ 2:ログ収集ルールの作成と構成
LoongCollector がどのログを収集し、その構造をどのように解析し、コンテンツをどのようにフィルタリングし、構成を登録済みのマシングループにどのようにバインドするかを定義します。
[
Logstores] ページで、対象の Logstore 名の横にある
アイコンをクリックします。[データ収集] の横にある
をクリックします。[クイックデータインポート] ダイアログボックスで、ログソースに基づいてテンプレートを選択し、[今すぐ統合] をクリックします。Docker 標準出力:[Docker 標準出力と標準エラー - 新バージョン] を選択します。
コンテナー標準出力を収集するためのテンプレートには、新バージョンと旧バージョンの 2 つがあります。新バージョンの使用を推奨します。新旧バージョンの違いについては、「付録:コンテナー標準出力の新旧バージョンの比較」をご参照ください。旧バージョンで収集するには、「Docker コンテナーからの標準出力の収集 (旧バージョン)」をご参照ください。
Docker ファイルログ:[Docker ファイル - コンテナー] を選択します。
[マシングループ] を構成し、[次へ] をクリックします。
シナリオ:[Docker コンテナー] を選択します。
ステップ 1 で作成したマシングループを、ソースマシングループリストから適用済みマシングループリストに移動します。
[Logtail 構成] ページで、次のパラメーターを構成し、[次へ] をクリックします。
1. グローバル構成と入力構成
開始する前に、データインポートテンプレートを選択し、マシングループをバインドしたことを確認してください。このステップでは、収集構成の名前、ログソース、および収集範囲を定義します。
Docker 標準出力の収集
グローバル構成
構成名:収集構成のカスタム名を入力します。名前はプロジェクト内で一意である必要があり、構成作成後に変更できません。名前は次の規則に従う必要があります:
小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。
小文字または数字で開始および終了する必要があります。
入力構成
[標準出力と標準エラー] または [標準エラー] スイッチをオンにします。両方のスイッチはデフォルトでオンになっています。
重要収集されたログで混乱を招く可能性があるため、標準出力と標準エラーの両方を同時に有効にしないことを推奨します。
Docker コンテナーのテキストログの収集
グローバル構成:
構成名:収集構成のカスタム名を入力します。名前はプロジェクト内で一意である必要があり、構成作成後に変更できません。名前は次の規則に従う必要があります:
小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。
小文字または数字で開始および終了する必要があります。
入力構成:
ファイルパスタイプ:
コンテナー内のパス:コンテナー内からログファイルを収集します。
ホストパス:ホスト上のローカルサービスからログを収集します。
ファイルパス:収集するログファイルの絶対パス。
Linux:パスはスラッシュ (`/`) で始まる必要があります。例:
/data/mylogs/**/*.logは、/data/mylogsディレクトリ内の .log 拡張子を持つすべてのファイルを示します。Windows:パスはドライブ文字で始まる必要があります。例:
C:\Program Files\Intel\**\*.Log。
最大ディレクトリ監視深度:[ファイルパス] のワイルドカード文字
**が一致できる最大のディレクトリ深度。デフォルト値は 0 で、現在のディレクトリを示します。値の範囲は 0 から 1000 です。このパラメーターを 0 に設定し、ファイルを含むディレクトリへのパスを構成することを推奨します。
2. ログの処理と構造化
生の非構造化ログを構造化データに変換するためのログ処理ルールを構成します。これにより、ログのクエリと分析の効率が向上します。ルールを構成する前にログサンプルを追加することを推奨します:
[Logtail 構成] ページの [プロセッサー構成] セクションで、[ログサンプルの追加] をクリックし、収集するログのコンテンツを入力します。システムはサンプルに基づいてログ形式を識別し、正規表現と解析ルールの生成を支援します。これにより、構成が簡素化されます。
シナリオ 1:複数行ログの処理 (Java スタックログなど)
Java の例外スタックや JSON オブジェクトなどのログは、しばしば複数行にわたります。デフォルトの収集モードでは、これらのログは複数の不完全なレコードに分割され、コンテキストが失われます。この問題に対処するため、複数行収集モードを有効にし、行の開始を示す正規表現を構成して、同じログの連続する行を単一の完全なログエントリにマージします。
効果の例:
未処理の生ログ | デフォルトの収集モードでは、各行が独立したログとして扱われ、スタック情報が分断され、コンテキストが失われる | 複数行モードを有効にすると、行の開始を示す正規表現が完全なログを識別し、完全な意味構造を保持する |
|
|
|
構成:[Logtail 構成] ページの [プロセッサー構成] セクションで、[複数行モード] をオンにします:
タイプ: [カスタム] または [複数行 JSON] を選択します。
カスタム:生ログの形式が固定されていません。各ログエントリの開始行を識別するために、[先頭行に一致する正規表現] を構成する必要があります。
先頭行に一致する正規表現:自動生成または手動入力をサポートします。正規表現はデータの完全な行に一致する必要があります。例えば、上記の例の一致する正規表現は
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*です。自動生成:[生成] をクリックします。次に、[ログサンプル] テキストボックスで、抽出するログコンテンツを選択し、[自動生成] をクリックします。
手動入力:[正規表現の手動入力] をクリックします。式を入力した後、[検証] をクリックします。
複数行 JSON:生ログがすべて標準 JSON 形式の場合、SLS は単一の JSON ログ内の改行を自動的に処理します。
分割失敗時の処理方法:
破棄:テキストが先頭行ルールに一致しない場合、破棄されます。
単一行を保持:一致しないテキストはチャンク化され、元の単一行モードで保持されます。
シナリオ 2:構造化ロギング
NGINX アクセスログやアプリケーション出力ログなど、生のログが非構造化または半構造化テキストである場合、直接のクエリと分析はしばしば非効率です。SLS は、さまざまなデータ解析プラグインを提供し、異なる形式の生ログを自動的に構造化データに変換できます。これにより、後続の分析、監視、およびアラートのための堅固なデータ基盤が提供されます。
効果の例:
生ログ | 解析済みログ |
| |
構成手順:[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 レベルのログなど、価値の低いまたは無関係なログを大量に無差別に収集すると、ストレージリソースを浪費し、コストを増加させ、クエリ効率に影響を与え、データ漏洩のリスクをもたらします。これらの問題に対処するため、効率的で安全なログ収集のために、詳細なフィルタリング戦略を実装します。
コンテンツフィルタリングによるコスト削減
フィールドコンテンツに基づいてログをフィルタリングします。例えば、WARNING または ERROR レベルのログのみを収集します。
効果の例:
未処理の生ログ |
|
| |
設定手順:[Logtail 設定] ページの [プロセッサー設定] セクションで:
[プロセッサーの追加] をクリックし、 を選択します:
フィールド名:フィルタリングに使用するログフィールド。
フィールド値:フィルタリングに使用する正規表現。フルテキストマッチングのみがサポートされており、部分的なキーワードマッチングはサポートされていません。
ブラックリストによる収集範囲の制御
ブラックリストを使用して、指定されたディレクトリやファイルを除外します。これにより、無関係なログや機密性の高いログがアップロードされるのを防ぎます。
構成手順:[Logtail 構成] ページの [入力構成] セクションで、[収集ブラックリスト] を有効にし、[追加] をクリックします。
ディレクトリとファイル名には、完全一致とワイルドカードマッチングがサポートされています。サポートされているワイルドカード文字はアスタリスク (`*`) と疑問符 (`?`) です。
ファイルパスブラックリスト:無視するファイルパス。例:
/home/admin/private*.log:収集時に/home/admin/ディレクトリ内の "private" で始まり ".log" で終わるすべてのファイルを無視します。/home/admin/private*/*_inner.log:収集時に/home/admin/ディレクトリ下の "private" で始まるディレクトリ内の "_inner.log" で終わるファイルを無視します。
ファイルブラックリスト:収集時に無視するファイル名。例:
app_inner.log:収集時にapp_inner.logという名前のすべてのファイルを無視します。
ディレクトリブラックリスト:ディレクトリパスはスラッシュ (`/`) で終わることはできません。例:
/home/admin/dir1/:ディレクトリブラックリストは効果がありません。/home/admin/dir*:収集時に/home/admin/ディレクトリの "dir" で始まるすべてのサブディレクトリ内のファイルを無視します。/home/admin/*/dir:収集時に/home/admin/ディレクトリの第 2 レベルにある "dir" という名前のサブディレクトリ内のすべてのファイルを無視します。例えば、/home/admin/a/dirディレクトリ内のファイルは無視されますが、/home/admin/a/b/dirディレクトリ内のファイルは収集されます。
コンテナーフィルタリング
環境変数、Pod ラベル、名前空間、コンテナー名などのコンテナーメタデータに基づいて収集条件を設定し、どのコンテナーのログを収集するかを正確に制御します。
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[コンテナーフィルタリング] を有効にし、[追加] をクリックします。
複数の条件は AND 論理演算子で結合されます。すべての正規表現マッチングは Go の RE2 正規表現エンジンに基づいており、PCRE などのエンジンと比較していくつかの制限があります。正規表現を記述する際は、「付録:正規表現の制限 (コンテナーフィルタリング)」で説明されている制限に従ってください。
環境変数ブラックリスト/ホワイトリスト:ログを収集したいコンテナーの環境変数条件を指定します。
K8s Pod ラベルブラックリスト/ホワイトリスト:収集対象のコンテナーが配置されている Pod のラベル条件を指定します。
K8s Pod 名の正規表現マッチング:Pod 名で収集対象のコンテナーを指定します。
K8s 名前空間の正規表現マッチング:名前空間名で収集対象のコンテナーを指定します。
K8s コンテナー名の正規表現マッチング:コンテナー名で収集対象のコンテナーを指定します。
コンテナーラベルブラックリスト/ホワイトリスト:指定された条件を満たすラベルを持つコンテナーからログを収集します。このパラメーターは Docker シナリオで使用され、Kubernetes シナリオでは推奨されません。
4. ログの分類
複数のアプリケーションやインスタンスが同じログ形式を共有するシナリオでは、ログソースを区別することが困難です。これにより、クエリ中にコンテキストが不足し、分析効率が低下します。この問題に対処するため、トピックとログタグを構成して、自動的なコンテキスト関連付けと論理的な分類を実現します。
トピックの構成
複数のアプリケーションやインスタンスが同じログ形式を持ちながら、パスが異なる場合 (例:/apps/app-A/run.log と /apps/app-B/run.log)、収集されたログのソースを区別するのは困難です。マシングループ、カスタム名、またはファイルパス抽出に基づいてトピックを生成し、異なるアプリケーションやパスソースからのログを柔軟に区別できます。
構成手順::トピック生成方法を選択します。以下の 3 種類がサポートされています:
マシングループトピック:収集構成が複数のマシングループに適用される場合、LoongCollector はサーバーが属するマシングループの名前を
__topic__フィールドの値として自動的に使用してアップロードします。これは、ホストクラスターごとにログを分割するシナリオに適しています。カスタム:形式は
customized://<custom_topic_name>です。例:customized://app-login。これは、固定のビジネス識別子を持つ静的なトピックシナリオに適しています。ファイルパス抽出:ログファイルの完全なパスからキー情報を抽出し、ログソースを動的にマークします。これは、複数のユーザーやアプリケーションが同じログファイル名を共有しているが、パスが異なる場合に適しています。
複数のユーザーやサービスが異なるトップレベルディレクトリにログを書き込むが、サブパスとファイル名が同じ場合、ファイル名だけではソースを区別できません。例:
/data/logs ├── userA │ └── serviceA │ └── service.log ├── userB │ └── serviceA │ └── service.log └── userC └── serviceA └── service.logファイルパス抽出を構成し、正規表現を使用して完全なパスからキー情報を抽出します。一致した結果はトピックとして Logstore にアップロードされます。
抽出ルール:正規表現のキャプチャグループに基づく
正規表現を構成すると、システムはキャプチャグループの数と命名に基づいて出力フィールド形式を自動的に決定します。ルールは以下の通りです:
ファイルパスの正規表現では、スラッシュ (/) をエスケープする必要があります。
キャプチャグループのタイプ
シナリオ
生成されるフィールド
正規表現の例
一致するパスの例
生成されるフィールド
単一キャプチャグループ (1 つの
(.*?)のみ)ソースを区別するために 1 つのディメンションのみが必要 (ユーザー名、環境など)
__topic__フィールドを生成\/logs\/(.*?)\/app\.log/logs/userA/app.log__topic__:userA複数キャプチャグループ - 名前なし (複数の
(.*?))複数のディメンションが必要だが、意味的なラベルはない
タグフィールド
__tag__:__topic_{i}__を生成。ここで{i}はキャプチャグループの序数\/logs\/(.*?)\/(.*?)\/app\.log/logs/userA/svcA/app.log__tag__:__topic_1__userA;__tag__:__topic_2__svcA複数キャプチャグループ - 名前付き (
(?P<name>.*?)を使用)複数のディメンションが必要で、クエリと分析を容易にするためにフィールドの意味を明確にしたい
タグフィールド
__tag__:{name}を生成\/logs\/(?P<user>.*?)\/(?P<service>.*?)\/app\.log/logs/userA/svcA/app.log__tag__:user:userA;__tag__:service:svcA
ログタギング
ログタグエンリッチメント機能を有効にして、コンテナーの環境変数や Kubernetes の Pod ラベルからキー情報を抽出し、その情報をタグとしてアタッチします。これにより、ログの詳細なグループ化が実現します。
構成手順:[Logtail 構成] ページの [入力構成] セクションで、[ログタグエンリッチメント] を有効にし、[追加] をクリックします。
環境変数:環境変数名とタグ名を設定します。環境変数の値はタグ名に保存されます。
環境変数名:抽出する環境変数の名前を指定します。
タグ名:環境変数タグの名前。
Pod ラベル:Pod ラベル名とタグ名を設定します。Pod ラベルの値はタグ名に保存されます。
Pod ラベル名:抽出する Kubernetes Pod ラベルの名前。
タグ名:タグの名前。
5. 出力構成
デフォルトでは、すべてのログは lz4 圧縮で現在の Logstore に送信されます。同じソースからのログを異なる Logstore に送信するには、以下の手順に従います:
複数のターゲットへの動的配信
複数のターゲットへのログ送信は、LoongCollector 3.0.0 以降でのみ利用可能です。この機能は Logtail ではサポートされていません。
最大 5 つの出力ターゲットを構成できます。
複数の出力ターゲットを構成した後、収集構成は現在の Logstore の収集構成リストに表示されなくなります。複数ターゲット配信構成を表示、変更、または削除するには、「複数ターゲット配信構成を管理するにはどうすればよいですか?」をご参照ください。
手順:[Logtail 構成] ページの [出力構成] セクションで
をクリックして出力構成を展開します。出力先の追加 をクリックし、以下の設定を構成します:
Logstore:ターゲットの Logstore を選択します。
圧縮方法:[lz4] または [zstd] を選択します。
ルート設定:タグフィールドに基づいてログをルーティングします。ルーティングルールに一致するログはターゲットの Logstore に送信されます。この構成が空の場合、収集されたすべてのログがターゲットの Logstore に送信されます。
タグ名:ルーティングに使用されるタグフィールドの名前。フィールド名を直接入力します。例:
__path__。__tag__:プレフィックスは不要です。タグフィールドは 2 つのカテゴリに分類されます:タグの詳細については、「LoongCollector 収集タグの管理」をご参照ください。
エージェント関連:これらのタグは収集エージェントに関連し、どのプラグインにも依存しません。例:
__hostname__および__user_defined_id__。入力プラグイン関連:これらのタグは入力プラグインに依存し、プラグインが関連情報をログに追加およびエンリッチします。例:ファイル収集のための
__path__、Kubernetes 収集のための_pod_name_および_container_name_。
タグ値:ログのタグ値がこの値に一致する場合、ログはこのターゲット Logstore に送信されます。
このタグフィールドを破棄するかどうか:このオプションを有効にすると、このタグフィールドはアップロードされたログから削除されます。
ステップ 3:クエリと分析の構成
ログ処理とプラグイン構成が完了したら、[次へ] をクリックして [クエリと分析の構成] ページに移動します:
システムはデフォルトでフルテキストインデックスを有効にし、元のログコンテンツに対するキーワード検索をサポートします。
フィールドによる正確なクエリを実行するには、ページのプレビューデータが読み込まれた後、[インデックスの自動生成] をクリックします。SLS は、プレビューデータの最初のエントリに基づいてフィールドインデックスを生成します。
構成が完了したら、[次へ] をクリックして、収集プロセス全体の設定を完了します。
ステップ 4:検証とトラブルシューティング
収集構成が完了し、マシングループに適用されると、システムは自動的に構成を配布し、増分ログの収集を開始します。
アップロードされたログの表示
ログファイルに新しいコンテンツがあることを確認する: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__
マシングループのカスタム ID。
よくある質問
マシングループのハートビート接続が失敗
ユーザー ID の確認:サーバータイプが ECS でない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合は、以下の表に基づいて指定されたディレクトリに正しいユーザー ID が存在するかどうかを確認します。
Linux:
cd /etc/ilogtail/users/ && touch <uid>コマンドを実行してユーザー ID ファイルを作成します。Windows:
C:\LogtailData\users\ディレクトリに移動し、<uid>という名前の空のファイルを作成します。
指定されたパスに現在のプロジェクトの Alibaba Cloud アカウント ID で名前が付けられたファイルが存在する場合、ユーザー ID は正しく構成されています。
マシングループ ID の確認:マシングループにカスタム ID を使用している場合は、指定されたディレクトリに
user_defined_idファイルが存在するかどうかを確認します。存在する場合は、ファイルの内容がマシングループに構成されたカスタム ID と一致しているかどうかを確認します。システム
指定ディレクトリ
ソリューション
Linux
/etc/ilogtail/user_defined_id# カスタム ID を構成します。ディレクトリが存在しない場合は、手動で作成します。 echo "user-defined-1" > /etc/ilogtail/user_defined_idWindows
C:\LogtailData\user_defined_idC:\LogtailDataディレクトリに新しいuser_defined_idファイルを作成し、カスタム ID を書き込みます。(ディレクトリが存在しない場合は、手動で作成します。)ユーザー ID とマシングループ ID の両方が正しく構成されている場合は、「LoongCollector (Logtail) マシングループの問題のトラブルシューティング」でさらなるトラブルシューティングをご参照ください。
ログのデータが収集されない
増分ログの確認:LoongCollector (Logtail) を収集用に構成した後、収集対象のログファイルに新しいログがない場合、LoongCollector (Logtail) はそのファイルからログを収集しません。
マシングループのハートビート状態の確認: ページに移動し、対象のマシングループの名前をクリックし、 セクションで、[ハートビート] の状態を確認します。
ハートビートが正常な場合、マシングループは SLS プロジェクトに接続されています。
ハートビートが失敗した場合:問題のトラブルシューティング方法については、「マシングループのハートビート接続が失敗」をご参照ください。
LoongCollector (Logtail) 収集構成がマシングループに適用されているか確認する:LoongCollector (Logtail) 収集構成が作成されていても、構成がマシングループに適用されていない場合、ログは収集されません。
ページで、目的のマシングループの名前をクリックすると、[マシングループ設定] ページに移動します。
ページで、[構成の管理] を表示します。左側には [すべての Logtail 構成] が表示され、右側には [適用済みの Logtail 構成] が表示されます。対象の LoongCollector (Logtail) 収集構成が右側の適用済みエリアに移動されている場合、構成は対象のマシングループに正常に適用されています。
対象の LoongCollector (Logtail) 収集構成が右側の適用済みエリアに移動されていない場合は、[変更] をクリックします。左側の [すべての Logtail 構成] リストで、対象の LoongCollector (Logtail) 構成の名前を選択し、
をクリックして右側の適用済みエリアに移動し、[保存] をクリックします。
ログ収集エラーまたは不正なフォーマット
トラブルシューティングのアプローチ:この状況は、ネットワーク接続と基本構成が正常であることを示します。問題は主にログコンテンツと解析ルールの不一致です。問題の特定には、具体的なエラーメッセージを確認する必要があります:
[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 ディレクトリにマウントします。
同じログファイルまたはコンテナーの標準出力を、複数の収集構成で同時に収集するにはどうすればよいですか?
デフォルトでは、データの重複を防ぐため、SLS は各ログソースが 1 つの収集構成によってのみ収集されるように制限しています:
テキストログファイルは 1 つの Logtail 構成にのみ一致できます。
コンテナー標準出力 (stdout):
標準出力テンプレートの新バージョンを使用している場合、デフォルトでは 1 つの標準出力収集構成によってのみ収集できます。
標準出力テンプレートの旧バージョンを使用している場合、追加の構成は不要で、デフォルトで複数のコピーの収集をサポートします。
Simple Log Service コンソールにログインし、対象のプロジェクトに移動します。
左側のナビゲーションウィンドウで、
[Logstores] を選択し、対象の Logstore を見つけます。その名前の横にある
アイコンをクリックして Logstore を展開します。[Logtail 構成] をクリックします。構成リストで、対象の Logtail 構成を見つけ、[操作] 列の [Logtail 構成の管理] をクリックします。
Logtail 構成ページで、[編集] をクリックし、[入力構成] セクションまでスクロールします:
テキストファイルログを収集する場合:[ファイルの複数回収集を許可] を有効にします。
コンテナー標準出力を収集する場合:[異なる Logtail 構成による収集を許可] をオンにします。
複数ターゲット配信構成を管理するにはどうすればよいですか?
複数ターゲット配信構成は、複数の Logstore に関連付けられています。これらの構成は、プロジェクトレベルの管理ページから管理します:
Simple Log Service コンソールにログインし、対象のプロジェクト名をクリックします。
プロジェクトページで、左側のナビゲーションウィンドウから
を選択します。説明このページでは、プロジェクト内のすべての収集構成を一元管理できます。これには、関連する Logstore が誤って削除された後に残った構成も含まれます。
付録:ネイティブ解析プラグインの詳細説明
[Logtail 構成] ページの [処理構成] セクションで、処理プラグインを追加して、生ログの構造化処理を構成します。既存の収集構成に処理プラグインを追加するには、以下の手順に従います:
左側のナビゲーションウィンドウで、
[Logstores] を選択し、対象の Logstore を見つけます。その名前の横にある
アイコンをクリックして Logstore を展開します。[Logtail 構成] をクリックします。構成リストで、対象の Logtail 構成を見つけ、[操作] 列の [Logtail 構成の管理] をクリックします。
Logtail 構成ページで、[編集] をクリックします。
このセクションでは、一般的なログ処理シナリオをカバーする、よく使用される処理プラグインのみを紹介します。他の機能の詳細については、「拡張処理プラグイン」をご参照ください。
プラグインの組み合わせルール (LoongCollector / Logtail 2.0 以降のバージョンに適用):
ネイティブ処理プラグインと拡張処理プラグインは、独立して使用することも、必要に応じて組み合わせることもできます。
パフォーマンスと安定性が高いため、ネイティブ処理プラグインを優先的に使用することを推奨します。
ネイティブ機能がビジネスニーズを満たせない場合は、構成済みのネイティブ処理プラグインの後に拡張処理プラグインを追加して、補足的な処理を実行します。
順序の制約:
すべてのプラグインは構成された順序で順次実行され、処理チェーンを形成します。注意:すべてのネイティブ処理プラグインは、どの拡張処理プラグインよりも前に配置する必要があります。拡張処理プラグインを追加した後は、ネイティブ処理プラグインをさらに追加することはできません。
正規表現解析
正規表現を使用してログフィールドを抽出し、ログをキーと値のペアに解析します。各フィールドは独立してクエリおよび分析できます。
効果の例:
未処理の生ログ | 正規表現解析プラグインの使用 |
| |
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します:
正規表現:ログに一致させるために使用します。自動生成または手動入力をサポートします:
自動生成:
[生成] をクリックします。
[ログサンプル] で、抽出するログコンテンツをハイライトします。
[正規表現の生成] をクリックします。

手動入力:ログ形式に基づいて [正規表現の手動入力] をクリックします。
構成が完了したら、[検証] をクリックして、正規表現がログコンテンツを正しく解析できるかテストします。
抽出されたフィールド:抽出されたログコンテンツ (値) に対応するフィールド名 (キー) を設定します。
その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。
区切り文字解析
区切り文字を使用してログコンテンツを構造化し、複数のキーと値のペアに解析します。単一文字および複数文字の区切り文字がサポートされています。
効果の例:
未処理の生ログ | 指定された文字 |
| |
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します。
区切り文字:ログコンテンツを分割するために使用する文字を指定します。
例:CSV 形式のファイルの場合、[カスタム] を選択し、カンマ (,) を入力します。
引用符:フィールド値に区切り文字が含まれている場合、誤った分割を防ぐためにフィールドを囲む引用符を指定する必要があります。
抽出されたフィールド:分離の順序で各列に対応するフィールド名 (キー) を設定します。ルールは以下の通りです:
フィールド名は文字、数字、アンダースコア (_) のみを含むことができます。
文字またはアンダースコア (_) で始まる必要があります。
最大長は 128 バイトです。
その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。
標準 JSON 解析
オブジェクトタイプの JSON ログをキーと値のペアに解析して構造化します。
効果の例:
未処理の生ログ | 標準 JSON キー値の自動抽出 |
| |
設定手順: [Logtail 設定] ページの [プロセッサー設定] セクションで、[プロセッサーの追加] をクリックし、 を選択します。
元のフィールド:デフォルト値は content です。このフィールドは、解析対象の生ログコンテンツを保存するために使用されます。
その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。
ネストされた JSON 解析
展開深度を指定して、ネストされた JSON ログをキーと値のペアに解析します。
効果の例:
未処理の生ログ | 展開深度:0、展開深度をプレフィックスとして使用 | 展開深度:1、展開深度をプレフィックスとして使用 |
| | |
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します:
元のフィールド:展開する生のフィールドの名前。例:
content。JSON 展開深度:JSON オブジェクトの展開レベル。値 0 は完全な展開を示し、デフォルト値です。値 1 は現在のレベルを示します。
展開されたキーを連結する文字:JSON 展開中のフィールド名のコネクタ。デフォルトのコネクタはアンダースコア (_) です。
展開されたキーの名前プレフィックス:JSON 展開後のフィールド名のプレフィックスを指定します。
配列の展開:このスイッチをオンにすると、配列がインデックス付きのキーと値のペアに展開されます。
例:
{"k":["a","b"]}は{"k[0]":"a","k[1]":"b"}に展開されます。展開されたフィールドの名前を変更する場合、例えば prefix_s_key_k1 を new_field_name に変更するには、[フィールド名の変更] プラグインを追加してマッピングを完了します。
その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。
JSON 配列解析
json_extract 関数を使用して、JSON 配列から JSON オブジェクトを抽出します。
効果の例:
未処理の生ログ | JSON 配列構造の抽出 |
| |
構成手順:[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 Common Log Format |
| |
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します:
ログフォーマット:combined
APACHE LogFormat 構成: システムは、[ログ形式] に基づいて構成を自動的に入力します。
重要自動入力されたコンテンツを検証し、サーバーの Apache 構成ファイルで定義されている LogFormat と完全に同じであることを確認してください。ファイルは通常 /etc/apache2/apache2.conf にあります。
その他のパラメーターについては、「シナリオ 2:構造化ロギング」の共通構成パラメーターの説明をご参照ください。
データマスキング
ログ内の機密データをマスキングします。
効果の例:
未処理の生ログ | マスキング結果 |
| |
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します。
時刻解析
ログ内の時刻フィールドを解析し、解析結果をログの __time__ フィールドの値として設定します。
効果の例:
未処理の生ログ | 時刻解析 |
|
|
構成手順:[Logtail 構成] ページの [プロセッサー構成] セクションで、[プロセッサーの追加] をクリックし、 を選択します:
元のフィールド:解析前のログコンテンツを含む生のフィールド。
時刻フォーマット:ログ内の時刻コンテンツに基づいて、対応する時刻フォーマットを設定します。
タイムゾーン:ログの時刻フィールドのタイムゾーンを選択します。デフォルトでは、マシンのタイムゾーンが使用されます。これは、LoongCollector (Logtail) プロセスが実行されている環境のタイムゾーンです。
付録:正規表現の制限 (コンテナーフィルタリング)
コンテナーフィルタリングに使用される正規表現は、Go の RE2 エンジンに基づいており、PCRE などの他のエンジンと比較していくつかの構文上の制限があります。正規表現を記述する際には、以下に注意してください:
1. 名前付きグループ構文の違い
Go は (?P<name>...) 構文を使用して名前付きグループを定義し、PCRE の (?<name>...) 構文はサポートしていません。
正しい例:
(?P<year>\d{4})不正な構文:
(?<year>\d{4})
2. サポートされていない正規表現機能
以下の一般的だが複雑な正規表現機能は RE2 では利用できません。これらは使用しないでください:
アサーション (lookahead/lookbehind):
(?=...)、(?!...)、(?<=...)、(?<!...)条件式:
(?(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 は互換性のために自動的に適応されているため、ユーザーは新旧両バージョンのログを同時に処理するためにクエリ文を変更する必要はありません。
> [マシングループの作成]





