什么是格罗克过滤器



这是以下 json 示例,我想根据客户端 ID 和用户 ID 进行过滤和索引,这些 ID 和用户 ID 位于 json 中的消息标记中。

"message": "12 Jul 2016 15:28:14,851 http-bio-9080-exec-3 [INFO ]    corporate_access                                    - Request details - Uri: /corporate/create, Ip: x.x.x.x, User id: 12461, Client id:11048",

我想根据客户端 ID 和用户 ID 为用户活动编制索引。我在 logstash conf 中的过滤器是:

filter {
  grok {
match => {
        "message" => "Uri: %{URIPATHPARAM:url}%{SPACE}Ip: %{IP:ip},%{SPACE}User id: %{WORD:Userid}, Client id:%{WORD:Clientid}"
}
 }
}

您可以使用此 grok 过滤器:

grok {
    match => {
        "message" => [
            "%{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{GREEDYDATA} [%{DATA}]%{SPACE}%{WORD}%{SPACE}- Request details - Uri: %{URIPATH}, Ip: %{IP}, User id: %{NUMBER:user_id}, Client id: %{NUMBER:client_id}"
        ]
    }
}

注意:我已经删除了User idClient id周围的**,因为它看起来只是为了强调日志行的有趣部分。但是,如果您的日志中确实有**,则必须使用以下命令修改模式:**User id:** %{NUMBER:user_id}, **Client id:**%{NUMBER:client_id}

这奏效了!!

  filter {
      if [type] == "corporate-access" {
        grok {
          break_on_match => false
          match => { "message" => "Uri: %{URIPATHPARAM:url}%{SPACE}" }
           match => { "message" => "User id: %{WORD:Userid}, Client id:%{WORD:Clientid}" }
           add_tag => "%{Userid}"
           add_tag => "%{Clientid}"
           add_tag => "%{url}"
        }
      }

相关内容

  • 没有找到相关文章

最新更新