构建自己的仪表板
准备加载一些数据并构建仪表板?本教程将向您展示如何:
-
将数据集加载到Elasticsearch中
-
定义索引模式
-
发现并探索数据
-
可视化数据
-
将可视化添加到仪表板
-
检查可视化背后的数据
加载样本数据
本教程需要三个数据集:
-
William Shakespeare的全部作品,适当地解析成字段。下载 shakespeare.json。
-
一组带有随机生成数据的虚构帐户。下载 accounts.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权限才能运行本教程。你还必须有create,manage read,write,和delete 指数的特权。有关 详细信息,请参阅安全权限。
在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"}
}
}
}
}
此映射指定数据集的字段特征:
-
该speaker和play_name字段是关键字字段。这些字段未分析。即使字符串包含多个单词,它们也会被视为一个单元。
-
该line_id和speech_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"
}
}
}
}
}
}
}
Account数据集不需要任何映射。
加载数据集
此时,您已准备好使用Elasticsearch bulk API来加载数据集:
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"
或者对于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,和Account数据集,其中包含一个名为bank.的索引。 这些数据集不包含时间序列数据。
-
在Kibana中,打开“ Management管理”,然后单击“ Index Patterns索引模式”。
-
如果这是您的第一个索引模式,则会自动打开“ Create index pattern创建索引模式”页面。否则,单击左上角的“ Create index pattern创建索引模式 ”。
-
在Index pattern索引模式字段中输入shakes*。
-
单击”Next step下一步”。
-
在Configure settings配置设置中,单击Create index pattern创建索引模式。对于此模式,您无需配置任何设置。
-
定义名为 ba* 的第二个索引模式,不需要为此模式配置任何设置。
现在为Logstash数据集创建索引模式。该数据集包含时间序列数据。
-
定义名为的索引模式 logstash*.
-
单击Next step下一步。
-
在Configure settings配置设置中,在Time Filter field name时间过滤器字段名称下拉菜单中选择@timestamp。
-
单击Create index pattern创建索引模式。
注意 定义索引模式时,与该模式匹配的索引必须存在于Elasticsearch中,并且它们必须包含数据。要检查哪些索引可用,请转到Dev
Tools > Console并输入GET _cat/indices。或者,使用curl -XGET
“http://localhost:9200/_cat/indices”。
Discover您的数据
使用Discover应用程序,您可以输入Elasticsearch查询来搜索数据并过滤结果。
-
打开Discover。
当前索引模式显示在筛选栏的下方,
在这种情况下shakes*。您可能需要单击菜单栏中的 " New新建" 来刷新数据。 -
单击当前索引模式右侧的插入符号,然后选择ba*。
-
在搜索字段中,输入以下字符串:
account_number:\<100 AND balance:\>47500
搜索返回account_number 为0至99之间, 余额超过47500的所有账号。它返回account_number 为8, 32, 78, 85和97的帐号。
默认情况下,会为每个匹配的文档显示所有字段。要选择要显示的字段,请将指针悬停在“ Available
Fields可用字段 ”列表上 ,然后单击要在表中包含的每个字段旁边的“ add添加”。
例如,如果添加account_number字段,则显示将更改为包含五个帐号的列表。
数据可视化
在Visualize应用程序中,您可以使用各种图表,表格和地图等对数据进行整形。您将创建四个可视化:饼图,条形图,坐标图和Markdown小部件。
-
打开Visualize。
-
单击“ Create a visualization创建可视化”或“+”按钮。您将在Kibana中看到所有可视化类型。
-
单击Pie饼图。
-
在“ New Search新建搜索”中,选择ba*索引模式。您将使用饼图来深入了解银行帐户数据中的帐户余额。
饼图
最初,饼图包含一个“slice切片”。那是因为默认搜索匹配所有文档。
要指定要在饼图中显示的切片,请使用Elasticsearch bucket aggregation桶聚合。此聚合将符合搜索条件的文档分类到不同的类别(也称为存储桶)。
使用存储桶聚合来建立多个帐户余额范围,并找出每个范围中有多少帐户。
-
在“Buckets存储桶”窗格中,单击“ Split Slices拆分切片”。
-
在Aggregation下拉菜单中,选择Range。
-
在“ Field字段”下拉菜单中,选择“ balance余额”。
-
单击“ Add Range添加范围”4次,将范围总数设置为6。
-
定义以下范围:
0 999 1000 2999 3000 6999 7000 14999 15000 30999 31000 50000
-
单击Apply changes应用更改 。
现在,您可以看到1000个帐户中有多少比例属于每个余额范围。
添加另一个桶聚合,查看帐户持有者的年龄。
-
在“ Buckets存储桶”窗格的底部,单击“ Add sub-buckets添加子存储桶”。
-
在“ Select buckets type选择存储桶类型”中,单击“ Split Slices拆分切片”。
-
在Sub Aggregation下拉列表中,选择Terms。
-
在“ Field字段”下拉列表中,选择“ age年龄”。
-
单击 Apply changes应用更改 。
现在,您可以看到帐户持有人年龄的细分,在内环形显示余额范围。
要保存此图表以便以后可以使用:
点击顶部菜单栏中的Save保存,然后输入Pie Example。
条形图
您将使用条形图查看Shakespeare数据集并比较剧中的speaking发言部分数量。
-
创建Vertical Bar垂直条形图并将搜索源设置为shakes*。
最初,图表是单个栏,显示与默认通配符查询匹配的文档总数。
沿 y 轴显示每场表演的发言部分数量。这需要您配置Y轴 metric aggregation度量标准聚合。 此聚合根据搜索结果中的值计算指标。
-
在“ Metrics度量标准”窗格中,展开“ Y-AxisY轴”。
-
将Aggregation聚合设置为Unique Count唯一计数。
-
将Field字段设置为speaker发言。
-
在“ Custom Label 自定义标签”框中,输入Speaking Parts。
-
单击Apply changes 应用更改 。
沿X轴显示表演。
-
在“ Buckets存储桶”窗格中,单击“ X-Axis X轴”。
-
将Aggregation聚合设置为Terms条款和 Field字段为play_name。
-
要按字母顺序列出表演,请在“ Order顺序”下拉菜单中选择“ Ascending升序”。
-
为轴提供自定义标签Play Name。
-
单击Apply changes 应用更改 。
将鼠标悬停在某个条形图上会显示一个工具提示,其中包含该表演的说话部分数量。
注意各个表演名称如何显示为整个短语,而不是分成单个单词。这是您在本教程开始时将该play_name字段标记为的映射的结果not
analyzed。使用名称保存此图表Bar Example。
坐标地图
使用坐标图,可以可视化日志文件样本数据中的地理信息。
-
创建Coordinate map坐标地图并将搜索源设置为logstash*。
-
在顶部菜单栏中,单击最右侧的时间选择器。
-
单击Absolute绝对。
-
将开始时间设置为2015年5月18日,结束时间为2015年5月20日。
-
单击Go。
您还没有定义任何存储桶,因此可视化是一个世界地图。
现在映射日志文件中的地理坐标。
-
在“Buckets存储桶”窗格中,单击“ Geo Coordinates地理坐标”。
-
将Aggregation聚合设置为Geohash,将Field字段设置为geo.coordinates。
-
单击Apply changes应用更改 。
地图现在看起来像这样:
您可以通过单击并拖动来导航地图。地图左上角的控件可让您缩放地图并设置过滤器。尝试一下。
使用名称Map Example保存此地图。
Markdown
最终的可视化是Markdown小部件,用于呈现格式化文本。
-
创建Markdown可视化。
-
在文本框中,输入以下内容:
#这是一个教程仪表板!
Markdown小部件使用**markdown**语法。
> Blockquotes in Markdown use the > character.
-
单击 应用更改 。
Markdown在预览窗格中呈现:
使用名称Markdown Example保存此可视化。
在仪表板中显示可视化
仪表板是可以安排和共享的可视化集合。您将构建一个包含您在本教程中保存的可视化的仪表板。
-
打开Dashboard仪表板。
-
单击“ Create new dashboard创建新仪表板”。
-
单击Add添加。
-
添加Bar Example条形图示例, Map Example地址示例, Markdown Example, 和Pie Example饼图示例。
您的示例仪表板如下所示:
您可以通过单击可视化的标题并拖动来重新排列可视化。可视化文件右上角的齿轮图标显示用于编辑和删除可视化的控件。调整大小控件位于右下方。
要获取共享或HTML代码的链接以将仪表板嵌入网页,请保存仪表板并单击“ Share共享”。
Save保存仪表板。
检查数据
查看数据的可视化效果非常好,但有时您需要查看实际数据以了解实际情况。您可以检查任何可视化背后的数据,并查看用于检索它的Elasticsearch查询。
-
在仪表板中,将指针悬停在饼图上。
-
单击右上角的图标。
-
从“ Options选项”菜单中,选择“ Inspect检查”。
您还可以查看用于获取可视化数据的查询。
-
打开“ View:Data 视图:数据”菜单,然后选择“ Requests 请求”。
-
单击选项卡以查看请求统计信息,Elasticsearch请求和JSON中的响应。
-
要关闭Inspector,请单击右上角的X.