Kibana Dashboard迁移

更新时间:
复制为 MD 格式

本文介绍在数据迁移到SLS后,如何将原来Kibana中的Dashboard迁移到SLS对接的Kibana中。

方案概览

image
  1. 从旧的Kibana导出Dashboardexport.ndjson文件。

  2. export.ndjson中的旧的Index pattern ID替换成新的KibanaIndex pattern ID

  3. 完成替换后,把export.ndjson导入到新的Kibana中。

操作步骤

1. 在ES中准备数据和Dashboard, 并导出Dashboard配置

  1. ES写入如下数据。

    POST people/_bulk
    { "index": {} }
    { "name": "Alice", "age": 30 }
    { "index": {} }
    { "name": "Bob", "age": 25 }
    { "index": {} }
    { "name": "Charlie", "age": 35 }
  2. Kibana上基于people创建两个Dashboard,分别是People DashboardPeople Names

  3. People Dashboard中创建一个图表。

    该图表为水平柱状图,指标设置为 Median of age,数值约为 30。

  4. 单击Stack Management > Saved Objects进入Kibana,在Saved Objects页面,选择想要导出的Dashboard,注意不要勾选Include related objects,导出后Dashboard的内容存在export.ndjson中。

    在搜索栏中输入 type:(dashboard) 筛选出 Dashboard 类型的 Saved Objects。

2. 在SLS对接的Kibana中复用Dashboard

  1. 登录日志服务控制台

  2. Project列表区域,单击目标Project。

    image

  3. LogStore中写入相同的日志数据,确保字段一致。

    说明

    ES中的字段和SLS中写入的字段需要一致,不然可能导致Dashboard迁移后打开报错(比如报字段不存在)。

    写入完成后,在 SLS 的 test-logstore 中查询 原始日志,可验证日志记录包含 agename 字段及对应值(例如 age: 30, name: Alice;age: 25, name: Bob;age: 35, name: Charlie)。

  4. 新部署一套Kibana并对接SLS,操作步骤,请参考对接Kibana

    说明

    这里用的ES/Kbiana版本和之前的ES/Kibana版本保持一致。

  5. 使用Docker ComposeHelm Chart方案对接SLS后,会自动在Kibana中创建好相应的Index pattern。

    在 Kibana 左侧导航栏选择 Stack Management > Index Patterns,可查看到已自动创建的索引模式,例如 etl.people

3. 执行迁移

  1. 查看源ES中的Index PatternID,kibana_config_1.json如下:

    {
        "url" : "http://xxx:5601",
        "user" : "elastic",
        "password" : "",
        "space" :  "default"
    }

    执行如下命令,使用ptn_list.py来查看Index Pattern。

    ➜  python ptn_list.py kibana_config_1.json
    f06fc2b0-****-****-****-15adf26175c7    people

    其中f06fc2b0-****-****-****-15adf26175c7就是源peopleindex patternID。可以在Kibana导出的Dashboard配置文件export.ndjson中,查看对Index Pattern ID的引用。

    {"id":"f06fc2b0-b82d-11ef-88c6-15adf26175c7", ...}

    该 UUID 在配置文件中出现多处,表示 Dashboard 对该 Index Pattern 的引用关系。

  2. SLS对接的Kibana中找到新的Index PatternID。

    同样使用ptn_list.py来查看新的KibanaIndex PatternID。

    # 准备好kibana_config_2.json
    
    ➜  python ptn_list.py kibana_config_2.json
    ef710470-****-****-****-ad198b7b763d	etl.people

    通过sed命令批量修改export.ndjson中的ID替换。

    sed -i 's/f06fc2b0-****-****-****-15adf26175c7/ef710470-****-****-****-ad198b7b763d/' export.ndjson
  3. 单击Stack Management > Saved Objects进入新的Kibana,在Saved Objects页面,单击Importexport.ndjson导入,出现下面界面表示导入成功。

    Import saved objects 对话框显示 2 objects imported2 new,列出 People Dashboard 和 People Names 两个已成功导入的对象,各项右侧带绿色对勾图标。单击 Done 完成操作。

  4. 打开新的Dashboard查看导入结果。

    导入完成后,People Dashboard 页面将展示已导入的可视化面板(例如 Median of age 柱状图),表明数据迁移成功。