Logstash kv 过滤器
Logstash kv filter
我有一个格式如下的文件:
10302\t<document>.....</document>
12303\t<document>.....</document>
10054\t<document>.....</document>
10034\t<document>.....</document>
如您所见,有两个值由制表符分隔。我需要
- 索引第一个标记(例如 10302、12303...)作为 ID
- 从第二个标记(XML 文档)中提取(然后索引)一些信息。换句话说,第二个标记将与 xml 过滤器一起使用以提取一些信息
是否可以使用 kv 过滤器将两个值分开?理想情况下,对于每一行,我应该以这样的文档结束:
id:10302
msg:<document>....</document>
我可以使用 grok 过滤器,但我想避免使用任何正则表达式,因为字段检测非常简单,并且可以通过简单的键值逻辑来完成。但是,使用普通的 kv 检测我以以下结尾:
"10302": <document>.....</document>
"12303": <document>.....</document>
"10054": <document>.....</document>
"10034": <document>.....</document>
这不是我想要的。
据我所知,不可能将 kv 用于您想做的工作,因为没有可能的 id 键(10302、10303、10304...)。没有可能的密钥,因为在 id 之前没有任何内容。
假设每个 id + 文档都在同一行,这个 grok 配置会起作用:
grok {
match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"}
}
我有一个格式如下的文件:
10302\t<document>.....</document>
12303\t<document>.....</document>
10054\t<document>.....</document>
10034\t<document>.....</document>
如您所见,有两个值由制表符分隔。我需要
- 索引第一个标记(例如 10302、12303...)作为 ID
- 从第二个标记(XML 文档)中提取(然后索引)一些信息。换句话说,第二个标记将与 xml 过滤器一起使用以提取一些信息
是否可以使用 kv 过滤器将两个值分开?理想情况下,对于每一行,我应该以这样的文档结束:
id:10302
msg:<document>....</document>
我可以使用 grok 过滤器,但我想避免使用任何正则表达式,因为字段检测非常简单,并且可以通过简单的键值逻辑来完成。但是,使用普通的 kv 检测我以以下结尾:
"10302": <document>.....</document>
"12303": <document>.....</document>
"10054": <document>.....</document>
"10034": <document>.....</document>
这不是我想要的。
据我所知,不可能将 kv 用于您想做的工作,因为没有可能的 id 键(10302、10303、10304...)。没有可能的密钥,因为在 id 之前没有任何内容。
假设每个 id + 文档都在同一行,这个 grok 配置会起作用:
grok {
match => { "message" => "^%{INT:ID}\t%{GREEDYDATA:msg}"}
}