このトピックでは、Grok関数の構文とパラメーターについて説明します。 Thisトピックも提供例使用する方法についての機能。
説明
正規表現関数は複雑です。 正規表現関数の代わりにGrok関数を使用することを推奨します。 詳細については、「正規表現関数」をご参照ください。 You使用することができGrok機能と一緒に正規表現機能。 例:
e_match("content", grok(r "\w +: (%{IP})")) # Grokパターンは、ログデータのabc: 192.168.0.0またはxyz: 192.168.1.1パターンと一致します。
e_match("内容" 、grok(r "w +: (%{IP})" 、エスケープ=True)) # The Grokパターンと一致しませんabc: 192.168.0.0パターンのログデータが一致w +: 192.168.0.0パターンのログデータ。
The Grok機能抽出物指定値ベースに正規表現。
- 構文
grok (パターン、エスケープ=False、拡張=None)
- Grok構文
%{SYNTAX} %{SYNTAX:NAME}
Grok構文では、syntaxは定義済みの正規表現を指定し、NAMEはグループを指定します。 例:"%{IP}"# r "(?:\ d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})" "%{IP:source_id}" # Equivalent r "(?P<source_id> d{1,3} 。d{1,3} 。d{1,3} 。d{1,3})" ("%{IP}") # Equivalent r "(d{1,3} 。d{1,3} 。d{1,3} 。d{1,3})"
Grok関数は、次のグループ化モードをサポートします。- グループモードのキャプチャ一部のGrokパターンは、名前付きキャプチャグループをサポートしています。 これらのGrokパターンには、%{SYNTAX} 構文のみを使用できます。 これらのGrokパターンは、ステートメントの解析によく使用されます。 詳細については、Grok パターンの「ログ形式」セクションを参照してください。 例:
"%{SYSLOGBASE}" "%{COMMONAPACHELOG}" "%{COMBINEDAPACHELOG}" "%{HTTPD20_ERRORLOG}" "%{HTTPD24_ERRORLOG}" "%{HTTPD_ERRORLOG}" ...
- 非捕捉グループモード一部のGrokパターンは、非キャプチャグループをサポートします。 例:
"%{INT}" "%{YEAR}" "%{HOUR}" ...
- グループモードのキャプチャ
- パラメーター
パラメーター データ型 必須/任意 説明 pattern String 必須 Grok構文。 詳細については、「Grok パターン」をご参照ください。 脱出 Bool 任意 Grok以外のパターンの正規表現に含まれる特殊文字をエスケープするかどうかを指定します。 デフォルト値:False。 伸ばす ディクト 任意 カスタムGrok式。Grokのカスタム表現です。
例
- 例1: 日付と参照コンテンツを抽出します。
- 生ログ
内容: 2019 June 24 "I amアイアンマン」
- 変換ルール
e_regex('content' 、grok('%{YEAR: 年} %{MONTH: 月} %{MONTHDAY: 日} %{QUOTEDSTRING: モットー}'))
- 結果
コンテンツ: 2019 6月24日「私はアイアンマンです」 年: 2019 月: 6月 日: 24 モットー: 「私はアイアンマンです」
- 生ログ
- Example 2: ExtractをHTTP要求ログ。
- 生ログ
内容: 10.0.0.0 GET /index.html 15824 0.043
- 変換ルール
e_regex('content',grok('%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}'))
- 結果
内容: 10.0.0.0 GET /index.html 15824 0.043 クライアント: 10.0.0.0 メソッド: GET リクエスト: /index.html バイト数: 15824 期間: 0.043
- 生ログ
- 例3: Apacheログを抽出します。
- 生ログ
コンテンツ: 127.0.0.1 - - [13/Apr/2015:17:22:03 + 0800] "GET /router.php HTTP/1.1" 404 285 "-" curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
- 変換ルール
e_regex('content',grok('%{COMBINEDAPACHELOG}'))
- 結果
コンテンツ: 127.0.0.1 - - [13/Apr/2015:17:22:03 + 0800] "GET /router.php HTTP/1.1" 404 285 "-" curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2" clientip: 127.0.0.1 ident: - auth: - タイムスタンプ: 13/Apr/2015:17:22:03 + 0800 動詞: GET リクエスト: /router.php httpversion: 1.1 応答: 404 バイト数: 285 referrer: "-" エージェント: "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.15.3 zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
- 生ログ
- 例4: デフォルトのsyslog形式でログを抽出します。
- 生ログ
内容: 5月29日16:37:11悲しみロガー: こんにちは世界
- 変換ルール
e_regex('content',grok('%{SYSLOGBASE} %{DATA:message}'))
- 結果
内容: 5月29日16:37:11悲しみロガー: こんにちは世界 タイムスタンプ: 5月29日16:37:11 logsource: 悲しみ プログラム: logger メッセージ: hello world
- 生ログ
- 例5: 特殊文字をエスケープします。
- 生ログ
コンテンツ: 11月1日21:14:23軽蔑カーネル: pid 84558 (expect) 、uid 30206: signal 3で終了
- 変換ルール
e_regex('content',grok(r' %{SYSLOGBASE} pid %{NUMBER:pid} \(%{WORD:program}\), uid %{NUMBER:uid}: exited on signal %{NUMBER:signal}'))
変換ルールには、正規表現に含まれる特殊文字のかっこ () が含まれます。 かっこ () をエスケープしない場合は、エスケープパラメーターをTrueに設定します。 例:
e_regex('content',grok('%{SYSLOGBASE} pid %{NUMBER:pid} (%{WORD:program}), uid %{NUMBER:uid}: exited on signal %{NUMBER:signal}', escape=True)
- 結果
コンテンツ: 11月1日21:14:23軽蔑カーネル: pid 84558 (expect) 、uid 30206: signal 3で終了 タイムスタンプ: 11月1日21:14:23 logsource: scorn プログラム: 期待 pid: 84558 uid: 30206 信号: 3
- 生ログ
- 例6: カスタムGrok式を使用してログを抽出します。
- 生ログ
コンテンツ: Beijing-1104、gary 25「never quit」
- 変換ルール
e_regex('content',grok('%{ID:user_id },%{ WORD:name} %{INT:age} %{QUOTEDSTRING:motto}',extend={'ID': '%{WORD}-%{INT}'}))
- 結果
コンテンツ: Beijing-1104、gary 25「never quit」 user_id: Beijing-1104 名前: gary 年齢: 25 モットー: 「やめない」
- 生ログ
- 例7: JSONデータを一致させます。
- 生ログ
content: 2019-10-29 16:41:39、218 - INFO: owt。AudioFrameConstructor - McsStats: {"event":"mediaStats" 、"connectionId":"331578616547393100" 、"durationMs":"5000" 、"rtpPackets":"250" 20 "、" rtpIntervalMax ":" 104 "、" rtpIntervalVar ":" 4 "、" rtcpRecvPackets ":" 0 "、" rtcpRecvBytes ":" 0 "、" rtcpSendPackets ":" 1 "、" rtcpSendBytes ":" フレーム "Stamevalg" "、" "、" "注文:" 0 "、" 、"、" 、"36945" 20 "、" frameIntervalMax ":" 104 "、" frameIntervalVar ":" 4 "、" timeStampIntervalAvg ":" 960 "、" timeStampIntervalMax ":" 960 "、" timeStampIntervalVar ":" 0 "}
- 変換ルール
e_regex('content',grok('%{EXTRACTJSON}'))
- 結果
content: 2019-10-29 16:41:39、218 - INFO: owt。AudioFrameConstructor - McsStats: {"event":"mediaStats" 、"connectionId":"331578616547393100" 、"durationMs":"5000" 、"rtpPackets":"250" 20 "、" rtpIntervalMax ":" 104 "、" rtpIntervalVar ":" 4 "、" rtcpRecvPackets ":" 0 "、" rtcpRecvBytes ":" 0 "、" rtcpSendPackets ":" 1 "、" rtcpSendBytes ":" フレーム "Stamevalg" "、" "、" "注文:" 0 "、" 、"、" 、"36945" 20 "、" frameIntervalMax ":" 104 "、" frameIntervalVar ":" 4 "、" timeStampIntervalAvg ":" 960 "、" timeStampIntervalMax ":" 960 "、" timeStampIntervalVar ":" 0 "} json:{"event":"mediaStats" 、"connectionId":"331578616547393100" 、"durationMs":"5000" 、"rtpPackets":"250" 、"rtpBytes":"36945" 、"nackPackets":"0" 、"nackBytes":"" Interval": "、" rtar "Interval" 、" 104 "4" 、"rtcpRecvPackets":"0" 、"rtcpRecvBytes":"0" 、"rtcpSendPackets":"1" 、"rtcpSendBytes":"32" 、"frame" 、"frameBytes":"36945" 、"StampOutOfOrder":"、" InterframevalMax "" "" "" "、" 、"、" 、"104:" "4" 、"timeStampIntervalAvg":"960" 、"timeStampIntervalMax":"960" 、"timeStampIntervalVar":"0"}
- 生ログ
- 例8: W3C (World Wide Web Consortium) 形式でログを解析します。
- 生ログ
content: 2018-12-26 00:00:00 W3SVC2 application001 192.168.0.0 HEAD / - 8000 - 10.0.0.0 HTTP/1.0 - - - 404 0 64 0 19 0
- 変換ルール
W3C形式でサポートされていないフィールドは、ハイフン (-) として表示されます。 したがって、Grokパターンではハイフン (-) を使用してフィールドを照合します。
e_regex("内容" 、grok('%{DATE: データ} %{TIME: 時間} %{WORD:s_sitename} %{WORD:s_computername} %{IP:s_ip} %{WORD:cs_method} %{NOTSPACE:cs_uri_stem} - %{NUMBER:s_port} - %{IP:c_ip} %{NOTSPACE:cs_version} - - - - %{NUMBER:sc_status} %{NUMBER:sc_substatus} %{NUMBER:sc_win32_status} %{NUMBER:sc_bytes} %{NUMBER:cs_bytes} %{NUMBER:time_taken}'))
- 結果
content: 2018-12-26 00:00:00 W3SVC2 application001 192.168.0.0 HEAD / - 8000 - 10.0.0.0 HTTP/1.0 - - - 404 0 64 0 19 0 データ: 18-12-26 time: 00:00:00 s_sitename: W3SVC2 s_computername: application001 s_ip: 192.168.0.0 cs_method: HEAD cs_uri_stem: / s_port: 8000 c_ip: 10.0.0.0 cs_version: HTTP/1.0 sc_status: 404 sc_substatus: 0 sc_win32_status: 64 sc_bytes: 0 cs_bytes: 19 time_taked: 0
- 生ログ