在之前的文章 “使用 Kibana Timelion 进行时间序列分析”,我已经介绍了 Kibana 中的 Timelion 可视化工具。在今天的文章中,我将使用 Timelion 工具来分析地震数据。这里的地图数据来源于 1994 Northrige earthquake。我们可以在地址 www.ncedc.org/anss/catalog-search.html 里下载到数据。

准备数据

数据来源于 ElasticON tour16 demo。我们可以使用如下的命令来进行下载:

git clone https://github.com/tbragin/elasticon_tour16_demo

接着解压数据集 ncedc-earthquakes-dataset.tar.gz:

tar xzf ncedc-earthquakes-dataset.tar.gz

上面的命令解压出来两个文件:blasts.txt 及 earthquakes.txt。

我们查看文件 ncedc-earthquakes-logstash.conf,并修改 Elasticsearch URL 为自己的 Elasticsearch URL:

ncedc-earthquakes-logstash.conf

input {stdin { type => "earthquake" }
}
filter {csv {columns => ["timestamp","latitude","longitude","depth","mag","magType","nst","gap","dmin","rms","source","event_id"]convert => {"latitude" => "float"}convert => {"longitude" => "float"}convert => {"depth" => "float"}convert => {"mag" => "float"}convert => {"dmin" => "float"}convert => {"rms" => "float"}convert => {"gap" => "float"}}mutate {add_field => ["location", "%{latitude}, %{longitude}"]remove_field => ["latitude", "longitude"]}date {match => ["timestamp", "yyyy/MM/dd HH:mm:ss.SS", "ISO8601"]remove_field => ["timestamp"]}
}
output {stdout { codec => rubydebug { metadata => true } }stdout { codec => dots }elasticsearch {hosts => ["localhost:9200"]user => "elastic"password => "changeme"index => "ncedc-earthquakes"template => "ncedc-earthquakes-template.json"template_name => "ncedc-earthquakes"template_overwrite => true}
}

由于我使用本地部署,在上面我使用 Elasticsearch URL 为 localhost:9200。

我们把 earthquakes.txt, ncedc-earthquakes-logstash.conf 及ncedc-earthquakes-template.json 拷贝 logstash 的安装目录下。

$ pwd
/Users/liuxg/elastic5/logstash-7.9.1
liuxg:logstash-7.9.1 liuxg$ ls
CONTRIBUTORS                    lib
Gemfile                         logstash-core
Gemfile.lock                    logstash-core-plugin-api
LICENSE.txt                     modules
NOTICE.TXT                      ncedc-earthquakes-logstash.conf
bin                             ncedc-earthquakes-template.json
config                          tools
data                            vendor
earthquakes.txt                 x-pack

我们需要把上面的 ncedc-earthquakes-template.json 修改为:

ncedc-earthquakes-template.json

{"template": "ncedc-earthquakes","settings": {"number_of_shards": 1,"number_of_replicas" : 0,"index.refresh_interval": "60s"},"mappings": {"dynamic_templates": [{"strings": {"match": "*","match_mapping_type": "string","mapping": {"type": "text"}}}],"properties": {"location": {"type": "geo_point"}}}
}

上面的目的就是为了使得我们创建的 location 字段为 geo_point 数据类型。我们通过如下的命令来把数据导入到 Elasticsearch 中:

cat earthquakes.txt| bin/logstash -f ncedc-earthquakes-logstash.conf

我们可以看到数据被导入到 Elasticsearch 中。在实际的操作中,我们至少需要等1分钟的时间才能在 Kibana 中查看到数据,这是因为我们在 ncedc-earthquakes-template.json 文件中配置 index.refresh_interval 为 60s。

我们在 Kibana 中通过如下的命令来检查最新生产的索引:

GET _cat/indices

我们可以是如下的方式来获取数据的数目:

GET ncedc-earthquakes/_count
{"count" : 2394927,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0}
}

我们接下来创建一个叫做 ncedc-earthquakes 的索引模式。

我们发现这个索引的其中一个数据:

{"message" : "2009/05/13 22:52:58.10,37.8677,-122.2295,11.00,1.35,Md,24,45,1,0.06,NC,51221532","gap" : 45.0,"host" : "liuxg","source" : "NC","@timestamp" : "2009-05-13T14:52:58.100Z","type" : "earthquake","magType" : "Md","location" : "37.8677, -122.2295","dmin" : 1.0,"depth" : 11.0,"@version" : "1","mag" : 1.35,"nst" : "24","event_id" : "51221532","rms" : 0.06}

我们可以看到其中有几个重要的字段:@timestamp,depth,mag,location。这几个字段分别表示时间及地震的深度,强度以及位置。我们将使用这些信息来做分析。

使用 Timelion 做数据分析

接下来,我们使用 Timelion 对数据进行可视化。打开 Kibana:

在上面的右边,我们可以看到一个区域叫做 Timelion expression。我们把如下的一个表达式拷贝进去:

.es(index=ncedc-earthquakes,metric=avg:depth).points(fill=5).color(#8cd98c).label('Depth - raw').yaxis(label="Depth"),.es(index=ncedc-earthquakes,metric=avg:depth).lines().movingaverage(52).label('Depth - moving avg').yaxis(label="Depth").color(#257425 ), .es(index=ncedc-earthquakes,metric=avg:mag).points(fill=5).label('Magnitude - raw').yaxis(2, label="Magnitude").color(#ff6666), .es(index=ncedc-earthquakes,metric=avg:mag).lines().movingaverage(52).label('Magnitude - moving avg').yaxis(2, label="Magnitude").color(#b30000 )

那么在过去20年的数据就是这样的:

在上面显示了 Depth 的原始数据已经 Depth - moving avg。同样的我们也展示了 Magnitude 的原始数据已经 Magnitude - moving avg。

同样地,我们把如下的表达是拷贝到 Timelion expression 中:

.es(index=ncedc-earthquakes,metric=avg:mag).points(fill=5).label('raw').yaxis(2, label="Magnitude").color(#ffa3a3), .es(index=ncedc-earthquakes,metric=avg:mag).lines().movingaverage(52).label('5 year moving avg').yaxis(2, label="Magnitude").color(#b30000 ), .es(index=ncedc-earthquakes,metric=avg:mag).lines().movingaverage(10).label('1 year moving avg').yaxis(2, label="Magnitude").color(#ff3333)

如果我们把如下的表达式拷贝到右边的 Timelion expression 中:

.es(index=ncedc-earthquakes,metric=avg:depth).points(fill=5).color(#a3e0a3).label('raw').yaxis(label="Depth"),.es(index=ncedc-earthquakes,metric=avg:depth).lines().movingaverage(52).label('5 year moving avg').yaxis(label="Depth").color(#257425 ), .es(index=ncedc-earthquakes,metric=avg:depth).lines().movingaverage(10).label('1 year moving avg').yaxis(label="Depth").color(#00b359)

那么我们可以看到:

一步一步建立可视化

在上面我们展示了如果使用 Timelion 来对数据可视化。对于一些开发者来说,可能觉得太炫,太晕。在下面,我们来一步一步地展示一个可视化的建立。

打开 Timelion 可视化:

当我们输入 .es(*) 时,它显示的是所有索引的数据展示。如上所示,它显示的是所有文档在当前 time picker 中数据数量。

我们接下来想对地震数据索引  ncedc-earthquakes 来进行展示,我们同时想知道 mag 的最大值的指标统计:

.es(index=ncedc-earthquakes,metric=max:mag)

上面展示了地震强度的最大值的时间系列。

我们接着想知道强度一年内的 moving average。为此,我们添加另外一个时间系列:

.es(index=ncedc-earthquakes,metric=max:mag),.es(index=ncedc-earthquakes,metric=max:mag).mvavg(10)

接下来,我希望原始的 max 指标数据用点来表示,以示和 mvavg 的区别:

.es(index=ncedc-earthquakes,metric=max:mag).points(),.es(index=ncedc-earthquakes,metric=max:mag).mvavg(10)

也许你对上面的颜色并不满意,我们尝试修改上面的点击线的颜色:

.es(index=ncedc-earthquakes,metric=max:mag).points().color(blue),.es(index=ncedc-earthquakes,metric=max:mag).mvavg(10).color(orange)

我们接下来点击 Save 按钮把当前的 Timelion 时序图保存为一个可视图

我们保存上面的视图为 Eearthquake - Demo。这个时态可以在一下的 Dashboard 中被使用,并成为 Dashboard 的一部分。

创建 Maps 可视化

在地震的数据中,我们也同时注意到有一个叫做 location 的字段。我们可以利用这个字段来展示所有的地址数据所在的位置:

从上面,我们可以看到世界各地的地图的数据显示在地图上。我们把这个视图保存为 Eearthquake - Maps。

创建 Eearthquake Dashboard

我们可以根据上面的 Timelion 已经 Maps 地图两个可视化图,创建一个叫做 Eearquake 的 Dashboard:

我们点击上面的两个可视化图,把它们添加到 Dashboard  中:

点击上面的 Save 链接,并保存为 Eearthquake:

这样我们的 Eearthquake Dashboard 就基本已经创建成功了。

接下来,我们最感兴趣的还是在美国加州地区的数据,从上面的图中我们可以看出来那里的数据是最多的。把地图的 zoom 调整到哦合适的级别,并把时间调整到地震发生的那个时间段。我们可以从网址 https://en.wikipedia.org/wiki/1994_Northridge_earthquake 找到当时发生地震时的时间是 January 17, 1994, at 4:30:55 a.m。我们把数据调整到这个时间段:

在 Maps 中,我们可以直接通过在地图上选择一个范围来过滤数据。上面的 Timelion 中显示的还是整个在那个时间段的世界各地的数据的总和。我们可以通过如下的方式来过滤数据,并只显示在加州的数据:

在地图上使用矩形来显示想要范围里的数据:

从上面,我们可以定义我们想要的区域进行过滤:

从上面的图中,我们可以看到一个区域定义的过滤器已经生成。在上面的 Timelion 中的数据就是只显示在上面矩形显示框里的数据。从上面的图中,我们可以清楚地看到在1994年1月17日,有一个清晰的强度的变化,表明一个地震正在发生。

Kibana:在 Kibana 中使用 Maps 和 Timelion 分析地震数据相关推荐

  1. Kibana 5.2 中文文档 | 片刻 ApacheCN(apache中文网)

    为什么80%的码农都做不了架构师?>>>    ApacheCN | apache中文网 官方文档 Kibana 5.2 中文文档 介绍 设置 安装 Kibana 配置 Kiban ...

  2. Elastic Kibana 5.2 中文文档 | 那伊抹微笑 - ApacheCN(Apache中文网)

    ApacheCN(Apache中文网)- 关于我们 : http://www.apache.wiki/pages/viewpage.action?pageId=9404701 ApacheCN(Apa ...

  3. Kibana Guide ( Kibana 向导 )

    Kibana Guide 官网地址:https://www.elastic.co/guide/en/kibana/current/index.html Kibana 用户指南(构建你自己的仪表盘):h ...

  4. 什么是Kibana?Kibana安装与配置(win_Elasticsearch)

    一.Kibana简介 Kibana是一个开源的分析和可视化平台,设计用于和Elasticsearch一起工作. 你用Kibana来搜索,查看,并和存储在Elasticsearch索引中的数据进行交互. ...

  5. Kibana:Kibana 入门 (二)

    这篇文章是是上一篇文章 "Kibana:Kibana 入门 (一)" 的续篇.在阅读这篇文章之前,请先阅读上面的这篇文章. Kibana 可视化(二) Kibana 可视化(二)_ ...

  6. Kibana:Kibana 入门 (一)

    在我之前的文章 "如何开始使用 Kibana",我对 Kibana 做了一个简单的介绍.从那篇文章中,我们可以对 Kibana 有一个初步的了解.在今天的文章中,我来通过一个实操来 ...

  7. 如何爬取知乎中问题的回答以及评论的数据?

    如何爬取知乎中问题的回答以及评论的数据? 我们以爬取"为什么中医没有得到外界认可?"为例来讨论一下如何爬取知乎中问题的回答以及评论的数据. 爬取网页数据通常情况下会经历以下三个步骤 ...

  8. php中的全局变量$_POST收集表单数据

    < !-- php中的$POST被广泛的用于手机表单数据,在HTML中from的标签指定的该属性是method="post" 下面我们将显示一个输入的字段,以及一个提交的按钮 ...

  9. Nature子刊:宏基因组中挖掘原核基因组的分析流程

    宏基因组中挖掘原核基因组的分析流程 从宿主相关的短读长鸟枪宏基因组测序数据中恢复原核基因组 Recovering prokaryotic genomes from host-associated, s ...

最新文章

  1. 对话迈克尔·乔丹:太多人关注个体智能,而不关注体系
  2. 强烈推荐16 款牛逼的 IDEA 插件,让你开发速度飞起来!
  3. Python打卡第四周
  4. java原子类场景,CAS你知道吗?原子类AtomicInteger的ABA问题谈谈?,原子共面问题...
  5. I.Mx6 使用串口连接PSAM卡的注意事项
  6. Java:月份的中英文转换
  7. (209)浮点数运算步骤
  8. 不用写代码的可视化大屏,一口气把工具和方法都教给你
  9. 【每日算法Day 97】经典面试题:求两个数组最小差
  10. 知道建模中的UV吗?
  11. JProfiler安装、激活
  12. Node.js之npm ERR code EPERM npm ERR syscall open npm ERR
  13. win10 UWP 你写我读
  14. 用python实现二分法求平方根_二分法求平方根(Python实现)
  15. 【深度学习】更大规模的完整视频理解
  16. python高分书籍推荐_如果只能推荐一本 Python 书,我一定 Pick 它
  17. 图像处理中的用于消除高斯噪声的加法运算
  18. 那些年我用过的JSON格式化工具
  19. IDEA生成jar工具包
  20. 容量可动态扩展的LinkedBlockingQueue

热门文章

  1. uniapp 微信小程序 api上传图片 binary (form Data)
  2. 全球通用?电击治疗上不上得了台面
  3. iOS9下App Store新应用提审攻略
  4. 与finally单独使用的是try
  5. Ubuntu系统崩溃与修复
  6. CDN服务器是什么意思?CDN服务器搭建部署
  7. jQuery的change()事件
  8. 基于最小错误率的贝叶斯决策实现手写数字识别
  9. SQL Server DeadLock 分析
  10. Centos配置JAVA_HOME