Kubernetes 環境で散在するコンテナーログを管理することは困難であり、多くの場合、非効率的なトラブルシューティングや高い O&M コストにつながります。この問題に対処するために、DaemonSet モードで LoongCollector エージェントをデプロイし、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 のインストール: DaemonSet モードで LoongCollector をデプロイします。これにより、クラスター内の各ノードで収集コンテナーが実行され、そのノード上のすべてのコンテナーからログが収集されるようになります。
Sidecar パターンについては、「Kubernetes Pod からテキストログを収集する (Sidecar パターン)」をご参照ください。
Logstore の作成: Logstore は収集されたログを保存するために使用されます。
グローバル設定と入力設定: 収集設定の名前を定義し、ログ収集のソースと範囲を指定します。
ログの処理と構造化: ログ形式に基づいて処理ルールを設定します。
複数行ログ: Java の例外スタックや Python のトレースバックなど、複数行にまたがる単一のログに適しています。先頭行の正規表現を使用して、各ログエントリの開始を識別できます。
構造化解析: 正規表現、デリミタ、または NGINX モードなどの解析プラグインを設定して、生の文字列を構造化されたキーと値のペアに抽出し、クエリと分析を容易にします。
ログフィルタリング: 収集ブラックリストとコンテンツフィルタリングルールを設定して、有効なログコンテンツをスクリーニングします。これにより、冗長なデータ転送とストレージを削減できます。
ログの分類: ログのトピックとタグを設定することで、さまざまなサービス、コンテナー、またはパスソースからのログを柔軟に区別します。
クエリと分析の設定: デフォルトでフルテキストインデックスが有効になっており、キーワード検索をサポートします。また、フィールドインデックスを有効にして、構造化フィールドの正確なクエリと分析を行い、検索効率を向上させることもできます。
検証とトラブルシューティング: 設定が完了したら、ログが正常に収集されていることを確認します。データ収集の失敗、ハートビートの失敗、解析エラーなどの問題が発生した場合は、「トラブルシューティング FAQ」をご参照ください。
ステップ 1: LoongCollector のインストール
LoongCollector は Simple Log Service (SLS) の次世代ログ収集エージェントであり、Logtail のアップグレード版です。LoongCollector と Logtail は共存できません。Logtail をインストールするには、「Logtail のインストール、実行、アップグレード、アンインストール」をご参照ください。
このトピックでは、LoongCollector の基本的なインストールフローのみを説明します。パラメーターの詳細については、「インストールと設定」をご参照ください。すでに LoongCollector または Logtail をインストールしている場合は、このステップをスキップして「ステップ 2: Logstore の作成」に進むことができます。
LoongCollector (Logtail) の実行中にホストの時刻が変更されると、ログの重複収集やデータ損失が発生する可能性があります。
ACK クラスター
Container Service for Kubernetes コンソールから 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-dsSimple 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-標準出力-新規] を選択します。
コンテナーの標準出力を収集するためのテンプレートには、新旧のバージョンがあります。新しいバージョンを使用することをお勧めします。新旧バージョンの違いの詳細については、「付録: コンテナー標準出力の新旧バージョンの比較」をご参照ください。
クラスターのテキストログについては、[Kubernetes-ファイル] を選択します。
[マシングループ] を設定し、[次へ] をクリックします。
シナリオ: [K8s シナリオ] を選択します。
デプロイメント方法: [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: 収集中に、`private` で始まり `.log` で終わる/home/admin/ディレクトリ内のすべてのファイルが無視されます。/home/admin/private*/*_inner.log: 収集中に、/home/admin/ディレクトリ下の `private` で始まるディレクトリ内にある `_inner.log` で終わるファイルが無視されます。
ファイルブラックリスト: データ収集中に無視するファイルの名前。例:
app_inner.log: 収集中に、app_inner.logという名前のすべてのファイルが無視されます。
ディレクトリブラックリスト: ディレクトリパスはスラッシュ (/) で終わることはできません。例:
/home/admin/dir1/: ディレクトリブラックリストは有効になりません。/home/admin/dir*: `dir` で始まる/home/admin/のサブディレクトリ内のすべてのファイルが無視されます。/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。これは、固定されたビジネス ID を持つ静的なトピックシナリオに適用されます。ファイルパスの抽出: ログファイルのフルパスからキー情報を抽出し、ログソースを動的にマークできます。これは、複数のユーザーやアプリケーションが同じログファイル名を共有しているが、パスが異なる場合に適しています。
複数のユーザーまたはサービスが、異なるトップレベルディレクトリにログを書き込むが、サブディレクトリのパスとファイル名が同じ場合、ファイル名だけではソースを区別できません。例:
/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 ラベルの名前。
タグ名: タグの名前。
ステップ 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)。
一般的なトラブルシューティングの問題
マシングループのハートビート接続が「失敗」
ユーザー識別子の確認: サーバータイプが ECS でない場合、または ECS インスタンスとプロジェクトが異なる Alibaba Cloud アカウントに属している場合、次の表に示すように、指定されたディレクトリに正しいユーザー識別子が存在するかどうかを確認します。
Linux:
cd /etc/ilogtail/users/ && touch <uid>コマンドを実行して、ユーザー識別子ファイルを作成します。Windows:
C:\LogtailData\users\ディレクトリに移動し、<uid>という名前の空のファイルを作成します。
現在のプロジェクトの Alibaba Cloud アカウント ID で名前が付けられたファイルが指定されたパスに存在する場合、ユーザー識別子は正しく設定されています。
マシングループ識別子の確認: カスタム ID を持つマシングループを使用している場合、指定されたディレクトリに
user_defined_idファイルが存在するかどうかを確認します。ファイルが存在する場合、ファイルの内容がマシングループに設定されているカスタム ID と一致するかどうかを確認します。Linux:
# カスタムユーザー ID を設定します。ディレクトリが存在しない場合は、手動で作成します。 echo "user-defined-1" > /etc/ilogtail/user_defined_idWindows:
C:\LogtailDataディレクトリに、user_defined_idという名前のファイルを作成し、カスタムユーザー ID をファイルに書き込みます。ディレクトリが存在しない場合は、手動で作成する必要があります。
ユーザー ID とマシングループ ID の両方が正しく設定されている場合は、「LoongCollector (Logtail) マシングループのトラブルシューティングガイド」をご参照ください。
ログ収集エラーまたはフォーマットエラー
トラブルシューティング: この問題は、ネットワーク接続と基本設定が正常であることを示します。この問題は通常、ログコンテンツと解析ルールの不一致によって引き起こされます。問題の原因を特定するには、特定のエラーメッセージを表示する必要があります:
[Logtail 構成] ページで、収集エラーのある LoongCollector (Logtail) 構成の名前をクリックします。[ログ収集エラー] タブで、[時間範囲] をクリックしてクエリの時間範囲を設定します。
セクションで、エラーログのアラームメトリックを表示し、「一般的なデータ収集エラー」で対応する解決策を見つけます。
次のステップ
データの可視化: 可視化ダッシュボードを使用して、主要なメトリックの傾向を監視します。
データ異常の自動アラート: アラートポリシーを設定して、システムの異常をリアルタイムで検出します。
トラブルシューティング: コンテナーログからデータが収集されない
新しいログの確認: LoongCollector (Logtail) を収集用に設定した後、ターゲットログファイルに新しいログがない場合、LoongCollector (Logtail) はそのファイルからデータを収集しません。
よくある質問
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-dsSimple 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 構成ページで、[編集] をクリックし、[入力設定] セクションまでスクロールダウンします:
テキストファイルログを収集する場合: [ファイルを複数回収集することを許可] を有効にします。
コンテナーの標準出力を収集する場合: [異なる Logtail 構成による収集を許可] を有効にします。
ACK で loongcollector(logtail-ds) コンポーネントをアンインストールする際に依存関係エラーが発生するのはなぜですか?
問題: Container Service for Kubernetes (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) を直接アンインストールすることを許可しません。
解決策: 以下の手順に従って依存関係を削除し、その後コンポーネントをアンインストールします:
クラスターリストで、ターゲットクラスターの名前をクリックします。
左側のナビゲーションウィンドウで、[コンポーネント管理] をクリックします。
コンポーネントリストで、
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 展開フィールドプレフィックス: 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 設定フィールド: システムは [ログ形式] に基づいて設定を自動的に入力します。
重要自動入力された内容が、サーバー上の Apache 設定ファイル (通常は `/etc/apache2/apache2.conf` にあります) で定義されている LogFormat と完全に同じであることを確認してください。
その他のパラメーターの詳細については、「シナリオ 2: 構造化ログの処理」の共通設定パラメーターの説明をご参照ください。
データマスキング
ログ内の機密データをマスキングします。
例:
未処理の生ログ | マスキング結果 |
| |
手順: [Logtail 構成] ページの [プロセッサ設定] セクションで、[プロセッサを追加] をクリックし、 を選択します:
時間解析
ログ内の時間フィールドを解析し、解析結果をログの __time__ フィールドとして設定します。
例:
未処理の生ログ | 時間解析 |
|
|
手順: [Logtail 構成] ページの [プロセッサ設定] セクションで、[プロセッサを追加] をクリックし、 を選択します:
生フィールド: 解析前の元のログコンテンツを保存するフィールド。
時間形式: ログ内の時間コンテンツに基づいて時間形式を設定します。
タイムゾーン: ログ内の時間フィールドのタイムゾーンを選択します。デフォルトはマシンタイムゾーンで、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 は互換性のために自動的に適応されているため、ユーザーは新旧バージョンのログを同時に処理するためにクエリ文を変更する必要はありません。






