【问题标题】:Add a new field by applying a regex with Logstash通过使用 Logstash 应用正则表达式来添加新字段
【发布时间】:2017-02-23 15:02:29
【问题描述】:

我想通过在名为“referer”的字段上应用正则表达式来添加一个新字段。所以objectif是有一个基于正则表达式匹配的新字段! 这是我的推荐人的一个例子:

http://staticftv-a.akamaihd.net/player/bower_components/player_flash/dist/FranceTVNVPVFlashPlayer.akamai-05bcfb8a5a233afa06de66e8c03d6642.swf

我想要一个只有 staticftv-a.akamaihd.net

的新字段

这是我的logstash conf:

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"

    }
}

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

怎么办?谢谢!

【问题讨论】:

    标签: logstash kibana elastic-stack logstash-grok logstash-configuration


    【解决方案1】:

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

    URI (\/)[^\/\+]+
    

    实际上给出的值是/staticftv-a.akamaihd.net

    您可以在 grok 过滤器中将其用作:

    grok {    
        match => { 
           "message" => "%{URI:referer}"   <-- the value looks like /staticftv-a.akamaihd.net
        }    
    }
    

    要删除多余的正斜杠,您可以使用 gsub

    mutate {
        gsub => [ 
            "referer", "/", "",
        ]
    }
    

    然后您可以简单地用新值覆盖现有消息:

    grok {    
        match => { 
           overwrite => ["message"]
        }    
    }
    

    grok debugger。我不确定这是否是提取上述所需值的有效方法。但希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多