本文为您介绍如何创建一个阿里云Logstash实例,并通过Logstash的管道配置,完成阿里云Elasticsearch实例间的数据同步。

背景信息

在开始本文操作前,请先了解以下背景信息:

前提条件

使用限制

目前阿里云Logstash数据推送要求源Elasticsearch实例与目标Elasticsearch实例在同一专有网络,且版本相同。

操作流程

  1. 准备工作
    准备工作包括创建源和目标Elasticsearch实例、开启目标Elasticsearch实例的自动创建索引功能和准备数据。
  2. 步骤一:创建阿里云Logstash实例
    创建阿里云Logstash实例,等待实例状态变为正常后,才可以创建并运行管道任务。
  3. 步骤二:创建并运行管道任务
    创建并配置阿里云Logstash管道任务,运行任务完成数据同步。
  4. 步骤三:查看数据同步结果
    通过目标Elasticsearch实例的Kibana控制台,查看数据同步结果。

准备工作

  1. 创建阿里云Elasticsearch实例。
    1. 登录阿里云Elasticsearch控制台
    2. 在左侧导航栏,单击Elasticsearch实例
    3. 在实例列表页面,完成两个阿里云Elasticsearch实例的创建。
      创建的2个阿里云Elasticsearch实例,分别作为Logstash的input和output,具体创建方式请参见创建阿里云Elasticsearch实例。本文创建的实例版本为通用商业版6.7.0,使用的数据迁移方案为阿里云Elasticsearch 6.7.0 > 阿里云Logstash 6.7.0 > 阿里云Elasticsearch 6.7.0,提供的脚本仅适用于该数据迁移方案,其他方案不保证兼容。创建的阿里云Elasticsearch实例的具体配置如下。实例配置
      注意
      • 源阿里云Elasticsearch实例、Logstash实例及目标阿里云Elasticsearch实例需要在同一VPC下,否则需要配置网络与安全,使用外网访问Logstash,详情请参见配置NAT公网数据传输。同时三个实例的版本需要满足兼容性要求
      • 访问阿里云Elasticsearch实例的账号,默认为elastic(本文以此为例)。如果需要使用自建用户,要给予自建用户相应的角色和权限。
  2. 开启目标阿里云Elasticsearch实例的自动创建索引功能。
    阿里云Elasticsearch为了保证用户操作数据的安全性,默认将自动创建索引设置为不允许。Logstash在传输数据时,使用的是提交数据的方式创建索引,而不是使用Create index API方式。因此在使用Logstash上传数据前,需要把目标Elasticsearch实例的自动创建索引设置为允许,详情请参见配置YML参数
  3. 创建索引和文档。
    进入源阿里云Elasticsearch实例的Kibana控制台,在Dev Tools页面的Console页签下,执行如下命令创建索引和文档。
    注意
    • 进入Kibana控制台的具体步骤,请参见登录Kibana控制台
    • 以下示例以Elasticsearch 6.7.0版本为例,仅供测试,不一定适用于其他版本。
    1. 创建名称为my_index的索引。
      PUT /my_index
      {
          "settings" : {
            "index" : {
              "number_of_shards" : "5",
              "number_of_replicas" : "1"
            }
          },
          "mappings" : {
              "my_type" : {
                  "properties" : {
                    "post_date": {          
                         "type": "date"       
                     },
                    "tags": {
                         "type": "keyword"
                     },
                      "title" : {
                          "type" : "text"
                      }
                  }
              }
          }
      }
    2. 创建名称为1的文档。
      PUT /my_index/my_type/1?pretty
      {
        "title": "One", 
        "tags": ["ruby"],
        "post_date":"2009-11-15T13:00:00"
      }
    3. 创建名称为2的文档。
      PUT /my_index/my_type/2?pretty
      {
        "title": "Two", 
        "tags": ["ruby"],
        "post_date":"2009-11-15T14:00:00"
      }

步骤一:创建阿里云Logstash实例

  1. 进入Logstash实例列表页面。
    1. 在顶部菜单栏处,选择与目标阿里云Elasticsearch实例相同的地域。
    2. 在左侧导航栏,单击Logstash实例
  2. 在实例列表页面,单击创建
  3. 在购买页面,完成实例启动配置。
    本文选择实例的付费模式为按量付费,版本为6.7,其余配置均保持默认。更多配置信息,请参见购买页面参数
    说明
    • 在前期程序研发或功能测试期间,建议购买按量付费类型的实例进行测试。
    • 购买包年包月类型实例,可以享受优惠条件。
  4. 选中阿里云LogstashService(按量付费)服务协议,单击立即购买
  5. 提示开通成功后,单击管理控制台,进入Logstash的实例列表页面。

步骤二:创建并运行管道任务

等待创建的Logstash实例状态变为正常后,您可以创建并运行管道任务进行数据同步。

  1. 在Logstash实例列表页面,单击目标实例右侧操作列下的管道管理
  2. 管道列表区域,单击创建管道
    创建管道操作
  3. Config配置中,输入管道ID并配置管道。
    本文使用的配置如下。
    input {
        elasticsearch {
        hosts => ["http://es-cn-0pp1f1y5g000h****.elasticsearch.aliyuncs.com:9200"]
        user => "elastic"
        password => "your_password"
        index => "*"
        docinfo => true
      }
    }
    filter {
    }
    output {
      elasticsearch {
        hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"]
        user => "elastic"
        password => "your_password"
        index => "%{[@metadata][_index]}"
        document_type => "%{[@metadata][_type]}"
        document_id => "%{[@metadata][_id]}"
      }
      file_extend {
         path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test"
       }
    }
    参数 说明
    hosts 阿里云Elasticsearch服务的访问地址。input中为http://<源实例ID>.elasticsearch.aliyuncs.com:9200output中为http://<目标实例ID>.elasticsearch.aliyuncs.com:9200
    user 访问阿里云Elasticsearch服务的用户名,默认为elastic。
    password 对应用户的密码。elastic用户的密码在创建实例时设定,如果忘记可进行重置,重置密码的注意事项和操作步骤请参见重置实例访问密码
    index 指定同步索引名。设置为%{[@metadata][_index]},表示匹配元数据中的index,即同步后索引的名称和源索引名称相同。
    docinfo 设置为true,将会提取Elasticsearch文档的元信息,例如index、type和id。
    document_type 指定同步后索引的类型。设置为%{[@metadata][_type]},表示匹配元数据中的type,即同步后索引的类型和源索引类型相同。
    document_id 指定同步后文档的ID。设置为%{[@metadata][_id]},表示匹配元数据中的id,即同步后文档的ID和源文档ID相同。
    file_extend 开启调试日志功能,并通过path参数配置调试日志的输出路径(使用前需要先安装logstash-output-file_extend插件)。详细信息,请参见使用Logstash管道配置调试功能
    注意 path参数默认为系统指定路径,请勿修改。您也可以单击开启配置调试获取path路径。

    更多Config配置信息,请参见Logstash配置文件说明

  4. 单击下一步,配置管道参数。
    在配置的管道参数中,管道工作线程配置为实例的CPU核数,其他参数均为默认值。详细参数说明,请参见通过配置文件管理管道
  5. 单击保存或者保存并部署
    • 保存:将管道信息保存在Logstash里并触发实例变更,配置不会生效。保存后,系统会返回管道管理页面。可在管道列表区域,单击操作列下的立即部署,触发实例重启,使配置生效。
    • 保存并部署:保存并且部署后,会触发实例重启,使配置生效。
  6. 在创建成功提示框中,单击确认
    确认后,可在管道列表中查看创建成功的管道。等待实例变更完成后,并且管道的状态显示为运行中时,表示阿里云Logstash开始执行同步任务。完成创建管道

步骤三:查看数据同步结果

数据同步任务配置完成并开始运行后,您可以通过目标阿里云Elasticsearch的Kibana控制台,查看数据同步结果。

  1. 登录目标阿里云Elasticsearch实例的Kibana控制台。
    具体操作,请参见登录Kibana控制台
  2. 在左侧导航栏,单击Dev Tools(开发工具)。
  3. Console页签下执行如下命令,查看数据同步结果。
    GET /my_index/_search
    {
      "query": {
        "match_all": {}
      }
    }
    执行成功后,返回如下结果。返回结果

后续步骤