0

これは、jsonの Message タグにある Client Id と User 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}"
}

 }
}
4

2 に答える 2

0

これはうまくいきました!!

  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}"

        }
      }
于 2016-07-19T12:59:36.707 に答える
0

この 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 idとを削除しました。Client idただし、実際**にログにある場合は、パターンを次のように変更する必要があります: \*\*User id:\*\* %{NUMBER:user_id}, \*\*Client id:\*\*%{NUMBER:client_id}.

于 2016-07-12T08:16:27.040 に答える