我想知道是否有人可以帮助我解析问题。我一直在分析一个特定的日志,我使用控制组(描述,FooBar等)。解析这个日志是一个很大的挑战。
日志文件看起来像这样:
2021-02-10T09:0022.041-05:00 | Info | TransactionGUID=yyyy1234-12a1-1a99-1234-01ab1ab12abc | TransactionID=123456 | Saving uploaded file to shared folder \foobarfoofilENV1ABMylocingZoneTIMSFileTemplates12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
我需要放置这组文本:
将上传的文件保存到共享文件夹foobarfoofilENV1ABMylocingZoneTIMSFileTemplates12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
放到"描述"中捕获组。
我需要放置这组文本:
12345678
在FooBar"捕获组。
下面是我到目前为止能想到的。如果我尝试添加FooBar控制组(从下面的规则中省略),我将丢失部分Description控制组。由于我正在使用的应用程序,我需要使用GROK调试器来创建和调试我的规则:
[A-Za-z0-9]{0,7}%{SPACE}%{TIMESTAMP_ISO8601:dateTime}%{SPACE}|%{SPACE}%{LOGLEVEL:Loglevel}%{SPACE}|%{SPACE}TransactionGUID=%{UUID:GUID}%{SPACE}|%{SPACE}TransactionID=%{NUMBER:TransactionId}%{SPACE}|%{SPACE}(?<Description>(?<=|s).*(?=)?))
简体版:
这个消息……
MyGroup12345679ContainsInfo
…被message
组捕获,并且其包含的数字被hidden_message
组捕获。
(?<message>[a-zA-Z]+(?<hidden_message>%{NUMBER})[a-zA-Z]+)
完整版本:
至于你的确切日志,我会这样解析:(为了测试目的,必须用NUMBER
代替UUID
)
grok {
message => [
"%{TIMESTAMP_ISO8601:dateTime}%{SPACE}|%{SPACE}%{LOGLEVEL:Loglevel}%{SPACE}|%{SPACE}TransactionGUID=%{NUMBER:GUID}%{SPACE}|%{SPACE}TransactionID=%{NUMBER:TransactionId}%{SPACE}|%{SPACE}(?<Description>.*(\(?<FooBar>[0-9]+)_[^\]+.[a-zA-Z0-9]+).*)",
"+ the pattern you are using now, unless there is always a path to match there"
]
}
测试日志:
2021-02-10T09:0022.041-05:00 | Info | TransactionGUID=82147 | TransactionID=123456 | Saving uploaded file to shared folder \foobarfoofilENV1ABMylocingZoneTIMSFileTemplates12345678_12345678_01ab1ab12abc-99f5-4a43-9127-01ab1ab12abc.xlsx | CopyToSharedFolder()
description
部分解释:
.* # greedily consumes characters
( # matches a filename beginning with a number :
\(?<FooBar>[0-9]+) # one "", a number,
_[^\]+ # one _, anything but a "" once or more
.[a-zA-Z0-9]+ # a file extension
)
.* # the rest of it