通过应用带有Logstash的正则表达式添加新字段

通过应用带有Logstash的正则表达式添加新字段,logstash,kibana,elastic-stack,logstash-grok,logstash-configuration,Logstash,Kibana,Elastic Stack,Logstash Grok,Logstash Configuration,我想通过在名为“referer”的字段上应用正则表达式来添加一个新字段。因此,目标是在正则表达式匹配的基础上创建一个新字段! 这是我的推荐人的一个例子: http://staticftv-a.akamaihd.net/player/bower_components/player_flash/dist/FranceTVNVPVFlashPlayer.akamai-05bcfb8a5a233afa06de66e8c03d6642.swf 我想要一个新的字段,只包含staticftv-a.akama

我想通过在名为“referer”的字段上应用正则表达式来添加一个新字段。因此,目标是在正则表达式匹配的基础上创建一个新字段! 这是我的推荐人的一个例子:

http://staticftv-a.akamaihd.net/player/bower_components/player_flash/dist/FranceTVNVPVFlashPlayer.akamai-05bcfb8a5a233afa06de66e8c03d6642.swf
我想要一个新的字段,只包含staticftv-a.akamaihd.net

这是我的日志存储配置:

input {

    file {
            path => "/home/ec2-user/AggregateByReferer.csv"
            start_position => "beginning"
            sincedb_path => "/dev/null"
    }
}

filter {

    csv {
        separator => ","
        columns => ['session_number', 'referer', 'request_number_total']
    }


    grok { 

       match => { "message" => "%{URI:referer}" }

    }


}


output {

    elasticsearch {

    index => "referer"

    }
}
有了这段代码,“message”字段给了我一个奇怪的内容。这是Kibana的结果:


怎么办?谢谢

我刚刚在模式文件中获得了
regex
模式:

它实际给出的值为
/staticftv-a.akamaihd.net

您可以在grok过滤器中使用它,如下所示:

grok {    
    match => { 
       "message" => "%{URI:referer}"   <-- the value looks like /staticftv-a.akamaihd.net
    }    
}
然后您可以简单地用新值覆盖现有消息:

grok {    
    match => { 
       overwrite => ["message"]
    }    
}
这个。我不确定这是否是提取上述所需值的有效方法。但希望这有帮助

mutate {
    gsub => [ 
        "referer", "/", "",
    ]
}
grok {    
    match => { 
       overwrite => ["message"]
    }    
}