regex パーサを使用すると、収集済みデータに対していくつかの正規表現を使用できます。
VMware Aria Operations for Logs エージェントは、Perl 構文を持つ C++ Boost ライブラリ正規表現を使用します。 regex パーサは、指定されたキャプチャ グループを含む正規表現パターンを指定することで定義できます。例:(?<field_1>\d{4})[-](?<field_2>\d{4})[-](?<field_3>\d{4})[-](?<field_4>\d{4})
グループに指定された名前(
field_1、
field_2、
field_3、および
field_4 など)は、対応する抽出済みフィールドの名前になります。名前には次の要件があります。
- 正規表現パターンで指定された名前は、VMware Aria Operations for Logs の有効なフィールド名でなければなりません。
- 名前には英数字とアンダースコア (_) 文字だけを含めることができます。
- 名前の先頭を数字にすることはできません。
無効な名前を指定すると、構成は失敗します。
regex パーサのオプション
regex パーサに必要なオプションは、format オプションだけです。
追加のデバッグ情報が必要な場合は、debug オプションを使用できます。
構成
regex パーサを作成するには、base_parser として regex を使用し、format オプションを指定します。
regex の構成例
次の例を使用して 1234-5678-9123-4567 を分析できます。
[parser|regex_parser] base_parser=regex format=(?<tag1>\d{4})[-](?<tag2>\d{4})[-](?<tag3>\d{4})[-](?<tag4>\d{4}) [filelog|some_info] directory=D:\Logs include=*.txt parser=regex_parser
結果が表示されます。
tag1=1234 tag2=5678 tag3=9123 tag4=4567
regex パーサで Apache ログを解析するには、Apache ログ用の特定の regex 形式を指定します。
[parser|regex_parser] base_parser=regex format=(?<remote_host>.*) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>.*) (?<response_size>.*)
結果が表示されます。
127.0.0.1 - admin [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 remote_host=127.0.0.1 remote_log_name=- remote_auth_user=admin log_timestamp=10/Oct/2000:13:55:36 -0700 request=GET /apache_pb.gif HTTP/1.0 status_code=200 response_size=2326
次のコードは、別の Apache ログの解析例を示します。
[parser|regex_parser] base_parser=regex format=(?<remote_host>.* (?<remote_log_name>.*)) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.* (?<resource>.*) (?<protocol>.*))" (?<status_code>.*) (?<response_size>.*) 127.0.0.1 unknown - [17/Nov/2015:15:17:54 +0400] \"GET /index.php HTTP/1.1\" 200 4868 remote_host=127.0.0.1 unknown remote_log_name=unknown remote_auth_user=- log_timestamp=17/Nov/2015:15:17:54 +0400 request=GET /index.php HTTP/1.1 resource=/index.php protocol=HTTP/1.1 status_code=200 response_size=4868
パフォーマンスについての考慮事項
regex パーサは、CLF パーサなどの他のパーサよりも多くのリソースを消費します。他のパーサを使用してログを解析できる場合には、より良いパフォーマンスを得るために、regex パーサの代わりにそれらのパーサを使用することを検討してください。
パーサが提供されておらず、
regex パーサを使用する場合は、形式をできるだけ簡潔に定義します。次の例は、より良いパフォーマンスを提供する構成を示します。この例は、数値のフィールドを指定します。
(?<remote_host>\d+.\d+.\d+.\d+) (?<remote_log_name>.*) (?<remote_auth_user>.*) \[(?<log_timestamp>.*)\] "(?<request>.*)" (?<status_code>\d+) (?<response_size>\d+)