Kibana - 快速指南


Kibana - 概述

Kibana是一个基于浏览器的开源可视化工具,主要用于分析大量日志,其形式包括折线图、条形图、饼图、热图、区域图、坐标图、仪表、目标、时间线等。可视化使其易于预测或查看输入源的错误或其他重要事件的趋势变化。Kibana 与 Elasticsearch 和 Logstash 同步工作,它们一起形成所谓的ELK堆栈。

什么是 ELK 堆栈?

ELK代表 Elasticsearch、Logstash 和 Kibana。ELK是全球范围内用于日志分析的流行日志管理平台之一。在 ELK 堆栈中,Logstash 从不同的输入源提取日志数据或其他事件。它处理事件,然后将它们存储在 Elasticsearch 中。

Kibana是一个可视化工具,它访问 Elasticsearch 的日志,并能够以折线图、条形图、饼图等形式显示给用户。

ELK Stack 的基本流程如下图所示 -

ELK堆栈

Logstash 负责从归档日志的所有远程源收集数据并将其推送到 Elasticsearch。

Elasticsearch 充当收集数据的数据库,Kibana 使用 Elasticsearch 中的数据以条形图、饼图、热图的形式向用户表示数据,如下所示 -

弹性搜索

它实时向用户显示数据,例如每天或每小时。Kibana UI 用户友好,对于初学者来说很容易理解。

Kibana的特点

Kibana 为其用户提供以下功能 -

可视化

Kibana 有很多方法可以轻松地可视化数据。常用的有垂直条形图、水平条形图、饼图、折线图、热图等。

仪表板

当我们准备好可视化后,所有这些都可以放置在一个板上 - 仪表板。一起观察不同的部分可以让您对到底发生了什么有一个清晰的总体了解。

开发工具

您可以使用开发工具处理索引。初学者可以从开发工具添加虚拟索引,还可以添加、更新、删除数据并使用索引创建可视化。

报告

所有可视化和仪表板形式的数据都可以转换为报告(CSV 格式),嵌入代码中或以 URL 的形式与他人共享。

过滤器和搜索查询

您可以利用过滤器和搜索查询从仪表板或可视化工具获取特定输入所需的详细信息。

插件

您可以添加第三方插件来在 Kibana 中添加一些新的可视化或其他 UI 添加。

坐标和区域地图

Kibana 中的坐标和区域地图有助于在地理地图上显示可视化效果,从而提供真实的数据视图。

泰美狮

Timelion,也称为时间线,是另一种可视化工具,主要用于基于时间的数据分析。要使用时间轴,我们需要使用简单的表达式语言,它可以帮助我们连接到索引并对数据进行计算以获得我们需要的结果。它有助于比较周、月等数据与上一个周期的数据。

帆布

Canvas 是 Kibana 的另一个强大功能。使用画布可视化,您可以用不同的颜色组合、形状、文本、基本上称为工作板的多个页面来表示数据。

Kibana 的优点

Kibana 为其用户提供以下优势 -

  • 包含基于开源浏览器的可视化工具,主要用于分析折线图、条形图、饼图、热图等形式的大量日志。

  • 简单易懂,初学者容易理解。

  • 轻松将可视化和仪表板转换为报告。

  • 画布可视化有助于以简单的方式分析复杂的数据。

  • Kibana 中的 Timelion 可视化有助于向后比较数据以更好地了解性能。

Kibana 的缺点

  • 如果版本不匹配,向 Kibana 添加插件可能会非常乏味。

  • 当您想从旧版本升级到新版本时,您往往会遇到问题。

Kibana - 环境设置

要开始使用 Kibana,我们需要安装 Logstash、Elasticsearch 和 Kibana。在本章中,我们将尝试了解 ELK 堆栈的安装。

我们将在这里讨论以下安装 -

  • Elasticsearch安装
  • Logstash安装
  • Kibana安装

Elasticsearch安装

我们的库中有有关 Elasticsearch 的详细文档。您可以在此处检查elasticsearch 安装。您必须按照教程中提到的步骤来安装 Elasticsearch。

安装完成后,启动elasticsearch服务器,如下所示 -

步骤1

对于 Windows

> cd kibanaproject/elasticsearch-6.5.4/elasticsearch-6.5.4/bin
> elasticsearch

请注意,对于 Windows 用户,JAVA_HOME 变量必须设置为 java jdk 路径。

对于Linux

$ cd kibanaproject/elasticsearch-6.5.4/elasticsearch-6.5.4/bin
$ elasticsearch
Elasticsearch安装

Elasticsearch 的默认端口是 9200。完成后,您可以在本地主机http://localhost:9200/上的端口 9200 上检查 Elasticsearch,如下所示 -

Elasticsearch 默认端口

Elasticsearch 本地主机

Logstash安装

对于 Logstash 安装,请遵循我们库中已存在的这个elasticsearch 安装。

Kibana安装

访问 Kibana 官方网站 - https://www.elastic.co/products/kibana

Kibana安装

单击右上角的下载链接,它将显示如下屏幕 -

Kibana 下载

单击 Kibana 的下载按钮。请注意,要使用 Kibana,我们需要 64 位机器,它无法在 32 位机器上运行。

Kibana 按钮

在本教程中,我们将使用 Kibana 版本 6。下载选项适用于 Windows、Mac 和 Linux。您可以根据自己的选择进行下载。

创建一个文件夹并解压 kibana 下载的 tar/zip 文件。我们将使用在 elasticsearch 中上传的示例数据。因此,现在让我们看看如何启动 elasticsearch 和 kibana。为此,请转到解压 Kibana 的文件夹。

对于 Windows

> cd kibanaproject/kibana-6.5.4/kibana-6.5.4/bin
> kibana

对于Linux

$ cd kibanaproject/kibana-6.5.4/kibana-6.5.4/bin
$ kibana

Kibana 启动后,用户可以看到以下屏幕 -

Kibana 启动

在控制台中看到就绪信号后,您可以使用http://localhost:5601/在浏览器中打开Kibana。kibana 可用的默认端口是 5601。

Kibana 的用户界面如下所示 -

Kibana接口

在下一章中,我们将学习如何使用 Kibana 的 UI。要了解 Kibana UI 上的 Kibana 版本,请转到左侧的“管理”选项卡,它将显示我们当前使用的 Kibana 版本。

Kibana用户界面

Kibana - Elk Stack 简介

Kibana 是一个开源可视化工具,主要用于分析折线图、条形图、饼图、热图等形式的大量日志。Kibana 与 Elasticsearch 和 Logstash 同步工作,共同构成所谓的 ELK堆栈

ELK代表 Elasticsearch、Logstash 和 Kibana。ELK是全球范围内用于日志分析的流行日志管理平台之一。

在 ELK 堆栈中 -

  • Logstash从不同的输入源提取日志数据或其他事件。它处理事件,然后将其存储在 Elasticsearch 中。

  • Kibana是一个可视化工具,它访问 Elasticsearch 的日志,并能够以折线图、条形图、饼图等形式显示给用户。

在本教程中,我们将与 Kibana 和 Elasticsearch 密切合作,并以不同的形式可视化数据。

在本章中,让我们了解如何一起使用 ELK 堆栈。此外,您还将看到如何 -

  • 将 CSV 数据从 Logstash 加载到 Elasticsearch。
  • 在 Kibana 中使用 Elasticsearch 的索引。

将 CSV 数据从 Logstash 加载到 Elasticsearch

我们将使用 CSV 数据通过 Logstash 将数据上传到 Elasticsearch。为了进行数据分析,我们可以从kaggle.com网站获取数据。Kaggle.com网站上传了所有类型的数据,用户可以使用它来进行数据分析。

我们从这里获取了country.csv数据: https: //www.kaggle.com/fernandol/countries-of-the-world。您可以下载 csv 文件并使用它。

我们要使用的 csv 文件包含以下详细信息。

文件名 -countriesdata.csv

列 - “国家”、“地区”、“人口”、“面积”

您还可以创建一个虚拟 csv 文件并使用它。我们将使用logstash 将这些数据从countriesdata.csv转储到elasticsearch。

在终端中启动 elasticsearch 和 Kibana 并保持其运行。我们必须为logstash创建配置文件,其中包含有关CSV文件的列的详细信息以及其他详细信息,如下面给出的logstash配置文件所示 -

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 个组件 -

输入

我们需要指定输入文件的路径,在我们的例子中是 csv 文件。存储 csv 文件的路径被赋予路径字段。

筛选

将使用带有分隔符的 csv 组件(在我们的示例中为逗号),以及可用于 csv 文件的列。由于logstash将所有数据视为字符串,因此如果我们希望将任何列用作整数,则必须使用上面所示的mutate指定浮点数。

输出

对于输出,我们需要指定需要放置数据的位置。在我们的例子中,我们使用的是elasticsearch。需要提供给elasticsearch的数据是它运行的主机,我们将其称为localhost。下一个字段是索引,我们将其命名为“国家/地区-currentdate”。一旦 Elasticsearch 中的数据更新,我们就必须在 Kibana 中使用相同的索引。

将上述配置文件保存为logstash_countries.config。请注意,我们需要在下一步中将此配置的路径提供给logstash命令。

要将数据从 csv 文件加载到elasticsearch,我们需要启动elasticsearch 服务器 -

启动 Elasticsearch 服务器

现在,在浏览器中运行http://localhost:9200来确认elasticsearch是否运行成功。

Elasticsearch 运行

我们正在运行elasticsearch。现在进入logstash安装路径并运行以下命令将数据上传到elasticsearch。

> logstash -f logstash_countries.conf
Elasticsearch 命令提示符

Elasticsearch上传数据

上面的屏幕显示了从 CSV 文件加载到 Elasticsearch 的数据。要知道我们是否在 Elasticsearch 中创建了索引,我们可以按如下方式检查 -

我们可以看到创建的countriesdata-28.12.2018索引如上所示。

国家数据索引

该指数的详细信息 -countries-28.12.2018 如下 -

国家数据详细索引

请注意,当数据从logstash上传到elasticsearch时,会创建带有属性的映射详细信息。

在 Kibana 中使用来自 Elasticsearch 的数据

目前,我们在 localhost 上运行 Kibana,端口 5601 - http://localhost:5601。Kibana 的 UI 如下所示 -

Kibana跑步

请注意,我们已经将 Kibana 连接到 Elasticsearch,并且我们应该能够在 Kibana 中看到 索引:countries-28.12.2018

在 Kibana UI 中,单击左侧的“管理菜单”选项 -

管理菜单

现在,单击索引管理 -

指数管理

Elasticsearch 中存在的索引显示在索引管理中。我们将在 Kibana 中使用的索引是countriesdata-28.12.2018。

因此,由于我们在 Kibana 中已经有了 Elasticsearch 索引,接下来将了解如何使用 Kibana 中的索引以饼图、条形图、折线图等形式可视化数据。

Kibana - 加载示例数据

我们已经了解了如何将数据从logstash上传到elasticsearch。我们将在这里使用logstash和elasticsearch上传数据。但是关于我们需要使用的具有日期、经度和纬度字段的数据,我们将在接下来的章节中学习。如果我们没有 CSV 文件,我们还将了解如何直接在 Kibana 中上传数据。

在本章中,我们将讨论以下主题 -

  • 使用Logstash在Elasticsearch中上传具有日期、经度和纬度字段的数据
  • 使用开发工具上传批量数据

使用 Logstash 上传 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一起使用的conf文件 -

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 文件有日期字段,您需要执行以下操作来获取日期格式。

对于日期字段 -

date {
   match => ["Visiting_Date","dd-MM-YYYY HH:mm"]
   target => "Visiting_Date"
}

对于地理位置,elasticsearch 的理解与 -

"location": {
   "lat":41.565505000000044,
   "lon": 2.2349995750000695
}

所以我们需要确保我们的经度和纬度采用elasticsearch 需要的格式。因此,首先我们需要将经度和纬度转换为 float,然后将其重命名,以便它可以作为带有latlon的位置json 对象的一部分。相同的代码如下所示 -

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 中的 Logstashconf 文件中提到的索引,如下所示 -
日志存储会议

我们现在可以在上面上传的索引上创建索引模式,并进一步使用它来创建可视化。

使用开发工具上传批量数据

我们将使用 Kibana UI 中的开发工具。开发工具有助于在 Elasticsearch 中上传数据,而无需使用 Logstash。我们可以使用 Dev Tools 在 Kibana 中发布、放置、删除、搜索我们想要的数据。

在本节中,我们将尝试在 Kibana 本身中加载示例数据。我们可以使用它来练习示例数据并尝试 Kibana 功能,以更好地理解 Kibana。

让我们从以下 url 中获取 json 数据并将其上传到 Kibana 中。同样,您可以尝试在 Kibana 中加载任何示例 json 数据。

在开始上传示例数据之前,我们需要有带有索引的 json 数据,以便在 elasticsearch 中使用。当我们使用logstash上传它时,logstash会注意添加索引,用户不必担心elasticsearch所需的索引。

普通Json数据

[
   {"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"}

请注意,jsonfile 中有一个附加数据 - {"index":{"_index":"nameofindex","_id":key}}

要转换与elasticsearch兼容的任何示例json文件,这里我们在php中有一个小代码,它将输出elasticsearch想要的格式的json文件 -

PHP代码

<?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 中上传的格式。

要加载示例数据,请打开开发工具选项卡,如下所示 -

开发工具

我们现在将使用如上所示的控制台。我们将通过 php 代码运行后获取 json 数据。

开发工具中用于上传 json 数据的命令是 -

POST _bulk

请注意,我们创建的索引的名称是todo

上传json数据

开发工具索引

单击绿色按钮后,数据就会上传,您可以检查 Elasticsearch 中是否创建了索引,如下所示 -

已创建索引

您可以在开发工具本身中检查相同内容,如下所示 -

命令 -

GET /_cat/indices
开发工具命令

如果你想在你的index:todo中搜索一些东西,你可以这样做,如下所示 -

开发工具中的命令

GET /todo/_search
开发工具搜索

上述搜索的输出如下所示 -

开发工具输出

它给出了 todoindex 中存在的所有记录。我们得到的总记录是 200 条。

在 todo 索引中搜索记录

我们可以使用以下命令来做到这一点 -

GET /todo/_search
{
   "query":{
      "match":{
         "title":"delectusautautem"
      }
   }
}
记录待办事项索引

获取记录

我们能够获取与我们给定的标题匹配的记录。

Kibana - 管理

Kibana 中的管理部分用于管理索引模式。在本章中,我们将讨论以下内容 -

  • 创建不带时间过滤器字段的索引模式
  • 使用时间过滤字段创建索引模式

创建不带时间过滤器字段的索引模式

为此,请转到 Kibana UI 并单击管理 -

Kibana UI 管理

要使用 Kibana,我们首先必须创建从 elasticsearch 填充的索引。您可以从 Elasticsearch → 索引管理获取所有可用索引,如下所示 -

Elasticsearch索引管理

目前elasticsearch有以上索引。文档计数告诉我们每个索引中可用的记录数。如果有任何索引被更新,文档计数将不断变化。主存储告诉上传的每个索引的大小。

要在 Kibana 中创建新索引,我们需要单击“索引模式”,如下所示 -

指数模式

单击“索引模式”后,我们会看到以下屏幕 -

指数形态屏幕

请注意,“创建索引模式”按钮用于创建新索引。回想一下,我们已经在本教程开始时创建了 statesdata-28.12.2018。

使用时间过滤字段创建索引模式

单击“创建索引模式”以创建新索引。

时间过滤字段

显示来自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 添加了一些附加字段。

医疗就诊

医疗访问 Logstash

医疗就诊 Elasticsearch

医疗就诊 Elasticsearch

Kibana - 发现

本章讨论 Kibana UI 中的“发现”选项卡。我们将详细了解以下概念 -

  • 没有日期字段的索引
  • 带日期字段的索引

没有日期字段的索引

选择左侧菜单上的“发现”,如下所示 -

探索菜单

右侧显示了我们在上一章中创建的statesdata-28.12.2018索引中可用数据的详细信息。

在左上角,它显示可用记录的总数 -

左上角

我们可以在此选项卡中获取索引(countriesdata-28.12.2018)内数据的详细信息。在上面显示的屏幕的左上角,我们可以看到“新建”、“保存”、“打开”、“共享”、“检查”和“自动刷新”等按钮。

如果您单击自动刷新,它将显示如下所示的屏幕 -

自动刷新

您可以通过单击上方的秒、分钟或小时来设置自动刷新间隔。Kibana 将在您设置的每个间隔计时器后自动刷新屏幕并获取新数据。

来自index:countriesdata-28.12.2018的数据显示如下 -

所有字段以及数据均按行显示。单击箭头展开该行,它将以表格格式或 JSON 格式提供详细信息

表格格式

详情表格式

JSON 格式

JSON 格式

左侧有一个按钮,称为“查看单个文档”。

单一文档

如果单击它,它将显示页面内的行或行中存在的数据,如下所示 -

数据显示行

单文档行

尽管我们在这里获得了所有数据详细信息,但很难逐一浏览。

现在让我们尝试以表格格式获取数据。展开其中一行并单击每个字段中可用的切换列选项的一种方法如下所示 -

单击每个可用的表格选项中的切换列,您会注意到数据以表格格式显示 -

切换列

在这里,我们选择了国家、地区、地区和人口字段。折叠展开的行,您现在应该会看到表格格式的所有数据。

选定的字段

我们选择的字段显示在屏幕左侧,如下所示 -

显示选定的字段

请注意,有 2 个选项 - Selected fieldsavailable fields。我们选择以表格格式显示的字段是所选字段的一部分。如果您想删除任何字段,可以通过单击“删除”按钮来执行此操作,该按钮将显示在所选字段选项的字段名称中。

删除字段

删除后,该字段将在可用字段中可用,您可以通过单击添加按钮将其添加回来,该按钮将显示在您想要的字段中。您还可以使用此方法通过从可用字段中选择必填字段来获取表格格式的数据。

Discover 中有一个可用的搜索选项,我们可以使用它来搜索索引内的数据。让我们在这里尝试与搜索选项相关的示例 -

假设您想搜索国家印度,您可以执行以下操作 -

搜索字段

您可以输入搜索详细信息并单击“更新”按钮。如果您想搜索以 Aus 开头的国家,您可以按以下步骤操作 -

更新字段

单击更新查看结果

更新结果

在这里,我们有两个以 Aus* 开头的国家/地区。搜索字段有一个选项按钮,如上所示。当用户单击它时,它会显示一个切换按钮,该按钮打开时有助于编写搜索查询。

搜索查询

打开查询功能并在搜索中输入字段名称,它将显示该字段可用的选项。

例如,国家/地区字段是一个字符串,它显示字符串字段的以下选项 -

字符串字段

同样,区域是一个数字字段,它显示数字字段的以下选项 -

数字字段

您可以尝试不同的组合并根据您在“发现”字段中的选择过滤数据。可以使用“保存”按钮保存“发现”选项卡中的数据,以便您可以将其用于将来的目的。

要保存发现中的数据,请单击右上角的保存按钮,如下所示 -

保存搜索

为您的搜索指定标题,然后单击确认保存以保存它。保存后,下次访问“发现”选项卡时,可以单击右上角的“打开”按钮来获取保存的标题,如下所示 -

打开搜索

您还可以使用右上角的“共享”按钮与其他人共享数据。如果您单击它,您可以找到共享选项,如下所示 -

分享搜索

您可以使用 CSV 报告或以固定链接的形式共享它。

CSV 报告上单击时可用的选项是 -

CSV 报告

单击“生成 CSV”以获取要与其他人共享的报告。

固定链接的 onclick 可用选项如下 -

Onclick 固定链接

快照选项将提供一个 Kibana 链接,该链接将显示当前搜索中可用的数据。

“保存的对象”选项将提供一个 Kibana 链接,该链接将显示您搜索中的最新可用数据。

快照 - http://localhost:5601/goto/309a983483fccd423950cfb708fabfa5保存的对象:http://localhost:5601/app/kibana#/discover/40bd89d0-10b1-11e9-9876-4f3d759b471e?_g=()

您可以使用“发现”选项卡和可用的搜索选项,并且可以保存获得的结果并与其他人共享。

带日期字段的索引

转到“发现”选项卡并选择索引:medicalvisits-26.01.2019

发现选项卡选择索引

在我们选择的索引上的最后 15 分钟内,它显示了消息 - “没有与您的搜索条件匹配的结果”。该指数包含 2015 年、2016 年、2017 年和 2018 年的数据。

更改时间范围,如下所示 -

变更时间范围

单击“绝对”选项卡。

绝对制表符

选择日期 From - 1st Jan 2017 和 To - 31st Dec2017,因为我们将分析 2017 年的数据。

选择日期

单击“执行”按钮添加时间范围。它将向您显示数据和条形图,如下所示 -

添加时间范围

这是 2017 年的月度数据 -

每月数据

由于我们还存储了时间和日期,因此我们也可以按小时和分钟过滤数据。

过滤数据

上图显示了2017年的每小时数据。

这里是索引中显示的字段 - Medicalvisits-26.01.2019

每小时数据

我们在左侧有可用字段,如下所示 -

每小时数据可用字段

您可以从可用字段中选择字段并将数据转换为表格格式,如下所示。在这里我们选择了以下字段 -

表格格式

上述字段的表格数据如下所示 -

表格数据

Kibana - 聚合和指标

在学习 Kibana 的过程中经常遇到的两个术语是 Bucket 和 Metrics Aggregation。本章讨论它们在 Kibana 中扮演的角色以及有关它们的更多详细信息。

什么是 Kibana 聚合?

聚合是指从特定搜索查询或过滤器获得的文档或一组文档的集合。聚合构成了在 Kibana 中构建所需可视化的主要概念。

每当执行任何可视化时,您都需要决定标准,这意味着您希望以哪种方式对数据进行分组以对其执行指标。

在本节中,我们将讨论两种类型的聚合 -

  • 桶聚合
  • 指标聚合

桶聚合

一个Bucket主要由一个Key和一个Document组成。当执行聚合时,文档被放置在各自的存储桶中。所以最后你应该有一个存储桶列表,每个存储桶都有一个文档列表。在 Kibana 中创建可视化时您将看到的存储桶聚合列表如下所示 -

桶聚合

桶聚合有以下列表 -

  • 日期直方图
  • 日期范围
  • 过滤器
  • 直方图
  • IPv4 范围
  • 范围
  • 重要条款
  • 条款

创建时,您需要选择其中之一进行桶聚合,即对桶内的文档进行分组。

作为示例,为了进行分析,请考虑我们在本教程开始时上传的国家/地区数据。国家索引中可用的字段为国家名称、面积、人口、地区。在国家数据中,我们有国家名称及其人口、地区和面积。

让我们假设我们想要区域明智的数据。然后,每个区域中可用的国家/地区将成为我们的搜索查询,因此在这种情况下,该区域将构成我们的存储桶。下面的框图显示 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。

因此,通过桶聚合,我们可以将文档聚合到桶中,并得到这些桶中的文档列表,如上所示。

到目前为止,我们拥有的桶聚合列表是 -

  • 日期直方图
  • 日期范围
  • 过滤器
  • 直方图
  • IPv4 范围
  • 范围
  • 重要条款
  • 条款

现在让我们详细讨论如何一一详细地形成这些桶。

日期直方图

日期直方图聚合用于日期字段。因此,您用于可视化的索引,如果该索引中有日期字段,则只能使用此聚合类型。这是一种多存储桶聚合,这意味着您可以将某些文档作为多个存储桶的一部分。此聚合有一个间隔,详细信息如下所示 -

日期直方图

当您选择存储桶聚合作为日期直方图时,它将显示“字段”选项,该选项仅提供与日期相关的字段。选择字段后,您需要选择具有以下详细信息的间隔 -

选择区间直方图

因此,来自所选索引并基于所选字段和间隔的文档将对存储桶中的文档进行分类。例如,如果您选择的时间间隔为每月,则基于日期的文档将被转换为存储桶,并且基于月份(即一月至十二月)的文档将被放入存储桶中。这里一月、二月、..十二月将是桶。

日期范围

您需要一个日期字段才能使用此聚合类型。这里我们将有一个日期范围,即要给出的起始日期和截止日期。这些存储桶将根据给定的表格和日期提供其文件。

日期范围

过滤器

通过过滤器类型聚合,将根据过滤器形成存储桶。在这里,您将获得一个根据一个文档可以存在于一个或多个存储桶中的过滤条件形成的多存储桶。

使用过滤器,用户可以在过滤器选项中编写查询,如下所示 -

过滤器

您可以使用“添加过滤器”按钮添加您选择的多个过滤器。

直方图

这种类型的聚合应用于数字字段,它将根据应用的间隔将文档分组到存储桶中。例如0-50,50-100,100-150等。

直方图

IPv4 范围

这种类型的聚合主要用于 IP 地址。

IPv4 范围

我们拥有的索引 contriesdata-28.12.2018 没有 IP 类型的字段,因此它显示一条消息,如上所示。如果您碰巧有 IP 字段,则可以在其中指定 From 和 To 值,如上所示。

范围

这种类型的聚合需要字段为数字类型。您需要指定范围,文档将列在属于该范围的存储桶中。

如果需要,您可以通过单击“添加范围”按钮添加更多范围。

重要条款

这种类型的聚合主要用于字符串字段。

重要条款

条款

这种类型的聚合用于所有可用字段,即数字、字符串、日期、布尔值、IP 地址、时间戳等。请注意,这是我们将在本节中处理的所有可视化中使用的聚合。教程。

条款

我们有一个选项顺序,我们将根据该选项顺序根据我们选择的指标对数据进行分组。大小是指您想要在可视化中显示的存储桶的数量。

接下来,让我们谈谈指标聚合。

指标聚合

指标聚合主要是指对存储桶中存在的文档进行数学计算。例如,如果您选择数字字段,则可以对其执行的度量计算为 COUNT、SUM、MIN、MAX、AVERAGE 等。

这里给出了我们将讨论的度量聚合列表 -

指标聚合

在本节中,让我们讨论我们将经常使用的重要内容 -

  • 平均的
  • 数数
  • 最大限度
  • 最小

该指标将应用于我们上面已经讨论过的单个存储桶聚合。

接下来,让我们在这里讨论指标聚合列表 -

平均的

这将给出存储桶中存在的文档值的平均值。例如 -

平均的

R1到R6是桶。在 R1 中,我们有 c1、c8 和 c15。假设c1的值为300,c8为500,c15为700。现在获取R1桶的平均值

R1 = c1 的值 + c8 的值 + c15 的值 / 3 = 300 + 500 + 700 / 3 = 500。

存储桶 R1 的平均值为 500。这里文档的值可以是任何东西,如果您考虑国家/地区数据,它可能是该地区国家/地区的面积。

数数

这将给出存储桶中存在的文档的计数。假设您想要该区域中存在的国家/地区的计数,它将是存储桶中存在的文档总数。例如,R1 将为 3、R2 = 6、R3 = 5、R4 = 2、R5 = 5 和 R6 = 4。

最大限度

这将给出存储桶中存在的文档的最大值。考虑上面的例子,如果我们在区域桶中有区域明智的国家数据。每个地区的最大值将是面积最大的国家/地区。因此每个地区都有一个国家,即 R1 到 R6。

这将给出存储桶中存在的文档的最小值。考虑上面的示例,如果我们在区域存储桶中有区域明智的国家/地区数据。每个地区的最小值将是面积最小的国家。因此每个地区都有一个国家,即 R1 到 R6。

这将给出存储桶中存在的文档值的总和。例如,如果您考虑上面的示例,如果我们想要该地区的总面积或国家/地区,那么它将是该地区存在的文档的总和。

例如,要知道 R1 区域的国家总数为 3、R2 = 6、R3 = 5、R4 = 2、R5 = 5 和 R6 = 4。

如果我们有包含该地区面积的文档,则 R1 到 R6 将为该地区汇总国家/地区的面积。

Kibana - 创建可视化

我们可以以条形图、折线图、饼图等形式可视化我们拥有的数据。在本章中,我们将了解如何创建可视化。

创建可视化

转到 Kibana 可视化,如下所示 -

可视化

我们没有创建任何可视化,因此它显示为空白,并且有一个按钮可以创建可视化。

单击“创建可视化”按钮,如上面的屏幕所示,它将带您进入如下所示的屏幕 -

创建可视化

您可以在此处选择可视化数据所需的选项。我们将在接下来的章节中详细了解其中的每一个。现在将选择饼图开始。

饼形图

选择可视化类型后,现在您需要选择要处理的索引,它将带您进入如下所示的屏幕 -

可视化类型

现在我们有一个默认的饼图。我们将使用国家数据-28.12.2018 以饼图格式获取国家数据中可用的区域计数。

桶和指标聚合

左侧有指标,我们将选择它作为计数。在Buckets中,有2个选项“分割切片”和“分割图表”。我们将使用“分割切片”选项。

桶指标聚合

现在,选择“分割切片”,它将显示以下选项 -

分割切片

现在,选择聚合作为术语,它将显示更多要输入的选项,如下所示 -

聚合为术语

字段下拉列表将包含所选索引:countriesdata 中的所有字段。我们选择了“区域”字段和“排序依据”。请注意,我们为 Order By 选择了指标 Count。我们将按降序排列,大小为 10。这意味着,我们将从国家/地区指数中获取前 10 个地区的数量。

现在,单击下面突出显示的分析按钮,您应该会看到右侧更新的饼图。

分析按钮

饼图显示

饼图显示

所有区域都以颜色列在右上角,并且饼图中显示相同的颜色。如果将鼠标悬停在饼图上,它将给出区域的计数以及区域的名称,如下所示 -

因此,根据我们上传的国家数据,撒哈拉以南非洲地区占据了 22.77% 的地区。

国家数据

国家数据

亚洲地区占12.5%,数量为28个。

现在我们可以通过单击右上角的保存按钮来保存可视化,如下所示 -

新的可视化

保存可视化

现在,保存可视化以便以后使用。

我们还可以通过使用搜索选项来获取我们想要的数据,如下所示 -

保存可视化

我们过滤了以 Aus* 开头的国家/地区的数据。我们将在接下来的章节中了解有关饼图和其他可视化的更多信息。

Kibana - 使用图表

让我们探索并了解可视化中最常用的图表。

  • 水平条形图
  • 垂直条形图
  • 饼形图

以下是创建上述可视化效果所需遵循的步骤。让我们从单杠开始。

水平条形图

打开 Kibana 并单击左侧的 Visualize 选项卡,如下所示 -

聚合为术语

单击 + 按钮创建新的可视化 -

Kibana 可视化

单击上面列出的水平栏。您必须选择要可视化的索引。

单杠列表

选择countrydata-28.12.2018索引,如上所示。选择索引后,它会显示如下所示的屏幕 -

选择索引

它显示默认计数。现在,让我们绘制一个水平图,我们可以在其中看到前 10 个国家/地区人口的数据。

为此,我们需要在 Y 轴和 X 轴上选择我们想要的内容。因此,选择存储桶和指标聚合 -

水平图

现在,如果您单击 Y 轴,它将显示如下所示的屏幕 -

单击 Y 轴

现在,从此处显示的选项中选择您想要的聚合 -

聚合选项

请注意,这里我们将选择最大聚合,因为我们希望根据可用的最大人口显示数据。

接下来我们必须选择需要最大值的字段。在索引countrydata-28.12.2018中,我们只有2个数字字段——面积和人口。

由于我们想要最大人口,因此我们选择人口字段,如下所示 -

最大人口数

至此,Y 轴就完成了。我们得到的 Y 轴输出如下所示 -

Y轴输出

现在让我们选择 X 轴,如下所示 -

选择 X 轴

如果选择 X 轴,您将得到以下输出 -

X轴输出

选择聚合作为术语。

选择聚合术语

从下拉列表中选择字段。我们想要国家/地区的人口,因此选择国家/地区字段。订购方式我们有以下选项 -

下拉字段

我们将按照“最大人口”选择顺序,因为希望首先显示人口最多的国家,依此类推。添加我们想要的数据后,单击指标数据顶部的应用更改按钮,如下所示 -

人口最多

单击“应用更改”后,我们会看到水平图,其中我们可以看到中国是人口最多的国家,其次是印度、美国等。

人口最多

同样,您可以通过选择所需的字段来绘制不同的图表。接下来,我们将此可视化保存为 max_population,以便稍后用于仪表板创建。

在下一节中,我们将创建垂直条形图。

垂直条形图

单击“可视化”选项卡,然后使用竖线和索引创建一个新的可视化效果,即“countriesdata-28.12.2018”

在此垂直条形可视化中,我们将创建具有国家/地区明智面积的条形图,即国家/地区将以最高面积显示。

因此,让我们选择 Y 和 X 轴,如下所示 -

Y轴

垂直条形图

X轴

垂直条形图 X 轴

当我们在此处应用更改时,我们可以看到如下所示的输出 -

垂直条形图输出

从图中我们可以看到,俄罗斯的面积最高,其次是加拿大和美国。请注意,此数据是从索引国家数据及其虚拟数据中选取的,因此实时数据中的数字可能不正确。

让我们将此可视化保存为countrywise_maxarea,以便稍后与仪表板一起使用。

接下来,让我们处理饼图。

饼形图

因此,首先创建一个可视化并选择索引为countriesdata的饼图。我们将以饼图格式显示国家/地区数据中可用区域的数量。

左侧有可以给出计数的指标。在 Buckets 中,有 2 个选项:分割切片和分割图表。现在,我们将使用“分割切片”选项。

饼图可视化

现在,如果您选择“分割切片”,它将显示以下选项 -

饼图桶

选择聚合作为术语,它将显示更多要输入的选项,如下所示 -

聚合术语

字段下拉列表将包含所选索引中的所有字段。我们选择了“区域”字段和“订单依据”,并将其选择为“计数”。我们将按降序排列,大小为 10。因此,我们将从国家索引中获取 10 个地区的数量。

现在,单击下面突出显示的播放按钮,您应该会看到右侧更新的饼图。

饼图已更新

饼图显示

显示饼图

所有区域都以颜色列在右上角,并且饼图中显示相同的颜色。如果将鼠标悬停在饼图上,它将给出区域的计数以及区域的名称,如下所示 -

饼图鼠标悬停

饼图区域

因此,它告诉我们,在我们上传的国家数据中,撒哈拉以南非洲地区占据了 22.77% 的地区。

从饼图中观察,亚洲地区占 12.5%,数量为 28。

现在我们可以通过单击右上角的保存按钮来保存可视化,如下所示 -

亚洲地区

现在,保存可视化,以便稍后在仪表板中使用。

可视化仪表板

Kibana - 使用图表

在本章中,我们将讨论可视化中使用的两种类型的图表 -

  • 线形图
  • 区域

线形图

首先,让我们创建一个可视化,选择折线图来显示数据并使用contriesdata作为索引。我们需要创建 Y 轴和 X 轴,其详细信息如下所示 -

Y轴用

折线图 Y 轴

请注意,我们已将 Max 作为聚合。所以在这里我们将以折线图的形式显示数据。现在,我们将绘制图表来显示最大人口国家/地区。我们选择的领域是人口,因为我们需要最大程度的国家人口。

X轴用

折线图 X 轴

在 x 轴上,我们将Terms作为聚合,Country.keyword作为字段,以及metric:Max Population作为Order By,订单大小为5。因此它将绘制人口最多的5个国家。应用更改后,您可以看到折线图,如下所示 -

折线图变化

所以我们人口最多的是中国,其次是印度、美国、印度尼西亚和巴西,是人口最多的 5 个国家。

现在,让我们保存这个折线图,以便稍后在仪表板中使用。

保存线图

单击“确认保存”即可保存可视化效果。

面积图

转到可视化并选择索引为国家数据的区域。我们需要选择 Y 轴和 X 轴。我们将绘制国家/地区最大面积的面积图。

所以这里的 X 轴和 Y 轴将如下所示 -

面积图

面积图轴

单击“应用更改”按钮后,我们可以看到的输出如下所示 -

面积图变化

从图中我们可以看出,俄罗斯的面积最高,其次是加拿大、美国、中国和巴西。保存可视化以供以后使用。

Kibana - 使用热图

在本章中,我们将了解如何使用热图。热图将以不同颜色显示数据指标中所选范围的数据表示形式。

热图入门

首先,我们需要通过单击左侧的可视化选项卡来创建可视化,如下所示 -

热图可视化

选择可视化类型作为热图,如上所示。它会要求您选择索引,如下所示 -

热图索引

选择索引countrydata-28.12.2018,如上所示。一旦选择了索引,我们就可以选择数据,如下所示 -

已选择热图索引

选择指标,如下所示 -

热图指标

从下拉列表中选择最大聚合,如下所示&