Kibana:使用 Scripted fields 来提高数据的可观测性

Elastic 同时被 2 个专栏收录
494 篇文章 87 订阅
77 篇文章 28 订阅

脚本化字段根据 Elasticsearch 索引中的数据即时计算数据。 数据作为文档数据的一部分显示在 “Discover” 所展示的数据中,并且你可以在可视化文件中使用脚本化字段。 你可以使用 Kibana 查询语言查询脚本化字段,并可以使用过滤器栏过滤它们。 脚本字段值是在查询时计算的,因此不会被索引,也无法使用 Kibana 默认查询语言进行搜索。

在我之前的文章 “Kibana: 如何在Kibana中生成Scripted fields” 中,我已经展示了如何使用 Scripted fields 来生成一个字段并对数据统计。在今天的例子中,我们将使用另外一个例子来展示它的一个用途。比如如下的一个统计图:

 

 

在上面的显示图中,它显示了一个时序数据,同时他显示了一个叫做 tags.keyword 的不同值的一个分布情况,但是也许我们只是想知道 error 和其它所有信息的一个比较,而不是这样的每个分类的值的一个比较。这样有更加直观的一个统计图来表示 error 所占的一个比例。比如,我们可以把 error 的数量统计出来变为:

 

准备数据

在今天的教程中,我们将使用 Kibana 自带的索引来进行展示。打开 Kibana 界面:

点击 Add data:

这样我们的样本数据就导入进 Elasticsearch 了。通过上面的操作,我们在 Elasticsearch 中将生成一个叫做 kibana_sample_data_logs 的索引。

 

创建 scripted field

我们打开 kibana_sample_data_logs 的 index pattern 界面:

点击上面的 Stack Management:

点击 Scripted fields:

我们在上面已经看到一个叫做  hour_of_day 的 脚本化字段。上面有它的实现。我们点击  Add scripted field:

我们把如下的内容输入进去:

if (doc['tags.keyword'].value.contains("error")) { return -1; } else { return 1;}

如果大家对 doc[''tags.keyword''].value 有哪些方法还不是很熟悉的话,你可以参阅我的另外一篇文章 “Painless 编程调试”。我们可以使用如下的方法来抛出异常从而找出它所包含的方法:

GET kibana_sample_data_logs/_search
{
  "query": {
    "script": {
      "script": "Debug.explain(doc['tags.keyword'])"
    }
  }
}

它会抛出如下内容的异常:

我们可以在互联网上搜索 org.elasticsearch.index.fielddata.ScriptDocValues.Strings,并找到相应的方法列表。

点击上面的链接来测试我们的 script:

 

如果我们没发现错误,就点击 Save field。接着打开 Discover  的界面:

我们发现有一个新的叫做 error_success 的字段。它表明我们的 scripted filed 的生成是成功的。

 

创建可视化

我们接下来使用这个新生成的 error_success 来进行可视化的操作:

点击 Update:

我们接下来修改 Y-axis  里的 metric。该用 Sum 来统计:

点击 Update:

修改错的颜色为红色。上面就是我们最终看到的结果。

  • 3
    点赞
  • 5
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值