logstash 配置文件的 Grok 模式
Grok pattern for logstash configuration file
下面是从 spring 应用程序生成并尝试创建自定义 grok 过滤器的日志
{"@timestamp":"2021-02-19T10:27:42.275+00:00","severity":"INFO","service":"capp","pid":"19592","thread":"SmsListenerContainer-9","class":"c.o.c.backend.impl.SmsBackendServiceImpl","rest":"[SmsListener] [sendSMS] [63289e8d-13c9-4622-b1a1-548346dd9427] [synemail] [ABSENT] [synfi] [0:0:0:0:0:0:0:1] [N/A] [N/A] [End Method]"}
应用过滤器后的预期输出是
id => "63289e8d-13c9-4622-b1a1-548346dd9427"
token1 => "synemail"
首先,我建议将文本解析为 json 以将“rest”值提取到字段中。然后,假设“rest”值总是具有相同的结构,特别是 id 总是在第三个 []
块内,而 token 总是在第四个 []
内,这个 grok 规则应该有效为你
\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]
请注意,您始终可以使用 Grok 调试器在 Kibana 中测试您的 grok 规则:https://www.elastic.co/guide/en/kibana/7.11/xpack-grokdebugger.html
如果你不想在没有预处理的情况下直接将 grok 应用到 json,这是规则:
"rest":"\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]
根据OP评论更新:
假设您正在解析的字段是“消息”并且它的值是一个 json 作为带有转义引号的文本,Logstash grok 过滤器的完整配置类似于:
grok {
match => { "message" => '\"rest\":\"\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]' }
}
下面是从 spring 应用程序生成并尝试创建自定义 grok 过滤器的日志
{"@timestamp":"2021-02-19T10:27:42.275+00:00","severity":"INFO","service":"capp","pid":"19592","thread":"SmsListenerContainer-9","class":"c.o.c.backend.impl.SmsBackendServiceImpl","rest":"[SmsListener] [sendSMS] [63289e8d-13c9-4622-b1a1-548346dd9427] [synemail] [ABSENT] [synfi] [0:0:0:0:0:0:0:1] [N/A] [N/A] [End Method]"}
应用过滤器后的预期输出是
id => "63289e8d-13c9-4622-b1a1-548346dd9427"
token1 => "synemail"
首先,我建议将文本解析为 json 以将“rest”值提取到字段中。然后,假设“rest”值总是具有相同的结构,特别是 id 总是在第三个 []
块内,而 token 总是在第四个 []
内,这个 grok 规则应该有效为你
\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]
请注意,您始终可以使用 Grok 调试器在 Kibana 中测试您的 grok 规则:https://www.elastic.co/guide/en/kibana/7.11/xpack-grokdebugger.html
如果你不想在没有预处理的情况下直接将 grok 应用到 json,这是规则:
"rest":"\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]
根据OP评论更新:
假设您正在解析的字段是“消息”并且它的值是一个 json 作为带有转义引号的文本,Logstash grok 过滤器的完整配置类似于:
grok {
match => { "message" => '\"rest\":\"\[%{DATA}\] \[%{DATA}\] \[%{DATA:id}\] \[%{DATA:token1}\]' }
}