Kibana 简明教程
Kibana - Overview
Kibana 是一个基于浏览器的开源可视化工具,主要用于分析大量日志,以折线图、条形图、饼图、热图、区域图、坐标图、仪表、目标、时间线等形式呈现。该可视化功能可以轻松预测或查看错误趋势或输入源中其他重要事件的变化。Kibana与Elasticsearch和Logstash同步工作,它们共同构成了所谓的 ELK 堆栈。
What is ELK Stack?
ELK 代表Elasticsearch、Logstash和Kibana。 ELK 是全球用于日志分析的一个流行的日志管理平台。在ELK堆栈中,Logstash从不同的输入源中提取日志数据或其他事件。它处理事件,然后将它们存储在Elasticsearch中。
Kibana 是一个可视化工具,它可以访问Elasticsearch中的日志,并能够以折线图、条形图、饼图等形式显示给用户。
ELK堆栈的基本流程在此图像中显示:
Logstash负责从存储日志的所有远程源收集数据,并将其推送到Elasticsearch。
Elasticsearch充当数据库,其中收集数据,而Kibana使用Elasticsearch中的数据以条形图、饼图、热图形式向用户表示数据,如下所示:
它向用户实时(例如逐日或每小时)显示数据。Kibana UI用户友好,非常容易让初学者理解。
Features of Kibana
Kibana为其用户提供以下功能:
Kibana - Environment Setup
要开始使用 Kibana,我们需要安装 Logstash、Elasticsearch 和 Kibana。在本章节中,我们将尝试了解 ELK 堆栈的安装。
我们将在此讨论以下安装:
-
Elasticsearch Installation
-
Logstash Installation
-
Kibana Installation
Elasticsearch Installation
Elasticsearch 有详细的文档在我们的库中。您可以在此处查看 elasticsearch installation 。您将必须按照教程中提到的步骤安装 Elasticsearch。
安装完成后,按如下方式启动 elasticsearch 服务器:
Step 1
For Windows
> cd kibanaproject/elasticsearch-6.5.4/elasticsearch-6.5.4/bin
> elasticsearch
请注意,对于 windows 用户,需要将 JAVA_HOME 变量设置为 java jdk 路径。
For Linux
$ cd kibanaproject/elasticsearch-6.5.4/elasticsearch-6.5.4/bin
$ elasticsearch
elasticsearch 的默认端口是 9200。完成后,您可以在 localhost http://localhost:9200/as 上的端口 9200 处检查 elasticsearch,如下所示:
Logstash Installation
要安装 Logstash,请遵循 elasticsearch installation ,该连接已存在于我们的库中。
Kibana Installation
访问官方 Kibana 网站 − https://www.elastic.co/products/kibana
单击右上角的下载链接,它将显示如下屏幕:
点按下载 Kibana 按钮。请注意,为了使用 Kibana,我们需要 64 位机器,它不能在 32 位机器上运行。
在本教程中,我们将使用 Kibana 6 版本。Windows、Mac 和 Linux 都提供下载选项。您可以根据自己的选择进行下载。
创建一个文件夹并解压缩 kibana 的 tar/zip 下载文件。我们将使用弹性搜索中上传的样本数据。所以,目前让我们看看如何启动弹性搜索和 kibana。为此,请转到 kibana 解压所在的文件夹。
For Windows
> cd kibanaproject/kibana-6.5.4/kibana-6.5.4/bin
> kibana
For Linux
$ cd kibanaproject/kibana-6.5.4/kibana-6.5.4/bin
$ kibana
Kibana 启动后,用户可以看到以下屏幕 −
一旦在控制台中看到准备信号,您就可以使用 http://localhost:5601/ 在浏览器中打开 Kibana。Kibana 可用的默认端口为 5601。
Kibana 的用户界面如下图所示 −
在下一章中,我们将学习如何使用 Kibana 的 UI。要了解 Kibana UI 上的 Kibana 版本,请转到左侧的“管理”选项卡,它将显示我们当前使用的 Kibana 版本。
Kibana - Introduction To Elk Stack
Kibana 是一个开源可视化工具,主要用于分析大量日志,形式为折线图、条形图、饼图、热图等。Kibana 与 Elasticsearch 和 Logstash 同步工作,共同形成所谓的 ELK 堆栈。
ELK 代表 Elasticsearch、Logstash 和 Kibana。 ELK 是全球用于日志分析的最流行的日志管理平台之一。
在 ELK 堆栈中 −
-
Logstash 从不同的输入源中提取日志数据或其他事件。它处理事件,然后将事件存储在 Elasticsearch 中。
-
Kibana 是一个可视化工具,它可以访问Elasticsearch中的日志,并能够以折线图、条形图、饼图等形式显示给用户。
在本教程中,我们将紧密配合 Kibana 和 Elasticsearch,并以不同的形式可视化数据。
在本章中,让我们了解如何使用 ELK 堆栈。此外,您还将看到如何 −
-
从 Logstash 加载 CSV 数据到 Elasticsearch。
-
在 Kibana 中使用来自 Elasticsearch 的索引。
Load CSV data from Logstash to Elasticsearch
我们将使用 CSV 数据来上传使用 Logstash 到 Elasticsearch 的数据。要对数据分析开展工作,我们可以从 kaggle.com 网站获取数据。Kaggle.com 网站已上传所有类型的数据,用户可以使用这些数据来开展数据分析。
我们从这里获取了 countries.csv 数据: https://www.kaggle.com/fernandol/countries-of-the-world 。您可以下载 csv 文件并使用它。
我们将使用 csv 文件包含以下详细信息。
文件名 − countriesdata.csv
列 − “国家/地区”、“区域”、“人口”、“面积”
您还可以创建一个虚拟的 csv 文件并使用它。我们将使用 Logstash 将此数据从 countriesdata.csv 转储到 Elasticsearch。
在您的终端启动 elasticsearch 和 Kibana 并保持运行。我们必须创建 logstash 的配置文件,其中包含有关 CSV 文件列的详细信息,以及其他详细信息,如下面的 logstash-config 文件所示 −
input {
file {
path => "C:/kibanaproject/countriesdata.csv"
start_position => "beginning"
sincedb_path => "NUL"
}
}
filter {
csv {
separator => ","
columns => ["Country","Region","Population","Area"]
}
mutate {convert => ["Population", "integer"]}
mutate {convert => ["Area", "integer"]}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
=> "countriesdata-%{+dd.MM.YYYY}"
}
stdout {codec => json_lines }
}
在配置文件中,我们创建了 3 个组件 −
Filter
将使用分隔符 csv 组件,在我们的例子中是逗号,以及 csv 文件中可用的列。由于 logstash 将所有传入的数据都视为字符串,如果我们想要将任何列用作整数,则必须使用 mutate 指定相同的浮点数,如上所示。
Output
对于输出,我们需要指定放置数据的位置。在这里,我们使用的案例是 elasticsearch。需要提供给 elasticsearch 的数据是它正在运行的主机,我们已将它指定为 localhost。下一个字段是索引,我们已将名称指定为 countries-currentdate。一旦将数据更新到 Elasticsearch 中,我们必须在 Kibana 中使用相同的索引。
将上述配置文件保存为 logstash_countries.config。请注意,我们需要在下一步的 logstash 命令中提供此配置的路径。
要将数据从 csv 文件加载到 elasticsearch,我们需要启动 elasticsearch 服务器 −
现在,在浏览器中运行 http://localhost:9200 以确认 elasticsearch 是否运行成功。
我们有正在运行的 elasticsearch。现在,转到 logstash 已安装的路径,并运行以下命令将数据上传到 elasticsearch。
> logstash -f logstash_countries.conf
以上屏幕显示从 CSV 文件加载数据到 Elasticsearch。要了解我们在 Elasticsearch 中创建了索引,我们可以按以下方式检查 −
我们可以看到创建了如上所示的 countriesdata-28.12.2018 索引。
索引 − countries-28.12.2018 的详细信息如下 −
请注意,当数据从 logstash 上传到 elasticsearch 时,会创建具有属性的映射详细信息。
Use Data from Elasticsearch in Kibana
现在,我们有在 localhost 上运行的 Kibana,端口 5601 − http://localhost:5601 。Kibana 的 UI 显示如下 −
请注意,我们已经将 Kibana 连接到 Elasticsearch,我们应该能够在 Kibana 内看到 index :countries-28.12.2018 。
在 Kibana UI 中,单击左侧的 Management Menu 选项 −
现在,单击 Index Management −
Elasticsearch 中存在的索引显示在索引管理中。我们将在 Kibana 中使用的索引是 countriesdata-28.12.2018。
因此,因为我们已经在 Kibana 中有了 elasticsearch 索引,所以下一步将了解如何在 Kibana 中使用索引以饼状图、条形图、折线图等形式可视化数据。
Kibana - Loading Sample Data
我们已经了解如何将数据从 logstash 上传到 elasticsearch。我们将在这里使用 logstash 和 elasticsearch 上传数据。但是对于我们需要的带有日期、经度和纬度字段的数据,我们将在后面的章节中了解。如果我们没有 CSV 文件,我们还将看到如何在 Kibana 中直接上传数据。
在本章中,我们将介绍以下主题 −
-
使用 Logstash 在 Elasticsearch 中上传具有日期、经度和纬度字段的数据
-
使用开发工具上传大量数据
Using Logstash upload for data having fields in Elasticsearch
我们将使用 CSV 格式的数据,并且是从 Kaggle.com 获取的数据,其中包含可以用于分析的数据。
此处使用的家庭医疗服务数据是从网站 Kaggle.com 获取的。
以下是 CSV 文件中可用的字段 −
["Visit_Status","Time_Delay","City","City_id","Patient_Age","Zipcode","Latitude","Longitude",
"Pathology","Visiting_Date","Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]
Home_visits.csv 如下所示 −
以下是要与 logstash 一起使用的配置文件 −
input {
file {
path => "C:/kibanaproject/home_visits.csv"
start_position => "beginning"
sincedb_path => "NUL"
}
}
filter {
csv {
separator => ","
columns =>
["Visit_Status","Time_Delay","City","City_id","Patient_Age",
"Zipcode","Latitude","Longitude","Pathology","Visiting_Date",
"Id_type","Id_personal","Number_Home_Visits","Is_Patient_Minor","Geo_point"]
}
date {
match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
target => "Visiting_Date"
}
mutate {convert => ["Number_Home_Visits", "integer"]}
mutate {convert => ["City_id", "integer"]}
mutate {convert => ["Id_personal", "integer"]}
mutate {convert => ["Id_type", "integer"]}
mutate {convert => ["Zipcode", "integer"]}
mutate {convert => ["Patient_Age", "integer"]}
mutate {
convert => { "Longitude" => "float" }
convert => { "Latitude" => "float" }
}
mutate {
rename => {
"Longitude" => "[location][lon]"
"Latitude" => "[location][lat]"
}
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "medicalvisits-%{+dd.MM.YYYY}"
}
stdout {codec => json_lines }
}
默认情况下,logstash 将要在 elasticsearch 中上传的所有内容都视为字符串。在您的 CSV 文件中,如果有日期字段,您需要执行以下操作以获取日期格式。
For date field −
date {
match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
target => "Visiting_Date"
}
对于地理位置,elasticsearch 的理解如下 −
"location": {
"lat":41.565505000000044,
"lon": 2.2349995750000695
}
因此,我们需要确保经度和纬度采用 elasticsearch 所需的格式。因此,我们首先需要将经度和纬度转换为浮点数,然后再重命名它,使其作为 location JSON 对象的一部分,其中包含 lat 和 lon 。这里显示了代码 −
mutate {
convert => { "Longitude" => "float" }
convert => { "Latitude" => "float" }
}
mutate {
rename => {
"Longitude" => "[location][lon]"
"Latitude" => "[location][lat]"
}
}
如要将字段转换成整数,请使用以下代码 −
mutate {convert => ["Number_Home_Visits", "integer"]}
mutate {convert => ["City_id", "integer"]}
mutate {convert => ["Id_personal", "integer"]}
mutate {convert => ["Id_type", "integer"]}
mutate {convert => ["Zipcode", "integer"]}
mutate {convert => ["Patient_Age", "integer"]}
处理完字段后,运行以下命令将数据上传到 elasticsearch −
-
进入 Logstash bin 目录并运行以下命令。
logstash -f logstash_homevisists.conf
-
一旦完成,您应该在 Elasticsearch 中看到 logstash conf 文件中提到的索引,如下所示:
现在,我们可以在上述上载的索引上创建索引模式,并进一步使用它来创建可视化效果。
Using Dev Tools to Upload Bulk Data
我们将从 Kibana UI 使用 Dev Tools。Dev Tools 有助于将数据上载到 Elasticsearch,而无需使用 Logstash。我们可以发布、放置、删除、搜索使用 Dev Tools 在 Kibana 中想要的数据。
在本节中,我们将尝试将示例数据加载到 Kibana 本身。我们可以使用它来练习示例数据并在 Kibana 功能中进行操作以很好地理解 Kibana。
让我们从以下 URL 获取 json 数据并在 Kibana 中上载相同的数据。同样,您可以尝试将任何示例 json 数据加载到 Kibana 内。
在我们开始上载示例数据之前,我们需要让 json 数据带有在 Elasticsearch 中使用的索引。当我们使用 logstash 上载它时,logstash 会负责添加索引,用户不必关心 Elasticsearch 所需的索引。
Normal Json Data
[
{"type":"act","line_id":1,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"},
{"type":"scene","line_id":2,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":"SCENE I.London. The palace."},
{"type":"line","line_id":3,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":
"Enter KING HENRY, LORD JOHN OF LANCASTER, the
EARL of WESTMORELAND, SIR WALTER BLUNT, and others"}
]
与 Kibana 一起使用的 json 代码必须带有索引,如下所示:
{"index":{"_index":"shakespeare","_id":0}}
{"type":"act","line_id":1,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":"ACT I"}
{"index":{"_index":"shakespeare","_id":1}}
{"type":"scene","line_id":2,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"",
"text_entry":"SCENE I. London. The palace."}
{"index":{"_index":"shakespeare","_id":2}}
{"type":"line","line_id":3,"play_name":"Henry IV",
"speech_number":"","line_number":"","speaker":"","text_entry":
"Enter KING HENRY, LORD JOHN OF LANCASTER, the EARL
of WESTMORELAND, SIR WALTER BLUNT, and others"}
请注意,json 文件中还有附加数据 − {"index":{"_index":"nameofindex","_id":key}} 。
为了让任何示例 json 文件与 Elasticsearch 兼容,我们这里有一个用 php 编写的小代码,它将输出 json 文件,该 json 文件给出 Elasticsearch 想要格式。
PHP Code
<?php
$myfile = fopen("todo.json", "r") or die("Unable to open file!"); // your json
file here
$alldata = fread($myfile,filesize("todo.json"));
fclose($myfile);
$farray = json_decode($alldata);
$afinalarray = [];
$index_name = "todo";
$i=0;
$myfile1 = fopen("todonewfile.json", "w") or die("Unable to open file!"); //
writes a new file to be used in kibana dev tool
foreach ($farray as $a => $value) {
$_index = json_decode('{"index": {"_index": "'.$index_name.'", "_id": "'.$i.'"}}');
fwrite($myfile1, json_encode($_index));
fwrite($myfile1, "\n");
fwrite($myfile1, json_encode($value));
fwrite($myfile1, "\n");
$i++;
}
?>
我们从 https://jsonplaceholder.typicode.com/todos 获取 todo json 文件,并使用 php 代码将其转换为我们需要在 Kibana 中上载的格式。
要加载示例数据,请打开 dev tools 标签,如下所示:
现在,我们将使用如上所示的控制台。我们将获取通过 php 代码运行后得到的 json 数据。
在 dev tools 中用于上载 json 数据的命令为:
POST _bulk
请注意,我们创建的索引名称为 todo。
单击绿色按钮后,数据将被上载,您可以按照以下步骤检查索引是否在 Elasticsearch 中创建:
您可以在 dev tools 本身中检查相同的内容,如下所示:
Command −
GET /_cat/indices
如果您想在您的索引:todo 中搜索一些内容,您可以按照以下步骤操作:
Command in dev tool
GET /todo/_search
显示的上述搜索结果如下 −
它显示了 todoindex 中存在的所有记录。我们获得的总记录数是 200。
Kibana - Management
在 Kibana 中,管理部分用于管理索引模板。在本节中,我们将讨论以下内容 −
-
创建不带时间过滤字段的索引模板
-
创建带时间过滤字段的索引模板
Create Index Pattern Without Time Filter field
为此,请转到 Kibana UI,然后单击管理 −
要使用 Kibana,我们首先必须创建从 Elasticsearch 中填充内容的索引。你可以获取从 Elasticsearch → 索引管理提供的全部索引,如图所示 −
目前 Elasticsearch 中有上述索引。文档计数告诉我们每个索引中可用的记录数。如果有任何索引已更新,文档计数将会不断变化。主存储将显示已上传的每个索引的大小。
若要在 Kibana 中创建新索引,我们需要单击下面的索引模板 −
单击索引模板后,会显示以下屏幕 −
请注意,创建索引模板按钮用于创建新索引。回想一下,我们在本教程的开始就已经创建了 countriesdata-28.12.2018。
Create Index Pattern with Time filter field
单击创建索引模板来创建新索引。
会显示 Elasticsearch 中的索引,选择一个以创建新索引。
现在,单击下一步。
下一步是配置设置,你需要输入以下内容 −
-
时间过滤字段名称用于根据时间过滤数据。下拉菜单将显示索引中所有与时间和日期相关的字段。
如下图所示,Visiting_Date 是日期字段。选择 Visiting_Date 作为时间过滤字段名称。
单击 {} 按钮来创建索引。完成后,它将显示索引 medicalvisits-26.01.2019 中显示的所有字段,如下图所示 −
我们将在索引 medicalvisits-26.01.2019 中具有以下字段 −
["Visit_Status","Time_Delay","City","City_id","Patient_Age","Zipcode","Latitude
","Longitude","Pathology","Visiting_Date","Id_type","Id_personal","Number_Home_
Visits","Is_Patient_Minor","Geo_point"].
该索引包含家庭就诊的所有数据。从 logstash 插入时,Elasticsearch 还添加了一些附加字段。
Kibana - Discover
本章讨论 Kibana UI 中的 Discover 选项卡。我们将详细了解以下概念 -
-
Index without date field
-
Index with date field
Index without date field
在左侧菜单中选择 Discover,如下所示 -
在右侧,它显示我们上一章中创建的 countriesdata- 28.12.2018 索引中可用数据的详细信息。
在左上角,它显示可用的记录总数 -
我们可以在此选项卡中获取 (countriesdata-28.12.2018) 索引内数据的详细信息。在上文显示的屏幕左上角,我们可以看到类似于新建、保存、打开、共享、检查和自动刷新的按钮。
如果你单击“自动刷新”,它会显示如下屏幕:
你可以通过单击上面的“秒”、“分钟”或“小时”来设置自动刷新间隔。Kibana 将自动刷新屏幕,并在每次设置的间隔计时器后获取最新数据。
来自 index:countriesdata-28.12.2018 的数据如下所示:
所有字段以及数据以行方式显示。单击箭头展开行,它将以表格式或 JSON 格式提供详细信息
JSON Format
左侧有一个按钮名为“查看单份文档”。
如果您单击它,它将以类似于下面所示的方式显示行中显示的行或数据
虽然我们在这里获得所有数据详细信息,但很难逐一浏览。
现在让我们尝试获取表格格式的数据。以下显示了一种展开其中一行并单击每个字段中可用的切换列选项的方法:
单击每个可用的“数据表中切换列”选项,您将注意到数据以表格格式显示
在此处,我们选择了字段国家、地区、区域和人口。折叠展开的行,您现在应该看到所有数据为表格格式。
我们选择的字段显示在屏幕左侧,如下所示
请注意,有两个选项——已选择的字段和可用的字段。我们选择在表格格式中显示的字段是已选择字段的一部分。如果您想删除任何字段,可以通过单击将在所选字段选项中的字段名称中看到的“移除”按钮来执行此操作。
删除后,该字段将在可用的字段内可用,您可以在其中通过单击将在您想要的字段中显示的“添加”按钮来将其添加回来。您还可以使用此方法通过从“可用字段”中选择所需字段来获取表格格式的数据。
我们在 Discover 中有一个搜索选项,我们可以使用它来搜索索引内的数据。让我们在此处尝试与搜索选项相关的示例
假设您想要搜索国家印度,您可以执行以下操作:
您可以输入您的搜索详细信息并单击“更新”按钮。如果您想要搜索以 Aus 开头的国家,您可以执行以下操作:
单击“更新”以查看结果
在这里,有两个以 Aus* 开头的国家。搜索字段有一个“选项”按钮,如上所示。当用户单击它时,它会显示一个切换按钮,当开启时有助于编写搜索查询。
打开查询功能并在搜索中输入字段名称,它将显示该字段可用的选项。
例如,国家字段是一个字符串,它会显示针对字符串字段的以下选项:
类似地,“区域”是一个数字字段,它会显示针对数字字段的以下选项:
您可以在 Discover 字段中尝试不同的组合并根据您的选择筛选数据。可以使用“保存”按钮保存“发现”标签中的数据,以便将来使用。
要保存 Discover 中的数据,请单击右上角的保存按钮,如下所示
给你的搜索命名并单击确认保存保存即可。保存完成后,下次访问 Discover 选项卡时,你可以单击右上角的打开按钮获取已保存的标题,如下所示
你还可以使用右上角的共享按钮与他人共享数据。单击它,你就可以找到共享选项,如下所示
你可以使用 CSV 报告或永久链接的形式共享它。
CSV 报告中可以选择的选项有
单击生成 CSV 获取报告以与他人共享。
单机永久链接可用的选项如下所示
快照选项将提供一个 Kibana 链接,该链接将显示当前搜索中可用的数据。
已保存的对象选项将提供一个 Kibana 链接,该链接将显示搜索中可用的最新数据。
快照 - http://localhost:5601/goto/309a983483fccd423950cfb708fabfa5 已保存的对象 :http://localhost:5601/app/kibana#/discover/40bd89d0-10b1-11e9-9876-4f3d759b471e?_g=()
你可以使用 Discover 选项卡和可用的搜索选项,并且可以保存并与他人共享获得的结果。
Index with Date Field
转到 Discover 选项卡并选择索引:*medicalvisits-26.01.2019*
它显示了消息 - “没有结果与你的搜索条件相符”,为我们选择的索引在过去 15 分钟内。该索引包含了 2015 年、2016 年、2017 年和 2018 年的数据。
更改时间范围,如下所示
单击绝对选项卡。
选择自 - 1 月 1 日 2017 年和至 - 12 月 31 日 2017 年,因为我们将分析 2017 年的数据。
单击按钮添加时间范围。它将向你显示数据和条形图,如下所示
这是 2017 年的月度数据
由于我们还存储了时间加上日期,我们也可以按小时和分钟过滤数据。
上述数字显示了 2017 年的小时数据。
这里从索引 medicalvisits-26.01.2019 显示字段
我们有如下所示的可用字段,显示在左侧:
您可以从可用字段中选择字段,并将数据转换为如下所示的制表符分隔格式。这里我们选择如下字段:
以上字段的表格数据如下所示:
Kibana - Aggregation And Metrics
在学习 Kibana 期间经常遇到的两个术语是存储段和指标聚合。本章将讨论它们在 Kibana 中所扮演的角色以及有关它们的更多详细信息。
What is Kibana Aggregation?
聚合指的是某个特定搜索查询或过滤器获得的文档集合或文档集。聚合构成在 Kibana 中构建所需的视化的主要概念。
每当执行任何可视化时,你需要确定标准,这意味着你要以什么方式对数据进行分组以对其执行度量。
在这一部分中,我们将讨论两种类型的聚合 −
-
Bucket Aggregation
-
Metric Aggregation
Bucket Aggregation
存储段主要包含一个键和一个文档。执行聚合时,会将文档放置在相应的存储段中。因此,最终你应该看到存储段列表,每个存储段都包含文档列表。在 Kibana 中创建可视化时你会看到的存储段聚合列表如下所示 −
存储段聚合具有以下列表 −
-
Date Histogram
-
Date Range
-
Filters
-
Histogram
-
IPv4 Range
-
Range
-
Significant Terms
-
Terms
在创建时,你需要为存储段聚合确定其中之一,即对存储段中的文档进行分组。
例如,对于分析,考虑我们在本教程开头上传的国家数据。countries 索引中可用的字段有国家名称、面积、人口、区域。在国家数据中,我们有国家名称及其人口、区域和面积。
让我们假设我们要按区域划分数据。然后,每个区域中的国家将成为我们的搜索查询,因此在这种情况下,区域将形成我们的存储段。下面的框图显示 R1、R2、R3、R4、R5 和 R6 是我们获得的存储段,而 c1、c2 …c25 是属于存储段 R1 至 R6 的文档列表。
我们可以看到每个存储段中有一些圆圈。它们是基于搜索标准的文档集,并被视为属于各个存储段的一部分。在存储段 R1 中,我们有文档 c1、c8 和 c15。这些文档是属于该区域的国家,对于其他的存储段而言也是如此。因此,如果我们计算存储段 R1 中的国家数量,则是 3,R2 为 6,R3 为 6,R4 为 2,R5 为 5,R6 为 4。
因此,通过存储段聚合,我们可以将文档聚合到存储段中,并像上面显示的那样获得该存储段中的文档列表。
到目前为止,我们所具有的存储段聚合列表有 −
-
Date Histogram
-
Date Range
-
Filters
-
Histogram
-
IPv4 Range
-
Range
-
Significant Terms
-
Terms
现在让我们详细讨论如何逐个形成这些存储段。
Date Histogram
日期直方图聚合用于日期字段。因此,如果你要用于可视化的索引在该索引中具有日期字段,则只能使用这种聚合类型。这是一个多存储段聚合,这意味着你有一些文档可以作为多个存储段的一部分。需要针对这种聚合使用一个间隔,具体信息如下 −
将“Bucket聚合”选择为“日期直方图”时,它将显示“字段”选项,其中仅提供与日期相关的字段。选择字段后,你需要选择具有以下详细信息的“时间间隔”−
因此,根据所选索引、字段和时间间隔中的文档,将对文档进行分类。例如,如果你选择每月时间间隔,则会将基于日期的文档转换为多个子段,根据月份(即 1 月至 12 月),文档将被放入子段中。在这里,1 月、2 月……12 月将是子段。
Filters
使用“过滤器”类型聚合,将根据过滤器形成子段。在这里,你会获得一个多子段,根据过滤器条件,一个文档可以存在一个或多个子段中。
使用过滤器,用户可以在过滤器选项中编写查询,如下所示 − 。
你可以通过使用“添加过滤器”按钮添加多个你选择的过滤器。
IPv4 Range
此类型的聚合被用于主要是用于 IP 地址。
我们拥有的索引,即 contriesdata-28.12.2018 没有类型为 IP 的字段,所以它会显示如上所示的消息。如果你碰巧有 IP 字段,你可以像上所示那样指定其中的“自”和“至”值。
Terms
此类型的聚合用于所有可用的字段,例如数字、字符串、日期、布尔值、IP 地址、时间戳等。请注意,这是我们将在本教程中处理的所有可视化中将要使用的聚合。
我们有一个“排序依据”选项,我们可以根据我们选择的指标对数据进行分组。大小是指你希望在可视化中显示的子段数。
接下来,我们来谈谈指标聚合。
Metric Aggregation
指标聚合主要指的是对子段中存在的文档进行的数学计算。例如,如果你选择一个数字字段,你可以针对此字段进行的指标计算包括计数、求和、最小值、最大值和平均值等。
这里给出了我们将讨论的指标聚合的列表 −
在本节中,让我们讨论我们将经常用到的重要指标 −
-
Average
-
Count
-
Max
-
Min
-
Sum
该指标将应用于我们已经在上面讨论过的各个子段聚合中。
接下来,我们在此讨论指标聚合列表 −
Kibana - Create Visualization
我们可以以条形图、折线图、饼图等的格式对数据进行可视化。在本章中,我们将了解如何创建可视化。
Create Visualization
转到 Kibana 可视化,如下所示 −
我们没有创建任何可视化,所以它显示空白,并且有一个按钮用于创建一个可视化。
单击屏幕上显示的按钮 Create a visualization ,它会把你带到屏幕,如下所示 −
在此,你可以选择可视化数据所需的选项。我们将在接下来的章节中详细了解每一个选项。现在,我们将选择饼图作为开始。
选择可视化类型后,你现在需要选择你想要处理的索引,它会把你带到屏幕,如下所示 −
现在我们有了一个默认的饼图。我们将使用 countriesdata-28.12.2018 获取饼图格式中国家数据中可用的区域数量。
Bucket and Metric Aggregation
左侧有我们选择为计数的指标。在桶中,有两个选项,拆分切片和拆分图表。我们将使用拆分切片选项。
现在,选择“拆分片段”,它将显示以下选项 −
现在,选择聚合项“项”,它将显示更多选项,可以输入如下 −
字段下拉框将包含从索引 countriesdata 中选择的所有字段。我们已选择 Region 字段和 Order By。请注意,我们已为 Order By 选择 count 指标。我们将按照降序对其排序,大小设定为 10。这意味着,我们将从 countries 索引中获取排名前 10 的区域计数。
现在,单击如下所示的高亮分析按钮,您应会看到右侧已更新的饼图。
Kibana - Working With Charts
让我们探索并了解在可视化中使用最广泛的图表。
-
Horizontal Bar Chart
-
Vertical Bar Chart
-
Pie Chart
以下是创建上述可视化的步骤。让我们从水平条形图开始。
Horizontal Bar Chart
打开 Kibana,然后单击左侧的 Visualize(可视化)选项卡,如下图所示 −
单击 + 按钮以创建新的可视化 −
单击上面列出的 Horizontal Bar(水平条形图)。你必须选择要可视化的索引。
选择 countriesdata-28.12.2018 索引,如下图所示。选择索引后,将显示如下所示的屏幕 −
该屏幕显示默认计数。现在,让我们绘制一个水平条形图,其中我们可以看到排名前 10 位国家的总人口。
为此,我们需要选择 Y 和 X 轴上需要显示的内容。因此,选择 Bucket and Metric Aggregation(分组和度量聚合) −
现在,如果你单击 Y-Axis(Y 轴),将显示如下所示的屏幕 −
现在,从这里显示的选项中选择聚合 −
请注意,我们在此处选择最大值聚合,因为我们要根据可用最大人口来显示数据。
接下来,我们必须选择需要最大值的那个字段。在索引 countriesdata-28.12.2018 中,我们只有 2 个数字字段 - area(面积)和 population(人口)。
由于我们要显示最大人口,因此选择 Population(人口)字段,如下图所示 −
通过此操作,我们在 Y 轴上完成操作。我们针对 Y 轴获取的输出如下所示:
现在让我们选择 X 轴,如下所示:
如果您选择 X 轴,那么将得到如下输出:
选择按词条聚合。
从下拉菜单中选择字段。我们想要按照国家获取人口,所以选择国家字段。我们有以下排序选项:
我们将按最大人口排序,因为我们希望人口最多的国家优先显示。添加了所需数据后,单击指标数据顶部所示的应用更改按钮,如下所示:
一旦你单击应用更改,我们将获得一个水平图形,其中我们可以看到中国是人口最多的国家,其次是印度、美国等。
类似地,你可以通过选择所需的字段来绘制不同的图形。接下来,我们将此可视化效果保存为 max_population,以便以后用于创建仪表板。
在下一部分,我们将创建垂直条形图。
Vertical Bar Chart
单击可视化选项卡,并使用垂直条形图和索引 countriesdata-28.12.2018 创建一个新的可视化效果。
在此垂直条形图可视化效果中,我们将创建以国家地区为维度的条形图,即按照区域面积从大到小对国家进行展示。
因此,让我们选择 Y 和 X 轴,如下所示:
Kibana - Working With Graphs
Kibana - Working With Heat Map
在本章中,我们将了解如何使用热图。热图会为数据指标中选定的范围使用不同的颜色,以显示数据呈现。
Getting Started with Heat Map
首先,我们需要通过单击如下所示的左侧可视化选项卡来创建可视化 −
如上所示,选择可视化类型作为热图。它会要求您选择如下所示的索引 −
如上所示,选择索引 countriesdata-28.12.2018。一旦选择索引,我们就可以选择如下所示的数据 −
如上所示,选择指标 −
如上所示,从下拉框中选择 Max 聚合。
由于我们希望按国家绘制 Max 面积,因此我们选择 Max。
现在将选择如下所示的区间值 −
现在,让我们选择 X 轴,如下所示 −
我们将聚合用作词条、字段用作国家且按最大区域排序。单击应用更改,如下所示 −
如果您单击“应用更改”,则热图如下所示 −
热图以不同的颜色显示,区域范围显示在右侧。您可以通过单击区域范围旁边的圆圈来更改颜色,如下所示 −
Kibana - Working With Coordinate Map
Kibana 中的坐标地图将显示地理区域,并根据您指定的聚合用圆圈标记区域。
Create Index for Coordinate Map
用于坐标地图的 Bucket 聚合是 geohash 聚合。对于这种聚合类型,您要使用的索引应具有地理点类型字段。地理点是纬度和经度的组合。
我们将使用 Kibana 开发工具创建一个索引,并向其中添加批量数据。我们将添加映射并添加所需的 geo_point 类型。
我们要使用的数据如下所示 −
{"index":{"_id":1}}
{"location": "2.089330000000046,41.47367000000008", "city": "SantCugat"}
{"index":{"_id":2}}
{"location": "2.2947825000000677,41.601800991000076", "city": "Granollers"}
{"index":{"_id":3}}
{"location": "2.1105957495300474,41.5496295760424", "city": "Sabadell"}
{"index":{"_id":4}}
{"location": "2.132605678083895,41.5370461908878", "city": "Barbera"}
{"index":{"_id":5}}
{"location": "2.151270020052683,41.497779918345415", "city": "Cerdanyola"}
{"index":{"_id":6}}
{"location": "2.1364609496220606,41.371303520399344", "city": "Barcelona"}
{"index":{"_id":7}}
{"location": "2.0819450306711165,41.385491966414705", "city": "Sant Just Desvern"}
{"index":{"_id":8}}
{"location": "2.00532082278266,41.542294286427385", "city": "Rubi"}
{"index":{"_id":9}}
{"location": "1.9560805366930398,41.56142635214226", "city": "Viladecavalls"}
{"index":{"_id":10}}
{"location": "2.09205348251486,41.39327140161001", "city": "Esplugas de Llobregat"}
现在,在 Kibana 开发工具中运行以下命令,如下所示 −
PUT /cities
{
"mappings": {
"_doc": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
POST /cities/_city/_bulk?refresh
{"index":{"_id":1}}
{"location": "2.089330000000046,41.47367000000008", "city": "SantCugat"}
{"index":{"_id":2}}
{"location": "2.2947825000000677,41.601800991000076", "city": "Granollers"}
{"index":{"_id":3}}
{"location": "2.1105957495300474,41.5496295760424", "city": "Sabadell"}
{"index":{"_id":4}}
{"location": "2.132605678083895,41.5370461908878", "city": "Barbera"}
{"index":{"_id":5}}
{"location": "2.151270020052683,41.497779918345415", "city": "Cerdanyola"}
{"index":{"_id":6}}
{"location": "2.1364609496220606,41.371303520399344", "city": "Barcelona"}
{"index":{"_id":7}}
{"location": "2.0819450306711165,41.385491966414705", "city": "Sant Just Desvern"}
{"index":{"_id":8}}
{"location": "2.00532082278266,41.542294286427385", "city": "Rubi"}
{"index":{"_id":9}}
{"location": "1.9560805366930398,41.56142635214226", "city": "Viladecavalls"}
{"index":{"_id":10}}
{"location": "2.09205348251486,41.3s9327140161001", "city": "Esplugas de Llobregat"}
现在,在 Kibana 开发工具中运行以上命令 −
上述将创建类型为 _doc 的索引名称城市,字段位置为类型 geo_point。
现在,让我们向索引添加数据:城市 −
我们已完成创建名称为 cities พร้อม数据的索引。现在,让我们使用管理选项卡为城市创建索引模式。
此处显示了 cities 索引中字段的详细信息 −
我们可以看到 location 是类型 geo_point。我们现在可以使用它来创建可视化。
Kibana - Working With Region Map
通过此可视化,您可以在世界地理地图上看到表示的数据。在本章中,让我们详细了解它。
Create Index for Region Map
我们创建一个新索引,以便使用区域地图可视化工具。我们即将上传的数据如下所示 −
{"index":{"_id":1}}
{"country": "China", "population": "1313973713"}
{"index":{"_id":2}}
{"country": "India", "population": "1095351995"}
{"index":{"_id":3}}
{"country": "United States", "population": "298444215"}
{"index":{"_id":4}}
{"country": "Indonesia", "population": "245452739"}
{"index":{"_id":5}}
{"country": "Brazil", "population": "188078227"}
{"index":{"_id":6}}
{"country": "Pakistan", "population": "165803560"}
{"index":{"_id":7}}
{"country": "Bangladesh", "population": "147365352"}
{"index":{"_id":8}}
{"country": "Russia", "population": "142893540"}
{"index":{"_id":9}}
{"country": "Nigeria", "population": "131859731"}
{"index":{"_id":10}}
{"country": "Japan", "population": "127463611"}
请注意,我们将在 dev 工具中使用 _bulk 上载数据。
现在,转到 Kibana Dev 工具并执行以下查询 −
PUT /allcountries
{
"mappings": {
"_doc": {
"properties": {
"country": {"type": "keyword"},
"population": {"type": "integer"}
}
}
}
}
POST /allcountries/_doc/_bulk?refresh
{"index":{"_id":1}}
{"country": "China", "population": "1313973713"}
{"index":{"_id":2}}
{"country": "India", "population": "1095351995"}
{"index":{"_id":3}}
{"country": "United States", "population": "298444215"}
{"index":{"_id":4}}
{"country": "Indonesia", "population": "245452739"}
{"index":{"_id":5}}
{"country": "Brazil", "population": "188078227"}
{"index":{"_id":6}}
{"country": "Pakistan", "population": "165803560"}
{"index":{"_id":7}}
{"country": "Bangladesh", "population": "147365352"}
{"index":{"_id":8}}
{"country": "Russia", "population": "142893540"}
{"index":{"_id":9}}
{"country": "Nigeria", "population": "131859731"}
{"index":{"_id":10}}
{"country": "Japan", "population": "127463611"}
接下来,让我们创建索引 allcountries。我们指定的国家字段类型为 keyword −
PUT /allcountries
{
"mappings": {
"_doc": {
"properties": {
"country": {"type": "keyword"},
"population": {"type": "integer"}
}
}
}
}
Note − 为了使用区域地图,我们需要指定字段类型,该字段类型应与聚合一起使用,且类型为关键字。
完成后,使用 _bulk 命令上传数据。
现在我们将创建索引模式。转到 Kibana 管理选项卡并选择创建索引模式。
下面将显示来自 allcountries 索引的字段。
Getting Started with Region Maps
现在,我们使用区域地图创建可视化效果。转到可视化效果并选择区域地图。
完成后,选择索引 allcountries 并继续。
按照以下所示选择聚合指标和存储桶指标 −
在此,我们选择字段为国家,因为我想在世界地图上显示与此相同的字段。
Vector Map and Join Field for Region Map
对于区域地图,还需要选择选项选项卡,如下所示 −
此选项选项卡具有图层设置配置,需要这些配置将数据标识到世界地图中。
矢量地图具有以下选项 −
在此,我们选择世界各国,因为我具有各个国家地区的数据。
Join Field 具有以下详细信息 −
在我们索引中,我们有国家名称,因此我们将选择国家名称。
在样式设置中,您可以选择国家/地区要显示的颜色 −
我们选择红色。我们不会触及其他详细信息。
现在,单击“分析”按钮,查看如下显示在地图上的国家地区详细信息 −
Self-hosted Vector Map and Join Field in Kibana
您还可以为矢量地图和联接字段添加您自己的 Kibana 设置。为此,从 Kibana 配置文件夹中转至 kibana.yml,并添加以下详细信息 −
regionmap:
includeElasticMapsService: false
layers:
- name: "Countries Data"
url: "http://localhost/kibana/worldcountries.geojson"
attribution: "INRAP"
fields:
- name: "Country"
description: "country names"
选项选项卡中的矢量地图将使用上述数据填充,而不是默认数据。请注意,必须启用给出的 URL 的 CORS,以便 Kibana 可以下载它。所使用的 JSON 文件应使坐标连续。例如:−
当 region-map 矢量地图详细信息自托管时,选项选项卡如下所示 −
Kibana - Working With Guage And Goal
仪表可视化会告知你针对数据考虑的指标如何落在预定义范围内。
目标可视化描述了你的目标以及你的数据指标如何向该目标进行。
Working with Gauge
如需开始使用 Gauge,请转到可视化,并从 Kibana UI 中选择可视化选项卡。
点击 Gauge,并选择你想要使用的索引。
我们将在 medicalvisits-26.01.2019 索引上工作。
选择 2017 年 2 月的时间范围。
现在你可以选择指标和存储桶聚合。
我们选择了计数作为指标聚合。
我们选择的桶聚合是条件和选择的字段是 Number_Home_Visits。
从数据选项选项卡中,选择显示在下面的选项−
Gauge 类型可以是圆或弧。我们选择了弧,其他所有值均为默认值。
我们添加的预定义范围显示在这里 −
选择的颜色是绿到红。
现在,点击分析按钮,以 Gauge 形式查看可视化,如下所示 −
Kibana - Working With Canvas
画布是 Kibana 的另一项强大功能。使用画布可视化,您可以用不同颜色组合、形状、文本、多页设置等表示您的数据。
我们需要数据来显示在画布中。现在,让我们加载一些 Kibana 中已有的示例数据。
Loading Sample Data for Canvas Creation
要获取示例数据,请转到 Kibana 主页并单击“添加示例数据”,如下所示:
单击“加载数据集和 Kibana 仪表板”。这会将您带到如下图所示的屏幕:
单击示例电子商务订单的“添加”按钮。加载示例数据需要一些时间。完成后,您将收到一条警报消息,“示例电子商务数据已加载”。
Getting Started with Canvas Visualization
现在,转到画布可视化,如下所示:
单击“画布”,它将显示如下图所示的屏幕:
我们已经添加了电子商务和 Web 流量示例数据。我们可以创建新的工作区或使用现有工作区。
在这里,我们将选择现有的工作区。选择电子商务收入追踪工作区名称,它将显示如下图所示的屏幕:
Cloning an Existing Workpad in Canvas
我们将克隆工作区,以便对其进行更改。要克隆现有工作区,请单击左下方显示的工作区名称:
单击名称并选择“克隆”选项,如下所示:
单击克隆按钮,它将创建电子商务收入追踪工作区的副本。您可以按以下方式找到它:
在本部分中,让我们了解如何使用工作区。如果您看到上面的工作区,它有 2 页。因此,在画布中,我们可以在多页中表示数据。
第 2 页显示如下:
选择第 1 页,然后单击左侧显示的“总销售额”,如下所示:
在右侧,您将获得与之相关的数据:
现在使用的默认样式是绿色。我们可以在此处更改颜色,并检查相同内容的显示。
我们还更改了文本设置的字体和大小,如下所示:
Kibana - Create Dashboard
在之前的章节中,我们已经看到了如何创建垂直条形、水平条形、饼图等形式的可视化。在本章中,让我们学习如何将它们组合成仪表板。仪表板是由您创建的可视化集合,因此您可以同时查看它们。
Getting Started with Dashboard
要在 Kibana 中创建仪表板,请单击“仪表板”选项,如下所示 −
现在,单击“创建新仪表板”按钮,如下所示。它将带我们到如下所示的屏幕 −
请注意,到目前为止,我们还没有创建任何仪表板。顶部有选项,我们可以在其中保存、取消、添加、选项、共享、自动刷新,还可以更改时间以获取仪表板上的数据。我们将单击上面显示的“添加”按钮来创建一个新仪表板。
Add Visualization to Dashboard
当我们单击“添加”按钮(左上角)时,它会显示我们创建的可视化,如下所示 −
选择您要添加到仪表板的可视化。我们将选择前三个可视化,如下所示 −
这是它们在屏幕上同时显示的方式 −
因此,作为用户,您能够获得我们上传的数据的总体详细信息——按国家/地区划分,包括国家/地区名称、区域名称、面积和人口字段。
所以现在我们知道了所有可用的区域,按降序排列的每个国家的人口最多、面积最大的区域等等。
这只是我们上传的示例数据可视化,但在实际中,跟踪您业务的详细信息变得非常容易,例如您有一个每月或每天获得数百万次点击的网站,您想要跟踪每天、每小时、每分钟、每秒完成的销售额,并且如果您有 ELK 堆栈,Kibana 可以按您需要的方式每小时、每分钟、每秒在您眼前显示您的销售可视化。它会显示实际世界中正在发生的实时数据。
总的来说,Kibana 在按天、按小时或每分钟提取有关您业务交易的准确详细信息方面发挥着非常重要的作用,因此公司知道进展如何。
Changing Time Range for Dashboard
目前,您会看到显示的数据是过去 15 分钟的数据。请注意,这是一个没有时间字段的静态数据,因此显示的数据不会改变。当您将数据连接到实时系统时,更改时间也将显示反映的数据。
默认情况下,您会看到“过去 15 分钟”,如下所示 −
单击“过去 15 分钟”,然后将显示您可选择的时段范围。
请注意,有快速、相对、绝对和最新选项。以下屏幕截图显示了快速选项的详细信息 −
现在,单击相对以查看可用的选项 −
您可以在此处指定分钟、小时、秒、月、年前的起始和结束日期。
绝对选项具有以下详细信息 −
您可以看到日历选项,并可以选择一个日期范围。
“最新”选项将回传“过去 15 分钟”选项以及您最近选择的其他选项。选择时段范围将更新位于该时段范围内的数据。
Using Search and Filter in Dashboard
我们还可以在仪表板上使用搜索和筛选器。在搜索中,假设如果我们需要获取特定区域的详细信息,我们可以添加搜索,如下所示 −
在上述搜索中,我们使用了 Region(区域)字段,并且需要显示区域为 OCEANIA(大洋洲)的详细信息。
我们获得以下结果 −
根据以上数据,我们可以说在大洋洲地区,澳大利亚人口最多,面积最大。
类似地,我们也可以添加筛选器,如下所示 −
接下来,单击“添加筛选器”按钮,它将显示索引中提供的字段的详细信息,如下所示 −
选择您要在其上进行筛选的字段。我将使用 Region(区域)字段来获取亚洲地区详细信息,如下所示 −
保存筛选器,您应该会看到以下筛选器 −
现在,数据将按所添加的筛选器显示 −
您还可以添加更多筛选器,如下所示 −
您可以单击“禁用”复选框来禁用筛选器,如下所示。
您可以单击同一复选框以将其激活并激活筛选器。请注意,有一个删除按钮可用于删除筛选器。编辑按钮可用于编辑筛选器或更改筛选器选项。
对于显示的可视化效果,您将看到如下所示的三个点 -
单击并显示如下所示的选项 -
Kibana - Timelion
Timelion,也称为时间轴,是另一种可视化工具,它主要用于基于时间的数据分析。若要使用时间轴,我们需要使用简单的表达式语言,这将帮助我们连接到索引,并在数据上执行计算以获得我们需要的结果。
Where can we use Timelion?
当您想比较与时间相关的数据时,可以使用 Timelion。例如,您有一个网站,并且您每天都会获得浏览量。您想分析数据,其中您要将本周数据与上周进行比较,即星期一到星期一,星期二到星期二,依此类推,了解浏览量和流量是如何不同的。
Getting Started with Timelion
要开始使用 Timelion,请点击 Timelion,如下所示 −
Timelion 默认显示所有索引的时间轴,如下所示 −
Timelion 使用表达式语法。
Note − es(*) ⇒ 表示所有索引。
要获取可用于 Timelion 的函数详细信息,只需点击文本区域,如下所示 −
它会为您提供可用于表达式语法的函数列表。
当您开始使用 Timelion 时,它会显示一个欢迎信息,如下所示。强调的部分,即跳转到函数引用,给出了可用于 Timelion 的所有函数的详细信息。
Timelion Configuration
Timelion 的设置在 Kibana 管理 → 高级设置中完成。
点击高级设置并从类别中选择 Timelion
选择 Timelion 后,它将显示 timelion 配置所需的所有必要字段。
在以下字段中,您可以更改要在索引上使用的默认索引和时间字段 −
默认设置是 _all,时间字段是 @timestamp。我们保留原样,在时间表本身更改索引和时间字段。
Using Timelion to Visualize Data
我们将使用索引:medicalvisits-26.01.2019。以下是从 2017 年 1 月 1 日至 2017 年 12 月 31 日在时间表中显示的数据 -
用于上述可视化的表达式如下 -
.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date).bars()
我们使用了索引 medicalvisits-26.01.2019,该索引中的时间字段是 Visiting_Date,并使用了条形图功能。
下面我们按天分析了 2017 年 1 月份的 2 个城市。
使用表达式为:
.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date,
q=City:Sabadell).label(Sabadell),.es(index=medicalvisits-26.01.2019,
timefield=Visiting_Date, q=City:Terrassa).label(Terrassa)
此处显示了 2 天的时间表对比 -
Expression
.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date).label("August 2nd 2018"),
.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date,offset=-1d).label("August 1st 2018")
这里我们使用偏移量并且给出了 1 天的差异。我们选择了 2018 年 8 月 2 日作为当前日期。因此它给出 2018 年 8 月 2 日和 2018 年 8 月 1 日的数据差异。
2017 年 1 月份排名前 5 位的城市数据列表如下。我们在此处使用的表达式如下:
.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date,split=City.keyword:5)
我们使用了拆分并给出了城市作为字段名称,并且由于我们需要来自索引的前 5 位城市,因此我们给出了 split=City.keyword:5
它给出了每个城市的数量,并列出它们的名字,如作图中所示。
Kibana - Dev Tools
我们可以使用 Dev Tools 在 Elasticsearch 中上传数据,而无需使用 Logstash。我们可以发布、放入、删除、搜索我们在 Kibana 中使用 Dev Tools 想要的数据。
若要创建 Kibana 中的新索引,我们可以在 dev 工具中使用以下命令 -
Create Index USING PUT
创建索引的命令如下所示 -
PUT /usersdata?pretty
执行此命令后,将创建一个空索引用户数据。
已完成索引创建。现在将添加索引中的数据 -
Fetch Data from Index Using GET
我们可以如下获得记录 1 的详细信息 -
您可以如下获得所有记录 -
所以,我们可以像上面所示获得来自 usersdata 的所有记录。
Kibana - Creating Reports Using Kibana
可以通过使用 Kibana UI 中提供的“共享”按钮轻松创建报告。
Kibana 中的报告具有以下两种形式 −
-
Permalinks
-
CSV Report
Report as Permalinks
在执行可视化时,您可以按以下方式共享 −
使用“共享”按钮以嵌入代码或永久链接的形式与他人共享。
在嵌入代码的情况下,您获得以下选项 −
您可以为快照或已保存对象生成 iframe 代码作为短网址或长网址。快照不会提供最新数据,用户将能够查看在共享链接时保存的数据。稍后进行的任何更改将不会反映在内。
在已保存对象的情况下,您将获得对该可视化所做的最新更改。
针对长网址的快照 IFrame 代码 −
<iframe src="http://localhost:5601/app/kibana#/visualize/edit/87af
cb60-165f-11e9-aaf1-3524d1f04792?embed=true&_g=()&_a=(filters:!(),linked:!f,query:(language:lucene,query:''),
uiState:(),vis:(aggs:!((enabled:!t,id:'1',params:(field:Area),schema:metric,type:max),(enabled:!t,id:'2',p
arams:(field:Country.keyword,missingBucket:!f,missingBucketLabel:Missing,order:desc,orderBy:'1',otherBucket:!
f,otherBucketLabel:Other,size:10),schema:segment,type:terms)),params:(addLegend:!t,addTimeMarker:!f,addToo
ltip:!t,categoryAxes:!((id:CategoryAxis-1,labels:(show:!t,truncate:100),position:bottom,scale:(type:linear),
show:!t,style:(),title:(),type:category)),grid:(categoryLines:!f,style:(color:%23eee)),legendPosition:right,
seriesParams:!((data:(id:'1',label:'Max+Area'),drawLi
nesBetweenPoints:!t,mode:stacked,show:true,showCircles:!t,type:histogram,valueAxis:ValueAxis-1)),times:!(),
type:histogram,valueAxes:!((id:ValueAxis-1,labels:(filter:!f,rotate:0,show:!t,truncate:100),name:LeftAxis-1,
position:left,scale:(mode:normal,type:linear),show:!t,style:(),title:(text:'Max+Area'),type:value))),title:
'countrywise_maxarea+',type:histogram))" height="600" width="800"></iframe>
针对短网址的快照 IFrame 代码 −
<iframe src="http://localhost:5601/goto/f0a6c852daedcb6b4fa74cce8c2ff6c4?embed=true" height="600" width="800"><iframe>
如快照和快照网址所示。
短网址使用 −
http://localhost:5601/goto/f0a6c852daedcb6b4fa74cce8c2ff6c4
关闭短网址,链接看起来如下 −
http://localhost:5601/app/kibana#/visualize/edit/87afcb60-165f-11e9-aaf1-3524d1f04792?_g=()&_a=(filters:!(
),linked:!f,query:(language:lucene,query:''),uiState:(),vis:(aggs:!((enabled:!t,id:'1',params:(field:Area),
schema:metric,type:max),(enabled:!t,id:'2',params:(field:Country.keyword,missingBucket:!f,missingBucketLabel:
Missing,order:desc,orderBy:'1',otherBucket:!f,otherBucketLabel:Other,size:10),schema:segment,type:terms)),
params:(addLegend:!t,addTimeMarker:!f,addTooltip:!t,categoryAxes:!((id:CategoryAxis-1,labels:(show:!t,trun
cate:100),position:bottom,scale:(type:linear),show:!t,style:(),title:(),type:category)),grid:(categoryLine
s:!f,style:(color:%23eee)),legendPosition:right,seriesParams:!((data:(id:'1',label:'Max%20Area'),drawLines
BetweenPoints:!t,mode:stacked,show:true,showCircles:!t,type:histogram,valueAxis:ValueAxis-1)),times:!(),
type:histogram,valueAxes:!((id:ValueAxis-1,labels:(filter:!f,rotate:0,show:!t,truncate:100),name:LeftAxis-1,
position:left,scale:(mode:normal,type:linear),show:!t,style:(),title:(text:'Max%20Area'),type:value))),title:'countrywise_maxarea%20',type:histogram))
当您在浏览器中点击上述链接时,您会获得与上文所示相同的可视化。上述链接是本地托管的,因此在本地环境外使用时不起作用。
CSV Report
您可以在 Kibana 中获取 CSV 报告,其中有数据,该数据通常位于“发现”选项卡中。
转到“发现”选项卡,然后获取您需要数据的任何索引。在此,我们取了索引:countriesdata-26.12.2018。以下是从索引显示的数据:
您可以创建如下所示的表格数据:
我们从“可用字段”中选择了字段,而之前看到的则转换为表格格式。
您可以通过如下所示方式获取CSV报告中的上述数据:
共享按钮有CSV报告和永久链接选项。您可以单击“CSV报告”并下载。
请注意,要获取CSV报告,您需要保存数据。
确认“保存”,然后单击“共享”按钮和CSV报告。您会看到如下显示:
单击“生成CSV”以获取报告。完成后,它会指示您转到管理选项卡。
转到“管理”选项卡→报告
它显示报告名称、创建时间、状态和操作。您可以单击上面突出显示的下载按钮,获取CSV报告。
我们刚刚下载的CSV文件如下所示: