翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
使用できるプロセッサ
このセクションでは、ログイベントトランスフォーマーで使用できる各プロセッサについて説明します。プロセッサは、パーサー、文字列ミューテーター、JSON ミューテーター、および日付プロセッサに分類できます。
目次
設定可能なパーサータイプのプロセッサ
parseJSON
parseJSON プロセッサは JSON ログイベントを解析し、抽出された JSON キーと値のペアを送信先に挿入します。送信先を指定しない場合、プロセッサはキーと値のペアをルートノードに配置します。を最初のプロセッサparseJSON
として使用する場合は、ソースフィールド@message
として を使用してログイベント全体を解析する必要があります。最初の JSON 解析の後、後続のプロセッサの特定のフィールドを操作できます。
元の@message
コンテンツは変更されず、新しいキーがメッセージに追加されます。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
ソース |
解析されるログイベントの フィールドへのパス。ドット表記を使用して子フィールドにアクセスします。例: store.book |
いいえ |
|
最大長: 128 ネストされたキーの最大深度: 3 |
destination |
解析された JSON の送信先フィールド |
いいえ |
|
最大長: 128 ネストされたキーの最大深度: 3 |
例
取り込まれたログイベントは次のようになります。
{ "outer_key": { "inner_key": "inner_value" } }
次に、この parseJSON プロセッサがある場合:
[ { "parseJSON": { "destination": "new_key" } } ]
変換されたログイベントは次のとおりです。
{ "new_key": { "outer_key": { "inner_key": "inner_value" } } }
Grok
grok プロセッサを使用して、パターンマッチングを使用して非構造化データを解析および構造化します。このプロセッサは、ログメッセージからフィールドを抽出することもできます。
フィールド | 説明 | 必須? | デフォルト | 制限 | メモ |
---|---|---|---|---|---|
ソース |
Grok マッチングを適用するフィールドのパス |
いいえ |
|
最大長: 128 ネストされたキーの最大深度: 3 |
|
match |
ログイベントと照合する grok パターン |
はい |
最大長: 512 最大 Grok パターン: 20 一部の grok パターンタイプには、個別の使用制限があります。次のパターンの任意の組み合わせを最大 5 回使用できます: {URI、URIPARAM、URIPATHPARAM、SPACE、DATA、GREEDYDATA、GREEDYDATA_MULTILINE} Grok パターンは型変換をサポートしていません。 一般的なログ形式パターン (APACHE_ACCESS_LOG、NGINX_ACCESS_LOG、SYSLOG5424) では、共通のログパターンの後に DATA、GREEDYDATA、または GREEDYDATA_MULTILINE パターンのみを含めることができます。 |
Grok パターンの構造
サポートされている grok パターン構造は次のとおりです。
%{PATTERN_NAME:FIELD_NAME}
-
PATTERN_NAME: 特定のタイプのデータを一致させるための事前定義された正規表現を指します。サポートされている grok パターンリストの事前定義された grok パターンのみがサポートされます。カスタムパターンの作成は許可されません。
-
FIELD_NAME: 抽出された値に名前を割り当てます。
FIELD_NAME
はオプションですが、この値を指定しない場合、抽出されたデータは変換されたログイベントから削除されます。がドット表記 (「parent.child」など)FIELD_NAME
を使用している場合、JSON パスと見なされます。 -
型変換: 明示的な型変換はサポートされていません。TypeConverter プロセッサを使用して、grok によって抽出された任意の値のデータ型を変換します。
より複雑なマッチング式を作成するには、複数の grok パターンを組み合わせることができます。ログイベントに合わせて最大 20 個の grok パターンを組み合わせることができます。たとえば、このパターンの組み合わせを使用して、次のように Redis スローログエントリからフィールドを抽出%{NUMBER:timestamp} [%{NUMBER:db} %{IP:client_ip}:%{NUMBER:client_port}] %{GREEDYDATA:data}
できます。
1629860738.123456 [0 127.0.0.1:6379] "SET" "key1" "value1"
Grok の例
例 1: grok を使用して非構造化ログからフィールドを抽出する
サンプルログ:
293750 server-01.internal-network.local OK "[Thread-000] token generated"
使用するトランスフォーマー:
[ { "grok": { "match": "%{NUMBER:version} %{HOSTNAME:hostname} %{NOTSPACE:status} %{QUOTEDSTRING:logMsg}" } } ]
出力:
{ "version": "293750", "hostname": "server-01.internal-network.local", "status": "OK", "logMsg": "[Thread-000] token generated" }
サンプルログ:
23/Nov/2024:10:25:15 -0900 172.16.0.1 200
使用するトランスフォーマー:
[ { "grok": { "match": "%{HTTPDATE:timestamp} %{IPORHOST:clientip} %{NUMBER:response_status}" } } ]
出力:
{ "timestamp": "23/Nov/2024:10:25:15 -0900", "clientip": "172.16.0.1", "response_status": "200" }
例 2: grok を parseJSON と組み合わせて使用して JSON ログイベントからフィールドを抽出する
サンプルログ:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1" }
使用するトランスフォーマー:
[ { "parseJSON": {} }, { "grok": { "source": "logMsg", "match": "%{WORD:http_method} %{NOTSPACE:request} HTTP/%{NUMBER:http_version}" } } ]
出力:
{ "timestamp": "2024-11-23T16:03:12Z", "level": "ERROR", "logMsg": "GET /page.html HTTP/1.1", "http_method": "GET", "request": "/page.html", "http_version": "1.1" }
例 3: FIELD_NAME に点線注釈が付いた Grok パターン
サンプルログ:
192.168.1.1 GET /index.html?param=value 200 1234
使用するトランスフォーマー:
[ { "grok": { "match": "%{IP:client.ip} %{WORD:method} %{URIPATHPARAM:request.uri} %{NUMBER:response.status} %{NUMBER:response.bytes}" } } ]
出力:
{ "client": { "ip": "192.168.1.1" }, "method": "GET", "request": { "uri": "/index.html?param=value" }, "response": { "status": "200", "bytes": "1234" } }
サポートされている grok パターン
次の表に、grok
プロセッサでサポートされているパターンを示します。
一般的な grok パターン
Grok パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
USERNAME または USER | 小文字 (a~z)、大文字 (A~Z)、数字 (0~9)、ドット (.)、アンダースコア (_)、またはハイフン (-) を含むことができる 1 つ以上の文字に一致します | 20 |
入力: パターン: 出力: |
INT | オプションのプラス記号またはマイナス記号の後に 1 つ以上の数字が続きます。 | 20 |
入力: パターン: 出力: |
BASE10NUM | 整数または浮動小数点数とオプションの符号と小数点を一致 | 20 |
入力: パターン: 出力: |
BASE16NUM | 10 進数と 16 進数をオプションの記号 (+ または -) とオプションの 0x プレフィックスで一致させます | 20 |
入力: パターン: 出力: |
POSINT | 1 つ以上の数字 (1~9 の後に 0~9) で構成される、先頭にゼロを付けずに正の整数全体に一致します | 20 |
入力: パターン: 出力: |
NONNEGINT | ゼロと先頭にゼロがある数字を含むすべての整数 (1 つ以上の数字 0~9 で構成) に一致します。 | 20 |
入力: パターン: 出力: |
WORD | 文字、数字、アンダースコアを含む 1 つ以上の単語文字 (\w) で構成される単語全体と一致します | 20 |
入力: パターン: 出力: |
NOTSPACE | 空白以外の文字を 1 つ以上一致させます。 | 5 |
入力: パターン: 出力: |
SPACE | 0 文字以上の空白文字と一致します。 | 5 |
入力: パターン: 出力: |
DATA | 0 回以上、貪欲ではない任意の文字 (改行を除く) に一致します。 | 5 |
入力: パターン: 出力: |
GREEDYDATA | 0 回以上、greedy の任意の文字 (改行を除く) に一致します。 | 5 |
入力: パターン: 出力: |
GREEDYDATA_MULTILINE | 0 回以上、greedy の任意の文字 (改行を含む) に一致します。 | 1 |
入力
パターン: 出力: |
クォーテッドストリング | 引用符で囲まれた文字列 (一重引用符または二重引用符) をエスケープ文字と一致させます。 | 20 |
入力: パターン: 出力: |
UUID | 標準の UUID 形式に一致します。8 つの 16 進数文字の後に 3 つの 16 進数文字のグループが続き、12 の 16 進数文字で終わり、すべてハイフンで区切られます。 | 20 |
入力: パターン: 出力: |
URN | URN (Uniform Resource Name) 構文に一致します。 | 20 |
入力: パターン: 出力: |
AWS Grok パターン
パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
ARN |
AWS Amazon リソースネーム (ARNs) に一致し、パーティション ( |
5 |
入力: パターン: 出力: |
ネットワーク grok パターン
Grok パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
CISCOMAC | 4-4-4 の 16 進形式の MAC アドレスに一致します。 | 20 |
入力: パターン: 出力: |
WINDOWSMAC | 16 進数の MAC アドレスをハイフンで一致させます | 20 |
入力: パターン: 出力: |
共通 | 16 進形式の MAC アドレスをコロンと一致させます。 | 20 |
入力: パターン: 出力: |
MAC | CISCOMAC、WINDOWSMAC、または COMMONMAC grok パターンのいずれかに一致 | 20 |
入力: パターン: 出力: |
IPV6 | 圧縮フォームや IPv4 マップ IPv6 アドレスを含む IPv6 アドレスと一致します。 IPv4-mapped | 5 |
入力: パターン: 出力: |
IPV4 | IPv4 アドレスと一致します。 | 20 |
入力: パターン: 出力: |
IP | %{IPv6} でサポートされている IPv6 アドレスまたは %{IPv4} でサポートされている IPv4 アドレスのいずれかに一致します | 5 |
入力: パターン: 出力: |
ホスト名またはホスト | サブドメインを含むドメイン名と一致 | 5 |
入力: パターン: 出力: |
IPORHOST | ホスト名または IP アドレスのいずれかに一致 | 5 |
入力: パターン: 出力: |
ホスト | %{IPORHOST} パターンでサポートされている IP アドレスまたはホスト名にコロンとポート番号が続き、出力でポートを「PORT」としてキャプチャします。 | 5 |
入力: パターン: 出力: |
URIHOST | %{IPORHOST} パターンでサポートされている IP アドレスまたはホスト名に一致し、オプションでコロンとポート番号が続き、ポートが存在する場合はポートを「ポート」としてキャプチャします。 | 5 |
入力: パターン: 出力: |
パス grok パターン
Grok パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
UNIXPATH | クエリパラメータを含む可能性のある URL パスに一致します。 | 20 |
入力: パターン: 出力: |
ウィンパス | Windows ファイルパスと一致します。 | 5 |
入力: パターン: 出力: |
PATH | URL または Windows ファイルパスのいずれかに一致 | 5 |
入力: パターン: 出力: |
TTY | ターミナルと擬似ターミナルの Unix デバイスパスに一致します。 | 20 |
入力: パターン: 出力: |
URIPROTO | 文字に一致し、オプションでプラス (+) 文字と追加文字、またはプラス (+) 文字が続きます | 20 |
入力: パターン: 出力: |
URIPATH | URI のパスコンポーネントに一致 | 20 |
入力: パターン: 出力: |
URIPARAM | URL クエリパラメータに一致 | 5 |
入力: パターン: 出力: |
URIPATHPARAM | オプションでクエリパラメータが続く URI パスに一致 | 5 |
入力: パターン: 出力: |
[URI] | 完全な URI に一致 | 5 |
入力: パターン: 出力: |
日付と時刻の Grok パターン
Grok パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
MONTH | 完全な英月名または省略された英月名を単語全体で一致させます | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
月 | 1~12 の月番号に一致し、1 桁の月ではオプションで先頭に 0 が付きます。 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
MONTHNUM2 | 01 から 12 までの 2 桁の月番号と一致します。 | 20 |
入力: パターン: 出力: |
月曜日 | 1 から 31 までの日付に一致し、オプションで先頭に 0 が付きます。 | 20 |
入力: パターン: 出力: |
YEAR | 年を 2 桁または 4 桁で一致 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
DAY | 完全な日付名または省略された日付名と一致します。 | 20 |
入力: パターン: 出力: |
HOUR | 24 時間形式の時間を、オプションの先頭にゼロ (0)0~23 を付けて一致させます。 | 20 |
入力: パターン: 出力: |
MINUTE | 分 (00~59) に一致します。 | 20 |
入力: パターン: 出力: |
SECOND | 秒 (0)0~60 を表す数値に一致し、オプションで小数点またはコロン、小数分で 1 桁以上が続きます | 20 |
入力: パターン: 出力: 入力: パターン: 出力: 入力: パターン: 出力: |
TIME | (H)H:mm:(s) 形式の時間形式を時間、分、秒と一致させます。秒にはうるう秒 (0)0~60 が含まれます。 | 20 |
入力: パターン: 出力: |
DATE_US | (M)M/(d)d/(yy)yy または (M)M-(d)d-(yy)yy の形式の日付と一致します。 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
DATE_EU | (d)d/(M)M/(yy)yy、(d)d-(M)M-(yy)yy、または (d)d.(M)M.(yy)yy。 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
ISO8601_TIMEZONE | UTC オフセット 'Z' またはタイムゾーンオフセットを、[+-](H)H(:)mm 形式のオプションのコロンと一致させます。 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: 入力: パターン: 出力: |
ISO8601_SECOND | 秒 (0)0~60 を表す数値に一致し、オプションで小数点またはコロン、小数秒の 1 桁以上が続きます | 20 |
入力: パターン: 出力: |
TIMESTAMP_ISO8601 | ISO8601 日時形式 (yy)yy-(M)M-(d)dT(H)H:mm:((s)s)(Z|[+-](H)H:mm) をオプションの秒とタイムゾーンと一致させます。 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: 入力: パターン: 出力: |
DATE | %{DATE_US} を使用した米国形式または %{DATE_EU} を使用した欧州形式の日付のいずれかに一致 | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
DATESTAMP | %{DATE} の後に %{TIME} パターンが続き、スペースまたはハイフンで区切られます。 | 20 |
入力: パターン: 出力: |
TZ | 一般的なタイムゾーンの略語 (PST、PDT、MST、MDT、CST CDT、EST、EDT、UTC) と一致します。 | 20 |
入力: パターン: 出力: |
DATESTAMP_RFC822 | 日付と時刻を次の形式で一致: Day MonthName (D)D (YY)YY (H)H:mm:(s)s タイムゾーン | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
DATESTAMP_RFC2822 | RFC2822 日時形式と一致します: Day、(d)d MonthName (yy)yy (H)H:mm:(s)s Z|[+-](H)H:mm | 20 |
入力: パターン: 出力: 入力: パターン: 出力: |
DATESTAMP_OTHER | 日付と時刻を次の形式で一致: Day MonthName (d)d (H)H:mm:(s)s Timezone (yy)yy | 20 |
入力: パターン: 出力: |
DATESTAMP_EVENTLOG | 区切り文字なしのコンパクトな日時形式に一致: (yy)yyMM(d)d(H)Hmm(s)s | 20 |
入力: パターン: 出力: |
ログ grok パターン
Grok パターン | 説明 | 最大パターン制限 | 例 |
---|---|---|---|
ログレベル | 、Alert/ALERT 、、、、、、、、、 などTrace/TRACE Debug/DEBUG Notice/NOTICE Info/INFO Warn/Warning/WARN/WARNING Err/Error/ERR/ERROR Crit/Critical/CRIT/CRITICAL Fatal/FATAL Severe/SEVERE 、さまざまな大文字と小文字の標準ログレベルに一致します。 Emerg/Emergency/EMERG/EMERGENCY |
20 |
入力: パターン: 出力: |
HTTPDATE | ログファイルでよく使用される日付と時刻の形式と一致します。形式: (d)d/MonthName/(yy)yy:(H)H:mm:(s)s Timezone MonthName: 完全または省略された英語の月名 (例: "Jan" または "January") Timezone: Matches %{INT} grok pattern | 20 |
入力: パターン: 出力: |
SYSLOGTIMESTAMP | 日付形式を MonthName (d)d (H)H:mm:(s)s MonthName と一致: 完全なまたは省略された英語の月名と一致 (例: "Jan" または "January") | 20 |
入力: パターン: 出力: |
プログラム | 文字、数字、ドット、アンダースコア、スラッシュ、パーセント記号、ハイフンの文字列で構成されるプログラム名と一致します。 | 20 |
入力: パターン: 出力: |
SYSLOGPROG | PROG grok パターンに一致し、オプションでプロセス ID が角括弧で囲まれます。 | 20 |
入力: パターン: 出力: |
SYSLOGHOST | %{HOST} または %{IP} パターンのいずれかに一致 | 5 |
入力: パターン: 出力: |
SYSLOGFACILITY | 10 進形式の syslog 優先度に一致します。値は角括弧 (<>) で囲む必要があります。 | 20 |
入力: パターン: 出力: |
一般的なログ grok パターン
事前定義されたカスタム grok パターンを使用して、Apache、NGINX、Syslog Protocol (RFC 5424) のログ形式を一致させることができます。これらの特定のパターンを使用する場合、それらは一致する設定の最初のパターンである必要があり、他のパターンの前に配置することはできません。また、1 つの DATA でのみ追跡できます。GREEDYDATA または GREEDYDATA_MULTILINE パターン。
Grok パターン | 説明 | 最大パターン制限 |
---|---|---|
APACHE_ACCESS_LOG |
Apache アクセスログと一致 |
1 |
NGINX_ACCESS_LOG |
NGINX アクセスログと一致 |
1 |
SYSLOG5424 |
Syslog プロトコル (RFC 5424) ログと一致 |
1 |
以下に、これらの一般的なログ形式パターンを使用するための有効および無効な例を示します。
"%{NGINX_ACCESS_LOG} %{DATA}" // Valid "%{SYSLOG5424}%{DATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{GREEDYDATA:logMsg}" // Valid "%{APACHE_ACCESS_LOG} %{SYSLOG5424}" // Invalid (multiple common log patterns used) "%{NGINX_ACCESS_LOG} %{NUMBER:num}" // Invalid (Only GREEDYDATA and DATA patterns are supported with common log patterns) "%{GREEDYDATA:logMsg} %{SYSLOG5424}" // Invalid (GREEDYDATA and DATA patterns are supported only after common log patterns)
一般的なログ形式の例
Apache ログの例
サンプルログ:
127.0.0.1 - - [03/Aug/2023:12:34:56 +0000] "GET /page.html HTTP/1.1" 200 1234
トランスフォーマー:
[ { "grok": { "match": "%{APACHE_ACCESS_LOG}" } } ]
出力:
{ "request": "/page.html", "http_method": "GET", "status_code": 200, "http_version": "1.1", "response_size": 1234, "remote_host": "127.0.0.1", "timestamp": "2023-08-03T12:34:56Z" }
NGINX ログの例
サンプルログ:
192.168.1.100 - Foo [03/Aug/2023:12:34:56 +0000] "GET /account/login.html HTTP/1.1" 200 42 "https://www.amazon.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
トランスフォーマー:
[ { "grok": { "match": "%{NGINX_ACCESS_LOG}" } } ]
出力:
{ "request": "/account/login.html", "referrer": "https://www.amazon.com/", "agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36", "http_method": "GET", "status_code": 200, "auth_user": "Foo", "http_version": "1.1", "response_size": 42, "remote_host": "192.168.1.100", "timestamp": "2023-08-03T12:34:56Z" }
Syslog Protocol (RFC 5424) ログの例
サンプルログ:
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com evntslog - ID47 [exampleSDID@32473 iut="3" eventSource= "Application" eventID="1011"][examplePriority@32473 class="high"]
トランスフォーマー:
[ { "grok": { "match": "%{SYSLOG5424}" } } ]
出力:
{ "pri": 165, "version": 1, "timestamp": "2003-10-11T22:14:15.003Z", "hostname": "mymachine.example.com", "app": "evntslog", "msg_id": "ID47", "structured_data": "exampleSDID@32473 iut=\"3\" eventSource= \"Application\" eventID=\"1011\"", "message": "[examplePriority@32473 class=\"high\"]" }
parseToOCSF
parseToOCSF プロセッサは、ログを Open Cybersecurity Schema Framework (OCSF)
元の@message
コンテンツは変更されず、新しいキーがメッセージに追加されます。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
eventSource |
このプロセッサで変換されるログイベントを生成するサービスまたはプロセス。有効な値は以下のとおりです。
|
はい |
- |
- |
ocsfVersion |
変換されたログイベントに使用する OCSF スキーマのバージョン。現在、サポートされている値は のみです。 V1.1 |
はい |
|
- |
例
次の の例では、Amazon VPC フローログを OCSF 形式に変換します。
[ "parseToOCSF": { eventSource: "VPCFlow", version: "V1.1" } ]
csv
csv プロセッサは、ログイベントからカンマ区切り値 (CSV) を列に解析します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
ソース |
解析されるログイベントの フィールドへのパス |
いいえ |
|
最大長: 128 ネストされたキーの最大深度: 3 |
delimiter |
元のカンマ区切り値ログイベントの各列を区切るために使用される文字 |
いいえ |
|
最大長: 1 |
quoteCharacter |
データの単一の列のテキスト修飾子として使用される文字 |
いいえ |
|
最大長: 1 |
columns |
変換されたログイベントの列に使用する名前のリスト。 |
いいえ |
|
最大 CSV 列: 100 最大長: 128 ネストされたキーの最大深度: 3 |
例
取り込まれたログイベントの一部は次のようになります。
'Akua Mansa',28,'New York, USA'
csv プロセッサのみを使用するとします。
[ "csv": { "delimiter": ",", "quoteCharacter": ":"" } ]
変換されたログイベントは次のとおりです。
{ "column_1": "Akua Mansa", "column_2": "28", "column_3": "New York: USA" }
parseKeyValue
parseKeyValue プロセッサを使用して、指定されたフィールドをキーと値のペアに解析します。以下のオプションを使用して、フィールド情報を解析するようにプロセッサをカスタマイズできます。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
ソース |
解析されるログイベントの フィールドへのパス |
いいえ |
|
最大長: 128 ネストされたキーの最大深度: 3 |
destination |
抽出されたキーと値のペアを配置する送信先フィールド |
いいえ |
最大長: 128 |
|
fieldDelimiter |
元のログイベントのキーと値のペア間で使用されるフィールド区切り文字文字列 |
いいえ |
|
最大長: 128 |
keyValueDelimiter |
変換されたログイベントの各ペアのキーと値の間に使用する区切り文字文字列 |
いいえ |
|
最大長: 128 |
nonMatchValue |
キーと値のペアが正常に分割されない場合に、結果の値フィールドに挿入する値。 |
いいえ |
最大長: 128 |
|
keyPrefix |
変換されたすべてのキーにプレフィックスを追加する場合は、ここで指定します。 |
いいえ |
最大長: 128 |
|
overwriteIfExists |
送信先キーが既に存在する場合に値を上書きするかどうか |
いいえ |
|
例
次のログイベントの例を取ります。
key1:value1!key2:value2!key3:value3!key4
次のプロセッサ設定を使用しているとします。
[ { "parseKeyValue": { "destination": "new_key", "fieldDelimiter": "!", "keyValueDelimiter": ":", "nonMatchValue": "defaultValue", "keyPrefix": "parsed_" } } ]
変換されたログイベントは次のとおりです。
{ "new_key": { "parsed_key1": "value1", "parsed_key2": "value2", "parsed_key3": "value3", "parsed_key4": "defaultValue" } }
AWS 販売ログ用の組み込みプロセッサ
parseWAF
このプロセッサを使用して AWS WAF 、提供されたログを解析httpRequest.headers
し、 の内容を取得し、対応する値を使用して各ヘッダー名から JSON キーを作成します。また、 でも同じことを行いますlabels
。これらの変換により、 AWS WAF ログのクエリが大幅に簡単になります。 AWS WAF ログ形式の詳細については、「ウェブ ACL トラフィックのログ例」を参照してください。
このプロセッサは、 を入力@message
としてのみ受け入れます。
重要
このプロセッサを使用する場合は、トランスフォーマーの最初のプロセッサである必要があります。
例
次のログイベントの例を取ります。
{ "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [], "httpRequest": { "clientIp": "1.1.1.1", "country": "AU", "headers": [ { "name": "Host", "value": "localhost:1989" }, { "name": "User-Agent", "value": "curl/7.61.1" }, { "name": "Accept", "value": "*/*" }, { "name": "x-stm-test", "value": "10 AND 1=1" } ], "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": [{ "name": "value" }] }
プロセッサ設定は次のとおりです。
[ { "parseWAF": {} } ]
変換されたログイベントは次のとおりです。
{ "httpRequest": { "headers": { "Host": "localhost:1989", "User-Agent": "curl/7.61.1", "Accept": "*/*", "x-stm-test": "10 AND 1=1" }, "clientIp": "1.1.1.1", "country": "AU", "uri": "/myUri", "args": "", "httpVersion": "HTTP/1.1", "httpMethod": "GET", "requestId": "rid" }, "labels": { "name": "value" }, "timestamp": 1576280412771, "formatVersion": 1, "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE", "terminatingRuleId": "STMTest_SQLi_XSS", "terminatingRuleType": "REGULAR", "action": "BLOCK", "terminatingRuleMatchDetails": [ { "conditionType": "SQL_INJECTION", "sensitivityLevel": "HIGH", "location": "HEADER", "matchedData": ["10", "AND", "1"] } ], "httpSourceName": "-", "httpSourceId": "-", "ruleGroupList": [], "rateBasedRuleList": [], "nonTerminatingMatchingRules": [] }
parsePostgres
このプロセッサを使用して、 Amazon RDS for PostgreSQL 提供されたログを解析し、フィールドを抽出して、JSON 形式に変換します。RDS for PostgreSQL ログ形式の詳細については、「RDS for PostgreSQL データベースログファイル」を参照してください。
このプロセッサは、 を入力@message
としてのみ受け入れます。
重要
このプロセッサを使用する場合は、トランスフォーマーの最初のプロセッサである必要があります。
例
次のログイベントの例を取ります。
2019-03-10 03:54:59 UTC:10.0.0.123(52834):postgres@logtestdb:[20175]:ERROR: column "wrong_column_name" does not exist at character 8
プロセッサ設定は次のとおりです。
[ { "parsePostgres": {} } ]
変換されたログイベントは次のとおりです。
{ "logTime": "2019-03-10 03:54:59 UTC", "srcIp": "10.0.0.123(52834)", "userName": "postgres", "dbName": "logtestdb", "processId": "20175", "logLevel": "ERROR" }
parseCloudfront
このプロセッサを使用して、 Amazon CloudFront 提供されたログを解析し、フィールドを抽出して、JSON 形式に変換します。エンコードされたフィールド値はデコードされます。整数と倍精度の値は、そのように扱われます。 Amazon CloudFront ログ形式の詳細については、「標準ログの設定と使用 (アクセスログ)」を参照してください。
このプロセッサは、 を入力@message
としてのみ受け入れます。
重要
このプロセッサを使用する場合は、トランスフォーマーの最初のプロセッサである必要があります。
例
次のログイベントの例を取ります。
2019-12-04 21:02:31 LAX1 392 192.0.2.24 GET d111111abcdef8.cloudfront.net /index.html 200 - Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/78.0.3904.108%20Safari/537.36 - - Hit SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ== d111111abcdef8.cloudfront.net https 23 0.001 - TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 Hit HTTP/2.0 - - 11040 0.001 Hit text/html 78 - -
プロセッサ設定は次のとおりです。
[ { "parseCloudfront": {} } ]
変換されたログイベントは次のとおりです。
{ "date": "2019-12-04", "time": "21:02:31", "x-edge-location": "LAX1", "sc-bytes": 392, "c-ip": "192.0.2.24", "cs-method": "GET", "cs(Host)": "d111111abcdef8.cloudfront.net", "cs-uri-stem": "/index.html", "sc-status": 200, "cs(Referer)": "-", "cs(User-Agent)": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36", "cs-uri-query": "-", "cs(Cookie)": "-", "x-edge-result-type": "Hit", "x-edge-request-id": "SOX4xwn4XV6Q4rgb7XiVGOHms_BGlTAC4KyHmureZmBNrjGdRLiNIQ==", "x-host-header": "d111111abcdef8.cloudfront.net", "cs-protocol": "https", "cs-bytes": 23, "time-taken": 0.001, "x-forwarded-for": "-", "ssl-protocol": "TLSv1.2", "ssl-cipher": "ECDHE-RSA-AES128-GCM-SHA256", "x-edge-response-result-type": "Hit", "cs-protocol-version": "HTTP/2.0", "fle-status": "-", "fle-encrypted-fields": "-", "c-port": 11040, "time-to-first-byte": 0.001, "x-edge-detailed-result-type": "Hit", "sc-content-type": "text/html", "sc-content-len": 78, "sc-range-start": "-", "sc-range-end": "-" }
parseRoute53
このプロセッサを使用して、 Amazon Route 53 Public Data Plane 提供されたログを解析し、フィールドを抽出して、JSON 形式に変換します。エンコードされたフィールド値はデコードされます。このプロセッサは Amazon Route 53 Resolver ログをサポートしていません。
このプロセッサは、 を入力@message
としてのみ受け入れます。
重要
このプロセッサを使用する場合は、トランスフォーマーの最初のプロセッサである必要があります。
例
次のログイベントの例を取ります。
1.0 2017-12-13T08:15:50.235Z Z123412341234 example.com AAAA NOERROR TCP IAD12 192.0.2.0 198.51.100.0/24
プロセッサ設定は次のとおりです。
[ { "parseRoute53": {} } ]
変換されたログイベントは次のとおりです。
{ "version": 1.0, "queryTimestamp": "2017-12-13T08:15:50.235Z", "hostZoneId": "Z123412341234", "queryName": "example.com", "queryType": "AAAA", "responseCode": "NOERROR", "protocol": "TCP", "edgeLocation": "IAD12", "resolverIp": "192.0.2.0", "ednsClientSubnet": "198.51.100.0/24" }
parseVPC
このプロセッサを使用して、Amazon VPC 提供のログを解析し、フィールドを抽出して、JSON 形式に変換します。エンコードされたフィールド値はデコードされます。
このプロセッサは、 を入力@message
としてのみ受け入れます。
重要
このプロセッサを使用する場合は、トランスフォーマーの最初のプロセッサである必要があります。
例
次のログイベントの例を取ります。
2 123456789010 eni-abc123de 192.0.2.0 192.0.2.24 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK
プロセッサ設定は次のとおりです。
[ { "parseVPC": {} } ]
変換されたログイベントは次のとおりです。
{ "version": 2, "accountId": "123456789010", "interfaceId": "eni-abc123de", "srcAddr": "192.0.2.0", "dstAddr": "192.0.2.24", "srcPort": 20641, "dstPort": 22, "protocol": 6, "packets": 20, "bytes": 4249, "start": 1418530010, "end": 1418530070, "action": "ACCEPT", "logStatus": "OK" }
文字列ミューテーションプロセッサ
lowerCaseString
lowerCaseString
プロセッサは文字列を小文字のバージョンに変換します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
withKeys |
小文字に変換するキーのリスト |
はい |
最大エントリ: 10 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "INNER_VALUE" } }
トランスフォーマーの設定は次のようになります。 lowerCaseString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "lowerCaseString": { "withKeys":["outer_key.inner_key"] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": "inner_value" } }
upperCaseString
upperCaseString
プロセッサは文字列を大文字バージョンに変換します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
withKeys |
大文字に変換するキーのリスト |
はい |
最大エントリ: 10 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "inner_value" } }
トランスフォーマーの設定は次のようになります。 upperCaseString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "upperCaseString": { "withKeys":["outer_key.inner_key"] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": "INNER_VALUE" } }
splitString
splitString
プロセッサは、区切り文字を使用してフィールドを配列に分割する文字列ミューテーションプロセッサの一種です。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列の各項目には、 フィールドsource と delimiter フィールドが含まれている必要があります。 |
はい |
最大エントリ: 10 |
|
ソース |
分割するフィールド値のキー |
はい |
最大長: 128 |
|
delimiter |
フィールド値を分割する区切り文字文字列 |
はい |
最大長: 128 |
例 1
次のログイベントの例を取ります。
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
トランスフォーマーの設定は次のようになります。 splitString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": "_" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": [ "inner", "value" ] } }
例 2
文字列を分割する区切り文字は複数文字にすることができます。
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "item1, item2, item3" } }
トランスフォーマーの設定は次のとおりです。
[ { "parseJSON": {} }, { "splitString": { "entries": [ { "source": "outer_key.inner_key", "delimiter": ", " } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": [ "item1", "item2", "item3" ] } }
substituteString
substituteString
プロセッサは文字列ミューテーションプロセッサの一種で、キーの値を正規表現と照合し、すべての一致を置換文字列に置き換えます。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列の各項目には、source 、from 、および to フィールドが含まれている必要があります。 |
はい |
最大エントリ: 10 |
|
ソース |
変更するフィールドのキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
送信元 |
置き換える正規表現文字列。[ や ] などの特殊文字は、二重引用符を使用する場合は \\ を使用してエスケープし、一重引用符を使用する場合は \ を使用してエスケープする必要があります AWS Management Console。詳細については、Oracle ウェブサイトの「Class Pattern パターンを にラップ |
はい |
最大長: 128 |
|
次のように変更します。 |
キャプチャグループへのfrom バックリファレンスの一致ごとに置き換えられる文字列を使用できます。などの番号付きグループには $n の形式$1 を使用し、$ などの名前付きグループ${group_name} には を使用します{my_group} 。> |
はい |
最大長: 128 バックリファレンスの最大数: 10 重複するバックリファレンスの最大数: 2 |
例 1
次のログイベントの例を取ります。
{ "outer_key": { "inner_key1": "[]", "inner_key2": "123-345-567", "inner_key3": "A cat takes a catnap." } }
トランスフォーマーの設定は次のようになります。 substituteString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "\\[\\]", "to": "value1" }, { "source": "outer_key.inner_key2", "from": "[0-9]{3}-[0-9]{3}-[0-9]{3}", "to": "xxx-xxx-xxx" }, { "source": "outer_key.inner_key3", "from": "cat", "to": "dog" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key1": "value1", "inner_key2": "xxx-xxx-xxx", "inner_key3": "A dog takes a dognap." } }
例 2
次のログイベントの例を取ります。
{ "outer_key": { "inner_key1": "Tom, Dick, and Harry", "inner_key2": "arn:aws:sts::123456789012:assumed-role/MyImportantRole/MySession" } }
トランスフォーマーの設定は次のようになります。 substituteString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "substituteString": { "entries": [ { "source": "outer_key.inner_key1", "from": "(\w+), (\w+), and (\w+)", "to": "$1 and $3" }, { "source": "outer_key.inner_key2", "from": "^arn:aws:sts::(?P<account_id>\\d{12}):assumed-role/(?P<role_name>[\\w+=,.@-]+)/(?P<role_session_name>[\\w+=,.@-]+)$", "to": "${account_id}:${role_name}:${role_session_name}" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key1": "Tom and Harry", "inner_key2": "123456789012:MyImportantRole:MySession" } }
trimString
trimString
プロセッサは、キーの先頭と末尾から空白を削除します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
withKeys |
トリミングするキーのリスト |
はい |
最大エントリ: 10 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": " inner_value " } }
トランスフォーマーの設定は次のようになります。 trimString
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "trimString": { "withKeys":["outer_key.inner_key"] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": "inner_value" } }
JSON ミューテーションプロセッサ
addKeys
addKeys
プロセッサを使用して、ログイベントに新しいキーと値のペアを追加します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列内の各項目にはkey 、、value 、および overwriteIfExists フィールドを含めることができます。 |
はい |
最大エントリ: 5 |
|
キー |
追加する新しいエントリのキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
値 |
追加する新しいエントリの値 |
はい |
最大長: 256 |
|
overwriteIfExists |
これを に設定するとtrue 、イベントにkey 既に存在する場合、既存の値は上書きされます。デフォルト値は false です。 |
いいえ |
false |
無制限 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "inner_value" } }
トランスフォーマーの設定は次のようになります。 addKeys
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "addKeys": { "entries": [ { "source": "outer_key.new_key", "value": "new_value" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": "inner_value", "new_key": "new_value" } }
deleteKeys
deleteKeys
プロセッサを使用して、ログイベントからフィールドを削除します。これらのフィールドには、キーと値のペアを含めることができます。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
withKeys |
削除するキーのリスト。 |
はい |
無制限 |
最大エントリ: 5 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "inner_value" } }
トランスフォーマーの設定は次のようになります。 deleteKeys
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "deleteKeys": { "withKeys":["outer_key.inner_key"] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": {} }
moveKeys
moveKeys
プロセッサを使用して、あるフィールドから別のフィールドにキーを移動します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列内の各項目にはsource 、、target 、および overwriteIfExists フィールドを含めることができます。 |
はい |
最大エントリ: 5 |
|
ソース |
移動するキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
target |
移動先のキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
overwriteIfExists |
これを に設定するとtrue 、イベントにkey 既に存在する場合、既存の値は上書きされます。デフォルト値は false です。 |
いいえ |
false |
無制限 |
例
次のログイベントの例を取ります。
{ "outer_key1": { "inner_key1": "inner_value1" }, "outer_key2": { "inner_key2": "inner_value2" } }
トランスフォーマーの設定は次のようになります。 moveKeys
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "moveKeys": { "entries": [ { "source": "outer_key1.inner_key1", "target": "outer_key2" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key1": {}, "outer_key2": { "inner_key2": "inner_value2", "inner_key1": "inner_value1" } }
renameKeys
renameKeys
プロセッサを使用して、ログイベントのキーの名前を変更します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列内の各項目にはkey 、、target 、および overwriteIfExists フィールドを含めることができます。 |
はい |
無制限 |
最大エントリ: 5 |
キー |
名前を変更するキー |
はい |
無制限 |
最大長: 128 |
target |
新しいキー名 |
はい |
無制限 |
最大長: 128 ネストされたキーの最大深度: 3 |
overwriteIfExists |
これを に設定するとtrue 、イベントにkey 既に存在する場合、既存の値は上書きされます。デフォルト値は false です。 |
いいえ |
false |
無制限 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "inner_value" } }
トランスフォーマーの設定は次のようになります。 renameKeys
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "renameKeys": { "entries": [ { "key": "outer_key", "target": "new_key" } ] } } ]
変換されたログイベントは次のとおりです。
{ "new_key": { "inner_key": "inner_value" } }
copyValue
copyValue
プロセッサを使用して、ログイベント内の値をコピーします。このプロセッサを使用して、ログイベントにメタデータを追加することもできます。ログイベントには、、@logGroupName
、@logGroupStream
、 @accountId
のメタデータキーの値をコピーします@regionName
。これは次の例に示されています。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列内の各項目にはsource 、、target 、および overwriteIfExists フィールドを含めることができます。 |
はい |
最大エントリ: 5 |
|
ソース |
コピーするキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
target |
値をコピーするキー |
はい |
無制限 |
最大長: 128 ネストされたキーの最大深度: 3 |
overwriteIfExists |
これを に設定するとtrue 、イベントにkey 既に存在する場合、既存の値は上書きされます。デフォルト値は false です。 |
いいえ |
false |
無制限 |
例
次のログイベントの例を取ります。
{ "outer_key": { "inner_key": "inner_value" } }
トランスフォーマーの設定は次のようになります。 copyValue
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "copyValue": { "entries": [ { "source": "outer_key.new_key", "target": "new_key" }, { "source": "@logGroupName", "target": "log_group_name" }, { "source": "@logGroupStream", "target": "log_group_stream" }, { "source": "@accountId", "target": "account_id" }, { "source": "@regionName", "target": "region_name" } ] } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": { "inner_key": "inner_value" }, "new_key": "inner_value", "log_group_name": "myLogGroupName", "log_group_stream": "myLogStreamName", "account_id": "012345678912", "region_name": "us-east-1" }
listToMap
listToMap
プロセッサは、キーフィールドを含むオブジェクトのリストを取得し、ターゲットキーのマップに変換します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
ソース |
マップに変換されるオブジェクトのリストを含む ProcessingEvent のキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
キー |
生成されたマップでキーとして抽出されるフィールドのキー |
はい |
最大長: 128 |
|
valueKey |
これを指定すると、このパラメータで指定した値がsource オブジェクトから抽出され、生成されたマップの値に入れられます。それ以外の場合、ソースリスト内の元のオブジェクトは、生成されたマップの値に配置されます。 |
いいえ |
最大長: 128 |
|
target |
生成されたマップを保持するフィールドのキー |
いいえ |
ルートノード |
最大長: 128 ネストされたキーの最大深度: 3 |
flatten |
リストを単一の項目にフラット化するか、生成されたマップの値をリストにするかを示すブール値。 デフォルトでは、一致するキーの値は配列で表されます。 |
いいえ |
false |
|
flattenedElement |
flatten を に設定する場合はtrue 、 flattenedElement を使用して、保持last する 要素first または を指定します。 |
|
値は first または のみです last |
例
次のログイベントの例を取ります。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ] }
ユースケース 1 のトランスフォーマー: は flatten
です false
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": false } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": [ "val-a" ], "b": [ "val-b1", "val-b2" ], "c": [ "val-c" ] }
ユースケース 2 のトランスフォーマー: flatten
は true
で、 flattenedElement
は です first
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "first" } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b1", "c": "val-c" }
ユースケース 3 のトランスフォーマー: flatten
は true
で、 flattenedElement
は です last
[ { "parseJSON": {} }, { "listToMap": { "source": "outer_key" "key": "inner_key", "valueKey": "inner_value", "flatten": true, "flattenedElement": "last" } } ]
変換されたログイベントは次のとおりです。
{ "outer_key": [ { "inner_key": "a", "inner_value": "val-a" }, { "inner_key": "b", "inner_value": "val-b1" }, { "inner_key": "b", "inner_value": "val-b2" }, { "inner_key": "c", "inner_value": "val-c" } ], "a": "val-a", "b": "val-b2", "c": "val-c" }
データ型コンバータプロセッサ
typeConverter
typeConverter
プロセッサを使用して、指定されたキーに関連付けられた値タイプを指定されたタイプに変換します。これは、指定されたフィールドのタイプを変更するキャストプロセッサです。値は、、integer
、 double
string
のいずれかのデータ型に変換できますboolean
。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
エントリ |
エントリの配列。配列の各項目には、 フィールドkey と type フィールドが含まれている必要があります。 |
はい |
最大エントリ: 10 |
|
キー |
別のタイプに変換される値を持つキー |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
type |
変換するタイプ。有効な値は、integer 、double 、string 、boolean です。 |
はい |
例
次のログイベントの例を取ります。
{ "name": "value", "status": "200" }
トランスフォーマーの設定は次のようになります。 typeConverter
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "typeConverter": { "entries": [ { "key": "status", "type": "integer" } ] } } ]
変換されたログイベントは次のとおりです。
{ "name": "value", "status": 200 }
datetimeConverter
datetimeConverter
プロセッサを使用して、日時文字列を指定した形式に変換します。
フィールド | 説明 | 必須? | デフォルト | 制限 |
---|---|---|---|---|
ソース |
日付変換を適用するキー。 |
はい |
最大エントリ: 10 |
|
matchPatterns |
source フィールドに一致するパターンのリスト |
はい |
最大エントリ: 5 |
|
target |
結果を保存する JSON フィールド。 |
はい |
最大長: 128 ネストされたキーの最大深度: 3 |
|
targetFormat |
ターゲットフィールドで変換されたデータに使用する日時形式。 |
いいえ |
|
最大長: 64 |
sourceTimezone |
ソースフィールドのタイムゾーン。 可能な値のリストについては、「Java でサポートされているゾーン ID とオフセット |
いいえ |
UTC |
最小長: 1 |
targetTimezone |
ターゲットフィールドのタイムゾーン。 可能な値のリストについては、「Java でサポートされているゾーン ID とオフセット |
いいえ |
UTC |
最小長: 1 |
サイト |
ソースフィールドのロケール。 可能な値のリストについては、「例を含む Java のロケール getAvailableLocales() メソッド |
はい |
最小長: 1 |
例
次のログイベントの例を取ります。
{"german_datetime": "Samstag 05. Dezember 1998 11:00:00"}
トランスフォーマーの設定は次のようになります。 dateTimeConverter
で を使用しますparseJSON
。
[ { "parseJSON": {} }, { "dateTimeConverter": { "source": "german_datetime", "target": "target_1", "locale": "de", "matchPatterns": ["EEEE dd. MMMM yyyy HH:mm:ss"], "sourceTimezone": "Europe/Berlin", "targetTimezone": "America/New_York", "targetFormat": "yyyy-MM-dd'T'HH:mm:ss z" } } ]
変換されたログイベントは次のとおりです。
{ "german_datetime": "Samstag 05. Dezember 1998 11:00:00", "target_1": "1998-12-05T17:00:00 MEZ" }