Logtail は、Simple Log Service が提供するログ収集エージェントです。Logtail は、Alibaba Cloud ECS インスタンス、セルフマネージドデータセンター内のサーバー、または他のクラウドプロバイダーのサーバーなどからログを収集します。このトピックでは、Logtail の収集プロセス、特徴、メリット、使用制限、および構成プロセスについて説明します。
仕組み
ログファイルの監視
サーバーに Logtail をインストールし、Simple Log Service コンソールで Logtail 構成を作成すると、Simple Log Service はリアルタイムで Logtail に構成を送信します。その後、Logtail はこの構成に基づいてファイルの監視を開始します。Logtail 構成で指定されたログパスと最大ディレクトリ監視深度に従って、ログディレクトリとファイルを階層的にスキャンします。
マシングループに Logtail 構成を適用した後、変更されていないログファイルは履歴ファイルと見なされます。Logtail は履歴ファイルからデータを自動的に収集しません。収集プロセスはファイルが変更された場合にのみ開始されます。履歴ログファイルからデータを収集するには、詳細については、「履歴ログのインポート」をご参照ください。
タイムリーで安定したログ収集を確実にするために、Logtail は監視対象のディレクトリにイベントリスナーを登録し (Linux では Inotify を使用)、定期的にポーリングします。
ログファイルの読み取り
Logtail は、更新されたログファイルを検出した後、それらを読み取ります。
-
Logtail がログファイルを初めて読み取る場合、デフォルトで最大 1,024 KB のデータを読み取ります。
-
ファイルが 1,024 KB より小さい場合、Logtail はファイルの先頭からデータを読み取ります。
-
ファイルが 1,024 KB より大きい場合、Logtail はファイルの最後の 1,024 KB のデータを読み取ります。
-
-
Logtail が以前にログファイルを読み取ったことがある場合、最後に保存されたチェックポイントから読み取りを再開します。
-
Logtail は一度に最大 512 KB を読み取ります。したがって、各ログエントリが 512 KB 未満であることを確認してください。そうでない場合、ログエントリを正しく読み取ることができません。
サーバーのシステム時刻を変更する場合は、Logtail を手動で再起動する必要があります。そうしないと、ログのタイムスタンプが不正確になったり、予期せぬログ損失が発生したりする可能性があります。
プロセスログ
ログを読み取った後、Logtail はそれらを行に分割し、コンテンツを解析し、時刻フィールドを設定します。
-
ログを行に分割する
Logtail 構成で行頭の正規表現が指定されている場合、Logtail はそれを使用して生データを複数のログエントリに分割します。正規表現が指定されていない場合、Logtail は各行を単一のログエントリとして扱います。
-
ログの解析
Logtail は、Logtail 構成で定義された収集モードに基づいて各ログエントリを解析します。
説明複雑な正規表現は CPU 使用率を高くする可能性があります。効率的な正規表現を使用してください。
ログの解析に失敗した場合、その処理は、Logtail 構成で[解析に失敗したログを破棄]機能が有効になっているかどうかによって異なります。
-
[解析に失敗したログを破棄] を有効にすると、ログは直接破棄され、解析失敗のエラーメッセージが報告されます。
-
[解析に失敗したログを破棄] を無効にすると、解析に失敗した元のログがアップロードされ、キーは raw_log、値はログコンテンツになります。
-
-
ログの時刻フィールドを設定する
-
時刻フィールドが構成されていない場合、Logtail はログを解析した時刻をログ時刻として設定します。
-
時刻フィールドが構成されている場合:
-
ログに記録されたタイムスタンプが現在時刻から 12 時間以内である場合、Logtail は解析されたログフィールドから時刻を抽出します。
-
タイムスタンプが現在時刻から 12 時間以上異なる場合、Logtail はログを破棄し、エラーを報告します。
-
-
ログのフィルタリング
処理後、Logtail は Logtail 構成のフィルター設定に基づいてログをフィルタリングします。
-
Logtail 構成で [フィルター構成] が設定されていない場合、ログはフィルタリングされず、プロセスは次のステップに進みます。
-
Logtail 構成に [フィルター構成] がある場合、Logtail は各ログ内のすべてのフィールドを走査し、検証します。
Logtail は、フィルター条件に一致するログのみを収集します。
ログの集約
ネットワークリクエストを減らすために、Logtail は処理およびフィルタリング後にログを短期間キャッシュします。その後、それらをバッチに集約してから Simple Log Service に送信します。Logtail は、次のいずれかの条件が満たされたときにログのバッチを送信します。
-
集約時間が 3 秒を超過した場合。
-
集約されたログの数が 4,000 を超過した場合。
-
集約されたログの合計サイズが 512 KB を超過した場合。
ログの送信
Logtail は集約されたログを Simple Log Service に送信します。送信に失敗した場合、Logtail は受信したエラーに基づいて自動的に再試行するか、データを破棄します。
|
エラーメッセージ |
説明 |
Logtail の応答 |
|
401 エラー |
現在のアカウントには、データを収集するために必要な権限がありません。必要なデータアクセス権限をアカウントに付与してください。詳細については、「Permission Assistant の構成」をご参照ください。 |
Logtail はログバッチを破棄します。 |
|
404 エラー |
Logtail 構成で指定されたプロジェクトまたはログストアが存在しません。 |
Logtail はログバッチを破棄します。 |
|
403 エラー |
シャードクォータを超過しました。 |
Logtail は 3 秒後に再試行します。 |
|
500 エラー |
サーバー側例外が発生しました。 |
Logtail は 3 秒後に再試行します。 |
データ送信レートと最大同時実行数を調整するには、起動パラメーター構成ファイルで max_bytes_per_sec および send_request_concurrency パラメーターを設定できます。詳細については、「Logtail 起動パラメーターの設定」をご参照ください。
メリット
-
ログファイルから非侵入型でログを収集します。このプロセスでは、アプリケーションコードを変更する必要がなく、アプリケーションのランタイムに影響を与えません。
-
テキストログ、バイナリログ、HTTP データ、コンテナログなど、さまざまなデータの型の収集をサポートします。
-
Docker や Kubernetes クラスターなどのコンテナ環境からデータを収集します。
-
Alibaba Cloud Container Service for Kubernetes (ACK): 詳細については、「Kubernetes からのログ収集」をご参照ください。
-
セルフマネージド Kubernetes: 詳細については、「Kubernetes からのログ収集」をご参照ください。
-
セルフマネージド Docker クラスター: 詳細については、「Docker コンテナ (stdout およびファイル) からのログ収集」をご参照ください。
-
-
収集例外を適切に管理します。ネットワークの問題やサーバー側エラーが発生した場合、Logtail は自動再試行とローカルキャッシュを使用してデータセキュリティを確保します。
-
Logtail をインストールした後、マシングループや Logtail 構成など、すべての設定を Simple Log Service コンソールから一元的に管理できます。
-
Logtail は、サーバー上の他のサービスのパフォーマンスに影響を与えないように、厳格な CPU、メモリ、およびネットワーク使用制限の下で動作します。
構成プロセス
-
Simple Log Service の プロジェクト では、IP アドレス または カスタム識別子 を使用したマシングループの作成をサポートしています。
-
Logtail 構成の作成。
Simple Log Service コンソールの構成ウィザードを使用してセットアップを完了できます。詳細については、「テキストログの収集」および「コンテナログの収集」をご参照ください。
これらのステップを完了すると、Logtail はサーバーからのログ収集を開始し、指定されたログストアに送信します。その後、Simple Log Service コンソール、API、SDK、または CLI を使用してログをクエリできます。
基本概念
-
[マシングループ]: マシングループには、同じ種類のログを収集したい 1 つ以上のサーバーが含まれます。Logtail 構成をマシングループに適用すると、Simple Log Service はその構成を使用してグループ内のすべてのサーバーからログを収集します。
Simple Log Service は、Logtail を使用してログ収集を行うすべてのサーバーを管理するためにマシングループを使用します。IP アドレスまたはカスタム識別子を使用してマシングループを定義できます。Simple Log Service コンソールでマシングループを管理でき、これにはグループの作成と削除、またはサーバーの追加と削除などの操作が含まれます。詳細については、「マシングループ」をご参照ください。
-
Logtail: ログを収集するサーバー上で実行される、Simple Log Service が提供するログ収集エージェントです。
-
Linux オペレーティングシステムでは、Logtail は /usr/local/ilogtail ディレクトリにインストールされ、ilogtail で始まる 2 つの独立したプロセス (収集プロセスとデーモン) を起動します。ランタイムログは /usr/local/ilogtail/ilogtail.LOG ファイルに保存されます。詳細については、「Logtail のインストール (Linux)」をご参照ください。
-
Windows
-
Logtail (32 ビット)
-
32 ビット Windows オペレーティングシステムにインストールされている場合、インストールディレクトリは C:\Program Files\Alibaba\Logtail です。
-
64 ビット Windows オペレーティングシステムにインストールされている場合、インストールディレクトリは C:\Program Files (x86)\Alibaba\Logtail です。
説明64 ビット Windows OS は、32 ビットおよび 64 ビットの両方のアプリケーションを実行できます。互換性のために、Windows は 64 ビット OS 上で 32 ビットアプリケーションを保存するために別の x86 ディレクトリを使用します。
-
-
Logtail (64 ビット)
Logtail は 64 ビット Windows オペレーティングシステムでのみサポートされています。インストールディレクトリは C:\Program Files\Alibaba\Logtail です。
で LogtailDaemon サービス (Logtail 1.0.0.0 以降の場合) または LogtailWorker サービス (Logtail 0.x.x.x バージョンの場合) を表示して、Logtail の実行ステータスを確認できます。プログラム実行ログは、インストールディレクトリ内の
ilogtail.LOGファイルに保存されます。詳細については、「Windows への Logtail のインストール」をご参照ください。 -
-
-
[Logtail 構成]: Logtail がログを収集するために使用するポリシーのセットです。データソースや収集モードなどのパラメーターを設定することで、カスタム収集ポリシーを作成できます。Logtail 構成は、サーバーから指定された Simple Log Service のログストアに同じ種類のログを収集、解析、および送信する方法を定義します。
特徴
|
特徴 |
説明 |
|
リアルタイムログ収集 |
Logtail はログファイルを動的に監視し、増分ログをリアルタイムで読み取り、解析します。ログ生成から Simple Log Service への送信までのレイテンシーは、通常 3 秒以内です。詳細については、「仕組み」をご参照ください。 説明
Logtail は、読み取り時刻と記録されたタイムスタンプの差が 12 時間を超過した場合、ログを破棄します。履歴ログファイルを収集するには、詳細については、「履歴ログのインポート」をご参照ください。 |
|
自動ログローテーション処理 |
多くのアプリケーションは、元のログファイルの名前を変更し、書き込み用に新しい空のファイルを作成することで、ファイルサイズまたは日付に基づいてログファイルをローテーションします。たとえば、app.LOG ファイルはローテーションされて app.LOG.1、app.LOG.2 などが生成されます。app.LOG のように、ログが書き込まれるファイルを指定できます。Logtail はログローテーションプロセスを自動的に検出し、このプロセス中にログデータが失われないようにします。 |
|
複数の入力ソース |
テキストファイルに加えて、Logtail は syslog、HTTP、MySQL バイナリログなどの他のデータソースもサポートしています。詳細については、「データ収集の概要」をご参照ください。 |
|
オープンソースエージェントとの互換性 |
Logtail は、Logstash や Beats などのオープンソースソフトウェアによって収集されたデータの送信先として使用できます。詳細については、「データ収集の概要」をご参照ください。 |
|
自動例外処理 |
サーバー側エラー、ネットワークの問題、またはクォータ超過によりデータの送信に失敗した場合、Logtail は特定のエラーに基づいて自動的に再試行します。再試行が引き続き失敗する場合、Logtail はデータをローカルキャッシュに書き込み、3 秒後に送信を再試行します。詳細については、「Logtail 自己診断」をご参照ください。 |
|
柔軟な収集ポリシー |
Logtail 構成を使用することで、非常に柔軟な収集ポリシーを構成できます。ログディレクトリとファイルを厳密な一致またはワイルドカードマッチングで指定できます。また、フィールド名を含め、ログの抽出方法をカスタマイズし、解析に正規表現を使用することもできます。 Simple Log Service のデータモデルでは、各ログに正確なタイムスタンプが必要であるため、Logtail では、さまざまなログデータフォーマットからタイムスタンプを抽出するためのカスタム時刻フォーマットを定義できます。 |
|
自動構成同期 |
Simple Log Service コンソールで Logtail 構成を作成または更新すると、Logtail は通常 3 分以内に変更を受信して適用します。更新プロセス中にデータが失われることはありません。 |
|
自己監視 |
Logtail は、他のサービスへの影響を避けるために、自身の CPU およびメモリ消費をリアルタイムで監視します。リソース使用量が事前定義された制限を超過した場合、Logtail はサーバーを保護するために自動的に再起動します。また、過剰な帯域幅消費を防ぐためのネットワーク速度制限メカニズムも含まれています。詳細については、「起動構成ファイル (ilogtail_config.json)」をご参照ください。 |
|
署名付きデータ送信 |
送信中のデータ改ざんを防ぐために、Logtail は信頼されたチャネルを介してサーバー側から非公開トークンを取得し、すべてのデータパケットに署名してから送信します。 説明
Logtail は HTTPS を使用して非公開トークンを取得し、そのセキュリティを確保します。 |
データ収集の信頼性
ログ収集中、Logtail は収集進捗 (チェックポイントとして知られる) を定期的にローカルファイルに保存します。予期せぬシャットダウンやプロセス障害が発生した場合、Logtail は再起動し、最後に保存されたチェックポイントから収集を再開してデータ損失を最小限に抑えます。Logtail は起動構成ファイルに基づいて動作します。リソース使用量が指定された制限を 5 分以上超過した場合、Logtail は強制的に再起動します。これにより、一部の重複データが収集される可能性があります。
Logtail には信頼性メカニズムが含まれていますが、特定の状況ではデータ損失が発生する可能性があります。
-
Logtail が実行されていない間に複数のログローテーションが発生した場合。
-
ログローテーション速度が非常に速い場合 (例: 1 秒に 1 回)。
-
ログ生成レートがログ収集レートを常に超過している場合。