Grok 模式 - 用于逗号分隔的数据
Grok Pattern - for comma delimited data
我正在尝试为以下数据记录捕获 Grok 模式:
-- 一行--
0,2018-12-17 22:40:30.000,25980000,92,True,0,400,33,0,2018-12-16 22:40:30.000,2018-12-17 05:53:30.000,433,17,32,1,1,18,2018-12-17,非常清醒
-- 第二行--
1,2018-12-17 22:41:30.000,25980000,92,True,0,400,33,0,2018-12-16 22:40:30.000,2018-12-17 05:53:30.000,433,17,32,1,1,18,2018-12-17,觉醒
这是我的 grok 模式:
%{NUMBER:ID}%{NOTSPACE}%{TIMESTAMP_ISO8601:RecordedDateTimeStamp}*%{NOTSPACE}%{NUMBER:Efficiency}%{NOTSPACE}%{DATA:IsMainSleep}%{NOTSPACE}%{NUMBER:MinutesAfterWakeup}%{NOTSPACE}%{NUMBER:MinutesAsleep}%{NOTSPACE}%{NUMBER:MinutesAwake}%{NOTSPACE}%{NUMBER:MinutesToFallAsleep}%{NOTSPACE}%{NUMBER:SleepStartTime}%{NOTSPACE}%{NUMBER:SleepEndTime}%{NOTSPACE}%{NUMBER:TimeInBed"}%{NOTSPACE}%{NUMBER:RestlessCount}%{NOTSPACE}%{NUMBER:RestlessDuration}%{NOTSPACE}%{NUMBER:AwakeCount}%{NOTSPACE}%{NUMBER:AwakeDuration}%{NOTSPACE}%{NUMBER:AwakeningsCount}%{NOTSPACE}%{TIMESTAMP_ISO8601:DateOfSleep}%{NOTSPACE}%{DATA:SleepState}
我不确定为什么,但它在 Kibana 的 Grok Debugger 工具中不起作用。
任何人都可以帮我弄清楚我的 grok 模式有什么问题吗?
提前致谢
你的 grok 模式有 18 个字段,但你的数据记录有 19 个字段,第三个字段在两个记录中具有相同的值(25980000,这是一个工作 ID 吗?),你没有考虑模式。
此外,您还有两个未被解析为时间戳的时间戳,您需要使用 $ 锚定最后一个字段以告知每条消息的结束位置(grok 将在此处尝试匹配任何内容)
试试这个 grok 模式:
%{NUMBER:ID},%{TIMESTAMP_ISO8601:RecordedDateTimeStamp},%{NUMBER:jobId},%{NUMBER:Efficiency},%{DATA:IsMainSleep},%{NUMBER:MinutesAfterWakeup},%{NUMBER:MinutesAsleep},%{NUMBER:MinutesAwake},%{NUMBER:MinutesToFallAsleep},%{TIMESTAMP_ISO8601:SleepStartTime},%{TIMESTAMP_ISO8601:SleepEndTime},%{NUMBER:TimeInBed},%{NUMBER:RestlessCount},%{NUMBER:RestlessDuration},%{NUMBER:AwakeCount},%{NUMBER:AwakeDuration},%{NUMBER:AwakeningsCount},%{DATA:DateOfSleep},%{DATA:SleepState}$
刚刚在我的实验室测试并得到了这个结果:
{
"MinutesToFallAsleep": "0",
"MinutesAsleep": "400",
"AwakeningsCount": "18",
"TimeInBed": "433",
"AwakeDuration": "1",
"SleepEndTime": "2018-12-17 05:53:30.000",
"MinutesAfterWakeup": "0",
"RestlessDuration": "32",
"jobId": "25980000",
"MinutesAwake": "33",
"SleepStartTime": "2018-12-16 22:40:30.000",
"Efficiency": "92",
"AwakeCount": "1",
"IsMainSleep": "True",
"RestlessCount": "17",
"RecordedDateTimeStamp": "2018-12-17 22:41:30.000",
"DateOfSleep": "2018-12-17",
"ID": "1",
"SleepState": "Awake"
}
我正在尝试为以下数据记录捕获 Grok 模式:
-- 一行--
0,2018-12-17 22:40:30.000,25980000,92,True,0,400,33,0,2018-12-16 22:40:30.000,2018-12-17 05:53:30.000,433,17,32,1,1,18,2018-12-17,非常清醒
-- 第二行--
1,2018-12-17 22:41:30.000,25980000,92,True,0,400,33,0,2018-12-16 22:40:30.000,2018-12-17 05:53:30.000,433,17,32,1,1,18,2018-12-17,觉醒
这是我的 grok 模式:
%{NUMBER:ID}%{NOTSPACE}%{TIMESTAMP_ISO8601:RecordedDateTimeStamp}*%{NOTSPACE}%{NUMBER:Efficiency}%{NOTSPACE}%{DATA:IsMainSleep}%{NOTSPACE}%{NUMBER:MinutesAfterWakeup}%{NOTSPACE}%{NUMBER:MinutesAsleep}%{NOTSPACE}%{NUMBER:MinutesAwake}%{NOTSPACE}%{NUMBER:MinutesToFallAsleep}%{NOTSPACE}%{NUMBER:SleepStartTime}%{NOTSPACE}%{NUMBER:SleepEndTime}%{NOTSPACE}%{NUMBER:TimeInBed"}%{NOTSPACE}%{NUMBER:RestlessCount}%{NOTSPACE}%{NUMBER:RestlessDuration}%{NOTSPACE}%{NUMBER:AwakeCount}%{NOTSPACE}%{NUMBER:AwakeDuration}%{NOTSPACE}%{NUMBER:AwakeningsCount}%{NOTSPACE}%{TIMESTAMP_ISO8601:DateOfSleep}%{NOTSPACE}%{DATA:SleepState}
我不确定为什么,但它在 Kibana 的 Grok Debugger 工具中不起作用。
任何人都可以帮我弄清楚我的 grok 模式有什么问题吗?
提前致谢
你的 grok 模式有 18 个字段,但你的数据记录有 19 个字段,第三个字段在两个记录中具有相同的值(25980000,这是一个工作 ID 吗?),你没有考虑模式。
此外,您还有两个未被解析为时间戳的时间戳,您需要使用 $ 锚定最后一个字段以告知每条消息的结束位置(grok 将在此处尝试匹配任何内容)
试试这个 grok 模式:
%{NUMBER:ID},%{TIMESTAMP_ISO8601:RecordedDateTimeStamp},%{NUMBER:jobId},%{NUMBER:Efficiency},%{DATA:IsMainSleep},%{NUMBER:MinutesAfterWakeup},%{NUMBER:MinutesAsleep},%{NUMBER:MinutesAwake},%{NUMBER:MinutesToFallAsleep},%{TIMESTAMP_ISO8601:SleepStartTime},%{TIMESTAMP_ISO8601:SleepEndTime},%{NUMBER:TimeInBed},%{NUMBER:RestlessCount},%{NUMBER:RestlessDuration},%{NUMBER:AwakeCount},%{NUMBER:AwakeDuration},%{NUMBER:AwakeningsCount},%{DATA:DateOfSleep},%{DATA:SleepState}$
刚刚在我的实验室测试并得到了这个结果:
{
"MinutesToFallAsleep": "0",
"MinutesAsleep": "400",
"AwakeningsCount": "18",
"TimeInBed": "433",
"AwakeDuration": "1",
"SleepEndTime": "2018-12-17 05:53:30.000",
"MinutesAfterWakeup": "0",
"RestlessDuration": "32",
"jobId": "25980000",
"MinutesAwake": "33",
"SleepStartTime": "2018-12-16 22:40:30.000",
"Efficiency": "92",
"AwakeCount": "1",
"IsMainSleep": "True",
"RestlessCount": "17",
"RecordedDateTimeStamp": "2018-12-17 22:41:30.000",
"DateOfSleep": "2018-12-17",
"ID": "1",
"SleepState": "Awake"
}