初探ELK-使用geoip插件来制作可视化的地图

2016/11/17

一、前提
1、本次操作是在前述文章的基础上添砖加瓦。
2、思路
1)通过 logstash 将 clientip 识别成 geoip.location 等数据
2)然后更新 ES 的模版,标记 geoip.location 这个 properties 的 type 为 geo_point
3)最后在 kibana 上选择 "Visualize -> Tile Map",指定一个 search,选择 buckerts 为 geo_point 类型的 properties 即可展示。

二、配置
1、logstash 配置的调整
[[email protected] ~]# cd /etc/logstash/
[[email protected] logstash]# curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"
[[email protected] logstash]# gunzip GeoLiteCity.dat.gz
[[email protected] logstash]# vim conf.d/filebeat.conf

调整 filter 这一段,增加 geoip 插件:
filter {
(略)
    if[type] =~ "NginxAccess-" {
        grok {
            patterns_dir => ["/etc/logstash/patterns.d"]
            match => {
                "message" => "%{NGINXACCESS}"
            }
        }
        date {
            match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
            remove_field => [ "timestamp" ]
        }
        geoip {
            source => "clientip"
            target => "geoip"
            database => "/etc/logstash/GeoLiteCity.dat"
        }
    }
(略)
}

[[email protected] logstash]# service logstash restart

2、 ES 模版的调整
Geo-points 不适用 dynamic mapping 因此这类项目需要显式的指定:
本例需要将 geoip.location 指定为 geo_point 类型,则在模版的 properties 中增加一个项目,如下所示:
[[email protected] ~]# vim /tmp/elasticsearch.template.filebeat.json 
        "geoip" : {
          "properties" : {
            "location" : {
              "type" : "geo_point",
              "index": "not_analyzed"
            }
          }
        }
[[email protected] ~]# curl -XPUT ‘http://localhost:9200/_template/filebeat?pretty‘ [email protected]/tmp/elasticsearch.template.filebeat.json
清理一下之前生成的 index 重新生成内容 filebeat-* 匹配的所有 index
[[email protected] ~]# curl -XDELETE ‘http://localhost:9200/filebeat-*?pretty‘

3、 kibana 页面的调整
在 kibana 上选择 "Settings -> Indices",找到指定的 Index Patterns 后,选择:“reflesh field list” 操作。
查看 Discover 页面,可以发现一组 geoip 相关的 field,据此可以保存一个 search 用于创建 Tile Map 来展示。

三、问题
1、如何改变 WMS 服务
默认使用的 WMS 服务(Elastic Tile Services)可能不合心意,此时,可以在 Visualize 界面选择:“Options -> WMS compliant map server”,使用其他的 WMS 服务。
问题的关键变成,哪里有 WMS 服务?自己架设一个还是有现成的?

默认的配置是:
[[email protected] ~]# /opt/kibana/bin/kibana -V 
4.6.1
[[email protected] ~]# cat /opt/kibana/src/ui/public/config/defaults.js |grep -i wms
      ‘visualization:tileMap:WMSdefaults‘: {
          url: ‘https://basemap.nationalmap.gov/arcgis/services/USGSTopo/MapServer/WMSServer‘,
        description: ‘Default properties for the WMS map server support in the tile map‘

ZYXW、参考
1、elastic docs
https://www.elastic.co/guide/en/elasticsearch/guide/current/geopoints.html
https://www.elastic.co/guide/en/kibana/current/tilemap.html
2、Mapping Cityname to GeoPoint from Logstash to Elasticsearch
http://stackoverflow.com/questions/32779269/mapping-cityname-to-geopoint-from-logstash-to-elasticsearch
3、How To Map User Location with GeoIP and ELK (Elasticsearch, Logstash, and Kibana)
https://www.digitalocean.com/community/tutorials/how-to-map-user-location-with-geoip-and-elk-elasticsearch-logstash-and-kibana
时间: 2024-12-29 17:55:19

初探ELK-使用geoip插件来制作可视化的地图的相关文章

JQuery实用技巧--学会你也是大神(1)——插件的制作技巧

  前  言 JRedu 学习之前,首先我们需要知道什么是JQuery? JQuery是一个优秀的javascript框架. JQuery是继Prototype之后又一个优秀的Javascript框架.其宗旨是--WRITE LESS,DO MORE,写更少的代码,做更多的事情.它是轻量级的js库,这是其它的js库所不及的,它兼容CSS3,还兼容各种常用浏览器. JQuery是一个快速的,简洁的JavaScript库,使用户能更方便地处理HTML documents.events.实现动画效果,

unity编辑器和插件的制作(四.1)

好久没有更新,有些急事终于处理完了,接着更新博客! 废话不多说,接着上面的讲,今天我们来接着讲述. 前面说到 怎么去建立一个自己 ,用代码绘制一个色块,今天我们来讲述下,怎么绘制一个图片在场景里面. 首先 我们先做下图片的功课. 在unity中图片的种类分了很多,默认是:Texture, 还有其他的一些属性. 有些人可以会遇到 我放进去的素材为什么编译之后会变模糊那,这是由于,在unity中你没有修改图片的属性,导致的. 在 texture模式下, 我们来分析下这种图片的属性, wrap mod

c# 反射与插件(插件的制作与应用 实现的流程)

=================插件实施与应用基本流程 1,开发此程序的人 提供接口(提供DLL) 2,第三方开发团队(开发插件)严格按照接口,实现功能.并打包成DLL 3,使用者下载第三方开发团队开发出来的插件,并把查询复制到程序相应的文件夹里 =================程序开发思想 1,在程序中创建一个类库,在内库中定义一个接口 2,第三方开发团队拿到接口,并是实现其功能.打包成dll文件 3,copy第三方团队开发的dll到程序指定的目录 4,找到dll存放的路径 5,遍历所有d

制作可视化日历,输入日期得到当月 月历表

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Scanner; /** * 制作可视化日历,输入日期得到当月 月历表 * */ public class CalendarDemo { public static voi

【百度地图API】如何制作孪生姐妹地图?

原文:[百度地图API]如何制作孪生姐妹地图? 任务描述: 我想要两张一模一样的地图!我想要双子地图!我想要孪生姐妹地图! 好好好,统统满足大家! 在这里我不需要使用百度地图API提供的地图缩略图控件,而是自己动手做一对双胞胎地图! 如何实现? 创建两张地图,map1和map2,他俩的中心点和地图级别(放大倍数)不同. 当鼠标移动map1的中心点时,map2的中心点会随着一起变化,最终和map1的中心点一致. 同理,可以实现用鼠标滚轮放大缩小地图. 操作试试: 移动左边的地图,右边的地图会随着一

【云图】如何制作东莞酒店地图?

原文:[云图]如何制作东莞酒店地图? 摘要:今天到深圳参加第二届电博会,果然不像车展或者漫展那样,会有萌妹纸,大家都好素净.晚上去东莞玩一圈,发现订不到酒店啊!各种商业中心关闭啊.于是想,那自己制作一张东莞酒店地图玩玩吧.于是在咖啡厅开始写代码,顺便等别人把酒店定好……啊,我果然是程序猿的命麽?!嗯,回到主题,制作好酒店地图,需要增加功能,就是按照星级,或者行政区进行分类查询检索.而且,还可以在云图上任意增减数据.真是出门在外居家旅行必备佳品,哈哈. ----------------------

如何制作手绘地图?如何将图片图层精确地对准在地图上?

最近大家常常在问,如何制作鼓浪屿手绘地图,如何将气象图层叠加在高德地图上啊? 其实地图上的研发量很小,几行代码就可以搞定. 关键是在图片绘制上,有较高的要求. 下面就用简单粗暴的方法来实现,如有不妥之处,请大家轻喷. 确定图片绘制范围 以鼓浪屿地图为例,打开框选取点工具:http://zhaoziang.com/amap/getBounds.htm 获取到左下角和右上角的坐标,这个就是图片的显示范围. 如下图,3是左下角,1是右上角. bounds: new AMap.Bounds( [118.

百度地图API制作类似 百度地图的路线导航界面并实现简单的路线规划功能

之前我们讲了怎么在百度地图上设置Marker(如A点..) 和弹出框(跟随Marker的,Marker移动的时候也是会跟着移动的),接着又觉得百度地图自带的放大缩小不(fei)是(chang)很(de)漂(chou)亮,我们自定义了放大缩小的控件,本篇我们将制作类似百度地图API制作类似百度地图的公交/驾车/行走/查询界面并实现简单的路线规划功能. 先来张截图:   这个界面的实现其实是使用的SlidingUpPanelLayout 开源库从而使得可以跟随手指下拉上划: 其实布局也没什么好讲的,

利用ASP.NET里自带的站点地图工具制作网站站点地图

站点地图很方便能快速给我们导航我们要去访问的地址,能按层级关系分门别类,给用户一个很好的用户体验,很好的看到自己当前所在的网站位置 站点地图,又称网站地图,它就是一个页面,上面放置了网站上所有页面的链接.大多数人在网站上找不到自己所需要的信息时,可能会将网站地图作为一种补救措施.搜索引擎蜘蛛非常喜欢网站地图. 网站地图是一个网站所有链接的容器.很多网站的连接层次比较深,蜘蛛很难抓取到,网站地图可以方便搜索引擎蜘蛛抓取网站页面,通过抓取网站页面,清晰了解网站的架构,网站地图一般存放在根目录下并命名