地理分布热度图
为Grafana
或Kibana
绘制地理分布热度图,需要对ELK组件进行相关设置
Logstash geoip插件
geoip
过滤器根据来自Maxmind GeoLite2
数据库的数据添加有关IP地址的地理位置的信息。
详细配置见Geoip filter plugin
1
2
3
4
geoip {
source => "[request_ip]"
remove_field => ["tags", "[geoip][latitude]", "[geoip][longitude]", "[geoip][continent_code]", "[geoip][country_code3]", "[geoip][country_code2]"]
}
Logstash输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"nginx.access.http_version" => "1.1",
"geoip" => {
"city_name" => "Hebei", #城市地址
"timezone" => "Asia/Shanghai", #时区
"ip" => "123.183.135.141", #IP地址
"latitude" => 39.8897, #纬度
"longitude" => 115.275, #经度
"country_name" => "China", #国家的名字
"country_code2" => "CN", #国家简写
"continent_code" => "AS", #洲
"country_code3" => "CN",
"region_name" => "Hebei", #地区名称
"location" => { #位置
"lon" => 115.275, #经度
"lat" => 39.8897 #维度
}
}
ES索引模板
通过配置 ES索引模板 或 ES索引mapping 设置geoip
的类型
使用
nginx-*
与kong-*
的es模板已设置geoip
的类型
ES索引模板
使用ES索引模板设置geo_point
类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"properties" : {
"geoip" : {
"dynamic" : true,
"properties" : {
"ip" : {
"type" : "ip"
},
"location" : {
"type" : "geo_point"
},
"latitude" : {
"type" : "half_float"
},
"longitude" : {
"type" : "half_float"
}
}
}
}
ES索引mapping
1
2
3
4
5
6
7
8
"geoip" : {
"properties" : {
"location" : {
"type" : "geo_point",
"ignore_malformed": "true"
}
}
}
ignore_malformed
若为true
,格式错误的地理位置被忽略。若为false
,格式错误的地理位置引发异常并拒绝整个文档。