通过自建Logstash迁移数据到阿里云ES

Logstash是一个开源的数据收集引擎,具有实时传输数据,并过滤数据的能力。如果您对迁移实时性要求不高,可以使用Logstash进行数据迁移。本文介绍在ECS上部署自建Logstash,并通过该Logstash将一个日志文件迁移到阿里云Elasticsearch(ES)中。

前提条件

  • 已创建阿里云ES实例,并开启实例的自动创建索引功能。

    说明
  • 已创建ECS实例,ECS实例需要能够同时访问自建Logstash集群和阿里云ES集群。 具体操作,请参见自定义购买实例

    说明

    建议您购买与阿里云ES在同一区域、同一可用区、同一专有网络VPC下的ECS实例。

  • 在ECS实例中安装JDK。 具体操作,请参见安装JDK

    说明

    JDK版本选择Temurin 17及以上。Java JDK版本与Logstash版本的兼容情况,请参见JVM兼容表

  • 准备待迁移的数据,本文以ECS的日志数据为例。

操作步骤

(可选)步骤一:创建角色和用户

自建Logstash访问ES或在Kibana中查看Logstash监控时,需要使用ES的账号,您可以使用elastic用户或自建用户。

说明

实际业务中建议使用自建用户,并给自建用户分配相应的角色和权限。使用elastic用户会降低系统安全性。

创建角色

以添加具有logstash-* 读写权限的角色为例。

  1. 登录目标阿里云ES实例的Kibana控制台。

    具体步骤,请参见登录Kibana控制台

  2. 单击Kibana页面左上角的image图标,选择Management > Stack Management

  3. 在左侧导航栏,选择安全 > 角色

  4. 角色页面,单击创建角色,配置角色参数。

    部分参数说明:

    参数

    说明

    角色名称

    角色名称,自定义输入。

    索引

    选择对应的索引文件。需要输入logstash-*

    权限

    为角色分配索引权限。需要添加readwritecreatedelete以及create_index权限。

  5. 单击创建角色,完成创建。

创建用户

以创建监控Logstash服务的用户为例。 您可以选择以下任一方式创建用户:

重要

阿里云ES集群默认会禁用logstash_system用户,因此您需要创建一个角色为logstash_system的用户名,但需要注意用户名不可以配置为logstash_system

  • 方法一:通过Kibana控制台添加用户

    1. 登录目标阿里云ES实例的Kibana控制台。

      具体步骤,请参见登录Kibana控制台

    2. 单击Kibana页面左上角的image图标,选择Management > Stack Management

    3. 在左侧导航栏,选择安全 > 用户

    4. 用户页面,单击创建用户

    5. 创建用户页面,配置用户信息。

      部分参数说明:

      参数

      说明

      Username

      用户名,可以自定义。本章节以创建Logstash监控用户为例,设置用户名为logstash_system_monitor

      Roles

      用户的角色,需要选择logstash_system角色。

    6. 单击创建用户,完成创建。

  • 方法二:通过命令行方式创建用户

    连接ECS实例,通过以下命令添加用户。

    curl -u elastic:<es-password> -XPOST http://<instanceId>.elasticsearch.aliyuncs.com:9200/_xpack/security/user/logstash_system_monitor -d '{"password" : "<logstash-monitor-password>","roles" : ["logstash_system"],"full_name" : "<your full name>"}'

    参数

    说明

    es-password

    阿里云ES实例的密码,即您登录Kibana控制台的密码。

    <instanceId>

    阿里云ES实例的ID,可在实例的基本信息页面获取。

    <logstash-monitor-password>

    您创建的logstash_system_monitor用户的密码。

    <your full name>

    当前用户名的全名描述。

    添加成功后,结果如下。添加用户成功

步骤二:在ECS上安装Logstash

  1. 连接ECS实例。

    具体步骤请参见连接ECS实例

  2. 下载Logstash。

    进入Elastic官网,下载与阿里云ES实例版本一致的Logstash。

    wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.1-linux-x86_64.tar.gz
    说明

    下载Logstash7.4版本

    wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz
  3. 对下载的Logstash压缩包进行解压缩。

    以8.5.1版本为例。

    tar -xzvf logstash-8.5.1-linux-x86_64.tar.gz

步骤三:配置并执行Logstash迁移任务

  1. 进入Logstash目录。

    cd logstash-8.5.1
  2. 创建conf文件。

    touch test.conf
  3. 配置test.conf文件。

    配置示例如下。

    input {
        file {
            path => "/your/file/path/xxx"
            }
    }
    filter {
    }
    output {
      elasticsearch {
        hosts => "<http://<instanceId>.elasticsearch.aliyuncs.com:9200>"
      	index => "<index-name>"
        user => "<user-name>"
        password => "<logstash-password>"
      }
    }

    参数

    说明

    path

    日志文件的路径。本文以/var/log/messages为例。

    hosts

    阿里云ES实例的访问地址。instanceId为实例ID,可在实例的基本信息页面获取。例如:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200

    index

    文件写入目标ES中的索引名字,索引名字自定义。

    user

    访问阿里云ES实例的账号。 本文使用elastic。

    重要
    • 实际业务中建议使用自建用户,使用elastic用户会降低系统安全性。

    • 用户名上需要加英文引号(""),防止在启动Logstash时,因出现特殊字符报错。

    password

    阿里云ES实例账号的密码。

    重要

    密码上需要加英文引号(""),防止在启动Logstash时,因为特殊字符报错。

    Logstash提供了丰富的input、filter、output插件,只需要简单的配置即可实现数据的流转,详情请参见官方配置文件结构文档。

  4. 启动logstash

    bin/logstash -f test.conf

    命令执行成功后,系统会自动通过Logstash获取日志文件的变化,并提交到阿里云ES集群。只要监控的日志文件有新增内容,Logstash就会自动同步数据到ES集群中。

步骤四:查看迁移成功的数据

  1. 登录目标阿里云ES实例的Kibana控制台。

    具体步骤,请参见登录Kibana控制台

  2. 单击Kibana页面左上角的image图标,选择Management > 开发工具

  3. 在Kibana控制台中,执行以下命令。

    GET /logstash-*/_search

(可选)步骤五:监控Logstash节点

  1. 进入Logstash安装目录的config文件中。

    cd logstash-8.5.1/config
  2. 配置logstash.yml文件。

    1. 打开logstash.yml文件。

      vim logstash.yml
    2. 在logstash.yml文件中,去掉以下几个参数的注释,并配置参数值。

      xpack.monitoring.enabled:true
      xpack.monitoring.elasticsearch.username:"<user-name>"
      xpack.monitoring.elasticsearch.password:"<logstash-password>"
      xpack.monitoring.elasticsearch.hosts:["http://es-cn-nwy3fwjp8xxxxxxx.elasticsearch.aliyuncs.com:9200"]

      参数

      说明

      xpack.monitoring.enable

      默认为false,需要设置为true

      xpack.monitoring.elasticsearch.username

      您创建的Logstash监控账号,本文使用elastic用户。

      重要

      实际业务中建议使用自建用户,使用elastic用户会降低系统安全性。

      xpack.monitoring.elasticsearch.password

      Logstash监控用户的密码。

      xpack.monitoring.elasticsearch.hosts

      阿里云ES实例的访问地址。例如:http://es-cn-45xxxxxxxxxxxxju.elasticsearch.aliyuncs.com:9200

  3. 返回Logstash安装目录,启动Logstash服务。

    cd ../
    bin/logstash -f test.conf
  4. 登录目标阿里云ES实例的Kibana控制台。

    具体步骤,请参见登录Kibana控制台

  5. 单击Kibana页面左上角的image图标,选择Management > 堆栈监测

  6. (可选)在弹出的Create rules对话框,单击OK

  7. 集群概览页面,查看Logstash监控信息。

相关文档