标签:indexing where term 开启 文档 evel 51cto logs f11
1.grafana的worldmmap面板插件"query":{
"bool":{
"filter":[{
"aggs":{
"4":{
"geohash_grid":{
"field":"geoip.location","precision":3},
"aggs":{
"3":{
"terms":{
"field":"geoip.city_name.keyword","size":10},
1)从上面可以看出,我们的worldmap插件把我们的配置具体化一elasticsearch的查询语句,我们的map的显示一般需要我们配置geoip.location和geoip.city_name.keyword两个参数。
2)其中的grafana能用geoip.city_name.keyword和kibana能用geoip.city_name,grafana用geoip.city_name作为field时,会报以下错误:
Fielddata is disabled on text fields by default. Set fielddata=true on [keyword.city_name] in order to load fielddata in memory by uninverting the inverted index.
报错让我开启fielddata,elasticsearch官方文档解释:“fielddata开启后会占用大量的内存,所以默认是关闭的,同时官方也给出了解决这个问题的办法,
Use the my_field.keyword field for aggregations, sorting, or in scripts,就是使用geoip.city_name.keyword字段进行查询聚合。
4.以geohashes作为数据源
这是我Logstash的filter利用geoip查询数据库解析IP地址位置信息的配置:
geoip {
source => "client_IP"
target => "geoip"
database => "/usr/share/logstash/GeoIP/GeoLite2-City.mmdb"
fields => ["location", "country_name", "city_name"]
}
下面是kibana的以json格式展示出来的地理信息
"geoip": {
"city_name": "Beijing",
"country_name": "China",
"location": {
"lat": 39.9289,
"lon": 116.3883
}
location获取经纬度,country_name和city_name分别取出国家和城市,我们grafana可以通过location的经纬度来显示数据。
grafana支持的数据库:ElasticSearch,The Geo-point data type with geohash indexing in Elasticsearch can also be used as a datasource for the worldmap panel. Grafana has a new bucket aggregate for Elasticsearch queries - Geo Hash Grid that allows grouping of coordinates. The Geo Hash Grid has a precision option where 1 is the highest level and 7 is the lowest.
grafana有一个新的buchet的聚合为 Geo Hash Grid,同时可以进行精度设置precision(1-7)。
5.下面我们进行配置
(1)进入worldmap的设置界面,
上面说我们以geohashes作为数据源的格式,location Data选取“geohash”,同时我们也要指定经纬度的字段,填写经纬度所在的“geoip.location”field,这个field必须设置,因为grafana通过这个字段才能找到经纬度的filed。
(2)metrics界面设置
(3)显示效果
Grafana Worldmap外网用户request地图监控
标签:indexing where term 开启 文档 evel 51cto logs f11
原文地址:http://blog.51cto.com/11078047/2178120