Pur*_*ont 4 logstash logstash-grok elastic-stack
(这与我的其他问题logstash grok过滤器的自定义日志有关)
我有一个日志文件,其行看起来像:
14:46:16.603 [http-nio-8080-exec-4] INFO METERING - msg=93e6dd5e-c009-46b3-b9eb-f753ee3b889a CREATE_JOB job=a820018e-7ad7-481a-97b0-bd705c3280ad data=71b1652e-16c8-4b33-9a57-f5fcb3d5de92
14:46:17.378 [http-nio-8080-exec-3] INFO METERING - msg=c1ddb068-e6a2-450a-9f8b-7cbc1dbc222a SET_STATUS job=a820018e-7ad7-481a-97b0-bd705c3280ad status=ACTIVE final=false
Run Code Online (Sandbox Code Playgroud)
我构建了一个与第一行匹配的模式:
%{TIME:timestamp} %{NOTSPACE:http} %{WORD:loglevel}%{SPACE}%{WORD:logtype} - msg=%{NOTSPACE:msg}%{SPACE}%{WORD:action}%{SPACE}job=%{NOTSPACE:job}%{SPACE}data=%{NOTSPACE:data}
Run Code Online (Sandbox Code Playgroud)
但很明显的是只适用于具有线data=在端部,相对于status=与final=在第二行,或其他线路的其他属性-值对结束了吗?如何设置一个模式,表示在某一点之后会有一foo=bar对我想识别并在输出中作为属性/值对输出的任意对?
您可以像这样更改您的grok模式,以便在一个字段(kvpairs)中包含所有键值对:
%{TIME:timestamp} %{NOTSPACE:http} %{WORD:loglevel}%{SPACE}%{WORD:logtype} - %{GREEDYDATA:kvpairs}
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用kv过滤器来解析键值对.
kv {
source => "kvpairs"
remove_field => [ "kvpairs" ] # Delete the field afterwards
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,你的kv对中有一些简单的值(例如CREATE_JOB).您可以使用grok解析它们,并为之前的值使用一个kv过滤器,并为这些简单值之后的值使用另一个kv过滤器.
| 归档时间: |
|
| 查看次数: |
4254 次 |
| 最近记录: |