logstash利用ruby语言写复杂的处理逻辑

在应用中,需要对logstash读取的数据进行字符判断、字符串截取等操作。同时也需要用到正则表达式对某些匹配字符进行替换。
直接上配置文件逻辑:

input{
  stdin{
     # codec=>rubydebug
    }
}
filter{
#   codec=>rubydebug
    mutate{
    split=>["message"," "]
        add_field => {
            "field1" => "%{[message][0]}"
        }   
        add_field => {
            "field2" => "%{[message][1]}"
        }
        remove_field => ["message"]
    }

    ruby{
        code=>"
        length = event['field1'].length
    #   event['field1'] = event['field1'][length-1,length]
        lst = event['field1'][length-1,length]
        if lst == '{'
            index = event['field1'].rindex(',')
            jsonStr = '{' + event['field1'][0,index]
            event['field1'] = jsonStr.gsub(/\s/, '')
        elsif lst == '}'
            index = event['field1'].rindex(']')
            jsonStr = '{' + event['field1'][0,index]
            event['field1'] = jsonStr.gsub(/\s/, '')
        end
        #   event['field1'] = event['field1'].rindex(',')
        #   event['field1'] = Time.parse(event['field1']).to_f*1000
        "
    }
#   json{
#       source => "field1"
#       target => "field1"
#   }
}
output{
  stdout{
    codec=>rubydebug
  }
}

在ruby中,code=>中写入自己的处理逻辑,另外在logstash中每一次数据读取到的东西都是一个事件。
具体的ruby语法参考api

http://www.ziqiangxuetang.com/ruby/ruby-string.html
http://blog.sina.com.cn/s/blog_8184e03301013iqj.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值