Amazon S3 の Apache Iceberg テーブルへの Amazon Data Firehose ストリームの配信はプレビュー中であり、変更される可能性があります。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
エージェントでデータを前処理する
エージェントは、モニタリング対象ファイルから解析されたレコードを Firehose ストリームに送信する前に前処理できます。ファイルフローに dataProcessingOptions
設定を追加することで、この機能を有効にできます。処理オプションを 1 つ以上追加することができます。また、指定の順序で実行されます。
エージェントは、次の処理オプションに対応しています。エージェントはオープンソースであるため、処理オプションを開発および拡張できます。Kinesis エージェント
処理オプション
SINGLELINE
-
改行文字、先頭のスペース、末尾のスペースを削除することで、複数行レコードを単一行レコードに変換します。
{ "optionName": "SINGLELINE" }
CSVTOJSON
-
レコードを区切り文字で区切られた形式からJSON形式に変換します。
{ "optionName": "CSVTOJSON", "customFieldNames": [ "
field1
", "field2
",...
], "delimiter": "yourdelimiter
" }customFieldNames
-
〔必須] 各キーと値のペアのJSONキーとして使用されるフィールド名。たとえば、
["f1", "f2"]
を指定した場合は、レコード「v1、v2」は{"f1":"v1","f2":"v2"}
に変換されます。 delimiter
-
レコードで区切り記号として使用する文字列。デフォルトはカンマ (,) です。
LOGTOJSON
-
レコードをログ形式からJSON形式に変換します。サポートされているログ形式は、Apache Common Log、Apache Combined Log、Apache Error Log、および RFC3164 Syslog です。
{ "optionName": "LOGTOJSON", "logFormat": "
logformat
", "matchPattern": "yourregexpattern
", "customFieldNames": [ "field1
", "field2
",…
] }logFormat
-
[必須] ログエントリ形式。以下の値を指定できます。
-
COMMONAPACHELOG
— Apache Common Log 形式。各ログエントリは、デフォルトで次のパターン%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes}
になります。 -
COMBINEDAPACHELOG
— Apache Combined Log 形式。各ログエントリは、デフォルトで次のパターン%{host} %{ident} %{authuser} [%{datetime}] \"%{request}\" %{response} %{bytes} %{referrer} %{agent}
になります。 -
APACHEERRORLOG
— Apache Error Log 形式。各ログエントリは、デフォルトで次のパターン[%{timestamp}] [%{module}:%{severity}] [pid %{processid}:tid %{threadid}] [client: %{client}] %{message}
になります。 -
SYSLOG
— Syslog RFC3164 形式。各ログエントリは、デフォルトで次のパターン%{timestamp} %{hostname} %{program}[%{processid}]: %{message}
になります。
-
matchPattern
-
指定されたログ形式のデフォルトパターンを上書きします。カスタム形式を使用する場合は、この設定を使用してログエンティティから値を抽出します。
matchPattern
を指定する場合は、customFieldNames
も指定する必要があります。 customFieldNames
-
各キーバリューペアのJSONキーとして使用されるカスタムフィールド名。
matchPattern
から抽出した値のフィールド名を定義するために、または事前定義されたログ形式のデフォルトのフィールド名を上書きするために、この設定を使用できます。
例 : LOGTOJSON設定
JSON 形式に変換された Apache 共通ログエントリLOGTOJSON
の設定例を次に示します。
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" }
変換前:
64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200 6291
変換後:
{"host":"64.242.88.10","ident":null,"authuser":null,"datetime":"07/Mar/2004:16:10:02 -0800","request":"GET /mailman/listinfo/hsdivision HTTP/1.1","response":"200","bytes":"6291"}
例 : カスタムフィールドを使用したLOGTOJSON設定
こちらは LOGTOJSON
設定の別の例です。
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "customFieldNames": ["f1", "f2", "f3", "f4", "f5", "f6", "f7"] }
この設定では、前の例と同じ Apache Common Log エントリが次のようにJSON形式に変換されます。
{"f1":"64.242.88.10","f2":null,"f3":null,"f4":"07/Mar/2004:16:10:02 -0800","f5":"GET /mailman/listinfo/hsdivision HTTP/1.1","f6":"200","f7":"6291"}
例 : Apache Common Log エントリの変換
次のフロー設定は、Apache 共通ログエントリを JSON形式の 1 行レコードに変換します。
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "dataProcessingOptions": [ { "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG" } ] } ] }
例 : 複数行レコードの変換
次のフロー設定は、最初の行が[SEQUENCE=
で開始している複数行レコードを解析します。各レコードはまず単一行レコードに変換されます。次に、値はタブの区切り記号に基づいたレコードから取得されます。抽出された値は、指定されたcustomFieldNames
値にマッピングされ、 JSON 形式で 1 行のレコードを形成します。
{ "flows": [ { "filePattern": "
/tmp/app.log*
", "deliveryStream": "my-delivery-stream
", "multiLineStartPattern": "\\[SEQUENCE=
", "dataProcessingOptions": [ { "optionName": "SINGLELINE" }, { "optionName": "CSVTOJSON", "customFieldNames": [ "field1
", "field2
", "field3
" ], "delimiter": "\\t
" } ] } ] }
例 : 一致パターンLOGTOJSONの設定
最後のフィールド (バイト) を省略して、Apache 共通ログエントリを JSON形式に変換するLOGTOJSON
設定の例を次に示します。
{ "optionName": "LOGTOJSON", "logFormat": "COMMONAPACHELOG", "matchPattern": "^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3})", "customFieldNames": ["host", "ident", "authuser", "datetime", "request", "response"] }
変換前:
123.45.67.89 - - [27/Oct/2000:09:27:09 -0400] "GET /java/javaResources.html HTTP/1.0" 200
変換後:
{"host":"123.45.67.89","ident":null,"authuser":null,"datetime":"27/Oct/2000:09:27:09 -0400","request":"GET /java/javaResources.html HTTP/1.0","response":"200"}