Logstash 过滤器,如果字段匹配正则表达式不起作用

Logstash filter, if field matches regex not working

在我的 Logstash 管道中,我想对匹配正则表达式的字段应用一些操作。例如,我想过滤所有以 JOB: 开头的 url 字段,所以在研究之后我想出了这个配置:

filter {
        grok {
            patterns_dir => ["./patterns"]
                  if [url] =~ /^JOB: .*/ {
                       add_field => {
                              "job_type" => "JOB: %{job_type:url}"
                       }
                  }
         }
}

但是在 运行 service logstash configtest 之后我得到这个错误:

The given configuration is invalid. Reason: 
Expected one of #, => at line 87, column 7 (byte 3332) after filter {
                        grok {
                                patterns_dir => ["./patterns"]
                                if 

if 需要超出 grok 过滤器,即它必须包围 grok

filter {
    if [url] =~ /^JOB: .*/ {
        grok {
            patterns_dir => ["./patterns"]
            match => ["url" => "JOB: %{job_type:job_type}"]
        }
    }
}