使用geoid来匹配ip到geo位置并在kibana上可视化

时间:2016-06-10 11:31:33

标签: elasticsearch kibana elastic-stack

我正在关注this教程。

我的logstash配置的一部分看起来像(这一切都在过滤器里面):

 grok {
    match => {
      "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
    }
  }

geoip {
      source => "clientip"
      target => "geoip"
      database => "/Users/purajain/Desktop/purak/GeoLiteCity.dat"
      add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
      add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
    }
    mutate {
      convert => [ "[geoip][coordinates]", "float"]
    }

映射包括:

"geoip": {
              "dynamic": true,
              "properties": {
                 "location": {
                    "type": "geo_point"
                 }
              },
              "type": "object"
           },

现在我跑kibana:

enter image description here

这里我没有获得地理信息,因此我无法创建平铺地图可视化。它只是说没有数据。

enter image description here

我在这里做错了什么?请问我是否错过了提供任何重要信息。

1 个答案:

答案 0 :(得分:0)

将我的logstash配置文件中的grok模式更改为此解决了我的问题:

grok {
 match => {
   "message" => '%{COMMONAPACHELOG} %{QS}%{QS}'
 }
}