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

Simple Log Service:Logtailの制限

最終更新日:Aug 21, 2024

このトピックでは、サポートされる環境、ログファイル、コンテナー、チェックポイント、Logtail構成、マシングループ、パフォーマンスメトリクス、トラブルシューティングなど、Logtailの制限について説明します。

サポートされている環境

項目

説明

アーキテクチャ

  • Linux Logtailはx86_64とARM64をサポートします。

  • Windows Logtailはx86_32とx86_64をサポートします。

メモリ

ワークロードが実行されておらず、プラグインが有効になっていない場合は、最低20 MBのメモリが必要です。 ワークロードが実行されておらず、少なくとも1つのプラグインが有効になっている場合は、最低120 MBのメモリが必要です。

メモリの実際の使用量は、収集率、監視されるディレクトリ、ログファイルの数、および同期して送信されるリクエストの数によって異なります。

オペレーティングシステム

  • Linuxカーネル2.6.32以降

  • GNU Cライブラリのバージョン2.5以降

  • Windows Server 2004以降

Kubernetes

  • DaemonSetモードでログを収集する場合は、Kubernetes 1.10.0以降が必要です。 HostToContainerマウントの伝播をサポートする必要があります。

  • カスタムリソース定義 (CRD) を使用してログを収集する場合、Kubernetes 1.16.0以降が必要であり、alibaba-log-controllerコンポーネントをインストールする必要があります。

    Kubernetes 1.7.0以降が提供するapiextensions.k8s.io/v1beta1 APIは、CRDもサポートしています。 ただし、ベータ版のAPIの安定性は、指定されたKubernetesバージョンによって異なります。

Docker

コンテナからのstdoutとstderrの収集には、次の制限があります。

  • Docker設定ファイルdaemon.json"log-driver": "json-file" を追加する必要があります。

  • CentOS 8.0を除くCentos 7.4以降では、fs.may_detach_mountsを1に設定する必要があります。 詳細については、「バグ1468249」、「バグ1441737」、および「課題34538」をご参照ください。

Container Service for Kubernetes (ACK) のlogtail-dsコンポーネント

  • logtail-ds: 各ノードで少なくとも0.1コアと256 MBのメモリを予約する必要があります。

  • alibaba-log-controller: 各ノードで少なくとも0.05コアと100 MBのメモリを予約する必要があります。

重要

上記のコンポーネントは、system-cluster-criticalクラスに属しています。 クラスターリソースが不足している場合は、コンポーネントをデプロイしないことを推奨します。 そうしないと、ノード上の既存のポッドが追い出される可能性があります。

ログファイルの制限

項目

説明

単一ログのサイズ

デフォルトでは、ログの最大サイズは512 KBです。 起動パラメーターmax_read_buffer_sizeの値を変更して、サイズを変更できます。 ログの最大サイズは8 MBを超えることはできません。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

複数行のログが、ログの最初の行の先頭を一致させるために使用される正規表現に基づいて分割される場合、分割後の各ログの最大サイズは512 KBのままです。 ログのサイズが512 KBを超えると、ログは強制的に複数のログに分割されて収集されます。 たとえば、ログのサイズが1,025 KBの場合、ログは512 KB、512 KB、および1 KBのサイズのログに分割されます。 次に、ログが順番に収集され、不完全なログと見なされます。

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

Logtailは、UTF-8およびGBKでエンコードされたログファイルをサポートします。 UTF-8-encodedログファイルを使用して処理パフォーマンスを向上させることを推奨します。

警告

ログファイルが他の形式でエンコードされている場合、文字化けやデータ損失などの問題が発生する可能性があります。

ログファイルのサイズ

無制限。

ログファイルのローテーション

デフォルトでは、ローテーションキュー内のログファイルの最大数は20です。 起動パラメーターlogreader_max_rotate_queue_sizeの値を変更して、番号を変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

ログパスは、xxx.logまたはxxx.log * 形式で指定できます。

重要

Logtailインスタンスに2つの形式が同時に存在しないことを確認してください。 2つの形式が同時に存在する場合、ログファイル内のログは複数のLogtail設定を使用して収集され、重複データが収集される可能性があります。

20を超えるログファイルが処理されない場合、新しいログは失われます。 この場合、シャードの書き込みクォータが制限を超えているかどうかを確認し、同時実行関連のパラメーターを調整する必要があります。 詳細については、「推奨パラメーター値」をご参照ください。

ログ解析がブロックされたときに実行されるログ収集動作

ログ解析がブロックされると、Logtailはログファイルの記述子を開いたままにして、ブロック期間中にログファイルが削除されてログが失われないようにします。

ブロック期間中にログファイルが複数回ローテーションされた場合、Logtailはログファイルをローテーションキューに入れます。

正規表現

Logtailは、Perlと互換性のある正規表現を使用します。

JSON

RFC 7159およびECMA-404で定義された標準JSON形式がサポートされています。 {"name": "\xE5\xAD\xA6"} などの非標準JSON形式はサポートされていません。

1つのログファイルに対する複数のLogtail設定

デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 複数のLogtail設定を使用してログファイルからログを収集する方法の詳細については、ファイル内のログの複数のコピーを収集するにはどうすればよいですか?

重要

複数のLogtail設定を使用してログファイルからログを収集すると、読み取りI/O、コンピューティングリソース、およびネットワークI/Oがそれに応じて増加します。

ファイルオープン動作

Logtailは、ログを収集するログファイルとローテーションキュー内のログファイルを開いたままにして、収集されたデータの整合性を確保します。 次のシナリオでは、ログファイルが閉じられます。

  • ログファイルは5分以内に変更されません。

  • ログファイルがローテーションされ、ログファイル内のすべてのログが収集されます。

  • Logtail設定が更新されました。

ログファイルからのログ収集が完了しているか、新しいログがまだログファイルに書き込まれているかに関係なく、ログファイルが削除されてから指定された期間内にファイルハンドルを解放する場合は、force_release_deleted_file_fd_timeoutパラメーターを設定してタイムアウト期間を指定できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

最初のログ収集動作

Logtailは、増分ログファイルからのみデータを収集します。 ログファイルの変更が最初に検出されたときにログファイルのサイズが1 MBの制限を超えた場合、Logtailは最後の1 MBからデータを収集します。 ログファイルのサイズが1 MBを超えない場合、Logtailはログファイルの先頭からデータを収集します。 コンテナのstdoutとstderrの制限は512 KBです。

Logtail設定でtail_size_kbパラメーターの値を変更して、制限を変更できます。 詳細は、「Logtail設定」をご参照ください。

Logtail設定の配信後にログファイルが変更されない場合、Logtailはログファイルからデータを収集しません。 履歴ログファイルからログを収集する方法の詳細については、「ログファイルから履歴ログをインポートする」をご参照ください。

ファイルの上書き動作

Logtailは、ログファイルの最初の1,024バイトのiノードとハッシュ値を使用してログファイルを識別します。 ログファイルが上書きされ、ログファイルの最初の1,024バイトのiノードまたはハッシュ値が変更された場合、ログファイルはログが収集されていないログファイルと見なされ、ログはログファイルの先頭から収集されます。 inodeまたはハッシュ値が変更されない場合、ログファイル内のログは収集されません。

ファイル転送の動作

ログファイルが転送され、ログファイルが転送される前に、一致するLogtail設定を使用してログファイルからログを収集しない場合、ログファイルはログが収集されないログファイルと見なされ、ログはログファイルの最初から収集されます。 このシナリオでは、一致したLogtail設定を使用してログファイルからログを収集すると、ログファイル内のログは収集されません。

ファイル収集履歴

Logtailは、ログファイルの変更後に増分データのみが収集されるように、メモリ内の履歴ログファイルの履歴収集の進行状況を保持します。 履歴ログファイルの履歴収集の進行状況が指定された期間より長く保持され、新しいデータがログファイルに書き込まれた場合、重複データが収集されます。

  • デフォルトでは、履歴ログファイルの履歴収集の進行状況は最大1か月間保持されます。

  • 同じディレクトリ内の履歴ログファイルの数が5,000を超えた場合、前週のログファイルの履歴収集の進行状況は保持されます。

  • 同じディレクトリ内の履歴ログファイルの数が10,000を超えた場合は, 前日のログファイルの履歴収集の進捗状況が保持されます。

非標準テキストログ

ログに \0が含まれている場合、ログは最初の \0で切り捨てられ、残りのログは破棄されます。 色や印刷不可能な文字を表すために使用されるASCIIコードなどの他のエスケープ文字の場合、Logtailは文字を直接送信します。

コンテナの制限

説明

Logtailを使用してコンテナログを収集する場合、ログファイルの制限とコンテナの制限の両方が適用されます。

項目

説明

最初のログ収集動作

コンテナーのstdoutとstderrを収集し、ログファイルの変更が最初に検出されたときにログファイルのサイズが512 KBの制限を超えた場合、Logtailは最後の512 KBからデータを収集します。 ログファイルのサイズが512 KBを超えない場合、Logtailはログファイルの先頭からデータを収集します。 Logtail設定でStartLogMaxOffsetパラメーターの値を変更して、制限を変更できます。 詳細については、「Simple Log Serviceコンソールを使用したDaemonSetモードでのコンテナーstdoutとstderrの収集」をご参照ください。

シンボリックリンク

コンテナファイルからログを収集する場合、ファイルおよびファイルのディレクトリはシンボリックリンクにできません。

コンテナのライフサイクル

デフォルトでは、コンテナのライフサイクルが10秒以上続く場合にのみ、Logtailはコンテナからログを収集できます。 コンテナファイルからログを収集する場合、Logtailは、収集パフォーマンスを確保するために、コンテナファイル内のログ更新の数を3分間で10回に制限します。 スタートアップパラメーターdocker_config_update_intervalおよびmax_docker_config_update_timesの値を変更して設定を変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

stdoutとstderrのファイル回転

コンテナーstdoutおよびstderrファイルは、Dockerまたはkubeletによってローテーションされます。 デフォルトでは、kubeletでローテーションされるstdoutファイルとstderrファイルのサイズは10 MB、Dockerでローテーションされるstdoutファイルとstderrファイルのサイズは100 MBです。 コンテナのstdoutファイルとstderrファイルの出力レートが10メガバイト/秒を超える場合、stdoutファイルとstderrファイルは高速で回転されます。 この場合、コンテナーファイルからログを収集するか、containerLogMaxSizeパラメーターの値を変更してログの損失を防ぐことを推奨します。

stdoutおよびstderr用のログドライバ

Dockerをコンテナランタイムとして使用する場合は、Docker設定ファイルdaemon.json"log-driver": "json-file" を追加する必要があります。

チェックポイントの制限

項目

説明

チェックポイントタイムアウト期間

デフォルトのシナリオでは、ログファイルが30日以内に変更されない場合、ログファイルのチェックポイントは自動的に削除されます。 preserve:falseがLogtail設定で設定され、ログファイルが30分以内に変更されない場合、ログファイルのチェックポイントは削除されます。

チェックポイントストレージポリシー

チェックポイントは、15分間隔で、Logtailが終了した時点で自動的に保存されます。 起動パラメーターcheck_point_dump_intervalの値を変更して、チェックポイントストレージポリシーを変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

チェックポイントのストレージパス

デフォルトでは、チェックポイントは /tmp/logtail_checkpointディレクトリに格納されます。 起動パラメーターcheck_point_filenameの値を変更して、チェックポイントのストレージパスを変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

ダウンタイム中の取り扱い

チェックポイントは定期的に保存されます。 ダウンタイムが発生すると、最後に完全に保存されたチェックポイントからデータ収集が再開されます。 これは、重複データ収集を引き起こし得る。 チェックポイントストレージポリシーを変更して、重複データ収集を防ぐことができます。

Logtail設定の制限

項目

説明

設定の更新が有効になるまでの待ち時間

Simple Log Serviceコンソールを使用するか、API操作を呼び出すことによって実行されるLogtail設定の更新には、有効になるまでに約30秒かかります。

Logtail設定の動的読み込み

Logtail設定は動的にロードできます。 Logtail設定の更新は、他のLogtail設定には影響しません。

単一のLogtailインスタンスに対して動的にロードできるLogtail設定の数

無制限 ただし、サーバーに対して100以下のLogtail設定をロードすることをお勧めします。

サードパーティのフラッシャを使用したログ生成

Simple Log Serviceコンソールで、またはAPIを呼び出してLogtail設定が作成された場合、Logtail設定はLogstoreに関連付けられます。 そのため、プラグイン設定でサードパーティのフラッシャを設定すると、Logtailは自動的にデータのコピーをLogstoreに送信します。

マルチアカウントとクロスアカウント

マルチアカウントとクロスアカウントのログ収集がサポートされています。 詳細については、「複数のAlibaba Cloudアカウント」および「Logtailを使用したAlibaba Cloudアカウント間のコンテナーログの収集」をご参照ください。

マルチリージョン

デフォルトでは、マルチリージョンのログ収集はサポートされていません。 複数のリージョンからログを収集する必要がある場合は、 ticket

グローバルアクセラレーション

グローバルアクセラレーションがサポートされています。 Simple Log Service側でグローバルアクセラレーションを有効にした後、Logtail側でグローバルアクセラレーションを設定する必要があります。 詳細については、「ログ収集の高速化」をご参照ください。

マシングループの制限

項目

説明

マシンの数

無制限 ただし、100,000台以下のマシンを設定することをお勧めします。 さもなければ、ハートビートは得られない。

適用できるLogtail設定の数

無制限 ただし、1,000以下のLogtail設定を適用することを推奨します。

パフォーマンス指標の制限

項目

説明

ログ処理のスループットThroughput for log processing

生ログのデフォルトの送信速度は20メガバイト/秒に制限されています。 ログデータは、エンコードおよび圧縮後にアップロードされます。 圧縮比は5:1から10:1の範囲である。 伝送速度がデフォルト値よりも速い場合、ログが失われる可能性があります。 起動パラメーターmax_bytes_per_secの値を変更して、伝送速度を変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

ログの最大処理速度

シングルコア対応の処理速度:

  • シンプルモードでは、最大処理速度は100メガバイト/秒です。

  • 完全正規表現モードでは、最大処理速度は20メガバイト/秒です。 デフォルト値です。 実際の処理速度は、正規表現の複雑さによって異なります。

  • デリミタモードでは、最大処理速度は40メガバイト/秒です。

  • JSONモードでは、最大処理速度は30メガバイト/秒です。

複数のスレッドを設定するには、起動パラメーターprocess_thread_countを設定します。 これは300% に150% ことによって性能を改善するのを助ける。

監視対象のディレクトリおよびファイルの最大数

監視されるディレクトリおよびファイルの最大数は、mem_usage_limitパラメーターに関連しています。 mem_usage_limitパラメーターのデフォルト値は、ホスト環境では384 MB、コンテナ環境では2,048 MBです。 次のカテゴリが使用されます。

  • 監視対象ディレクトリの最大数=( mem_usage_limitの値 /100) × 5,000 ディレクトリには、Logtail設定で指定されたディレクトリのブラックリストは含まれません。

  • 監視対象ディレクトリおよびファイルの最大数=( mem_usage_limitの値 /100) × 50,000 ディレクトリには、Logtail設定で指定されたディレクトリのブラックリストは含まれません。 ファイルには、Logtail設定と一致しないファイルが含まれます。

  • 単一のLogtail設定で監視されるディレクトリおよびファイルの数=( mem_usage_limitの値 /100) × 5,000 ディレクトリには、Logtail設定で指定されたディレクトリのブラックリストは含まれません。 ファイルには、Logtail設定と一致しないファイルが含まれます。

  • 1つのディレクトリ内の監視サブディレクトリおよびファイル数=( mem_usage_limit /100の値) × 5,000 サブディレクトリには、Logtail設定で指定されたディレクトリのブラックリストが含まれます。 ファイルには、Logtail設定と一致しないファイルが含まれます。

前のカテゴリのいずれかの数が上限に達すると、Logtailはそのカテゴリに対応する残りのディレクトリとファイルを監視しなくなります。 Logtail設定で監視されるディレクトリの範囲を絞り込むか、起動パラメーターmem_usage_limitの値を変更して監視されるディレクトリの数を増やすことができます。 mem_usage_limitパラメーターの詳細については、「Logtailの起動パラメーターの設定」をご参照ください。

LinuxサーバーにインストールされたLogtailを使用すると、inotifyメカニズムを使用してディレクトリを監視できます。 これにより、ログ収集の待ち時間を短縮できます。 inotifyメカニズムを使用して監視できるディレクトリ (サブディレクトリを含む) の最大数は3,000です。

過剰なリソース消費を処理するために使用されるポリシー

Logtailによって占有されるリソースの量が5分間上限を超えたままである場合、Logtailは強制的に再起動されます。 再起動により、データの損失や重複が発生する可能性があります。

マルチテナント分離

Logtail設定は分離されています。 Logtail設定でエラーが発生した場合、他のLogtail設定は影響を受けません。

ログ収集の待ち時間

通常、Logtailは、ログがディスクに書き込まれてから1秒以内にログを収集できます。

ログアップロードポリシー

Logtailがログをアップロードする前に、Logtailはログを同じファイルに集約します。 ログ数が4,000を超える、ログの合計サイズが512 KBを超える、またはログ収集時間が3秒を超えると、Logtailはログのアップロードを開始します。

トラブルシューティングの制限

項目

説明

ネットワークエラー処理

ネットワークエラーが発生した場合、Logtailはデータ収集タスクを自動的に再試行し、再試行間隔を調整します。 極端な場合、次の問題により、ログが繰り返し収集または破棄されることがあります。

  • Logtailによって送信されたパケットがSimple Log Serviceによって受信され、Simple Log Serviceからのパケット応答が15秒以内にLogtailによって受信されません。 この場合、Logtailはリクエストを再度送信し、重複データが収集されます。

  • ネットワークリンクエラーは、Logtailによって受信されたパケットに損傷を与え、エラーは5回連続して発生します。 この場合、Logtailは関連データを破棄します。

しきい値交差イベントの処理

データ転送速度がLogstoreの上限を超えると、Logtailはログ収集をブロックし、データ収集タスクを自動的に再試行します。 Logstoreのシャードの数を増やすことを推奨します。

Logtailのタイムエラー

リクエスト時間とレスポンス時間の時間差が15分を超えるために再試行が5回失敗した場合、Logtailは関連データを破棄します。 最大5回の再試行が可能です。 Logtailが存在するマシンの時刻を修正することを推奨します。

指定されたプロジェクトまたはLogstoreが存在しない

再試行が5回失敗した場合、Logtailは関連データを破棄します。 最大5回の再試行が可能です。 API操作を呼び出してLogstoreを削除した場合、エラーが発生する可能性があります。 Logtail設定を削除し、API操作を呼び出してマシングループからLogtail設定の関連付けを解除することを推奨します。

認証失敗

再試行が5回失敗した場合、Logtailは関連データを破棄します。 最大5回の再試行が可能です。 障害は、次のシナリオで発生する可能性があります。

  • Logtailの起動時に障害が発生した場合, 不安定なネットワークで認証情報を取得できないことが原因です。

  • エラーが繰り返し発生した場合、マシンがHTTPS経由でSimple Log Serviceエンドポイントに接続できない場合、認証情報を取得できないことが原因です。

その他の不明なエラー

再試行が5回失敗した場合、Logtailは関連データを破棄します。 最大5回の再試行が可能です。

タイムアウト前の最大再試行期間

データの送信に失敗し、問題が6時間以上続く場合、Logtailはデータを破棄します。

ステータス自己チェック

例外が発生すると、Logtailが再起動します。 たとえば、アプリケーションが予期せず終了した場合、またはリソース使用量が指定された上限を超えた場合、Logtailが再起動します。