8

构建自己的仪表盘

准备加载一些数据并构建仪表盘?本教程将向你展示如何:

  • 将数据集加载到Elasticsearch中
  • 定义索引模式
  • 发现并探索数据
  • 可视化数据
  • 将可视化添加到仪表盘
  • 检查可视化背后的数据

加载样例数据

本教程需要三个数据集:

  • William Shakespeare的全部作品,适当地解析成字段,下载shakespeare.json
  • 一组带有随机生成数据的虚构帐户,下载account.zip
  • 一组随机生成的日志文件,下载logs.jsonl.gz

其中两个数据集是压缩的,要提取文件,请使用以下命令:

unzip accounts.zip
gunzip logs.jsonl.gz

数据集的结构

Shakespeare数据集具有以下结构:

{
    "line_id": INT,
    "play_name": "String",
    "speech_number": INT,
    "line_number": "String",
    "speaker": "String",
    "text_entry": "String",
}

accounts数据集的结构如下:

{
    "account_number": INT,
    "balance": INT,
    "firstname": "String",
    "lastname": "String",
    "age": INT,
    "gender": "M or F",
    "address": "String",
    "employer": "String",
    "email": "String",
    "city": "String",
    "state": "String"
}

logs数据集有许多不同的字段,以下是本教程的重要字段:

{
    "memory": INT,
    "geo.coordinates": "geo_point"
    "@timestamp": "date"
}

设置映射

在加载Shakespeare和logs数据集之前,必须为字段设置映射,映射将索引中的文档划分为逻辑组,并指定字段的特征,这些特征包括字段的可搜索性以及它是否被标记化,或者分解为单独的单词。

如果启用了安全性,则必须具有运行本教程的所有Kibana权限,你还必须具有创建,管理读取,写入和删除索引权限,有关详细信息,请参阅安全权限

在Kibana Dev Tools > Console,为Shakespeare数据集设置映射:

PUT /shakespeare
{
 "mappings": {
  "doc": {
   "properties": {
    "speaker": {"type": "keyword"},
    "play_name": {"type": "keyword"},
    "line_id": {"type": "integer"},
    "speech_number": {"type": "integer"}
   }
  }
 }
}

此映射指定数据集的字段特征:

  • speakerplay_name字段是关键字字段,这些字段不被分析,即使字符串包含多个单词,它们也会被视为一个单元。
  • line_idspeech_number字段是整数。

logs数据集需要映射以通过应用geo_point类型将纬度和经度对标记为地理位置。

PUT /logstash-2015.05.18
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.19
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}
PUT /logstash-2015.05.20
{
  "mappings": {
    "log": {
      "properties": {
        "geo": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        }
      }
    }
  }
}

accounts数据集不需要任何映射。

加载数据集

此时,你已准备好使用Elasticsearch bulk API来加载数据集:

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/doc/_bulk?pretty' --data-binary @shakespeare_6.0.json
curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl

或者对于Windows用户,在Powershell中:

Invoke-RestMethod "http://localhost:9200/bank/account/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "accounts.json"
Invoke-RestMethod "http://localhost:9200/shakespeare/doc/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "shakespeare_6.0.json"
Invoke-RestMethod "http://localhost:9200/_bulk?pretty" -Method Post -ContentType 'application/x-ndjson' -InFile "logs.jsonl"

这些命令可能需要一些时间才能执行,具体取决于可用的计算资源。

验证加载成功:

GET /_cat/indices?v

你的输出应该类似于:

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

定义索引模式

索引模式告诉Kibana你想要探索哪些Elasticsearch索引,索引模式可以匹配单个索引的名称,或者包含通配符(*)以匹配多个索引。

例如,Logstash通常以logstash-YYYY.MMM.DD格式创建一系列索引,要浏览2018年5月的所有日志数据,你可以指定索引模式logstash-2018.05*

你将为Shakespeare数据集创建模式,该数据集具有名为shakespeare的索引,和accounts数据集,其具有名为bank的索引,这些数据集不包含时间序列数据。

  1. 在Kibana中打开Management,然后点击Index Patterns
  2. 如果这是你的第一个索引模式,则Create index pattern页面将自动打开,否则,单击左上角的Create index pattern
  3. Index pattern字段中输入shakes*

    tutorial-pattern-1.png

  4. 单击Next step
  5. Configure settings中,单击Create index pattern,对于这个模式,你不需要配置任何设置。
  6. 定义第二个名为ba*的索引模式,你不需要为此模式配置任何设置。

现在为Logstash数据集创建一个索引模式,这个数据集包含时间序列数据。

  1. 定义一个名为logstash*的索引模式。
  2. 单击Next step
  3. Configure settings中,在Time Filter field name下拉菜单中选择@timestamp
  4. 单击Create index pattern
定义索引模式时,与该模式匹配的索引必须存在于Elasticsearch中,并且它们必须包含数据,要检查哪些索引可用,请转到Dev Tools > Console并输入GET _cat/indices,或者,使用curl -XGET "http://localhost:9200/_cat/indices"

发现你的数据

使用Discover应用程序,你可以输入Elasticsearch查询来搜索数据并过滤结果。

  1. 打开Discover
    当前索引模式显示在过滤条下方,在现在这种情况下是shakes*,你可能需要在菜单栏中单击New以刷新数据。
  2. 单击当前索引模式右侧的插入符号,然后选择ba*
  3. 在搜索字段中,输入以下字符串:
    account_number:<100 AND balance:>47500

搜索返回0到99之间的所有帐号,余额超过47,500,它返回帐号8,32,78,85和97的结果。

tutorial-discover-2.png

默认情况下,会为每个匹配的文档显示所有字段,要选择要显示的字段,请将指针悬停在Available Fields列表上,然后单击要在表中包含的每个字段旁边的add

例如,如果添加account_number字段,则显示将更改为包含五个账户数的列表。

tutorial-discover-3.png

可视化你的数据

在Visualize应用程序中,你可以使用各种图表、表格和地图等来塑造数据,你将创建四个可视化效果:饼图、柱状图、坐标图和Markdown小部件。

  1. 打开Visualize
  2. 点击Create a visualization+按钮,你将在Kibana中看到所有的可视化类型。

    tutorial-visualize-wizard-step-1.png

  3. 点击Pie
  4. New Search中,选择ba*索引模式,你将使用饼图了解银行账户数据中的账户余额。

    tutorial-visualize-wizard-step-2.png

饼图

实际上,饼图只包含一个“切片”,这是因为默认搜索匹配所有文档。

tutorial-visualize-pie-1.png

要指定要在饼图中显示哪些切片,可以使用Elasticsearch的bucket聚合,此聚合将匹配搜索条件的文档排序为不同的类别,也称为bucket。

使用bucket聚合来建立多个帐户余额范围,并找出每个范围中有多少帐户。

  1. Buckets窗格中,点击Split Slices
  2. Aggregation下拉菜单中,选择Range
  3. Field下拉菜单中,选择balance
  4. 点击Add Range 4次,使范围总数达到6个。
  5. 定义以下范围:

    0             999
    1000         2999
    3000         6999
    7000        14999
    15000       30999
    31000       50000
  6. 点击Apply changes

现在你可以看到1000个账户落入每个余额范围的比例是多少。

tutorial-visualize-pie-2.png

添加另一个关注帐户持有人年龄的bucket聚合。

  1. Buckets窗格的底部,单击Add sub-buckets
  2. Select buckets type中,单击Split slice
  3. Sub Aggregation下拉列表中,选择Terms
  4. Field下拉列表中,选择age
  5. 点击Apply changes

现在,你可以看到帐户持有人的年龄细分,显示在余额范围的环形上。

tutorial-visualize-pie-3.png

保存此图表以便以后使用:

  • 单击顶部菜单栏中的Save并输入Pie Example

柱状图

你将使用柱状图查看Shakespeare的数据集,并比较playspeaking部分的数量。

  • 创建一个Vertical Bar,并将搜索源设置为shake*

最初图表是一个显示匹配默认通配符查询的文档总数的单一栏。

tutorial-visualize-bar-1.png

在y轴上显示每个playspeaking部分的数量,这需要你配置y轴指标聚合,这个聚合根据搜索结果的值计算指标。

  1. Metrics窗格中展开Y-Axis
  2. Aggregation设置为Unique Count
  3. Field设置为speaker
  4. Custom Label框中,输入Speaking Parts
  5. 点击Apply changes

tutorial-visualize-bar-1.5.png

沿着x轴显示paly

  1. Buckets窗格中,点击X-Axis
  2. Aggregation设置为Terms,将Field设置为play_name
  3. 要按字母顺序排列play,请在Order下拉菜单中选择Ascending
  4. 给轴一个自定义的标签,Play Name
  5. 点击Apply changes

鼠标悬停在一个柱子上,会显示一个工具提示,其中包含该playspeaking部分的数量。

注意单独的play名字是如何以完整的短语出现的,而不是被分解成单独的单词,这是你在本教程开始时所做的映射的结果,当时你将play_name字段标记为不分析

使用名称Bar Example保存此图表。

坐标图

使用坐标图,你可以在日志文件示例数据中可视化地理信息。

  1. 创建一个Coordinate map,并将搜索源设置为logstash*
  2. 在顶部的菜单栏中,单击最右边的时间选择器。
  3. 点击Absolute
  4. 将开始时间设置为2015年5月18日,结束时间设置为2015年5月20日。
  5. 点击Go

你还没有定义任何桶,所以可视化是世界地图。

tutorial-visualize-map-1.png

现在,从日志文件映射地理坐标。

  1. Buckets窗格中,单击Geo Coordinates
  2. Aggregation设置为Geohash,将Field设置为geo.coordinate
  3. 点击Apply changes

现在地图看起来像这样:

tutorial-visualize-map-2.png

你可以通过点击并拖动来导航地图,地图左上角的控件使你能够缩放地图并设置过滤器,试一下。

tutorial-visualize-map-3.png

使用名称Map Example保存此地图。

Markdown

最后的可视化是一个呈现格式化文本的Markdown小工具。

  1. 创建一个Markdown可视化。
  2. 在文本框中输入以下内容:

    # This is a tutorial dashboard!
    The Markdown widget uses **markdown** syntax.
    > Blockquotes in Markdown use the > character.
  3. 点击Apply changes

在预览窗格中呈现Markdown:

tutorial-visualize-md-2.png

用名称Markdown Example保存这个可视化。

在仪表盘中显示你的可视化

仪表盘是你可以排列和共享的可视化集合,你将构建一个仪表盘,其中包含在本教程中保存的可视化内容。

  1. 打开Dashboard
  2. 点击Create new dashboard
  3. 点击Add
  4. 添加Bar ExampleMap ExampleMarkdown ExamplePie Example

你的示例仪表盘看起来像这样:

tutorial-dashboard.png

你可以通过点击可视化的标题并拖动来重新排列可视化,在可视化的右上角的齿轮图标显示编辑和删除可视化的控件,一个调整大小的控件在右下角。

要获得要共享的链接或将仪表盘嵌入web页面的HTML代码,请保存仪表盘并单击Share

保存你的仪表盘。

检查数据

数据的可视化效果非常好,但是有时候你需要查看实际数据来了解真正发生了什么,你可以检查任何可视化后的数据,并查看用于检索它的Elasticsearch查询。

  1. 在仪表盘中,将指针悬停在饼图上方。
  2. 点击右上角的图标。
  3. Options菜单中,选择Inspect

tutorial-full-inspect1.png

你还可以查看用于获取可视化数据的查询。

  1. 打开View:Data菜单并选择Requests
  2. 单击选项卡查看请求统计信息、Elasticsearch请求和JSON中的响应。
  3. 要关闭检查器,请单击右上角的X

tutorial-full-inspect2.png

总结

既然你已经掌握了基础知识,那么你就可以开始使用Kibana探索你自己的数据了。

  • 有关搜索和过滤数据的信息,请参阅Discover
  • 有关Kibana提供的可视化类型的信息,请参阅Visualize
  • 有关配置Kibana和管理保存的对象的信息,请参阅Management
  • 有关可以用于向Elasticsearch提交REST请求的交互式控制台的信息,请参阅Console

上一篇:使用Flight仪表盘探索Kibana
下一篇:Discover

博弈
2.5k 声望1.5k 粉丝

态度决定一切