乐趣区

关于kibana:探析ElasticSearch-Kibana在测试工作中的实践应用-京东物流技术团队

一. 为什么应用 ES Kibana

离线数据测试中最重要的就是数据验证,一部分须要测试 es 存储数据的正确性,另一部分就须要验证接口从 es 取值逻辑的正确性。而为了验证 es 取值逻辑的正确性,就须要用到 Kibana, 它能帮忙测试同学更加疾速高效的执行 es 数据的查问,大大提高测试效率。

二. 什么是 ES 和 Kibana

咱们平时所说的 ELK 指的就是 Elasticsearch、Logstash 和 Kibana,这三个技术的组合是大数据畛域中一个很奇妙的设计,是一种很典型的 MVC 思维,模型长久层,视图层和管制层。

Logstash 负责管制层的角色,负责收集和过滤数据。

Elasticsearch 负责数据长久层的角色,负责贮存数据,是一个实时的分布式存储、搜寻、剖析的引擎,实用于所有类型的数据,包含文本、数字、天文空间、结构化和非结构化数据,相较于 Mysql 来说更长于百万数据量的检索。

而咱们这次讲的 Kibana 负责视图层角色,它是一个为 Logstash 和 ElasticSearch 提供的日志剖析的 Web 接口。可应用它对日志进行高效的搜寻、可视化、剖析等各种操作,是一个开源的数据分析与可视化平台,与 Elasticsearch 搜索引擎一起应用。您能够用 Kibana 搜寻、查看、交互寄存在 Elasticsearch 索引中的数据,也能够应用 Kibana 以图表、表格、地图等形式展现数据,从而达到高级的数据分析与可视化的目标。

本次将介绍 Kibana 中的 Dev Tools 中 sql 查问 , Visualize(可视化数据)两个性能的应用。

三. Dev Tools 中的 sql 查问

ES 和 MYSQL 的区别:

Mysql ElasticSearch
Database index
Table Type
Row Document
Column Field
Schema Mapping
Index Everything is indexed
SQL Query DSL
SELECT * FROM … GET http://…
UPDATE table SET… PUT http://…

在数据库中的增 insert、删 delete、改 update、查 select 操作等价于 ES 中的增 PUT/POST、删 Delete、改_update、查 GET。对于这些简单的查问,es 应用 Query DSL 都能够实现。

POST /index111/_search
{
  "query": {
    "bool":
        {
        "must":
          [{"term":{"user": "张三"}},
            {"term":{"timeStamp": "2022-08-04 00:00:00"}}
          ]
        }
  }
}


然而相比拟来说,咱们更加相熟 sql 语句,所以 es 也提供了 sql 语句的开发,让咱们通过 sql 语句即可实现 ES 的查问。在 es 版本 6.3 之前都不反对 sql 语句的开发,如果须要应用 sql 语句来开发 es 的数据查问,那么咱们须要手动的本人装置插件。

然而在 6.3 版本之后,es 自带就装置了 sql 的插件,集成在_xpack 上面,咱们能够间接通过 sql 语句的形式实现 es 当中的数据查问

以下为应用 sql 语句查问的步骤:

  1. 进入 Dev Tools – Console(控制台)
POST /_xpack/sql
{"query": "select * from index111"}


  1. 输出以上语句,默认返回格局为 json

2. 能够自定义返回的格局,如想返回文本格式,/_xpack/sql 后加上?format=txt

较为简单的分类聚合计算的 sql 语句,也是反对的。

应用该性能,可能帮忙测试同学较为方便快捷的查问 es 的数据,进步测试效率。

四. Visualize(可视化数据)应用

应用下面的 sql 语句,可能较快的查问到数据,但该 sql 语句无奈保留,等下次验证回归该内容,查问同样数据时,还需再次输出 sql 语句,就可能呈现须要从新理解查问逻辑,缩短回归工夫的问题。而应用 Visualize(可视化数据)能够将 es 索引内容通过聚合, 通过图表等多种形式保留并显示进去,可能更加间接浏览 es 的数据,同时产品业务也可用于进行数据分析,创立数据看板。

以下为针对单个 es 索引创立可视化图表的操作步骤:

  1. 进入 Visualize- 点击创立新视图

2. 抉择想要以哪种图表款式显示数据

3. 抉择利用的 es 索引

留神,首先须要对指标索引建设索引模式,否则在创立可视化图时会无奈抉择到该索引。门路:Management – Create index pattern。

4. 进入图表设置界面,设置想要的数据:Metrics 和 Buckets, Metrics 能够设置聚合

您能够应用 Elasticsearch 桶聚合 指定图表中显示哪些信息。桶聚合简略的把合乎您搜寻条件的文档分成不同类别,又叫做 buckets 即 x 轴。例如:数据的分类剖析数据,通过应用桶聚合,您能够建设多个分类并看到每个分类下的数据汇总状况。

Metric 有多种聚合形式:Count, Sum, Top Hit, Unique Count,可按需抉择。

Buckets 可设置你的数据集中将要依据什么信息进行检索。

如想看各个人的总得分,Metric 可减少一个分数, 度量单位是 SUM,Buckets 减少人名,如果咱们还想看各个人下其余维度的分数,能够再增加一个子分桶,在左侧下方点击 add sub buckets

5. 设置实现后,留神右上角须要抉择利用的工夫范畴,默认为过来 15 分钟,可能就会呈现无数据的状况,保留后,下次就无需应用 sql 查问,能够间接查看该表对应指标的数据了。

图表显示时,局部字段须要映射其余字段显示,或波及到统计数据须要对表其中几个字段计算聚合解决,比方对其中两个字段求和,这时就能够应用到 Management/Index Patterns/Script fields 脚本字段来加工原字段,将原字段映射为其余数据和减少一列计算求和的脚本字段,减少图表的易读性。例如:将姓名字段转换成其他人名映射。但如果应用 script field, 需保障你的脚本的正确性,可执行性,防止因脚本问题呈现的查问谬误阻塞的状况。

Script field 可应用 painless 语言,具备和 groovy 那样的语法,和 Java 相似。以下为举例的字段映射脚本

def path = doc['user'].value;
String newUser;
if (path != null) {path =path.toString();
    if (path =='张三'){newUser = '张同学';}
    if (path=='李四'){newUser = '李同学';}
}
return org


能够看到,Visualize 桶聚合应用脚本加工字段,用户字段等就能间接映射出其余文本,不便直观。

五. 总结

以上为 ES Kibana 的 devtools sql 查问和 Visualize 的相干介绍和应用操作步骤,Kibana 还有其余的很多弱小的性能,奇妙应用这些工具,可能帮忙测试同学进步测试效率,帮忙产品业务同学进行更高级的数据分析,心愿本篇文章可能帮忙大家更加理解和应用 Kibana。

作者:京东物流 江雯雯

起源:京东云开发者社区 自猿其说 Tech 转载请注明起源

退出移动版