操作シナリオ
複数行フルテキストログとは、1つの完全なログデータが複数行にまたがるものを指します(例えばJavaプログラムログ)。この場合、改行文字\\nをログの終了識別子とすることはやや不合理です。ログシステムが各ログを明確に区別できるようにするために、先頭行の正規表現方式でマッチングを行います。ある行のログが事前に設定された正規表現にマッチした場合、その行を1つのログの先頭と見なし、次の行頭が出現した時点で、そのログの終了識別子とします。
複数行フルテキスト抽出モードでログを収集する場合も、複数行ログを格納するためのデフォルトのキー値__CONTENT__が設定されます。また、ログデータ自体に対してログ構造化処理は行われず、ログフィールドも抽出されません。ログ属性の時間項目は、ログ収集の時間によって決定されます。このドキュメントでは、複数行フルテキスト抽出モードでログを収集する方法について説明します。
前提条件
対象ファイルが存在するサーバーにはLogListenerがインストールされています。詳細については以下をご参照ください:
LogListener Linuxバージョンが2.1.1以上、またはLogListener Windowsバージョンが2.9.7以上であること。
効果プレビュー
ある複数行ログの元のデータが以下の通りであると仮定します:
2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:
java.lang.NullPointerException
at com.test.logging.FooFactory.createFoo(FooFactory.java:15)
at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
このログは最終的にCLSによって構造化処理され、以下のようになります:
__CONTENT__:2019-12-15 17:13:06,043 [main] ERROR com.test.logging.FooFactory:\\njava.lang.NullPointerException\\n at com.test.logging.FooFactory.createFoo(FooFactory.java:15)\\n at com.test.logging.FooFactoryTest.test(FooFactoryTest.java:11)
操作手順
ステップ1:ログトピックの作成/選択
新しいログトピックを選択する場合は、以下の操作を実行できます:
2. 左側のナビゲーションバーで概要を選択し、概要ページに移動します。
3. クイックアクセスでサーバーとアプリケーションを選択し、複数行フルテキスト-ファイルログをクリックして、収集設定フローに進みます。
4. 収集設定フローのログトピックの作成ページで、実際のニーズに応じて、ログトピック名を入力し、ログ保存期間などの情報を設定し、次へをクリックします。
既存のログトピックを選択する場合は、以下の操作を実行できます:
2. 左側のナビゲーションバーでログトピックを選択し、配信対象のログトピックを選択して、ログトピック名をクリックし、ログトピック管理ページに移動します。
3. 収集設定タブを選択し、LogListener収集設定欄で新規作成をクリックして、ログデータソースの選択に進みます。
4. ログデータソース選択ページで、サーバーとアプリケーションを選択し、複数行フルテキスト-ファイルログを見つけてクリックし、収集設定フローに進みます。
ステップ2:マシングループ管理
収集対象サーバーにLogListenerがインストールされていない場合は、以下をご参照ください:
マシングループ管理画面では、既存のマシングループを選択して使用することも、マシングループを作成することもできます:
新しいマシングループを作成する場合は、以下の操作を実行できます:
1. 新規マシングループをクリックします。
2. マシングループ名を入力し、マシン識別の方法でLogListenerがインストール済みのターゲットサーバーを関連付けます。詳細はマシングループをご参照の上、確定をクリックしてください。 3. 作成が完了したら、Tabオプションで作成したマシングループのシステム環境を選択し、リストでターゲットマシングループにチェックを入れ、次へをクリックします。
既存のマシングループを選択する場合は、Tabオプションで作成したマシングループのシステム環境を選択し、リストでターゲットマシングループにチェックを入れ、次へをクリックします。
ステップ3:収集設定
ログファイル収集パスの設定
収集設定ページで、収集ルール名を入力し、ログ収集パス形式に従って「収集パス」を入力します。ログ収集パス形式の参考は以下の通りです:
注意:
Linuxログパスは/で始まる必要があります。Windowsファイルパスはドライブ文字で始まる必要があります。例えばC:\\です。
Linuxシステムにおけるログパス:/[ディレクトリプレフィックス式]/**/[ファイル名式]、例えば:/data/log/**/*.log。
Windowsシステムにおけるログパス:[ドライブ文字]:\\[ディレクトリプレフィックス式]\\**\\[ファイル名式]、例えば:C:\\Program Files\\Tencent\\...\\*.log。
ログ収集パスを入力すると、LogListenerは[ディレクトリプレフィックス式]に従って、ルールに一致するすべての共通プレフィックスパスをマッチングし、これらのディレクトリ(サブディレクトリを含む)にある[ファイル名式]ルールに一致するすべてのログファイルを監視します。そのパラメータの詳細説明は以下の通りです:
|
| ログファイルのプレフィックスディレクトリ構造では、ワイルドカード * と ? のみサポートされます。 * は複数の任意の文字に一致することを示します。 ? は任意の1文字に一致することを示します。 カンマの入力はサポートされていません。 |
** | 現在のディレクトリおよびすべてのサブディレクトリを示します。 |
| ログファイル名では、ワイルドカード * と ? のみサポートされます。 * は複数の任意の文字に一致することを示します。 ? は任意の1文字に一致することを示します。 カンマの入力はサポートされていません。 |
よく使われる構成パターンは以下の通りです:
[共通ディレクトリプレフィックス]/**/[共通ファイル名プレフィックス]*
[共通ディレクトリプレフィックス]/**/*[共通ファイル名サフィックス]
[共通ディレクトリプレフィックス]/**/[共通ファイル名プレフィックス]*[共通ファイル名サフィックス]
[共通ディレクトリプレフィックス]/**/*[共通文字列]*
入力例は以下の通りです:
|
1 | | | この例では、ログパスの設定は/var/log/nginx/**/access.logです。LogListenerは/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにあるaccess.logという名前のログファイルを監視します。 |
2 | | | この例では、ログパスは/var/log/nginx/**/*.logに設定されています。LogListenerは/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにある、.logで終わるログファイルを監視します。 |
3 | | | この例では、ログパスは/var/log/nginx/**/error*に設定されています。LogListenerは/var/log/nginxプレフィックスパス配下のすべてのサブディレクトリにある、errorで始まる名前のログファイルを監視します。 |
注意:
Windowsシステム環境では現在、シンボリックリンクの収集をサポートしていません。
LogListener 2.3.9以降のバージョンでのみ、複数の収集パスを追加できます。
収集パスをlog/*.logに設定し、ログローテーション後の古いファイルをlog/*.log.xxxxにリネームすることをお勧めします。
デフォルトでは、1つのログファイルは1つのログトピックにのみ収集されます。1つのファイルを複数の収集設定に対応させる必要があり、かつファイルが存在するシステム環境がLinuxである場合は、ソースファイルにシンボリックリンクを追加し、それを別の収集設定グループに追加してください。
収集パス拒否リストの設定
収集パス拒否リストを有効にすると、収集時に指定したディレクトリプレフィックスまたは完全なファイルパスを無視できます。ディレクトリパスとファイルパスは完全一致も、ワイルドカードパターンマッチングもサポートします。
収集拒否リストは2種類のフィルタリングタイプに分かれており、同時に使用できます:
ファイルパス:収集パス配下で、収集を無視する必要がある完全なファイルパスです。ワイルドカード*または?をサポートし、**パスのあいまい一致をサポートします。
ディレクトリパス:収集パス配下で、収集を無視する必要があるディレクトリプレフィックスです。ワイルドカード*または?をサポートし、**パスのあいまい一致をサポートします。
注意:
LogListener 2.3.9以降のバージョンが必要です。
収集拒否リストは収集パス配下で除外を行うため、ファイルパスパターンであれ、ディレクトリパスパターンであれ、指定するパスは収集パスのサブセットである必要があります。
収集ポリシーの設定
全量収集:LogListenerがファイルを収集する際、ファイルの先頭から読み取りを開始します。
増分収集:LogListenerがファイルを収集する際、ファイル内で新しく追加されたコンテンツのみを収集します。
遡及収集の設定
収集戦略として増分収集を選択した場合、ここでさらに遡及収集の開始位置を設定し、LogListener起動時に最新位置から指定バイト数だけ前方にオフセットして収集を開始するかどうかを指定できます。
注意:
Windowsシステム環境は現在サポートされていません。
エンコードモード
UTF-8:お客様のログファイルのエンコードモードがUTF-8の場合、このオプションを選択してください。
GBK:お客様のログファイルのエンコードモードがGBKの場合、このオプションを選択してください。
マルチライン全文形式の設定
1. 「収集設定」ページで、「抽出モード」を複数行全文に設定します。下図に示す通りです:
2. 以下のルールに従って、正規表現を定義します。
自動生成または手動入力の2つの方法で先頭行の正規表現を定義できます。システムはサンプル内容に基づいて正規表現を検証します。
テキストボックスにログサンプルを入力し、自動生成をクリックすると、システムは自動的にグレー表示のテキストボックスに行頭正規表現を生成します。下図に示す通りです:
テキストボックスにログサンプルを入力し、先頭行の正規表現を入力し、検証をクリックすると、システムが式の通過可否を判断します。下図に示す通りです:
カスタムメタデータの設定
注意:
LogListener 2.8.7以降のバージョンのみがカスタムメタデータの設定をサポートします。
カスタムメタデータを設定して、ログを区別できます。現在、以下のメタデータ設定がサポートされています。詳細はカスタムメタデータをご参照ください。 マシングループメタデータ:マシングループメタデータを使用します。
収集パス:正規表現を使用して収集パス内の値を抽出し、メタデータとして使用します。
カスタム:カスタムキー値をメタデータとして使用します。
フィルター条件の設定
フィルターの目的は、ビジネスニーズに応じてログ収集フィルタールールを追加し、価値のあるログデータを選別できるようにすることです。
複数行フルテキストモードでは、デフォルトで__CONTENT__をフルテキストのキー(key)名として使用し、以下のフィルタールールをサポートします:
等しい:指定フィールド値が指定文字に一致するログのみを収集します。完全一致、または正規表現一致をサポートします。
等しくない:指定フィールド値が指定文字に一致しないログのみを収集します。完全一致、または正規表現一致をサポートします。
例えば、複数行フルテキストログのサンプル形式は以下の通りです:
10.20.20.10 - - [Tue Jan 22 14:24:03 CST 2019 +0800] GET /online/sample HTTP/1.1 127.0.0.1 200 628 35 http://127.0.0.1/group/1
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:64.0) Gecko/20100101 Firefox/64.0 0.310 0.310
10.20.20.10というマシンのすべてのログを収集したい場合、keyに__CONTENT__を入力し、フィルタールールで等しいを選択し、valueに10.20.20.10.*を入力します。
注意:
Windowsシステム環境は現在サポートされていません。
フィルタールール「等しくない」、「フィールドが存在する」、および「フィールドが存在しない」は、LogListener 2.9.3以降のバージョンでのみサポートされます。
複数のフィルタ条件間の関係は「AND」論理です。同じkey名に複数のフィルタ条件を設定した場合、ルールは上書きされます。
アップロード解析失敗ログの設定
アップロード解析失敗ログを有効にすることをお勧めします。有効にすると、LogListenerはさまざまな解析失敗ログをアップロードします。アップロード解析失敗ログを無効にすると、失敗したログは破棄されます。
有効にした後、解析失敗のKey値(デフォルトはLogParseFailure)を設定する必要があります。すべての解析失敗ログは、入力内容をキー名(Key)、元のログ内容を値(Value)としてアップロードされます。 高度な設定
注意:
Windowsシステム環境は現在サポートされていません。
チェックを入れることで、定義する詳細設定を選択します:
複数行フルテキスト抽出モードでは、以下の詳細設定を設定できます:
|
タイムアウト属性 | この設定はログファイルのタイムアウト時間を制御します。ログファイルが指定時間内に更新されない場合、タイムアウトとみなされます。タイムアウトしたログファイルは、LogListenerによって収集されなくなります。ログファイルの数が多い場合は、タイムアウト時間を短くして、LogListenerのパフォーマンスの無駄を避けることをお勧めします。 | タイムアウトなし:ログファイルがタイムアウトすることはありません。 カスタム:ログファイルのタイムアウト時間をカスタマイズします。 |
最大ディレクトリ深度 | この設定はログ収集の最大ディレクトリ深度を制御します。LogListenerは、所在ディレクトリ階層が指定された最大ディレクトリ深度を超えるログファイルを収集しません。対象収集パスにワイルドカードが含まれる場合は、適切な最大ディレクトリ深度を設定し、LogListenerのパフォーマンス浪費を回避することをお勧めします。 | 0より大きい整数です。0はサブディレクトリの下位走査を行わないことを表します。 |
解析失敗ログの結合 | 注意: LogListener 2.8.8以降のバージョンでのみ、マージ解析失敗ログを設定できます。 この設定は、収集時に対象ログファイル内で連続して解析に失敗したログを1つのログに結合してアップロードすることをサポートします。先頭行の正規表現ですべての複数行ログをカバーできない場合は、この設定を有効にして、先頭行のマッチングに失敗した単一の複数行ログが複数のログに分割されるのを防ぐことをお勧めします。 | 有効/無効 |
データ加工
収集したCLSログを構造化、マスキング、フィルタリングなどでさらに処理してからログトピックに書き込む必要がある場合は、収集設定ページ下部のデータ加工をクリックしてデータ加工を追加し、最後にインデックスを設定します。 説明:
データ加工関連の操作については、加工タスクの作成ドキュメントの【前置データ加工】タブページを参照してください。 データ加工には料金が発生します。詳細は課金概要をご覧ください。 ステップ4:インデックス設定
1. 次へをクリックし、インデックス設定ページに進みます。
2. 「インデックス設定」ページで、以下の情報を設定します。設定の詳細については、インデックス設定を参照してください。 注意
検索にはインデックス設定を有効にする必要があります。有効にしない場合、検索できません。
3. 送信をクリックし、編集インデックス設定確認ページに進みます。
設定したインデックス設定を新規に書き込まれるログにのみ適用する場合は、確定をクリックします。この設定を履歴データにも適用する場合は、確定をクリックした後、詳細についてはインデックスの再構築を参照して、さらに設定を行ってください。 4. 操作に成功し、収集設定が完了しました。
関連操作
ログを検索するには、検索分析ドキュメントを参照してください。