使用 geoid 将 ip 与地理位置匹配并在 kibana 上可视化
Use geoid to match ip to geo locations and visualize that on kibana
我正在学习 this 教程。
我的部分 logstash 配置看起来像(这一切都在 filter 中):
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 :
这里我没有获取 geoip 信息,因此我无法创建瓦片地图可视化。它只是说没有数据。
我在这里做错了什么?请询问我是否遗漏了任何重要信息。
将我的 logstash 配置文件中的 grok 模式更改为此解决了我的问题:
grok {
match => {
"message" => '%{COMMONAPACHELOG} %{QS}%{QS}'
}
}
我正在学习 this 教程。
我的部分 logstash 配置看起来像(这一切都在 filter 中):
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 :
这里我没有获取 geoip 信息,因此我无法创建瓦片地图可视化。它只是说没有数据。
我在这里做错了什么?请询问我是否遗漏了任何重要信息。
将我的 logstash 配置文件中的 grok 模式更改为此解决了我的问题:
grok {
match => {
"message" => '%{COMMONAPACHELOG} %{QS}%{QS}'
}
}