フル正規表現モードを使用して、ログからカスタムフィールドを抽出できます。 Logtail設定を作成してログを収集できます。 このトピックでは、Log Serviceコンソールを使用してフル正規表現モードでLogtail設定を作成する方法について説明します。
始める前に
- プロジェクトと Logstore が作成されていること。 詳細については、「プロジェクトの作成」および「Logstore の作成」をご参照ください。
- Logtailがインストールされているサーバーは、リモートサーバーのポート80とポート443に接続できます。
- ログを収集するサーバーは、継続的にログを生成します。 重要 Logtailは増分ログのみを収集します。 適用されたLogtail設定がサーバーに配信された後にサーバー上のログファイルが更新されない場合、Logtailはファイルからログを収集しません。 詳細については、「ログファイルの読み取り」をご参照ください。
このタスクについて
完全正規表現モードでは、Logtailは、指定した正規表現に基づいて、ログの内容を複数のキーと値のペアに抽出します。 詳細については、「例: 単一行ログの収集」および「例: 複数行のログの収集」をご参照ください。
完全正規表現モードでは、次のタイプのテキストログを収集できます。
単一行テキストログ
各ログは1行を含む。 Logsにログファイルラインフィードによって分離されている。 このモードでは、サンプルログを指定し、サンプルログに基づいて正規表現を指定する必要があります。 Logtailエキスキー値のペア一致する定期的な表現。
複数行のテキストログ
Eachログ含まれ複数行。 このモードでは、サンプルログを指定し、サンプルログに基づいて正規表現を指定し、ログの最初の行の先頭と一致する正規表現を指定する必要があります。 Logtailエキスキー値のペアと一致して最初の最初の行のログベースに指定された正規表現。 If aラインは指定された正規表現、ラインの最初の行として記録されて新ログ。 Otherwise、ラインの一部として記録されている最後のログ。
手順
Log Serviceコンソールにログインします。
[データのインポート] セクションで、[RegEx - Text Log] を選択します。
プロジェクトとLogstoreを選択します。 [次へ] をクリックします。
マシングループを作成します。
- マシングループが利用可能な場合は、[既存のマシングループを使用] をクリックします。
- 使用可能なマシングループがない場合は、次の手順を実行してマシングループを作成します。 この例では、Elastic Compute Service (ECS) インスタンスが使用されています。
- [ECSインスタンス] タブで、[手動でインスタンスを選択] を選択します。 次に、使用するECSインスタンスを選択し、[作成] をクリックします。 重要 別のAlibaba Cloudアカウントに属するECSインスタンス、オンプレミスデータセンターのサーバー、またはサードパーティのクラウドサービスプロバイダーのサーバーからログを収集する場合は、Logtailを手動でインストールする必要があります。 詳細については、「LinuxサーバーにLogtailをインストールする」または「WindowsサーバーにLogtailをインストールする」をご参照ください。
Logtailを手動でインストールした後、サーバーのユーザー識別子を設定する必要があります。 詳細については、「ユーザー識別子の設定」をご参照ください。
- Logtailをインストールしたら、[インストールの完了] をクリックします。
- [マシングループの作成] ステップで、[名前] パラメーターを設定し、[次へ] をクリックします。
Log Serviceでは、IPアドレスベースのマシングループとカスタム識別子ベースのマシングループを作成できます。 詳細については、「IPアドレスベースのマシングループを作成する」および「カスタム識別子ベースのマシングループを作成する」をご参照ください。
- [ECSインスタンス] タブで、[手動でインスタンスを選択] を選択します。 次に、使用するECSインスタンスを選択し、[作成] をクリックします。
- [ソースサーバーグループ] から新しいマシングループを選択し、マシングループを [応用サーバーグループ] に移動します。 [次へ] をクリックします。 重要 マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがLog Serviceに接続されていない場合に発生します。 この問題を解決するには、[自動再試行] をクリックします。 問題が解決しない場合は、「Logtailでハートビート接続が検出されない場合の対処方法」をご参照ください。
Logtail設定を作成し、[次へ] をクリックします。
項目
説明
設定名
The名Logtailの構成。 名前はプロジェクト内で一意である必要があります。 Afterを作成するLogtail構成、ことができない名前を変更Logtailの構成。
[その他の構成のインポート] をクリックすると、既存のLogtail構成をインポートできます。
ログのパス
Theディレクトリと名前のログファイル。 サーバー上のログの場所に基づいて、このパラメーターを設定します。
- Linuxオペレーティングシステムでログパスを指定する場合、パスはスラッシュ (/) で始まる必要があります。 例: /apsara/nuwa/.../app.Log
- Windowsオペレーティングシステムでログパスを指定する場合、パスはドライブ文字で始まる必要があります。 例: C:\Program Files\Intel\...\*.Log
正確なディレクトリと正確な名前を指定できます。 ワイルドカード文字を使用して、ディレクトリと名前を指定することもできます。 詳細については、「ワイルドカードの一致」をご参照ください。 Log Serviceは、指定されたディレクトリのすべてのレベルで、指定された条件に一致するログファイルをスキャンします。 例:
- /apsara/nuwa/**/*.logを指定した場合、Log Serviceは名前にが付いているログファイルからログを収集します。/apsara/nuwaディレクトリとディレクトリの再帰サブディレクトリにログインします。
- /var/logs/app_*/*.logを指定した場合、Log Serviceは次の条件を満たすログファイルからログを収集します。ファイル名の接尾辞はです。ログを ファイルは、/var/logsディレクトリ下のサブディレクトリ、またはサブディレクトリの再帰サブディレクトリに格納されます。 サブディレクトリの名前は、app_* パターンと一致します。
- /var/log/nginx/**/access * を指定した場合、Log Serviceは、名前が /var/log/nginxディレクトリのaccessで始まるログファイルと、ディレクトリの再帰的なサブディレクトリからログを収集します。
説明 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。- アスタリスク (*) を使用して、複数の文字を一致させることができます。
- 疑問符 (?) を使用して、1つの文字を一致させることができます。
ブラックリスト
IfオンBlacklist、必要設定ブラックリスト排除する特定のディレクトリやファイルログからコレクション。 You指定することができ正確なディレクトリとファイル名。 You使用することができワイルドカード文字ディレクトリとファイル名を指定する。 例:
- [フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、コンテンツに /home/admin/dir1と入力すると、/home/admin/dir1ディレクトリ内のすべてのファイルがスキップされます。
- [フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、[コンテンツ] に /home/admin/dir * と入力すると、/home/admin/ ディレクトリの名前の先頭にdirが付いているすべてのサブディレクトリのファイルがスキップされます。
- [フィルタータイプ] 列のドロップダウンリストから [ディレクトリでフィルターする] を選択し、コンテンツに /home/admin/*/dirと入力した場合、/home/admin/ ディレクトリの各サブディレクトリにあるすべてのファイルがスキップされます。
たとえば、/home/admin/a/dirディレクトリのファイルはスキップされますが、/home/admin/a/b/dirディレクトリのファイルはスキップされません。
- [フィルターの種類] 列のドロップダウンリストから [ファイルでフィルター] を選択し、コンテンツに /home/admin/private *.logと入力した場合、名前の接頭辞がprivate、接尾辞が /home/admin/ ディレクトリへのログインはスキップされます。
- [フィルタータイプ] 列のドロップダウンリストから [ファイルでフィルター] を選択し、[コンテンツ] に /home/admin/private */*_inner.logと入力した場合、/home/admin/ ディレクトリのプレフィックスがprivateであるサブディレクトリ内の_inner.logという名前のファイルはすべてスキップされます。
たとえば、/home/admin/private/app_inner.logファイルはスキップされますが、/home/admin/private/app.logファイルはスキップされません。
説明- このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
- アスタリスク (*) を使用して、複数の文字を一致させることができます。
- 疑問符 (?) を使用して、1つの文字を一致させることができます。
- ワイルドカード文字を使用してログパスを設定し、指定したディレクトリ内の一部のディレクトリをスキップする場合は、ブラックリストを設定して完全なディレクトリを入力する必要があります。
たとえば、ログパスを /home/admin/app * /Log /*.logに設定し、/home/admin/app1 * ディレクトリ内のすべてのサブディレクトリをスキップする場合は、[ディレクトリでフィルター] を選択し、/home/admin/app1 */** と入力してブラックリストを設定する必要があります。 /home/admin/app1 * と入力した場合、ブラックリストは有効になりません。
- When a blacklist is in use, computational overhead is generated. ブラックリストには最大10エントリを追加することを推奨します。
- スラッシュ (/) で終わるディレクトリパスは指定できません。 たとえば、パスを /home/admin/dir1/ に設定した場合、ディレクトリのブラックリストは有効になりません。
Docker ファイル
Dockerコンテナからログを収集する場合は、Dockerファイルをオンにして、コンテナのディレクトリとタグを指定する必要があります。 Logtailはコンテナを監視して、コンテナが作成されたか破棄されたかを確認し、タグでコンテナをフィルタリングし、フィルタリング結果のコンテナからログを収集します。 詳細については、「Log Serviceコンソールを使用してDaemonSetモードでコンテナテキストログを収集する」をご参照ください。
モード
ログ収集モード デフォルトでは、フル正規表現モードが表示されます。 モードを変更できます。
単一業
1行のログを収集する場合は、Singlelineをオンにします。 次に、Log Serviceは行ごとにログを収集します。
Javaプログラムログなどの複数行のログを収集する場合は、Singlelineをオフにします。 次に、Log Serviceは複数行のログを収集します。
ログのサンプル
実際のシナリオから収集されたサンプルログ。 Log Serviceは、ログに基づいて正規表現を自動的に生成できます。 サンプルログの詳細については、「例: 単一行ログの収集と例: 複数行のログの収集」をご参照ください。
Regex to Match First Line
ログの最初の行の先頭を一致させるために使用される正規表現。 複数行のログを収集する場合は、Singlelineをオフにしてこのパラメーターを設定する必要があります。 Log Serviceは、正規表現を自動的に生成したり、手動で指定した正規表現を使用したりできます。
自動生成
サンプルの複数行ログを入力したら、[自動生成] をクリックします。 Log Serviceは、ログの最初の行の先頭に一致する正規表現を自動的に生成します。
手動設定
サンプルの複数行ログを入力したら、[手動] をクリックし、ログの最初の行の先頭に一致する正規表現を手動で指定します。 次に、[検証] をクリックして、正規表現が有効かどうかを確認します。 詳細については、「」をご参照ください。How do I test a regular expression?
抽出フィールド
[フィールドの抽出] をオンにすると、Log Serviceは正規表現を使用してキーと値のペアを抽出できます。
正規表現
[フィールドの抽出] をオンにする場合、このパラメーターを設定する必要があります。
自動生成
[ログサンプル] フィールドで、抽出するコンテンツを選択し、[正規表現の生成] をクリックします。 正規表現は自動的に生成されます。
手動設定
[手動] をクリックして正規表現を指定します。 次に、[検証] をクリックして、正規表現を使用してログを解析したり、ログからコンテンツを抽出したりできるかどうかを確認します。 詳細については、「」をご参照ください。How do I test a regular expression?
抽出する内容
[フィールドの抽出] をオンにする場合、このパラメーターを設定する必要があります。
正規表現を使用してログコンテンツを値として抽出した後、値ごとにキーを指定する必要があります。
システム時刻を使用
[フィールドの抽出] をオンにする場合、このパラメーターを設定する必要があります。 次の情報に注意してください。
[システム時間の使用] をオンにすると、ログのタイムスタンプは、ログが収集されたシステム時間を示します。 システム時間は、Logtailが実行されるサーバーまたはコンテナーの時間を指します。
[システム時間の使用] をオフにする場合は、[抽出コンテンツ] セクションで、時間値の [キー] パラメーターを [時間] に設定する必要があります。
Youを指定しなければなりません時間変換フォーマットベースにリアルタイムフィールドの値。 たとえば、生ログの時間値が10/Sep/2022:12:36:49の場合、[時間変換形式] パラメーターを % d/% b/% Y:% H:% M:% Sに設定できます。 詳細については、「時間形式」をご参照ください。
重要LogtailコンテナのタイムゾーンはUTCです。 DaemonSetモードでコンテナログを収集し、ログを収集するコンテナのタイムゾーンがUTCでない場合は、Logtail設定の [詳細オプション] セクションで [タイムゾーン] を [カスタム] に設定し、ログを収集するコンテナのタイムゾーンを使用する必要があります。 そうしないと、ログ時間が誤ってオフセットされます。 たとえば、ログを収集するコンテナを作成するときに [タイムゾーンをノードからコンテナに同期] を選択した場合、コンテナのタイムゾーンはUTCではない場合があります。
log Serviceのログのタイムスタンプは、デフォルトでは秒単位です。 生ログの時間フィールドの値がより高い時間精度 (たとえば、ミリ秒、マイクロ秒、またはナノ秒の精度) を持ち、Log Serviceのログの時間精度を保持する場合は、Logtailの [More Configurations] フィールドにenable_excursic_timestampパラメーターを追加し、enable_preise_timestampパラメーターをtrueに設定します。
ドロップログの解析に失敗
解析に失敗したログを削除するかどうかを指定します。
- [ログの解析に失敗した削除] をオンにした場合、解析に失敗したログはLog Serviceにアップロードされません。
- [ログの解析に失敗した削除] をオフにした場合、解析に失敗したログは、
__raw_log__ フィールドの値としてLog Serviceにアップロードされます。
監視ディレクトリの最大深度
監視するサブディレクトリのレベルの最大数。 サブディレクトリは、指定したログファイルディレクトリにあります。 有効な値: 0 ~ 1000 値0は、指定したログファイルディレクトリのみを監視することを示します。
ビジネス要件に基づいて詳細設定を構成できます。 詳細設定は変更しないことをお勧めします。 詳細設定のパラメーターを次の表に示します。
パラメーター 説明 プラグイン処理の有効化 ログが複雑で、NGINXモード、フル正規表現モード、JSONモードなどのモードで解析できない場合は、[プラグイン処理の有効化] をオンにして、ログを解析するLogtailプラグインを追加できます。 Log Serviceは、選択した収集モードに基づいてデフォルトのプラグイン設定を生成します。 processorsフィールドを設定することで、他のプラグイン設定を既定のプラグイン設定に追加できます。 詳細については、「概要」をご参照ください。
重要 [プラグイン処理の有効化] をオンにすると、[生ログのアップロード] 、[タイムゾーン] 、[ログの解析に失敗したドロップ] 、[フィルタ設定] 、[エントリのアップロードが不完全 (デリミターモード)] などのパラメーターが使用できなくなります。生ログのアップロード [生ログのアップロード] をオンにすると、各生ログは、生ログから解析されたログとともに、 __Raw__ フィールドの値としてLog Serviceにアップロードされます。Topic の生成方法 トピック生成モードを選択します。 詳細については、「ログトピック」をご参照ください。 - Null-トピックを生成しない: このモードでは、トピックフィールドは空の文字列に設定されます。 ログを照会するときに、トピックを指定する必要はありません。 デフォルト値です。
- マシングループトピック属性: このモードでは、トピックはマシングループレベルで設定されます。 異なるサーバーによって生成されたログを区別する場合は、このモードを選択します。
- ファイルパス正規表現: このモードでは、カスタム正規表現フィールドで正規表現を指定する必要があります。 ログパスの正規表現に一致する部分がトピックとして使用されます。 異なるユーザーまたはインスタンスによって生成されたログを区別する場合は、このモードを選択します。
ログファイルのエンコーディング ログファイルのエンコード形式を選択します。 有効な値: utf8とgbk。 タイムゾーン ログを収集するタイムゾーンを選択します。 有効な値: - システムタイムゾーン: この値を選択すると、Logtailがインストールされているサーバーまたはコンテナーのタイムゾーンが使用されます。
- カスタム: この値を選択する場合、ビジネス要件に基づいてタイムゾーンを選択する必要があります。
タイムアウト ログファイルが指定された期間内に更新されない場合、Logtailはモニタリングがタイムアウトしたと見なします。 - Never: すべてのログファイルは継続的に監視され、監視がタイムアウトすることはありません。
- 30 分タイムアウト: ログファイルが30分以内に更新されない場合、Logtailはモニタリングがタイムアウトしたと見なし、ファイルをモニタリングしなくなります。
30 Minute Timeoutを選択した場合、Maximum Timeout Directory Depthパラメーターを設定する必要があります。 有効な値: 1 ~ 3。
フィルターの設定 ログの収集に使用するフィルター条件を指定します。 指定されたフィルター条件に一致するログのみが収集されます。 フィルター条件間の論理演算子はANDです。 例: - 指定されたフィルター条件に一致するログを収集します。
- Keyをlevelに設定し、RegexをWARNING | ERRORに設定した場合、
level の値がWARNINGまたはERRORであるログのみが収集されます。 - Keyをcontentに設定し、Regexをに設定した場合。* 05\/Jan\/2023.* の場合、
content の値に05/Jan/2023が含まれるログのみが収集されます。説明 シンプルモードでは、コンテンツ フィールドのみが生成されます。 フィルター条件を指定する場合、Keyはcontentのみに設定できます。
- Keyをlevelに設定し、RegexをWARNING | ERRORに設定した場合、
- 指定されたフィルター条件に一致しないログを除外します。 詳しくは、「Regular-Expressions.info」をご参照ください。
- Keyをlevelに設定し、Regexを ^(?!.*(INFO | DEBUG)).* に設定した場合、
level の値にINFOまたはDEBUGが含まれるログは除外されます。 - Keyをlevelに設定し、Regexを ^(?!(INFO | DEBUG)$).* に設定した場合、
level の値がINFOまたはDEBUGであるログは除外されます。 - Keyをurlに設定し、Regexをに設定した場合。* ^(?!.*(healthcheck)).*
url の値にhealthcheckが含まれているログは除外されます。
- Keyをlevelに設定し、Regexを ^(?!.*(INFO | DEBUG)).* に設定した場合、
詳細については、「regex-exclude-word」および「regex-exclude-pattern」をご参照ください。
最初のコレクションのサイズ Logtailがファイルからログを最初に収集するときに、Logtailがログファイルから収集できるデータのサイズを指定します。 First Collection Sizeのデフォルト値は1024です。 (単位:KB) - ファイルサイズが1,024 KB未満の場合、Logtailはファイルの先頭からデータを収集します。
- ファイルサイズが1,024 KBを超える場合、Logtailはファイル内の最後の1,024 KBのデータを収集します。
ビジネス要件に基づいて最初のコレクションサイズを指定できます。 有効な値: 0 ~ 10485760 (単位:KB)
その他の設定 Logtailの拡張設定を指定します。 詳細については、「advanced」をご参照ください。 たとえば、現在のLogtail設定を使用して、異なるLogtail設定に一致するログファイルからログを収集し、ログが集計されてlog Serviceに送信される間隔を指定する場合は、現在のLogtailの拡張設定を指定できます。
{ "force_multiconfig": true、 "batch_send_interval": 3 }
[次へ] をクリックしてLogtail設定の作成を完了します。 その後、Log Serviceはログの収集を開始します。
説明- Logtail設定を有効にするには、最大3分かかります。
- Logtailを使用してログを収集するときにエラーが発生した場合は、Logtail収集エラーの表示方法?とLog Serviceがログを収集するときに発生する可能性のある一般的なエラーのトラブルシューティング方法を教えてください。を参照してください。
データをプレビューし、インデックスを設定し、[次へ] をクリックします。
デフォルトでは、Log Serviceでフルテキストインデックスが有効になっています。 手動モードまたは自動モードで収集したログに基づいてフィールドインデックスを設定することもできます。 自動モードでフィールドインデックスを設定するには、[自動インデックス生成] をクリックします。 これにより、Log Serviceは自動的にフィールドインデックスを作成します。 詳細については、「インデックスの作成」をご参照ください。 重要 ログをクエリおよび分析する場合は、フルテキストインデックス作成またはフィールドインデックス作成を有効にする必要があります。 フルテキストインデックスとフィールドインデックスの両方を有効にすると、フィールドインデックスのみが使用されます。[ログクエリ] をクリックします。 Logstoreのクエリと分析ページにリダイレクトされます。
インデックスが有効になるまで約1分待つ必要があります。 そして、収集したログを Raw Logsタブで確認することができます。 詳細については、「データのクエリと分析」をご参照ください。
例: 単一行ログの収集
サンプルログ
127.0.0.1 - - [10/Sep/2018:12:36:49 0800] "GET /index.html HTTP/1.1" 200 612 "-" Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML、Geckoのように) Chrome/68.0.3440.106 Safari/537.36"
正規表現
(\S +)\s-\s(\S +)\s\[([^]]+)]\s "(\w +)\s(\S +)\s([^"]+)\s(\d +)(\s\d +)[^-]+([^ "]+)"\s "([^"]+).*
Collectedログ
例: 複数行のログの収集
サンプルログ
[2018-10-01T10:30:01,000] [情報] java.lang.Exception: 例外が発生しました at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
ログの最初の行の先頭を一致させるために使用される正規表現
\[\d +-\d +-\w +:\d +:\d +,\d +]\s\[\w +]\s.*
正規表現
\[(\S +)]\s\[(\S +)]\s(.*)
Collectedログ
トラブルシューティング
Logtailを使用してログを収集した後、プレビューページまたはクエリページにデータが表示されない場合は、Logtailを使用してログを収集するときにエラーが発生した場合はどうすればよいですか?で提供されている手順に基づいてエラーをトラブルシューティングできます。