kibana 中的消息是:
{"log":"2024-02-01 10:30:00.004 INFO 1 --- [pool-1-thread-2] c.ankon.timer.ReminderExecCheckSchedule : Detecting Timed ,start...\n","stream":"stdout","time":"2024-02-01T02:30:00.01291984Z"}
我正在尝试编写一个 grok 表达式来进行匹配:
%{QS:LOGTYPE}:%{QS:CONTENT},%{QS:ST}:%{QS:TIME}:%{QS:timestamp}
但是这是不对的
问题1:
我想问一下grok表达式应该怎么写才能匹配上面的内容
问题2:
如果我希望最终结果是:
{"log":"2024-02-01 10:30:00.004 INFO 1 --- [pool-1-thread-2] c.ankon.timer.ReminderExecCheckSchedule : Detecting Timed ,start...\n"}
grok图案的内容是什么?
您可以使用 Kibana 中内置的 Grok 调试器。 http://localhost:5601/app/dev_tools#/grokdebugger
输入
{"log":"2024-02-01 10:30:00.004 INFO 1 --- [pool-1-thread-2] c.ankon.timer.ReminderExecCheckSchedule : Detecting Timed ,start...\n","stream":"stdout","time":"2024-02-01T02:30:00.01291984Z"}
输出:
{
"loglevel": "INFO",
"thread": "1",
"message": "Detecting Timed ,start...\\n\",\"stream\":\"stdout\",\"time\":\"2024-02-01T02:30:00.01291984Z\"}",
"class": "c.ankon.timer.ReminderExecCheckSchedule ",
"timestamp": "2024-02-01 10:30:00.004",
"threadname": "pool-1-thread-2"
}
您可以使用以下链接查看所有 grok 模式。 https://github.com/hpcugent/logstash-patterns/blob/master/files/grok-patterns
问题2: 如果您想要如下所示的最终结果:
{"log":"2024-02-01 10:30:00.004 INFO 1 --- [pool-1-thread-2] c.ankon.timer.ReminderExecCheckSchedule : Detecting Timed ,start...\n"}
你可以使用另一个 grok,如下所示:
%{DATA:raw_data}\\n
上面的 grok 模式将解析数据并只取 before
\n
的部分