grok 插件的属性

1、add_field属性

  • 值的类型:hash
  • 默认值:{}
  • 描述: 在文档(document)中增加一个 field,可以通过%{field}动态命名field名或field的值。
filter {
  grok {
    add_field => {
      "foo_%{somefield}" => "Hello world, from %{host}"
      "new_field" => "new_static_value"
    }
  }
}

2、add_tag属性

  • 值的类型:array
  • 默认值:[]
  • 描述:该属性的作用是在,tags中加入一个值,可以使用动态标签来加入,也可以一次加入多个tags值。
filter {
  grok {
    add_tag => [ "foo_%{somefield}" ]
  }
}
# You can also add multiple tags at once:
filter {
  grok {
    add_tag => [ "foo_%{somefield}", "taggedy_tag"]
  }
}

break_on_match属性

  • 值的类型:boolean
  • 默认值:true
  • 描述:用于标识匹配后,是否停止此次filter后续的处理逻辑,默认值是ture,意为会停止。

keep_empty_captures属性

  • 值的属性:boolean
  • 默认值:false
  • 描述:If true, keep empty captures as event fields. 作用还不清楚

match属性

  • 值的属性:hash
  • 默认值:{}
  • 描述:用于描述正则表达式
filter 
{
    grok 
    { 
        match => 
        { 
            "message" => 
            [ 
                "Duration: %{NUMBER:duration}", 
                "Speed: %{NUMBER:speed}" 
            ] 
        } 

    }
}

named_captures_only

  • 值的类型:boolean
  • 默认值:true
  • 描述:If true, only store named captures from grok.

overwrite

  • 值得类型:array
  • 默认值:[]
  • 描述:用新生成的值来覆盖原有field的值。
filter {
  grok {
    match => { "message" => "%{SYSLOGBASE} %{DATA:message}" }
    overwrite => [ "message" ]
  }
}

如果日志是May 29 16:37:11 sadness logger: hello world经过match属性match => { "message" => "%{SYSLOGBASE} %{DATA:message}" }处理后,message的值变成了hello world。这时如果使用了overwrite => [ "message" ]属性,那么原来的message的值将被覆盖成新值。

patterns_dir 属性

  • 值的类型:array
  • 默认值:[]
  • 描述:一些复杂的正则表达式,不适合直接写到filter中,可以指定一个文件夹,用来专门保存正则表达式的文件,需要注意的是该文件夹中的所有文件中的正则表达式都会被依次加载,包括备份文件。
patterns_dir => ["/opt/logstash/patterns", "/opt/logstash/extra_patterns"]

正则文件以文本格式描述:

NAME PATTERN
#空格前是正则表达式的名称,空格后是具体的正则表达式

例如:这是一个数字的表达式

NUMBER \d+

patterns_file_glob属性

  • 值的类型:string
  • 默认值:“*”
  • 描述:针对patterns_dir属性中指定的文件夹里哪些正则文件,可以在这个filter中生效,需要本属性来指定。默认值“*”是指所有正则文件都生效。

periodic_flush属性

  • 值的类型:boolean
  • 默认值:false
  • 描述:如果设置为ture,会定时的调用filter的更新函数(flush method)

remove_field

  • 值的类型:array
  • 默认值:[]
  • 描述:删除当前文档中的指定filted
# You can also remove multiple fields at once:
filter 
{
    grok 
    {
        remove_field => 
        [ 
            "foo_%{somefield}", 
            "my_extraneous_field" 
        ]
    }
}

remove_tag属性

  • 值的类型:array
  • 默认值:[]
  • 描述:删除指定的tag值
# You can also remove multiple tags at once:
filter {
  grok {
    remove_tag => [ "foo_%{somefield}", "sad_unwanted_tag"]
  }
}

tag_on_failure属性

  • 值的类型:array
  • 默认值:["_grokparsefailure"]
  • 描述:如果所有正则规则都没有匹配,则在tags中追加该值。

results matching ""

    No results matching ""