Logtailは、ネイティブプラグインモード (C ++ で実装され、最高のパフォーマンスを提供) 、拡張プラグインモード (Goで実装され、リッチで柔軟なエコシステムを提供) 、および構造化プロセス言語 (SPL) モードの3つの処理モードをサポートします (Logtail 2.0で導入され、パフォーマンスと柔軟性を兼ね備えています) 。 SPLステートメントを記述することで、SPLの堅牢なコンピューティングパワーをデータ処理に活用できます。 このトピックでは、SPLステートメントを使用して他の2つの処理モードと同じ機能を実現する方法について説明します。
前提条件
Simple Log Serviceが有効化されています。 詳細については、「Simple Log Serviceの有効化」をご参照ください。
制限事項
SPLはLogtail V2.0以降でのみサポートされます。
テキストログの収集はコンソールを使用して構成できますが、ログタイプの収集にはAPIまたはカスタムリソース定義 (CRD) が必要です。
手順
Logtail設定を変更するときにSPLを追加する
Simple Log Serviceコンソールにログインします。
[プロジェクト] セクションで、目的のプロジェクトをクリックします。
[ログストレージ] > [ログストア] タブで、目的のログストアの横にある > アイコンをクリックし、[データ収集] > [Logtail設定] を選択します。
Logtail設定リストで、必要なLogtail設定を見つけ、[操作] 列の [Logtail設定の管理] をクリックします。
[編集] をクリックします。 [プロセッサの構成] セクションで、[処理方法] を [SPL] に設定し、[保存] をクリックします。
グローバル設定
パラメーター
説明
設定名
Logtail設定の名前を入力します。 名前はプロジェクト内で一意である必要があります。 Logtail設定を作成した後、その名前を変更することはできません。
ログトピックの種類
ログトピックを生成する方法を選択します。 詳細については、「ログトピック」をご参照ください。
マシングループトピック: マシングループのトピックがログトピックとして使用されます。 異なるマシングループのログを区別する場合は、このオプションを選択します。
ファイルパスの抽出: カスタム正規表現を指定する必要があります。 正規表現に一致するファイルパスの一部がログトピックとして使用されます。 異なるソースのログを区別する場合は、このオプションを選択します。
カスタム: カスタムログトピックを指定する必要があります。
高度なパラメータ
必要に応じて、 グローバル設定に関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。
入力設定
パラメーター
説明
ファイルパス
ECSインスタンスなど、サーバー上のログの場所に基づいて、ログファイルのディレクトリと名前を指定します。
Linuxオペレーティングシステムでファイルパスを指定する場合、パスはスラッシュ (/) で始まる必要があります。 例:
/apsara/nuwa/**/app.Log
Windowsオペレーティングシステムでファイルパスを指定する場合、パスはドライブ文字で始まる必要があります。 例:
C:\Program Files\Intel\**\*.Log
正確なディレクトリと正確な名前を指定できます。 ワイルドカード文字を使用して、ディレクトリと名前を指定することもできます。 詳細については、「ワイルドカードの一致」をご参照ください。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
Simple Log Serviceは、指定されたディレクトリのすべてのレベルをスキャンして、指定された条件に一致するログファイルを見つけます。 例:
/apsara/nuwa/**/*.log
を指定した場合、Simple Log Serviceは、名前の接尾辞が/apsara/nuwa
ディレクトリとディレクトリの再帰サブディレクトリにログインします。を指定した場合
/var/logs/app_*/**/*.log
Simple Log Serviceは、次の条件を満たすログファイルからログを収集します。. ログ
. ファイルは、/var/logs
ディレクトリのサブディレクトリまたはサブディレクトリの再帰サブディレクトリに格納されます。 サブディレクトリの名前は、app_*
パターンと一致します。/var/log/nginx/**/access *
を指定した場合、Simple Log Serviceは、名前が/var/log/nginx
ディレクトリのaccess
で始まるログファイルと、ディレクトリの再帰的なサブディレクトリからログを収集します。
監視ディレクトリの最大深度
監視するサブディレクトリのレベルの最大数を指定します。 サブディレクトリは、指定したログファイルディレクトリにあります。 このパラメーターは、ファイルパスの値に含まれる
**
ワイルドカード文字と一致するサブディレクトリのレベルを指定します。 値が0の場合は, 指定したログファイルディレクトリのみを監視することを示します。ファイルのエンコード
ログファイルのエンコード形式を選択します。
最初のコレクションのサイズ
Logtailが最初に収集するときにログファイルから収集できるデータのサイズを指定します。 First Collection Sizeのデフォルト値は1024です。 (単位:KB)
ファイルサイズが1,024 KB未満の場合、Logtailはファイルの先頭からデータを収集します。
ファイルサイズが1,024 KBを超える場合、Logtailはファイル内の最後の1,024 KBのデータを収集します。
ビジネス要件に基づいて最初のコレクションサイズを設定できます。 有効な値: 0 ~ 10485760 (単位:KB)
コレクションブラックリスト
[コレクションブラックリスト] をオンにする場合、ブラックリストを設定して、Simple Log Serviceがログを収集するときにスキップするディレクトリまたはファイルを指定する必要があります。 正確なディレクトリとファイル名を指定できます。 ワイルドカード文字を使用して、ディレクトリとファイル名を指定することもできます。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
重要ワイルドカード文字を使用して [ファイルパス] の値を指定し、指定したディレクトリ内の一部のサブディレクトリをスキップする場合は、[コレクションブラックリスト] を設定してサブディレクトリを指定する必要があります。 完全なサブディレクトリを指定する必要があります。
たとえば、[ファイルパス] を
/home/admin/app */log/*.log
に設定し、/home/admin/app1 *
ディレクトリ内のすべてのサブディレクトリをスキップする場合は、[ディレクトリブラックリスト] を選択し、[ディレクトリ名] フィールドに/home/admin/app1 */**
と入力する必要があります。/home/admin/app1 *
と入力した場合、ブラックリストは有効になりません。ブラックリストが使用されているとき、計算オーバーヘッドが生成される。 ブラックリストに追加するエントリは10個以下にすることを推奨します。
スラッシュ (/) で終わるディレクトリは指定できません。 たとえば、ディレクトリブラックリストで
/home/admin/dir1/
ディレクトリを指定した場合、ディレクトリブラックリストは有効になりません。
次の種類のブラックリストがサポートされています: ファイルパスブラックリスト、ファイルブラックリスト、およびディレクトリブラックリスト。
ファイルパスブラックリスト
[File Path Blacklist] を選択し、[File Path Name] フィールドに
/home/admin/private *.log
と入力すると、名前の接頭辞がprivate、接尾辞がであるすべてのファイルが表示されます。/home/admin/
ディレクトリへのログインはスキップされます。[File Path Blacklist] を選択し、[File Path Name] フィールドに
/home/admin/private */*_inner.log
と入力した場合、/home/admin/
ディレクトリのプレフィックスがprivateであるサブディレクトリの_inner.logで名前がサフィックスされているファイルはすべてスキップされます。 たとえば、/home/admin/private/app_inner.log
ファイルはスキップされますが、/home/admin/private/app.log
ファイルはスキップされません。
ファイルブラックリスト
[File Blacklist] を選択し、[File Name] フィールドに
app_inner.log
と入力すると、名前がapp_inner.log
であるすべてのファイルがスキップされます。ディレクトリブラックリスト
[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/dir1
と入力すると、/home/admin/dir1
ディレクトリ内のすべてのファイルがスキップされます。[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/dir *
と入力した場合、/home/admin/
ディレクトリの名前の先頭にdirが付いているサブディレクトリ内のすべてのファイルがスキップされます。[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/*/dir
と入力した場合、/home/admin/
ディレクトリの各第2レベルのサブディレクトリのdirサブディレクトリにあるすべてのファイルがスキップされます。 たとえば、/home/admin/a/dir
ディレクトリのファイルはスキップされますが、/home/admin/a/b/dir
ディレクトリのファイルはスキップされません。
ファイルの複数回の収集を許可する
デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 ログファイルからログの複数のコピーを収集する場合は、[ファイルの複数回の収集を許可] をオンにする必要があります。
高度なパラメータ
必要に応じて、 入力プラグインに関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。
プロセッサ構成
パラメーター
説明
ログのサンプル
実際のシナリオから収集されたサンプルログを追加します。 サンプルログを使用して、ログ処理に関連するパラメーターを簡単に設定できます。 複数のサンプルログを追加できます。 ログの全長は1,500文字を超えてはなりません。
[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
マルチラインモード
複数行のログの種類を指定します。 複数行のログは、複数の連続した行にまたがっています。 このパラメーターを設定して、ログファイル内の各複数行ログを識別できます。
カスタム: 複数行のログは、Regex to Match First lineの値に基づいて識別されます。
複数行のJSON: 各JSONオブジェクトは複数行に展開されます。 例:
{ "name": "John Doe", "age": 30, "address": { "city": "New York", "country": "USA" } }
分割に失敗した場合の処理方法を設定します。
Exception in thread "main" java.lang.NullPointerException at com.example.MyClass.methodA(MyClass.java:12) at com.example.MyClass.methodB(MyClass.java:34) at com.example.MyClass.main(MyClass.java:½0)
上記のサンプルログの場合、Simple log Serviceはログを破棄するか、ログの分割に失敗した場合に1行ずつログとして保持します。
破棄: ログは破棄されます。
1行の保持: ログテキストの各行はログとして保持されます。 合計4つのログが保持されます。
処理モード
[SPL] を選択します。
SPLステートメント
SPLステートメントの詳細については、「SPL構文」をご参照ください。 デフォルトでは、ログの解析前に、ログは
content
フィールドに保存されます。タイムアウト期間
SPLステートメントの1回の実行の最大期間。
Logtail構成の作成時にSPLを追加する
Simple Log Serviceコンソールにログインします。
[クイックデータのインポート] セクションで、[データのインポート] をクリックし、[自己管理オープンソース /商用ソフトウェア] タブをクリックします。 テキストログサフィックスを含むカードを選択します。
Logstoreの選択ステップで、プロジェクトとログストアを選択し、[次へ] をクリックします。
マシングループの設定ステップで、マシングループを設定します。
ビジネス要件に基づいて、シナリオとインストール環境のパラメーターを設定します。
重要マシングループが使用可能かどうかに関係なく、シナリオパラメーターとインストール環境パラメーターを設定する必要があります。 パラメーター設定は、以降の設定に影響します。
[応用サーバーグループ] セクションにマシングループが表示されていることを確認し、[次へ] をクリックします。
マシングループ利用可能
[ソースマシングループ] セクションからマシングループを選択します。
マシングループがありません
[マシングループの作成] をクリックします。 マシングループの作成パネルで、パラメーターを設定します。 マシングループ識別子パラメーターをIPアドレスまたはカスタム識別子に設定できます。 詳細については、「カスタム識別子ベースのマシングループの作成」または「IPアドレスベースのマシングループの作成」をご参照ください。
重要マシングループを作成した直後にマシングループを適用すると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがSimple Log Serviceに接続されていないために発生します。 この問題を解決するには、[再試行] をクリックします。 問題が解決しない場合は、Logtailでハートビート接続が検出されない場合はどうすればよいですか?
Logtail設定ステップで、Logtail設定を作成し、[次へ] をクリックします。
グローバル設定
パラメーター
説明
設定名
Logtail設定の名前を入力します。 名前はプロジェクト内で一意である必要があります。 Logtail設定を作成した後、その名前を変更することはできません。
ログトピックの種類
ログトピックを生成する方法を選択します。 詳細については、「ログトピック」をご参照ください。
マシングループトピック: マシングループのトピックがログトピックとして使用されます。 異なるマシングループのログを区別する場合は、このオプションを選択します。
ファイルパスの抽出: カスタム正規表現を指定する必要があります。 正規表現に一致するファイルパスの一部がログトピックとして使用されます。 異なるソースのログを区別する場合は、このオプションを選択します。
カスタム: カスタムログトピックを指定する必要があります。
高度なパラメータ
必要に応じて、 グローバル設定に関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。
入力設定
パラメーター
説明
ファイルパス
ECSインスタンスなど、サーバー上のログの場所に基づいて、ログファイルのディレクトリと名前を指定します。
Linuxオペレーティングシステムでファイルパスを指定する場合、パスはスラッシュ (/) で始まる必要があります。 例:
/apsara/nuwa/**/app.Log
Windowsオペレーティングシステムでファイルパスを指定する場合、パスはドライブ文字で始まる必要があります。 例:
C:\Program Files\Intel\**\*.Log
正確なディレクトリと正確な名前を指定できます。 ワイルドカード文字を使用して、ディレクトリと名前を指定することもできます。 詳細については、「ワイルドカードの一致」をご参照ください。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
Simple Log Serviceは、指定されたディレクトリのすべてのレベルをスキャンして、指定された条件に一致するログファイルを見つけます。 例:
/apsara/nuwa/**/*.log
を指定した場合、Simple Log Serviceは、名前の接尾辞が/apsara/nuwa
ディレクトリとディレクトリの再帰サブディレクトリにログインします。を指定した場合
/var/logs/app_*/**/*.log
Simple Log Serviceは、次の条件を満たすログファイルからログを収集します。. ログ
. ファイルは、/var/logs
ディレクトリのサブディレクトリまたはサブディレクトリの再帰サブディレクトリに格納されます。 サブディレクトリの名前は、app_*
パターンと一致します。/var/log/nginx/**/access *
を指定した場合、Simple Log Serviceは、名前が/var/log/nginx
ディレクトリのaccess
で始まるログファイルと、ディレクトリの再帰的なサブディレクトリからログを収集します。
監視ディレクトリの最大深度
監視するサブディレクトリのレベルの最大数を指定します。 サブディレクトリは、指定したログファイルディレクトリにあります。 このパラメーターは、ファイルパスの値に含まれる
**
ワイルドカード文字と一致するサブディレクトリのレベルを指定します。 値が0の場合は, 指定したログファイルディレクトリのみを監視することを示します。ファイルのエンコード
ログファイルのエンコード形式を選択します。
最初のコレクションのサイズ
Logtailが最初に収集するときにログファイルから収集できるデータのサイズを指定します。 First Collection Sizeのデフォルト値は1024です。 (単位:KB)
ファイルサイズが1,024 KB未満の場合、Logtailはファイルの先頭からデータを収集します。
ファイルサイズが1,024 KBを超える場合、Logtailはファイル内の最後の1,024 KBのデータを収集します。
ビジネス要件に基づいて最初のコレクションサイズを設定できます。 有効な値: 0 ~ 10485760 (単位:KB)
コレクションブラックリスト
[コレクションブラックリスト] をオンにする場合、ブラックリストを設定して、Simple Log Serviceがログを収集するときにスキップするディレクトリまたはファイルを指定する必要があります。 正確なディレクトリとファイル名を指定できます。 ワイルドカード文字を使用して、ディレクトリとファイル名を指定することもできます。 このパラメーターを設定すると、アスタリスク (*) または疑問符 (?) のみをワイルドカード文字として使用できます。
重要ワイルドカード文字を使用して [ファイルパス] の値を指定し、指定したディレクトリ内の一部のサブディレクトリをスキップする場合は、[コレクションブラックリスト] を設定してサブディレクトリを指定する必要があります。 完全なサブディレクトリを指定する必要があります。
たとえば、[ファイルパス] を
/home/admin/app */log/*.log
に設定し、/home/admin/app1 *
ディレクトリ内のすべてのサブディレクトリをスキップする場合は、[ディレクトリブラックリスト] を選択し、[ディレクトリ名] フィールドに/home/admin/app1 */**
と入力する必要があります。/home/admin/app1 *
と入力した場合、ブラックリストは有効になりません。ブラックリストが使用されているとき、計算オーバーヘッドが生成される。 ブラックリストに追加するエントリは10個以下にすることを推奨します。
スラッシュ (/) で終わるディレクトリは指定できません。 たとえば、ディレクトリブラックリストで
/home/admin/dir1/
ディレクトリを指定した場合、ディレクトリブラックリストは有効になりません。
次の種類のブラックリストがサポートされています: ファイルパスブラックリスト、ファイルブラックリスト、およびディレクトリブラックリスト。
ファイルパスブラックリスト
[File Path Blacklist] を選択し、[File Path Name] フィールドに
/home/admin/private *.log
と入力すると、名前の接頭辞がprivate、接尾辞がであるすべてのファイルが表示されます。/home/admin/
ディレクトリへのログインはスキップされます。[File Path Blacklist] を選択し、[File Path Name] フィールドに
/home/admin/private */*_inner.log
と入力した場合、/home/admin/
ディレクトリのプレフィックスがprivateであるサブディレクトリの_inner.logで名前がサフィックスされているファイルはすべてスキップされます。 たとえば、/home/admin/private/app_inner.log
ファイルはスキップされますが、/home/admin/private/app.log
ファイルはスキップされません。
ファイルブラックリスト
[File Blacklist] を選択し、[File Name] フィールドに
app_inner.log
と入力すると、名前がapp_inner.log
であるすべてのファイルがスキップされます。ディレクトリブラックリスト
[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/dir1
と入力すると、/home/admin/dir1
ディレクトリ内のすべてのファイルがスキップされます。[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/dir *
と入力した場合、/home/admin/
ディレクトリの名前の先頭にdirが付いているサブディレクトリ内のすべてのファイルがスキップされます。[Directory Blacklist] を選択し、[Directory Name] フィールドに
/home/admin/*/dir
と入力した場合、/home/admin/
ディレクトリの各第2レベルのサブディレクトリのdirサブディレクトリにあるすべてのファイルがスキップされます。 たとえば、/home/admin/a/dir
ディレクトリのファイルはスキップされますが、/home/admin/a/b/dir
ディレクトリのファイルはスキップされません。
ファイルの複数回の収集を許可する
デフォルトでは、ログファイルからログを収集するために使用できるLogtail設定は1つだけです。 ログファイルからログの複数のコピーを収集する場合は、[ファイルの複数回の収集を許可] をオンにする必要があります。
高度なパラメータ
必要に応じて、 入力プラグインに関連する詳細パラメーターを設定します。 詳細については、「CreateLogtailPipelineConfig」をご参照ください。
プロセッサ構成
パラメーター
説明
ログのサンプル
実際のシナリオから収集されたサンプルログを追加します。 サンプルログを使用して、ログ処理に関連するパラメーターを簡単に設定できます。 複数のサンプルログを追加できます。 ログの全長は1,500文字を超えてはなりません。
[2023-10-01T10:30:01,000] [INFO] java.lang.Exception: exception happened at TestPrintStackTrace.f(TestPrintStackTrace.java:3) at TestPrintStackTrace.g(TestPrintStackTrace.java:7) at TestPrintStackTrace.main(TestPrintStackTrace.java:16)
マルチラインモード
複数行のログの種類を指定します。 複数行のログは、複数の連続した行にまたがっています。 このパラメーターを設定して、ログファイル内の各複数行ログを識別できます。
カスタム: 複数行のログは、Regex to Match First lineの値に基づいて識別されます。
複数行のJSON: 各JSONオブジェクトは複数行に展開されます。 例:
{ "name": "John Doe", "age": 30, "address": { "city": "New York", "country": "USA" } }
分割に失敗した場合の処理方法を設定します。
Exception in thread "main" java.lang.NullPointerException at com.example.MyClass.methodA(MyClass.java:12) at com.example.MyClass.methodB(MyClass.java:34) at com.example.MyClass.main(MyClass.java:½0)
上記のサンプルログの場合、Simple log Serviceはログを破棄するか、ログの分割に失敗した場合に1行ずつログとして保持します。
破棄: ログは破棄されます。
1行の保持: ログテキストの各行はログとして保持されます。 合計4つのログが保持されます。
処理モード
[SPL] を選択します。
SPLステートメント
SPLステートメントの詳細については、「SPL構文」をご参照ください。 デフォルトでは、ログの解析前に、ログは
content
フィールドに保存されます。タイムアウト期間
SPLステートメントの1回の実行の最大期間。