Apache Skywalking OAP 升级,不重启探针方案

此文档适用Apache Skywalking 6.3.0 之前,因为在6.3.0,官方提供了不重启探针的机制。

由于探针和Skywalking OAP 存在注册的机制,如果清理了 Skywalking 所使用的 Elasticsearch 的数据,需要重新启动探针,让探针重新向 OAP 注册。

如果是使用新的 Elasticsearch 作为数据存储,则可以将 Elasticsearch 中关于探针元数据的迁移至新的 ES 索引中(该方式只迁移了元数据,因此会丢失指标数据)。

物料准备

  • 拉取迁移 Elasticsearch 文档的 taskrabbit/elasticsearch-dump 镜像。
    $ docker pull taskrabbit/elasticsearch-dump

步骤说明

  • 将 ES 元数据通过 taskrabbit/elasticsearch-dump 工具从 Elasticsearch 中导出来。
  • 数据导入新的 Elasticsearch 中。

导出旧 Elasticsearch 的数据

将数据导出到 json 文件,需要导出数据的四个索引分别是:service_inventoryservice_instance_inventoryendpoint_inventorynetwork_address_inventory

注意⚠️: 这一步中链接的 Elasticsearch 地址为 数据的地址.

  • 导出 service_inventory 数据到 skywalking_service_inventory.json:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --input=http://localhost:9200/service_inventory \
 --output=/tmp/skywalking_service_inventory.json \
 --type=data

  • 导出 service_instance_inventory 数据到 skywalking_service_instance_inventory.json:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --input=http://localhost:9200/service_instance_inventory \
 --output=/tmp/skywalking_service_instance_inventory.json \
 --type=data

  • 导出 endpoint_inventory 数据到 skywalking_endpoint_inventory.json:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --input=http://localhost:9200/endpoint_inventory \
 --output=/tmp/skywalking_endpoint_inventory.json \
 --type=data

  • 导出 network_address_inventory 数据到 skywalking_network_address_inventory.json:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --input=http://localhost:9200/network_address_inventory \
 --output=/tmp/skywalking_network_address_inventory.json \
 --type=data

将上面步骤导出的 json 文件导入到新的 Elasticsearch 中

如果你的新的 Elasticsearch 中正在被新的 Skywalking OAP 写数据,请先停掉 OAP 并执行如下命令删除 新 Elasticsearch 的 文档:

比如清理 service_inventory 的文档:

curl -XPOST "http://localhost:9200/service_inventory/_doc/_delete_by_query?conflicts=proceed" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match_all": {}
  }
}'

同理,清理其余 service_instance_inventoryendpoint_inventorynetwork_address_inventory 三个索引的文档。

注意⚠️: 这一步中链接的 Elasticsearch 地址为 数据的地址.

  • skywalking_service_inventory.json 导入到 service_inventory:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --output=http://localhost:9200/service_inventory \
 --input=/tmp/skywalking_service_inventory.json \
 --type=data

  • skywalking_service_instance_inventory.json 导入到 service_instance_inventory:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --output=http://localhost:9200/service_instance_inventory \
 --input=/tmp/skywalking_service_instance_inventory.json \
 --type=data

  • skywalking_endpoint_inventory.json 导入到 endpoint_inventory:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --output=http://localhost:9200/endpoint_inventory \
 --input=/tmp/skywalking_endpoint_inventory.json \
 --type=data

  • skywalking_network_address_inventory.json 导入到 network_address_inventory:
docker run --rm -ti -v ~/Desktop:/tmp taskrabbit/elasticsearch-dump \
 --output=http://localhost:9200/network_address_inventory \
 --input=/tmp/skywalking_network_address_inventory.json \
 --type=data

参考

文章首发在公众号:抠腚Coding笔记

file

并由博客一文多发平台 OpenWrite 发布!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值