Kubernetes 環境では、分散したコンテナログの管理は難しく、トラブルシューティングの非効率化や O&M コストの増大につながります。この問題に対処するため、LoongCollector データコレクターを DaemonSet モードでデプロイし、Simple Log Service コンソールで収集設定を作成できます。このアプローチにより、統一されたログ収集と構造化処理が可能になり、ログ検索、問題診断、可観測性分析の効率が向上します。
適用範囲
ランタイム環境:
Container Service for Kubernetes (ACK) (マネージド版および専用版) およびセルフマネージド Kubernetes クラスターがサポートされています。
Mount propagation: HostToContainerをサポートする Kubernetes 1.10.0 以降。コンテナランタイム (Docker および Containerd のみ)
Docker:
docker.sock へのアクセス権限が必要です。
標準出力の収集は、JSON ログドライバーのみをサポートします。
overlay および overlay2 ストレージドライバーのみがサポートされています。他のストレージドライバータイプの場合、ログディレクトリを手動でマウントする必要があります。
Containerd:containerd.sock へのアクセス権限が必要です。
リソース要件:LoongCollector (Logtail) は `system-cluster-critical` として高い優先度で実行されます。クラスターリソースが不十分な場合はデプロイしないでください。ノード上の既存の Pod が退去させられる可能性があります。
CPU:少なくとも 0.1 コアを予約してください。
メモリ:収集コンポーネントに少なくとも 150 MB、コントローラーコンポーネントに少なくとも 100 MB を予約してください。
実際の使用量は、収集レート、監視対象のディレクトリとファイルの数、およびネットワーク輻輳のレベルによって異なります。実際の使用量が指定された制限の 80% 未満であることを確認してください。
権限要件:デプロイメントに使用される Alibaba Cloud アカウントまたは RAM ユーザーは、
AliyunLogFullAccess権限を持っている必要があります。カスタムポリシーを作成するには、「AliyunCSManagedLogRolePolicy」システムポリシーをご参照ください。ポリシーから権限をコピーし、ターゲットの RAM ユーザーまたはロールに付与して、詳細な権限設定を行うことができます。
収集設定のワークフロー
LoongCollector のインストール:LoongCollector を DaemonSet モードでデプロイします。これにより、クラスター内の各ノードで収集コンテナが実行され、そのノード上のすべてのコンテナからログを収集します。
Sidecar パターンの詳細については、「Kubernetes Pod からのテキストログの収集 (Sidecar パターン)」をご参照ください。
Logstore の作成:Logstore は収集されたログを保存するために使用されます。
グローバル設定と入力設定:収集設定の名前を定義し、ログ収集のソースと範囲を指定します。
ログの処理と構造化:ログのフォーマットに基づいて処理ルールを設定します。
複数行ログ:Java の例外スタックや Python のトレースバックなど、単一のログエントリが複数行にまたがる場合に適しています。先頭行の正規表現を使用して、各ログエントリの開始を識別できます。
構造化解析:正規表現、デリミタ、または NGINX モードなどの解析プラグインを設定して、生の文字列を構造化されたキーと値のペアに抽出し、クエリと分析を容易にします。
ログフィルタリング:収集ブラックリストとコンテンツフィルタリングルールを設定して、有効なログコンテンツをスクリーニングします。これにより、冗長なデータ転送とストレージコストを削減できます。
ログの分類:ログトピックとタグを設定することで、さまざまなサービス、コンテナ、またはパスソースからのログを柔軟に区別します。
クエリと分析の設定:フルテキストインデックスはデフォルトで有効になっており、キーワード検索をサポートします。フィールドインデックスを有効にして、構造化されたフィールドの正確なクエリと分析を行い、検索効率を向上させることができます。
検証とトラブルシューティング:設定が完了したら、ログが正常に収集されていることを確認します。データ収集の失敗、ハートビートの失敗、解析エラーなどの問題が発生した場合は、「トラブルシューティング FAQ」をご参照ください。
ステップ 1:LoongCollector のインストール
LoongCollector は Simple Log Service の次世代ログ収集エージェントであり、Logtail のアップグレード版です。LoongCollector と Logtail は共存できません。Logtail をインストールするには、「Logtail のインストール、実行、アップグレード、アンインストール」をご参照ください。
このトピックでは、LoongCollector の基本的なインストールフローのみを説明します。パラメーターの詳細については、「インストールと設定」をご参照ください。すでに LoongCollector または Logtail をインストールしている場合は、このステップをスキップして「ステップ 2:Logstore の作成」に進んでください。
LoongCollector (Logtail) の実行中にホスト時刻が変更されると、ログの重複収集やデータ損失が発生する可能性があります。
ACK クラスター
ACK コンソールから LoongCollector をインストールできます。デフォルトでは、ログは現在の Alibaba Cloud アカウント下の Simple Log Service プロジェクトに送信されます。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
ターゲットクラスターの名前をクリックします。
左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。
[ログとモニタリング] タブに移動し、loongcollector を見つけて、[インストール] をクリックします。
説明クラスターを作成する際に、[コンポーネント設定] ページで [Simple Log Service を使用] を選択し、[新規プロジェクトの作成] または [既存のプロジェクトを使用] を選択できます。
インストールが完了すると、Simple Log Service は現在のアカウント下に以下のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示できます。
リソースタイプ
リソース名
機能
プロジェクト
k8s-log-${cluster_id}異なるサービスのログを隔離するリソース管理ユニットです。
より柔軟なログリソース管理のためにプロジェクトを作成するには、「プロジェクトの作成」をご参照ください。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクションです。
Logstore
config-operation-log重要この Logstore は削除しないでください。
loongcollector-operator コンポーネントのログを保存します。その課金方法は通常の Logstore と同じです。詳細については、「取り込みデータ量に応じた支払い方法の課金項目」をご参照ください。この Logstore に収集設定を作成しないでください。
セルフマネージドクラスター
Kubernetes クラスターに接続し、クラスターのリージョンに応じたコマンドを実行します:
中国リージョン
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh中国以外のリージョン
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shloongcollector-custom-k8s-packageディレクトリに移動し、./loongcollector/values.yaml設定ファイルを変更します。# ===================== 必須情報 ===================== # このクラスターからログを収集するプロジェクトの名前 (例: k8s-log-custom-sd89ehdq) projectName: "" # プロジェクトのリージョン (例: 上海: cn-shanghai) region: "" # プロジェクトを所有する Alibaba Cloud アカウントの UID。引用符で囲んでください (例: "123456789") aliUid: "" # 使用するネットワーク。オプションのパラメーター: Internet, Intranet。デフォルトは Internet です。 net: Internet # Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。アカウントには AliyunLogFullAccess システムポリシー権限が必要です。 accessKeyID: "" accessKeySecret: "" # カスタムクラスター ID。名前には大文字、小文字、数字、ハイフン (-) のみを含めることができます。 clusterID: ""loongcollector-custom-k8s-packageディレクトリで、次のコマンドを実行して LoongCollector とその依存コンポーネントをインストールします:bash k8s-custom-install.sh installインストールが完了したら、コンポーネントの実行状態を確認します。
Pod の起動に失敗した場合は、values.yaml の設定が正しいか、関連するイメージが正常にプルされたかを確認してください。
# Pod の状態を確認 kubectl get po -n kube-system | grep loongcollector-ds同時に、Simple Log Service は以下のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示できます。
リソースタイプ
リソース名
機能
プロジェクト
values.yaml ファイルで定義された
projectNameの値異なるサービスのログを隔離するリソース管理ユニットです。
より柔軟なログリソース管理のためにプロジェクトを作成するには、「プロジェクトの作成」をご参照ください。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクションです。
Logstore
config-operation-log重要この Logstore は削除しないでください。
loongcollector-operator コンポーネントのログを保存します。その課金方法は通常の Logstore と同じです。詳細については、「取り込みデータ量に応じた支払い方法の課金項目」をご参照ください。この Logstore に収集設定を作成しないでください。
ステップ 2:Logstore の作成
Logstore は、収集されたログを保存するために使用される Simple Log Service のストレージユニットです。
Simple Log Service コンソールにログインし、ターゲットプロジェクトの名前をクリックします。
左側のナビゲーションウィンドウで、
を選択し、[+] をクリックして Logstore を作成します:[Logstore 名]:プロジェクト内で一意の名前を入力します。この名前は作成後に変更できません。
[Logstore タイプ]:機能比較に基づいて、標準またはクエリを選択します。
課金モード:
[機能単位の支払い]:ストレージ、インデックス、読み書き操作など、各リソースに対して個別に課金されます。この課金モードは、小規模なシナリオや機能の使用量が不確定なシナリオに適しています。
[取り込みデータ量に応じた支払い]:書き込んだ生データの量に対してのみ課金されます。このモードでは、30 日間の無料ストレージと、データ変換や配信などの無料機能が提供されます。ストレージ期間が 30 日に近いビジネスユースケースや、データ処理パイプラインが複雑な場合に適しています。
[データ保持期間]:ログを保持する日数を指定します。値は 1 から 3,650 までです。3,650 の値は永久保持を示します。デフォルト値は 30 日です。
他の設定はデフォルト値のままにして、[OK] をクリックします。詳細については、「Logstore の管理」をご参照ください。
ステップ 3:ログ収集ルールの作成と設定
LoongCollector がどのログを収集し、ログ構造をどのように解析し、コンテンツをどのようにフィルタリングするかを定義します。その後、設定をマシングループに適用できます。
Logstores ページで、ターゲット Logstore 名の左にある
をクリックして展開します。[データ収集] の横にある
アイコンをクリックします。[クイックデータインポート] ダイアログボックスで、ログソースに基づいてテンプレートを選択し、[今すぐ統合] をクリックします:コンテナの標準出力の場合、[K8S - Stdout And Stderr - 新バージョン] を選択します。
コンテナ標準出力を収集するためのテンプレートには、新旧のバージョンがあります。新バージョンの使用を推奨します。新旧バージョンの違いの詳細については、「付録:新旧コンテナ標準出力バージョンの比較」をご参照ください。
クラスターのテキストログの場合、[Kubernetes - ファイル] を選択します。
[マシングループの設定] を行い、[次へ] をクリックします:
シナリオ: [Kubernetes クラスター] を選択します。
デプロイメント方法:[ACK DaemonSet] または [自己管理型クラスター DaemonSet] を選択します。
[ソースマシングループ] から、システムが作成したマシングループ
k8s-group-${cluster_id}を右側の [適用済みマシングループ] リストに追加します。
[Logtail 設定] ページで、以下のパラメーターを指定し、[次へ] をクリックします。
1. グローバル設定と入力設定
始める前に、データ取り込みテンプレートを選択し、マシングループに適用したことを確認してください。このステップでは、収集設定の名前、ログソース、および収集範囲を定義します。
コンテナ標準出力の収集
[グローバル設定]
[設定名]:収集設定の名前。名前はプロジェクト内で一意である必要があり、作成後に変更することはできません。名前は以下の要件を満たす必要があります:
小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。
小文字または数字で始まり、終わる必要があります。
入力設定
[標準出力] または [標準エラー] スイッチをオンにします (両方ともデフォルトで有効)。
重要標準出力と標準エラーを同時に有効にしないでください。収集されたログが混乱する可能性があります。
クラスターテキストログの収集
[グローバル設定]:
[設定名]:収集設定の名前。名前はプロジェクト内で一意である必要があり、作成後に変更することはできません。名前は以下の要件を満たす必要があります:
小文字、数字、ハイフン (-)、アンダースコア (_) のみを含めることができます。
小文字または数字で始まり、終わる必要があります。
[入力設定]:
ファイルパスタイプ:
[コンテナ内パス]:コンテナ内のログファイルを収集します。
[ホストパス]:ホスト上のローカルサービスのログを収集します。
[ファイルパス]:収集するログファイルの絶対パス。
Linux:パスはスラッシュ (/) で始まる必要があります。例えば、
/data/mylogs/**/*.logは/data/mylogsディレクトリとそのサブディレクトリ内のすべての .log 拡張子を持つファイルを示します。Windows:パスはドライブ文字で始まる必要があります。例えば、
C:\Program Files\Intel\**\*.Log。
[最大ディレクトリ監視深度]:[ファイルパス] 内のワイルドカード文字
**が一致できる最大のディレクトリ深度。デフォルト値は 0 で、現在のディレクトリのみを示します。値の範囲は 0 から 1,000 です。深度を 0 に設定し、ファイルが配置されているディレクトリへのパスを設定してください。
2. ログの処理と構造化
ログ処理ルールを設定して、生の非構造化ログを構造化された検索可能なデータに変換します。これにより、ログのクエリと分析の効率が向上します。ルールを設定する前に、ログサンプルを追加できます:
[Logtail 設定] ページの [プロセッサー設定] セクションで、[サンプルログの追加] をクリックし、収集したいログコンテンツを入力します。システムはサンプルに基づいてログ形式を識別し、正規表現と解析ルールの生成を支援し、設定を簡素化します。
シナリオ 1:複数行ログの処理 (Java スタックトレースなど)
Java の例外スタックや JSON オブジェクトなどのログは、しばしば複数行にわたります。デフォルトの収集モードでは、これらは複数の不完全なレコードに分割され、コンテキストが失われます。この問題を解決するには、複数行収集モードを有効にし、先頭行の正規表現を設定して、ログの連続する行を単一の完全なログエントリにマージします。
例:
未処理の生ログ | デフォルトの収集モードでは、各行が個別のログとなり、スタック情報が分断され、コンテキストが失われる | 複数行モードを有効にし、先頭行の正規表現を使用して完全なログを識別し、完全な意味構造を保持する |
|
|
|
手順:[Logtail 設定] ページの [プロセッサー設定] セクションで、[複数行モード] を有効にします:
[タイプ]:[カスタム] または [複数行 JSON] を選択します。
[カスタム]:生ログの形式が固定されていないため、各ログエントリの最初の行を識別するために [先頭行に一致する正規表現] を設定する必要があります。
[先頭行に一致する正規表現]:正規表現を自動生成または手動で入力します。正規表現はデータの行全体に一致する必要があります。例えば、上記の例のデータに一致する正規表現は
\[\d+-\d+-\w+:\d+:\d+,\d+]\s\[\w+]\s.*です。自動生成:[正規表現を自動生成] をクリックします。次に、[ログサンプル] テキストボックスで、抽出したいログコンテンツを選択し、[正規表現を生成] をクリックします。
手動入力:[正規表現を手動で入力] をクリックします。式を入力した後、[検証] をクリックします。
[複数行 JSON]:すべての生ログが標準の JSON 形式である場合にこのオプションを選択します。Simple Log Service は、単一の JSON ログ内の改行を自動的に処理します。
[分割失敗時の処理]:
[破棄]:テキストのセグメントが先頭行ルールに一致しない場合、破棄されます。
[単一行を保持]:一致しないテキストは、元の単一行パターンに基づいてチャンク化され、保持されます。
シナリオ 2:構造化ログ
NGINX アクセスログやアプリケーション出力ログなど、生のログが非構造化または半構造化テキストである場合、直接のクエリや分析はしばしば非効率です。Simple Log Service は、さまざまなデータ解析プラグインを提供しており、異なる形式の生のログを自動的に構造化データに変換できます。これにより、後続の分析、監視、およびアラートのための堅固なデータ基盤が提供されます。
例:
未処理の生ログ | 構造化解析後のログ |
| |
手順:[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 に送信されます。
[タグフィールドを破棄]:このオプションを有効にすると、アップロードされたログにはこのタグフィールドが含まれなくなります。
ステップ 4:クエリと分析の設定
ログ処理とプラグインを設定した後、[次へ] をクリックして [クエリと分析の設定] ページに移動します:
デフォルトでは、システムはフルテキストインデックスを有効にし、ログの生コンテンツ内のキーワードを検索できます。
フィールドごとに用語クエリを実行するには、プレビューデータが読み込まれた後、[インデックスの自動生成] をクリックします。Simple Log Service は、プレビューデータの最初のエントリに基づいてフィールドインデックスを生成します。
設定が完了したら、[次へ] をクリックして、収集フロー全体の設定を完了します。
ステップ 5:検証とトラブルシューティング
収集設定を作成し、マシングループに適用すると、システムは自動的に設定をデプロイし、増分ログの収集を開始します。
レポートされたログの表示
ログファイルに新しいコンテンツがあることを確認する:LoongCollector は増分ログのみを収集します。
tail -f /path/to/your/log/fileコマンドを実行し、サービス操作をトリガーして、新しいログが書き込まれていることを確認します。ログのクエリ:ターゲット Logstore のクエリと分析ページに移動し、[検索と分析] をクリックします。デフォルトの時間範囲は過去 15 分です。新しいログが流入しているか確認します。収集された各コンテナテキストログには、以下のデフォルトフィールド情報が含まれています:
フィールド名
説明
__tag__:__hostname__
コンテナのホスト名。
__tag__:__path__
コンテナ内のログファイルのパス。
__tag__:_container_ip_
コンテナの IP アドレス。
__tag__:_image_name_
コンテナが使用するイメージの名前。
__tag__:_pod_name_
Pod の名前。
__tag__:_namespace_
Pod が属する名前空間。
__tag__:_pod_uid_
Pod の一意の識別子 (UID)。
トラブルシューティング FAQ
マシングループのハートビート状態が FAIL
ユーザー識別子の確認:サーバータイプが ECS インスタンスでない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合は、指定されたディレクトリに正しいユーザー識別子が存在するかどうかを確認します。
Linux:
cd /etc/ilogtail/users/ && touch <uid>コマンドを実行して、ユーザー識別子ファイルを作成します。Windows:
C:\LogtailData\users\ディレクトリに移動し、<uid>という名前の空のファイルを作成します。
指定されたパスに現在のプロジェクトの Alibaba Cloud アカウント ID で名前が付けられたファイルが存在する場合、ユーザー識別子は正しく設定されています。
マシングループ識別子の確認:カスタム識別子ベースのマシングループを使用している場合は、指定されたディレクトリに
user_defined_idファイルが存在するかどうかを確認します。ファイルが存在する場合は、ファイルの内容がマシングループに設定されているカスタム識別子と一致するかどうかを確認します。Linux:
# カスタムユーザー ID を設定します。ディレクトリが存在しない場合は、手動で作成します。 echo "user-defined-1" > /etc/ilogtail/user_defined_idWindows:
C:\LogtailDataディレクトリに、user_defined_idという名前のファイルを作成し、カスタム識別子をファイルに書き込みます。ディレクトリが存在しない場合は、手動で作成する必要があります。
ユーザー識別子とマシングループ識別子の両方が正しく設定されている場合は、「LoongCollector (Logtail) のマシングループの問題のトラブルシューティング」でトラブルシューティングの詳細をご参照ください。
ログ収集エラーまたはフォーマットエラー
この問題は、ネットワーク接続と基本設定が正常であることを示します。この問題は通常、ログコンテンツと解析ルールの不一致によって引き起こされます。問題の原因を特定するには、特定のエラーメッセージを表示する必要があります:
[Logtail 設定] ページで、収集エラーのある LoongCollector (Logtail) 設定の名前をクリックします。[ログ収集エラー] タブで、[時間範囲を選択] をクリックしてクエリの時間範囲を設定します。
セクションで、エラーログのアラームメトリックを表示し、「一般的なデータ収集エラー」で対応するソリューションを見つけます。
次のステップ
データの可視化:可視化ダッシュボードを使用して、主要なメトリックの傾向を監視します。
データ異常の自動アラート:アラートポリシーを設定して、システムの異常をリアルタイムで検出します。
トラブルシューティング:コンテナログからデータが収集されない
新しいログの確認:LoongCollector (Logtail) を収集用に設定した後、ターゲットのログファイルに新しいログがない場合、LoongCollector (Logtail) はそのファイルからデータを収集しません。
よくある質問
複数宛先配信設定を管理するにはどうすればよいですか?
複数宛先配信設定は複数の Logstore に関連付けられているため、これらの設定はプロジェクトレベルの管理ページで維持する必要があります:
[Simple Log Service コンソール]にログインし、対象のプロジェクト名をクリックします。
ターゲットプロジェクトの左側のナビゲーションウィンドウで、
をクリックします。説明このページでは、誤って Logstore が削除された後に残ったものを含め、プロジェクト下のすべての収集設定を一元管理できます。
ACK クラスターのログを別の Alibaba Cloud アカウントのプロジェクトに送信するにはどうすればよいですか?
ACK クラスターに Simple Log Service の LoongCollector (Logtail) コンポーネントを手動でインストールし、宛先アカウントの Alibaba Cloud アカウント ID またはアクセス認証情報 (AccessKey) で設定できます。これにより、コンテナログを別の Alibaba Cloud アカウントに属する Simple Log Service プロジェクトに送信できます。
シナリオ:組織構造、権限の隔離、または統一された監視などの理由で、ACK クラスターからログデータを収集し、別の Alibaba Cloud アカウントに属する Simple Log Service プロジェクトに送信する必要がある場合があります。これは、クロスアカウント設定のために LoongCollector (Logtail) を手動でインストールすることで実現できます。
手順:このセクションでは、LoongCollector の手動インストールを例として使用します。Logtail のインストール方法の詳細については、「Logtail のインストールと設定」をご参照ください。
Kubernetes クラスターに接続し、クラスターのリージョンに応じたコマンドを実行します:
中国リージョン
wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh中国以外のリージョン
wget https://aliyun-observability-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz; tar xvf loongcollector-custom-k8s-package.tgz; chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.shloongcollector-custom-k8s-packageディレクトリに移動し、./loongcollector/values.yaml設定ファイルを変更します。# ===================== 必須情報 ===================== # このクラスターからログを収集するプロジェクトの名前 (例: k8s-log-custom-sd89ehdq) projectName: "" # プロジェクトのリージョン (例: 上海: cn-shanghai) region: "" # プロジェクトを所有する Alibaba Cloud アカウントの UID。引用符で囲んでください (例: "123456789") aliUid: "" # 使用するネットワーク。オプションのパラメーター: Internet, Intranet。デフォルトは Internet です。 net: Internet # Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret。アカウントには AliyunLogFullAccess システムポリシー権限が必要です。 accessKeyID: "" accessKeySecret: "" # カスタムクラスター ID。名前には大文字、小文字、数字、ハイフン (-) のみを含めることができます。 clusterID: ""loongcollector-custom-k8s-packageディレクトリで、次のコマンドを実行して LoongCollector とその依存コンポーネントをインストールします:bash k8s-custom-install.sh installインストールが完了したら、コンポーネントの実行状態を確認します。
Pod の起動に失敗した場合は、values.yaml の設定が正しいか、関連するイメージが正常にプルされたかを確認してください。
# Pod の状態を確認 kubectl get po -n kube-system | grep loongcollector-ds同時に、Simple Log Service は以下のリソースを自動的に作成します。Simple Log Service コンソールにログインして表示できます。
リソースタイプ
リソース名
機能
プロジェクト
values.yaml ファイルで定義された
projectNameの値異なるサービスのログを隔離するリソース管理ユニットです。
より柔軟なログリソース管理のためにプロジェクトを作成するには、「プロジェクトの作成」をご参照ください。
マシングループ
k8s-group-${cluster_id}ログ収集ノードのコレクションです。
Logstore
config-operation-log重要この Logstore は削除しないでください。
loongcollector-operator コンポーネントのログを保存します。その課金方法は通常の Logstore と同じです。詳細については、「取り込みデータ量に応じた支払い方法の課金項目」をご参照ください。この Logstore に収集設定を作成しないでください。
同じファイルまたはコンテナの標準出力を複数の収集設定で収集するにはどうすればよいですか?
デフォルトでは、データの重複を防ぐため、Simple Log Service は各ログソースが 1 つの収集設定でのみ収集されることを許可しています:
テキストログファイルは、1 つの Logtail 収集設定にのみ一致できます。
コンテナの標準出力 (stdout):
標準出力テンプレートの新バージョンを使用する場合、標準出力はデフォルトで 1 つの標準出力収集設定でのみ収集できます。
標準出力テンプレートの旧バージョンを使用する場合、追加の設定は不要です。デフォルトで複数の収集をサポートしています。
Simple Log Service コンソールにログインし、ターゲットプロジェクトに移動します。
左側のナビゲーションウィンドウで、
[Logstores] を選択し、ターゲットの Logstore を見つけます。その名前の前にある
アイコンをクリックして Logstore を展開します。[Logtail 設定] をクリックします。設定リストで、ターゲットの Logtail 設定を見つけ、[操作] 列の [Logtail 設定の管理] をクリックします。
Logtail 設定ページで、[編集] をクリックし、[入力設定] セクションまでスクロールします:
テキストファイルログを収集する場合:[ファイルの複数回収集を許可] を有効にします。
コンテナの標準出力を収集する場合、[標準出力の複数回収集を許可] を有効にします。
ACK で loongcollector(logtail-ds) コンポーネントをアンインストールする際に依存関係エラーが発生するのはなぜですか?
問題:ACK で loongcollector (logtail-ds) ログ収集コンポーネントを削除しようとすると、システムがエラーを報告します:`このコンポーネントの依存関係が満たされていません`。
Dependencies of addons are not met: terway-eniip depends on logtail-ds(>0.0) whose version is v3.x.x.x-aliyun or will be v3.x.x.x-aliyun.
原因:terway-eniip ネットワークプラグインでログ収集機能が有効になっており、これが loongcollector (logtail-ds) コンポーネントに依存しています。そのため、この依存関係を削除する前に ACK が loongcollector (logtail-ds) を直接アンインストールすることを許可しません。
ソリューション:以下の手順に従って依存関係を削除し、コンポーネントをアンインストールします:
ACK コンソールにログインします。
クラスターリストで、ターゲットクラスターの名前をクリックします。
左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。
コンポーネントリストで、
terway-eniipコンポーネントを検索して見つけ、 をクリックします。表示されるダイアログボックスで、[確認] をクリックします。
設定が有効になった後、loongcollector (logtail-ds) コンポーネントを再度アンインストールしてみてください。
最後のログエントリが長い遅延の後に報告されるのはなぜですか?なぜ時々切り捨てられるのですか?
原因:ログファイルが末尾に改行がない場合、または例外スタックのような複数行のログが完全に書き込まれていない場合、ログは通常切り捨てられます。コレクターはログが終了したかどうかを判断できないため、コンテンツの最後の部分が時期尚早に分割されたり、遅延して報告されたりする可能性があります。処理メカニズムは LoongCollector (Logtail) のバージョンによって異なります:
1.8 より前のバージョン:
ログの最後の行に改行がない場合、または複数行のログ段落が終了していない場合、コレクターは次の書き込みが出力をトリガーするのを待ちます。これにより、最後のログエントリが新しいログが書き込まれるまで長時間送信されずに保持される可能性があります。バージョン 1.8 以降:
ログがスタックするのを防ぐために、タイムアウトリフレッシュメカニズムが導入されました。不完全なログ行が検出されると、システムはタイマーを開始します。タイムアウト期間が終了すると、現在のコンテンツが自動的に送信され、ログが最終的に収集されることが保証されます。デフォルトのタイムアウト:60 秒。これにより、ほとんどのシナリオで完全性が保証されます。
この値は必要に応じて調整できますが、0 に設定しないでください。これにより、ログが切り捨てられたり、部分的に失われたりする可能性があります。
ソリューション:
待機時間を延長して、収集される前に完全なログが書き込まれるようにすることができます:
Simple Log Service コンソールにログインし、ターゲットプロジェクトに移動します。
左側のナビゲーションウィンドウで、
[Logstores] を選択し、ターゲットの Logstore を見つけます。その名前の前にある
アイコンをクリックして Logstore を展開します。[Logtail 設定] をクリックします。設定リストで、ターゲットの Logtail 設定を見つけ、[操作] 列の [Logtail 設定の管理] をクリックします。
Logtail 設定ページで、[編集] をクリックします:
を選択します。タイムアウト期間をカスタマイズするために、以下の JSON 設定を追加します。
{ "FlushTimeoutSecs": 1 }デフォルト値:起動パラメーター
default_reader_flush_timeoutによって決定され、通常は数秒です。単位:秒。
推奨値:≥1 秒。0 に設定しないでください。これにより、ログが切り捨てられたり、部分的に失われたりする可能性があります。
設定後、[保存] をクリックします。
LoongCollector (Logtail) が運用中に内部エンドポイントからパブリックエンドポイントに切り替わるのはなぜですか?自動的に元に戻りますか?
LoongCollector (Logtail) がネットワーク障害や接続タイムアウトなど、内部エンドポイント通信の異常を検出した場合、システムは自動的にパブリックエンドポイントに切り替えてデータ転送を行います。これにより、ログ収集の継続性と信頼性が確保され、ログの蓄積や損失が防止されます。
LoongCollector:ネットワークが復旧した後、自動的に内部ネットワークに戻ります。
Logtail:自動的には戻りません。内部ネットワーク通信を再開するには、手動で再起動する必要があります。
付録:ネイティブプラグインの詳細な説明
[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 展開フィールドプレフィックス]: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 設定ファイル (通常は /etc/apache2/apache2.conf にあります) で定義されている LogFormat と完全に同じであることを確認してください。
その他のパラメーターの詳細については、「シナリオ 2:構造化ログ」の共通設定パラメーターの説明をご参照ください。
データマスキング
ログ内の機密データをマスキングできます。
例:
未処理の生ログ | マスキング結果 |
| |
手順:[Logtail 設定] ページの [プロセッサー設定] セクションで、[プロセッサーを追加] をクリックし、 を選択します:
時刻解析
ログ内の時刻フィールドを解析し、解析結果をログの __time__ フィールドとして設定できます。
例:
未処理の生ログ | 時刻解析 |
|
|
手順:[Logtail 設定] ページの [プロセッサー設定] セクションで、[プロセッサーを追加] をクリックし、 を選択します:
[元のフィールド]:解析前の元のログコンテンツを保存するフィールド。
[時刻形式]:ログ内の時刻コンテンツに基づいて時刻形式を設定します。
[タイムゾーン]:ログ内の時刻フィールドのタイムゾーンを選択します。デフォルトはマシンのタイムゾーンで、これは LoongCollector (Logtail) プロセスが実行されている環境のタイムゾーンです。
付録:正規表現の制限 (コンテナフィルタリング)
コンテナフィルタリングの正規表現は、Go RE2 エンジンに基づいています。RE2 エンジンは、Perl 互換正規表現 (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 は互換性のために自動的に適応されているため、ユーザーは新旧両方のバージョンのログを同時に処理するためにクエリ文を変更する必要はありません。






