logstash使用

 

一、mutate 插件介绍

 

1. 描述

 

muatet 过滤器允许用户对字段进行改变,可以重命名、替换和修改事件中的字段。

 

2. 操作顺序

 

  1. coerce
  2. rename
  3. update
  4. replace
  5. convert
  6. gsub
  7. uppercase
  8. capitalize
  9. lowercase
  10. strip
  11. split
  12. join
  13. merge
  14. copy

 

二、convert

 

  • 功能:类型转换
  • 介绍:将目标字段转换为目标类型
  • 类型介绍:
    • integer:将字段转换为整数, 逗号分隔符和点小数 1,000=1000 1.000=1
    • integer_eu:将字段转换为整数, 点分隔符和逗号小数 1,000=1 1.000=1000
    • float:将字段转换为浮点数, 逗号分隔符和点小数
    • float_eu:将字段转换为浮点数, 点分隔符和逗号小数
    • string:将字段转换为字符串
    • boolean:将字段转换为布尔值
      • true:1、1.0、“true”、“t”、“yes”、“y”、“1”、“1.0”
      • false:0、0.0、“false”、“f”、“no”、“n”、“0”、“0.0”、“”
      • 所有其他值直接通过而不进行转换并记录警告消息

 

filter{
    mutate{
        convert => {
            "message" => "integer"
            "[log][syslog][facility][code]" => "boolean"
        }
    }
}

 

{
    "log": {
        "syslog": {
            "facility": {
                "code": false,
                "name": "kernel"
            },
            "priority": 0,
            "severity": {
                "code": 0,
                "name": "Emergency"
            }
        }
    },
    "message": 173
}

 

三、copy

 

  • 功能:复制
  • 介绍:将现有字段复制到另一个字段,现有的目标字段将会被覆盖

 

filter{
    mutate{
    	# 将message的值复制给type
        copy => {
            "message" => "type"
        }
    }
}

 

四、gsub

 

  • 功能:正则替换
  • 介绍:将正则表达式与字段匹配,将匹配字符串替换为替换字符串

 

filter{
    mutate{
        gsub => [
        	# 将message字段中的所有a都替换成b
           # "message","a","b"
           # 支持正则替换
           "message","a+","b"
        ]
    }
}

 

五、join

 

  • 功能:数组连接
  • 介绍:使用分隔符连接数组,如果目标不是数组则不执行操作

 

filter{
    mutate{
    	# 将message字段按照空格拆分成数组
        split => {
            "message" => " "
        }
       # 将message数组按照,连接
        join => {
            "message" => ","
        }
    }
}

 

  {
         "event" => {
        "original" => "姚明 刘翔"
    },
       "message" => "姚明,刘翔",
}

 

六、lowercase

 

  • 功能:小写转换
  • 介绍:将字符串中的字母全部变为小写

 

filter {
    mutate {
    	# 将message字段变为小写
        lowercase => ["message"]
    }
}

 

{
      "event" => {
        "original" => "Python"
    },
    "message" => "python"
}

 

七、merge

 

  • 功能:合并
  • 介绍:将两个字段合并为一个数组

 

filter {
    mutate {
    	# 将@timestamp字段与message字段合并为数组
        merge => {
            "message" => "@timestamp"
        }
    }
}

 

{
    "@timestamp" => 2022-04-25T09:28:20.531150Z,
         "event" => {
        "original" => "Python"
    },
       "message" => [
        [0] "Python",
        [1] 2022-04-25T09:28:20.531150Z
    ]
}

 

八、coerce

 

  • 功能:字段默认值
  • 介绍:如果目标字段为空,则为该字段赋默认值

 

filter {
    mutate {
    	# 如果field1字段为空则设置为0
        coerce => {
            "field1" => 0
        }
    }
}

 

九、rename

 

  • 功能:重命名
  • 介绍:将目标字段重命名为新的名称,如果新的字段名原本就存在,则覆盖原来的字段

 

filter {
    mutate {
    	# 将@timestamp字段重命名为time
        rename => {
            "@timestamp" => "time"
        }
    }
}

 

{
       "time" => 2022-04-25T09:35:23.718005Z,
    "message" => "123"
}

 

filter {
    mutate {
    	# 将message字段覆盖为@timestamp的值
        rename => {
            "@timestamp" => "message"
        }
    }
}

 

{
      "event" => {
        "original" => "123"
    },
    "message" => 2022-04-25T09:36:55.760534Z
}

 

十、replace

 

  • 功能:替换
  • 介绍:将目标字段的值替换为新的值,如果该字段不存在,则添加该字段,新值中可以包含变量

 

filter{
      mutate {
      # 将message字段替换为新的值
        replace => {
            "message" => "这是被替换后的消息"
        }
      }
}

 

filter{
      mutate {
      # 将message字段替换为host.ip的值
        replace => {
            "message" => "%{[host][ip]}"
        }
      }
}

 

十一、split

 

  • 功能:分隔
  • 介绍:使用指定分隔符将字符串拆分为数组

 

filter {
    mutate {
        # 将message字段按照message分隔
        split => {
            "message" => " "
        }
        # 取出message分隔后的数组第一个元素
        add_field => {"姓名"=>"%{[message][0]}"}
        # 取出message分隔后的数组第二个元素
        add_field => {"性别"=>"%{[message][1]}"}
        # 取出message分隔后的数组第三个元素
        add_field => {"年龄"=>"%{[message][2]}"}
    }
}

 

十二、strip

 

  • 功能:去除空格
  • 介绍:去掉指定字段首尾的空格

 

filter {
    mutate {
        strip => ["message"]
    }
}

 

{
      "event" => {
        "original" => "  123   "
    },
    "message" => "123"
}

 

十三、update

 

  • 功能:更新字段信息
  • 介绍:更新指定字段的内容,如果字段不存在,则不执行任何操作

 

filter {
    mutate {
        update => {
            "message" => "新的字段信息"
        }
    }
}

 

{
      "event" => {
        "original" => "原本的字段信息"
    },
    "message" => "新的字段信息"
}

 

十四、uppercase

 

  • 功能:字段内容大写
  • 介绍:将指定字段的字母变为大写

 

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

 

{
      "event" => {
        "original" => "Python"
    },
    "message" => "PYTHON"
}

 

十五、capitalize

 

  • 功能:首字母大写
  • 介绍:将字段内容的首字母变为大写

 

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

 

{
      "event" => {
        "original" => "python"
    },
    "message" => "Python"
}
全文完
本文由 简悦 SimpRead 优化,用以提升阅读体验
使用了 全新的简悦词法分析引擎 beta点击查看详细说明
 
一、mutate 插件介绍1. 描述2. 操作顺序二、convert三、copy四、gsub五、join六、lowercase七、merge八、coerce九、rename十、replace十一、split十二、strip十三、update十四、uppercase十五、capitalize
 
posted @ 2023-02-03 17:42  游走De提莫  阅读(54)  评论(0编辑  收藏  举报