Kibana 快速指南



Kibana - 概述

Kibana是一个开源的基于浏览器的可视化工具,主要用于分析海量日志,以折线图、条形图、饼图、热力图、区域地图、坐标地图、仪表盘、目标、Timelion等形式呈现。可视化功能使预测或查看错误趋势或输入源其他重要事件的变化变得容易。Kibana 与 Elasticsearch 和 Logstash 协同工作,共同构成所谓的ELK堆栈。

什么是 ELK 堆栈?

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

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

ELK 堆栈的基本流程如下图所示:

ELK Stack

Logstash 负责收集所有远程日志文件所在的数据,并将这些数据推送到 Elasticsearch。

Elasticsearch 充当数据库,用于收集数据,而 Kibana 使用 Elasticsearch 中的数据以条形图、饼图、热力图等形式向用户呈现数据,如下所示:

Elastic search

它实时地向用户显示数据,例如按天或按小时显示。Kibana 的用户界面友好,即使是初学者也很容易理解。

Kibana 的功能

Kibana 为用户提供以下功能:

可视化

Kibana 提供了许多简便易用的数据可视化方式。一些常用的方式包括垂直条形图、水平条形图、饼图、折线图、热力图等。

仪表盘

准备好可视化之后,所有可视化都可以放置在一个面板上——仪表盘。同时观察不同的部分,可以更清晰地了解正在发生的事情。

开发工具

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

报表

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

过滤器和搜索查询

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

插件

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

坐标地图和区域地图

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

Timelion

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 Installation

Elasticsearch 的默认端口是 9200。完成后,您可以在 localhost 的 9200 端口上检查 elasticsearch,https://:9200/ 如下所示:

Elasticsearch Default Port

Elasticsearch localhost

Logstash 安装

有关 Logstash 安装,请参阅我们库中已有的 elasticsearch 安装

Kibana 安装

访问 Kibana 官方网站:https://elastic.ac.cn/products/kibana

Kibana Installation

点击右上角的下载链接,将显示如下屏幕:

Kibana downloads

点击 Kibana 的下载按钮。请注意,要使用 Kibana,我们需要 64 位机器,它不适用于 32 位机器。

Kibana button

在本教程中,我们将使用 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 starts

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

Kibana 的用户界面如下所示:

Kibana interface

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

Kibana UI

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 网站上传了各种类型的数据,用户可以使用它来进行数据分析。

我们从这里获取了 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 个组件:

输入

我们需要指定输入文件的路径,在本例中为 csv 文件。将 csv 文件存储的路径提供给 path 字段。

过滤器

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

输出

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

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

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

Start Elasticsearch Server

现在,在浏览器中运行https://:9200以确认 elasticsearch 是否已成功运行。

Elasticsearch Running

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

> logstash -f logstash_countries.conf
Elasticsearch Command Prompt

Elasticsearch Upload Data

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

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

Countriesdata Index

索引 countries-28.12.2018 的详细信息如下:

Countriesdata Detail Index

请注意,当从 Logstash 上传数据到 Elasticsearch 时,会创建包含属性的映射详细信息。

在 Kibana 中使用 Elasticsearch 数据

目前,我们已经在本地主机 5601 端口运行 Kibana − https://:5601。Kibana 的 UI 如图所示 −

Kibana Running

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

在 Kibana UI 中,单击左侧的管理菜单选项 −

Management Menu

现在,单击索引管理 −

Index Management

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

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

Kibana - 加载示例数据

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

本章将涵盖以下主题 −

  • 使用 Logstash 上传包含日期、经度和纬度字段的数据到 Elasticsearch
  • 使用 Dev Tools 上传批量数据

使用 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 文件如下所示 −

Home visits

以下是与 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 文件包含日期字段,则需要执行以下操作才能获得正确的日期格式。

对于日期字段 −

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

对于地理位置,Elasticsearch 的理解方式如下 −

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

因此,我们需要确保经度和纬度采用 Elasticsearch 所需的格式。因此,我们首先需要将经度和纬度转换为浮点数,然后重命名它们,以便它们作为包含latlonlocation 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 中看到 Logstash 配置文件中提到的索引,如下所示 −
logstash conf

我们现在可以根据上面上传的索引创建索引模式,并进一步将其用于创建可视化。

使用 Dev Tools 上传批量数据

我们将使用 Kibana UI 中的 Dev Tools。Dev Tools 有助于在不使用 Logstash 的情况下将数据上传到 Elasticsearch。我们可以使用 Dev Tools 在 Kibana 中发布、放置、删除和搜索所需的数据。

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

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

在开始上传示例数据之前,我们需要拥有在 Elasticsearch 中使用的索引的 JSON 数据。当我们使用 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"}

请注意,JSON 文件中还有一些附加数据 −{"index":{"_index":"nameofindex","_id":key}}

要将任何与 Elasticsearch 兼容的示例 JSON 文件进行转换,这里我们有一个小的 PHP 代码,它将输出的 JSON 文件转换为 Elasticsearch 所需的格式 −

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

要加载示例数据,请打开 Dev Tools 选项卡,如下所示 −

Dev tools

我们现在将使用上面显示的控制台。我们将使用运行 PHP 代码后获得的 JSON 数据。

在 Dev Tools 中用于上传 JSON 数据的命令是 −

POST _bulk

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

Upload json data

Dev tools index

单击绿色按钮上传数据后,您可以检查索引是否已在 Elasticsearch 中创建,方法如下 −

Created index

您可以在 Dev Tools 本身中检查相同的内容,方法如下 −

命令 −

GET /_cat/indices
Dev Tools Command

如果您想在您的索引:todo 中搜索某些内容,您可以按照如下所示进行操作 −

Dev Tools 中的命令

GET /todo/_search
Dev Tools Search

上述搜索的结果如下所示 −

Dev Tools Output

它提供了 todo 索引中存在的所有记录。我们获得的总记录数为 200。

在 todo 索引中搜索记录

我们可以使用以下命令执行此操作 −

GET /todo/_search
{
   "query":{
      "match":{
         "title":"delectusautautem"
      }
   }
}
Record todo Index

Fetch records

我们能够获取与我们提供的标题匹配的记录。

Kibana - 管理

Kibana 中的管理部分用于管理索引模式。本章将讨论以下内容 −

  • 创建无时间筛选字段的索引模式
  • 创建有时间筛选字段的索引模式

创建无时间筛选字段的索引模式

要执行此操作,请转到 Kibana UI 并单击管理 −

Kibana UI Management

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

Elasticsearch Index Management

目前 Elasticsearch 拥有上述索引。文档计数告诉我们每个索引中可用的记录数量。如果任何索引已更新,文档计数将不断变化。主要存储空间指示每个上传索引的大小。

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

Index Patterns

单击索引模式后,我们将看到以下屏幕 −

Index Patterns Screen

请注意,创建索引模式按钮用于创建新的索引。回想一下,我们在教程的开始就创建了 countriesdata-28.12.2018。

创建有时间筛选字段的索引模式

单击创建索引模式以创建新的索引。

Time filter field

将显示来自 Elasticsearch 的索引,选择一个以创建新的索引。

Create Index Pattern

现在,单击下一步

下一步是配置设置,您需要输入以下内容 −

  • 时间筛选字段名称用于基于时间筛选数据。下拉菜单将显示索引中所有与时间和日期相关的字段。

在下图中,我们有Visiting_Date 作为日期字段。选择Visiting_Date 作为时间筛选字段名称。

Time Filter field name

单击创建索引模式按钮以创建索引。完成后,它将显示索引 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 还添加了一些附加字段。

Medical visits

Medical visits logstash

Medical visits elasticsearch

Medical visits elasticsearch

Kibana - 探索 (Discover)

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

  • 无日期字段的索引
  • 有日期字段的索引

无日期字段的索引

在左侧菜单中选择“发现”,如下所示 −

Discover menu

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

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

top left corner

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

如果单击“自动刷新”,它将显示如下所示的屏幕 −

Auto-refresh

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

索引:countriesdata-28.12.2018中的数据显示如下 −

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

Table format

Details Table format

JSON 格式

JSON Format

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

Single Document

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

Data Present Row

Single Document Row

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

现在让我们尝试以表格格式获取数据。一种方法是展开其中一行,然后单击每个字段中提供的切换列选项,如下所示 −

单击每个字段中提供的表格中的切换列选项,您将注意到数据以表格格式显示 −

Toggle column

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

Selected Fields

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

Selected Fields Displayed

请注意,有两个选项 − 已选择字段可用字段。我们选择以表格格式显示的字段是已选择字段的一部分。如果您想删除任何字段,您可以通过单击将在已选择字段选项中字段名称旁显示的删除按钮来执行此操作。

Remove Fields

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

我们在“发现”中有一个搜索选项,我们可以使用它来搜索索引中的数据。让我们在此处尝试与搜索选项相关的示例 −

假设您想搜索国家/地区印度,您可以执行以下操作 −

Search Fields

您可以键入搜索详细信息并单击“更新”按钮。如果您想搜索以 Aus 开头的国家/地区,您可以执行以下操作 −

Update Fields

单击“更新”以查看结果

Update results

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

search query

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

例如,Country 字段是一个字符串,它为字符串字段显示以下选项 −

string field

同样,Area 是一个数字字段,它为数字字段显示以下选项 −

Number field

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

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

Save Search

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

Open Search

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

Share Search

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

单击 CSV 报告后可用的选项是 −

CSV Reports

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

点击永久链接后可用的选项如下:

Onclick Permalinks

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

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

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

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

包含日期字段的索引

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

Discover tab select index

在所选索引上,过去 15 分钟显示了消息 - “没有结果与您的搜索条件匹配”。该索引包含 2015 年、2016 年、2017 年和 2018 年的数据。

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

Change Time Range

点击“绝对”选项卡。

Absolute tab

选择日期:从 - 2017 年 1 月 1 日到 - 2017 年 12 月 31 日,我们将分析 2017 年的数据。

Select date

点击“Go”按钮添加时间范围。它将显示数据和条形图,如下所示:

Add Timerange

这是 2017 年的月度数据:

Monthly Data

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

Filter Data

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

此处显示的字段来自索引:medicalvisits-26.01.2019

Hourly Data

我们左侧有可用的字段,如下所示:

Hourly Data available fields

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

Tabular Format

以上字段的表格数据如下所示:

Tabular Data

Kibana - 聚合和指标

在学习 Kibana 的过程中,您经常会遇到“桶”和“指标聚合”这两个术语。本章将讨论它们在 Kibana 中的作用以及更多详细信息。

什么是 Kibana 聚合?

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

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

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

  • 桶聚合
  • 指标聚合

桶聚合

桶主要由键和文档组成。执行聚合时,文档将放置在相应的桶中。因此,最终您应该获得一个桶列表,每个桶包含一个文档列表。在 Kibana 中创建可视化时将看到的桶聚合列表如下所示:

Bucket Aggregation

桶聚合具有以下列表:

  • 日期直方图
  • 日期范围
  • 过滤器
  • 直方图
  • IPv4 范围
  • 范围
  • 重要术语
  • 术语

在创建时,您需要为桶聚合决定其中一个,即对桶内的文档进行分组。

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

让我们假设我们想要按区域的数据。然后,每个区域中可用的国家/地区成为我们的搜索查询,因此在这种情况下,区域将构成我们的桶。下图显示 R1、R2、R3、R4、R5 和 R6 是我们获得的桶,c1、c2…c25 是属于桶 R1 到 R6 的文档列表。

Block Diagram Aggregation

我们可以看到每个桶中都有一些圆圈。它们是基于搜索条件的文档集,并被认为属于每个桶。在桶 R1 中,我们有文档 c1、c8 和 c15。这些文档是属于该区域的国家/地区,其他国家/地区也是如此。因此,如果我们计算桶 R1 中的国家/地区数量,则为 3,R2 为 6,R3 为 6,R4 为 2,R5 为 5,R6 为 4。

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

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

  • 日期直方图
  • 日期范围
  • 过滤器
  • 直方图
  • IPv4 范围
  • 范围
  • 重要术语
  • 术语

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

日期直方图

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

Date Histogram

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

Select Interval Histogram

因此,根据所选的索引、字段和间隔,文档将对文档进行分类到桶中。例如,如果您选择间隔为每月,则基于日期的文档将转换为桶,并根据月份(即 1 月至 12 月)将文档放入桶中。此处 1 月、2 月…12 月将是桶。

日期范围

您需要一个日期字段才能使用此聚合类型。这里我们将有一个日期范围,即需要提供开始日期和结束日期。桶将根据提供的开始日期和结束日期包含其文档。

Date Range

过滤器

使用过滤器类型聚合,桶将根据过滤器形成。在这里,您将获得一个多桶,因为基于过滤器标准,一个文档可以存在于一个或多个桶中。

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

Filters

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

直方图

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

Histogram

IPv4 范围

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

IPv4 Range

我们拥有的索引(即 contriesdata-28.12.2018)没有类型为 IP 的字段,因此它会显示如上所示的消息。如果您碰巧有 IP 字段,则可以像上面那样在其中指定“从”和“到”值。

范围

这种类型的聚合需要字段的类型为数字。您需要指定范围,并且文档将列在落入该范围的桶中。

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

重要术语

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

Significant Terms

术语

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

Terms

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

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

指标聚合

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

我们将讨论的指标聚合列表如下所示:

Metric Aggregation

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

  • 平均值
  • 计数
  • 最大值
  • 最小值
  • 总和

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

接下来,让我们在此处讨论指标聚合的列表:

平均值

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

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 可视化,如下所示:

Visualization

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

点击屏幕上方显示的按钮创建可视化,它将带您进入如下所示的屏幕:

Create Visualization

在这里,您可以选择您需要可视化数据的选项。我们将在接下来的章节中详细了解每一个选项。现在,我们将从选择饼图开始。

pie chart

选择可视化类型后,接下来需要选择要处理的索引,然后您将看到如下所示的屏幕:

visualization type

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

桶和指标聚合

左侧是指标,我们将选择计数。在“桶”中,有两个选项:“拆分切片”和“拆分图表”。我们将使用“拆分切片”选项。

Bucket Metric Aggregation

现在,选择“拆分切片”,将显示以下选项:

Split Slices

现在,选择“聚合”为“术语”,将显示更多需要输入的选项,如下所示:

Aggregation as Terms

“字段”下拉菜单将包含所选索引:countriesdata中的所有字段。我们选择了“区域”字段和“排序依据”。请注意,我们选择了“计数”指标作为“排序依据”。我们将按降序排列,大小设置为10。这意味着我们将从国家索引中获得前10个区域的计数。

现在,单击如下所示的高亮显示的“分析”按钮,您应该会看到右侧的饼图已更新。

Analyse Button

饼图显示

Pie chart display

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

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

Countries data

Countries data

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

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

New Visualization

save Visualization

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

我们还可以使用搜索选项获取所需的数据,如下所示:

save Visualization

我们过滤了以Aus*开头的国家的数据。我们将在接下来的章节中更深入地了解饼图和其他可视化。

Kibana - 使用图表

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

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

以下是创建上述可视化需要遵循的步骤。让我们从水平条形图开始。

水平条形图

打开Kibana,单击左侧的“可视化”选项卡,如下所示:

Aggregation as Terms

单击“+”按钮创建新的可视化:

Kibana visualization

单击上面列出的“水平条形图”。您需要选择要可视化的索引。

Horizontal Bar list

选择**countriesdata-28.12.2018**索引,如上所示。选择索引后,将显示如下所示的屏幕:

Selecting Index

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

为此,我们需要选择要在Y轴和X轴上显示的内容。因此,选择“桶”和“指标聚合”:

Horizontal Graph

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

click Y-Axis

现在,从此处显示的选项中选择所需的聚合:

Aggregation options

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

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

由于我们需要最大人口,因此我们选择“人口”字段,如下所示:

max population

通过此操作,我们就完成了Y轴的操作。我们为Y轴获得的输出如下所示:

Y-axis output

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

select X-axis

如果选择X轴,您将获得以下输出:

X-axis output

选择“聚合”为“术语”。

Choose Aggregation Terms

从下拉菜单中选择字段。我们想要按国家人口绘制图表,因此选择“国家”字段。对于“排序依据”,我们有以下选项:

Dropdown field

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

highest Population

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

highest Population

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

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

垂直条形图

单击“可视化”选项卡,并使用垂直条形图和索引**countriesdata-28.12.2018**创建新的可视化。

在此垂直条形图可视化中,我们将创建一个按国家面积绘制的条形图,即显示面积最大的国家。

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

Y轴

Vertical Bar Chart

X轴

Vertical Bar Chart X-axis

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

Vertical Bar Chart Output

从图表中,我们可以看到俄罗斯面积最大,其次是加拿大和美国。请注意,此数据是从countriesdata索引中提取的,它是虚拟数据,因此数字可能与实时数据不符。

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

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

饼图

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

左侧是指标,将提供计数。在“桶”中,有两个选项:“拆分切片”和“拆分图表”。现在,我们将使用“拆分切片”选项。

Pie Chart visualization

现在,如果您选择“拆分切片”,将显示以下选项:

Pie Chart buckets

选择“聚合”为“术语”,将显示更多需要输入的选项,如下所示:

Aggregation Terms

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

现在,单击如下所示的高亮显示的播放按钮,您应该会看到右侧的饼图已更新。

Pie Chart Updated

饼图显示

Pie Chart Displayed

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

Pie Chart Mouse Over

Pie Chart region

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

从饼图中可以看出,亚洲地区占12.5%,数量为28。

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

Asia region

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

visualization dashboard

Kibana - 使用图形

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

  • 折线图
  • 面积图

折线图

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

对于Y轴

Line Graph Y-axis

请注意,我们已将“最大值”作为聚合。因此,我们将在此处显示折线图中的数据表示。现在,我们将绘制一个图表,该图表将显示按国家划分的最大人口。我们选择的字段是“人口”,因为我们需要按国家划分的最大人口。

对于X轴

Line Graph X-axis

在x轴上,我们选择了“术语”作为聚合,“Country.keyword”作为字段,并选择了“指标:最大人口”作为“排序依据”,顺序大小为5。因此,它将绘制前5个最大人口的国家。应用更改后,您可以看到如下所示的折线图:

Line Graph Changes

因此,中国的人口最多,其次是印度、美国、印度尼西亚和巴西,它们是人口最多的前5个国家。

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

Save Line Graph

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

面积图

转到可视化,选择面积图,索引为countriesdata。我们需要选择Y轴和X轴。我们将绘制按国家划分的最大面积的面积图。

因此,此处X轴和Y轴将如下所示:

Area Graph

Area Graph Axis

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

Area Graph changes

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

Kibana - 使用热力图

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

开始使用热力图

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

Heat Map visualization

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

Heat Map Index

选择索引**countriesdata-28.12.2018**,如上所示。选择索引后,我们将选择要显示的数据,如下所示:

Heat Map Index selected

选择指标,如下所示:

Heat Map Metrics

从下拉菜单中选择“最大值”聚合,如下所示:

Heat Map Max Aggregation

我们选择“最大值”,因为我们想要绘制按国家划分的最大面积。

现在,我们将为“桶”选择值,如下所示:

Heat Map Buckets

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

Heat Map X-Axis

我们使用“术语”作为聚合,“国家”作为字段,“最大面积”作为“排序依据”。单击“应用更改”,如下所示:

Heat Map Max Area

如果单击“应用更改”,热力图将如下所示:

Heat Map Changes

热力图以不同的颜色显示,面积范围显示在右侧。您可以通过单击面积范围旁边的圆圈来更改颜色,如下所示:

Heat Map displayed

Kibana - 使用坐标地图

Kibana中的坐标地图将显示地理区域,并根据您指定的聚合标记区域。

为坐标地图创建索引

用于坐标地图的桶聚合是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开发工具中运行上述命令:

Kibana dev tools

以上操作将创建一个名为 cities 的索引,类型为 _doc,字段 location 的类型为 geo_point。

现在让我们向 cities 索引添加数据:

Kibana index name

我们已经创建了名为 cites 的索引并添加了数据。现在让我们使用管理选项卡为 cities 创建索引模式。

Kibana index pattern

cities 索引中字段的详细信息如下:

Kibana index details

我们可以看到 location 的类型为 geo_point。现在我们可以使用它来创建可视化。

坐标地图入门

转到“可视化”并选择“坐标地图”。

Coordinate Maps

选择索引模式 cities 并配置聚合指标和桶,如下所示:

Configure Aggregation metric

如果单击“分析”按钮,您将看到以下屏幕:

Analyze button

根据经度和纬度,圆圈将绘制在地图上,如上所示。

Kibana - 使用区域地图

通过此可视化,您可以看到在地理世界地图上表示的数据。在本节中,让我们详细了解一下。

为区域地图创建索引

我们将创建一个新的索引来使用区域地图可视化。我们将上传的数据如下所示:

{"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 tools 中的 _bulk 上传来上传数据。

现在,转到 Kibana Dev Tools 并执行以下查询:

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

**注意** - 要使用区域地图,我们需要将用作聚合的字段类型指定为 keyword。

Kibana region maps

完成后,使用 _bulk 命令上传数据。

Kibana using bulk

现在我们将创建索引模式。转到 Kibana 管理选项卡并选择创建索引模式。

Kibana Management tab

以下是 allcountries 索引中显示的字段。

displayed allcountries index

区域地图入门

现在,我们将使用区域地图创建可视化。转到“可视化”并选择“区域地图”。

visualization_using_Region_Maps

完成后,选择索引为 *allcountries* 并继续。

选择聚合指标和桶指标,如下所示:

Select Aggregation Metrics

Bucket Metrics

在这里,我们选择字段为 country,因为我想在世界地图上显示它。

区域地图的矢量地图和连接字段

对于区域地图,我们还需要选择选项卡,如下所示:

Vector Map

选项卡具有在世界地图上绘制数据所需的图层设置配置。

矢量地图具有以下选项:

Vector Map options

在这里,我们将选择 world countries,因为我拥有国家数据。

连接字段具有以下详细信息:

Join Field

在我们的索引中,我们有国家名称,因此我们将选择国家名称。

在样式设置中,您可以选择要为国家/地区显示的颜色:

Style settings

我们将选择 Reds。我们不会触及其余的详细信息。

现在,单击“分析”按钮以查看绘制在世界地图上的国家/地区的详细信息,如下所示:

click Analyze button

在 Kibana 中自托管矢量地图和连接字段

您还可以为矢量地图和连接字段添加您自己的 Kibana 设置。为此,请从 kibana 配置文件夹转到 kibana.yml 并添加以下详细信息:

regionmap:
   includeElasticMapsService: false
   layers:
      - name: "Countries Data"
      url: "https:///kibana/worldcountries.geojson"
      attribution: "INRAP"
      fields:
         - name: "Country"
         description: "country names"

选项卡中的矢量地图将填充上述数据,而不是默认数据。请注意,给定的 URL 必须启用 CORS,以便 Kibana 可以下载它。使用的 json 文件应使坐标连续。例如:

https://vector.maps.elastic.co/blob/5659313586569216?elastic_tile_service_tos=agree

当区域地图矢量地图详细信息为自托管时,选项卡如下所示:

vector map details

Kibana - 使用仪表和目标

仪表可视化显示您根据数据考虑的指标如何落在预定义范围内。

目标可视化显示您的目标以及您数据的指标如何朝着目标发展。

使用仪表

要开始使用仪表,请转到可视化并从 Kibana UI 选择可视化选项卡。

Working with Gauge

单击仪表并选择要使用的索引。

Click on Gauge

我们将使用 *medicalvisits-26.01.2019* 索引。

选择 2017 年 2 月的时间范围

time range of February

现在您可以选择指标和桶聚合。

metric bucket aggregation

我们已将指标聚合选择为计数。

Metric aggregation Count

我们选择的桶聚合是 Terms,选择的字段是 Number_Home_Visits。

从数据选项卡中,选择的选项如下所示:

Data options Tab

仪表类型可以是圆形或弧形。我们已将其选择为弧形,其余所有内容均为默认值。

我们添加的预定义范围如下所示:

Gauge default values

选择的颜色为绿色到红色。

现在,单击“分析”按钮以查看仪表形式的可视化,如下所示:

Visualization of Gauge

使用目标

转到可视化选项卡并选择目标,如下所示:

Visualize Tab

选择目标并选择索引。

使用 *medicalvisits-26.01.2019* 作为索引。

Select Goal index

选择指标聚合和桶聚合。

指标聚合

Gauge Metric Aggregation

我们已选择计数作为指标聚合。

桶聚合

Gauge Bucket Aggregation

我们已选择 Terms 作为桶聚合,字段为 Number_Home_Visits。

选择的选项如下:

Number_Home_Visits

选择的范围如下:

Gauge_Range selected

单击分析,您将看到目标显示如下:

Gauge_goal display

Kibana - 使用画布 (Canvas)

画布是 Kibana 中另一个强大的功能。使用画布可视化,您可以以不同的颜色组合、形状、文本、多页设置等来表示您的数据。

我们需要在画布中显示数据。现在,让我们加载 Kibana 中已有的某些样本数据。

加载画布创建的样本数据

要获取样本数据,请转到 Kibana 首页并单击添加样本数据,如下所示:

Kibana home page

单击加载数据集和 Kibana 仪表板。它将带您进入如下所示的屏幕:

Kibana dashboard

单击样本电子商务订单的添加按钮。加载样本数据需要一些时间。完成后,您将收到一条警报消息,显示“已加载样本电子商务数据”。

画布可视化入门

现在转到画布可视化,如下所示:

Canvas Visualization

单击画布,它将显示如下所示的屏幕:

Canvas Workpads

我们添加了电子商务和网络流量样本数据。我们可以创建新的工作区或使用现有的工作区。

在这里,我们将选择现有的工作区。选择电子商务收入跟踪工作区名称,它将显示如下所示的屏幕:

ECommerce Revenue Tracking Workpad

在画布中克隆现有工作区

我们将克隆工作区,以便我们可以对其进行更改。要克隆现有工作区,请单击左下方显示的工作区名称:

Cloning Existing Workpad Canvas

单击名称并选择克隆选项,如下所示:

Select Clone Option

单击克隆按钮,它将创建电子商务收入跟踪工作区的副本。您可以找到它,如下所示:

Cloning Existing Workpad Canvas

在本节中,让我们了解如何使用工作区。如果您看到上面的工作区,它有 2 页。因此,在画布中,我们可以表示多页数据。

第 2 页显示如下:

canvas multiple pages

选择第 1 页并单击左侧显示的总销售额,如下所示:

Cloning Existing Workpad Canvas

在右侧,您将获得与其相关的数据:

Cloning Related Data

现在使用的默认样式为绿色。我们可以在此处更改颜色并检查相同的显示。

change colour

我们还更改了文本设置的字体和大小,如下所示:

change font size

向画布内的工作区添加新页面

要向工作区添加新页面,请按照以下步骤操作:

Workpad Inside Canvas

创建页面后,如下所示:

Workpad page created

单击添加元素,它将显示所有可能的可视化,如下所示:

display possible visualization

我们添加了两个元素数据表和区域图,如下所示

Data table Area Chart

您可以向同一页面添加更多数据元素,也可以添加更多页面。

Kibana - 创建仪表盘

在我们之前的章节中,我们已经了解了如何创建垂直条形图、水平条形图、饼图等形式的可视化。在本节中,让我们学习如何将它们组合在一起形成仪表板。仪表板是您创建的可视化的集合,以便您可以一次查看所有可视化。

仪表板入门

要在 Kibana 中创建仪表板,请单击如下所示的仪表板选项:

create Dashboard

现在,单击如上所示的创建新仪表板按钮。它将带我们进入如下所示的屏幕:

new dashboard button

观察到我们到目前为止还没有创建任何仪表板。顶部有一些选项,我们可以保存、取消、添加、选项、共享、自动刷新,还可以更改时间以获取仪表板上的数据。我们将通过单击上面显示的添加按钮来创建一个新的仪表板。

将可视化添加到仪表板

当我们单击添加按钮(左上角)时,它会显示我们创建的可视化,如下所示:

Add Visualization Dashboard

选择要添加到仪表板的可视化。我们将选择前三个可视化,如下所示:

First Three Visualizations

这就是它一起在屏幕上的显示方式:

on screen together

因此,作为用户,您可以获得有关我们上传的数据的总体详细信息 - 按国家/地区划分,字段包括国家/地区名称、区域名称、面积和人口。

因此,现在我们知道所有可用的区域、按人口数量降序排列的每个国家的最大人口、最大面积等。

这只是我们上传的样本数据可视化,但在现实世界中,跟踪业务详细信息变得非常容易,例如,您有一个网站,每月或每天获得数百万次点击,您想跟踪每天、每小时、每分钟、每秒完成的销售情况,如果您拥有 ELK 堆栈,Kibana 可以每小时、每分钟、每秒向您展示销售可视化,您可以根据需要查看。它会显示正在现实世界中发生的事情的实时数据。

总的来说,Kibana 在提取有关您每日、每小时或每分钟业务交易的准确详细信息方面发挥着非常重要的作用,因此公司知道进展如何。

保存仪表板

您可以使用顶部的保存按钮保存仪表板。

Save Dashboard

有一个标题和描述,您可以在其中输入仪表板的名称和简短描述,说明仪表板的功能。现在,单击确认保存以保存仪表板。

更改仪表板的时间范围

目前,您可以看到显示的数据是过去 15 分钟的数据。请注意,这是一个没有时间字段的静态数据,因此显示的数据不会更改。当您将数据连接到实时系统时,更改时间也将显示反映的数据。

默认情况下,您将看到过去 15 分钟,如下所示:

Time Range Dashboard

单击过去 15 分钟,它将显示您可以根据自己的选择选择的时间范围。

观察到有快速、相对、绝对和最近选项。以下屏幕截图显示了快速选项的详细信息:

Details Quick option

现在,单击相对以查看可用的选项:

Click on Relative

在此,您可以指定距现在多少分钟、小时、秒、月、年前的起始日期和结束日期。

“绝对”选项包含以下详细信息:

From and To date

您可以看到日历选项,并可以选择一个日期范围。

“最近”选项将提供“最近 15 分钟”选项,以及您最近选择的其他选项。选择时间范围将更新该时间范围内的传入数据。

在仪表盘中使用搜索和筛选

我们还可以在仪表盘上使用搜索和筛选。例如,如果在搜索中想要获取特定区域的详细信息,可以添加如下所示的搜索:

Filter in Dashboard

在上述搜索中,我们使用了“区域”字段,并希望显示“大洋洲”区域的详细信息。

我们将得到以下结果:

Dashboard results

从上述数据可以看出,在大洋洲地区,澳大利亚的人口和面积最大。

Max Population Area

同样,我们可以添加如下所示的筛选器:

add filter

dashboard filter

接下来,单击“添加筛选器”按钮,它将显示索引中可用字段的详细信息,如下所示:

details field

选择要对其进行筛选的字段。我将使用“区域”字段来获取亚洲地区的详细信息,如下所示:

保存筛选器,您应该会看到如下所示的筛选器:

ASIA region details

现在将根据添加的筛选器显示数据:

filter added

您还可以添加更多筛选器,如下所示:

add more filters

您可以单击禁用复选框来禁用筛选器,如下所示。

disable checkbox

您可以单击同一个复选框来激活筛选器。请注意,有一个删除按钮用于删除筛选器,还有一个编辑按钮用于编辑筛选器或更改筛选器选项。

对于显示的可视化,您会注意到如下所示的三个点:

notice three dots

单击它,将显示如下所示的选项:

display options

检查和全屏

单击“检查”,它将以表格格式提供区域的详细信息,如下所示:

region tabular format

如果要查看 Excel 表格中的可视化,可以选择将其下载为 CSV 格式。

下一个选项“全屏”将以全屏模式显示可视化,如下所示:

visualization fullscreenmode

您可以使用同一个按钮退出全屏模式。

共享仪表盘

我们可以使用共享按钮共享仪表盘。单击共享按钮后,您将看到如下显示:

Dashboard Share Button

您还可以使用嵌入代码在您的网站上显示仪表盘,或者使用永久链接与他人共享。

Dashboard permalinks

网址如下:

https://:5601/goto/519c1a088d5d0f8703937d754923b84b

Kibana - Timelion

Timelion(也称为时间线)是另一个可视化工具,主要用于基于时间的数据分析。要使用时间线,我们需要使用简单的表达式语言,这将帮助我们连接到索引,并对数据执行计算以获得所需的结果。

我们可以在哪里使用 Timelion?

当您想要比较时间相关数据时,可以使用 Timelion。例如,您有一个网站,每天都会获得浏览量。您想分析数据,其中您想将当前周的数据与上一周的数据进行比较,即周一与周一,周二与周二,依此类推,比较浏览量的差异以及流量。

Timelion 入门

要开始使用 Timelion,请单击如下所示的 Timelion:

Started with Timelion

Timelion 默认情况下显示所有索引的时间线,如下所示:

Timelion indexes

Timelion 使用表达式语法。

注意 - es(*) => 表示所有索引。

要获取可与 Timelion 一起使用的可用函数的详细信息,只需单击如下所示的文本区域:

click textarea

它将为您提供可与表达式语法一起使用的函数列表。

启动 Timelion 后,它会显示一条欢迎消息,如下所示。突出显示的部分(即跳转到函数参考)提供了可与 Timelion 一起使用的所有函数的详细信息。

Timelion 欢迎消息

Timelion 欢迎消息如下所示:

welcome message

单击“下一步”按钮,它将引导您完成其基本功能和用法。现在,当您单击“下一步”时,您可以看到以下详细信息:

Timelion Basic Functionality

Querying Elasticsearch Datasource

Expressing Elasticsearch Datasource

Transforming Data

Timelion 函数参考

单击“帮助”按钮,获取 Timelion 可用函数参考的详细信息:

Function Reference

Timelion 配置

Timelion 的设置在 Kibana 管理 > 高级设置中完成。

Timelion Configuration

单击“高级设置”,然后从“类别”中选择 Timelion

Timelion Category

选择 Timelion 后,它将显示 Timelion 配置所需的所有必要字段。

Timelion necessary fields

在以下字段中,您可以更改要用于索引的默认索引和时间字段:

Timelion timefield

默认值为 _all,时间字段为 @timestamp。我们将保留原样,并在 Timelion 本身中更改索引和时间字段。

使用 Timelion 可视化数据

我们将使用索引:`medicalvisits-26.01.2019`。以下是 2017 年 1 月 1 日至 2017 年 12 月 31 日 Timelion 显示的数据:

Timelion display

用于上述可视化的表达式如下:

.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date).bars()

我们使用了索引`medicalvisits-26.01.2019`,该索引上的时间字段为 Visiting_Date,并使用了 bars 函数。

在下文中,我们分析了 2017 年 1 月份的每日数据,分析了两个城市。

Timelion analyzed

使用的表达式为:

.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 天的时间线比较:

表达式

.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")

在这里,我们使用了 offset 并给出了 1 天的差值。我们选择了 2018 年 8 月 2 日作为当前日期。因此,它提供了 2018 年 8 月 2 日和 2018 年 8 月 1 日的数据差异。

Timelion comparison

以下是 2017 年 1 月份排名前 5 个城市的列表数据。此处使用的表达式如下:

.es(index=medicalvisits-26.01.2019,timefield=Visiting_Date,split=City.keyword:5)
list of top cities

我们使用了 split 并给出了字段名称 City,由于我们需要来自索引的前五个城市,因此我们将其指定为`split=City.keyword:5`

它提供了每个城市的计数并列出了其名称,如绘制的图形中所示。

Kibana - 开发工具 (Dev Tools)

我们可以使用 Dev Tools 将数据上传到 Elasticsearch,而无需使用 Logstash。我们可以使用 Dev Tools 在 Kibana 中发布、放置、删除和搜索所需的数据。

要在 Kibana 中创建新的索引,可以在 dev tools 中使用以下命令:

使用 PUT 创建索引

创建索引的命令如下所示:

PUT /usersdata?pretty

执行此操作后,将创建一个空的索引 userdata。

Create Index Using PUT

我们完成了索引创建。现在将数据添加到索引中:

使用 PUT 将数据添加到索引

您可以按如下方式将数据添加到索引:

Add Data Using PUT

Add Data Using index

我们将在 usersdata 索引中再添加一条记录:

Usersdata index

因此,usersdata 索引中有 2 条记录。

使用 GET 从索引中获取数据

我们可以按如下方式获取记录 1 的详细信息:

Index Using GET

您可以按如下方式获取所有记录:

get all records

因此,我们可以从 usersdata 获取所有记录,如上所示。

使用 PUT 更新索引中的数据

要更新记录,您可以执行以下操作:

Update Index using PUT

我们将名称从“Ervin Howell”更改为“Clementine Bauch”。现在,我们可以从索引中获取所有记录,并查看更新后的记录,如下所示:

Update record

使用 DELETE 从索引中删除数据

您可以按如下所示删除记录:

index using DELETE

现在,如果您查看总记录数,我们将只有一条记录:

我们可以按如下方式删除已创建的索引:

index using DELETE

delete index created

现在,如果您检查可用的索引,我们将不会在其中看到 usersdata 索引,因为它已被删除。

Kibana - 监控

Kibana 监控提供有关 ELK 堆栈性能的详细信息。我们可以获取内存使用情况、响应时间等详细信息。

监控详细信息

要在 Kibana 中获取监控详细信息,请单击如下所示的监控选项卡:

Kibana Monitoring

由于我们第一次使用监控,我们需要将其打开。为此,请单击上面显示的“打开监控”按钮。以下是 Elasticsearch 显示的详细信息:

Turn on monitoring

它提供了 Elasticsearch 的版本、可用磁盘、添加到 Elasticsearch 的索引、磁盘使用情况等。

以下是 Kibana 的监控详细信息:

Monitoring details

它提供了请求和请求的最大响应时间,以及正在运行的实例和内存使用情况。

Kibana - 使用 Kibana 创建报表

可以使用 Kibana UI 中提供的“共享”按钮轻松创建报表。

Kibana 中的报表有以下两种形式:

  • 永久链接
  • CSV 报表

作为永久链接的报表

执行可视化时,您可以按如下方式共享:

Report Permalinks

使用共享按钮与他人共享可视化,方法是使用嵌入代码或永久链接。

对于嵌入代码,您将获得以下选项:

Embed code

您可以生成快照或已保存对象的 iframe 代码作为短网址或长网址。快照不会提供最新数据,用户将能够看到共享链接时保存的数据。稍后进行的任何更改都不会反映出来。

对于已保存的对象,您将获得对该可视化进行的最新更改。

长网址的快照 IFrame 代码:

<iframe src="https://: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="https://:5601/goto/f0a6c852daedcb6b4fa74cce8c2ff6c4?embed=true" height="600" width="800"><iframe>

作为快照和短网址。

使用短网址:

https://:5601/goto/f0a6c852daedcb6b4fa74cce8c2ff6c4

关闭短网址后,链接如下所示:

https://: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 报表

您可以在 Kibana 中获取 CSV 报表,其中包含数据,这些数据主要位于“发现”选项卡中。

转到“发现”选项卡,并选择您想要其数据的任何索引。在这里,我们使用了索引:`countriesdata-26.12.2018`。以下是索引中显示的数据:

CSV Report

您可以根据上述数据创建表格数据,如下所示:

CSV tabular data

我们从“可用字段”中选择了字段,并将前面看到的数据转换为表格格式。

您可以按如下所示获取上述数据的 CSV 报表:

CSV report shown

共享按钮具有 CSV 报表和永久链接的选项。您可以单击“CSV 报表”并下载。

请注意,要获取 CSV 报表,您需要保存数据。

CSV save search

确认保存并单击“共享”按钮和“CSV 报表”。您将看到以下显示:

CSV display

单击“生成 CSV”以获取报表。完成后,它将指示您转到管理选项卡。

转到管理选项卡 > 报表

Management Tab

它显示报表名称、创建时间、状态和操作。您可以单击上面突出显示的下载按钮并获取您的 csv 报表。

我们刚刚下载的 CSV 文件如下所示:

CSV file downloaded
广告
© . All rights reserved.