Logtailは、Simple log Serviceによって提供されるログ収集エージェントです。 Logtailを使用すると、Alibaba Cloud ECS (Elastic Compute Service) インスタンス、データセンター内のサーバー、サードパーティのクラウドサービスプロバイダーのサーバーなど、複数のデータソースからログを収集できます。 このトピックでは、Logtailのログ収集プロセス、機能、利点、制限、および設定プロセスについて説明します。
収集プロセス
ログの監視
サーバーにLogtailをインストールし、Simple Log ServiceコンソールでLogtail設定を作成すると、設定はリアルタイムでサーバーに同期されます。 Logtailは、構成に基づいてサーバーのログファイル内のログを監視します。 Logtailは、構成で監視するために指定したログファイルパスと最大ディレクトリ深さに基づいて、ログディレクトリとファイルをスキャンします。
マシングループにLogtail設定が適用された後、マシングループ内のサーバーのログファイルが更新されない場合、ログファイルは履歴ログファイルと見なされます。 Logtailは履歴ログファイルからログを収集しません。 ログファイルが更新されると、Logtailはファイルからログを読み取って収集し、ログをSimple log Serviceに送信します。 履歴ログファイルからログを収集する方法の詳細については、「ログファイルから履歴ログをインポートする」をご参照ください。
Logtailは、ログが収集されるディレクトリを監視するためにイベントリスナーを登録します。 イベントリスナーは、ディレクトリ内のログファイルを定期的にポーリングします。 これにより、ログが最も早い機会に安定して収集されます。 Linuxサーバーの場合、Inotifyはディレクトリの監視とログファイルのポーリングに使用されます。
ログの読み取り
Logtailが更新されたログファイルを検出すると、Logtailはログファイルのデータを読み取ります。
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は正規表現に基づいてログを複数の行に分割します。 正規表現を指定しない場合、1つのログ行がログとして処理されます。
ログの解析
Logtailは、Logtail設定で指定した収集モードに基づいて各ログを解析します。
説明複雑な正規表現を指定すると、Logtailは過剰な量のCPUリソースを消費する可能性があります。 Logtailが効率的にログを解析できるようにする正規表現を指定することを推奨します。
Logtailがログの解析に失敗した場合、LogtailはLogtail設定のDrop Failed to parse Logsパラメーターの設定に基づいて失敗を処理します。
Drop Failed to Parse Logsをオンにすると、Logtailはログをドロップし、エラーを報告します。
[Drop Failed to Parse Logs] をオフにすると、Logtailはログをアップロードします。 ログのキーはraw_logに設定され、値はログの内容に設定されます。
ログの時間フィールドを設定する
ログの時間フィールドを設定しない場合、ログ時間はログが解析される時間です。
ログの時間フィールドを設定する場合、ログの処理方法は次のシナリオで異なります。
ログが生成された時刻と現在の時刻の差が12時間以内の場合、解析されたログフィールドからログ時間が抽出されます。
ログが生成された時刻と現在の時刻の差が12時間を超える場合、ログはドロップされ、エラーが報告されます。
フィルターログ
ログが処理された後、Logtailは指定されたフィルター条件に基づいてログをフィルターします。
[フィルター設定] フィールドでフィルター条件を指定しない場合、ログはフィルターされません。
[フィルター設定] フィールドでフィルター条件を指定すると、各ログのフィールドがトラバースされます。
Logtailは、フィルター条件を満たすログのみを収集します。
集計ログ
ネットワークリクエストの数を減らすために、Logtailは処理されたログとフィルタリングされたログを指定された期間キャッシュします。 次に、Logtailはログを集約し、ログをSimple Log Serviceに送信します。 データがキャッシュされたときに次のいずれかの条件が満たされると、Logtailは集計されたログをSimple Log Serviceに送信します。
集計期間が3秒を超えています。
集計されたログの数が4,000を超えています。
集計されたログの合計サイズが512 KBを超えています。
ログの送信
Logtailは集計されたログをLog Serviceに送信します。 ログの送信に失敗した場合、LogtailはHTTPステータスコードに基づいてログを再試行するか、送信しなくなります。
HTTPステータスコード | 説明 | Logtailの処理方法 |
401 | 現在のアカウントには、データを収集する権限がありません。 データにアクセスする権限をアカウントに付与する必要があります。 詳細については、「権限アシスタント機能の設定」をご参照ください。 | Logtailはログパケットをドロップします。 |
404 | Logtail設定で指定されたプロジェクトまたはLogstoreは存在しません。 | Logtailはログパケットをドロップします。 |
403 | シャードクォータが使い果たされました。 | Logtailは3秒後に再試行します。 |
500 | サーバー例外が発生します。 | Logtailは3秒後に再試行します。 |
データ転送速度と最大同時接続数を変更する場合は、Logtailスタートアップ設定ファイルのmax_bytes_per_secパラメーターとsend_request_concurrencyパラメーターを変更できます。 詳細については、「Logtailの起動パラメーターの設定」をご参照ください。
メリット
Logtailは、ログファイルに基づく非侵入型のログ収集をサポートしています。 アプリケーションコードを変更する必要はなく、ログ収集はアプリケーションの動作に影響を与えません。
Logtailは、テキストログ、バイナリログ、HTTPログ、およびコンテナログを収集できます。
Logtailは、DockerクラスターやKubernetesクラスターなど、さまざまなコンテナークラスターからログを収集できます。
Container Service For Kubernetes (ACK) クラスターからログを収集する方法の詳細については、「Kubernetesコンテナーログの収集」をご参照ください。
自己管理型Kubernetesクラスターからログを収集する方法の詳細については、「Kubernetesコンテナーログの収集」をご参照ください。
ユーザーが作成したDockerクラスターからログを収集する方法の詳細については、「Dockerコンテナーからログを収集する」をご参照ください。
Logtailは、ログ収集プロセスで発生する例外を処理できます。 ネットワークやサーバーの例外などの問題が発生した場合、Logtailはログ収集を再試行し、データをローカルにキャッシュしてデータのセキュリティを確保します。
Logtailは、Simple Log Serviceに基づく集中管理を提供します。 ログを収集するサーバーにLogtailをインストールし、マシングループとLogtail設定を作成した後、Logtailはサーバーからログを収集します。
Logtailは包括的な自己防衛メカニズムを提供します。 LogtailがLogtailと同じサーバー上で実行される他のサービスのパフォーマンスに大きな影響を与えないようにするため、Simple Log ServiceはLogtailが使用できるCPU、メモリ、およびネットワークリソースを制限し、自己保護メカニズムを提供します。
設定プロセス
Simple Log ServiceプロジェクトとECSインスタンスが同じAlibaba Cloudアカウントに属し、同じリージョンにある場合、ECSインスタンスにLogtailをインストールできます。 詳細については、「ECSインスタンスへのLogtailのインストール」をご参照ください。 他のサーバーにLogtailをインストールする方法の詳細については、「LinuxサーバーにLogtailをインストールする」および「WindowsサーバーにLogtailをインストールする」をご参照ください。
別のAlibaba Cloudアカウントに属するECSインスタンス、データセンターのサーバー、またはサードパーティのクラウドサービスプロバイダーのサーバーからログを収集する場合は、サーバーのユーザー識別子を設定する必要があります。
Simple Log ServiceプロジェクトのIPアドレスベースのマシングループまたはカスタム識別子ベースのマシングループを作成できます。
Logtail設定を作成します。
上記の操作は、Simple Log Serviceコンソールで実行できます。 詳細については、「テキストログの収集」および「コンテナログの収集」をご参照ください。
上記の操作を実行すると、Logtailはサーバーからログを収集し、指定されたLogstoreに送信します。 Simple Log Serviceのコンソール、API、SDK、またはCLIを使用してログを照会できます。
用語
マシングループ: マシングループには、特定のタイプのログが収集される1つ以上のサーバーが含まれます。 マシングループにLogtail設定を適用すると、Simple Log ServiceはLogtail設定に基づいてマシングループ内のすべてのサーバーからログを収集します。
Simple Log Serviceは、マシングループを使用して、Logtailを使用してログを収集するすべてのサーバーを管理します。 IPアドレスまたはカスタム識別子に基づいてマシングループを定義できます。 Simple Log Serviceコンソールでマシングループを管理できます。 たとえば、マシングループを作成または削除したり、マシングループにサーバーを追加したり、マシングループからサーバーを削除したりできます。 詳細については、「概要」をご参照ください。
Logtailは、Simple log Serviceによって提供されるログ収集エージェントです。 Logtailは、ログを収集するサーバーで実行されます。
Linux: Linuxでは、Logtailは /usr/local/ilogtailディレクトリにインストールされ、名前がilogtailで始まる2つの独立したプロセスを開始します。 1つは収集プロセスであり、もう1つはデーモンです。 プログラムの操作ログは、/usr/local/ilogtail/ilogtail.LOGファイルに保存されます。 詳細については、「LinuxサーバーへのLogtailのインストール」をご参照ください。
Windows:
Logtail (32ビット)
32ビットWindowsでは、LogtailはC:\Program Files\Alibaba\Logtailディレクトリにインストールされます。
64ビットWindowsでは、LogtailはC:\Program Files (x86)\Alibaba\Logtailディレクトリにインストールされます。
説明64ビットWindowsオペレーティングシステムで32ビットおよび64ビットアプリケーションを実行できます。 オペレーティングシステムは、互換性を確保するために、32ビットアプリケーションを別のx86ディレクトリに保存します。
Logtail (64ビット)
Logtail (64ビット) は64ビットWindowsでのみインストールできます。 インストールディレクトリはC:\Program Files\Alibaba\Logtailです。
Logtailのステータスを確認するには、
を選択します。 Logtail V1.0.0.0以降をインストールする場合は、LogtailDaemonサービスを表示します。 Logtail V0.x.x.xをインストールする場合は、LogtailWorkerサービスを表示します。 プログラムの操作ログは、インストールディレクトリのilogtail.LOG
ファイルに格納されます。 詳細については、「WindowsサーバーへのLogtailのインストール」をご参照ください。
ログ収集のLogtail設定: ログ収集のLogtail設定は、Logtailがログを収集するために使用する一連のポリシーです。 データソースと収集モードを指定して、ログ収集用のカスタムLogtail設定を作成できます。 Logtail設定は、サーバーから特定の種類のログを収集し、収集したログを解析し、Simple Log Serviceの指定されたLogstoreにログを送信するために使用されます。
基本機能
機能 | 説明 |
リアルタイムログ収集 | Logtailはログファイルを動的に監視し、増分ログをリアルタイムで読み取り、解析します。 ほとんどの場合、ログは生成後3秒以内にSimple Log Serviceに送信されます。 詳細については、「Logtailのログ収集プロセス」をご参照ください。 説明 Logtailは履歴ログを収集しません。 ログが生成されてから12時間後に読み取られたログは破棄されます。 履歴ログファイルからログを収集する方法の詳細については、「ログファイルから履歴ログをインポートする」をご参照ください。 |
自動ログ回転 | 複数のアプリケーションは、ファイルサイズまたは日付に基づいてログファイルを回転します。 ローテーションプロセスでは、元のログファイルの名前が変更され、新しい空のログファイルが作成されます。 たとえば、ログローテーション後にapp.LOGファイルに対してapp.LOG.1やapp.LOG.2などのファイルが生成されます。 収集したログを書き込むファイルを指定できます。 例: app.LOG Logtailはログローテーションプロセスを自動的に監視し、このプロセス中にログが失われないようにします。 |
複数のデータソースのサポート | Logtailは、テキストログ、syslog、HTTPログ、MySQLバイナリログを収集できます。 詳細については、「データ収集の概要」をご参照ください。 |
オープンソースの収集エージェントとの互换性 | Logtailは、LogstashやBeats to Simple Log Serviceなどのオープンソースソフトウェアを使用して収集されたデータを収集できます。 詳細については、「データ収集の概要」をご参照ください。 |
コレクション例外の自動処理 | Simple Log Serviceエラー、ネットワークエラー、クォータの枯渇などの例外によりデータ送信が失敗した場合、Logtailは特定のシナリオに基づいてログ収集をアクティブに再試行します。 再試行が失敗した場合、Logtailはデータをローカルキャッシュに書き込み、3秒後にデータを再度送信します。 詳細については、「」をご参照ください。Logtailの自動診断ツールを使用するにはどうすればよいですか? |
柔軟な収集設定 | Logtail設定に基づいて、柔軟な方法でログを収集できます。 ログを収集するディレクトリとファイルを指定できます。 完全一致とワイルドカード一致がサポートされています。 ログ収集モードと抽出するフィールドを指定できます。 正規表現を使用してログを抽出できます。 Simple log Serviceのログデータモデルでは、各ログに正確なタイムスタンプが必要です。 Logtailは、さまざまな形式のログデータから必要なタイムスタンプ情報を抽出できるカスタムログ時間形式をサポートしています。 |
Logtail設定の自動同期 | Simple Log ServiceコンソールでLogtail設定を作成または更新した後、ほとんどの場合、Logtailは3分以内に設定を自動的に受信して適用します。 Logtailの更新プロセス中にログが失われることはありません。 |
ステータスモニタリング | Logtailは、CPUとメモリの消費量をリアルタイムで監視します。 これにより、Logtailが過剰なリソースを消費するのを防ぎます。 リソースの過剰消費は、Logtailと同じサーバー上で実行される他のサービスに影響を与える可能性があります。 Logtailのリソース使用量が制限を超えると、Logtailは自動的に再起動します。 ネットワーク帯域幅使用量が制限を超えると、Logtailはスロットリングをトリガーします。 詳細については、「スタートアップ設定ファイル (ilogtail_config.json) 」をご参照ください。 |
署名されたデータの送信 | データ送信中にデータが改ざんされるのを防ぐため、Logtailは信頼できるチャネルを介してSimple Log Serviceからプライベートトークンを取得し、送信されたすべてのログデータパケットに署名します。 説明 LogtailはHTTPS経由でプライベートトークンを取得し、トークンのセキュリティを確保します。 |
データ収集の信頼性
データ収集中、Logtailは収集したチェックポイント情報を定期的にローカルサーバーに保存します。 サーバーの予期しないシャットダウンなどの例外が発生した場合、またはプロセスが予期せず終了した場合、Logtailは再起動後に最後に記録されたチェックポイントからデータを収集します。 これにより、データの損失を防ぎます。 Logtailは、起動設定ファイルで指定された起動パラメーターに基づいて実行されます。 Logtailのリソース使用量が5分を超えた場合、Logtailは強制的に再起動されます。 再起動後に重複データが収集される場合があります。
Logtailは内部メカニズムを使用してログ収集の信頼性を向上させます。 ただし、次の状況でログが失われる可能性があります。ただし、次のシナリオでログの収集に失敗する可能性があります。
Logtailは実行されていませんが、ログファイルは複数回ローテーションされています。
ログファイルの回転速度は、1秒あたり1回転など、非常に高いです。
ログ収集率は、長期間のログ生成率よりも低い。