拆分后按一定顺序连接字段值的 Logstash。

Logstash Joining Field values in certain order after split.

我正在尝试使用项目的 logstash 解析 appache 访问日志。

为了让elasticsearch搜索更高效,我想对域名进行逆向。 例如:

www.example.com 变为 com.example.www

我尝试使用 logstash mutate 插件拆分域名并反转它。按原样解析时,我得到一个字段

使用下面的设置我得到以下结果:

设置:

 mutate{
        split => {"domainname" => "."}
        add_field => {"reversed_domainname" => ["%{[domainname][-1]}","%{[domainname][-2]}"]}
        join => {"reversed_domainname" => "."}
}

结果:

域名=["www","example","com"]

reversed_domainname =[ "com", "example" ]

一切都按预期工作,直到我没有得到结果中看到的连接函数 com.example

如果我从连接中删除 reversed(将域名拆分为“.”并使用“.”连接它们,我会得到相同的结果。

www.example.com 变为 www.example.com

我怎样才能以相反的顺序加入字段,因为它显然应该有效。

对于 logstash Pre-5.x,尝试:

mutate{
    split => {"domainname" => "."}
}

ruby {
    code  => "event['domainname'] = event['domainname'].reverse"
}

ruby 过滤器允许您执行 ruby 代码,使用内置函数反转数组。

超级笨蛋,但使用中间变量解决了问题。不知道这是 ment 还是 bug。我使用下面的插件来解决我的问题。

mutate {
        split => {"domainname" => "."}
   }
   ruby {
        code => "
                x = event['domainname']
                event['reversed_domainname'] = x.reverse.join('.')
                "
   }

   mutate{
        join => {"domainname" => "."}
   }