Kibana 5.4简明教程

本文翻译自Kibana5.4版本官方教程。文章首发于我的个人博客网站梧桐和风的博客,欢迎关注。

开始

想要得到一些关于Kibana的实际经验吗,下面教程会叫你怎样做。

  • 向Elasticsearch导入一些样本数据
  • 定义一个索引模式
  • Discover搜索样本数据
  • 为样本数据建立visualizations【可视化图表组件】
  • 将可视化数据汇集到Dashboard

开始之前,你必须确保已成功安装Kibana,并且能连上Elasticsearch

加载样本数据

本部分内容依赖下列数据

下载完成后,用下面的命令解压文件

1
2
unzip accounts.zip
gunzip logs.jsonl.gz

莎士比亚全集的数据结构如下:

1
2
3
4
5
6
7
8
{
"line_id": integer,
"play_name": "String",
"speech_number": integer,
"line_number": "String",
"speaker": "String",
"text_entry": "String",
}

账户信息的数据结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"account_number":integer,
"balance":integer,
"firstname": "String",
"lastname": "String",
"age":integer,
"gender": "M or F",
"address": "String",
"employer": "String",
"email": "String",
"city": "String",
"state": "String"
}

日志文件的数据信息有十几个字段,在这里我们主要使用如下几个字段:

1
2
3
4
5
{
"memory": integer,
"geo.coordinates": "geo_point",
"@timestamp":"date"
}

在我们加载莎士比亚数据和日志文档时,需要为这些字段建立映射(Mapping),映射将索引中的文档划分成逻辑组,并指定文档的特性。比如文档的可分析性或是否可被标记、可被分析等特性。

使用下面的终端命令(比如使用bash)设置莎士比亚数据的映射。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/shakespeare -d '
{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string", "index" : "not_analyzed" },
"line_id" : { "type" : "integer" },
"speech_number" : { "type" : "integer" }
}
}
}
}
';

下面一一来分析该映射含义:

  • speaker字段为不能被分析字符串类型。表明该字段将被当做独立的单元处理,即使包含多个词。
  • play_name处理同上。
  • line_idspeech_number字段为数值类型。

使用以下命令为日志文件创建geo_point类型的映射。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.18 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.19 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.20 -d '
{
"mappings": {
"log": {
"properties": {
"geo": {
"properties": {
"coordinates": {
"type": "geo_point"
}
}
}
}
}
}
}
';

有关账户信息的数据不需要建立映射。现在我们来把这些数据导入到Elasticsearch中。这里需要用到Elasticsearch bulk API

1
2
3
4
5
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json

curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl

执行以下命令可能需要一些时间,至于多少就要看你的计算机性能水平了。可用下面命令验证是否导入成功:

curl ‘localhost:9200/_cat/indices?v’

若执行成功,你应该能看到类似下面的输出

1
2
3
4
5
6
health status index               pri rep docs.count docs.deleted store.size pri.store.size
yellow open bank 5 1 1000 0 418.2kb 418.2kb
yellow open shakespeare 5 1 111396 0 17.6mb 17.6mb
yellow open logstash-2015.05.18 5 1 4631 0 15.6mb 15.6mb
yellow open logstash-2015.05.19 5 1 4624 0 15.7mb 15.7mb
yellow open logstash-2015.05.20 5 1 4750 0 16.4mb 16.4mb

定义你的索引模式

每个加载到Elasticsearch的数据集需要一个索引模式(index pattern)。
在前面的章节里,莎士比亚数据集的索引名为shakespeare,账户数据集的索引名为bank索引模式是一个含有可选通配符的字符串,它能匹配多个索引。举个例子,在常见的日志中,一个包含日期的索引名如YYYY.MM.DD,则对应5月的索引模式应该是logstach-2915-05*这样。

在该文档中,任何被匹配的索引都将被Kibana分析并处理。打开浏览器访问localhost:5601,【译者注:需保证同时开启Elasticsearch和Kibana】单击左侧面板的Management标签,会出现Configure an index pattern页面。在Index name or pattern填入shakes*以便能匹配莎士比亚数据集的数据。这时需注意不要勾选Index contains time-based events选项。随后点击create即可。照此再创建一个索引模式名为ba*,以能匹配账户信息。

日志文件数据集是基于时间的,所以再创建第3个索引模式,这时选中Index contains time-based events选项,选择@timestamp字段作为分析日期的依据。

探索你的数据

点击左侧面板中的Discover标签。即进入探索(Discover)数据页面。

最上端是查询框,你可以输入Elasticsearch 查询语句查询你的数据。你可以导出查询结果,根据保存结果创建可视化图表(visualizations)。

当前匹配的索引数据展示在搜索框下面。索引模式决定了在你搜索时哪些索引的数据会显示出来。

你可以直接用字段名或你感兴趣的任何值来构建你的查询。对应数值字段,你可以直接使用>,<,=等运算符。或者,你可以用 ANDOR,NOT等逻辑运算符连接你的查询元素。

比如,选择ba*模式匹配然后在查询框中输入下列查询

account_number:<100 and balance:>47500

该查询将返回账户在0至99之间的,余额在47500以上的所有数据。如下图所示,它返回了5条数据,账户分别是8,32,78,85,97

默认情况下,每条数据将显示所有字段。为了只让需要的字段显示,你可以在左侧展示字段的区域点击要显示字段右侧的add按钮。

可视化你的数据

点击左侧面板的Visualize按钮开始可视化数据。

可视化工具能够以多种方式观察分析你的数据,下面我们就用饼状图来分析一下账户信息数据集。点击下图的Create a visualization开始我们的实践。

下面展示了几种分析数据的可视化类型,点击pie类型。

你可以用保存的数据完成可视化工作,或者重建一个搜索条件。由于我们要分析账户信息数据,所以选择ba*索引模式。

默认搜索匹配所有文档数据,现在,饼状图是单个的“一大块”

为了指定要在图表中显示哪些分片,我们需要使用Elasticsearch的buncket聚合(即桶聚合)。桶聚合会将符合搜索条件的文档分为不同的类别。例如,帐户数据包括每个帐户的余额,使用桶聚合,可以建立多个帐户余额范围,并找出每个范围的账户数量。

下面是建立桶聚合的过程:

  1. 点击Split Slices桶类型
  2. Aggregation下拉列表中选择Range聚合类型
  3. Field列表中选择balance字段
  4. 点击Add Range依次输入下列范围
  5. 点击Apply changes执行分析。
1
2
3
4
5
6
0             999
1000 2999
3000 6999
7000 14999
15000 30999
31000 50000

现在你能看到每个范围内的具体分布。

让我们看看数据的另一个维度:帐户持有者的年龄。通过添加另一个桶聚合,您可以在每个余额范围内查看帐户持有人的年龄

  1. 点击Add sub-buckets按钮添加一个子聚合。
  2. 点击Split Slices聚合类型
  3. 从聚合列表中选择Terms
  4. 在字段列表选择age字段
  5. 点击Apply changes执行分析。

现在你可以看到帐户持有人的年龄在上述各个范围的分布状况

若要保存此图表,以便以后使用它,单击“save”并输入”Pie Example”。

接下来,让我们来看看莎士比亚数据集的怎样在条形图中显示和分析。

  1. 在“选择可视化类型”页面点击Vertical Bar类型。
  2. 选择shakes*索引模式。
  3. 为在Y轴显示每部戏中演讲者的数量,需要配置Y轴方向的度量值。选择Unique Count度量类型以及speaker字段。另外,你可以为该统计自定义一个标签名,比如这里称为Speaking Parts
  4. 创建X-Axis聚合类型。选择Terms类型及play_name字段,可在自定义标签中写Play Name
  5. 点击Apply changes执行分析。

注意剧本名是如何表现出来的,而不是被分解成单个的单词。这是因为我们在开始就设置了play_name是不被分析的。

下面再来一点复杂的,你可能好奇每部戏中最大的对白台词是多少,你可以这样做:

  1. 点击metrics再添加一个Y轴聚合
  2. 选择Max聚合类型及speech_number字段
  3. 选择Options选项卡,将Bar Mode 改为 grouped模式。【译者注:这里在我这的版本并没有看到该选项,不知是不是版本问题,若同此,选择Metrics&Axes,在相应聚合下将Modestack改为mormal
  4. 点击Apply changes执行分析。

保存图表并将其命名为 Bar Example.

接下来,我们将使用瓦片地图(Tile Map)来可视化我们日志文件示例数据中的地理信息。

  1. 在“选择可视化类型”页面点击Tile map类型。
  2. 选择logstash-*索引模式
  3. 点击右上角时间按钮,在弹出的时间选择面板中选择absolute,然后将时间定为起始2015-05-18到2015-05-20区间。
  4. 选择Geohash聚合类型,点击Apply changes执行分析即可看到如下信息

你可以通过地图左上角的按钮对地图进行放大缩小、看清地图所有点及各种操作。

最后可以点击save保存该结果,并命名为Map Example

最后,可以使用Markdown widget来制作markdown编辑器。

  1. 在“选择可视化类型”页面点击Other中的MarkDown类型。
  2. 接下来就可以编写markdown文档了。

用Dashboards集中展示数据

Dashboards(仪表盘)可将上部分的可视化图表组件集中起来。你可以通过以下步骤完成。

  1. 点击左侧面板的Dashboard标签。
  2. 点击Add,可显示出你在visualizations保存的可视化图列表
  3. 选取要显示在仪表盘的可视化组件,这里我们选择Markdown Example, Pie Example, Bar Example, and Map Example

好了,仪表盘就这样做好了

分享到:
0%