用于自定义消息的 Logstash 过滤器

Logstash Filter for a custom message

我正在尝试在 Logstash 中解析一堆字符串,输出设置为 ElasticSearch。

示例输入字符串为:2016 年 5 月 24 日 10:20:15 User1 CREATE "Create a new folder"

grok 过滤器是:

匹配 => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{WORD:user} %{WORD:action_performed} %{WORD:action_description} "}

在 Elasticsearch 中,我看不到时间戳、用户、action_performed 等不同字段的单独列。

相反,整个字符串位于单个列下 "message"。

我想将信息存储在单独的字段中,而不是仅存储在一个列中。

不确定要在 logstash 过滤器中更改什么以达到预期效果。

谢谢!

你需要用这个改变你的 grok 模式,即使用 QUOTEDSTRING 而不是 WORD 它会起作用!

match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{WORD:user} %{WORD:action_performed} %{QUOTEDSTRING:action_description}"}