New Relic では、一般的なログフォーマットを内蔵のルールに従って解析することができるため、独自の解析ルールを作成する必要がありません。ここでは、ログの解析ルール、その Grok パターン、そしてどのフィールドが解析されるかを紹介します。
組み込みのログ解析を有効にするには、 logtype
attribute を追加するためのドキュメントを参照してください。- プログラムで解析ルールを管理するには、GraphQL形式のAPIであるNerdGraphを api.newrelic.com/graphiql でご利用いただけます。詳細については、 NerdGraph チュートリアル を参照して、解析ルールの作成、照会、削除を行ってください。
ソース: logtype = 'apache'
Grok:
%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}
結果。
clientip
:クライアントのIPアドレスです。動詞
: The HTTP verbident
: リクエストを行うクライアントのユーザーIDレスポンス
: レスポンスの HTTP ステータスコードリクエスト
: 行われているURIとリクエストhttpversion
: リクエストの HTTP バージョンです。rawrequest
: データが投稿された場合の生のHTTPリクエストbytes
: 送信されたバイト数referrer
: HTTP のリファラーです。エージェント
: クライアントのユーザーエージェント
ソース: logtype = 'alb'
Grok:
^%{NOTSPACE:type} %{TIMESTAMP_ISO8601:time} %{NOTSPACE:elb} %{NOTSPACE:client_ip}:%{NOTSPACE:client_port} ((%{NOTSPACE:target_ip}:%{NOTSPACE:target_port})|-) %{NOTSPACE:request_processing_time} %{NOTSPACE:target_processing_time} %{NOTSPACE:response_processing_time} %{NOTSPACE:elb_status_code} %{NOTSPACE:target_status_code} %{NOTSPACE:received_bytes} %{NOTSPACE:sent_bytes} "%{DATA:request}" "%{DATA:user_agent}" %{NOTSPACE:ssl_cipher} %{NOTSPACE:ssl_protocol} %{NOTSPACE:target_group_arn} "%{DATA:trace_id}" "%{NOTSPACE:domain_name}" "%{NOTSPACE:chosen_cert_arn}" %{NOTSPACE:matched_rule_priority} %{TIMESTAMP_ISO8601:request_creation_time} "%{NOTSPACE:actions_executed}" "%{NOTSPACE:redirect_url}" "%{NOTSPACE:error_reason}" (?:"|)%{DATA:target_port_list}(?:"|) (?:"|)%{DATA:target_status_code_list}(?:"|) "%{NOTSPACE:classification}" "%{NOTSPACE:classification_reason}"
結果。
フィールド | 定義 |
---|---|
| リクエストまたはコネクションのタイプです。可能な値は
|
| ロードバランサーのリソース ID です。アクセスログを解析する場合、リソースIDにはフォワードスラッシュ( |
| リクエストしたクライアントのIPアドレスとポート |
| このリクエストを処理したターゲットのIPアドレスとポート。
|
| ロードバランサーがリクエストを受信してからターゲットに送信するまでの経過時間の合計(秒単位、ミリ秒の精度)。
|
| ロードバランサーがターゲットにリクエストを送信してから、ターゲットがレスポンスヘッダーの送信を開始するまでの経過時間の合計(秒単位、ミリ秒の精度)。
|
| ロードバランサーがターゲットからレスポンスヘッダーを受信してから、クライアントへのレスポンスの送信を開始するまでに経過した時間の合計(秒単位、ミリ秒の精度)。ロードバランサーでのキューイング時間と、ロードバランサーからクライアントへの接続取得時間の両方が含まれます。 この値は、ロードバランサーがターゲットにリクエストを送信できない場合、 |
| ロードバランサーからのレスポンスのステータスコード |
| ターゲットからのレスポンスのステータスコードです。この値は、ターゲットとの接続が確立され、ターゲットがレスポンスを送信した場合にのみ記録される。それ以外の場合は、 |
| クライアント(リクエスター)から受け取ったリクエストのサイズをバイト単位で表したもの。HTTPリクエストの場合、これにはヘッダーが含まれます。WebSocketの場合は、接続中のクライアントから受信したバイト数の合計です。 |
| クライアント(リクエスター)に送信されるレスポンスのサイズ(バイト)。HTTP リクエストの場合は、ヘッダーを含みます。WebSocket の場合は、接続中のクライアントに送信されたバイト数の合計です。 |
| リクエストのHTTP動詞 |
| リクエストがターゲットとしていたURI |
| リクエストのHTTPバージョン番号 |
| 二重引用符で囲まれた、リクエストを発信したクライアントを識別するUser-Agent文字列。この文字列は、1つまたは複数の製品識別子、製品/バージョンで構成されます。文字列の長さが8KBを超える場合は、切り捨てられます。 |
| SSL 暗号です。この値は、リスナーがHTTPSリスナーでない場合、 |
| SSLプロトコルです。この値は、リスナーがHTTPSリスナーでない場合、 |
| 対象グループのAmazon Resource Name (ARN) |
|
|
| TLSハンドシェイク中にクライアントから提供されたSNIドメインを二重引用符で囲んだものです。この値は、クライアントがSNIをサポートしていない場合や、ドメインが証明書と一致しない場合には、 |
| クライアントに提示する証明書のARNを二重引用符で囲んだもの。
|
| リクエストにマッチしたルールの優先度の値。
|
| ロードバランサーがクライアントからのリクエストを受信した時間(ISO 8601形式)。 |
| 二重引用符で囲まれた、リクエストの処理時に実行されたアクション。この値は、 |
| HTTP レスポンスの location ヘッダのリダイレクト先の URL を二重引用符で囲んで指定します。リダイレクトアクションが行われなかった場合、この値は |
| 二重引用符で囲まれたエラー理由コード。
|
Source: logtype = 'cloudfront-web'
Grok:
^%{NOTSPACE:date}%{SPACE}%{NOTSPACE:time}%{SPACE}%{NOTSPACE:x_edge_location}%{SPACE}%{NOTSPACE:sc_bytes}%{SPACE}%{NOTSPACE:c_ip}%{SPACE}%{NOTSPACE:cs_method}%{SPACE}%{NOTSPACE:cs_host}%{SPACE}%{NOTSPACE:cs_uri_stem}%{SPACE}%{NOTSPACE:sc_status}%{SPACE}%{NOTSPACE:cs_referer}%{SPACE}%{NOTSPACE:cs_user_agent}%{SPACE}%{NOTSPACE:cs_uri_query}%{SPACE}%{NOTSPACE:cs_Cookie}%{SPACE}%{NOTSPACE:x_edge_result_type}%{SPACE}%{NOTSPACE:x_edge_request_id}%{SPACE}%{NOTSPACE:x_host_header}%{SPACE}%{NOTSPACE:cs_protocol}%{SPACE}%{NOTSPACE:cs_bytes}%{SPACE}%{NOTSPACE:time_taken}%{SPACE}%{NOTSPACE:x_forwarded_for}%{SPACE}%{NOTSPACE:ssl_protocol}%{SPACE}%{NOTSPACE:ssl_cipher}%{SPACE}%{NOTSPACE:x_edge_response_result_type}%{SPACE}%{NOTSPACE:cs_protocol_version}%{SPACE}%{NOTSPACE:fle_status}%{SPACE}%{NOTSPACE:fle_encrypted_fields}%{SPACE}%{NOTSPACE:c_port}%{SPACE}%{NOTSPACE:time_to_first_byte}%{SPACE}%{NOTSPACE:x_edge_detailed_result_type}%{SPACE}%{NOTSPACE:sc_content_type}%{SPACE}%{NOTSPACE:sc_content_len}%{SPACE}%{NOTSPACE:sc_range_start}%{SPACE}%{NOTSPACE:sc_range_end}
結果。
フィールド | 定義 |
---|---|
| リクエストを処理したエッジロケーション。各エッジロケーションは、3文字のコードと任意に割り当てられた番号で識別されます。例えば、 この3文字のコードは、通常、エッジの位置の近くにある空港の国際航空運送協会の空港コードに対応しています。(これらの略語は将来的に変更される可能性があります)。 |
| CloudFrontがリクエストに応答して視聴者に提供した、ヘッダーを含む総バイト数。例: |
| リクエストを行った視聴者のIPアドレス(IPv4またはIPv6形式)。視聴者がHTTPプロキシやロードバランサーを使用してリクエストを送信した場合、 |
| HTTP リクエストメソッド: |
| CloudFront配信のドメイン名です。例えば、 |
| URIのうち、パスとオブジェクトを識別する部分。例えば、 |
| HTTPステータスコード。例えば、 |
| リクエストを発信したドメインの名前です。一般的なリファラーには、検索エンジン、あなたのオブジェクトに直接リンクしている他のウェブサイト、あなた自身のウェブサイトなどがあります。 |
| リクエストのUser-Agentヘッダーの値です。User-Agentヘッダーは、リクエストを送信したデバイスやブラウザの種類、該当する場合はどの検索エンジンかなど、リクエストの送信元を特定するものです。 |
| URIのクエリストリング部分があれば、その部分。URIにクエリ文字列が含まれていない場合、このフィールドの値はハイフン( |
| 名前と値のペアと関連する属性を含む、リクエストのクッキーヘッダ。
|
| 最後のバイトがエッジロケーションを離れた後、CloudFrontがレスポンスをどのように分類するか。場合によっては、CloudFrontがレスポンスを送信する準備ができてから、CloudFrontがレスポンスの送信を終了するまでの間に、結果タイプが変更されることがあります。 |
| リクエストを一意に識別するための暗号化された文字列。レスポンスヘッダーでは、 |
| 視聴者がこのリクエストのHostヘッダーに含めた値です。これは、リクエストのドメイン名です。
|
| 視聴者がリクエストで指定したプロトコル: |
| 視聴者がリクエストに含めたデータのバイト数(ヘッダーを含む)です。WebSocket接続の場合は、その接続でクライアントからサーバーに送信されたバイト数の合計です。 |
| CloudFrontエッジサーバーが視聴者のリクエストを受信してから、CloudFrontがレスポンスの最後のバイトをエッジサーバーの出力キューに書き込むまでの秒数(1000分の1秒単位、例えば0.002)をサーバー上で計測したものです。 視聴者から見ると、ネットワークの遅延やTCPのバッファリングにより、完全なオブジェクトを取得するまでの総時間はこの値よりも長くなります。 |
| 視聴者がHTTPプロキシやロードバランサーを使用してリクエストを送信した場合、フィールド5の このフィールドには、必要に応じてIPv4とIPv6のアドレスが含まれます。視聴者がHTTPプロキシやロードバランサーを使用していない場合、 |
| フィールド17の
|
| フィールド17の
|
| 視聴者にレスポンスを返す直前に、CloudFrontがレスポンスをどのように分類したか。可能な値は以下の通りです。
|
| 視聴者がリクエストで指定したHTTPバージョン。可能な値は以下の通りです。
|
| ディストリビューションにフィールドレベルの暗号化が設定されている場合、このフィールドには、リクエストボディが正常に処理されたかどうかを示すコードが含まれます。 ディストリビューションにフィールドレベルの暗号化が設定されていない場合、値はハイフン( |
| CloudFrontが暗号化してオリジンに転送したフィールドの数です。CloudFrontはデータを暗号化しながら、処理されたリクエストをオリジンにストリーミングするため、 ディストリビューションにフィールドレベルの暗号化が設定されていない場合、 |
| 視聴者からのリクエストのポート番号。 |
| リクエストを受信してからレスポンスの最初のバイトを書き込むまでの秒数で、サーバー上で計測されます。 |
|
|
| レスポンスのHTTP Content-Typeヘッダーの値です。 |
| レスポンスの HTTP Content-Length ヘッダの値です。 |
| レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドにはレンジの開始値が含まれます。 |
| レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドには range end の値が格納されます。 |
ソース: logtype = 'elb'
Grok:
^%{TIMESTAMP_ISO8601:time} %{NOTSPACE:elb} %{NOTSPACE:client_ip}:%{NOTSPACE:client_port} ((%{NOTSPACE:backend_ip}:%{NOTSPACE:backend_port})|-) %{NOTSPACE:request_processing_time} %{NOTSPACE:backend_processing_time} %{NOTSPACE:response_processing_time} %{NOTSPACE:elb_status_code} %{NOTSPACE:backend_status_code} %{NOTSPACE:received_bytes} %{NOTSPACE:sent_bytes} "%{DATA:request}" "%{DATA:user_agent}" %{NOTSPACE:ssl_cipher} %{NOTSPACE:ssl_protocol}
結果。
フィールド | 定義 |
---|---|
| リクエストを処理したエッジロケーション。各エッジロケーションは、3文字のコードと任意に割り当てられた番号で識別されます。例えば、 |
| CloudFrontがリクエストに応答して視聴者に提供した、ヘッダーを含む総バイト数。例: |
| リクエストを行った視聴者のIPアドレス。視聴者がHTTPプロキシやロードバランサーを使用してリクエストを送信した場合、 |
| HTTP リクエストメソッド: |
| CloudFront配信のドメイン名です。例えば、 |
| URIのうち、パスとオブジェクトを識別する部分。例えば、 |
| HTTPステータスコード(例えば、 CloudFrontがレスポンスの送信を開始した後にビューアーが接続を閉じた場合、ログには該当するHTTPステータスコードが含まれます。 |
| リクエストを発信したドメインの名前です。一般的なリファラーには、検索エンジン、あなたのオブジェクトに直接リンクしている他のWebサイト、あなた自身のWebサイトなどがあります。 |
| リクエストのUser-Agentヘッダーの値です。User-Agentヘッダーは、リクエストを送信したデバイスやブラウザの種類、該当する場合はどの検索エンジンかなど、リクエストの送信元を特定するものです。 |
| URIのクエリストリング部分があれば、その部分。URIにクエリ文字列が含まれていない場合、このフィールドの値はハイフン( |
| 名前と値のペアと関連する属性を含む、リクエストのクッキーヘッダ。
|
| 最後のバイトがエッジロケーションを離れた後、CloudFrontがレスポンスをどのように分類するか。場合によっては、CloudFrontがレスポンスを送信する準備ができてから、CloudFrontがレスポンスの送信を終了するまでの間に、結果タイプが変更されることがあります。 |
| リクエストを一意に識別するための暗号化された文字列。レスポンスヘッダーでは、 |
| 視聴者がこのリクエストのHostヘッダーに含めた値です。これは、リクエストのドメイン名です。
|
| 視聴者がリクエストで指定したプロトコル: |
| 視聴者がリクエストに含めたデータのバイト数(ヘッダーを含む)です。WebSocket接続の場合は、その接続でクライアントからサーバーに送信されたバイト数の合計です。 |
| CloudFrontエッジサーバーが視聴者のリクエストを受信してから、CloudFrontがレスポンスの最後のバイトをエッジサーバーの出力キューに書き込むまでの秒数(1000分の1秒単位、例えば0.002)をサーバー上で計測したものです。 視聴者から見ると、ネットワークの遅延やTCPのバッファリングにより、完全なオブジェクトを取得するまでの総時間はこの値よりも長くなります。 |
| 視聴者がHTTPプロキシやロードバランサーを使用してリクエストを送信した場合、フィールド5の 視聴者がHTTPプロキシやロードバランサーを使用していない場合、 |
| フィールド17の
|
| フィールド17の
|
| 視聴者にレスポンスを返す直前に、CloudFrontがレスポンスをどのように分類したか。可能な値は以下の通りです。
|
| 視聴者がリクエストで指定したHTTPバージョン。可能な値は以下の通りです。
|
| ディストリビューションにフィールドレベルの暗号化が設定されている場合、このフィールドには、リクエストボディの処理が成功したかどうかを示すコードが含まれます。ディストリビューションにフィールドレベルの暗号化が設定されていない場合、このフィールドの値はハイフン( CloudFrontがリクエストボディの処理に成功し、指定されたフィールドの値を暗号化し、リクエストをオリジンに転送すると、このフィールドの値は リクエストがフィールドレベルの暗号化制限を超えた場合、 |
| CloudFrontが暗号化してオリジンに転送したフィールドの数です。CloudFrontはデータを暗号化しながら、処理されたリクエストをオリジンにストリーミングするため、 ディストリビューションにフィールドレベルの暗号化が設定されていない場合、 |
| 視聴者からのリクエストのポート番号。 |
| リクエストを受信してからレスポンスの最初のバイトを書き込むまでの秒数で、サーバー上で計測されます。 |
|
|
| レスポンスのHTTP Content-Typeヘッダーの値です。 |
| レスポンスの HTTP Content-Length ヘッダの値です。 |
| レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドにはレンジの開始値が含まれます。 |
| レスポンスに HTTP Content-Range ヘッダーが含まれている場合、このフィールドには range end の値が格納されます。 |
ソース: logtype = 'haproxy_http'
Grok:
%{HOSTPORT:client} \\[%{NOTSPACE:haproxy_timestamp}\\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{NUMBER:time_queue}/%{NUMBER:time_backend_connect}/%{NUMBER:time_duration} %{NUMBER:bytes_read} %{NOTSPACE:termination_state} %{NUMBER:actconn}/%{NUMBER:feconn}/%{NUMBER:beconn}/%{NUMBER:srvconn}/%{NUMBER:retries} %{NUMBER:srv_queue}/%{NUMBER:backend_queue}
%{HOSTPORT:client} \\[%{NOTSPACE:haproxy_timestamp}\\] %{NOTSPACE:frontend_name} %{NOTSPACE:backend_name}/%{NOTSPACE:server_name} %{NUMBER:time_client_req}/%{NUMBER:time_queue}/%{NUMBER:time_backend_connect}/%{NUMBER:time_server_response}/%{NUMBER:time_duration} %{NUMBER:status_code} %{NUMBER:bytes_read} %{NOTSPACE:captured_request_cookie} %{NOTSPACE:captured_response_cookie} %{NOTSPACE:termination_state_with_cookie_status} %{NUMBER:actconn}/%{NUMBER:feconn}/%{NUMBER:beconn}/%{NUMBER:srvconn}/%{NUMBER:retries} %{NUMBER:srv_queue}/%{NUMBER:backend_queue}?( \\\"%{GREEDYDATA:full_http_request}\\\")?( %{NOTSPACE:captured_response_headers})?
結果。
クライアント
: このリクエストのソースIP/ポートhaproxy_timestamp
: このリクエストが受理された時のタイムスタンプfrontend_name
: このリクエストで使われたフロントエンドの名前backend_name
: このリクエストで使用されたバックエンドの名前server_name
: このリクエストで使用したバックエンドグループのサーバー名time_client_req
: クライアントからのフルリクエストを待つ時間(ms)。time_queue
: キューでの待ち時間(ms)time_backend_connect
: デスティネーションサーバーとの接続が確立するまでの時間(ms)time_server_response
:デスティネーションサーバーがレスポンスを送信するまでの時間(ms)time_duration
: HAProxy でリクエストが有効な総時間(ms)status_code
: HTTP レスポンスコードbytes_read
: このリクエストで読まれた総バイト数captured_request_cookie
: リクエストからキャプチャしたクッキーcaptured_response_cookie
: レスポンスからキャプチャしたクッキーtermination_state
: 切断時のセッション状態termination_state_with_cookie_status
: 切断時の、クッキーの状態を含むセッションの状態actconn
: アクティブな接続feconn
: フロントエンドの接続beconn
: バックエンドの接続srvconn
: サーバー接続retries
: Retriessrv_queue
: サーバーキューのサイズbackend_queue
: バックエンドキューのサイズfull_http_request
: HTTP リクエストの完全な行です。captured_response_headers
: レスポンスからキャプチャーしたヘッダー
ソース: logtype = 'ktranslate-health'
Grok:
%{NOTSPACE:timestamp} ktranslate(/)?(%{GREEDYDATA:container_service})? \[%{NOTSPACE:severity}] %{GREEDYDATA:message}
結果。
タイムスタンプ
: ログの時刻container_service
: ktranslateでコンテナを区別するために使用される一意の識別子です。これはDockerのランタイム中に、オプションの--service_name
フラグで設定されます。厳しさ
: ログラインの厳しさメッセージ
: メッセージフィールドには、イベントに関する情報を提供する自由形式のメッセージが含まれています。
ソース: logtype = 'iis_w3c'
Grok:
%{TIMESTAMP_ISO8601:log_timestamp} %{NOTSPACE:server_ip} %{WORD:method} %{NOTSPACE:uri} %{NOTSPACE:uri_query} %{NOTSPACE:server_port} %{NOTSPACE:username} %{NOTSPACE:client_ip} %{NOTSPACE:user_agent} %{NOTSPACE:referer} %{NOTSPACE:status} %{NOTSPACE:substatus} %{NOTSPACE:win32_status} %{NOTSPACE:time_taken}
ソース: logtype = 'monit'
Grok:
\\[%{NOTSPACE:tz} %{SYSLOGTIMESTAMP:nr_timestamp}\\] %{WORD:state}%{SPACE}: %{GREEDYDATA:message}
結果。
状態
: ログラインの深刻度メッセージ
: The message
ソース: logtype = 'mysql-error'
Grok:
\\[%{WORD:log_level}\\]
結果。
log_level
: ログラインの重大度
ソース: logtype = 'nginx'
Grok:
%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}
結果。
clientip
:クライアントのIPアドレス動詞
: The HTTP verbident
: リクエストを行うクライアントのユーザーIDレスポンス
: レスポンスの HTTP ステータスコードリクエスト
: 行われているURIとリクエストhttpversion
: リクエストの HTTP バージョンです。rawrequest
: データが投稿された場合の生のHTTPリクエストbytes
: 送信されたバイト数referrer
: HTTP のリファラーです。エージェント
: クライアントのユーザーエージェント
ソース: logtype = 'nginx-error'
Grok:
^(?<timestamp>%{YEAR:year}[./-]%{MONTHNUM:month}[./-]%{MONTHDAY:day}[- ]%{TIME:time}) \\[%{LOGLEVEL:severity}\\] %{POSINT:pid}#%{NUMBER}: %{GREEDYDATA:errormessage}(?:, client: (?<client>%{IP:clientip}|%{HOSTNAME:hostname}))(?:, server: %{IPORHOSTORUNDERSCORE:server})(?:, request: %{QS:request})?(?:, upstream: \"%{URI:upstream}\")?(?:, host: %{QS:host})?(?:, referrer: \"%{URI:referrer}\")?$
結果。
厳しさ
: ログラインの厳しさpid
: サーバーのプロセスIDerrormessage
: エラーメッセージclientip
:呼び出したクライアントのIPアドレスサーバー
: サーバーのIPアドレスリクエスト
: フルリクエストupstream
: 上流のURIhost
: サーバのホスト名のことです。referrer
: HTTP のリファラーです。
Source: logtype = 'redis'。
Grok:
%{POSINT:redis.pid}:%{NOTSPACE:redis.role} (?<redistimestamp>[\d-]+ [a-zA-Z]+ [\d]+ [\d:]+.[\d]{3}) %{NOTSPACE:redis.log.level} %{GREEDYDATA:redis.message}
結果。
redis.pid
:ログラインのプロセスIDredis.role
: インスタンスのロール (X sentinel, C RDB/AOF writing child, S slave, M master) です。redistimestamp
:ログのタイムスタンプredis.log.level
: メッセージのログレベル(. debug, - verbose, * notice, # warning)redis.message
: redis のエラーメッセージ。
ソース: logtype = 'route-53'
Grok:
%{NUMBER:log_format_version} %{TIMESTAMP_ISO8601} %{WORD:zone_id} %{IPORHOST:query} %{WORD:query_type} %{WORD:response_code} %{WORD:protocol} %{WORD:edge_location} %{IP:resolver_ip} %{GREEDYDATA:edns_client_subnet}
結果。
log_format_version
: バージョンアップしたログのフォーマットです。zone_id
: このログのすべてのDNSクエリに関連付けられているホストされたゾーンのID。問い合わせ
: リクエストで指定されたドメインまたはサブドメイン。query_type
: リクエストで指定された DNS レコードタイプのいずれか、またはANY
.response_code
:Route 53がDNSクエリに応答して返したDNSレスポンスコード。protocol
: 問い合わせの際に使用されたプロトコルで、TCP または UDP のいずれかです。edge_location
: クエリに応答したルート53のエッジロケーションである。各エッジロケーションは、3文字のコードと任意の数字で識別されます。例えば、DFW3
。3文字のコードは、通常、エッジロケーションの近くにある空港の国際航空運送協会の空港コードに対応しています。(これらの略語は将来的に変更される可能性があります)。resolver_ip
:Route 53にリクエストを送信したDNSリゾルバのIPアドレスです。edns_client_subnet
: リクエストが発生したクライアントのIPアドレスの一部(DNSリゾルバから入手可能な場合)。
ソース: logtype = 'syslog-rfc5424'
Grok:
<%{NONNEGINT:pri}>%{NONNEGINT:version} +(?:%{TIMESTAMP_ISO8601:log.timestamp}|-) +(?:%{HOSTNAME:hostname}|-) +(?:\\-|%{NOTSPACE:app.name}) +(?:\\-|%{NOTSPACE:procid}) (?:\\-|%{NOTSPACE:msgid}) +(?:\[%{DATA:structured.data}\]|-|) +%{GREEDYDATA:message}
結果。
pri
: 優先度は、メッセージの機能と深刻度の両方を表します。バージョン
: Syslog プロトコルのバージョン。log.timestamp
: オリジナルのタイムスタンプです。ホスト名
: Syslogメッセージを最初に送信したマシン。app.name
: メッセージを発信したデバイスまたはアプリケーション。procid
: Syslogシステムに関連するプロセス名またはプロセスID。msgid
: Identifies the type of message.structured.data
:構造化データの文字列値。sd.<var>sd-id</var>.<var>sd-param-name</var>
:structured.data
の内容も、あらかじめ定義された命名規則に従って、個別の属性に解析される。sd.<var>sd-id</var>.<var>sd-param-name</var>
.以下の構造化データの解析例をご覧ください。メッセージ
: イベントに関する情報を提供する自由形式のメッセージです。構造化データのパーシング例
構造化データ
[example one="1" two="2"]
は、2 つの異なる属性に解析されます。sd.example.one: "1"sd.example.two: "2"また、同じ構造化データブロックに重複したparam名が含まれている場合、属性名にインデックスベースのサフィックスが付加されます。例えば、構造化データ
[example number="1" number="2"]
は次のように解析されます。sd.example.number.0: "1"sd.example.number.1: "2"企業番号が付与されている構造化データの場合、追加の属性も解析されます。例えば、構造化データ
[example@123 number="1"]
は次のように解析されます。sd.example.enterprise.number: 123sd.example.number: "1"