Logstash过滤器之Mutate过滤器详解

Mutate(改变)过滤器插件

该文章内容参考官方文档7.8版本,由于使用范围有限并未翻译全篇文章

描述

Mutate过滤器允许你执行一些对字段的修改操作。你可以通过这个过滤器对事件中的字段进行重命名,移除,替换和修改。

处理命令

在Mutate过滤器的配置文件中可以执行如下命令:

  • coerce
  • rename
  • update
  • replace
  • convert
  • gsub
  • uppercase
  • capitalize
  • lowercase
  • strip
  • remove
  • split
  • join
  • merge
  • copy

你可以在不同的mutate配置块中使用这些命令。 例如:

filter {
    mutate {
        split => ["hostname", "."]
        add_field => { "shortHostname" => "%{hostname[0]}" }
    }

    mutate {
        rename => ["shortHostname", "hostname" ]
    }
}

Mutate过滤器的配置选项

下面是过滤器支持的配置项,配置项详情参考下面的详解。

选项类型是否必须简述
converthashNo转化命令,是对字段类型做转化,例如:String转为integer
copyhashNo将一个已经存在的字段复制给另一个字段。
gsubarrayNo通过正则表达式匹配字段的值,然后替换为指定的字符串。
joinhashNo使用分隔符连接数组。
lowercasearrayNo将string类型的字段值转化为小写的形式。
mergehashNo合并两个数组或者Hash类型的字段。string类型的字段会自动的合并为一个数组。
coercehashNo为存在但是不为空的字段设置默认值
renamehashNo字段重命名
replacehashNo将一个字段的值替换为一个新的值。
splithashNo将一个字段按照指定符号切割为数组。
striparrayNo去除字段中的空格。
updatehashNo更新字段为一个新值。
uppercasearrayNo将字符串字段转化为大写形式。
capitalizearrayNo将字符串字段转化为首字母大写的形式。
tag_on_failurestringNo错误发生时的配置

convert

  • 字段类型为 hash
  • 没有默认值

将字段转化为不同的类型,例如:string 转 integer。如果被转化的字段类型是数组,数组的所有成员都将被转化。如果对象是hash 就不会进行转化。

实例:

filter {
  mutate {
    convert => {
      "fieldname" => "integer"
      "booleanfield" => "boolean"
    }
  }
}

copy

  • 字段类型为 hash
  • 没有默认值

将一个已经存在的字段复制给另一个字段。如果目标字段已经存在,目标字段的值将被覆盖。

实例:

filter {
     mutate {
        copy => { "source_field" => "dest_field" }
     }
   }

gsub

  • 字段类型为 array
  • 没有默认值

通过正则表达式匹配字段的值,然后替换为指定的字符串。只有字段类型是string类型或者string数组类型才会进行匹配替换。其他类型字段不会做任何操作。

注意配置文件中需要转义斜杠线。

实例:

filter {
  mutate {
    gsub => [
      # replace all forward slashes with underscore
      "fieldname", "/", "_",
      # replace backslashes, question marks, hashes, and minuses
      # with a dot "."
      "fieldname2", "[\\?#-]", "."
    ]
  }
}

join

  • 字段类型为 hash
  • 没有默认值

使用分隔符连接数组。如果不是数组则不执行操作。

实例:

filter {
  mutate {
    join => { "fieldname" => "|" }
  }
}

[“a”,“b”]转为 “a”|“b”


lowercase

  • 字段类型为 array
  • 没有默认值

将string类型的字段值转化为小写的形式。

实例:

filter {
      mutate {
        lowercase => [ "fieldname" ]
      }
    }

merge

  • 字段类型为 hash
  • 没有默认值

合并两个数组或者Hash类型的字段。string类型的字段会自动的合并为一个数组。例如:
array + string 可以合并为一个数组
string + string 会合并为数组
arrayhash 类型的两个字段将不会执行合并.

实例:

filter {
  mutate {
     merge => { "dest_field" => "added_field" }
  }
}

coerce

  • 字段类型为 hash
  • 没有默认值

为存在但是不为空的字段设置默认值。

实例:

filter {
  mutate {
    # Sets the default value of the 'field1' field to 'default_value'
    coerce => { "field1" => "default_value" }
  }
}

rename

  • 字段类型为 hash
  • 没有默认值

字段重命名
实例:

filter {
      mutate {
        # Renames the 'HOSTORIP' field to 'client_ip'
        rename => { "HOSTORIP" => "client_ip" }
      }
}

replace

  • 字段类型为 hash
  • 没有默认值

将一个字段的值替换为一个新的值。新值可以包括%{foo}字符串,以帮助您从事件的其他字段构建出新值。
实例:

filter {
  mutate {
    replace => { "message" => "%{source_host}: My new message" }
  }
}

split

  • 字段类型为 hash
  • 没有默认值

将一个字段按照指定符号切割为数组。仅在string类型的字段中生效。
实例:

filter {
  mutate {
     split => { "fieldname" => "," }
  }
}

strip

  • 字段类型为 hash
  • 没有默认值

去除字段中的空格。NOTE:去除字段中前端部分.

实例:

filter {
  mutate {
     split => { "fieldname" => "," }
  }
}

update

  • 字段类型为 hash
  • 没有默认值

更新字段为一个新值。如果这个字段不存在,更新将不执行。

实例:

filter {
  mutate {
    update => { "sample" => "My new message" }
  }
}

uppercase

  • 字段类型为 hash
  • 没有默认值

将字符串字段转化为大写形式。

实例:

filter {
  mutate {
    uppercase => [ "fieldname" ]
  }
}

capitalize

  • 字段类型为 hash
  • 没有默认值

将字符串字段转化为首字母大写形式。

实例:

filter {
  mutate {
    capitalize => [ "fieldname" ]
  }
}

tag_on_failure

  • 字段类型为 hash
  • 默认值_mutate_error

如果在过滤器中发生了错误,这次操作将不会执行,并且提供一个标记标记当前事件。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

keep-go-on

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值