欢迎访问我的博客,你的支持,是我最大的动力!

[使用ELKStack打造日志分析平台04]解决kibana4.6中“Objects in arrays are not well supported”的问题

ELK Stack 小马奔腾 9214℃ 评论
目录:
[显示]

因为我使用的ELK版本分别为:2.4.5,2.4.1,4.6.6,其中kibana为4.6.6。这会遇到一个问题,那就是kibana对列表类型的支持并不好,会提示“Objects in arrays are not well supported”的警告。其结果就是kibana不能解析数组内的元素。

这个问题在kibana5.x和6.x版本中,可以通过安装插件的方式进行解决,但是因为es是2.4,和kibana5.x一起使用会有兼容性问题,所以,并不打算升级kibana.

问题展现

比如我们向es中传入这个结构的json

...
"rateData": [
{
"first": "John",
"last": "Smith"
},
{
"first": "Alice",
"last": "White"
}
],
...

键rateData的值为列表Array形式,这里包含两个元素。

这样的数据结构在es中是没有问题的,但是在kibana中展现的时候,会出现警告:Objects in arrays are not well supported 意思是对列表array不能很好的支持,这会导致不能对列表结构里面的数据进行正确的解析,而会当成一个整体处理,这显然不是我们希望看到的。

解决办法

如果kibana为5.x或者6.x可以使用一个插件,进行解决,项目地址为:https://github.com/istresearch/kibana-object-format

对于更低版本的kibana,可以通过转换数据结构的方法来解决。思路为,在logstash入库数据时,使用过滤器,对传入的json数据进行清洗,将array转换成哈希。即将所有的数组,甚至是嵌套数组全部转换成哈希形式。而这,可以使用ruby来完成。

转换前
...
"rateData": [
{
"first": "John",
"last": "Smith"
},
{
"first": "Alice",
"last": "White"
}
],
...
转换后
...
"rateData": {
"0":{
"first": "John",
"last": "Smith"
},
"1":{
"first": "Alice",
"last": "White"
}
},
...

可以发现,方法其实是使用数组的下标做为key,数组内容做为value。

logstash代码

完整logstash配置文件为:

 

 

转载请注明:轻风博客 » [使用ELKStack打造日志分析平台04]解决kibana4.6中“Objects in arrays are not well supported”的问题

喜欢 (0)or分享 (0)