概要
本文介绍在数据迁移到SLS后,如何将原来Kibana中的dashboard迁移到SLS对接的Kibana中
思路
- 从旧的Kibana导出dashboard的export.ndjson文件
- 把export.ndjson中的旧的index Pattern id替换成新的Kibana Index Patter Id
- 完成替换后,把export.ndjson导入到新的Kibana中
Dashboard迁移演示
在ES中准备数据和Dashboard, 并导出Dashboard配置
向es1 写入数据
POST people/_bulk
{ "index": {} }
{ "name": "Alice", "age": 30 }
{ "index": {} }
{ "name": "Bob", "age": 25 }
{ "index": {} }
{ "name": "Charlie", "age": 35 }
在kibana1上基于people创建两个dashboard
其中一个dashboard示例
保存好Dashboard后,进入Kibana Stack Management->Saved objects
来导出
勾选想要导出的dashboard,注意 不要勾选 Include related objects
导出后dashboard的内容存在 export.ndjson
中
在SLS对接的Kibana中复用Dashboard
在sls中准备好一份相同的数据,确保字段一致
新部署一套Kibana并对接SLS,参考操作链接 -> SLS对接Kibana
注意,这里用的es/kbiana版本和之前的es/kibana版本保持一致
使用 Docker Compose
或 Helm Chart
方案对接SLS后,会自动在Kibana中创建好相应的Index Pattern
执行迁移
- 查看老的es中的Index Pattern的ID
准备好 kibana_config_1.json,然后使用 ptn_list.py 来list Index Pattern
{
"url" : "http://xxx:5601",
"user" : "elastic",
"password" : "",
"space" : "default"
}
执行
➜ python ptn_list.py kibana_config_1.json
f06fc2b0-b82d-11ef-88c6-15adf26175c7 people
f06fc2b0-b82d-11ef-88c6-15adf26175c7 这个就是旧的people这个index pattern的id
在Kibana导出的dashboard配置文件 export.ndjson中可以看到对这个Index Pattern Id的引用
- 在SLS对接的Kibana中找到新的Index Pattern的Id
同样使用 ptn_list.py 来list 新的Kibana中Index Pattern的ID
# 准备好kibana_config_2.json
➜ python ptn_list.py kibana_config_2.json
ef710470-b83a-11ef-bb2b-ad198b7b763d etl.people
通过sed命令批量修改 export.ndjson
中的ID替换
sed -i 's/f06fc2b0-b82d-11ef-88c6-15adf26175c7/ef710470-b83a-11ef-bb2b-ad198b7b763d/' export.ndjson
- 进入新的Kibana
Stack Management->Saved objects
来将export.ndjson导入
点击Import
出现下面界面表示导入成功,如有报错的情况需要看报错信息,再看如何处理
打开新的dashboard是否符合预期
注意事项
- 老的ES中的字段 和 SLS中写入的字段需要一致,不然可能导致Dashboard迁移后打开报错(比如报字段不存在)