Kibana画图从入门到放弃

Elasticsearch简介

网上介绍 Elasticsearch 的文档一堆,本文主要是以一个用过 MySQL 的开发者的角度来学习 Elasticsearch。

先推荐一下目前网上比较好的教程文档:

  • Elasticsearch: 权威指南
  • 《死磕 Elasticsearch 方法论》:普通程序员高效精进的 10 大狠招!(完整版)

Elasticsearch与Lucene

ES=elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

1)Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

2)Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

Elasticsearch和关系型数据库的对比

名称 概念 概念 概念 概念
Relational DB Databases Tables Rows Columns
关系型数据库 数据库
ElasticSearch Indices Types Documents Fields
ElasticSearch 索引 类型 文档 字段
面向对象 对象 字段

ELK

ELK=elasticsearch+Logstash+kibana

  • elasticsearch:后台分布式存储以及全文检索
  • logstash: 日志加工、“搬运工”
  • kibana:数据可视化展示。

ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作。

初识Kibana

elastic官网是提供了Kibana的用户手册的,还有中文版本

  • Kibana用户手册

  • 6.0 版本中的重要更新

    说明: Kibana 5.x 允许用户使用 Elasticsearch 支持的任何脚本语言创建脚本化的字段。而 Kibana 6.0 将只支持基于 Painless 和 Lucene 表达式的脚本。

29-18-20-屏幕快照2019-07-23上午10.02.47-fVJZzx

数据探索(Discover)

数据探索

您可以在数据探索(Discover)页面交互式地探索您的数据。您可以访问与选定索引模式匹配的每个索引中的每个文档。您可以提交搜索请求、过滤搜索结果、查看文档数据。您还可以看到与搜索查询匹配的文档数,并获取字段值的统计信息。如果索引模式中配置了时间字段,您还可以在这个页面的顶部看到基于时间分布的文档数量柱状图。

29-18-20-Discover-Start-Annotated-scNWFn

可视化 (Visualize)

可视化 (Visualize) 功能可以为您的 Elasticsearch 数据创建可视化控件。然后,您就可以创建仪表板将这些可视化控件整合到一起展示。

Kibana 可视化控件基于 Elasticsearch 的查询。利用一系列的 Elasticsearch 查询聚合功能来提取和处理数据,您可以通过创建图表来呈现您关心的数据分布和趋势。

您可以基于在 Discover 页面保存的查询或者新建一个查询来创建可视化控件。

要创建可视化视图:

  1. 点击左侧导航栏的 Visualize

  2. 点击 Create new visualization 按钮或 + 按钮。

  3. 选择视图类型:

    • 基础图形

      • Line, Area and Bar charts 在X/Y图中比较两个不同的序列。
      • Heat maps 使用矩阵的渐变单元格。
      • Pie chart 显示每个来源的占比。
    • 数据

      • Data table 显示一个组合聚合的原始数据。
      • Metric 显示单个数字。
    • 地图

      • Coordinate map 把一个聚合结果关联到地理位置。
    • 时间序列

      • Timelion 计算和合并来自多个时间序列数据集。
      • Time Series Visual Builder 使用管道聚合显示时间序列数据。
    • 其他

      • Tag cloud 显示标签云,每个标签的字体大小表示其重要性。
      • Markdown widget 显示自由格式信息或说明。
  4. 指定一个查询,为视图获取数据:

    • 想要输入新的搜索条件,只需为包含想要可视化数据的索引库选择索引模式。这将打开一个可视化视图编辑器,并关联一个匹配所选索引库里所有文档的通配符查询。

    • 想要从一个已有的搜索来构建一个可视化视图,只需点击想使用的已有查询名称即可。这将打开一个视图编辑器并加载所选的查询。

      当从一个已有的搜索来构建可视化视图时,随后对已有查询的任何修改都会自动反馈在视图中。想要禁止自动更新,您需要断开视图和已保存的搜索之间的连接。

  5. 在视图编辑器中为视图的Y轴选择指标聚合:

    • 指标聚合(Metrics Aggregations)
    • count
    • average
    • sum
    • min
    • max
    • standard deviation
    • unique count
    • median (50th percentile)
    • percentiles
    • percentile ranks
    • top hit
    • geo centroid
    • 父类管道聚合(Parent Pipeline Aggregations)
    • derivative
    • cumulative sum
    • moving average
    • serial diff
    • 兄弟管道聚合(Sibling Pipeline Aggregations)
    • average bucket
    • sum bucket
    • min bucket
    • max bucket
  6. 为视图X轴选择一个桶聚合:

    • date histogram
    • range
    • terms
    • filters
    • significant terms

比如,如果正在索引 Apache 服务器日志,就可以构建一个条形图,通过指定 geo.src 字段上的一个 term 聚合,来展示地理位置的请求分布:

29-18-20-bar-terms-agg-qzgkr3

Y轴表示来自每个国家的请求数量,而X轴则表示要显示的国家。

图、线或区域图的可视化都是使用 度量 指标作为Y轴,使用 作为X轴。桶类似于SQL中的 GROUP BY语句。Pie 图中使用分片大小作为指标,分片数量作为桶。

还可以进一步根据指定的子聚合来划分数据。第一个聚合决定任何子序列聚合的数据集。子聚合是有顺序的,可以通过拖拽聚合来改变。

比如,可以在 geo.dest 字段增加一个 term 子聚合到原始国家条形图,来查看这些请求对应的位置。

29-18-20-bar-terms-subagg-UaduZb

更多关于子聚合的内容,请参考这篇博文 Kibana, Aggregation Execution Order, and You

仪表板(Dashboard)

Kibana 仪表板(Dashboard) 展示保存的可视化结果集合。

仪表板示例.

29-18-21-tutorial-dashboard-tnSCaX

在编辑模式下,您可以根据需要安排和调整可视化结果集,并保存仪表板,以便重新加载和共享。

编辑模式.

29-18-21-Dashboard-Tutorial-Edit-Mode-JyXjwr

时序控件(Timelion)

时序控件(Timelion)是一款时间序列数据可视化工具,它可以将多种独立的数据源合并呈现到一张视图上。它是由一个简单的表达式语言驱动的,用来检索时间序列数据,执行计算得出复杂问题的答案,并可视化结果。

例如,Timelion 可以让您轻松获得如下问题的答案:

  • 过去某段时间页面的 UV 量是多少?
  • 本周五和上周五的流量有多少差异?
  • 本站今天来自日本的访客占多少百分比?
  • 标普500指数过去10天的移动平均值是多少?
  • 过去两年所有的搜索请求总量有多少?

您还可能对以下视频教程感兴趣:

  • Timelion: 魔法、数学,一切尽在其中
  • Timelion 插件为 Kibana 提供了时间序列分析工具
  • 利用 Kibana 和 Timelion 分析地震数据

用Kibana画图

  • 线形图,区域图和条形图
  • 数据表
  • 指标(Metric)
  • 饼图
  • ……