文档章节

Kibana的图形化——Tile Map

 红心A
发布于 2016/11/18 15:29
字数 1065
阅读 516
收藏 1
点赞 0
评论 0

简介

  当我们查看访问网站的流量的来源时,往往通过awk+sed或其他工具分析日志文件,有没有一种方式可以实时查看并且在地图上直观的表现出来?当然,我们的Kibana就可以做到,下面我们来看看如何配置吧。

配置

本文是在http://http://blog.csdn.net/yanggd1987/article/details/50460246博文基础上进行配置,所有的配置文件都可在博文中找到。

1.安装GeoIP数据库

cd /usr/local/logstash/etc
curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"
gunzip GeoLiteCity.dat.gz
  • 1
  • 2
  • 3

2.配置logstash使用GeoIP

只需要在原来的logstash.conf中添加filter即可

vim /usr/local/logstash/etc/logstash.conf
input {
        file {
                path => "/data/nginx/logs/access_java.log"
                type => "nginx-access"
                start_position => "beginning"
                sincedb_path => "/usr/local/logstash/sincedb"
                codec => "json"
        }
}
filter {
        if [type] == "nginx-access" {
                geoip {
                        source => "clientip"
                        target => "geoip"
                        database => "/usr/local/logstash/etc/GeoLiteCity.dat"
                        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
                        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
                }
                mutate {
                        convert => [ "[geoip][coordinates]", "float"]
                }
        }
}
output {
        if [type] == "nginx-access" {
                elasticsearch {
                        hosts => ["10.10.20.16:9200"]
                        manage_template => true
                        index => "nginx-access-%{+YYYY-MM}"
                }
        }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

3.重启logstash即可。

Kibana出图及trouble shooting

访问10.10.10.16:5601,登录kibana

1.“Settings”刷新“Index Patterns” 

刷新后,我们就可以看到geoip的相关字段了。

2.“Visualize”新建Tile map 

3.通过聚合器来创建map 

如图:报错“No Compatible Fields: The “[nginx-access-]YYYY-MM” index pattern does not contain any of the following field types: geo_point”

原因:索引格式为[nginx-access-]YYYY-MM的日志文件由logstash输出到Elasticsearch;在 elasticsearch 中,所有的数据都有一个类型,什么样的类型,就可以在其上做一些对应类型的特殊操作。geo信息中的location字段是经纬度,我们需要使用经纬度来定位地理位置;在 elasticsearch 中,对于经纬度来说,要想使用 elasticsearch 提供的地理位置查询相关的功能,就需要构造一个结构,并且将其类型属性设置为geo_point,此错误明显是由于我们的geo的location字段类型不是geo_point。

我们可以通过以下方式验证一下:

curl -XGET http://127.0.0.1:9200/nginx-access-2016-01/_mapping/
{"nginx-access-2016-01":{"mappings":{"nginx-access":{"properties":{"@timestamp":{"type":"date","format":"dateOptionalTime"},"@version":{"type":"string"},"cache_status":{"type":"string"},"clientip":{"type":"string"},"geoip":{"properties":{"area_code":{"type":"long"},"city_name":{"type":"string"},"continent_code":{"type":"string"},"coordinates":{"type":"double"},"country_code2":{"type":"string"},"country_code3":{"type":"string"},"country_name":{"type":"string"},"dma_code":{"type":"long"},"ip":{"type":"string"},"latitude":{"type":"double"},"location":{"type":"double"},"longitude":{"type":"double"},"postal_code":{"type":"string"},"real_region_name":{"type":"string"},"region_name":{"type":"string"},"timezone":{"type":"string"}}},"host":{"type":"string"},"http_host":{"type":"string"},"message":{"type":"string"},"method":{"type":"string"},"path":{"type":"string"},"protocol":{"type":"string"},"referer":{"type":"string"},"status":{"type":"string"},"tags":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"},"useragent":{"type":"string"}}}}}}
  • 1
  • 2

其中”location”:{“type”:”double”},字段类型是double,而不是geo_point,因此会报图中的错误。

**解决方法:**Elasticsearch 支持给索引预定义设置和 mapping(前提是你用的 elasticsearch 版本支持这个 API,不过估计应该都支持)。其实ES中已经有一个默认预定义的模板,我们只要使用预定的模板即可,我们在ES中看下模板。

那为什么还会报错呢?因为默认预定义的模板必须只有匹配 logstash-* 的索引才会应用这个模板,由于我们在logstash中使用的是[nginx-access-]YYYY-MM索引方式,因此不会匹配到默认模板,我们只需要改一下索引方式即可,如下:

vim /usr/local/logstash/etc/logstash.conf
input {
        file {
                path => "/data/nginx/logs/access_java.log"
                type => "nginx-access"
                start_position => "beginning"
                sincedb_path => "/usr/local/logstash/sincedb"
                codec => "json"
        }
}
filter {
        if [type] == "nginx-access" {
                geoip {
                        source => "clientip"
                        target => "geoip"
                        database => "/usr/local/logstash/etc/GeoLiteCity.dat"
                        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
                        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
                }
                mutate {
                        convert => [ "[geoip][coordinates]", "float"]
                }
        }
}
output {
        if [type] == "nginx-access" {
                elasticsearch {
                        hosts => ["10.10.20.16:9200"]
                        manage_template => true
                        index => "logstash-nginx-access-%{+YYYY-MM}"
                }
        }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

将索引改为index => “logstash-nginx-access-%{+YYYY-MM}”即可,重启logstash,登录Kibana刷新后即可。

4.生成图片并保存

ok,每个城市的访问量就在map上显示了。

5.“Dashboard”载入Visual保存的map即可进行图形化展示了。

总结

  由于我们的nginx日志格式使用的是json,因此在logstash中的filter中配置比较简单;若nginx日志不是使用的是json,在logstash中的filter中就需要配合grok进行过滤,相对麻烦一些,性能也比json格式的差。

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 13
码字总数 2226
作品 0
东城
Kibana配置图形数据展示

利用elasticsearch收集到的数据,展示在kibana上 在Logstash配置完成,将数据输出到elasticsearch中 启动Kibana,链接elasticsearch 在setting页面 回检测到Time-fields name Create 按钮就可...

aolens
2017/05/26
0
0
Kibana 官方示例

备份:https://yunpan.cn/cPz4uxZhJeJdv (提取码:4667) 官方网站: https://www.elastic.co/guide/en/kibana/current/getting-started.html 中文站点: http://kibana.logstash.es/content......

clgo
2016/05/08
5.2K
0
ELK完整搭建流程(小白入门记)

最近就职量化派(北京众信利民信息技术有限公司),做了点ELK的工作。 客官~下面直接上菜! 首先直接来张思维导图,演示大众化的入门级的ELK搭建流程。 (注意~ELK的启动顺序按照 Elasticsea...

杨春炼
2016/04/21
6.2K
6
ELK采集之nginx 日志高德地图出城市IP分布图

最近确实忙得像狗一样,很久没有更新博客了。今天有点空闲时间写一些相关的ELK stack的博客;本来想做成一些列,后面有时间的话再更新吧 1、采用拓扑: 角色扮演: Agent:采用logstash,IP:...

小罗ge11
2017/01/12
0
0
ELK收集nginx日志并用高德地图展示出IP

(一)测试的环境 agentd:192.168.180.22 ES:192.168.180.23 kibana:192.168.180.23 采用的拓扑:logstash -->ES-->kibana (二)实施步骤: (1)logstsh具体配置: 1,配置nginx日志格式,...

科技小能手
2017/11/12
0
0
MindManager的优势和特性

目前市面上的思维导图软件有很多,但是大多数人却只用Mindmanager这一款软件,这不仅仅是其产品品牌的知名度,更主要的还是依靠其产品优势和特性更加符合用户的使用习惯,因此受到了市场的欢...

neluzyy1
2015/03/17
0
0
【入门篇】logstash、elasticsearch、kibana搭建日志平台

1、下载logstash a、官方下载地址:https://www.elastic.co/downloads/logstash b、解压:tar -xzvf logstash-5.1.1.tar.gz c、设置用户测试的配置文件:vim logstatsh_test.conf,编辑内容如...

pistolove
2016/12/14
0
0
利用Kibana图表化Elasticsearch中的数据

利用Kibana图表化Elasticsearch中的数据 1. 背景 Kibana 是一个开源分析和可视化平台,旨在可视化操作 Elasticsearch 。Kibana可以用来搜索,查看,和存储在 Elasticsearch 索引中的数据进行...

zwq912318834
2017/11/28
0
0
logstash、elasticsearch、kibana搭建日志平台

1、下载logstash a、官方下载地址:https://www.elastic.co/downloads/logstash b、解压:tar -xzvf logstash-5.1.1.tar.gz c、设置用户测试的配置文件:vim logstatsh_test.conf,编辑内容如...

binhu
05/23
0
0
2017 12-01 ELK的应用

一.搜索引擎的介绍 (1)索引组件:获取数据-->建立文档-->文档分析-->文档索引(倒排索引) (2)搜索组件:用户搜索接口-->建立查询(将用户键入的信息转换为可处理的查询对象)-->搜索查询-->...

楠人帮
2017/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

告警系统主脚本、告警系统配置文件、告警系统监控项目

告警系统主脚本 为方便需要,所有的shell脚本放到 /usr/local/sbin/ 目录下 切换到 /usr/local/sbin/ 目录下,创建告警系统脚本 #!/bin/bash#Written by aming.# 是否发送邮件的开关(1表...

Zhouliang6
7分钟前
1
0
不要再问我跨域的问题了

原文链接:web.jobbole.com 【RTC实时互联网大会 限时免费 马上报名】www.bagevent.com 写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内...

阿K1225
9分钟前
0
0
Tomcat配置虚拟路径

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="/data/dispute_https/headPortrait/" path="/headPortrait" reloadable="true"/> <!-- 该文件名为headPortrait.xml,放在${tomca......

Helios51
10分钟前
0
0
开源PaaS Rainbond 3.6.1 Released

本次3.6.1版本更新,重点修复了3.6.0版本部分情况下会出现的BUG,同时改进了内部市场、参数验证、历史消息等功能,详细更新记录如下—— 3.6.1 功能改进 云帮初次使用跳转至注册页面 消息添加...

好雨云帮
11分钟前
0
0
Unsupported major.minor version 52.0

执行代码的jdk版本 低于 编译的jdk版本 其中52.0 对应的就是 jdk1.8版本。

@林文龙
11分钟前
0
0
聊聊spring cloud的AbstractLoadBalancingClient

序 本文主要研究一下spring cloud的AbstractLoadBalancingClient AbstractLoadBalancingClient spring-cloud-netflix-ribbon-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/netfli......

go4it
12分钟前
0
0
博客改版通知

先上博客地址 --> http://metaphors.name 最近将博客从 Jekyll 迁到了 Hexo,所以简书、开源中国、博客园、CSDN文章中的的部分图片丢了,原文链接也不可用了,不过没关系,原文链接都会转到博...

Metaphors
13分钟前
0
0
vue基础知识练习

一、Hello World <div id="itany">{{msg}} <!-- 两对大括号{{}}称为模板,用来进行数据的绑定显示在页面中 --> </div><script src="js/vue.js"></script><script>var vm=new Vue({......

一个yuanbeth
16分钟前
0
0
spring @Transactional注解参数详解

原文:事物注解方式: @Transactional 当标于类前时, 标示类中所有方法都进行事物处理 , 例子: 1 @Transactional public class TestServiceBean implements TestService {} 当类中某些方法不需...

binhu
19分钟前
0
0
CORS 跨域实践

本文首发于个人微信公众号《andyqian》,期待你的关注~ 前言 系统通常都是由单体应用逐渐演化而来,演化成为前后端分离的分布式应用。在享受分布式系统带来的诸多好处之时,随之而来的也有不...

andyqian
26分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部