【问题标题】:logstash if field exists then groklogstash 如果字段存在则 grok
【发布时间】:2016-02-18 17:17:48
【问题描述】:

我正在尝试为 logstash 创建一个过滤器,该过滤器将为所有日志提供“通用”grok 过滤器,如果存在某些字段,那么我希望它执行不同的 grok。

我使用的第一个 grok 是

grok {
match => [
"message", "....%{NOTSPACE:name} %{GREEDYDATA:logcontent}" 
]
}

这很好用。但如果“名称”字段是“foo”,我希望它能够过滤更多

if [name] == "foo" {
grok {
match => [
"message", ".....%{NOTSPACE:name} %{NOTSPACE:object1} %{NOTSPACE:object2}" 
]
}

我尝试了这个选项,但它不起作用。 有什么想法吗?

【问题讨论】:

    标签: elasticsearch logstash logstash-grok grok logstash-file


    【解决方案1】:

    最简单的方法是在你摸索任何东西之前对消息使用模式匹配。

    例如:

    if [message] =~ /....foo/ {
       // foo specific grok here
    } else {
       // general grok
    }
    

    【讨论】:

    • 你的意思是我需要在“if [message] =~ /.....foo/ 中放一个整个日志的例子吗?还是我可以把点放在那里写我感兴趣的词?
    • 只要投入足够的时间,就知道你的 grok 会成功。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多