我正在尝试解析Logstash中的一堆字符串,输出设置为ElasticSearch。
示例输入字符串为: 2016 年 5 月 24 日 10:20:15 用户 1 创建"创建新文件夹"
格罗克过滤器为:
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{WORD:user} %{WORD:action_performed} %{WORD:action_description} "}
在 Elasticsearch 中,我无法看到不同字段的单独列,例如 timstamp、user、action_performed 等。
相反,整个字符串位于单个列"消息"下。
我想将信息存储在单独的字段中,而不仅仅是一列。
不确定在日志存储过滤器中更改什么以实现所需的目的。
谢谢!
用这个改变你的 grok 模式,即使用 QUOTEDSTRING
而不是 WORD
它会起作用!
match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{WORD:user} %{WORD:action_performed} %{QUOTEDSTRING:action_description}"}