用于自定义消息的 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}"}
我正在尝试在 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}"}