Kibana 入门教程

Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,通俗的说就是 Elasticsearch 的web管理后台。可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用各种图表对数据进行多元化的分析和呈现。

img

安装

Elasticsearch安装请参考:ES安装说明

依赖JDK版本

JDK 1.8以上,没有安装jdk可以安装jdk,配置好Java环境变量。

通过压缩包安装

# 下载压缩包
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-7.8.0-linux-x86_64.tar.gz

# 解压缩
tar -xzf kibana-7.8.0-darwin-x86_64.tar.gz

# 进入安装目录
cd kibana-7.8.0-darwin-x86_64/

# 启动kibana
./bin/kibana

启动kibana通过http://localhost:5601/直接访问即可。

也可以直接到官网下载安装包

https://www.elastic.co/cn/downloads/kibana

提示: kibana默认配置无须账号和密码即可登录,自动连接本地安装的Elasticsearch,如果需要配置账号需要安装X-pack插件,其他配置参考后续章节。

docker安装

docker pull docker.elastic.co/kibana/kibana:7.8.0

kibana镜像详细配置可以参考:https://hub.docker.com/_/kibana

准备测试数据

导入数据

为了方便测试kibana的功能,我们直接使用kibana官网提供的测试数据,直接通过kibana后台导入测试数据即可,操作如下。

步骤1:

img

步骤2:

img

步骤3:

img

测试数据说明

下面是一条航班数据样本,介绍下部分字段信息

{
"_index": "kibana_sample_data_flights", // 航班索引名称
"_type": "_doc",
"_id": "MEkjEHMBJlts2AvaxCbj",
"_version": 1,
"_score": null,
"_source": {
  "FlightNum": "SQIY3O9", // 航班编号
  "DestCountry": "GB", // 目标国家简称
  "OriginWeather": "Clear", // 出发天气
  "OriginCityName": "Osaka", // 出发城市
  "AvgTicketPrice": 644.8724392684487, // 平均价格
  "DistanceMiles": 5948.821557153384, // 距离,英里
  "FlightDelay": true, // 航班是否延误
  "DestWeather": "Clear", // 目的地天气
  "Dest": "London Gatwick Airport", // 目的地
  "FlightDelayType": "Carrier Delay", // 航班延误原因
  "OriginCountry": "JP", // 出发国家
  "timestamp": "2020-07-02T15:28:44", // 时间
  "DestLocation": { // 目的地经纬度
    "lat": "51.14810181",
    "lon": "-0.190277994"
  },
  "OriginLocation": { // 出发地经纬度
    "lat": "34.4272995",
    "lon": "135.2440033"
  },
  "DestCityName": "London", // 目的地城市
  ...忽略....
}
}

查询数据

通过kibana的Discover功能查询索引数据,首先需要创建一个索引模式(index pattern),索引模式其实就是一个支持通配符的索引名表达式,用于支持搜索多个索引的数据,后续章节会介绍索引模式。

前面导入测试数据的时候,已经自动创建了一个kibana_sample_data_flights的索引模式,直接进入Discover页面,效果如下

img

kibana的discover支持Kibana Query Language (KQL)语法,就是一套简单的查询语法,通过KQL可以编写查询条件查询数据。

提示:Kibana Query Language (KQL)语法不等同于Elasticsearch的查询语法,是一套全新的东西,不过KQL比较简单,KQL语法介绍

例如:

查询航班编号等于LVOO2CA的航班信息

匹配语法:

字段名: 搜索值

查询表达式:FlightNum : LVOO2CA

img

通过图表呈现数据

kibana支持丰富的图表组件,结合ES聚合查询语句可以生成各种图表。

img

我们点击第一个图表[Flights] Airline Carrier,进入看看

img

这是统计各个航空公司的航班信息占比,后续的章节详细介绍各种图表的配置方式。

调试ES查询语句

前面提到通过KQL语法在Discover页面查询数据,其实也可以使用ES查询语句直接查询数据,如果想通过ES查询语句查询数据,进入控制台(console)页面即可

img

 

Kibana 配置详解

 

默认安装,Kibana会自动连接本地安装的Elasticsearch,本节详细介绍Kibana的配置项。

配置文件路径:${kibana安装目录}/config/kibana.yml

Kibana使用Yaml格式描述配置项。

配置文件例子

默认情况下,配置项都使用井号(#)注释,可以手动删除注释符。

# 端口号
server.port: 5601

# 绑定地址
server.host: "localhost"

# ES服务地址
elasticsearch.hosts: ["http://localhost:9200"]

# ES账号 ES没有设置账号密码可以不配置。
#elasticsearch.username: "kibana"
# ES密码
#elasticsearch.password: "pass"

...忽略....

修改配置文件后,重启kibana即可。

配置参数说明

  • server.port: 默认值: 5601 Kibana 由后端服务器提供服务,该配置指定使用的端口号。

  • server.host: 默认值: "localhost" 指定后端服务器的主机地址。

  • server.basePath: 如果启用了代理,指定 Kibana 的路径,该配置项只影响 Kibana 生成的 URLs,转发请求到 Kibana 时代理会移除基础路径值,该配置项不能以斜杠 (/)结尾。

  • server.maxPayloadBytes: 默认值: 1048576 服务器请求的最大负载,单位字节。

  • server.name: 默认值: "您的主机名" Kibana 实例对外展示的名称。

  • server.defaultRoute: 默认值: "/app/kibana" Kibana 的默认路径,该配置项可改变 Kibana 的登录页面。

  • elasticsearch.url: 默认值: "http://localhost:9200" 用来处理所有查询的 Elasticsearch 实例的 URL 。

  • elasticsearch.preserveHost: 默认值: true 该设置项的值为 true 时,Kibana 使用 server.host 设定的主机名,该设置项的值为 false 时,Kibana 使用主机的主机名来连接 Kibana 实例。

  • kibana.index: 默认值: ".kibana" Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引。

  • kibana.defaultAppId: 默认值: "discover" 默认加载的应用。

  • tilemap.url: Kibana 用来在 tile 地图可视化组件中展示地图服务的 URL。默认时,Kibana 从外部的元数据服务读取 url,用户也可以覆盖该参数,使用自己的 tile 地图服务。例如:"https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"

  • tilemap.options.minZoom: 默认值: 1 最小缩放级别。

  • tilemap.options.maxZoom: 默认值: 10 最大缩放级别。

  • tilemap.options.attribution: 默认值: "© Elastic Tile Service" 地图属性字符串。

  • tilemap.options.subdomains: 服务使用的二级域名列表,用 {s} 指定二级域名的 URL 地址。

  • elasticsearch.username: 和 elasticsearch.password: Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。

  • server.ssl.enabled 默认值: "false" 对到浏览器端的请求启用 SSL,设为 true 时, server.ssl.certificate 和 server.ssl.key 也要设置。

  • server.ssl.certificate: 和 server.ssl.key: PEM 格式 SSL 证书和 SSL 密钥文件的路径。

  • server.ssl.keyPassphrase 解密私钥的口令,该设置项可选,因为密钥可能没有加密。

  • server.ssl.certificateAuthorities 可信任 PEM 编码的证书文件路径列表。

  • server.ssl.supportedProtocols 默认值: TLSv1、TLSv1.1、TLSv1.2 版本支持的协议,有效的协议类型: TLSv1 、 TLSv1.1 、 TLSv1.2 。

  • server.ssl.cipherSuites 默认值: ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA256, HIGH,!aNULL, !eNULL, !EXPORT, !DES, !RC4, !MD5, !PSK, !SRP, !CAMELLIA. 具体格式和有效参数可通过OpenSSL cipher list format documentation 获得。

  • elasticsearch.ssl.certificate: 和 elasticsearch.ssl.key: 可选配置项,提供 PEM格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。

  • elasticsearch.ssl.keyPassphrase 解密私钥的口令,该设置项可选,因为密钥可能没有加密。

  • elasticsearch.ssl.certificateAuthorities: 指定用于 Elasticsearch 实例的 PEM 证书文件路径。

  • elasticsearch.ssl.verificationMode: 默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证,certificate 不执行主机名验证。

  • elasticsearch.pingTimeout: 默认值: elasticsearch.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。

  • elasticsearch.requestTimeout: 默认值: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。

  • elasticsearch.requestHeadersWhitelist: 默认值: [ 'authorization' ] Kibana 客户端发送到 Elasticsearch 头体,发送 no 头体,设置该值为[]。

  • elasticsearch.customHeaders: 默认值: {} 发往 Elasticsearch的头体和值, 不管 elasticsearch.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖。

  • elasticsearch.shardTimeout: 默认值: 0 Elasticsearch 等待分片响应时间,单位微秒,0即禁用。

  • elasticsearch.startupTimeout: 默认值: 5000 Kibana 启动时等待 Elasticsearch 的时间,单位微秒。

  • pid.file: 指定 Kibana 的进程 ID 文件的路径。

  • logging.dest: 默认值: stdout 指定 Kibana 日志输出的文件。

  • logging.silent: 默认值: false 该值设为 true 时,禁止所有日志输出。

  • logging.quiet: 默认值: false 该值设为 true 时,禁止除错误信息除外的所有日志输出。

  • logging.verbose 默认值: false 该值设为 true 时,记下所有事件包括系统使用信息和所有请求的日志。

  • ops.interval 默认值: 5000 设置系统和进程取样间隔,单位微妙,最小值100。

  • status.allowAnonymous 默认值: false 如果启用了权限,该项设置为 true 即允许所有非授权用户访问 Kibana 服务端 API 和状态页面。

  • cpu.cgroup.path.override 如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpu 路径。

  • cpuacct.cgroup.path.override 如果挂载点跟 /proc/self/cgroup 不一致,覆盖 cgroup cpuacct 路径。

  • console.enabled 默认值: true 设为 false 来禁用控制台,切换该值后服务端下次启动时会重新生成资源文件,因此会导致页面服务有点延迟。

  • elasticsearch.tribe.url: Elasticsearch tribe 实例的 URL,用于所有查询。

  • elasticsearch.tribe.username: 和 elasticsearch.tribe.password: Elasticsearch 设置了基本的权限认证,该配置项提供了用户名和密码,用于 Kibana 启动时维护索引。Kibana 用户仍需要 Elasticsearch 由 Kibana 服务端代理的认证。

  • elasticsearch.tribe.ssl.certificate: 和 elasticsearch.tribe.ssl.key: 可选配置项,提供 PEM 格式 SSL 证书和密钥文件的路径。这些文件确保 Elasticsearch 后端使用同样的密钥文件。

  • elasticsearch.tribe.ssl.keyPassphrase 解密私钥的口令,该设置项可选,因为密钥可能没有加密。

  • elasticsearch.tribe.ssl.certificateAuthorities: 指定用于 Elasticsearch tribe 实例的 PEM 证书文件路径。

  • elasticsearch.tribe.ssl.verificationMode: 默认值: full 控制证书的认证,可用的值有 none 、 certificate 、 full 。 full 执行主机名验证, certificate 不执行主机名验证。

  • elasticsearch.tribe.pingTimeout: 默认值: elasticsearch.tribe.requestTimeout setting 的值,等待 Elasticsearch 的响应时间。

  • elasticsearch.tribe.requestTimeout: Default: 30000 等待后端或 Elasticsearch 的响应时间,单位微秒,该值必须为正整数。

  • elasticsearch.tribe.requestHeadersWhitelist: 默认值: [ 'authorization' ] Kibana 发往 Elasticsearch 的客户端头体,发送 no 头体,设置该值为[]。

  • elasticsearch.tribe.customHeaders: 默认值: {} 发往 Elasticsearch的头体和值,不管 elasticsearch.tribe.requestHeadersWhitelist 如何配置,任何自定义的头体不会被客户端头体覆盖

Kibana Discover数据查询

 

Kibana Discover功能,主要用于查询Elasticsearch数据,通过Kibana Query Language (KQL)查询语法实现数据查询。

创建索引模式

索引模式介绍

要使用Discover的功能首先需要创建索引模式(Index patterns), 索引模式其实就是包含通配符(*)的索引名,我们需要查询ES的数据,首先得知道要查询的索引(index)名字,但是有时候,我们想查询一批索引的数据。

例如:

同时查询下面索引的数据

  • tizi365_log_202005

  • tizi365_log_202006

  • tizi365_log_202007

那么我们可以使用 tizi365_log* 作为索引模式,可以匹配以tizi365_log为前缀的所有索引名。

例子

我们依然使用前面导入的航班数据,下面介绍如何创建新的索引模式

步骤1:打开管理页面(Management)

img

步骤2:

因为前面的章节导入航班数据的时候,自动创建了一个名字叫kibana_sample_data_flights的航班数据索引,如果我们只想搜索kibana_sample_data_flights索引的数据,则不需要通配符,直接使用kibana_sample_data_flights这个名字作为索引模式即可,如下图

img

因为导入测试数据的时候,自动创建了同名的索引模式,为了演示,我们这里使用kibana_sample_data_flig* 作为索引模式(使用了通配符星号,代表匹配任意字符)。

img

步骤3:

配置时间过滤器,主要用于排序和作为默认的数据过滤条件。

img

到此为止索引模式已经创建好了,下面我切换到Discover页面看看。

Discover 功能介绍

进入Discover页面,默认展示的索引数据不一定是我们想看的数据,可以点击change切换到kibana_sample_data_flig* 索引模式,如下图

img

查询数据

我们可以通过KQL查询语法查询ES数据,可以把你感兴趣的字段名称和值当做搜索的条件,对于数字字段您可以使用比较运算符,例如大于(>)、小于(<)或等于(=)。您可以使用逻辑运算符 AND,OR 和 NOT 连接搜索条件。

提示:KQL查询语法和ES查询语法不一样,KQL是一种比ES查询语法更简单的语法规则,KQL语法介绍

例如:

查询航班机票平均价格大于300且小于600的航班信息

AvgTicketPrice > 300 and AvgTicketPrice < 600 

查询航班编号等于 1MAEYXT 的航班信息

FlightNum : 1MAEYXT

例子:

img

过滤字段

默认查询结果展示索引的所有字段,信息比较多,我们可以选择展示指定的文档字段。

Discover左侧可以直接选择需要展示的文档字段。

img

上图我们仅展示航班编号和平均票价

Kibana 查询语法

 

Kibana Query Language (KQL)查询语法是Kibana为了简化ES查询设计的一套简单查询语法,Kibana支持索引字段和语法补全,可以非常方便的查询数据。

等值匹配(equals)

用于查询字段值

语法:

字段名: 匹配值

例子:

FlightNum: 4H2KUBH

查询FlightNum字段匹配"4H2KUBH"字符串的文档。

等值匹配也支持通配符(*),通过通配符实现模糊搜索

例子:

FlightNum: 4H*BH

存在检测(exists)

匹配包含指定字段的文档。

语法:

字段名:* 

例子:

FlightNum:* 

匹配包含FlightNum字段的文档。

关系运算符

关系运算符只能用在数值和时间类型的字段

支持关系运算符如下:

  • <= 小于等于

  • >= 大于等于

  • < 小于

  • > 大于

例子:

AvgTicketPrice >= 300

逻辑运算符

支持逻辑运算符如下:

  • and

  • or

例子:

AvgTicketPrice > 300 and AvgTicketPrice < 600 

AvgTicketPrice大于300且AvgTicketPrice小于600

Kibana 开发工具(Dev Tools)

 

Kibana开发工具(Dev Tools)主要提供了下面三种功能

  • 调试Elasticsearch查询表达式

  • 分析Elasticsearch查询表达式性能

  • 调试grok

Console

通过Console(控制台)调试Elasticsearch查询表达式

例子:

img

Search Profiler

分析Elasticsearch查询表达式性能

例子:

img

Grok Debugger

主要用于支持在线调试Logstash grok表达式。

例子:

img

 

kibana 饼图 (Pie)

 

本章介绍使用Kibana的Visualize绘制饼图

效果图:

img

提示: 测试数据沿用之前章节导入的航班数据,如何导入测试数据,请参考Kibana快速入门

步骤1

打开Kibana的Visualize页面

img

步骤2

选择饼图

img

步骤3

选择数据源,即选择Kibana创建的索引模式,这里选择航班数据。

img

步骤4

设置饼图指标聚合,这里我们统计航班信息总数,因此选择count,当然默认就是count,可以不用设置。

img

例如:切换至sum聚合

img

步骤5

设置饼图的桶聚合,这里我们按航空公司分组统计航班信息总数

img

设置桶聚合参数

img

运行结果如下

img

保存图表

img

 

kibana 折线图 (Line)

 

本章介绍使用Kibana的Visualize绘制折线图 (Line)

效果图:

img

提示: 测试数据沿用之前章节导入的航班数据,如何导入测试数据,请参考Kibana快速入门

步骤1

打开Kibana的Visualize页面

img

步骤2

选择折线图

img

步骤3

选择数据源,即选择Kibana创建的索引模式,这里选择航班数据。

img

步骤4

设置折线图(Line)的Y轴的聚合指标,这里我们统计每天的航班信息总数,因此选择count,当然默认就是count,可以不用设置。

img

步骤5

设置折线图(Line)X轴,X轴主要由桶聚合实现分组,我们这里根据每天统计航班信息。

img

配置桶聚合参数

img

运行效果

img

 

kibana 柱状/条形图(Bar)

 

本章介绍使用Kibana的Visualize绘制柱状图也叫条形(Vertical Bar)图,Kibana支持垂直柱状图(Vertical Bar)和水平柱状图(Horizontal Bar)两种,这里介绍垂直柱状图的配置,水平柱状图配置类似。

垂直柱状图:

img

水平柱状图:

img

提示: 测试数据沿用之前章节导入的航班数据,如何导入测试数据,请参考Kibana快速入门

步骤1

打开Kibana的Visualize页面

img

步骤2

选择Vertical Bar, 创建垂直柱状图

img

步骤3

选择数据源,即选择Kibana创建的索引模式,这里选择航班数据。

img

步骤4

设置Y轴的聚合指标,这里我们统计每天的航班信息总数,因此选择count,当然默认就是count,可以不用设置。

 

img

步骤5

设置柱状图X轴,X轴主要由桶聚合实现分组,我们这里根据每天统计航班信息。

img

配置垂直柱状图x轴桶聚合参数

img

运行效果

 

img

 

 

posted on 2022-08-10 13:45  root-123  阅读(1964)  评论(0编辑  收藏  举报