Logstash - 将字符串中的字符拆分为2个字段

时间:2016-08-02 16:11:59

标签: logstash logstash-grok

我有一个CSV文件中的Logstash读取,其中包含一个字段my_id,是一个由数字组成的8位数字符串。

我希望输出文件有2个字段代替my_id。一个名为id_start的名称为前6位,id_end为最后2位数。

示例:my_id:12345678将成为id_start:123456和id_end:78

我对Logstash很新,但我一直在阅读,我认为我需要使用grok过滤器来做到这一点 - 到目前为止我创建第一个字段的尝试没有用:

filter {
  grok {
    match => ["id_start", "(?<my_id>.{6})"]
  }
}

我也发现很难在这类事情上找到好的例子,所以任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:1)

您可以使用ruby过滤器并编写自定义ruby代码,例如:

filter {
  ruby {
    code => "
        event['id_start'] = event['my_id'][0..6]
        event['id_end'] = event['my_id'][6..8]
        "
  }
}

答案 1 :(得分:0)

这与Logstash 5.x +不同,它们实现了getter和setter以及对变量的限制访问。

ruby {
  code => "
      event.set('[id_start]', event.get('[my_id]')[0..6])
      event.set('[id_end]', event.get('[my_id]')[6..8])
      "
}