前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Skywalking OAP 升级,不重启探针方案

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

作者头像
Jared.Tan
发布2020-06-19 15:23:11
1.7K0
发布2020-06-19 15:23:11
举报
文章被收录于专栏:云原生可观测性

由于探针和 Skywalking OAP 存在注册的机制,如果清理了 Skywalking 所使用的 Elasticsearch 的数据,需要重新启动探针,让探针重新向 OAP 注册。重启探针是为了清理探针中自己缓存的元数据(ServiceId、ServiceInstanceId 等等)。

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

物料准备

  • 拉取迁移 Elasticsearch 文档的 taskrabbit/elasticsearch-dump 镜像工具或者查看附件。
代码语言:javascript
复制
$ docker pull taskrabbit/elasticsearch-dump

步骤说明

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

导出旧 Elasticsearch 的数据

此步骤需要停掉使用 Elasticsearch 的 Skywaling OAP,防止产生新的元数据。或者导出数据期间不要接入新的探针。

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

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

  • 导出 service_inventory 数据到 skywalking_service_inventory.json:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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 的 文档:

此步骤需要停掉使用 Elasticsearch 的 Skywaling OAP,防止产生新的元数据。或者导入数据期间不要接入新的探针。

比如清理 service_inventory 的文档:

代码语言:javascript
复制
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:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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:
代码语言:javascript
复制
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

重新启动 新版 Skywalking OAP 即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一万小时极客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 物料准备
  • 步骤说明
    • 导出旧 Elasticsearch 的数据
      • 将上面步骤导出的 json 文件导入到新的 Elasticsearch 中
      • 重新启动 新版 Skywalking OAP 即可。
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档