首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转腾讯云】通过Logstash从阿里云ES迁移至腾讯云最佳实践

【玩转腾讯云】通过Logstash从阿里云ES迁移至腾讯云最佳实践

原创
作者头像
Vicwan
修改2023-09-21 15:23:54
3.2K0
修改2023-09-21 15:23:54
举报

1、方案介绍

Logstash是一个开源的数据收集引擎,具有近时传输数据的能力。它可以统一过滤来自不同源的数据,并按照我们自定义的配置文件将过滤的数据输出到目标数据源中。本文介绍在腾讯云CVM上部署Logstash的方法,并演示如何使用Logstash从阿里云ES迁移数据到腾讯云ES中。

2、迁移版本匹配说明

由于腾讯云ES版本与阿里云ES版本不一致,需要选择兼容的版本进行迁移,本文支持的版本方案如下(其他方案不保证兼容):

• 阿里云ES 5.6 -> CVM(Logstash 6.0.x)-> 腾讯云ES 5.6.4

• 阿里云ES 6.3.2 -> CVM(Logstash 6.8.x)-> 腾讯云ES 6.4.3

• 阿里云ES 6.7.0/6.8.0 -> CVM(Logstash 6.8.x)-> 腾讯云ES 6.8.2

• 阿里云ES 7.4.0-> CVM(Logstash 7.6.x) -> 腾讯云ES 7.5.1(本文以此为例)

注意:由于腾讯云ES版本分别与阿里云ES版本不一致,所以建议您在大版本内进行数据同步,不建议跨大版本同步。关于Logstash版本选取详情,请参照官方说明:https://www.elastic.co/cn/support/matrix#matrix_compatibility

3、实施步骤

本案例以使用在腾讯云CVM上自建Logstash方式,将Elasticsearch索引从阿里云ES迁移至腾讯云ES中为例,具体实施步骤如下:

3.1、创建阿里云Elasticsearch实例

1) 创建阿里云ES实例,链接地址:https://common-buy.aliyun.com/new?spm=a2c4g.11186623.2.13.4afb1afbuP8ujq&commodityCode=elasticsearch&orderType=BUY

2) 开启公网访问地址,允许腾讯云CVM能够公网访问(在实际的生产环境中,可以先通过专线将腾讯云和阿里云的内网打通,再通过内网同步ES数据)。

开启公网访问
开启公网访问

3) 创建模拟数据

在阿里云ES kibana 控制台,通过Dev Tools进行操作。以下示例创建了一个名为product_info的索引,指定分片数 和副本数量,索引映射。

PUT /product_info
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
      "properties": {
        "productName": {"type": "text","analyzer": "ik_smart"},
        "annual_rate":{"type":"keyword"},
        "describe": {"type": "text","analyzer": "ik_smart"}
      }
  }
}

在Kibana控制台中,执行以下命令创建文档并插入数据,使用批量插入数据的形式:

POST /product_info/_doc/_bulk?pretty
{"index":{}}
{"productName":"大健康天天理财","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
{"index":{}}
{"productName":"西部通宝","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"安详畜牧产业","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
{"index":{}}
{"productName":"5G设备采购月月盈","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"新能源动力理财","annual rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
{"index":{}}
{"productName":"微贷赚","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}

3.2、创建腾讯云Elasticsearch实例

腾讯云ES实例创建链接:https://console.cloud.tencent.com/es

3.3、在腾讯云Elasticsearch上创建索引信息

注意:在使用Logstash上传数据之前,需要首先在目标集群手动定义mapping和setting信息,虽然不自己建立,logstash会自动建立,但是自动建立出来的mappings里面有些参数可能就不是我们预期想要的,导致再查询的时候出现问题。

PUT /product_info
{
  "settings": {
    "number_of_shards": 5,
    "number_of_replicas": 1
  },
  "mappings": {
      "properties": {
        "productName": {"type": "text","analyzer": "ik_smart"},
        "annual_rate":{"type":"keyword"},
        "describe": {"type": "text","analyzer": "ik_smart"}
      }
  }
}

3.4、创建一台用于自建logstash的CVM

在腾讯云控制台购买一台CVM并绑定公网IP。

注意:需要购买与腾讯云Elasticsearch实例在同一VPC下的CVM实例,确保CVM能够内网访问腾讯云ES实例。

3.5、在CVM上安装Logstash

使用CVM自建Logstash服务,然后在Logstash的conf下配置相应文件,并启动服务。

注意:需要安装JDK(1.8及以上版本)以及相应版本的Logstash

1) 下载7.6.1版本的Logstash

在Elastic官网中,下载与您购买的腾讯云ES版本一致的Logstash,这里选择7.6.1版本

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.6.1.tar.gz

2) 对下载的Logstash压缩包进行解压缩到/usr/local目录

tar -xzvf logstash-7.6.1.tar.gz -C /usr/local

3) 创建目录

mkdir /data/logstash 	#创建数据存储目录
mkdir /var/log/logstash	#创建日志存储目录

3.6、使用 Logstash同步数据

1) 配置logstash.yml文件

配置数据存储路径、配置文件目录、日志输出路径等。

path.data: /data/logstash    #数据存储路径
path.config: /usr/local/logstash-7.6.1/config/logstash.conf   #配置文件目录
path.logs: /var/log/logstash   #日志输出路径
queue.type: persisted	#基于磁盘 的ACKed队列
path.queue: path.data/queue		#启用持久化队列时存储数据文件的目录路径

2) 配置logstash.conf文件

配置schedule每分钟触发抽取,将阿里云ES所有索引数据同步到腾讯云ES集群中,logstash配置文件如下:

input {
     elasticsearch {
       hosts => "http://es-cn-xxx.public.elasticsearch.aliyuncs.com:9200"	#阿里云ES外网地址
       user  => "elastic"		#用户名
       index => "*"		#所有索引
       password => "xxxxxx"	#密码
       docinfo => true
	schedule => "* * * * *"   #定时任务,每分钟执行一次
     }
   }
output {
      elasticsearch {
        hosts => "http://xxxxxxx:9200"	#腾讯云ES内网地址
        user => "elastic"		#用户名
        password => "xxxxxx"	#密码
        index => "%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
  }
}

参数

说明

hosts

ES服务的访问地址。input中为http://<阿里云ES公网地址>:<端口>:output中为http://腾讯云ES实例

user

访问ES服务的用户名

password

访问ES服务的密码

index

指定同步索引名,通配符*代表所有索引

3) 启动logstash

在实际的生产环境中可以以service的方式运行,以下通过nohup方式后台运行logstash。

nohup ./bin/logstash &

命令执行成功后,系统会自动通过Logstash将阿里云ES数据同步到腾讯云ES集群。只要监控到阿里云ES有内容更新,也会自动同步数据到腾讯ES集群中。

3.7、验证数据同步结果

1) 登录目标腾讯云ES实例的Kibana控制台。

2) 单击左侧导航栏的Dev Tools(开发工具)。

3) 在Console中,执行以下命令。

查看所有的索引信息:

GET _cat/indices
查看所有的索引信息
查看所有的索引信息

查看索引product_info文档内容:

GET /product_info/_search
查看索引product_info
查看索引product_info

可以看到在腾讯云ES上已经查询到索引product_info的文档信息内容了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、方案介绍
  • 2、迁移版本匹配说明
  • 3、实施步骤
    • 3.1、创建阿里云Elasticsearch实例
      • 3.2、创建腾讯云Elasticsearch实例
        • 3.3、在腾讯云Elasticsearch上创建索引信息
          • 3.4、创建一台用于自建logstash的CVM
            • 3.5、在CVM上安装Logstash
              • 3.6、使用 Logstash同步数据
                • 3.7、验证数据同步结果
                相关产品与服务
                迁移服务平台
                迁移服务平台(Migration Service Platform,MSP)整合了各种迁移工具,并提供统一监控。用户在迁移时可选择腾讯云官方迁移工具,也可选择官方认证的第三方迁移工具。迁移服务平台帮助用户方便快捷的将系统迁移上云,并清晰掌握迁移进度。迁移服务平台 MSP 不收取任何额外费用,您只需为使用的迁移工具及资源付费。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档