kibana中Visualize失效的解决办法
背景
当我们在kibana(如图1-1所示)中辛辛苦苦建立很多个Visual,但是过了几天打开发现变成了,如图1-2 和图1-3的情况,根据提示好像,我们只能够进行重建Visualize,但是重建也是一个不小的人力成本。下面将给出具体的原因和解决办法。
图 1-1 kibana中visualize
图 1-2
图 1-3
原因
出现上述情况主要是,索引模式被重建了,导致索引模式的id被改变;因为Viusalize是根据索引模式创建的,换句话说只要索引模式不被重建就一般是不会出现Visualize中的视图失效的。这里讲一下什么是索引模式?请看图2-1。(注意:这里不建议大家都去创建索引模式,和重建索引模式;建议统一由管理人员去操作。)
图2-1 索引模式
visualize中的视图是通过索引模式的id去查找到它所需的元信息,然后再去定位查找数据。索引模式被重新创建,索引模式的id发生了变化,自然是无法查找到元信息,从而视图失效。
解决办法
解决办法:(1)重新创建图(当然这是比较耗时间的),(2)查找到你创建的visualize视图需要的索引模式的id。下面,我来介绍下第二种方法。
查找索引模式的新id;可以在kibana中dev Tools直接查如图3-1。
图3-1 获取指定索引模式的id
GET /.kibana/doc/_search
{
"query" :{
"match" :{
"index-pattern.title": "test-*" #索引模式名称
}
}
}
拿到这个新的索引模式id(如图3-1中ccab3d40-a218-11e9-b876-8b6af3af7a33
)之后,再去如图1-2
中箭头所指位置,替换掉所有原来旧的索引模式ID,保存即刻生效;失效的visualize又可以正常使用。
假如只知道旧的索引模式id,忘记我们自己创建了,哪些视图;那么我们可以通过,拿着旧的索引模式id去查询出该索引模式原来关联着的visualize视图。请参看图3-2,示例如下:
GET /.kibana/doc/_search
{
"query": {
"match": {
"visualization.kibanaSavedObjectMeta.searchSourceJSON": "ccab3d40-a218-11e9-b876-8b6af3af7a33"
}
}
}
图3-2 通过索引模式id获取关联的viusalize视图
这里在说一下,.kibana
这个东西,这个索引是kibana的系统索引,几乎kibana面板中的大部分信息都放在了这个索引里面,包括创建的索引模式,visualize视图等等这些东西。
注意:
有没有更快捷的办法,当然有,那就是通过程序代码做替换(完成上面第二种方法的逻辑);但是我并不推荐一般使用者去做这个操作,因为.kibana
里面保存的有系统索引信息,操作不安全。